From 368061fade130fab3a1df1cb1ab5e50d6f20a112 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 09 十月 2023 10:58:23 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java |  169 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 157 insertions(+), 12 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 75991c2..bbd57fe 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -6,13 +6,13 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.EmptyPlateOutParam;
+import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.service.*;
 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.extern.slf4j.Slf4j;
@@ -21,7 +21,9 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
+import java.util.UUID;
 
 /**
  * Created by vincent on 2020/6/11
@@ -55,6 +57,8 @@
     private OrderService orderService;
     @Autowired
     private OrderDetlService orderDetlService;
+    @Autowired
+    private AdjDetlService adjDetlService;
 
 
     /*
@@ -74,7 +78,7 @@
                 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());
@@ -84,7 +88,7 @@
             //鐢熸垚宸ヤ綔妗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");
@@ -114,7 +118,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();
@@ -204,7 +208,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);
             //鐢熸垚宸ヤ綔鏄庣粏妗�
             createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
             //淇敼搴撲綅淇℃伅
@@ -234,7 +238,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);
         //鐢熸垚宸ヤ綔鍏氭槑缁�
         createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime());
         //淇敼鐩爣搴撲綅鐘舵��
@@ -296,6 +300,140 @@
         });
     }
 
+    @Transactional
+    public void adjustLocDetl(LocDetlAdjustParam param, Long userId) {
+        param.integrate();
+        AgvLocMast locMast = agvLocMastService.selectById(param.getLocNo());
+        if (Cools.isEmpty(locMast)) {
+            throw new CoolException("搴撲綅涓嶅瓨鍦�");
+        }
+        if (!(locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O"))) {
+            throw new CoolException("褰撳墠搴撲綅涓嶅彲璋冩暣锛佸簱浣嶇姸鎬侊細" + locMast.getLocSts$());
+        }
+
+        Date now = new Date();
+        List<AgvLocDetl> locDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", param.getLocNo()));
+
+        List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList();
+
+        // 淇敼鏁伴噺
+        Iterator<AgvLocDetl> iterator = locDetls.iterator();
+        while (iterator.hasNext()) {
+            AgvLocDetl locDetl = iterator.next();
+
+            Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
+            while (iterator1.hasNext()) {
+                LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
+                if (adjust.getCount() == 0) { continue; }
+                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
+                    if (!locDetl.getAnfme().equals(adjust.getCount())) {
+                        // todo 鐩樼偣璁板綍
+                        // 淇敼搴撳瓨
+                        if (!agvLocDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+                            throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
+                        }
+                        // 淇濆瓨璋冩暣璁板綍
+                        AdjDetl adjDetl = new AdjDetl();
+                        adjDetl.setLocNo(locDetl.getLocNo());
+                        adjDetl.setMatnr(locDetl.getMatnr());
+                        adjDetl.setBatch(locDetl.getBatch());
+                        adjDetl.setOriQty(locDetl.getAnfme());
+                        adjDetl.setAdjQty(adjust.getCount());
+                        adjDetl.setModiTime(now);
+                        adjDetl.setModiUser(userId);
+                        adjDetl.setAppeTime(now);
+                        adjDetl.setAppeUser(userId);
+
+                        UUID uuid = UUID.randomUUID();
+                        adjDetl.setOrderNo(uuid.toString());
+                        adjDetl.setCsocode(locDetl.getThreeCode());
+                        adjDetl.setIsoseq(locDetl.getDeadTime());
+
+                        adjDetlService.save(adjDetl, userId);
+                    }
+                    iterator.remove();
+                    iterator1.remove();
+                }
+            }
+        }
+
+        // 鍒犻櫎搴撳瓨
+        for (AgvLocDetl locDetl : locDetls) {
+            // todo 鐩樼偣璁板綍
+            if (!agvLocDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+                throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
+            }
+            // 淇濆瓨璋冩暣璁板綍
+            AdjDetl adjDetl = new AdjDetl();
+            adjDetl.setLocNo(locDetl.getLocNo());
+            adjDetl.setMatnr(locDetl.getMatnr());
+            adjDetl.setBatch(locDetl.getBatch());
+            adjDetl.setOriQty(locDetl.getAnfme());
+            adjDetl.setAdjQty(0.0D);
+            adjDetl.setModiTime(now);
+            adjDetl.setModiUser(userId);
+            adjDetl.setAppeTime(now);
+            adjDetl.setAppeUser(userId);
+
+            adjDetlService.save(adjDetl, userId);
+        }
+
+        // 娣诲姞搴撳瓨
+        for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
+            if (adjust.getCount() == 0.0D) { continue; }
+            Mat mat = matService.selectByMatnr(adjust.getMatnr());
+            AgvLocDetl locDetl = new AgvLocDetl();
+            locDetl.sync(mat);
+            locDetl.setBatch(adjust.getBatch());
+            locDetl.setLocNo(locMast.getLocNo());
+            locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
+            locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
+            locDetl.setModiTime(now);
+            locDetl.setAppeUser(userId);
+            locDetl.setAppeTime(now);
+            locDetl.setThreeCode(adjust.getThreeCode());
+            locDetl.setDeadTime(adjust.getDeadTime());
+            if (!agvLocDetlService.insert(locDetl)) {
+                throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
+            }
+            // 淇濆瓨璋冩暣璁板綍
+            AdjDetl adjDetl = new AdjDetl();
+            adjDetl.setLocNo(locMast.getLocNo());
+            adjDetl.setMatnr(adjust.getMatnr());
+            adjDetl.setBatch(adjust.getBatch());
+            adjDetl.setOriQty(0.0D);
+            adjDetl.setAdjQty(adjust.getCount());
+            adjDetl.setModiTime(now);
+            adjDetl.setModiUser(userId);
+            adjDetl.setAppeTime(now);
+            adjDetl.setAppeUser(userId);
+
+            UUID uuid = UUID.randomUUID();
+            adjDetl.setOrderNo(uuid.toString());
+            adjDetl.setCsocode(locDetl.getThreeCode());
+            adjDetl.setIsoseq(locDetl.getDeadTime());
+
+            adjDetlService.save(adjDetl, userId);
+        }
+        // 淇敼搴撲綅鐘舵��
+        int count = agvLocDetlService.selectCount(new EntityWrapper<AgvLocDetl>().eq("loc_no", locMast.getLocNo()));
+        if (locMast.getLocSts().equals("F")) {
+            if (count == 0) {
+                locMast.setLocSts("D");
+            }
+        }
+        if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) {
+            if (count > 0) {
+                locMast.setLocSts("F");
+            }
+        }
+        locMast.setModiUser(userId);
+        locMast.setModiTime(new Date());
+        if (!agvLocMastService.updateById(locMast)) {
+            throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+        }
+    }
+
     /*
     鏇存柊鐩爣搴撲綅淇℃伅
      */
@@ -327,7 +465,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);
@@ -375,8 +513,8 @@
     private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode,  Date now, Long userId){
         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);
         //鍏ュ嚭搴撶被鍨�
@@ -403,9 +541,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;
     }
@@ -417,8 +562,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);

--
Gitblit v1.9.1