From 683c0e046f1d4363f87633104969a91ffe275da6 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期三, 29 五月 2024 16:28:36 +0800
Subject: [PATCH] # 订单出库同步锁

---
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java |   49 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 45 insertions(+), 4 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 a0623aa..d877c17 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -118,7 +118,8 @@
 
         for (PickParam.Pick pick : pickParams.getPicks()) {
             if (pick.getCount().equals(0D)) continue;
-            AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()));
+            Double count = 0.0D;
+            AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()).eq("supp_code",pick.getSuppCode()));
             if (Cools.isEmpty(agvWrkDetl)) {
                 AgvWrkDetl wrkDetl = new AgvWrkDetl();
                 Mat mat = matService.selectByMatnr(pick.getMatnr());
@@ -140,7 +141,7 @@
             } else {
                 Double anfme = agvWrkDetl.getAnfme() + pick.getCount();
                 agvWrkDetl.setAnfme(anfme);
-                agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("matnr",agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode()));
+                agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("matnr",agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode()).eq("supp_code",pick.getSuppCode()));
 
             }
 
@@ -392,7 +393,15 @@
                 ioType = 11;
             }
         } else {
-            ioType = 12;
+            if (agvLocMast.getFloor() != floor) {
+                if (agvLocMast.getFloor() == 1) {
+                    throw new CoolException("褰撳墠搴撲綅璇烽�夋嫨璋冩嫧鍗曡皟鎷紒");
+                } else {
+                    ioType = 12;
+                }
+            } else {
+                ioType = 11;
+            }
         }
         Date now = new Date();
         //鏌ヨ宸ヤ綔妗�
@@ -430,7 +439,7 @@
         if (!agvWrkMastService.insertByIncrease(mast)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
-        if (!agvLocMast.getLocSts().equals("F")) {
+        if (agvLocMast.getLocSts().equals("F")) {
             AgvWrkMast mast1 = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locMast.getLocNo()).eq("source_loc_no",agvLocMast.getLocNo()));
             //鐢熸垚宸ヤ綔妗f槑缁�
             List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo()));
@@ -448,6 +457,17 @@
                     throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
                 }
             });
+        }
+        // 濡傛灉褰撳墠浠诲姟鏄澹充簩涓夋ゼ鍥為��涓�妤肩殑 鍥炴粴璋冩嫧鍗�
+        if (ioType == 12 && locMast.getFloor() == 1) {
+            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo()));
+            for (AgvLocDetl agvLocDetl : agvLocDetls) {
+                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("order_no", "DB" + agvLocDetl.getOrderNo()));
+                orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
+                if (!orderDetlService.updateById(orderDetl)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+                }
+            }
         }
         //鏇存柊鐩爣搴撲綅鐘舵��
         updateAgvLocMast(agvLocMast,"P");
@@ -532,9 +552,30 @@
     */
     @Override
     @Transactional
+    public String handBack(AgvMobileStartPakin param, Long userId) {
+        Date now = new Date();
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo()));
+        agvWrkMast.setIoType(113);
+        agvWrkMast.setModiUser(userId);
+        agvWrkMast.setModiTime(now);
+        if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) {
+            throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+        }
+        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()));
+        AgvWrkMast agvWrkMastSource = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo()));
+        if (!Cools.isEmpty(agvWrkMastSource)) {
+            throw new CoolException("褰撳墠绔欑偣宸叉湁閫�搴撲换鍔�");
+        }
         Integer oldWrkNo = agvWrkMast.getWrkNo();
         if (!agvWrkMast.getBarcode().equals(param.getBarcode())) {
             throw new CoolException("鍥為��浠诲姟鐨勮揣鏋剁爜涓庡綋鍓嶈揣鏋剁爜涓嶄竴鑷�!");

--
Gitblit v1.9.1