From 6df97fba67b0e0698a02673e65c6eca00879d5be Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 05 十二月 2025 08:16:44 +0800
Subject: [PATCH] #出库单

---
 src/main/java/com/zy/asrs/entity/WaitPakinLog.java                 |    2 
 src/main/java/com/zy/asrs/entity/WaitPakin.java                    |    5 +
 src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java        |   26 +++++
 src/main/java/com/zy/asrs/entity/TaskDetlLog.java                  |    3 
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java        |   36 +++++++
 src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java     |    2 
 src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java |    2 
 src/main/webapp/static/js/task/task.js                             |    6 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java      |  150 +++++++++++++++++++++---------
 src/main/java/com/zy/asrs/controller/MobileController.java         |   12 ++
 src/main/java/com/zy/asrs/service/MobileService.java               |    5 
 11 files changed, 196 insertions(+), 53 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index cca516c..05cbd57 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -64,7 +64,7 @@
     @PostMapping("/agv/callEmptyCar")
     @ManagerAuth
     public R pdaAgvFinishedCall(@RequestBody AgvCallParams params){
-        return mobileService.callEmptyCar(params);
+        return mobileService.callEmptyCar(params, getUserId());
     }
 
     @RequestMapping("/pda/WarehouseOut/v1")
@@ -173,6 +173,16 @@
         return mobileService.callAgvMove(params, getUserId());
     }
 
+    @PostMapping("/collection/agv/call")
+    @ApiOperation("闆嗚揣鍖哄叆搴�")
+    @ManagerAuth
+    public R CollectionInCall(@RequestBody AgvCallParams params) {
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return mobileService.collectionInCall(params, getUserId());
+    }
+
 
     /**
      * @author Ryan
diff --git a/src/main/java/com/zy/asrs/entity/TaskDetlLog.java b/src/main/java/com/zy/asrs/entity/TaskDetlLog.java
index 52bb660..bf7ecb5 100644
--- a/src/main/java/com/zy/asrs/entity/TaskDetlLog.java
+++ b/src/main/java/com/zy/asrs/entity/TaskDetlLog.java
@@ -1,5 +1,7 @@
 package com.zy.asrs.entity;
 
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
 import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -26,6 +28,7 @@
 
     private static final long serialVersionUID = 1L;
 
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     @TableField("log_id")
diff --git a/src/main/java/com/zy/asrs/entity/WaitPakin.java b/src/main/java/com/zy/asrs/entity/WaitPakin.java
index 51002e4..f4ea6f9 100644
--- a/src/main/java/com/zy/asrs/entity/WaitPakin.java
+++ b/src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -1,7 +1,9 @@
 package com.zy.asrs.entity;
 
 import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
 import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.SpringUtils;
@@ -21,6 +23,9 @@
 
     private static final long serialVersionUID = 1L;
 
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
     @ApiModelProperty(value= "鎵樼洏鏉$爜")
     private String zpallet;
 
diff --git a/src/main/java/com/zy/asrs/entity/WaitPakinLog.java b/src/main/java/com/zy/asrs/entity/WaitPakinLog.java
index d8c7306..5b3e4c6 100644
--- a/src/main/java/com/zy/asrs/entity/WaitPakinLog.java
+++ b/src/main/java/com/zy/asrs/entity/WaitPakinLog.java
@@ -20,6 +20,8 @@
 
     private static final long serialVersionUID = 1L;
 
+    private Long id;
+
     @ApiModelProperty(value= "鎵樼洏鏉$爜")
     private String zpallet;
 
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index f1d2985..b292777 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -9,7 +9,6 @@
 import com.zy.asrs.entity.param.*;
 
 import java.util.Date;
-import java.util.Map;
 
 public interface MobileService {
 
@@ -110,5 +109,7 @@
      */
     void generateCRNOutTask(LocCache locCaches);
 
-    R callEmptyCar(AgvCallParams params);
+    R callEmptyCar(AgvCallParams params, Long userId);
+
+    R collectionInCall(AgvCallParams params, Long userId);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 2f151ef..3648224 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -13,7 +13,6 @@
 import com.zy.asrs.entity.result.HIKResultDTO;
 import com.zy.asrs.enums.LocAreaType;
 import com.zy.asrs.enums.LocStsType;
-import com.zy.asrs.enums.OrderSettle;
 import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
@@ -1283,25 +1282,68 @@
     }
 
     @Override
