|
|
@ -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(); |
|
|
|