From 7e0d9bcc6d822f3ca959823e45d574d54366689d Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期三, 19 三月 2025 20:31:02 +0800
Subject: [PATCH] 四期

---
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java |  195 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 182 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index aa9a582..c9b9325 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -168,8 +168,8 @@
                             locDto.getCsocode(),
                             locDto.getIsoseq(),
                             locDto.getProcessSts());
-                    OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
-                    AgvLocDetl locDetl = agvLocDetlService.selectItem(wrkMast.getSourceLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
+                    //OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
+                    // AgvLocDetl locDetl = agvLocDetlService.selectItem(wrkMast.getSourceLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
                     // 娴佹按 -- 鏂板璁㈠崟鏄庣粏
 //                    FlowLog flowLog = new FlowLog();
 //                    flowLog.setFid(String.valueOf(flowId));
@@ -227,7 +227,9 @@
             updateAgvLocMast(agvLocMastService.selectById(sourceLocNo), locSts);
             //鏇存柊鐩爣绔欑偣鐘舵��
             //locSts = ioType == 101 ? "S" : "Q";
-            updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo), "S");
+            AgvBasDevp agvBasDevp = agvBasDevpService.selectById(targetLocNo);
+            agvBasDevp.setBarcode("");
+            updateAgvBasDevp(agvBasDevp, "S");
 
         });
     }
@@ -741,7 +743,8 @@
 //                    //agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
 //                }
 //            }
-            agvLocMast = agvCommonService.getLocByLocRule(3, 1, code);
+            // 棰勭暀20涓簱浣�
+            agvLocMast = agvCommonService.getLocByLocRule20(3, 1, code, false);
 
 
             String devNo = agvBasDevp.getDevNo();
@@ -757,6 +760,161 @@
             }
             //鐢熸垚宸ヤ綔妗�
             AgvWrkMast wrkMast = createWrkMastV2(1, 201L, devNo, locNo, containerCode, now, userId, containerType, agvLocMast.getPltType(), ctnNo);