-    public R callEmptyCar(AgvCallParams params) {
-        List<LocCache> locSts = locCacheService.selectList(new EntityWrapper<LocCache>().eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type));
-        if (locSts.isEmpty()){
+    public R callEmptyCar(AgvCallParams params, Long userId) {
+
+        BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("name", params.getOrgSite()));
+
+
+        List<LocCache> locCaches = locCacheService.selectList(new EntityWrapper<LocCache>()
+                .eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type)
+                .eq("area_id", basAreas.getId())
+        );
+        if (locCaches.isEmpty()){
             throw new CoolException("鏆傛棤绌烘澘搴撲綅");
         }
 
-        HIKApiDTO hikApiDTO =new HIKApiDTO()
-                .setOrg(locSts.get(0).getLocNo())
-                .setOrgType("05")
-                .setTar(params.getTarSite())
-                .setTarType("05")
-                .setTaskType("GT5")
-                .setPriority("1")
-                .setCtnrType("2")
-                ;
-        HIKResultDTO hikResultDTO = sendAgvTask(hikApiDTO, HIKApiConstant.AGV_CALL_IN_PATH);
-        if (!hikResultDTO.isSuccess()){
-            return R.error(hikResultDTO.getMessage());
+        BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
+                .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+                .eq("dev_no", params.getTarSite()));
+        if (Objects.isNull(station)) {
+            throw new CoolException("绔欑偣姝e湪鎵ц浠诲姟锛侊紒");
         }
+        generateCacheOutTask(station, locCaches.get(0), userId);
+
+
+//        HIKApiDTO hikApiDTO =new HIKApiDTO()
+//                .setOrg(locCaches.get(0).getLocNo())
+//                .setOrgType("05")
+//                .setTar(params.getTarSite())
+//                .setTarType("05")
+//                .setTaskType("GT5")
+//                .setPriority("1")
+//                .setCtnrType("2")
+//                ;
+//        HIKResultDTO hikResultDTO = sendAgvTask(hikApiDTO, HIKApiConstant.AGV_CALL_IN_PATH);
+//        if (!hikResultDTO.isSuccess()){
+//            return R.error(hikResultDTO.getMessage());
+//        }
+
+        return R.ok();
+    }
+
+    @Override
+//    @Transactional(rollbackFor = Exception.class)
+    public R collectionInCall(AgvCallParams params, Long userId) {
+        if (Objects.isNull(params.getOrgSite())) {
+            throw new CoolException("婧愮珯鐐逛笉鑳戒负绌猴紒锛�");
+        }
+
+        List<Task> tasks = taskService.selectList(new EntityWrapper<Task>().eq("barcode", params.getBarcode()));
+        if (!tasks.isEmpty()){
+            throw new CoolException("鎵樼洏鐮佸凡鐢熸垚浠诲姟");
+        }
+
+        BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("name", params.getTarSite()));
+
+        List<LocCache> locCaches = locCacheService.selectList(new EntityWrapper<LocCache>()
+                .in("loc_sts", LocStsType.LOC_STS_TYPE_O.type, LocStsType.LOC_STS_TYPE_D.type)
+                .eq("area_id", basAreas.getId())
+        );
+        if (locCaches.isEmpty()) {
+            throw new CoolException("褰撳墠鏆傛棤绌哄簱浣嶏紒锛�");
+        }
+
+        generateAgvTask("agv", locCaches.get(0), params.getOrgSite(), params.getBarcode(), userId);
 
         return R.ok();
     }
