|
|
|
@ -97,6 +97,7 @@ public class WmsMessageServiceImpl implements WmsMessageService { |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
//3种业务类型 栈板入立库货架 栈板出立库货架 栈板到达出库口待取货 |
|
|
|
public String wcsWareHouse(PalletWareHouseData inData) { |
|
|
|
Long logId = null; |
|
|
|
long startTime = System.currentTimeMillis(); |
|
|
|
@ -144,39 +145,86 @@ public class WmsMessageServiceImpl implements WmsMessageService { |
|
|
|
toWarehouseId = BufferZoneConfig.BUFFER_WAREHOUSE_ID.getValue(); |
|
|
|
toLocationId = BufferZoneConfig.BUFFER_LOCATION_ID.getValue(); |
|
|
|
inData.setToBarcode(BufferZoneConfig.BUFFER_Station_ID.getValue()); |
|
|
|
}else if ("取货通知".equals(inData.getTransTypeDesc())) { |
|
|
|
// 出库时从缓冲区配置获取 |
|
|
|
switch (inData.getToBarcode()) { |
|
|
|
case "1093": |
|
|
|
inData.setToBarcode("D1"); |
|
|
|
break; |
|
|
|
case "1099": |
|
|
|
inData.setToBarcode("D2"); |
|
|
|
break; |
|
|
|
} |
|
|
|
toWarehouseId = BufferZoneConfig.BUFFER_WAREHOUSE_ID.getValue(); |
|
|
|
toLocationId = BufferZoneConfig.BUFFER_LOCATION_ID.getValue(); |
|
|
|
} else { |
|
|
|
throw new RuntimeException("不支持的事务类型:" + inData.getTransTypeDesc()); |
|
|
|
} |
|
|
|
|
|
|
|
// 4. 保存WCS回调数据到新表,等待定时任务处理 |
|
|
|
WcsCallbackTask callbackTask = new WcsCallbackTask(); |
|
|
|
callbackTask.setSite(inData.getSite()); |
|
|
|
callbackTask.setPalletId(inData.getPalletId()); |
|
|
|
callbackTask.setTransTypeDesc(inData.getTransTypeDesc()); |
|
|
|
callbackTask.setToWarehouseId(toWarehouseId); |
|
|
|
callbackTask.setToLocationId(toLocationId); |
|
|
|
callbackTask.setStatus("已录入"); // 等待定时任务处理 |
|
|
|
callbackTask.setCreatedTime(new Date()); |
|
|
|
callbackTask.setRetryCount(0); |
|
|
|
callbackTask.setRemark("WCS立库" + inData.getTransTypeDesc() + "回调"); |
|
|
|
callbackTask.setTaskNo(inData.getTaskNo()); |
|
|
|
callbackTask.setItemNo(inData.getItemNo()); |
|
|
|
callbackTask.setToStation(inData.getToBarcode()); |
|
|
|
|
|
|
|
// 保存到WCS回调任务表 |
|
|
|
wcsIntegrationMapper.insertWcsCallbackTask(callbackTask); |
|
|
|
|
|
|
|
//单独call料栈板到达出库口 直接转移站点然后更新任务就行 |
|
|
|
if ("取货通知".equals(inData.getTransTypeDesc())) { |
|
|
|
updateOrderTaskStatusForQuHuo(inData); |
|
|
|
wcsIntegrationMapper.updatePalletCallingFlag(inData.getSite(), inData.getPalletId(), "N", "SYS_WMS"); |
|
|
|
wcsIntegrationMapper.updateAgvStationStatus(inData.getToBarcode(), 1, "有货"); |
|
|
|
// 2. 查询托盘当前位置信息 |
|
|
|
Pallet pallet = palletService.lambdaQuery() |
|
|
|
.eq(Pallet::getSite, inData.getSite()) |
|
|
|
.eq(Pallet::getPalletId, inData.getPalletId()) |
|
|
|
.one(); |
|
|
|
|
|
|
|
if (pallet == null) { |
|
|
|
throw new RuntimeException("托盘不存在:" + inData.getPalletId()); |
|
|
|
} |
|
|
|
|
|
|
|
pallet.setLocationCode(inData.getToBarcode()); |
|
|
|
palletService.updateById(pallet); |
|
|
|
// 4. 保存WCS回调数据到新表,作为记录 后续根据order表去取货就行 |
|
|
|
WcsCallbackTask callbackTask = new WcsCallbackTask(); |
|
|
|
callbackTask.setSite(inData.getSite()); |
|
|
|
callbackTask.setPalletId(inData.getPalletId()); |
|
|
|
callbackTask.setTransTypeDesc(inData.getTransTypeDesc()); |
|
|
|
callbackTask.setToWarehouseId(toWarehouseId); |
|
|
|
callbackTask.setToLocationId(toLocationId); |
|
|
|
callbackTask.setStatus("已完成"); |
|
|
|
callbackTask.setCreatedTime(new Date()); |
|
|
|
callbackTask.setRetryCount(0); |
|
|
|
callbackTask.setRemark("WCS立库" + inData.getTransTypeDesc() + "回调"); |
|
|
|
callbackTask.setTaskNo(inData.getTaskNo()); |
|
|
|
callbackTask.setItemNo(inData.getItemNo()); |
|
|
|
callbackTask.setToStation(inData.getToBarcode()); |
|
|
|
|
|
|
|
// 保存到WCS回调任务表 |
|
|
|
wcsIntegrationMapper.insertWcsCallbackTask(callbackTask); |
|
|
|
}else { |
|
|
|
// 4. 保存WCS回调数据到新表,等待定时任务处理 |
|
|
|
WcsCallbackTask callbackTask = new WcsCallbackTask(); |
|
|
|
callbackTask.setSite(inData.getSite()); |
|
|
|
callbackTask.setPalletId(inData.getPalletId()); |
|
|
|
callbackTask.setTransTypeDesc(inData.getTransTypeDesc()); |
|
|
|
callbackTask.setToWarehouseId(toWarehouseId); |
|
|
|
callbackTask.setToLocationId(toLocationId); |
|
|
|
callbackTask.setStatus("已录入"); // 等待定时任务处理 |
|
|
|
callbackTask.setCreatedTime(new Date()); |
|
|
|
callbackTask.setRetryCount(0); |
|
|
|
callbackTask.setRemark("WCS立库" + inData.getTransTypeDesc() + "回调"); |
|
|
|
callbackTask.setTaskNo(inData.getTaskNo()); |
|
|
|
callbackTask.setItemNo(inData.getItemNo()); |
|
|
|
callbackTask.setToStation(inData.getToBarcode()); |
|
|
|
|
|
|
|
// 保存到WCS回调任务表 |
|
|
|
wcsIntegrationMapper.insertWcsCallbackTask(callbackTask); |
|
|
|
} |
|
|
|
// 如果是入库,同时更新对应的wms_order_task状态 |
|
|
|
if ("入库".equals(inData.getTransTypeDesc())) { |
|
|
|
updateOrderTaskStatusForInboundCallback(inData); |
|
|
|
wcsIntegrationMapper.updatePalletCallingFlag(inData.getSite(), inData.getPalletId(), "Y", "SYS_WMS"); |
|
|
|
wcsIntegrationMapper.updatePalletCallingFlag(inData.getSite(), inData.getPalletId(), "N", "SYS_WMS"); |
|
|
|
} |
|
|
|
// 如果是入库,同时更新对应的wms_order_task状态 |
|
|
|
if ("出库".equals(inData.getTransTypeDesc())) { |
|
|
|
updateOrderTaskStatusForOutCallback(inData); |
|
|
|
wcsIntegrationMapper.reUpdatePalletDetailWcsFlag(inData.getSite(),inData.getPalletId()); |
|
|
|
|
|
|
|
wcsIntegrationMapper.updatePalletCallingFlag(inData.getSite(), inData.getPalletId(), "Y", "SYS_WMS"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
log.info("WCS回调数据已保存:栈板={}, 任务类型={}, 目标位置={}-{}", |
|
|
|
inData.getPalletId(), inData.getTransTypeDesc(), toWarehouseId, toLocationId); |
|
|
|
@ -790,6 +838,19 @@ public class WmsMessageServiceImpl implements WmsMessageService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
private void updateOrderTaskStatusForQuHuo(PalletWareHouseData inData) { |
|
|
|
if(inData.getTaskNo()!=null&&inData.getItemNo()!=null){ |
|
|
|
WmsOrderTask orderTask = wcsIntegrationMapper.findOrderTasksByTaskNoItem( |
|
|
|
inData.getSite(),inData.getTaskNo(),inData.getItemNo()); |
|
|
|
if(orderTask!=null){ |
|
|
|
wcsIntegrationMapper.updateOrderTaskStatusAndWmsStatus( |
|
|
|
orderTask.getId(), "待取货", "待取货" |
|
|
|
); |
|
|
|
wcsIntegrationMapper.updateOrderTaskDetailStatusByTaskNoPalletId(inData.getSite(),inData.getTaskNo(),"待取货","待取货",inData.getPalletId()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
/** |
|
|
|
* 收到入库回调时更新订单任务状态 |
|
|
|
|