From 285deae97a62db611ee2485d3940e24307594f2a Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 22 九月 2025 20:09:42 +0800
Subject: [PATCH] 数据结构修改 任务工作档修改 组托工作档修改

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  148 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 140 insertions(+), 8 deletions(-)

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 12c145f..9048fa9 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -8,6 +8,7 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
+import com.zy.asrs.enums.LocStsType;
 import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
@@ -96,6 +97,8 @@
 
     @Resource
     private OrderDetlPakoutService orderDetlPakoutService;
+    @Autowired
+    private LocCacheService locCacheService;
 
     @Override
     @Transactional
@@ -118,8 +121,8 @@
         wrkMast.setIoType(8); // 鍏ュ嚭搴撶姸鎬侊細8.鎷f枡閫斾腑骞舵澘
         wrkMast.setIoPri(13D); // 浼樺厛绾�
         wrkMast.setCrnNo(1);
-        wrkMast.setSourceStaNo(1);
-        wrkMast.setStaNo(1);
+        wrkMast.setSourceStaNo(1 + "");
+        wrkMast.setStaNo(1 + "");
         wrkMast.setLocNo(param.getLocNo());
         wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
@@ -245,8 +248,8 @@
         wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細101.鐢熸垚鍑哄簱
         wrkMast.setIoType(104); // 鍏ュ嚭搴撶姸鎬�
         wrkMast.setIoPri(13D); // 浼樺厛绾э細13
-        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
-        wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+        wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
+        wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
         wrkMast.setSourceLocNo(param.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("Y"); // 鎷f枡
@@ -379,8 +382,8 @@
                 wrkMast.setIoType(108); // 鍏ュ嚭搴撶姸鎬侊細鍑哄簱锛屾嫞鏂欏叆搴�
                 wrkMast.setIoPri(13D); // 浼樺厛绾�
                 wrkMast.setCrnNo(1);
-                wrkMast.setSourceStaNo(1);
-                wrkMast.setStaNo(1);
+                wrkMast.setSourceStaNo(1 + "");
+                wrkMast.setStaNo(1 + "");
                 wrkMast.setSourceLocNo(combParam.getLocNo());
                 wrkMast.setBarcode(combParam.getBarcode()); // 鎵樼洏鐮�
                 wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
@@ -650,6 +653,7 @@
                 BeanUtils.copyProperties(mat, waitPakin);
 //                waitPakin.sync(mat);
                 waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
+                waitPakin.setOrderId(order.getId());
                 waitPakin.setBatch(detlDto.getBatch());     // 搴忓垪鐮�
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
                 waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
@@ -1072,8 +1076,8 @@
         wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
         wrkMast.setIoPri(13D); // 浼樺厛绾э細13
         wrkMast.setCrnNo(locMast.getCrnNo());
-        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
-        wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+        wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
+        wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
         wrkMast.setSourceLocNo(locDetl.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
@@ -1116,4 +1120,132 @@
             throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
         }
     }
+
+    /**
+     * @author Ryan
+     * @date 2025/9/22
+     * @description: 鑾峰彇缂撳啿鍖哄簱浣嶄俊鎭�
+     * @version 1.0
+     */
+    @Override
+    public R getCacheLocs() {
+        return R.ok().add(locCacheService.selectList(new EntityWrapper<LocCache>()
+                .eq("frozen", 0)
+                .ne("full_plt", "Y")
+                .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type).orderAsc(Arrays.asList("row1"))));
+
+    }
+
+    /**
+     * @author Ryan
+     * @date 2025/9/22
+     * @description: 鍛煎彨AGV鎼繍
+     * @version 1.0
+     */
+    @Override
+    public R callAgvMove(AgvCallParams params, Long userId) {
+        if (Objects.isNull(params.getTarSite())) {
+            throw new CoolException("鐩爣鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(params.getOrgSite())) {
+            throw new CoolException("婧愮珯鐐逛笉鑳戒负绌猴紒锛�");
+        }
+        LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>()
+                .eq("frozen", 0)
+                .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+                .eq("loc_no", params.getTarSite())
+                .orderAsc(Arrays.asList("loc_no"))
+                .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+        if (Objects.isNull(locCache)) {
+            throw new CoolException("璇锋鏌ョ洰鏍囧簱浣嶆槸鍚﹂棽缃腑锛侊紒");
+        }
+
+        generateAgvTask("agv", locCache, params.getOrgSite(), params.getBarcode(), userId);
+
+        return R.ok();
+    }
+
+    /**
+     * @author Ryan
+     * @date 2025/9/22
+     * @description: 鐢熸垚AGV鎼繍浠诲姟
+     * @version 1.0
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void generateAgvTask(String type, LocCache loc, String orgSite, String barcode, Long userId) {
+        WaitPakin pakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
+        if (Objects.isNull(pakin)) {
+            throw new CoolException("缁勬墭淇℃伅涓嶅瓨鍦紒锛�");
+        }
+        OrderPakin orderPakin = orderPakinService.selectById(pakin.getOrderId());
+        if (Objects.isNull(orderPakin)) {
+            throw new CoolException("鍗曟嵁涓嶈兘涓虹┖锛侊紒");
+        }
+
+        List<OrderDetlPakin> detls = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_id", pakin.getOrderId()));
+        if (Objects.isNull(detls) || detls.isEmpty()) {
+            throw new CoolException("鏁版嵁閿欒锛氬崟鎹槑缁嗕笉瀛樺湪锛侊紒");
+        }
+
+        Date now = new Date();
+        // 鑾峰彇宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+        // 淇濆瓨宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+        wrkMast.setTaskType("agv");
+        wrkMast.setIoPri(10D);
+        wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setSourceStaNo(orgSite);
+        wrkMast.setEmptyMk(loc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+        wrkMast.setBarcode(barcode); // 鎵樼洏鐮�
+        wrkMast.setLinkMis("N");
+        wrkMast.setAppeUser(userId);
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+        if (!wrkMastService.insert(wrkMast)) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+
+        List<WrkDetl> taskDetls = new ArrayList<>();
+        detls.forEach(detl -> {
+            WrkDetl wrkDetl = new WrkDetl();
+            BeanUtils.copyProperties(detl, wrkDetl);
+            wrkDetl.setWrkNo(workNo)
+                    .setIoTime(new Date())
+                    .setAnfme(detl.getAnfme())
+                    .setZpallet(pakin.getZpallet())
+                    .setBatch(detl.getBatch())
+                    .setMatnr(detl.getMatnr())
+                    .setMaktx(detl.getMaktx())
+                    .setAppeUser(userId)
+                    .setUnit(detl.getUnit())
+                    .setModel(detl.getModel())
+                    .setAppeTime(new Date())
+                    .setModiUser(userId);
+            taskDetls.add(wrkDetl);
+        });
+        //淇濆瓨宸ヤ綔妗f槑缁�
+        if (!wrkDetlService.insertBatch(taskDetls)) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+        }
+        // 淇敼鐩爣搴撲綅鐘舵��
+        if (loc.getLocSts().equals("O")) {
+            loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+            loc.setModiTime(now);
+            loc.setModiUser(userId);
+            if (!locCacheService.updateById(loc)) {
+                throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
+        }
+    }
 }

--
Gitblit v1.9.1