@@ -1356,10 +1398,10 @@
         task.setWrkNo(workNo)
                 .setIoTime(new Date())
                 .setWrkSts(11L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-                .setIoType(101) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+                .setIoType(loc.getLocSts().equals("D") ? 110 : 101) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
                 .setTaskType("agv")
                 .setIoPri(10D)
-                .setFullPlt("Y") // 婊℃澘锛歒
+                .setFullPlt(loc.getLocSts().equals("D") ? "N" : "Y") // 婊℃澘锛歒
                 .setPicking("N") // 鎷f枡
                 .setExitMk("N")// 閫�鍑�
                 .setStaNo(station.getDevNo())
@@ -1375,35 +1417,32 @@
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
         List<LocDetl> detls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_id", loc.getId()));
-        if (Objects.isNull(detls) || detls.isEmpty()) {
-            throw new CoolException("鏁版嵁閿欒锛氬簱浣嶆槑缁嗕负绌猴紒锛�");
+        if (!detls.isEmpty()) {
+            List<TaskDetl> taskDetls = new ArrayList<>();
+            detls.forEach(pakin -> {
+                TaskDetl wrkDetl = new TaskDetl();
+                BeanUtils.copyProperties(pakin, wrkDetl);
+                wrkDetl.setWrkNo(workNo)
+                        .setIoTime(new Date())
+                        .setOrderNo(pakin.getOrderNo())
+                        .setAnfme(pakin.getAnfme())
+                        .setZpallet(pakin.getZpallet())
+                        .setBatch(pakin.getBatch())
+                        .setMatnr(pakin.getMatnr())
+                        .setMaktx(pakin.getMaktx())
+                        .setAppeUser(userId)
+                        .setUnit(pakin.getUnit())
+                        .setModel(pakin.getModel())
+                        .setAppeTime(new Date())
+                        .setModiUser(userId);
+                taskDetls.add(wrkDetl);
+            });
+            //淇濆瓨宸ヤ綔妗f槑缁�
+            if (!taskDetlService.insertBatch(taskDetls)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+            }
         }
-        List<TaskDetl> taskDetls = new ArrayList<>();
-        detls.forEach(pakin -> {
-            TaskDetl wrkDetl = new TaskDetl();
-            BeanUtils.copyProperties(pakin, wrkDetl);
-            wrkDetl.setWrkNo(workNo)
-                    .setIoTime(new Date())
-                    .setOrderNo(pakin.getOrderNo())
-                    .setAnfme(pakin.getAnfme())
-                    .setZpallet(pakin.getZpallet())
-                    .setBatch(pakin.getBatch())
-                    .setMatnr(pakin.getMatnr())
-                    .setMaktx(pakin.getMaktx())
-                    .setAppeUser(userId)
-                    .setUnit(pakin.getUnit())
-                    .setModel(pakin.getModel())
-                    .setAppeTime(new Date())
-                    .setModiUser(userId);
-            taskDetls.add(wrkDetl);
-        });
 
-
-
-        //淇濆瓨宸ヤ綔妗f槑缁�
-        if (!taskDetlService.insertBatch(taskDetls)) {
-            throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-        }
 
         loc.setLocSts(LocStsType.LOC_STS_TYPE_R.type);
         loc.setModiUser(userId);
@@ -1488,6 +1527,13 @@
         if (!taskDetlService.insertBatch(taskDetls)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
         }
+
+        pakins.forEach(pakin -> {pakin.setIoStatus("Y");});
+
+        if (!waitPakinService.updateBatchById(pakins)) {
+            throw new CoolException("鏇存柊缁勬墭淇℃伅澶辫触");
+        }
+
         // 淇敼鐩爣搴撲綅鐘舵��
         if (loc.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
             loc.setLocSts(LocStsType.LOC_STS_TYPE_S.type); // S.鍏ュ簱棰勭害
@@ -1499,6 +1545,20 @@
         } else {
             throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
         }
+
+        // 淇敼鐩爣绔欑偣淇℃伅
+        BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", orgSite));
+        if (station.getLocSts().equals("O")) {
+            station.setLocSts("R"); // S.鍏ュ簱棰勭害
+            station.setBarcode(barcode);
+            station.setModiTime(new Date());
+            station.setModiUser(userId);
+            if (!basStationService.updateById(station)) {
+                throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + station.getLocSts());
+        }
     }
 
 
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java
index 5c2334e..6dceeaa 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskDetlLogServiceImpl.java
@@ -42,6 +42,6 @@
                 throw new CoolException("宸ヤ綔妗f槑缁嗗巻鍙蹭繚瀛樺け璐ワ紒锛�");
             }
         });
-        return false;
+        return true;
     }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java
index cd66568..2c49ee8 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskLogServiceImpl.java
@@ -44,6 +44,6 @@
             throw new CoolException("浠诲姟鏃ュ織淇濆瓨澶辫触锛侊紒");
         }
 
-        return false;
+        return true;
     }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
index a983123..9d075f5 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -34,6 +34,8 @@
     private TaskService taskService;
     @Autowired
     private TaskDetlLogService taskDetlLogService;
+    @Autowired
+    private BasStationService basStationService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -154,6 +156,18 @@
                 locMast.setModiUser(userId);
                 locCacheService.updateById(locMast);
             }
+
+            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getSourceStaNo()));
+            if (station.getLocSts().equals("R")) {
+                station.setLocSts(wrkMast.getIoType().equals(1)?"F":"D");
+                station.setModiTime(new Date());
+                station.setModiUser(userId);
+                if (!basStationService.updateById(station)) {
+                    throw new CoolException("鏇存柊婧愮珯鐐圭姸鎬佸け璐�");
+                }
+            } else {
+                throw new CoolException("鏇存柊婧愮珯鐐圭姸鎬佸け璐ワ紝鐩爣搴撲綅鐘舵�侊細" + station.getLocSts());
+            }
             // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
         } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
             locNo = wrkMast.getSourceLocNo();
