From a6f97ff678665c497645911077c65395c6c01a6e Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期四, 26 十月 2023 16:28:55 +0800
Subject: [PATCH] 库存调整单据修改

---
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java |  148 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 120 insertions(+), 28 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 e7b35ac..0430850 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -9,13 +9,14 @@
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.model.LocDto;
 import com.zy.common.model.OrderDto;
 import com.zy.common.model.StartupDto;
 import com.zy.common.model.TaskDto;
-import com.zy.common.model.enums.WorkNoType;
 import com.zy.common.service.AgvCommonService;
 import com.zy.common.web.BaseController;
+import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -24,7 +25,6 @@
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
-import java.util.UUID;
 
 /**
  * Created by vincent on 2020/6/11
@@ -60,13 +60,18 @@
     private OrderDetlService orderDetlService;
     @Autowired
     private AdjDetlService adjDetlService;
+    @Autowired
+    private AgvWrkMastLogService agvWrkMastLogService;
+    @Autowired
+    private AgvWrkDetlLogService agvWrkDetlLogService;
 
 
     /*
     鍏ュ簱
      */
     @Transactional
-    public StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId) {
+    @Synchronized
+    public StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId, boolean isConveyor) {
 
         Date now = new Date();
 
@@ -79,17 +84,19 @@
                 throw new CoolException("閫変腑鐨勭珯鐐逛腑鍚湁璐т綅鐘舵�佷笉涓篎.鍦ㄥ簱鐨勭珯鐐癸紝璇烽噸鏂伴�夋嫨");
             }
 
-            List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("zpallet", agvBasDevp.getBarcode()));
+            List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvBasDevp.getBarcode()));
 
             //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
             AgvLocMast agvLocMast = agvCommonService.getLocNo(agvWaitPakinList, agvBasDevp.getFloor());
             //鐢熸垚宸ヤ綔妗�
             //AgvWrkMast wrkMast = createWrkMast(agvBasDevp, agvLocMast, now, userId);
-            AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId);
+            AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId, isConveyor);
+            //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
+            wrkMast.setMk(isConveyor ? "Y" : "N");
             //鐢熸垚宸ヤ綔妗f槑缁�
             //createWrkDetlReWrite(agvWaitPakinList,wrkMast,userId);
             agvWaitPakinList.forEach(wp -> {
-                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getZpallet(),now,userId,wp.getThreeCode(),wp.getDeadTime());
+                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime());
             });
             //鏇存柊婧愮珯鐐逛俊鎭�
             updateAgvBasDevp(agvBasDevp,"R");
@@ -119,7 +126,7 @@
             long wrkSts = 21L;
             String sourceLocNo = taskDto.getLocNo();
             String targetLocNo = taskDto.getAgvStaNo();
-            String barcode = agvLocDetl.getZpallet();
+            String barcode = agvLocDetl.getSuppCode();
             //鏄庣粏妗f墍闇�鍙傛暟
             String mantr = taskDto.getLocDtos().get(0).getMatnr();
             String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
@@ -131,7 +138,7 @@
             //鍒ゆ柇鏄惁鍏ㄦ澘鍑哄簱
             int ioType = isPakOut(sourceLocNo,anfme) ?  101 : 103;
             //鐢熸垚宸ヤ綔妗�
-            AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,barcode,now,userId);
+            AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,barcode,now,userId,false);
             //鐢熸垚宸ヤ綔妗f槑缁�
             createWrkDetlReWrite(mantr,wrkMast.getWrkNo(),orderNo,batch,anfme,barcode,now,userId,csocode,isoseq);
             //淇敼璁㈠崟淇℃伅
@@ -172,10 +179,10 @@
             //鎷f枡鍏ュ簱
             if(ioType == 53){
                 //淇敼宸ヤ綔鍏氭槑缁�
-                agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
-                agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
+                //agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
+                //agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
                 //淇敼搴撳瓨淇℃伅
-                agvLocDetl.setAnfme(agvWrkDetl.getAnfme());
+                agvLocDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
                 agvLocDetlService.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocDetl.getLocNo()));
             }
             //淇敼搴撲綅淇℃伅
@@ -209,7 +216,7 @@
             Date now = new Date();
 
             //鐢熸垚宸ヤ綔鍏�
