From 32e34226cdeda59de7b7c1a8fada8bc54361d35d 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: Sun, 21 Sep 2025 12:38:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E8=B0=83=E6=95=B4=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E8=AE=BE=E7=BD=AE=E6=9F=A5=E8=AF=A2=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A0=87=E7=AD=BE=E5=86=85=E5=AE=B9=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gaotao/modules/api/entity/SRes.java | 90 +++++++++++++++++++ .../com/gaotao/modules/api/entity/SResT.java | 53 +++++++++++ .../api/entity/WcsResponseStatusCodeEnum.java | 43 +++++++++ .../modules/api/service/WcsApiService.java | 6 ++ .../api/service/impl/WcsApiServiceImpl.java | 18 ++++ .../entity/WmsTransportTask.java | 10 ++- .../mapper/WcsIntegrationMapper.java | 2 + .../impl/WcsIntegrationServiceImpl.java | 30 +++---- .../WcsIntegrationMapper.xml | 10 +-- 9 files changed, 238 insertions(+), 24 deletions(-) create mode 100644 src/main/java/com/gaotao/modules/api/entity/SRes.java create mode 100644 src/main/java/com/gaotao/modules/api/entity/SResT.java create mode 100644 src/main/java/com/gaotao/modules/api/entity/WcsResponseStatusCodeEnum.java diff --git a/src/main/java/com/gaotao/modules/api/entity/SRes.java b/src/main/java/com/gaotao/modules/api/entity/SRes.java new file mode 100644 index 00000000..d57faff0 --- /dev/null +++ b/src/main/java/com/gaotao/modules/api/entity/SRes.java @@ -0,0 +1,90 @@ +package com.gaotao.modules.api.entity; + +public class SRes { + /** + * 返回状态码 + */ + private WcsResponseStatusCodeEnum resCode; + + /** + * 返回描述信息 + */ + private String resMsg; + + /** + * 备用字段 + */ + private String memo1; + + /** + * 备用字段 + */ + private String memo2; + + /** + * 备用字段 + */ + private String memo3; + + // -------------------- 构造函数 -------------------- + + public SRes() {} + + public SRes(WcsResponseStatusCodeEnum resCode, String resMsg) { + this.resCode = resCode; + this.resMsg = resMsg; + } + + // -------------------- Getter & Setter -------------------- + + public WcsResponseStatusCodeEnum getResCode() { + return resCode; + } + + public void setResCode(WcsResponseStatusCodeEnum resCode) { + this.resCode = resCode; + } + + public String getResMsg() { + return resMsg; + } + + public void setResMsg(String resMsg) { + this.resMsg = resMsg; + } + + public String getMemo1() { + return memo1; + } + + public void setMemo1(String memo1) { + this.memo1 = memo1; + } + + public String getMemo2() { + return memo2; + } + + public void setMemo2(String memo2) { + this.memo2 = memo2; + } + + public String getMemo3() { + return memo3; + } + + public void setMemo3(String memo3) { + this.memo3 = memo3; + } + + @Override + public String toString() { + return "SRes{" + + "resCode=" + resCode + + ", resMsg='" + resMsg + '\'' + + ", memo1='" + memo1 + '\'' + + ", memo2='" + memo2 + '\'' + + ", memo3='" + memo3 + '\'' + + '}'; + } +} diff --git a/src/main/java/com/gaotao/modules/api/entity/SResT.java b/src/main/java/com/gaotao/modules/api/entity/SResT.java new file mode 100644 index 00000000..e50b47ad --- /dev/null +++ b/src/main/java/com/gaotao/modules/api/entity/SResT.java @@ -0,0 +1,53 @@ +package com.gaotao.modules.api.entity; + +import java.util.List; + +public class SResT extends SRes{ + /** + * 数据实体 + */ + private T resData; + + /** + * 数据实体列表 + */ + private List resDataList; + + // -------------------- 构造函数 -------------------- + + public SResT() {} + + public SResT(T resData) { + this.resData = resData; + } + + public SResT(List resDataList) { + this.resDataList = resDataList; + } + + // -------------------- Getter & Setter -------------------- + + public T getResData() { + return resData; + } + + public void setResData(T resData) { + this.resData = resData; + } + + public List getResDataList() { + return resDataList; + } + + public void setResDataList(List resDataList) { + this.resDataList = resDataList; + } + + @Override + public String toString() { + return "SResT{" + + "resData=" + resData + + ", resDataList=" + resDataList + + "} " + super.toString(); + } +} diff --git a/src/main/java/com/gaotao/modules/api/entity/WcsResponseStatusCodeEnum.java b/src/main/java/com/gaotao/modules/api/entity/WcsResponseStatusCodeEnum.java new file mode 100644 index 00000000..914773e3 --- /dev/null +++ b/src/main/java/com/gaotao/modules/api/entity/WcsResponseStatusCodeEnum.java @@ -0,0 +1,43 @@ +package com.gaotao.modules.api.entity; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum WcsResponseStatusCodeEnum { + SUCCESS(200, "成功"), + FAIL(206, "失败"); + + private final int code; + private final String description; + + WcsResponseStatusCodeEnum(int code, String description) { + this.code = code; + this.description = description; + } + + @JsonValue // 序列化时输出 code + public int getCode() { + return code; + } + + public String getDescription() { + return description; + } + + // 根据 code 获取枚举(可选) + public static WcsResponseStatusCodeEnum fromCode(int code) { + for (WcsResponseStatusCodeEnum status : WcsResponseStatusCodeEnum.values()) { + if (status.code == code) { + return status; + } + } + throw new IllegalArgumentException("Unknown status code: " + code); + } + + @Override + public String toString() { + return "ResponseStatusCodeEnum{" + + "code=" + code + + ", description='" + description + '\'' + + '}'; + } +} diff --git a/src/main/java/com/gaotao/modules/api/service/WcsApiService.java b/src/main/java/com/gaotao/modules/api/service/WcsApiService.java index e364820b..58fd62dc 100644 --- a/src/main/java/com/gaotao/modules/api/service/WcsApiService.java +++ b/src/main/java/com/gaotao/modules/api/service/WcsApiService.java @@ -1,4 +1,10 @@ package com.gaotao.modules.api.service; +import com.gaotao.modules.automatedWarehouse.entity.WmsTransportTask; + +import java.util.List; + public interface WcsApiService { + + void pushAgvTaskApi(List inList); } diff --git a/src/main/java/com/gaotao/modules/api/service/impl/WcsApiServiceImpl.java b/src/main/java/com/gaotao/modules/api/service/impl/WcsApiServiceImpl.java index 52642359..1c21dc3a 100644 --- a/src/main/java/com/gaotao/modules/api/service/impl/WcsApiServiceImpl.java +++ b/src/main/java/com/gaotao/modules/api/service/impl/WcsApiServiceImpl.java @@ -1,11 +1,29 @@ package com.gaotao.modules.api.service.impl; import com.gaotao.modules.api.service.WcsApiService; +import com.gaotao.modules.automatedWarehouse.entity.WmsTransportTask; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.List; + @Slf4j @Service public class WcsApiServiceImpl implements WcsApiService { + @Override + public void pushAgvTaskApi(List inList){ + log.info("开始推送AGV任务"); + } + + + public void demo(){ + // 接收 JSON 响应:{ "resCode": 200, "resMsg": "成功", "resDataList": [ {...}, {...} ] } + // SResT response = restTemplate.getForObject("/api/users", new ParameterizedTypeReference>() {}); + // + // if (response.getResCode() == ResponseStatusCodeEnum.SUCCESS) { + // List users = response.getResDataList(); + // // 处理数据 + // } + } } diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/entity/WmsTransportTask.java b/src/main/java/com/gaotao/modules/automatedWarehouse/entity/WmsTransportTask.java index 264276ae..62f7c6f8 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/entity/WmsTransportTask.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/entity/WmsTransportTask.java @@ -16,7 +16,7 @@ public class WmsTransportTask { * */ private String site; - + private Integer itemNo; /** * 运输任务单号,全局唯一,用于任务追踪 */ @@ -371,4 +371,12 @@ public class WmsTransportTask { public void setWmsStatus(String wmsStatus) { this.wmsStatus = wmsStatus; } + + public Integer getItemNo() { + return itemNo; + } + + public void setItemNo(Integer itemNo) { + this.itemNo = itemNo; + } } \ No newline at end of file diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java b/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java index cda390d8..dfde5e63 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java @@ -16,4 +16,6 @@ public interface WcsIntegrationMapper { List checkPalletTask (@Param("site") String site, @Param("palletId") String palletId); void batchSaveTransportTask(@Param("list") List transportTaskList); + + } diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java index 182e657a..2f00b285 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java @@ -17,6 +17,8 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; @Service public class WcsIntegrationServiceImpl implements WcsIntegrationService { @@ -37,7 +39,8 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService { public void callPalletFromWcs(List data){ String username = ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername(); Date currentTime = new Date(); - + + //查询下这些栈板有没有不是结束 取消 失败状态的运输单 for (int i = 0; i < data.size(); i++) { List checkPalletTask = wcsIntegrationMapper.checkPalletTask(data.get(i).getSite(),data.get(i).getPalletId()); @@ -45,16 +48,17 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService { throw new RuntimeException(checkPalletTask.getFirst().getPalletId()+ "栈板已有未完成的运输任务,请选择其他栈板"); } } - + // 生成任务编号 + TransNoControl transData = transNoService.getTransNo(data.getFirst().getSite(), "WTT", 10); //批量保存到运输记录表 - List saveList = data.stream().map(item -> { + List saveList = IntStream.range(0, data.size()) + .mapToObj(i -> { + WmsLabelAndPalletData item = data.get(i); WmsTransportTask task = new WmsTransportTask(); task.setSite(item.getSite()); task.setPalletId(item.getPalletId()); - - // 生成任务编号 - TransNoControl transData = transNoService.getTransNo(item.getSite(), "WTT", 10); task.setTaskNo(transData.getNewTransNo()); + task.setItemNo(i + 1); // 设置任务基本信息 task.setSourceType("手工Call料"); @@ -70,26 +74,16 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService { task.setToLocation(""); // 目标位置 // 设置任务属性 - task.setAgvCode(null); task.setPriority(0); - task.setStatus("CREATED"); + task.setStatus("已创建"); task.setWmsSendTime(currentTime); - task.setWcsReceiveTime(null); - task.setStartTime(null); - task.setCompleteTime(null); - task.setErrorCode(null); - task.setErrorMsg(null); - // 设置审计字段 task.setCreatedBy(username); task.setCreatedTime(currentTime); - task.setUpdatedTime(currentTime); - task.setWcsTaskId(null); task.setFinishQty(BigDecimal.ZERO); - task.setWmsStatus(null); return task; - }).toList(); + }).collect(Collectors.toList()); // 批量插入运输任务 wcsIntegrationMapper.batchSaveTransportTask(saveList); diff --git a/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml b/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml index b8d01c0e..c4f48c0b 100644 --- a/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml +++ b/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml @@ -40,18 +40,18 @@ INSERT INTO wms_transport_task ( site, task_no, source_type, source_bill_no, source_line_id, part_no, qty, batch_no, serial_no, from_location, to_location, pallet_id, agv_code, - priority, status, wms_send_time, wcs_receive_time, start_time, complete_time, - error_code, error_msg, created_by, created_time, updated_time, wcs_task_id, - finish_qty, wms_status + priority, status, wms_send_time, + error_code, error_msg, created_by, created_time, wcs_task_id, + finish_qty, wms_status,item_no ) VALUES ( #{item.site}, #{item.taskNo}, #{item.sourceType}, #{item.sourceBillNo}, #{item.sourceLineId}, #{item.partNo}, #{item.qty}, #{item.batchNo}, #{item.serialNo}, #{item.fromLocation}, #{item.toLocation}, #{item.palletId}, #{item.agvCode}, #{item.priority}, #{item.status}, - #{item.wmsSendTime}, #{item.wcsReceiveTime}, #{item.startTime}, #{item.completeTime}, + #{item.wmsSendTime}, #{item.errorCode}, #{item.errorMsg}, #{item.createdBy}, #{item.createdTime}, - #{item.updatedTime}, #{item.wcsTaskId}, #{item.finishQty}, #{item.wmsStatus} + #{item.wcsTaskId}, #{item.finishQty}, #{item.wmsStatus}, #{item.itemNo} )