@@ -176,6 +190,18 @@
                 locMast.setModiUser(userId);
                 locCacheService.updateById(locMast);
             }
+
+            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getStaNo()));
+            if (station.getLocSts().equals("S")) {
+                station.setLocSts("O");
+                station.setModiTime(new Date());
+                station.setModiUser(userId);
+                if (!basStationService.updateById(station)) {
+                    throw new CoolException("鏇存柊婧愮珯鐐圭姸鎬佸け璐�");
+                }
+            } else {
+                throw new CoolException("鏇存柊婧愮珯鐐圭姸鎬佸け璐ワ紝鐩爣搴撲綅鐘舵�侊細" + station.getLocSts());
+            }
         } else {
             throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
         }
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index d72be91..ef6f47d 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -786,6 +786,42 @@
             if (!taskService.updateById(task)) {
                 throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
             }
+        } else if (task.getIoType().equals(110)) {
+            Date now = new Date();
+            LocCache locMast = locCacheService
+                    .selectOne(new EntityWrapper<LocCache>().eq("loc_no", task.getSourceLocNo()));
+            if (Objects.isNull(locMast)) {
+                throw new RuntimeException("鏁版嵁閿欒锛氬簱浣嶄俊鎭笉鑳戒负绌猴紒锛�");
+            }
+            // 淇敼婧愬簱浣嶇姸鎬� R ===>> O
+            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
+                locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+                locMast.setBarcode("");
+                locMast.setModiTime(now);
+                locMast.setIoTime(now);
+                if (!locCacheService.updateById(locMast)) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + task.getWrkNo() + "],[locNo="
+                            + task.getSourceLocNo() + "]");
+                }
+            } else {
+                throw new CoolException("褰撳墠搴撲綅鐘舵��" + locMast.getLocSts() + ", 鏃犳硶鎵ц鍑哄簱鎿嶄綔锛侊紒");
+            }
+
+            BasStation devNo = basStationService
+                    .selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo()));
+            if (Objects.isNull(devNo)) {
+                throw new CoolException("绔欑偣锛�" + task.getSourceStaNo() + ", 涓嶅瓨鍦紒锛�");
+            }
+            devNo.setLocSts(LocStsType.LOC_STS_TYPE_D.type);
+            devNo.setModiTime(new Date());
+            if (!basStationService.updateById(devNo)) {
+                throw new CoolException("绔欑偣淇℃伅淇敼澶辫触锛侊紒");
+            }
+            task.setWrkSts(15L);
+            if (!taskService.updateById(task)) {
+                throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+            }
         } else {
 
         }
diff --git a/src/main/webapp/static/js/task/task.js b/src/main/webapp/static/js/task/task.js
index 6235ea8..3b86c71 100644
--- a/src/main/webapp/static/js/task/task.js
+++ b/src/main/webapp/static/js/task/task.js
@@ -171,7 +171,7 @@
                         title: '宸ヤ綔鍙凤細' + data.wrkNo,
                         shadeClose: true
                     }, function () {
-                        http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 2}, function (res) {
+                        http.post(baseUrl + "/task/control", {workNo: data.wrkNo, type: 2}, function (res) {
                             $(".layui-laypage-btn")[0].click();
                             layer.msg(data.wrkNo + res.msg);
                         })
@@ -182,7 +182,7 @@
                         title: '宸ヤ綔鍙凤細' + data.wrkNo,
                         shadeClose: true
                     }, function () {
-                        http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 2}, function (res) {
+                        http.post(baseUrl + "/task/control", {workNo: data.wrkNo, type: 2}, function (res) {
                             $(".layui-laypage-btn")[0].click();
                             layer.msg(data.wrkNo + res.msg);
                         })
@@ -193,7 +193,7 @@
             //  鎷f枡鍏ュ簱
             case 'pick':
                 layer.confirm('鎷f枡鍏ュ簱璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細' + data.wrkNo, shadeClose: true}, function () {
-                    http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 3}, function (res) {
+                    http.post(baseUrl + "/task/control", {workNo: data.wrkNo, type: 3}, function (res) {
                         $(".layui-laypage-btn")[0].click();
                         layer.msg(data.wrkNo + res.msg);
                     })

--
Gitblit v1.9.1