-            AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getZpallet(), now, userId);
+            AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getSuppCode(), now, userId,false);
             //鐢熸垚宸ヤ綔鏄庣粏妗�
             createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
             //淇敼搴撲綅淇℃伅
@@ -239,7 +246,7 @@
 
         Date now = new Date();
         //鐢熸垚绉诲簱宸ヤ綔妗�
-        AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getZpallet(), now, userId);
+        AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,false);
         //鐢熸垚宸ヤ綔鍏氭槑缁�
         createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime());
         //淇敼鐩爣搴撲綅鐘舵��
@@ -262,7 +269,7 @@
         // 妫�绱㈠簱浣�
         AgvLocMast locMast = agvCommonService.getLocNo(null, agvBasDevp.getFloor());
         // 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱
-        createWrkMast(10,201L,agvBasDevp.getDevNo(),locMast.getLocNo(),null,now,userId);
+        createWrkMast(10,201L,agvBasDevp.getDevNo(),locMast.getLocNo(),null,now,userId,false);
         //鏇存柊婧愮珯鐐圭姸鎬�
         updateAgvBasDevp(agvBasDevp,"R");
         //鏇存柊鐩爣搴撲綅鐘舵��
@@ -293,7 +300,7 @@
                     .eq("station_code", param.getStationCode())
                     .eq("loc_sts", "O"));
             //鐢熸垚宸ヤ綔妗�
-            createWrkMast(110,21L,locNo,agvBasDevp.getDevNo(),null,now,userId);
+            createWrkMast(110,21L,locNo,agvBasDevp.getDevNo(),null,now,userId,false);
             //淇敼婧愬簱浣嶇姸鎬�
             updateAgvLocMast(agvLocMast,"R");
             //淇敼鐩爣宸ヤ綔浣嶇姸鎬�
@@ -345,8 +352,8 @@
                         adjDetl.setAppeTime(now);
                         adjDetl.setAppeUser(userId);
 
-                        UUID uuid = UUID.randomUUID();
-                        adjDetl.setOrderNo(uuid.toString());
+                        adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
+
                         adjDetl.setCsocode(locDetl.getThreeCode());
                         adjDetl.setIsoseq(locDetl.getDeadTime());
 
@@ -375,6 +382,7 @@
             adjDetl.setModiUser(userId);
             adjDetl.setAppeTime(now);
             adjDetl.setAppeUser(userId);
+            adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
 
             adjDetlService.save(adjDetl, userId);
         }
@@ -409,8 +417,7 @@
             adjDetl.setAppeTime(now);
             adjDetl.setAppeUser(userId);
 
-            UUID uuid = UUID.randomUUID();
-            adjDetl.setOrderNo(uuid.toString());
+            adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
             adjDetl.setCsocode(locDetl.getThreeCode());
             adjDetl.setIsoseq(locDetl.getDeadTime());
 
@@ -433,6 +440,84 @@
         if (!agvLocMastService.updateById(locMast)) {
             throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
         }
