From 67f4004e7645ecb4b88191981bcb106a55cd5765 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期二, 29 八月 2023 16:03:14 +0800
Subject: [PATCH] U8接口bug修复

---
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java |  159 +++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 141 insertions(+), 18 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 f5ea49e..faa8d95 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -5,6 +5,8 @@
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.EmptyPlateOutParam;
+import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.service.*;
 import com.zy.common.model.LocDto;
 import com.zy.common.model.OrderDto;
@@ -38,7 +40,7 @@
     @Autowired
     private AgvBasDevpService agvBasDevpService;
     @Autowired
-    private AgvLocMastService agvLockMastService;
+    private AgvLocMastService agvLocMastService;
     @Autowired
     private AgvLocDetlService agvLocDetlService;
     @Autowired
@@ -104,7 +106,7 @@
 
         agvTaskDtos.forEach(taskDto -> {
 
-            AgvLocMast agvLocMast = agvLockMastService.selectById(taskDto.getLocNo());
+            AgvLocMast agvLocMast = agvLocMastService.selectById(taskDto.getLocNo());
             AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo()));
 
             //宸ヤ綔妗f墍闇�鍙傛暟
@@ -128,7 +130,7 @@
             modifyOrderDetl(taskDto.getLocDtos().get(0), userId);
             //鏇存柊婧愮珯鐐逛俊鎭�
             String locSts = ioType == 101 ? "R" : "P";
-            updateAgvLocMast(agvLockMastService.selectById(sourceLocNo),locSts);
+            updateAgvLocMast(agvLocMastService.selectById(sourceLocNo),locSts);
             //鏇存柊鐩爣绔欑偣鐘舵��
             //locSts = ioType == 101 ? "S" : "Q";
             updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo),"S");
@@ -143,7 +145,11 @@
         agvWrkMastList.forEach(agvWrkMast -> {
             //淇敼宸ヤ綔鍏�
             agvWrkMast.setWrkSts(201L);
-            agvWrkMast.setIoType(53);
+
+            //鏍规嵁鍑哄簱绫诲瀷 璁剧疆鍏ュ簱绫诲瀷 53鎷f枡鍏ュ簱 57鐩樼偣鍏ュ簱
+            int ioType = agvWrkMast.getIoType() == 103 ? 53 : 57;
+
+            agvWrkMast.setIoType(ioType);
             String locNo = agvWrkMast.getLocNo();
             agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo());
             agvWrkMast.setSourceLocNo(locNo);
@@ -151,22 +157,139 @@
             agvWrkMastService.updateById(agvWrkMast);
 
             AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
-            AgvLocMast agvLocMast = agvLockMastService.selectById(agvWrkMast.getLocNo());
+            AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo());
             AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo()));
             AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getSourceLocNo());
-            //淇敼宸ヤ綔鍏氭槑缁�
-            agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
-            agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
-            //淇敼搴撳瓨淇℃伅
-            agvLocDetl.setAnfme(agvWrkDetl.getAnfme());
-            agvLocDetlService.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocDetl.getLocNo()));
-            //淇敼搴撲綅淇℃伅
-            agvLocMast.setLocSts("Q");
-            agvLockMastService.selectById(agvLocMast);
-            //淇敼绔欑偣淇℃伅
-            agvBasDevp.setLocSts("R");
-            agvBasDevpService.updateById(agvBasDevp);
 
