From 96d33468c3467a81e2609fbafe60d9f14db32995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=ABUmbrella?= <2539020564@qq.com> Date: Mon, 30 Mar 2026 15:37:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E6=B5=81=E6=94=B9=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/DistinguishRegionsEnum.java | 41 +++++++++ .../pojo/dto/ReturnToWarehouseDto.java | 2 + .../logistics/pojo/vo/StationRegionVo.java | 13 +++ .../controller/OrderBoxController.java | 24 ++++- .../logistics/service/IOrderBoxService.java | 2 + .../service/impl/IOrderBoxServiceImpl.java | 92 +++++++++---------- 6 files changed, 123 insertions(+), 51 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/enums/DistinguishRegionsEnum.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/StationRegionVo.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/enums/DistinguishRegionsEnum.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/enums/DistinguishRegionsEnum.java new file mode 100644 index 00000000..18275c51 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/enums/DistinguishRegionsEnum.java @@ -0,0 +1,41 @@ +package org.springblade.desk.logistics.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.springblade.core.tool.utils.ObjectUtil; +import org.springblade.core.tool.utils.StringPool; +import org.springblade.desk.jobtransfer.pojo.enums.SkillEnum; + +import java.util.Arrays; + +@Getter +@AllArgsConstructor +public enum DistinguishRegionsEnum { + Post_plating_warehouse_operation_center("镀后库作业中心", "logistics_anagement_region"); + final String wcName; + final String code; + + + + public static Boolean includeByWcName(String wcName) { + Boolean result=false; + DistinguishRegionsEnum[] values = values(); + for (DistinguishRegionsEnum distinguishRegions : values) { + if (distinguishRegions.getWcName().equals(wcName)) { + return true; + } + } + return result; + } + + public static String wcNameByCode(String wcName) { + String result=""; + DistinguishRegionsEnum[] values = values(); + for (DistinguishRegionsEnum distinguishRegions : values) { + if (distinguishRegions.getWcName().equals(wcName)) { + return distinguishRegions.getCode(); + } + } + return result; + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/dto/ReturnToWarehouseDto.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/dto/ReturnToWarehouseDto.java index c726cb95..d0f9fa95 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/dto/ReturnToWarehouseDto.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/dto/ReturnToWarehouseDto.java @@ -14,4 +14,6 @@ public class ReturnToWarehouseDto { private String startStationCode; //终点id private Long endWcId ; + //区域 + private String stationRegion ; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/StationRegionVo.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/StationRegionVo.java new file mode 100644 index 00000000..dc035d94 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/StationRegionVo.java @@ -0,0 +1,13 @@ +package org.springblade.desk.logistics.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "获取区域和站点返回") +public class StationRegionVo { + String stationRegion; + List stationCodeList; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java index 27a8850b..b39d44a2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java @@ -30,6 +30,7 @@ import org.springblade.desk.logistics.service.IOrderBoxService; import org.springblade.desk.logistics.service.IStationService; import org.springblade.desk.logistics.service.ITaskService; +import org.springblade.system.cache.DictCache; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; @@ -82,6 +83,15 @@ public class OrderBoxController extends BladeController { public R getBSWORKCENTER() { return iOrderBoxService.returnToWarehouseList(); } + @GetMapping("/stationRegion-list") + @ApiOperationSupport(order = 8) + @Operation( + summary = "获取作业中心", + description = "获取当前作业中心名称" + ) + public R getStationRegion() { + return iOrderBoxService.getStationRegion(); + } @PostMapping("/box-binding") @@ -131,12 +141,24 @@ public class OrderBoxController extends BladeController { * 回调作业中心list */ @GetMapping("/getQuantity-Location") - @ApiOperationSupport(order = 7) + @ApiOperationSupport(order = 9) @Operation(summary = "订单位置和重量", description = "获取箱条码对应的订单位置与作业中心") public R getQuantityLocation(@RequestParam String boxBarcode) { return iOrderBoxService.getQuantityLocation(boxBarcode); } + /** + * 回调作业中心list + */ + @GetMapping("/demos") + @ApiOperationSupport(order = 9) + @Operation(summary = "订单位置和重量", description = "获取箱条码对应的订单位置与作业中心") + public R demos(@RequestParam String boxBarcode) { + String logisticsAnagementRegion = DictCache.getValue("logistics_anagement_region", boxBarcode); + System.out.println("logisticsAnagementRegion = " + logisticsAnagementRegion); +// return iOrderBoxService.getQuantityLocation(boxBarcode); + return null; + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IOrderBoxService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IOrderBoxService.java index 3849a986..eba90ca3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IOrderBoxService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IOrderBoxService.java @@ -54,4 +54,6 @@ public interface IOrderBoxService { R getBoxbarcodeDetails(String boxBarcode); R getStationNameBoxBarcode(String stationCode); + + R getStationRegion(); } \ No newline at end of file diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/IOrderBoxServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/IOrderBoxServiceImpl.java index 58a4da90..0f31f64a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/IOrderBoxServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/IOrderBoxServiceImpl.java @@ -14,6 +14,7 @@ import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.desk.dashboard.pojo.entity.BsWorkCenterEntity; import org.springblade.desk.dashboard.service.IBsWorkCenterService; +import org.springblade.desk.logistics.enums.DistinguishRegionsEnum; import org.springblade.desk.logistics.pojo.dto.BoxBindingDto; import org.springblade.desk.logistics.pojo.dto.ReturnToWarehouseDto; import org.springblade.desk.logistics.pojo.entity.*; @@ -26,6 +27,7 @@ import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.desk.produce.service.IWorkPlanService; +import org.springblade.system.cache.DictCache; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -1025,10 +1027,17 @@ public class IOrderBoxServiceImpl implements IOrderBoxService { if (workCenter != null) { detailsVO.setWcName(workCenter.getWcName()); } - + //判断是否是镀后库作业中心 + if (DistinguishRegionsEnum.includeByWcName(workCenter.getWcName())) { + List yieldOrderList = yieldOrderService.list(new LambdaQueryWrapper().eq(YieldOrder::getCardNo, orderList.get(0).getCardNo())); + String code = DistinguishRegionsEnum.wcNameByCode(workCenter.getWcName()); + String logisticsAnagementRegion = DictCache.getValue(code, yieldOrderList.get(0).getUseDept()); + detailsVO.setStationRegion(logisticsAnagementRegion); + return R.data(detailsVO); + } // 设置工位区域 List stationCenterList = stationCenterService.list( - new LambdaQueryWrapper().eq(StationCenter::getWcId, wcId) + new LambdaQueryWrapper().eq(StationCenter::getWcId, wcId) ); if (stationCenterList!=null||stationCenterList.size()!=0) { @@ -1064,55 +1073,21 @@ public class IOrderBoxServiceImpl implements IOrderBoxService { return R.data(stationNameBoxBarcodeVO); } + @Override + public R getStationRegion() { + List freeStationList = stationService.getStatusStationList(STATUS_FREE, null,CONVEYOR_LINE_RECEIVE_ONLY,false); + List stationRegionList = freeStationList.stream().map(StationVO::getStationRegion).distinct().collect(Collectors.toUnmodifiableList()); + ArrayList list = new ArrayList<>(); + for (String stationRegion : stationRegionList) { + StationRegionVo stationRegionVo = new StationRegionVo(); + stationRegionVo.setStationRegion(stationRegion); + List stationList = freeStationList.stream().filter(s -> stationRegion.equals(s.getStationRegion())).map(StationVO::getStationCode).distinct().collect(Collectors.toUnmodifiableList()); + stationRegionVo.setStationCodeList(stationList); + list.add(stationRegionVo); + } - - -// public R boxBinding1(BoxBindingDto boxBinding) { -// log.info("【箱条码绑定】开始处理 - 绑定参数:{}", boxBinding); -// -// // 1. 基础参数校验 -// R paramCheckResult = validateBoxBindingParams(boxBinding); -// if (!paramCheckResult.isSuccess()) { -// return paramCheckResult; -// } -// String boxBarcode = boxBinding.getBoxBarcode(); -// List orderCardNoList = boxBinding.getOrderIdList(); -// -// // 2. 订单有效性校验 -// R orderValidResult = validateOrderExist(orderCardNoList); -// if (!orderValidResult.isSuccess()) { -// return orderValidResult; -// } -// List yieldOrderList = (List) orderValidResult.getData(); -// List orderIdList = yieldOrderList.stream() -// .map(YieldOrder::getId) -// .collect(Collectors.toList()); -// -// // 3. 校验箱条码是否存在运行中任务 -// R boxTaskCheckResult = checkBoxBarcodeRunningTask(boxBarcode); -// if (!boxTaskCheckResult.isSuccess()) { -// return boxTaskCheckResult; -// } -// -// // 4. 校验订单是否已绑定 -//// R orderBindCheckResult = checkOrderIdBoundStatus(orderIdList); -//// if (!orderBindCheckResult.isSuccess()) { -//// return orderBindCheckResult; -//// } -// -// // 5. 订单重量校验(超限则拒绝绑定) -// BigDecimal totalWeight = calculateOrderTotalWeight(orderIdList); -// if (totalWeight.compareTo(MAX_BOX_WEIGHT_THRESHOLD) > 0) { -// String errorMsg = String.format("箱条码%s绑定的订单总重量%.2fkg,超过最大阈值%.2fkg", -// boxBarcode, totalWeight, MAX_BOX_WEIGHT_THRESHOLD); -// log.warn("【箱条码绑定】{}", errorMsg); -// return R.fail(errorMsg + ",请重新进行绑定"); -// } -// // 6. -// -// // 6. 保存绑定关系 -// return saveOrderBoxBinding(boxBarcode, new ArrayList<>(orderIdList)); -// } + return R.data(list); + } @@ -1158,6 +1133,23 @@ public class IOrderBoxServiceImpl implements IOrderBoxService { // 从结果中获取最终确定的 wcId(第一次会赋值) wcId = (Long) checkResult.getData(); } + //判断是不是镀后库作业中心 + if(DistinguishRegionsEnum.includeByWcName( bsWorkCenterService.getById(wcId).getWcName())){ + List deptList = yieldOrderService.list(new LambdaQueryWrapper().in(YieldOrder::getCardNo, orderBindList)).stream().map(s -> s.getUseDept()).toList(); + String code = DistinguishRegionsEnum.wcNameByCode(bsWorkCenterService.getById(wcId).getWcName()); + String stationRegion=""; + for (String s : deptList) { + String logisticsAnagementRegion = DictCache.getValue(code, s); + if (logisticsAnagementRegion==null) { + return R.fail("站点区域异常"); + }else if (stationRegion==null) { + stationRegion= logisticsAnagementRegion; + } + if (!stationRegion.equals(logisticsAnagementRegion)) { + return R.fail("站点区域异常,站点区域配送不统一"); + } + } + } // 4. 校验箱条码是否存在运行中任务 R boxTaskCheckResult = checkBoxBarcodeRunningTask(boxBarcode); if (!boxTaskCheckResult.isSuccess()) {