Browse Source

特殊托盘入库

master
常熟吴彦祖 3 weeks ago
parent
commit
3dcf854c26
  1. 17
      src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPdaAutoWarehouseServiceImpl.java

17
src/main/java/com/gaotao/modules/autoWareHourceHaian/service/impl/HaiAnPdaAutoWarehouseServiceImpl.java

@ -2650,12 +2650,12 @@ public class HaiAnPdaAutoWarehouseServiceImpl implements HaiAnPdaAutoWarehouseSe
/** /**
* @author rqrq * @author rqrq
* @Description 海安组盘运输入库方法:校验栈板可入库后生成组盘报文并调用WCS,成功时解析wmsTask回写haian_wms_order_task;request需包含site/palletId,失败时抛错并终止后续回写 - rqrq
* @Description 海安组盘运输入库方法:A0206且整盘无明细时允许空cargoInfos,其余仍要求增量;request需包含site/palletId,WCS失败则回滚本地任务与状态 - rqrq
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public HaiAnWcsActionResult callPalletToStationWithUpdateZuPan(HaiAnPdaRequest request) { public HaiAnWcsActionResult callPalletToStationWithUpdateZuPan(HaiAnPdaRequest request) {
// 组盘运输入库入口:先校验栈板可入库,再推送增量组盘,最后回写任务号与状态 - rqrq
// 组盘运输入库入口:先校验栈板可入库,再推送增量或A0206空盘组盘,最后回写任务号与状态 - rqrq
String site = requireSite(request); String site = requireSite(request);
guardSite54(site); guardSite54(site);
String palletId = request.getPalletId(); String palletId = request.getPalletId();
@ -2693,10 +2693,17 @@ public class HaiAnPdaAutoWarehouseServiceImpl implements HaiAnPdaAutoWarehouseSe
// 后台入库门禁检查整盘业务标记和实时库存,失败禁止生成任务或调用WCS。- rqrq // 后台入库门禁检查整盘业务标记和实时库存,失败禁止生成任务或调用WCS。- rqrq
validatePalletInboundLabels(site, palletId); validatePalletInboundLabels(site, palletId);
// 仅使用haian_pallet_detail增量明细构建组盘报文,不再联查标签表(handling_unit)补充结构数据 - rqrq
// 仅使用haian_pallet_detail增量明细构建组盘报文;空增量时只对A0206复查整盘明细,避免历史明细被当作空盘重复入库 - rqrq
List<HaiAnPalletDetailRow> newDetailRows = haiAnPdaAutoWarehouseMapper.getPalletDetailsByWcsFlag(site, palletId, 1); List<HaiAnPalletDetailRow> newDetailRows = haiAnPdaAutoWarehouseMapper.getPalletDetailsByWcsFlag(site, palletId, 1);
if (newDetailRows == null || newDetailRows.isEmpty()) { 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 // 组盘运输入库前必须校验增量标签是否被预定;一旦命中立即阻断,防止预定物料被错误入库 - rqrq
List<String> reservedSerialNos = haiAnPdaAutoWarehouseMapper.getReservedSerialNosByWcsFlag(site, palletId, 1); List<String> reservedSerialNos = haiAnPdaAutoWarehouseMapper.getReservedSerialNosByWcsFlag(site, palletId, 1);
@ -2718,7 +2725,7 @@ public class HaiAnPdaAutoWarehouseServiceImpl implements HaiAnPdaAutoWarehouseSe
request.setEndFlag(HaiAnAssembleTypeStaticData.END_FLAG_YES); // 运输入库为本次组盘闭环动作 - rqrq request.setEndFlag(HaiAnAssembleTypeStaticData.END_FLAG_YES); // 运输入库为本次组盘闭环动作 - rqrq
// 报文构建在单一方法完成:必填type校验、endFlag规则和cargoInfos组装统一核对,失败不外呼 - rqrq // 报文构建在单一方法完成:必填type校验、endFlag规则和cargoInfos组装统一核对,失败不外呼 - rqrq
HaiAnAssemblePalletRequest assembleRequest = buildAssembleRequest(request, palletInfo, newDetailRows); HaiAnAssemblePalletRequest assembleRequest = buildAssembleRequest(request, palletInfo, newDetailRows);
// 组盘报文已包含托盘高度字段,cargoInfos继续按位置/层数/条码组装 - rqrq
// 组盘报文带托盘高度;A0206空盘传空cargoInfos,其余按位置/层数/条码组装,组包失败不下发WCS - rqrq
String operator = resolveOperator(); String operator = resolveOperator();
Date now = new Date(); Date now = new Date();

Loading…
Cancel
Save