+    }
+
+    @Override
+    @Transactional
+    public void completeWrkMast(String workNo, Long userId) {
+        AgvWrkMast wrkMast = agvWrkMastService.selectById(workNo);
+        if (Cools.isEmpty(wrkMast)){
+            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        }
+
+        if(wrkMast.getWrkSts() > 202){
+            //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚
+            agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205);
+
+            //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱
+            if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107){
+                //淇敼鍑哄簱绔欑偣鐘舵��
+                agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode());
+            }
+            //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱
+            if(wrkMast.getIoType() == 110){
+                agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode());
+            }
+        }
+
+    }
+
+    @Transactional
+    public void cancelWrkMast(String workNo, Long userId) {
+        AgvWrkMast wrkMast = agvWrkMastService.selectById(workNo);
+        if (Cools.isEmpty(wrkMast)){
+            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        }
+        //鎷f枡鍏ュ簱 鐩樼偣鍏ュ簱涓嶅彲鍙栨秷
+        if(wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){
+            throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷");
+        }
+
+        //AGV鏈哄櫒浜烘湭鍙栬揣鍓嶅彇娑�
+        if(wrkMast.getWrkSts() < 203){
+            //鍏ュ簱鍙栨秷
+            if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10){
+                //婧愮珯鐐�
+                String devNo = wrkMast.getSourceLocNo();
+                //鐩爣搴撲綅
+                String locNo = wrkMast.getLocNo();
+                agvLocMastService.updateLocStsByLocNo(locNo,"O");
+                agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"F",wrkMast.getBarcode());
+
+                //鍑哄簱鍙栨秷
+            }else {
+                //婧愬簱浣�
+                String locNo = wrkMast.getSourceLocNo();
+                //鐩爣绔欑偣
+                String devNo = wrkMast.getLocNo();
+                agvLocMastService.updateLocStsByLocNo(locNo,"F");
+                agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","");
+            }
+
+        }
+
+        //璁㈠崟鍥炴粴
+        AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).get(0);
+        if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){
+            OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+            orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+            orderDetlService.updateById(orderDetl);
+        }
+
+        //淇濆瓨宸ヤ綔妗d互鍙婃槑缁�
+        agvWrkMastLogService.save(wrkMast);
+        agvWrkDetlLogService.save(wrkMast.getWrkNo());
+
+        //鍒犻櫎宸ヤ綔妗d互鍙婃槑缁�
+        if(!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){
+            throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
+        }
+
     }
 
     /*
@@ -466,7 +551,7 @@
         wrkDetl.setIoTime(now);
         wrkDetl.setBatch(batch);
         wrkDetl.setAnfme(anfme); // 鏁伴噺
-        wrkDetl.setZpallet(zpallet); // 鎵樼洏鏉$爜
+        wrkDetl.setSuppCode(zpallet); // 鎵樼洏鏉$爜
         wrkDetl.setAppeUser(userId);
         wrkDetl.setAppeTime(now);
         wrkDetl.setModiUser(userId);
@@ -511,11 +596,11 @@
     /*
     鐢熸垚宸ヤ綔妗�
      */
-    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode,  Date now, Long userId){
+    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode,  Date now, Long userId, boolean isConveyor){
         AgvWrkMast wrkMast = new AgvWrkMast();
         //鐢熸垚宸ヤ綔鍙�
-        int workNo = agvCommonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
-        wrkMast.setWrkNo(workNo);
+//        int workNo = agvCommonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+//        wrkMast.setWrkNo();
         //宸ヤ綔鐘舵��
         wrkMast.setWrkSts(wrkSts);
         //鍏ュ嚭搴撶被鍨�
@@ -529,6 +614,8 @@
         wrkMast.setLocNo(locNo);
         //瀹瑰櫒缂栫爜
         wrkMast.setBarcode(barcode);
+        //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
+        wrkMast.setMk(isConveyor ? "Y" : "N");
         // 婊℃澘锛歒
         //wrkMast.setFullPlt("Y");
         // 鎷f枡
@@ -542,9 +629,16 @@
         wrkMast.setAppeTime(now);
         wrkMast.setModiUser(userId);
         wrkMast.setModiTime(now);
-        if (!agvWrkMastService.insert(wrkMast)) {
+
+        if (!agvWrkMastService.insertByIncrease(wrkMast)) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
+
+        int i = agvWrkMastService.selectCount(new EntityWrapper<AgvWrkMast>());
+        log.info(i + "");
+
+
+        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo));
 
         return wrkMast;
     }
@@ -556,8 +650,8 @@
     private AgvWrkMast createWrkMast(AgvBasDevp agvBasDevp,AgvLocMast agvLocMast, Date now, Long userId){
         AgvWrkMast wrkMast = new AgvWrkMast();
         //鐢熸垚宸ヤ綔鍙�
-        int workNo = agvCommonService.getWorkNo(0);
-        wrkMast.setWrkNo(workNo);
+        //int workNo = agvCommonService.getWorkNo(0);
+        //wrkMast.setWrkNo(workNo);
         wrkMast.setIoTime(new Date());
         // 宸ヤ綔鐘舵�侊細201.鐢熸垚鍏ュ簱浠诲姟ID
         wrkMast.setWrkSts(201L);
@@ -639,8 +733,6 @@
                 orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
             }
         }
-
-
     }
 
 }

--
Gitblit v1.9.1