From a63de0a719690fd1887e848676b12c21fe819df1 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期五, 19 四月 2024 09:42:58 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java |  170 ++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 120 insertions(+), 50 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index b22bdd1..f08cbde 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.service.*;
@@ -18,6 +19,7 @@
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -46,23 +48,28 @@
     private OrderService orderService;
     @Autowired
     private AgvBasDevpService agvBasDevpService;
+    @Autowired
+    private AgvWorkService agvWorkService;
 
     @Transactional
     public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) {
         int wrkNo = agvWrkMast.getWrkNo();
         String barcode = agvWrkMast.getBarcode();
         String orderNo = getOrderNoByWrkNo(wrkNo);
+        String agvBasDevp = "";
+        if (agvWrkMast.getIoType() > 100) {
+            agvBasDevp = agvWrkMast.getLocNo();
+        } else {
+            agvBasDevp = agvWrkMast.getSourceLocNo();
+        }
+
 
         //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
         agvWrkMast.setWrkSts(207L);
         agvWrkMastService.updateById(agvWrkMast);
-        if(agvWrkMast.getIoType() == 10){
-            // 绌烘澘鍏ュ簱 璁剧疆搴撲綅鐘舵�佷负D.绌烘《/绌烘爤鏉�
-            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode());
-        }else{
-            //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱
-            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode());
-        }
+        // 绌烘澘鍏ュ簱 璁剧疆搴撲綅鐘舵�佷负D.绌烘《/绌烘爤鏉�
+        String locSts = agvWrkMast.getIoType() == 10 ? "D" : "F";
+        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),locSts,agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
         //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
         agvWrkMastLogService.save(agvWrkMast);
         //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
@@ -83,7 +90,7 @@
             //鏇存柊搴撳瓨鏄庣粏
             agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
             //淇敼婧愬簱浣嶇姸鎬佷负O
-            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","");
+            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
         }
 
         //鍒犻櫎AGV宸ヤ綔妗�
@@ -114,7 +121,56 @@
         agvWrkMast.setWrkSts(207L);
         agvWrkMastService.updateById(agvWrkMast);
         //淇敼婧愬簱浣嶇姸鎬佷负O
