diff --git a/src/main/java/com/gaotao/modules/api/service/impl/WmsMessageServiceImpl.java b/src/main/java/com/gaotao/modules/api/service/impl/WmsMessageServiceImpl.java index e6cda9e..5dd3b2d 100644 --- a/src/main/java/com/gaotao/modules/api/service/impl/WmsMessageServiceImpl.java +++ b/src/main/java/com/gaotao/modules/api/service/impl/WmsMessageServiceImpl.java @@ -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()); + } + } + } /** * 收到入库回调时更新订单任务状态 diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/entity/WcsCallbackTask.java b/src/main/java/com/gaotao/modules/automatedWarehouse/entity/WcsCallbackTask.java index 986a8ae..0881260 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/entity/WcsCallbackTask.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/entity/WcsCallbackTask.java @@ -1,17 +1,23 @@ package com.gaotao.modules.automatedWarehouse.entity; -import org.apache.ibatis.type.Alias; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + import java.util.Date; /** - * WCS回调任务实体类 + * @Description WCS回调任务基础实体类 - 数据库表映射 - rqrq + * @Author rqrq + * @Date 2025/10/04 */ -@Alias("WcsCallbackTask") +@Data +@TableName("wcs_callback_task") public class WcsCallbackTask { /** - * 主键ID + * 主键ID,自增 */ + @TableId(type = IdType.AUTO) private Long id; /** @@ -47,6 +53,7 @@ public class WcsCallbackTask { /** * 创建时间(WCS回调时间) */ + @TableField(fill = FieldFill.INSERT) private Date createdTime; /** @@ -73,148 +80,19 @@ public class WcsCallbackTask { * 备注 */ private String remark; - + /** - * 任务号 + * WCS任务号 */ private String taskNo; - + /** - * 明细行号 + * WCS明细行号 */ private Integer itemNo; - + /** - * 目标站点(入库时为货架编码) + * 目标站点 */ private String toStation; - - // Getter and Setter methods - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getSite() { - return site; - } - - public void setSite(String site) { - this.site = site; - } - - public String getPalletId() { - return palletId; - } - - public void setPalletId(String palletId) { - this.palletId = palletId; - } - - public String getTransTypeDesc() { - return transTypeDesc; - } - - public void setTransTypeDesc(String transTypeDesc) { - this.transTypeDesc = transTypeDesc; - } - - public String getToWarehouseId() { - return toWarehouseId; - } - - public void setToWarehouseId(String toWarehouseId) { - this.toWarehouseId = toWarehouseId; - } - - public String getToLocationId() { - return toLocationId; - } - - public void setToLocationId(String toLocationId) { - this.toLocationId = toLocationId; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - - public Date getCreatedTime() { - return createdTime; - } - - public void setCreatedTime(Date createdTime) { - this.createdTime = createdTime; - } - - public Date getProcessStartTime() { - return processStartTime; - } - - public void setProcessStartTime(Date processStartTime) { - this.processStartTime = processStartTime; - } - - public Date getProcessEndTime() { - return processEndTime; - } - - public void setProcessEndTime(Date processEndTime) { - this.processEndTime = processEndTime; - } - - public String getErrorMsg() { - return errorMsg; - } - - public void setErrorMsg(String errorMsg) { - this.errorMsg = errorMsg; - } - - public Integer getRetryCount() { - return retryCount; - } - - public void setRetryCount(Integer retryCount) { - this.retryCount = retryCount; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public String getTaskNo() { - return taskNo; - } - - public void setTaskNo(String taskNo) { - this.taskNo = taskNo; - } - - public Integer getItemNo() { - return itemNo; - } - - public void setItemNo(Integer itemNo) { - this.itemNo = itemNo; - } - - public String getToStation() { - return toStation; - } - - public void setToStation(String toStation) { - this.toStation = toStation; - } -} \ No newline at end of file +} diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsTaskServiceImpl.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsTaskServiceImpl.java index 2f8d71b..64ff61a 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsTaskServiceImpl.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsTaskServiceImpl.java @@ -104,7 +104,7 @@ public class WcsTaskServiceImpl implements WcsTaskService { wcsIntegrationMapper.updatePalletCallingFlag(callbackTask.getSite(), callbackTask.getPalletId(), "N", "SYS_WMS"); } if ("出库".equals(callbackTask.getTransTypeDesc())) { - wcsIntegrationMapper.updatePalletWcsLocation(callbackTask.getSite(), callbackTask.getPalletId(), ""); + wcsIntegrationMapper.updatePalletWcsLocation(callbackTask.getSite(), callbackTask.getPalletId(), null); wcsIntegrationMapper.updatePalletCallingFlag(callbackTask.getSite(), callbackTask.getPalletId(), "Y", "SYS_WMS"); }