From 3dcf854c261bab83ed54488d027e726174ed3dbb 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: Fri, 16 Oct 2026 18:55:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=B9=E6=AE=8A=E6=89=98=E7=9B=98=E5=85=A5?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/HaiAnPdaAutoWarehouseServiceImpl.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPdaAutoWarehouseServiceImpl.java b/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPdaAutoWarehouseServiceImpl.java index 14712e8b..04e267d8 100644 --- a/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPdaAutoWarehouseServiceImpl.java +++ b/src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPdaAutoWarehouseServiceImpl.java @@ -2650,12 +2650,12 @@ public class HaiAnPdaAutoWarehouseServiceImpl implements HaiAnPdaAutoWarehouseSe /** * @author rqrq - * @Description 海安组盘运输入库方法:校验栈板可入库后生成组盘报文并调用WCS,成功时解析wmsTask回写haian_wms_order_task;request需包含site/palletId,失败时抛错并终止后续回写 - rqrq + * @Description 海安组盘运输入库方法:A0206且整盘无明细时允许空cargoInfos,其余仍要求增量;request需包含site/palletId,WCS失败则回滚本地任务与状态 - rqrq */ @Override @Transactional(rollbackFor = Exception.class) public HaiAnWcsActionResult callPalletToStationWithUpdateZuPan(HaiAnPdaRequest request) { - // 组盘运输入库入口:先校验栈板可入库,再推送增量组盘,最后回写任务号与状态 - rqrq + // 组盘运输入库入口:先校验栈板可入库,再推送增量或A0206空盘组盘,最后回写任务号与状态 - rqrq String site = requireSite(request); guardSite54(site); String palletId = request.getPalletId(); @@ -2693,10 +2693,17 @@ public class HaiAnPdaAutoWarehouseServiceImpl implements HaiAnPdaAutoWarehouseSe // 后台入库门禁检查整盘业务标记和实时库存,失败禁止生成任务或调用WCS。- rqrq validatePalletInboundLabels(site, palletId); - // 仅使用haian_pallet_detail增量明细构建组盘报文,不再联查标签表(handling_unit)补充结构数据 - rqrq + // 仅使用haian_pallet_detail增量明细构建组盘报文;空增量时只对A0206复查整盘明细,避免历史明细被当作空盘重复入库 - rqrq List newDetailRows = haiAnPdaAutoWarehouseMapper.getPalletDetailsByWcsFlag(site, palletId, 1); if (newDetailRows == null || newDetailRows.isEmpty()) { - throw new RuntimeException("栈板{" + palletId + "}没有增量数据,无法执行组盘入库操作"); + if (!HaiAnPalletTypeStaticData.GUARD_SAME_PART_TYPE_A0206.equals(palletInfo.getPalletType())) { + throw new RuntimeException("栈板{" + palletId + "}没有增量数据,无法执行组盘入库操作"); + } + // 按site+托盘号统计全部明细;仅计数明确为0才下发空cargoInfos,查询异常或仍有历史明细时不生成任务、不调用WCS - rqrq + Integer detailCount = haiAnPdaAutoWarehouseMapper.countPalletDetails(site, palletId); + if (detailCount == null || detailCount != 0) { + throw new RuntimeException("栈板{" + palletId + "}仍有明细且没有增量数据,无法执行组盘入库操作"); + } } // 组盘运输入库前必须校验增量标签是否被预定;一旦命中立即阻断,防止预定物料被错误入库 - rqrq List reservedSerialNos = haiAnPdaAutoWarehouseMapper.getReservedSerialNosByWcsFlag(site, palletId, 1); @@ -2718,7 +2725,7 @@ public class HaiAnPdaAutoWarehouseServiceImpl implements HaiAnPdaAutoWarehouseSe request.setEndFlag(HaiAnAssembleTypeStaticData.END_FLAG_YES); // 运输入库为本次组盘闭环动作 - rqrq // 报文构建在单一方法完成:必填type校验、endFlag规则和cargoInfos组装统一核对,失败不外呼 - rqrq HaiAnAssemblePalletRequest assembleRequest = buildAssembleRequest(request, palletInfo, newDetailRows); - // 组盘报文已包含托盘高度字段,cargoInfos继续按位置/层数/条码组装 - rqrq + // 组盘报文带托盘高度;A0206空盘传空cargoInfos,其余按位置/层数/条码组装,组包失败不下发WCS - rqrq String operator = resolveOperator(); Date now = new Date();