-        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","");
+        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+        if(agvWrkMast.getIoType() == 101){
+            //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
+            agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
+            //鐢熸垚绌烘澘鍏ュ簱浠诲姟
+            Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2));
+            try {
+                agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true);
+            }catch (Exception e){
+                e.printStackTrace();
+                log.error(e.getMessage());
+            }
+        }
+
+        //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
+        agvWrkMastLogService.save(agvWrkMast);
+        //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+        agvWrkDetlLogService.save(wrkNo);
+        //鍒犻櫎AGV宸ヤ綔妗�
+        agvWrkMastService.deleteById(wrkNo);
+        //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+        agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
+        if(!isJSON(orderNo)){
+            //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
+            orderService.checkComplete(orderNo);
+        }else{
+            List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
+            maps.forEach(map -> {
+                String o = map.get("orderNo").toString();
+                orderService.checkComplete(o);
+            });
+        }
+        return SUCCESS;
+    }
+
+    @Transactional
+    public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) {
+        int wrkNo = agvWrkMast.getWrkNo();
+        String orderNo = getOrderNoByWrkNo(wrkNo);
+        String agvBasDevp = "";
+        if (agvWrkMast.getIoType() > 100) {
+            agvBasDevp = agvWrkMast.getLocNo();
+        } else {
+            agvBasDevp = agvWrkMast.getSourceLocNo();
+        }
+        //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
+        agvWrkMast.setWrkSts(207L);
+        agvWrkMastService.updateById(agvWrkMast);
+        //淇敼婧愬簱浣嶇姸鎬佷负O
+        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
         if(agvWrkMast.getIoType() == 101){
             //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
             agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
@@ -142,56 +198,48 @@
     }
 
     @Transactional
-    public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+    @Synchronized
+    public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException {
 
         //涓嬪彂浠诲姟
-        int startWrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway");
+        int startWrkCode = agvWrkMastService.startWrk(agvWrkMast);
         if(startWrkCode != 0){
             throw new CoolException("浠诲姟涓嬪彂澶辫触");
         }
 
-        //涓嬪彂瀹瑰櫒鍏ュ満鎸囦护 锛堢紦瀛樿揣鏋讹級
-        int code = agvWrkMastService.containerMoveIn(agvWrkMastList);
-
-        if(code == 0){
-            for(AgvWrkMast agvWrkMast : agvWrkMastList){
-                //涓嬪彂瀹瑰櫒杈惧埌閫氱煡 锛堣緭閫佺嚎锛�
-                if("Y".equals(agvWrkMast.getMk())){
-                    int containerArrivedCode = agvWrkMastService.containerArrived(agvWrkMast);
-                    if(containerArrivedCode != 0){
-                        log.error("瀹瑰櫒鍒拌揪鎸囦护涓嬪彂澶辫触");
-                        continue;
-                    }
-                }
-                //202.RCS鍙栬揣涓�
-                agvWrkMast.setWrkSts(202L);
-                agvWrkMastService.updateById(agvWrkMast);
-                if(agvWrkMast.getIoType() == 1){
-                    //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
-                    agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
-                }
-            }
-            return SUCCESS;
+        agvWrkMast.setWrkSts(202L);
+        agvWrkMastService.updateById(agvWrkMast);
+        if(agvWrkMast.getIoType() == 1){
+            //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
+            agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
         }
-        return FAIL;
+        return SUCCESS;
+
     }
 
-    @Transactional
-    public ReturnT<String> startCarryWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
-        int code = agvWrkMastService.startWrk(agvWrkMastList,"carry");
-        if(code == 0){
-            agvWrkMastList.forEach(agvWrkMast -> {
-                //202.RCS鍙栬揣涓�
-                agvWrkMast.setWrkSts(202L);
-                agvWrkMastService.updateById(agvWrkMast);
-            });
-            //agvWrkMastService.updateBatchById(agvWrkMastList);
-
-            return SUCCESS;
-        }
-
-        return FAIL;
-    }
+//    @Transactional
+//    public ReturnT<String> startCarryWrk(AgvWrkMast agvWrkMast) throws IOException {
+//        //log.info(agvWrkMastList.toString());
+//        //浠诲姟杩囨护锛岃繃婊ゆ帀宸插瓨鍦ㄧ浉鍚岀洰鏍囧簱浣嶇殑宸ヤ綔妗�
+//        //agvWrkMastList = filter(agvWrkMastList);
+//        int code = agvWrkMastService.startWrk(agvWrkMast);
+//        //log.info(agvWrkMastList.toString());
+//        if (Cools.isEmpty(agvWrkMastList)){
+//            return SUCCESS;
+//        }
+//        if(code == 0){
+//            agvWrkMastList.forEach(agvWrkMast -> {
+//                //202.RCS鍙栬揣涓�
+//                agvWrkMast.setWrkSts(202L);
+//                agvWrkMastService.updateById(agvWrkMast);
+//            });
+//            //agvWrkMastService.updateBatchById(agvWrkMastList);
+//
+//            return SUCCESS;
+//        }
+//
+//        return FAIL;
+//    }
 
     @Synchronized
     @Transactional
@@ -208,6 +256,15 @@
                 log.info("after锛�" + devNoMap.toString()  +  ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo());
             }
         });
+
+        return SUCCESS;
+    }
+
+    @Synchronized
+    @Transactional
+    public ReturnT<String> autoEmptyOut(AgvBasDevp agvBasDevp) {
+
+        agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(),0,9527L);
 
         return SUCCESS;
     }
@@ -234,4 +291,17 @@
             }
         }
     }
+
+    private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList){
+        return agvWrkMastList.stream().filter(agvWrkMast -> {
+            AgvWrkMast agvWrkMastWroking = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", agvWrkMast.getLocNo()));
+            if(!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts()<=202){
+                System.out.println("source_loc_no > 1");
+                return false;
+            }
+            log.info(agvWrkMast.toString());
+            int num = agvWrkMastService.selectCount(new EntityWrapper<AgvWrkMast>().eq("loc_no", agvWrkMast.getLocNo()));
+            return num <= maxWrokNum;
+        }).collect(Collectors.toList());
+    }
 }

--
Gitblit v1.9.1