From a12500e11babc4d2512013a56b0cb900f7f7e3a6 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期一, 17 三月 2025 09:31:33 +0800
Subject: [PATCH] 四期

---
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java |   91 ++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 84 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
index 49d9eee..9af4f46 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -4,6 +4,7 @@
 import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
+import com.zy.asrs.constant.AsrsConstants;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
 import com.zy.asrs.service.*;
@@ -443,7 +444,7 @@
 //            return R.error("褰撳墠搴撲綅涓嶄负鍦ㄥ簱锛屾垨鑰呯┖璐ф灦锛屼笉鏀寔绉诲簱");
 
         // 鏍¢獙妤煎眰
-        if (agvLocMast.getLocType1() != 3) { // 涓嶄负绠卞3鍖哄煙
+        if (agvLocMast.getLocType1() != 3 && agvLocMast.getLocType1() != 6) { // 涓嶄负绠卞3鍖哄煙
             if (agvLocMast.getFloor() != floor) {
                 throw new CoolException("褰撳墠搴撲綅涓嶆敮鎸佽法妤煎眰杞Щ");
             } else {
@@ -455,12 +456,16 @@
                     throw new CoolException("褰撳墠搴撲綅璇烽�夋嫨璋冩嫧鍗曡皟鎷紒");
                 } else if ((agvLocMast.getFloor() == 2 || agvLocMast.getFloor() == 3) && (floor == 1 || floor == 4)) {
                     throw new CoolException("褰撳墠搴撲綅璇烽�夋嫨璋冩嫧鍥炴祦鍗曞洖閫�锛�");
+                } else if (agvLocMast.getFloor() == 1 && agvLocMast.getLev1() == 2 && floor == 4) {
+                    ioType = 11;
                 } else {
                     ioType = 12;
                 }
             } else {
                 if (agvLocMast.getFloor() == 1) {
                     if (agvLocMast.getLev1() == 1 && floor == 1) {
+                        ioType = 11;
+                    } else if (agvLocMast.getLev1() == 2 && floor == 4) {
                         ioType = 11;
                     } else {
                         ioType = 12;
@@ -515,7 +520,7 @@
         //璐ф灦缂栫爜
         mast.setBarcode(agvLocMast.getBarcode());
         //璐ф灦绫诲瀷
-        mast.setWhsType(30);
+        mast.setWhsType(Integer.parseInt(agvLocMast.getBarcode().substring(0, 2)));
 
         mast.setAppeUser(userId);
         mast.setAppeTime(now);
@@ -665,7 +670,7 @@
             throw new CoolException("闈炴墜鍔ㄨ皟鎷ㄤ换鍔★紝涓嶆敮鎸佹鍔熻兘");
         }
         if (!Cools.isEmpty(agvWrkMast.getSourceLocNo())) {
-            throw new CoolException("褰撳墠璐ф灦鐮佷换鏈夋簮搴撲綅锛岃纭");
+            throw new CoolException("褰撳墠璐ф灦鐮佹湁婧愬簱浣嶏紝璇风‘璁�");
         }
         AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(param.getDevNo());
         if (Cools.isEmpty(agvWrkMast)) {
@@ -766,7 +771,7 @@
     public String handBack(AgvMobileStartPakin param, Long userId) {
         Date now = new Date();
         AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo()));
-        if (agvWrkMast == null){
+        if (agvWrkMast == null) {
             throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�");
         }
         agvWrkMast.setIoType(113);
@@ -797,7 +802,8 @@
         agvWrkDetlLogService.save(agvWrkMast.getWrkNo());
         String sourceLocNo = agvWrkMast.getSourceLocNo();
         AgvLocMast newLocMast = agvCommonService.getLocNo(3, 1, false, false);
-        if (newLocMast==null){
+        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode()));
+        if (newLocMast == null) {
             throw new CoolException("鏃犲彲鐢ㄥ簱浣�");
         }
         agvWrkMast.setSourceLocNo(agvWrkMast.getLocNo());
@@ -819,7 +825,6 @@
         agvLocMastService.updateLocStsByLocNo(sourceLocNo, "O", "", (short) 30);
         agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocNo));
 
-        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode()));
         agvWrkDetls.forEach(agvWrkDetl -> {
             for (AgvWrkDetl wrkDetl : param.getWrkDetls()) {
                 if (wrkDetl.getMatnr().equals(agvWrkDetl.getMatnr()) && wrkDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())) {
@@ -842,6 +847,77 @@
         return "ok";
     }
 
+    /*
+     * 纭鍔犲伐瀹屾垚
+     */
+    @Override
+    @Transactional
+    public String processedV2(AgvMobileStartPakin param, Long userId) {
+        Date now = new Date();
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode()).eq("loc_no", param.getDevNo()));
+        if (Cools.isEmpty(agvWrkMast)) {
+            throw new CoolException("鏆傛棤褰撳墠璐ф灦鐨勫伐浣滄。");
+        }
+        if (agvWrkMast.getWrkSts() != 205) {
+            throw new CoolException("褰撳墠浠诲姟鏈畬鎴愶紝璇风‘璁�");
+        }
+        //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+        agvWrkMastLogService.save(agvWrkMast);
+        agvWrkDetlLogService.save(agvWrkMast.getWrkNo());
+        String sourceLocNo = agvWrkMast.getSourceLocNo();
+        // TODO: 鍥涙湡
+        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode()));
+        String factory = param.getFactory();
+        AgvLocMast newLocMast = agvCommonService.getLocByLocRule20(3, 1, factory, false);
+        if (newLocMast == null) {
+            throw new CoolException("鏃犲彲鐢ㄥ簱浣�");
+        }
+        agvWrkMast.setSourceLocNo(agvWrkMast.getLocNo());
+        agvWrkMast.setLocNo(newLocMast.getLocNo());
+        agvWrkMast.setIoType(57);
+        agvWrkMast.setWrkSts(201L);
+        agvWrkMast.setModiUser(userId);
+        agvWrkMast.setModiTime(now);
+        agvWrkMast.setIoTime(now);
+        // 鎵撴爣璁帮紝鑻ュ簱浣嶄笉澶燂紝鍏ュ簱鍒板埆鐨勬ゼ灞傦紝閭d箞闇�瑕佽法灞傜Щ搴�
+        if (!Cools.isEmpty(factory)) {
+            if (newLocMast.getLev1() == 1 && !factory.equals(AsrsConstants.SANCHANG)) {
+                agvWrkMast.setCtnNo("1");
+            } else if (newLocMast.getLev1() == 2 && !factory.equals(AsrsConstants.ERCHANG)) {
+                agvWrkMast.setCtnNo("2");
+            }
+        }
+        if (!agvWrkMastService.update(agvWrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", agvWrkMast.getWrkNo()))) {
+            throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+        }
+
+        // 鏇存柊婧愮珯鐐� + 鐩爣搴撲綅鐘舵�� + 鍘嗗彶婧愬簱浣�
+        agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(), "R", param.getBarcode(), agvWrkMast.getWhsType().shortValue());
+        agvLocMastService.updateLocStsByLocNo(newLocMast.getLocNo(), "S", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+        agvLocMastService.updateLocStsByLocNo(sourceLocNo, "O", "", (short) 30);
+        agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocNo));
+
+        agvWrkDetls.forEach(agvWrkDetl -> {
+            for (AgvWrkDetl wrkDetl : param.getWrkDetls()) {
+                if (wrkDetl.getMatnr().equals(agvWrkDetl.getMatnr()) && wrkDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())) {
+                    agvWrkDetl.setAnfme(wrkDetl.getAnfme());
+                    break;
+                }
+            }
+            agvWrkDetl.setProcessSts(2);
+            agvWrkDetl.setOrderNo(agvWrkDetl.getOrderNo().substring(2));
+            agvWrkDetl.setModiUser(userId);
+            agvWrkDetl.setModiTime(now);
+            agvWrkDetl.setIoTime(now);
+            if (!agvWrkDetlService.update(agvWrkDetl, new EntityWrapper<AgvWrkDetl>()
+                    .eq("matnr", agvWrkDetl.getMatnr())
+                    .eq("three_code", agvWrkDetl.getThreeCode())
+                    .eq("supp_code", param.getBarcode()))) {
+                throw new CoolException("鏇存柊宸ヤ綔鏄庣粏澶辫触");
+            }
+        });
+        return "ok";
+    }
 
     /*
      * 绔欑偣鍥為��
@@ -905,7 +981,8 @@
             } else {
                 orderDetl = orderDetls.get(0);
             }
-            orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+            double v = orderDetl.getQty() - agvWrkDetl.getAnfme();
+            orderDetl.setQty(v < 0 ? 0 : v);
             if (!orderDetlService.updateById(orderDetl)) {
                 throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + orderDetl.getOrderNo() + orderDetl.getMatnr());
             }

--
Gitblit v1.9.1