From b5768fb9a6bf4216aba11d7f784e8cefc8fdaf9b Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期三, 27 三月 2024 14:54:48 +0800
Subject: [PATCH] 定时任务完成

---
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java |  157 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 109 insertions(+), 48 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 2f10937..feacc9d 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -7,7 +7,6 @@
 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.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.service.*;
@@ -90,9 +89,9 @@
             List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvBasDevp.getBarcode()));
 
             //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
-            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvWaitPakinList, agvBasDevp.getFloor());
+            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1());
             //鐢熸垚宸ヤ綔妗�
-            AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId, isConveyor);
+            AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId, agvBasDevp.getLocType2());
             //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
             wrkMast.setMk(isConveyor ? "Y" : "N");
             //鐢熸垚宸ヤ綔妗f槑缁�
@@ -135,7 +134,7 @@
             //鍒ゆ柇鏄惁鍏ㄦ澘鍑哄簱
             int ioType = isPakOut(sourceLocNo,taskDto) ?  101 : 103;
             //鐢熸垚宸ヤ綔妗�
-            AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,false);
+            AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,0);
             //鐢熸垚宸ヤ綔妗f槑缁�
             taskDto.getLocDtos().forEach(locDto -> {
                 if (!BaseController.isJSON(locDto.getOrderNo())) {
@@ -254,13 +253,15 @@
         taskDtos.forEach(taskDto -> {
 
             //鍒ゆ柇鏄惁鏈夐噸澶嶆枡鎯崇殑宸ヤ綔褰�
-            List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode());
+            AgvWrkMast agvWrkMastList = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode());
             if(!Cools.isEmpty(agvWrkMastList)){
                 return;
             }
 
+            int containerType = getContainerTypeByloc(taskDto.getLocNo());
+
             //鐢熸垚宸ヤ綔妗�
-            AgvWrkMast wrkMast = createWrkMast(107, 21L,taskDto.getLocNo(),taskDto.getAgvStaNo(),taskDto.getLocDtos().get(0).getContainerCode(),now,userId,false);
+            AgvWrkMast wrkMast = createWrkMast(107, 21L,taskDto.getLocNo(),taskDto.getAgvStaNo(),taskDto.getLocDtos().get(0).getContainerCode(),now,userId,containerType);
             //鐢熸垚宸ヤ綔妗f槑缁�
             taskDto.getLocDtos().forEach(locDto -> {
                 //鏄庣粏妗f墍闇�鍙傛暟
@@ -300,8 +301,9 @@
         }
 
         Date now = new Date();
+
         //鐢熸垚绉诲簱宸ヤ綔妗�
-        AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,false);
+        AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,getContainerTypeByloc(sourceLocNo));
         //鐢熸垚宸ヤ綔鍏氭槑缁�
         createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime());
         //淇敼鐩爣搴撲綅鐘舵��
@@ -311,56 +313,88 @@
     }
 
     /*
-    绌烘澘鍏ュ簱
+    鍏ュ簱
      */
     @Transactional
-    public String emptyPlateIn(String sourceStaion, Long userId) {
+    public String emptyPlateIn(String station,String containerCode,Short containerType, Long userId) {
+
         Date now = new Date();
         // 婧愮珯鐐圭姸鎬佹娴�
-        AgvBasDevp agvBasDevp = agvBasDevpService.selectById(sourceStaion);
-        if(!agvBasDevp.getLocSts().equals("O")){
+        //AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(station);
+        AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station);
+
+        //鍒濆瀹氫箟涓虹┖鏉垮叆搴撶被鍨�
+        int ioType = 10;
+
+//        if(Cools.isEmpty(agvBasDevp.getBarcode())){
+//            agvBasDevp.setBarcode(containerCode);
+//        }
+
+        if(!Cools.eq(agvBasDevp.getBarcode(),containerCode) && !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,false);
-        //鏇存柊婧愮珯鐐圭姸鎬�
-        updateAgvBasDevp(agvBasDevp,"R");
-        //鏇存柊鐩爣搴撲綅鐘舵��
-        updateAgvLocMast(locMast,"S");
-        return locMast.getLocNo();
+
+        //鏌ヨ宸ヤ綔妗�
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(containerCode);
+        if(!Cools.isEmpty(agvWrkMast)){
+            throw new CoolException("褰撳墠瀹瑰櫒宸叉湁鍏ュ簱浠诲姟锛屾棤娉曡繘琛屽叆搴�");
+        }
+
+        //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
+        AgvLocMast agvLocMast = agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1());
+
+        //鏌ヨ鍏ュ簱閫氱煡妗�
+        List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectByContainerCode(containerCode);
+        if(!Cools.isEmpty(agvWaitPakinList)){
+            //鐢熸垚宸ヤ綔妗�
+            AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),containerCode,now,userId, agvBasDevp.getLocType2());
+            //鐢熸垚宸ヤ綔妗f槑缁�
+            agvWaitPakinList.forEach(wp -> {
+                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime());
+            });
+            //淇敼鍏ュ簱閫氱煡妗g姸鎬�
+            agvWaitPakinService.updateIoStatus(containerCode,"Y");
+            //鏇存柊婧愮珯鐐圭姸鎬�
+            updateAgvBasDevp(agvBasDevp,"R");
+        }else {
+            // 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱
+            createWrkMast(10,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),containerCode,now,userId,containerType);
+            //鏇存柊婧愮珯鐐圭姸鎬�
+            updateAgvBasDevp(agvBasDevp,"R",containerType);
+        }
+
+        //鏇存柊鐩爣搴撲綅鐘舵�佸拰淇℃伅
+        updateAgvLocMast(agvLocMast,"S");
+        return agvLocMast.getLocNo();
     }
 
     /*
     绌烘澘鍑哄簱
      */
     @Transactional
