diff --git a/db/wms_ntyc.sql b/db/wms_ntyc.sql index f2912d4..b7bda96 100644 --- a/db/wms_ntyc.sql +++ b/db/wms_ntyc.sql @@ -11,7 +11,7 @@ Target Server Version : 80034 (8.0.34) File Encoding : 65001 - Date: 07/04/2025 16:52:04 + Date: 08/04/2025 19:42:54 */ SET NAMES utf8mb4; @@ -2223,7 +2223,6 @@ CREATE TABLE `t_app_jobs` ( -- ---------------------------- -- Records of t_app_jobs -- ---------------------------- -INSERT INTO `t_app_jobs` VALUES ('OrderInCheckor', 'com.wms_main.service.quartz_job.job_executor.OrderInCheckor', '0/2 * * * * ? *', 2000, 1, 1); INSERT INTO `t_app_jobs` VALUES ('OutsExecutor', 'com.wms_main.service.quartz_job.job_executor.OutsExecutor', '0/2 * * * * ? *', 2000, 1, 1); INSERT INTO `t_app_jobs` VALUES ('WcsStackerTaskSender', 'com.wms_main.service.quartz_job.job_executor.WcsStackerTaskSender', '0/2 * * * * ? *', 2000, 1, 1); INSERT INTO `t_app_jobs` VALUES ('WmsTaskFinisher', 'com.wms_main.service.quartz_job.job_executor.WmsTaskFinisher', '0/2 * * * * ? *', 2000, 1, 1); @@ -4999,11 +4998,15 @@ CREATE TABLE `t_app_order_in` ( `goods_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `specification` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `quantity` double NOT NULL, + `goods_bar_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `goods_desc` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `order_status` int NOT NULL, `create_time` datetime NOT NULL, `update_time` datetime NULL DEFAULT NULL, `complete_time` datetime NULL DEFAULT NULL, + `xsfbillno` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `xsfseq` int NULL DEFAULT NULL, + `neibubianhao` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, PRIMARY KEY (`record_id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; @@ -5498,6 +5501,10 @@ CREATE TABLE `t_app_stock` ( `mes_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'mes单号', `batch` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, `goods_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `xsfbillno` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `xsfseq` int NULL DEFAULT NULL, + `neibubianhao` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `goods_bar_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, PRIMARY KEY (`stock_id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; @@ -5613,8 +5620,8 @@ CREATE TABLE `t_app_vehicle` ( -- Records of t_app_vehicle -- ---------------------------- INSERT INTO `t_app_vehicle` VALUES ('0401', 0, 3, '1', 0, '', '2025-04-01 13:11:48'); -INSERT INTO `t_app_vehicle` VALUES ('0402', 0, 2, '1', 0, 'A04-19-06-01', '2025-04-01 13:11:56'); -INSERT INTO `t_app_vehicle` VALUES ('20250401150031', 0, 3, '1', 0, '', '2025-04-07 16:20:15'); +INSERT INTO `t_app_vehicle` VALUES ('0402', 0, 2, '1', 0, '', '2025-04-01 13:11:56'); +INSERT INTO `t_app_vehicle` VALUES ('20250401150031', 0, 3, '1', 0, '', '2025-04-08 19:30:11'); -- ---------------------------- -- Table structure for t_app_wcs_task @@ -5713,6 +5720,19 @@ INSERT INTO `t_app_wcs_task_bak` VALUES ('1744013622086010000', 2, 1, 0, '202504 INSERT INTO `t_app_wcs_task_bak` VALUES ('1744013869045010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '103', '2025-04-07 16:17:49', NULL, NULL, NULL); INSERT INTO `t_app_wcs_task_bak` VALUES ('1744013987278010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-07 16:19:47', '2025-04-07 16:19:47', NULL, NULL); INSERT INTO `t_app_wcs_task_bak` VALUES ('1744014051040010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '103', '2025-04-07 16:20:51', NULL, NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744101715450010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 16:41:55', '2025-04-08 16:41:55', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744103504534010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '272399-343153-97', '2025-04-08 17:11:45', NULL, NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744104108494010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 17:21:48', '2025-04-08 17:21:48', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744104795372010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 17:33:15', '2025-04-08 17:33:15', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744107367237010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 18:16:07', '2025-04-08 18:16:07', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744108481848010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 18:34:42', '2025-04-08 18:34:42', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744110229130010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-01', '2025-04-08 19:03:49', '2025-04-08 19:03:49', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744110590961010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-01', '2025-04-08 19:09:51', '2025-04-08 19:09:51', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744110928097010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 19:15:28', '2025-04-08 19:15:28', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744110975061010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '103', '2025-04-08 19:16:15', NULL, NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744111374581010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 19:22:55', '2025-04-08 19:22:55', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744111790731010000', 2, 1, 0, '20250401150031', '103', 'A04-20-05-02', '2025-04-08 19:29:51', '2025-04-08 19:29:51', NULL, NULL); +INSERT INTO `t_app_wcs_task_bak` VALUES ('1744111948895010000', 100, 2, 1, '20250401150031', 'A04-20-05-02', '103', '2025-04-08 19:32:29', NULL, NULL, NULL); -- ---------------------------- -- Table structure for t_app_work diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/bo/erp/ErpGoodsDetail.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/bo/erp/ErpGoodsDetail.java index c78fcae..0c67c27 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/bo/erp/ErpGoodsDetail.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/bo/erp/ErpGoodsDetail.java @@ -20,6 +20,6 @@ public class ErpGoodsDetail { private String goodsDesc; private String goodsBarcode; private String xsfbillno; - private String xsfseq; + private Integer xsfseq; private String neibubianhao; } diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/po/TAppOrderIn.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/po/TAppOrderIn.java index f8f290d..b094a70 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/po/TAppOrderIn.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/po/TAppOrderIn.java @@ -59,6 +59,9 @@ public class TAppOrderIn { @TableField(value = "order_status") private Integer orderStatus; + @TableField(value = "goods_bar_code") + private String goodsBarcode; + @TableField(value = "create_time") private LocalDateTime createTime; @@ -68,6 +71,15 @@ public class TAppOrderIn { @TableField(value = "complete_time") private LocalDateTime completeTime; + @TableField(value = "xsfbillno") + private String xsfbillno; + + @TableField(value = "xsfseq") + private Integer xsfseq; + + @TableField(value = "neibubianhao") + private String neibubianhao; + @TableField(value = "remark") private String remark; diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/po/TAppStock.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/po/TAppStock.java index 63924cf..b21ff4a 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/po/TAppStock.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/model/po/TAppStock.java @@ -117,4 +117,16 @@ public class TAppStock { @TableField(value = "goods_type") private String goodsType; + + @TableField(value = "xsfbillno") + private String xsfbillno; + + @TableField(value = "xsfseq") + private Integer xsfseq; + + @TableField(value = "neibubianhao") + private String neibubianhao; + + @TableField(value = "goods_bar_code") + private String goodsBarCode; } diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/api/serviceImpl/ExternalApiServiceImpl.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/api/serviceImpl/ExternalApiServiceImpl.java index c53d1eb..79659e6 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/api/serviceImpl/ExternalApiServiceImpl.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/api/serviceImpl/ExternalApiServiceImpl.java @@ -72,7 +72,7 @@ public class ExternalApiServiceImpl implements IExternalApiService { goodsDetail.setQuantity(Double.parseDouble(detail.get("quantity").toString())); goodsDetail.setGoodsDesc((String) detail.get("goodsDesc")); goodsDetail.setXsfbillno((String) detail.get("xsfbillno")); - goodsDetail.setXsfseq((String) detail.get("xsfseq")); + goodsDetail.setXsfseq(Integer.parseInt(detail.get("xsfseq").toString())); goodsDetail.setNeibubianhao((String) detail.get("neibubianhao")); goodsDetail.setGoodsBarcode((String) detail.get("goodsBarcode")); erpsGoodsDetails.add(goodsDetail); diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java index b59a46b..5310d39 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/business/serviceImpl/StackerTaskServiceImpl.java @@ -383,7 +383,7 @@ public class StackerTaskServiceImpl implements IStackerTaskService { needDeleteOrderIns.add(thisOrderIn.getRecordId()); orderCBIds.add(thisOrderIn.getOrderId()); // 添加库存 - String validateStr = thisOrderIn.getGoodsId() + thisOrderIn.getBatch() + thisOrderIn.getGoodsType() + thisOrderIn.getSpecification(); + String validateStr = thisOrderIn.getGoodsId() + thisOrderIn.getGoodsBarcode() + thisOrderIn.getGoodsType() + thisOrderIn.getSpecification() + thisOrderIn.getXsfbillno() + thisOrderIn.getXsfseq().toString() + thisOrderIn.getNeibubianhao(); if (!stockMap.containsKey(validateStr)) { TAppStock newStock = new TAppStock(); newStock.setStockId(UUIDUtils.getNewUUID()); @@ -405,7 +405,10 @@ public class StackerTaskServiceImpl implements IStackerTaskService { newStock.setBatch(thisOrderIn.getBatch()); newStock.setGoodsType(thisOrderIn.getGoodsType()); newStock.setBarCode(thisOrderIn.getInStand()); -// newStockList.add(newStock); + newStock.setGoodsBarCode(thisOrderIn.getGoodsBarcode()); + newStock.setXsfbillno(thisOrderIn.getXsfbillno()); + newStock.setXsfseq(thisOrderIn.getXsfseq()); + newStock.setNeibubianhao(thisOrderIn.getNeibubianhao()); stockMap.put(validateStr, newStock); } else { TAppStock newStock = stockMap.get(validateStr); @@ -572,6 +575,10 @@ public class StackerTaskServiceImpl implements IStackerTaskService { thisVehicleInTask.getBarCode(), thisVehicleInTask.getMesId(), "", + "", + "", + 0, + "", "" )); } else { @@ -605,7 +612,12 @@ public class StackerTaskServiceImpl implements IStackerTaskService { thisVehicleInTask.getBarCode(), thisVehicleInTask.getMesId(), "", + "", + "", + 0, + "", "" + )); needDeleteStockIds.addAll(oldStockList.stream() .map(TAppStock::getStockId) diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/controller/serviceImpl/YcwmsControllerServiceImpl.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/controller/serviceImpl/YcwmsControllerServiceImpl.java index 9232b02..1e16a88 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/controller/serviceImpl/YcwmsControllerServiceImpl.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/controller/serviceImpl/YcwmsControllerServiceImpl.java @@ -2,9 +2,12 @@ package com.wms_main.service.controller.serviceImpl; import com.alibaba.fastjson.JSON; import com.wms_main.constant.enums.wms.OrderStatusEnum; +import com.wms_main.constant.enums.wms.WmsApiResponseCodeEnums; import com.wms_main.dao.ITAppOrderInService; import com.wms_main.dao.ITAppOrderOutService; import com.wms_main.dao.ITAppStockService; +import com.wms_main.model.bo.erp.ErpGoodsDetail; +import com.wms_main.model.bo.erp.ErpVehicleNoResp; import com.wms_main.model.dto.request.ycwms.*; import com.wms_main.model.dto.response.ycwms.YcwmsResponse; import com.wms_main.model.po.TAppOrderIn; @@ -12,6 +15,7 @@ import com.wms_main.model.po.TAppOrderOut; import com.wms_main.model.po.TAppStock; import com.wms_main.repository.utils.StringUtils; import com.wms_main.repository.utils.UUIDUtils; +import com.wms_main.service.api.IExternalApiService; import com.wms_main.service.controller.IYcwmsControllerService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -19,7 +23,9 @@ import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.Objects; @Service @Slf4j @@ -29,6 +35,7 @@ public class YcwmsControllerServiceImpl implements IYcwmsControllerService { private final ITAppOrderInService appOrderInService; private final ITAppOrderOutService appOrderOutService; private final ITAppStockService appStockService; + private final IExternalApiService externalApiService; @Override public YcwmsResponse orderIn(OrderInReq request) { @@ -47,8 +54,40 @@ public class YcwmsControllerServiceImpl implements IYcwmsControllerService { if(!withOrderId.isEmpty()) { return YcwmsResponse.error("入库单已存在,请勿重复推送", null); } + String vehicleNo = request.getVehicleNo(); + List erpGoodsDetails = new ArrayList<>(); + try { + YcwmsResponse erpResp = externalApiService.getVehicleNoData(vehicleNo); + if (erpResp != null && WmsApiResponseCodeEnums.SUCCESS.getCode() == erpResp.getCode() && !erpResp.getReturnData().getGoodsDetail().isEmpty()) { + erpGoodsDetails = erpResp.getReturnData().getGoodsDetail(); + } else { + log.warn("获取载具[{}]数据失败,响应:{}", vehicleNo, erpResp); + } + } catch (Exception e) { + log.error("处理载具[{}]数据时发生异常:", vehicleNo, e); + } + List mesGoodsDetails = request.getGoodsDetail(); + // 对比inTasks和goodsDetails + Iterator iterator = mesGoodsDetails.iterator(); + while (iterator.hasNext()) { + OrderInGoodsDetail goodsDetail = iterator.next(); + boolean matchFound = erpGoodsDetails.stream().anyMatch(erpGoodsDetail -> + erpGoodsDetail.getGoodsId().equals(goodsDetail.getGoodsId()) && + erpGoodsDetail.getGoodsBarcode().equals(goodsDetail.getGoodsBarcode()) && + Objects.equals(erpGoodsDetail.getQuantity(), goodsDetail.getQuantity()) && + erpGoodsDetail.getGoodsType().equals(goodsDetail.getGoodsType()) && + Objects.equals(erpGoodsDetail.getSpecification(), goodsDetail.getSpecification()) + ); + if (matchFound) { + // 找到匹配的任务,删除该 goodsDetail + iterator.remove(); + } + } + if (!mesGoodsDetails.isEmpty()) { + return YcwmsResponse.error("MES与ERP校验失败", null); + } List orderInList = new ArrayList<>(); - for (var goodsDetail : request.getGoodsDetail()) { + for (ErpGoodsDetail goodsDetail : erpGoodsDetails) { if(goodsDetail == null || StringUtils.isEmpty(goodsDetail.getGoodsId()) || goodsDetail.getQuantity() == null) { return YcwmsResponse.error("参数错误", null); } @@ -66,7 +105,11 @@ public class YcwmsControllerServiceImpl implements IYcwmsControllerService { orderIn.setSpecification(goodsDetail.getSpecification()); orderIn.setQuantity(goodsDetail.getQuantity()); orderIn.setGoodsDesc(goodsDetail.getGoodsDesc()); + orderIn.setGoodsBarcode(goodsDetail.getGoodsBarcode()); orderIn.setOrderStatus(OrderStatusEnum.CREATE.getCode()); + orderIn.setXsfbillno(goodsDetail.getXsfbillno()); + orderIn.setXsfseq(goodsDetail.getXsfseq()); + orderIn.setNeibubianhao(goodsDetail.getNeibubianhao()); orderIn.setCreateTime(LocalDateTime.now()); orderIn.setUpdateTime(LocalDateTime.now()); orderInList.add(orderIn); diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OrderInCheckor.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OrderInCheckor.java index a1969ca..f3e600f 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OrderInCheckor.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OrderInCheckor.java @@ -26,12 +26,11 @@ import java.util.stream.Collectors; // 以下注解用于实现fixed_delay @DisallowConcurrentExecution @RequiredArgsConstructor -public class OrderInCheckor implements Job { +public class OrderInCheckor { private final ITAppOrderInService orderInService; private final ITAppWcsTaskService wcsTaskService; private final IExternalApiService externalApiService; - @Override public void execute(JobExecutionContext jobExecutionContext) { List inOrdersToCheck = orderInService.list( new LambdaQueryWrapper() @@ -69,6 +68,7 @@ public class OrderInCheckor implements Job { ErpGoodsDetail goodsDetail = iterator.next(); boolean matchFound = inTasks.stream().anyMatch(task -> task.getGoodsId().equals(goodsDetail.getGoodsId()) && + task.getGoodsBarcode().equals(goodsDetail.getGoodsBarcode()) && Objects.equals(task.getQuantity(), goodsDetail.getQuantity()) && task.getGoodsType().equals(goodsDetail.getGoodsType()) && Objects.equals(task.getSpecification(), goodsDetail.getSpecification()) diff --git a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OutsExecutor.java b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OutsExecutor.java index 00fc762..1de140f 100644 --- a/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OutsExecutor.java +++ b/wms_serve_nantong_yachi/src/main/java/com/wms_main/service/quartz_job/job_executor/OutsExecutor.java @@ -74,11 +74,10 @@ public class OutsExecutor implements Job { } TAppStock stock = new TAppStock(); stock.setGoodsId(orderOut.getGoodsId()); - stock.setBatch(orderOut.getBatch()); stock.setSled(orderOut.getSpecification()); List stockList = stockService.getWithEntity(stock); // 提取所有相关库存的载具号 - List vehicleIds = stockList.stream().map(TAppStock::getVehicleId).toList(); + List vehicleIds = stockList.stream().map(TAppStock::getVehicleId).distinct().toList(); List outStockList = new ArrayList(); if(vehicleIds.isEmpty()) { log.warn("缺少库存, goodsId is {}, batch is {}, specification is {}", orderOut.getGoodsId(), orderOut.getBatch(), orderOut.getSpecification()); @@ -92,11 +91,9 @@ public class OutsExecutor implements Job { continue; } if (stockItem.getGoodsId().equals(orderOut.getGoodsId()) && stockItem.getStockStatus().equals(WmsStockStatusEnums.OK.getCode())) { - needQuantity -= stockItem.getRemainNum(); + needQuantity -= stockItem.getTotalNum(); } stockItem.setStockStatus(WmsStockStatusEnums.OUTING.getCode()); - stockItem.setRemainNum(0.0); - stockItem.setRealNum(0.0); outStockList.add(stockItem); } } @@ -122,23 +119,27 @@ public class OutsExecutor implements Job { // appTaskList.add(appTask); // } List wcsTasks = new ArrayList<>(); - for (TAppStock stockItem : outStockList) { + Map> vehicleIdToStockMap = outStockList.stream() + .filter(stockMap -> Objects.equals(stockMap.getStockStatus(), WmsStockStatusEnums.OUTING.getCode())) + .collect(Collectors.groupingBy(TAppStock::getVehicleId)); + + for (String vehicleId : vehicleIdToStockMap.keySet()) { + List stocks = vehicleIdToStockMap.get(vehicleId); TAppWcsTask wcsTask = new TAppWcsTask(); wcsTask.setWcsTaskId(UUIDUtils.getNewUUID()); wcsTask.setWcsTaskType(WmsTaskTypeEnums.OUT.getCode()); wcsTask.setWcsTaskStatus(WcsStackerTaskStatusEnums.INIT.getCode()); wcsTask.setTaskPriority(1); - wcsTask.setVehicleId(stockItem.getVehicleId()); + wcsTask.setVehicleId(stocks.getFirst().getVehicleId()); wcsTask.setOrderId(orderOut.getOrderId()); wcsTask.setCreateTime(LocalDateTime.now()); - wcsTask.setOrigin(stockItem.getLocationId()); - wcsTask.setDestination(stockItem.getBarCode()); + wcsTask.setOrigin(stocks.getFirst().getLocationId()); + wcsTask.setDestination(stocks.getFirst().getBarCode()); wcsTasks.add(wcsTask); } orderOut.setOrderStatus(OrderStatusEnum.RUNNING.getCode()); orderOutService.updateById(orderOut); -// taskService.saveBatch(appTaskList); wcsTaskService.saveBatch(wcsTasks); stockService.updateBatchById(outStockList); } diff --git a/wms_web_nantong_yachi/src/api/orderIn.js b/wms_web_nantong_yachi/src/api/orderIn.js index f0a60d8..8d11afd 100644 --- a/wms_web_nantong_yachi/src/api/orderIn.js +++ b/wms_web_nantong_yachi/src/api/orderIn.js @@ -7,7 +7,7 @@ import axios from "axios"; const _request = axios.create({ // baseURL: 'http://10.18.58.20:12315/wms', - baseURL: 'http://10.18.58.20:12315', + baseURL: 'http://10.18.58.21:12315', timeout: 5000 }) diff --git a/wms_web_nantong_yachi/src/api/orderOut.js b/wms_web_nantong_yachi/src/api/orderOut.js index 77ca1a3..949d38a 100644 --- a/wms_web_nantong_yachi/src/api/orderOut.js +++ b/wms_web_nantong_yachi/src/api/orderOut.js @@ -7,7 +7,7 @@ import axios from "axios"; const _request = axios.create({ // baseURL: 'http://10.18.58.20:12315/wms', - baseURL: 'http://10.18.58.20:12315', + baseURL: 'http://10.18.58.21:12315', timeout: 5000 })