From e461c84027885a02f8af27cca01e0cbff0c5ade4 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期六, 10 一月 2026 13:00:13 +0800
Subject: [PATCH] lsh#

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java |    6 -
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsChangeLocParam.java   |   28 +++++--
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ReassignLocParam.java   |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/WcsMsgTypeEvent.java     |   23 +++++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java    |    6 
 rsf-server/src/main/resources/application.yml                                             |    2 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsTaskReportParam.java  |   28 +++++--
 rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java          |   19 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ChangeLocParam.java     |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/TaskReportParam.java    |   28 +++++--
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java          |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java      |   36 +++++---
 12 files changed, 133 insertions(+), 49 deletions(-)

diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsChangeLocParam.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsChangeLocParam.java
index 03b4748..404f22c 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsChangeLocParam.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsChangeLocParam.java
@@ -13,16 +13,28 @@
 @ApiModel(value = "WcsTaskReportParam", description = "WCS浠诲姟涓婃姤閫氱煡")
 public class WcsChangeLocParam implements Serializable {
 
-    @ApiModelProperty("鎵樼洏鐮�")
-    private String barcode;
+    @ApiModelProperty("閫氱煡娴佹按鍙�")
+    private Long id;
 
-    @ApiModelProperty("婧愮珯")
-    private Integer sourceStaNo;
+    @ApiModelProperty("閫氱煡绫诲瀷锛歵ask")
+    private String notifyType;
 
-    @ApiModelProperty("鍙敤鎺�")
-    private List<Integer> rowList;
+    @ApiModelProperty("璁惧鍙�")
+    private String device;
 
-    @ApiModelProperty("搴撲綅绫诲瀷")
-    private Integer locType1;
+    @ApiModelProperty("WCS宸ヤ綔鍙�")
+    private String taskNo;
+
+    @ApiModelProperty("涓婄骇绯荤粺宸ヤ綔鍙�")
+    private String superTaskNo;
+
+    @ApiModelProperty("娑堟伅绫诲瀷锛歵ask_complete銆乼ask_cancel")
+    private String msgType;
+
+    @ApiModelProperty("娑堟伅鎻忚堪")
+    private String msgDesc;
+
+    @ApiModelProperty("娑堟伅鏁版嵁")
+    private String data;
 
 }
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsTaskReportParam.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsTaskReportParam.java
index 76f3472..2f410e4 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsTaskReportParam.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/WcsTaskReportParam.java
@@ -13,16 +13,28 @@
 @ApiModel(value = "WcsTaskReportParam", description = "WCS浠诲姟涓婃姤閫氱煡")
 public class WcsTaskReportParam implements Serializable {
 
-    @ApiModelProperty("鎵樼洏鐮�")
-    private String barcode;
+    @ApiModelProperty("閫氱煡娴佹按鍙�")
+    private Long id;
 
-    @ApiModelProperty("婧愮珯")
-    private Integer sourceStaNo;
+    @ApiModelProperty("閫氱煡绫诲瀷锛歵ask")
+    private String notifyType;
 
-    @ApiModelProperty("鍙敤鎺�")
-    private List<Integer> rowList;
+    @ApiModelProperty("璁惧鍙�")
+    private String device;
 
-    @ApiModelProperty("搴撲綅绫诲瀷")
-    private Integer locType1;
+    @ApiModelProperty("WCS宸ヤ綔鍙�")
+    private String taskNo;
+
+    @ApiModelProperty("涓婄骇绯荤粺宸ヤ綔鍙�")
+    private String superTaskNo;
+
+    @ApiModelProperty("娑堟伅绫诲瀷锛歵ask_complete銆乼ask_cancel")
+    private String msgType;
+
+    @ApiModelProperty("娑堟伅鎻忚堪")
+    private String msgDesc;
+
+    @ApiModelProperty("娑堟伅鏁版嵁")
+    private String data;
 
 }
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java
index e048b9e..851687b 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java
@@ -106,7 +106,7 @@
             try {
                 CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
                 if (result.getCode() == 200) {
-                    return R.ok().add(result.getData());
+                    return R.ok(result.getMsg()).add(result.getData());
                 } else {
                     return R.error(result.getMsg());
 //                    throw new CoolException("浠诲姟鎵ц鐘舵�佷笂鎶ュけ璐ワ紒锛�");
@@ -145,7 +145,7 @@
             try {
                 CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
                 if (result.getCode() == 200) {
-                    return R.ok().add(result.getData());
+                    return R.ok(result.getMsg()).add(result.getData());
                 } else {
                     return R.error(result.getMsg());
 //                    throw new CoolException("浠诲姟鎵ц鐘舵�佷笂鎶ュけ璐ワ紒锛�");
@@ -184,7 +184,7 @@
             try {
                 CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
                 if (result.getCode() == 200) {
-                    return R.ok().add(result.getData());
+                    return R.ok(result.getMsg()).add(result.getData());
                 } else {
                     return R.error(result.getMsg());
 //                    throw new CoolException("浠诲姟鎵ц鐘舵�佷笂鎶ュけ璐ワ紒锛�");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/WcsMsgTypeEvent.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/WcsMsgTypeEvent.java
new file mode 100644
index 0000000..fcceb69
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/WcsMsgTypeEvent.java
@@ -0,0 +1,23 @@
+package com.vincent.rsf.server.api.entity.enums;
+
+/**
+ * @author Munch D. Luffy
+ * @date 2026/01/10
+ * @description: WCS娑堟伅绫诲瀷
+ * @version 1.0
+ */
+public enum WcsMsgTypeEvent {
+    /**娑堟伅绫诲瀷*/
+    TASK_COMPLETE("task_complete", "浠诲姟瀹屾垚"),
+    TASK_CANCEL("task_cancel", "浠诲姟鍙栨秷"),
+    ;
+
+    WcsMsgTypeEvent(String event, String desc) {
+        this.event = event;
+        this.desc = desc;
+    }
+
+    public String event;
+
+    public String desc;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ChangeLocParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ChangeLocParam.java
index 455ceac..c16f291 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ChangeLocParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ChangeLocParam.java
@@ -10,7 +10,7 @@
 
 @Data
 @Accessors(chain = true)
-@ApiModel(value = "ChangeLocParam", description = "WCS浠诲姟涓婃姤閫氱煡")
+@ApiModel(value = "ChangeLocParam", description = "WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅")
 public class ChangeLocParam implements Serializable {
 
     @ApiModelProperty("鎵樼洏鐮�")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ReassignLocParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ReassignLocParam.java
index 7be5439..ca17711 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ReassignLocParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ReassignLocParam.java
@@ -10,7 +10,7 @@
 
 @Data
 @Accessors(chain = true)
-@ApiModel(value = "ReassignLocParam", description = "WCS浠诲姟涓婃姤閫氱煡")
+@ApiModel(value = "ReassignLocParam", description = "WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱")
 public class ReassignLocParam implements Serializable {
 
     @ApiModelProperty("鎵樼洏鐮�")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/TaskReportParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/TaskReportParam.java
index b2352f0..a10c4d8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/TaskReportParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/TaskReportParam.java
@@ -13,16 +13,28 @@
 @ApiModel(value = "TaskReportParam", description = "WCS浠诲姟涓婃姤閫氱煡")
 public class TaskReportParam implements Serializable {
 
-    @ApiModelProperty("鎵樼洏鐮�")
-    private String barcode;
+    @ApiModelProperty("閫氱煡娴佹按鍙�")
+    private Long id;
 
-    @ApiModelProperty("婧愮珯")
-    private Integer sourceStaNo;
+    @ApiModelProperty("閫氱煡绫诲瀷锛歵ask")
+    private String notifyType;
 
-    @ApiModelProperty("鍙敤鎺�")
-    private List<Integer> rowList;
+    @ApiModelProperty("璁惧鍙�")
+    private String device;
 
-    @ApiModelProperty("搴撲綅绫诲瀷")
-    private Integer locType1;
+    @ApiModelProperty("WCS宸ヤ綔鍙�")
+    private String taskNo;
+
+    @ApiModelProperty("涓婄骇绯荤粺宸ヤ綔鍙�")
+    private String superTaskNo;
+
+    @ApiModelProperty("娑堟伅绫诲瀷锛歵ask_complete銆乼ask_cancel")
+    private String msgType;
+
+    @ApiModelProperty("娑堟伅鎻忚堪")
+    private String msgDesc;
+
+    @ApiModelProperty("娑堟伅鏁版嵁")
+    private String data;
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index 965568f..3670db5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -19,6 +19,7 @@
 import com.vincent.rsf.server.api.controller.erp.params.TaskInParam;
 import com.vincent.rsf.server.api.entity.dto.SyncLocsDto;
 import com.vincent.rsf.server.api.entity.enums.CallBackEvent;
+import com.vincent.rsf.server.api.entity.enums.WcsMsgTypeEvent;
 import com.vincent.rsf.server.api.entity.params.*;
 import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams;
 import com.vincent.rsf.server.manager.enums.*;
@@ -957,7 +958,7 @@
         GenerateTaskParams taskParams = new GenerateTaskParams();
         taskParams.setWaitPakins(waitPakins)
                 .setSiteId(deviceSite.getId());
-        R r = taskService.generateTasksWcs(taskParams, 111L);//lsh寰呬慨鏀�  WCS鐢ㄦ埛淇℃伅
+        R r = taskService.generateTasksWcs(taskParams, 111L,params.getRowList());//lsh寰呬慨鏀�  WCS鐢ㄦ埛淇℃伅
         if (r.get("msg").equals("浠诲姟鐢熸垚瀹屾瘯锛�")) {
             one = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getBarcode()));
             InTaskWcsReportParam inTaskWcsReportParam = new InTaskWcsReportParam();
@@ -973,7 +974,7 @@
     }
 
     /**
-     * WCS鍏ュ簱浠诲姟鐢宠
+     * WCS浠诲姟涓婃姤閫氱煡
      *
      * @return
      */
@@ -982,21 +983,28 @@
         if (Objects.isNull(params)) {
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, params.getBarcode()));
-        if (waitPakins.isEmpty()) {
-            throw new CoolException("鍗曟嵁涓嶅瓨鍦� 锛侊紒");
+        Task one = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, params.getSuperTaskNo()));
+        if (params.getMsgType().equals(WcsMsgTypeEvent.TASK_COMPLETE.event)){
+            if (!Cools.isEmpty(one)) {
+                one.setTaskStatus(one.getTaskType() < 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.AWAIT.id);
+                if (!taskService.updateById(one)) {
+//                    throw new CoolException("瀹屾垚浠诲姟澶辫触");
+                    return R.error("瀹屾垚浠诲姟澶辫触").add(one);
+                }
+                return R.ok("浠诲姟瀹屾垚鎴愬姛").add(one);
+            }
+        } else if (params.getMsgType().equals(WcsMsgTypeEvent.TASK_CANCEL.event)){
+//            if (!Cools.isEmpty(one)) {
+//                one.setTaskStatus(one.getTaskType() < 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.AWAIT.id);
+//                return R.ok("锛�").add(one);
+//            }
+            return R.error("鏆備笉鍏佽鍙栨秷");
         }
-        GenerateTaskParams taskParams = new GenerateTaskParams();
-        taskParams.setWaitPakins(waitPakins)
-                .setSiteId(params.getSourceStaNo().longValue());
-        return R.ok(taskService.generateTasks(taskParams, 111L));
-//        return R.ok("浠诲姟鐢熸垚瀹屾瘯锛�");
-//        log.info(JSONObject.toJSONString(params));
-//        return R.ok(JSONObject.toJSONString(params));
+        return R.error("鏁版嵁寮傚父");
     }
 
     /**
-     * WCS鍏ュ簱浠诲姟鐢宠
+     * WCS鐢宠浠诲姟閲嶆柊鍒嗛厤鍏ュ簱
      *
      * @return
      */
@@ -1019,7 +1027,7 @@
     }
 
     /**
-     * WCS鍏ュ簱浠诲姟鐢宠
+     * WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅
      *
      * @return
      */
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
index ec3f9f7..d148b04 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
@@ -10,7 +10,7 @@
 public interface TaskService extends IService<Task> {
 
     R generateTasks(GenerateTaskParams waitPakin, Long loginUserId);
-    R generateTasksWcs(GenerateTaskParams waitPakin, Long loginUserId);
+    R generateTasksWcs(GenerateTaskParams waitPakin, Long loginUserId,List<Integer> rowList);
 
     R generateFlatWarehouseTasks(WaitPakin waitPakins, String locCode, Long loginUserId);
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 01697b5..cf7d0b9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -448,16 +448,14 @@
 
 
     /**
-     * @param
      * @param loginUserId
-     * @return
      * @author Munch D. Luffy
      * @date 2026/01/10
      * @description: WCS鍏ュ簱浠诲姟鐢宠
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public synchronized R generateTasksWcs(GenerateTaskParams waitPakin, Long loginUserId) {
+    public synchronized R generateTasksWcs(GenerateTaskParams waitPakin, Long loginUserId,List<Integer> rowList) {
         if (Objects.isNull(waitPakin) || waitPakin.getWaitPakins().isEmpty()) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
@@ -490,7 +488,7 @@
                 throw new CoolException("瀹瑰櫒鏈淮鎶ゅ叆搴擄紝璇风淮鎶ゅ悗鍐嶆搷浣滐紒锛�");
             }
             /**鑾峰彇搴撲綅*/
-            String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId(), container.getContainerType());
+            String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId(), container.getContainerType(),rowList);
             if (Cools.isEmpty(targetLoc)) {
                 throw new CoolException("璇ョ珯鐐瑰搴斿簱鍖烘湭鎵惧埌搴撲綅");
             }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
index cfc5abf..974c0b7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
@@ -33,6 +33,25 @@
         return getTargetLoc(areaId, null);
     }
 
+    public static String getTargetLoc(Long areaId, Long containerType,List<Integer> rowList) {
+
+        Long locType = containerType;
+        //TODO 搴撲綅绛栫暐鍚庣画鎺掓湡
+        LocService locService = SpringUtils.getBean(LocService.class);
+        Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
+                .eq(!Objects.isNull(locType), Loc::getType, locType)
+                .eq(Loc::getAreaId, areaId)
+                .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+                .in(Objects.nonNull(rowList) && !rowList.isEmpty(), Loc::getRow, rowList)
+                .orderByAsc(Loc::getLev)
+                .orderByAsc(Loc::getCol)
+                .orderByAsc(Loc::getRow)
+                .last("LIMIT 1")
+        );
+
+        return !Objects.isNull(loc) ? loc.getCode() : null;
+    }
+
     public static String getTargetLoc(Long areaId, Long containerType) {
         Long locType = null;
 //        if (!Objects.isNull(containerType)) {
diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml
index 0c99aef..e097076 100644
--- a/rsf-server/src/main/resources/application.yml
+++ b/rsf-server/src/main/resources/application.yml
@@ -33,7 +33,7 @@
     :banner: false
     db-config:
       id-type: auto
-      logic-delete-value: 1
+      logic-delete-value: 0
       logic-not-delete-value: 0
 
 super:

--
Gitblit v1.9.1