From 987149c095fe4527e26c10f8905689fdf1a38456 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期三, 22 五月 2024 08:03:10 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java |  144 +++++++++++++++++++++++++++++++++++++----------
 1 files changed, 112 insertions(+), 32 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 57ee21d..ada69ea 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -11,6 +11,7 @@
 import com.zy.asrs.service.*;
 import com.zy.common.model.DetlDto;
 import com.zy.common.service.AgvCommonService;
+import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -77,6 +78,11 @@
         //妫�鏌ュ簱瀛樻槸鍚︽湁鐩稿悓鏂欑锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父
         if(!Cools.isEmpty(agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("supp_code",param.getBarcode())))){
             throw new CoolException(param.getBarcode() + "鏂欑鐮佸凡瀛樺湪AGV搴撳瓨鏄庣粏涓�");
+        }
+
+        //妫�鏌ュ簱瀛樻槸鍚︽湁鐩稿悓鏂欑锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父
+        if(!Cools.isEmpty(agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode",param.getBarcode())))){
+            throw new CoolException(param.getBarcode() + "鏂欑鐮佸凡瀛樺湪AGV搴撳瓨涓绘。涓�");
         }
 
         //鏌ョ湅宸ヤ綔妗f槸鍚︽湁鐩稿悓鏂欑锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父
@@ -454,56 +460,41 @@
     */
     @Override
     @Transactional
+    @Synchronized
     public String allocationOut(AgvMobileStartPakin param, Long userId) {
         Date now = new Date();
         AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo()));
+        Integer oldWrkNo = agvWrkMast.getWrkNo();
         if (Cools.isEmpty(agvWrkMast)) {
             throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�");
         }
+
         //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
         agvWrkMastLogService.save(agvWrkMast);
         agvWrkDetlLogService.save(agvWrkMast.getWrkNo());
-
+        //鍒犻櫎AGV宸ヤ綔妗�
+        agvWrkMastService.deleteById(agvWrkMast);
         //鐢熸垚宸ヤ綔妗�
-        AgvWrkMast mast = new AgvWrkMast();
-        //宸ヤ綔鐘舵��
-        mast.setWrkSts(210L);
-        //鍏ュ嚭搴撶被鍨�
-        mast.setIoType(111);
-        mast.setIoTime(now);
-        //浼樺厛绾�
-        mast.setIoPri(300.0);
-        //婧愮珯鐐�
-        mast.setSourceLocNo("");
-        //鐩爣绔欑偣
-        mast.setLocNo("");
-        //瀹瑰櫒缂栫爜
-        mast.setBarcode(agvWrkMast.getBarcode());
-        //瀹瑰櫒绫诲瀷
-        mast.setWhsType(30);
-        // 鐩爣妤煎眰
-        mast.setPauseMk(agvWrkMast.getPauseMk());
-        mast.setAppeUser(userId);
-        mast.setAppeTime(now);
-        mast.setModiUser(userId);
-        mast.setModiTime(now);
-        if (!agvWrkMastService.insertByIncrease(mast)) {
-            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-        }
+        AgvWrkMast wrkMast = createWrkMast(111, 210L, "", "", agvWrkMast.getBarcode(), now, userId, 30, agvWrkMast.getCrnNo());
         // 鏇存柊宸ヤ綔鏄庣粏
-        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode()));
         for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