-    public void emptyPlateOut(EmptyPlateOutParam param, Long userId) {
+    public void emptyPlateOut(String station, int containerType, 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() + "锛屽皬浜庤鍑哄簱鐨勫簱浣嶆暟閲忥紝璇烽噸鏂伴�夋嫨鍑哄簱搴撲綅");
+
+        // 绔欑偣妫�娴�
+        AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station);
+        if(!agvBasDevp.getLocSts().equals("O")){
+            throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts()+",鏃犳硶杩涜绌烘澘鍑哄簱");
         }
-        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,false);
-            //淇敼婧愬簱浣嶇姸鎬�
-            updateAgvLocMast(agvLocMast,"R");
-            //淇敼鐩爣宸ヤ綔浣嶇姸鎬�
-            updateAgvBasDevp(agvBasDevp,"S");
-        });
+
+        //瀵绘壘鐩稿簲绫诲瀷鐨勭┖鎵樼洏
+        AgvLocMast agvLocMast = agvLocMastService.selectEmptyZpallet(containerType);
+        if (Cools.isEmpty(agvLocMast)) {
+            throw new CoolException("鏆傛棤褰撳墠鍑哄簱绔欑偣绫诲瀷鐨勭┖鎵樼洏锛�");
+        }
+        //鐢熸垚宸ヤ綔妗�
+        createWrkMast(110,21L,agvLocMast.getLocNo(),agvBasDevp.getDevNo(),agvLocMast.getBarcode(),now,userId,containerType);
+
+        //淇敼婧愬簱浣嶇姸鎬�
+        updateAgvLocMast(agvLocMast,"R");
+
+        //淇敼绔欑偣鐘舵��
+        updateAgvBasDevp(agvBasDevp,"S");
+
     }
 
     @Transactional
@@ -540,7 +574,7 @@
             String devNo = wrkMast.getSourceLocNo();
             //鐩爣搴撲綅
             String locNo = wrkMast.getLocNo();
-            agvLocMastService.updateLocStsByLocNo(locNo,"O","");
+            agvLocMastService.updateLocStsByLocNo(locNo,"O","",null);
             agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"F",wrkMast.getBarcode());
 
             //鍑哄簱鍙栨秷
@@ -549,7 +583,7 @@
             String locNo = wrkMast.getSourceLocNo();
             //鐩爣绔欑偣
             String devNo = wrkMast.getLocNo();
-            agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode());
+            agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo));
             if(devNo.contains("@")){
                 agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","");
             }
@@ -601,11 +635,31 @@
     }
 
     /*
+    鏇存柊鐩爣搴撲綅淇℃伅鍜屽簱浣嶆墭鐩樼被鍨�
+     */
+    private void updateAgvLocMast(AgvLocMast locMast, String locSts, short type){
+        locMast.setLocSts(locSts);
+        locMast.setLocType2(type);
+        agvLocMastService.updateById(locMast);
+    }
+
+    /*
     鏇存柊婧愮珯鐐逛俊鎭�
      */
     private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts){
         if(!Cools.isEmpty(agvBasDevp)){
             agvBasDevp.setLocSts(locSts);
+            agvBasDevpService.updateById(agvBasDevp);
+        }
+    }
+
+    /*
+    鏇存柊婧愮珯鐐逛俊鎭拰搴撲綅鎵樼洏绫诲瀷
+     */
+    private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType){
+        if(!Cools.isEmpty(agvBasDevp)){
+            agvBasDevp.setLocSts(locSts);
+            agvBasDevp.setLocType2(continerType);
             agvBasDevpService.updateById(agvBasDevp);
         }
     }
@@ -670,7 +724,7 @@
     /*
     鐢熸垚宸ヤ綔妗�
      */
-    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode,  Date now, Long userId, boolean isConveyor){
+    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode,  Date now, Long userId, int containerType){
         AgvWrkMast wrkMast = new AgvWrkMast();
         //宸ヤ綔鐘舵��
         wrkMast.setWrkSts(wrkSts);
@@ -685,8 +739,9 @@
         wrkMast.setLocNo(locNo);
         //瀹瑰櫒缂栫爜
         wrkMast.setBarcode(barcode);
-        //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
-        wrkMast.setMk(isConveyor ? "Y" : "N");
+        //瀹瑰櫒绫诲瀷
+        wrkMast.setWhsType(containerType);
+
         wrkMast.setAppeUser(userId);
         wrkMast.setAppeTime(now);
         wrkMast.setModiUser(userId);
@@ -775,4 +830,10 @@
         }
     }
 
+    private int getContainerTypeByloc(String locNo){
+
+        return agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no",locNo)).getLocType2();
+
+    }
+
 }

--
Gitblit v1.9.1