From b330b95731f8f20d892115486ff26458f0cbc1b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?= Date: Tue, 9 Dec 2025 13:47:11 +0800 Subject: [PATCH] =?UTF-8?q?1=E5=AE=AB=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WcsIntegrationServiceImpl.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java index 495c3a5..d691c09 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java @@ -1342,6 +1342,39 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService { .ifPresent(detail -> { throw new RuntimeException("标签{" + detail.getSerialNo() + "}已经被预留"); }); + }else{ + //---异常区校验 是否存在被预留且在SOIssueNotifyOrderMaterialList_detail表里面找不到out_wcs_flag='N'的数据 说明数据上已经出货 必须要在异常位拿出来 - rqrq + // 1. 筛选出已预留的标签 - rqrq + List reservedDetails = newDetail.stream() + .filter(detail -> "Y".equals(detail.getReserveFlag())) + .collect(Collectors.toList()); + + if (!reservedDetails.isEmpty()) { + // 2. 收集已预留标签的serialNo - rqrq + List reservedSerialNos = reservedDetails.stream() + .map(PalletDetailData::getSerialNo) + .collect(Collectors.toList()); + + // 3. 查询SOIssueNotifyOrderMaterialList_detail表中out_wcs_flag='N'的记录 - rqrq + List notifyDetails = + wcsIntegrationMapper.getSOIssueNotifyDetailsBySerialNos(site, reservedSerialNos); + + // 4. 获取查询结果中的serialNo集合 - rqrq + Set notifySerialNoSet = notifyDetails.stream() + .map(com.gaotao.modules.notify.entity.SOIssueNotifyOrderMaterialListDetail::getSerialNo) + .collect(Collectors.toSet()); + + // 5. 找出已预留但在表中找不到out_wcs_flag='N'的标签(说明已出货,需要拿出来)- rqrq + List needRemoveSerialNos = reservedSerialNos.stream() + .filter(serialNo -> !notifySerialNoSet.contains(serialNo)) + .collect(Collectors.toList()); + + // 6. 如果有需要拿出的标签,返回异常 - rqrq + if (!needRemoveSerialNos.isEmpty()) { + String serialNoStr = String.join(", ", needRemoveSerialNos); + throw new RuntimeException("有" + needRemoveSerialNos.size() + "个标签需要被拿出,条码号为:" + serialNoStr); + } + } } // 生成入库任务编号 TransNoControl transData2 = transNoService.getTransNo(site, "WOT", 10);