+            //鐢熸垚宸ヤ綔妗f槑缁�
+            long flowId = snowflakeIdWorker.nextId();
+            agvWaitPakinList.forEach(wp -> {
+                createWrkDetlReWrite(wp.getMatnr(), wrkMast.getWrkNo(), wp.getOrderNo(), wp.getBatch(), wp.getAnfme(), wp.getSuppCode(), now, userId, wp.getThreeCode(), wp.getDeadTime(), wp.getProcessSts());
+            });
+            //淇敼鍏ュ簱閫氱煡妗g姸鎬�
+            agvWaitPakinService.updateIoStatus(containerCode, "Y");
+            //鏇存柊婧愮珯鐐圭姸鎬�
+            updateAgvBasDevp(agvBasDevp, "R", containerType);
+        } else {
+            //鏌ヨ宸ヤ綔妗�
+            AgvWrkMast agvWrkMast1 = agvWrkMastService.selectByContainerCode(containerCode);
+            if (!Cools.isEmpty(agvWrkMast1)) {
+                throw new CoolException("褰撳墠璐ф灦宸叉湁鍏ュ簱浠诲姟锛屾棤娉曡繘琛屽叆搴�");
+            }
+            agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), true, true);
+            // 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱
+            createWrkMast(10, 201L, agvBasDevp.getDevNo(), agvLocMast.getLocNo(), containerCode, now, userId, containerType, agvLocMast.getPltType());
+            //鏇存柊婧愮珯鐐圭姸鎬�
+            updateAgvBasDevp(agvBasDevp, "R", containerType, containerCode);
+        }
+
+        //鏇存柊鐩爣搴撲綅鐘舵�佸拰淇℃伅
+        updateAgvLocMast(agvLocMast, "S");
+        return agvLocMast.getLocNo();
+    }
+
+    /*
+  鍏ュ簱
+   */
+    @Transactional
+    public String emptyPlateInV3(String station, String containerCode, Short containerType, Long userId, boolean emptyAutoIn) {
+
+        Date now = new Date();
+
+        Short locType = 0;
+
+        AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station);
+        if (Cools.isEmpty(agvBasDevp)) {
+            throw new CoolException("鏆傛棤" + station + "绔欑偣");
+        }
+        int br = 0;
+        if (containerType == 21 && agvBasDevp.getFloor() == 2) {
+            containerType = 20;
+        }
+        switch (containerType) {
+            case 10:
+                br = 1;
+                break;
+            case 20:
+                br = 2;
+                break;
+            case 21:
+                br = 4;
+                break;
+            case 30:
+                br = 3;
+                break;
+            case 31:
+                br = 6;
+                break;
+            case 40:
+                br = 5;
+                break;
+        }
+        if (br == 4 && agvBasDevp.getLocType1() == 2) {
+            br = 2;
+        }
+        if (agvBasDevp.getLocType1() != br) {
+            throw new CoolException("绔欑偣绫诲瀷鍜岃揣鏋剁被鍨嬩笉绗︼紒");
+        }
+        AtomicReference<String> factory = new AtomicReference<>();
+        if (containerType == 40) {
+            locType = 5;
+        } else if (containerType == 21 && agvBasDevp.getFloor() == 3) {
+            locType = 4;
+        } else if (containerType == 20 && agvBasDevp.getFloor() == 3) {
+            locType = 2;
+        } else if (containerType == 30) {
+            locType = 3;
+        } else if (containerType == 31) {
+            locType = 6;
+        } else {
+            locType = agvBasDevp.getLocType1();
+        }
+
+        if (!Cools.eq(agvBasDevp.getBarcode(), containerCode) && !agvBasDevp.getLocSts().equals("O") && !emptyAutoIn) {
+            throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts() + ",鏃犳硶杩涜鍏ュ簱");
+        }
+
+        //鏌ヨ宸ヤ綔妗�
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(containerCode);
+        if (!Cools.isEmpty(agvWrkMast) && !emptyAutoIn) {
+            throw new CoolException("褰撳墠璐ф灦宸叉湁鍏ュ簱浠诲姟锛屾棤娉曡繘琛屽叆搴�");
+        }
+
+        //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
+        AgvLocMast agvLocMast = new AgvLocMast();
+
+        //鏌ヨ搴撳瓨
+        AgvLocMast locMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode", containerCode));
+        if (!Cools.isEmpty(locMast)) {
+            throw new CoolException("褰撳墠璐ф灦宸插湪搴撳瓨涓紝鏃犳硶杩涜鍏ュ簱");
+        }
+
+        //鏌ヨ鍏ュ簱閫氱煡妗�
+        List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectByContainerCode(containerCode);
+        if (!Cools.isEmpty(agvWaitPakinList)) {
+            AtomicBoolean isCurrLev = new AtomicBoolean(false);
+            agvWaitPakinList.forEach(agvWaitPakin -> {
+                factory.set(OrderUtils.getFactory(agvWaitPakin.getThreeCode()));
+                if (!Cools.isEmpty(agvWaitPakin.getProcessSts())) {
+                    if (agvWaitPakin.getProcessSts() == 1) {
+                        isCurrLev.set(true);
+                    }
+                }
+            });
+
+
+            Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "elevatorTasks"));
+            if (Cools.isEmpty(config)) {
+                if (isCurrLev.get()) {
+                    agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true);
+                } else {
+                    agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false);
+                }
+            } else {
+                if (station.endsWith("F4") && locType == 3) {
+                    agvLocMast = agvCommonService.getLocNoOnXiSuer(locType, 1);
+                } else if (locType == 6) {
+                    agvLocMast = agvCommonService.getLocNoOnXiSuer20(locType, 1);
+                } else {
+                    List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().like("loc_no", "02F1").like("source_loc_no", "F1"));
+                    if (Integer.parseInt(config.getValue()) <= agvWrkMasts.size()) {
+                        agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true);
+                    } else {
+                        if (isCurrLev.get()) {
+                            agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true);
+                        } else {
+                            agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false);
+                        }
+                        //agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false);
+                    }
+                }
+            }
+            if (agvLocMast == null) {
+                throw new CoolException("娌℃湁璇ョ被鍨嬬殑绌哄簱浣嶄簡");
+            }
+
+            String devNo = agvBasDevp.getDevNo();
+            String locNo = agvLocMast.getLocNo();
+
+
+            //鐢熸垚宸ヤ綔妗�
+            AgvWrkMast wrkMast = createWrkMast(1, 201L, devNo, locNo, containerCode, now, userId, containerType, agvLocMast.getPltType());
             //鐢熸垚宸ヤ綔妗f槑缁�
             long flowId = snowflakeIdWorker.nextId();
             agvWaitPakinList.forEach(wp -> {
@@ -803,18 +961,23 @@
         if (!Cools.isEmpty(agvWrkMast)) {
             throw new CoolException("鏈夎揣鏋跺湪寰�绔欑偣鎼繍" + agvBasDevp.getDevNo() + ",鏃犳硶杩涜绌烘澘鍑哄簱");
         }
+        AgvLocMast agvLocMast = null;
+        if (station.startsWith("XI") && station.endsWith("F4") && containerType == 30) {
+            agvLocMast = agvLocMastService.select30EmptyZpallet();
+        } else {
+            //瀵绘壘鐩稿簲绫诲瀷鐨勭┖璐ф灦
+            Integer floor = agvBasDevp.getFloor();
+            if (floor == 4) {
+                floor = 1;
+            }
+            agvLocMast = agvLocMastService.selectEmptyZpallet(containerType, floor);
+            if (containerType == 0) {
+                //绌烘澘鑷姩鍑哄簱锛屾牴鎹珯鐐圭被鍨嬮�夋嫨
+                agvLocMastService.selectEmptyZpalletByLocType1(agvBasDevp.getLocType1());
 
-        //瀵绘壘鐩稿簲绫诲瀷鐨勭┖璐ф灦
-        Integer floor = agvBasDevp.getFloor();
-        if (floor == 4) {
-            floor = 1;
+            }
         }
-        AgvLocMast agvLocMast = agvLocMastService.selectEmptyZpallet(containerType, floor);
-        if (containerType == 0) {
-            //绌烘澘鑷姩鍑哄簱锛屾牴鎹珯鐐圭被鍨嬮�夋嫨
-            agvLocMastService.selectEmptyZpalletByLocType1(agvBasDevp.getLocType1());
 
-        }
 
         if (Cools.isEmpty(agvLocMast)) {
             throw new CoolException("鏆傛棤褰撳墠鍑哄簱绔欑偣绫诲瀷鐨勭┖璐ф灦锛�");
@@ -1189,6 +1352,9 @@
                 if (wrkMast.getIoType() == 112) {
                     throw new CoolException("褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
                 }
+                if (wrkMast.getIoType() == 108 && wrkMast.getWrkSts() >= 204) {
+                    throw new CoolException("婧愬簱浣嶅凡缁忛噴鏀撅紝褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
+                }
                 // 婧愬簱浣�
                 String locNo = wrkMast.getSourceLocNo();
                 // 鐩爣搴撲綅
@@ -1251,6 +1417,9 @@
 
                 // 鍥炴祦鍗曞彇娑�
             } else if (wrkMast.getIoType() == 114) {
+                if (wrkMast.getWrkSts() >= 204) {
+                    throw new CoolException("婧愬簱浣嶅凡缁忛噴鏀撅紝褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
+                }
                 //婧愬簱浣�
                 String locNo = wrkMast.getSourceLocNo();
                 // 鐩爣搴撲綅

--
Gitblit v1.9.1