-            agvWrkDetl.setWrkNo(mast.getWrkNo());
-            if (!agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode()))) {
-                throw new CoolException("鏇存柊宸ヤ綔鏄庣粏澶辫触");
+            agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
+            // 淇濇寔宸ヤ綔妗f槑缁�
+            agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
+            agvWrkDetl.setModiUser(userId);
+            agvWrkDetl.setModiTime(now);
+            if (!agvWrkDetlService.insert(agvWrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
             }
         }
         // 鏇存柊绔欑偣鐘舵��
         agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
         // 鏇存柊婧愬簱浣嶇姸鎬�
         agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
-        //鍒犻櫎AGV宸ヤ綔妗�
-        agvWrkMastService.deleteById(agvWrkMast);
+
+        //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+        agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",oldWrkNo));
         return "ok";
     }
     /*
@@ -514,8 +505,12 @@
     public String allocationIn(AgvMobileStartPakin param, Long userId) {
         Date now = new Date();
         AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode()));
+        AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(param.getDevNo());
         if (Cools.isEmpty(agvWrkMast)) {
             throw new CoolException("宸ヤ綔妗d腑娌℃湁姝よ揣鏋朵换鍔�");
+        }
+        if (agvWrkMast.getCrnNo() != agvBasDevp.getFloor()) {
+            throw new CoolException("璇风Щ鍔ㄥ埌->" + agvWrkMast.getCrnNo() + "妤煎叆搴撶偣鍏ュ簱");
         }
         //宸ヤ綔鐘舵��
         agvWrkMast.setWrkSts(211L);
@@ -533,6 +528,54 @@
         return "ok";
     }
     /*
+     * 绔欑偣鍥為��
+    */
+    @Override
+    @Transactional
+    public String doBack(AgvMobileStartPakin param, Long userId) {
+        Date now = new Date();
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo()));
+        Integer oldWrkNo = agvWrkMast.getWrkNo();
+        if (!agvWrkMast.getBarcode().equals(param.getBarcode())) {
+            throw new CoolException("鍥為��浠诲姟鐨勮揣鏋剁爜涓庡綋鍓嶈揣鏋剁爜涓嶄竴鑷�!");
+        }
+        if (agvWrkMast.getWrkSts() != 205) {
+            throw new CoolException("鍑哄簱浠诲姟鏈畬鎴�!");
+        }
+        // 鏂板缓鍥為��宸ヤ綔妗�
+        AgvWrkMast wrkMast = createWrkMast(58, 201L, agvWrkMast.getLocNo(), agvWrkMast.getSourceLocNo(), agvWrkMast.getBarcode(), now, userId, agvWrkMast.getWhsType(), 0);
+        // 鏇存柊鎺ラ┏浣嶏紝鏇存柊搴撲綅鐘舵��
+        agvLocMastService.updateLocStsByLocNo(wrkMast.getLocNo(),"S",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
+        agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(),"R",wrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+        // 鏇存柊宸ヤ綔鏄庣粏
+        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode()));
+        for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+            agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
+            // 淇濇寔宸ヤ綔妗f槑缁�
+            agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
+            agvWrkDetl.setModiUser(userId);
+            agvWrkDetl.setModiTime(now);
+            if (!agvWrkDetlService.insert(agvWrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+            // 鍚屾璁㈠崟鏁伴噺
+            OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode()).in("source",18,31,34));
+            orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+            if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no",orderDetl.getOrderNo()).eq("matnr", orderDetl.getMatnr()).eq("three_code",orderDetl.getThreeCode()))){
+                throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+orderDetl.getOrderNo()+orderDetl.getMatnr());
+            }
+        }
+
+        //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+        agvWrkMastLogService.save(agvWrkMast);
+        agvWrkDetlLogService.save(agvWrkMast.getWrkNo());
+        //鍒犻櫎AGV宸ヤ綔妗�
+        agvWrkMastService.deleteById(agvWrkMast);
+        //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+        agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",oldWrkNo));
+        return "ok";
+    }
+    /*
    鏇存柊鐩爣搴撲綅淇℃伅
     */
     private void updateAgvLocMast(AgvLocMast locMast, String locSts){
@@ -540,4 +583,41 @@
         agvLocMastService.updateById(locMast);
     }
 
+    /*
+   鐢熸垚宸ヤ綔妗�
+    */
+    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode,  Date now, Long userId, int containerType,int floor){
+        AgvWrkMast wrkMast = new AgvWrkMast();
+        //宸ヤ綔鐘舵��
+        wrkMast.setWrkSts(wrkSts);
+        //鍏ュ嚭搴撶被鍨�
+        wrkMast.setIoType(ioType);
+        wrkMast.setIoTime(now);
+        //浼樺厛绾�
+        wrkMast.setIoPri(300.0);
+        //婧愮珯鐐�
+        wrkMast.setSourceLocNo(sourceLocNo);
+        //鐩爣绔欑偣
+        wrkMast.setLocNo(locNo);
+        //瀹瑰櫒缂栫爜
+        wrkMast.setBarcode(barcode);
+        //瀹瑰櫒绫诲瀷
+        wrkMast.setWhsType(containerType);
+        // 鐩爣妤煎眰
+        wrkMast.setCrnNo(floor);
+
+        wrkMast.setAppeUser(userId);
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+
+        if (!agvWrkMastService.insertByIncrease(wrkMast)) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+
+        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false));
+
+        return wrkMast;
+    }
+
 }

--
Gitblit v1.9.1