+            //鎷f枡鍏ュ簱
+            if(ioType == 53){
+                //淇敼宸ヤ綔鍏氭槑缁�
+                agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
+                agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
+                //淇敼搴撳瓨淇℃伅
+                agvLocDetl.setAnfme(agvWrkDetl.getAnfme());
+                agvLocDetlService.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocDetl.getLocNo()));
+            }
+            //淇敼搴撲綅淇℃伅
+            updateAgvLocMast(agvLocMast,"Q");
+            //淇敼绔欑偣淇℃伅
+            updateAgvBasDevp(agvBasDevp,"R");
+
+        });
+    }
+
+    /*
+    鐩樼偣鍑哄簱
+     */
+    @Transactional
+    public void locCheckOut(StockOutParam param, Long userId) {
+        String station = param.getStation();
+        List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>()
+                .eq("station_code", station)
+                .eq("loc_sts","O"));
+
+        if(param.getLocDetls().size() > agvBasDevpList.size()){
+            throw new CoolException("褰撳墠绔欑偣鍙敤缂撳瓨璐ф灦鏁伴噺涓�" + agvBasDevpList.size() + ",灏戜簬闇�瑕佺洏鐐瑰嚭搴撳簱浣嶆暟閲忥紝璇烽噸鏂伴�夋嫨鐩樼偣搴撲綅");
+        }
+
+        param.getLocDetls().forEach(locDetl -> {
+            AgvLocMast agvLocMast = agvLocMastService.selectById(locDetl.getLocNo());
+            AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locDetl.getLocNo()));
+            AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>()
+                    .eq("station_code", station)
+                    .eq("loc_sts","O"));
+            Date now = new Date();
+
+            //鐢熸垚宸ヤ綔鍏�
+            AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getZpallet(), now, userId);
+            //鐢熸垚宸ヤ綔鏄庣粏妗�
+            createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId);
+            //淇敼搴撲綅淇℃伅
+            updateAgvLocMast(agvLocMast,"P");
+            //淇敼绔欑偣淇℃伅
+            updateAgvBasDevp(agvBasDevp,"S");
+
+        });
+
+    }
+
+    /*
+    搴撲綅绉昏浆
+     */
+    @Transactional
+    public void locMove(String sourceLocNo, String targetLocNo, Long userId) {
+        AgvLocMast sourceLocMast = agvLocMastService.selectById(sourceLocNo);
+        AgvLocMast targetLocMast = agvLocMastService.selectById(targetLocNo);
+        AgvLocDetl sourceLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocMast.getLocNo()));
+
+        if(!sourceLocMast.getLocSts().equals("F")){
+            throw new CoolException(sourceLocMast.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLocMast.getLocSts$());
+        }
+        if(!targetLocMast.getLocSts().equals("O")){
+            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+targetLocMast.getLocSts$());
+        }
+
+        Date now = new Date();
+        //鐢熸垚绉诲簱宸ヤ綔妗�
+        AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getZpallet(), now, userId);
+        //鐢熸垚宸ヤ綔鍏氭槑缁�
+        createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId);
+        //淇敼鐩爣搴撲綅鐘舵��
+        updateAgvLocMast(targetLocMast,"S");
+        //淇敼鍘熷簱浣嶇姸鎬�
+        updateAgvLocMast(sourceLocMast,"R");
+    }
+
+    /*
+    绌烘澘鍏ュ簱
+     */
+    @Transactional
+    public String emptyPlateIn(String sourceStaion, Long userId) {
+        Date now = new Date();
+        // 婧愮珯鐐圭姸鎬佹娴�
+        AgvBasDevp agvBasDevp = agvBasDevpService.selectById(sourceStaion);
+        if(!agvBasDevp.getLocSts().equals("O")){
+            throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts()+",鏃犳硶杩涜绌烘澘鍏ュ簱");
+        }
+        // 妫�绱㈠簱浣�
+        AgvLocMast locMast = agvCommonService.getLocNo(null, agvBasDevp.getFloor());
+        // 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱
+        createWrkMast(10,201L,agvBasDevp.getDevNo(),locMast.getLocNo(),null,now,userId);
+        //鏇存柊婧愮珯鐐圭姸鎬�
+        updateAgvBasDevp(agvBasDevp,"R");
+        //鏇存柊鐩爣搴撲綅鐘舵��
+        updateAgvLocMast(locMast,"S");
+        return locMast.getLocNo();
+    }
+
+    /*
+    绌烘澘鍑哄簱
+     */
+    @Transactional
+    public void emptyPlateOut(EmptyPlateOutParam param, Long userId) {
+        Date now = new Date();
+        //鍒ゆ柇鎵�閫夊伐浣滅珯绌轰綑宸ヤ綔浣嶆暟閲忔槸鍚︽弧瓒冲嚭搴撴暟閲�
+        List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>()
+                .eq("station_code", param.getStationCode())
+                .eq("loc_sts","O"));
+        if(agvBasDevpList.size() < param.getLocNos().size()){
+            throw new CoolException("褰撳墠宸ヤ綔绔欏彲鍑哄簱宸ヤ綔浣嶆暟閲忎负"+ agvBasDevpList.size() + "锛屽皬浜庤鍑哄簱鐨勫簱浣嶆暟閲忥紝璇烽噸鏂伴�夋嫨鍑哄簱搴撲綅");
+        }
+        param.getLocNos().forEach(locNo -> {
+            AgvLocMast agvLocMast = agvLocMastService.selectById(locNo);
+            if(!agvLocMast.getLocSts().equals("D")){
+                throw new CoolException(agvLocMast.getLocNo() + "搴撲綅鐘舵�佸凡缁忎笉涓篋.绌烘《/绌烘爤鏉匡紝璇烽噸鏂伴�夋嫨搴撲綅杩涜绌烘澘鍑哄簱");
+            }
+            //妫�绱㈠伐浣滀綅
+            AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>()
+                    .eq("station_code", param.getStationCode())
+                    .eq("loc_sts", "O"));
+            //鐢熸垚宸ヤ綔妗�
+            createWrkMast(110,21L,locNo,agvBasDevp.getDevNo(),null,now,userId);
+            //淇敼婧愬簱浣嶇姸鎬�
+            updateAgvLocMast(agvLocMast,"R");
+            //淇敼鐩爣宸ヤ綔浣嶇姸鎬�
+            updateAgvBasDevp(agvBasDevp,"S");
         });
     }
 
@@ -175,7 +298,7 @@
      */
     private void updateAgvLocMast(AgvLocMast locMast, String locSts){
         locMast.setLocSts(locSts);
-        agvLockMastService.updateById(locMast);
+        agvLocMastService.updateById(locMast);
     }
 
     /*

--
Gitblit v1.9.1