From a48548b110cc1c80e5ee5e5eedeca8bb31e3f295 Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期五, 31 五月 2024 19:02:30 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java |  596 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 470 insertions(+), 126 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 c19448b..688fa4f 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -3,174 +3,468 @@
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
-import com.zy.asrs.entity.AgvLocDetl;
-import com.zy.asrs.entity.AgvWaitPakin;
-import com.zy.asrs.entity.AgvWrkDetl;
-import com.zy.asrs.entity.AgvWrkMast;
+import com.core.common.R;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
 import com.zy.asrs.service.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
+import lombok.Synchronized;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
+@Slf4j
 @Service
 public class AgvWrkMastHandler extends AbstractHandler<String> {
 
+    @Value("${agvBasDev.maxWorkNum}")
+    private int maxWrokNum;
+
     @Autowired
-    AgvWrkMastService agvWrkMastService;
+    private AgvWrkMastService agvWrkMastService;
     @Autowired
-    AgvLocMastService agvLocMastService;
+    private AgvLocMastService agvLocMastService;
     @Autowired
-    AgvLocDetlService agvLocDetlService;
+    private AgvLocDetlService agvLocDetlService;
     @Autowired
-    AgvWrkMastLogService agvWrkMastLogService;
+    private AgvWrkMastLogService agvWrkMastLogService;
     @Autowired
-    AgvWrkDetlService agvWrkDetlService;
+    private AgvWrkDetlService agvWrkDetlService;
     @Autowired
-    AgvWrkDetlLogService agvWrkDetlLogService;
+    private AgvWrkDetlLogService agvWrkDetlLogService;
     @Autowired
-    AgvWaitPakinService agvWaitPakinService;
+    private AgvWaitPakinService agvWaitPakinService;
     @Autowired
-    AgvWaitPakinLogService agvWaitPakinLogService;
+    private AgvWaitPakinLogService agvWaitPakinLogService;
     @Autowired
-    OrderService orderService;
+    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);
+        try{
+            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){
+
+            //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
+            agvWrkMast.setWrkSts(207L);
+            agvWrkMastService.updateById(agvWrkMast);
             // 绌烘澘鍏ュ簱 璁剧疆搴撲綅鐘舵�佷负D.绌烘《/绌烘爤鏉�
-            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D");
-        }else{
-            //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱
-            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F");
-        }
-        //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
-        agvWrkMastLogService.save(wrkNo);
-        //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
-        agvWrkDetlLogService.save(wrkNo);
-        //鍒犻櫎AGV宸ヤ綔妗�
-        agvWrkMastService.deleteById(wrkNo);
-        //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
-        agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
-        //绫诲瀷涓哄叆搴撴椂
-        if(agvWrkMast.getIoType() == 1){
-            //鏇存柊鐩爣搴撲綅鏄庣粏
-            agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo);
-            //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
-            agvWaitPakinLogService.save(barcode);
-            //鍒犻櫎鍏ュ簱閫氱煡妗�
-            agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode));
-        }
-        //绫诲瀷涓哄簱浣嶇Щ杞椂
-        if(agvWrkMast.getIoType() == 11){
-            //鏇存柊搴撳瓨鏄庣粏
-            agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
-            //淇敼婧愬簱浣嶇姸鎬佷负O
-            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O");
-        }
-        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);
-            });
-        }
+            String locSts = agvWrkMast.getIoType() == 10 ? "D" : "F";
 
-        return SUCCESS;
+            if (agvWrkMast.getIoType() != 111) {
+                //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
+                agvWrkMastLogService.save(agvWrkMast);
+                //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+                agvWrkDetlLogService.save(wrkNo);
+            }
+
+            switch (agvWrkMast.getIoType()){
+                case 1:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    //鏇存柊鐩爣搴撲綅鏄庣粏
+                    log.info("鏇存柊鐩爣搴撲綅鏄庣粏 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo);
+                    agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo);
+                    //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
+                    boolean save = agvWaitPakinLogService.save(barcode);
+                    //鍒犻櫎鍏ュ簱閫氱煡妗�
+                    log.info("鍒犻櫎鍏ュ簱閫氱煡妗� supp_code: " + barcode);
+                    agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",barcode));
+                    break;
+                case 10:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+                    break;
+                case 11:
+                case 12:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    //鏇存柊搴撳瓨鏄庣粏
+                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
+                    //淇敼婧愬簱浣嶇姸鎬佷负O
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+                    break;
+                case 53:
+                    //淇敼宸ヤ綔鍏氭槑缁�
+                    //淇敼搴撳瓨淇℃伅
+                    List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+                    agvWrkDetlList.forEach(agvWrkDetl -> {
+                        AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
+                        if (!Cools.isEmpty(agvLocDetl)) {
+                            double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme();
+                            agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
+                        }
+                        //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+
+                    });
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+                    break;
+                case 58:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+                    break;
+                case 108:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    //鏇存柊搴撳瓨鏄庣粏
+                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
+                    //淇敼婧愬簱浣嶇姸鎬佷负O
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+                    break;
+                case 109:
+                    // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+                    if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                        // 鎺ラ┏浣� -- 搴撲綅
+                    } else {
+                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    }
+                    // 鎺ラ┏浣� -- 搴撲綅
+                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+                        // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+                    } else {
+                        //淇敼婧愬簱浣嶇姸鎬佷负O
+                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+                    }
+                    break;
+                case 111:
+                    // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+                    if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                        // 鎺ラ┏浣� -- 搴撲綅
+                    } else {
+                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    }
+
+                    // 鎺ラ┏浣� -- 搴撲綅
+                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+                        // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+                    } else {
+                        //淇敼婧愬簱浣嶇姸鎬佷负O
+                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+                    }
+                    break;
+                case 113:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    // 鎺ラ┏浣� -- 搴撲綅
+                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+                    }
+                    break;
+                case 1:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    //鏇存柊鐩爣搴撲綅鏄庣粏
+                    log.info("鏇存柊鐩爣搴撲綅鏄庣粏 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo);
+                    agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo);
+                    //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
+                    boolean save = agvWaitPakinLogService.save(barcode);
+                    //鍒犻櫎鍏ュ簱閫氱煡妗�
+                    log.info("鍒犻櫎鍏ュ簱閫氱煡妗� supp_code: " + barcode);
+                    agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",barcode));
+                    break;
+                case 11:
+                case 12:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    //鏇存柊搴撳瓨鏄庣粏
+                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
+                    //淇敼婧愬簱浣嶇姸鎬佷负O
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+                    break;
+                case 108:
+                case 121:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    //鏇存柊搴撳瓨鏄庣粏
+                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
+                    //淇敼婧愬簱浣嶇姸鎬佷负O
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+                    break;
+                case 112:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    // 鎺ラ┏浣� -- 搴撲綅
+                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+                        // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+                    } else {
+                        //淇敼婧愬簱浣嶇姸鎬佷负O
+                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+                    }
+                    break;
+                case 113:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    // 鎺ラ┏浣� -- 搴撲綅
+                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+                    }
+                    break;
+
+
+
+
+
+
+                default:
+                    return null;
+            }
+            if (agvWrkMast.getIoType() != 111) {
+                //鍒犻櫎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;
+        }catch (Exception e){
+            log.error(""+e.getMessage());
+        }
+        return FAIL;
     }
 
 
     @Transactional
     public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) {
-        int wrkNo = agvWrkMast.getWrkNo();
-        String orderNo = getOrderNoByWrkNo(wrkNo);
-        //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
-        agvWrkMast.setWrkSts(207L);
-        agvWrkMastService.updateById(agvWrkMast);
-        //淇敼婧愬簱浣嶇姸鎬佷负O
-        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O");
-        if(agvWrkMast.getIoType() == 101){
-            //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
-            agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
-        }
+        try{
+            int wrkNo = agvWrkMast.getWrkNo();
+            String orderNo = getOrderNoByWrkNo(wrkNo);
+            //淇敼宸ヤ綔妗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()));
+                //鐢熸垚绌烘澘鍏ュ簱浠诲姟
+                Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2));
+                try {
+                    //agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true);
+                    AgvWrkMast wrkMast = new AgvWrkMast();
+                    //宸ヤ綔鐘舵��
+                    wrkMast.setWrkSts(201L);
+                    //鍏ュ嚭搴撶被鍨�
+                    wrkMast.setIoType(10);
+                    wrkMast.setIoTime(new Date());
+                    //浼樺厛绾�
+                    wrkMast.setIoPri(300.0);
+                    //婧愮珯鐐�
+                    wrkMast.setSourceLocNo(agvWrkMast.getLocNo());
+                    //鐩爣绔欑偣
+                    wrkMast.setLocNo(agvWrkMast.getSourceLocNo());
+                    //璐ф灦缂栫爜
+                    wrkMast.setBarcode(agvWrkMast.getBarcode());
+                    //璐ф灦绫诲瀷
+                    wrkMast.setWhsType(Integer.valueOf(agvWrkMast.getBarcode().substring(0, 2)));
 
-        //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
-        agvWrkMastLogService.save(wrkNo);
-        //鐢熸垚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);
-            });
+                    wrkMast.setAppeUser(9527L);
+                    wrkMast.setAppeTime(new Date());
+                    wrkMast.setModiUser(9527L);
+                    wrkMast.setModiTime(new Date());
+
+                    if (!agvWrkMastService.insertByIncrease(wrkMast)) {
+                        throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+                    }
+
+                }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;
+        }catch (Exception e){
+            log.error(""+e.getMessage());
         }
+        return FAIL;
+    }
+
+    @Transactional
+    public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) {
+        try{
+            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()));
+            }
+
+            //鐢熸垚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;
+        }catch (Exception e){
+            log.error(""+e.getMessage());
+        }
+        return FAIL;
+    }
+
+    @Transactional
+    @Synchronized
+    public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException {
+
+        try{
+            //涓嬪彂浠诲姟
+            int startWrkCode = agvWrkMastService.startWrk(agvWrkMast);
+            if(startWrkCode != 0){
+                throw new CoolException("浠诲姟涓嬪彂澶辫触");
+            }
+
+            agvWrkMast.setWrkSts(202L);
+            agvWrkMastService.updateById(agvWrkMast);
+            if(agvWrkMast.getIoType() == 1){
+                //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
+                agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
+            }
+            return SUCCESS;
+        }catch (Exception e){
+            log.error("淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y"+e.getMessage());
+        }
+        return FAIL;
+    }
+
+    @Transactional
+    @Synchronized
+    public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException {
+        
+        //涓嬪彂浠诲姟
+        try{
+            int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast);
+            if(startWrkCode != 0){
+                throw new CoolException("浠诲姟涓嬪彂澶辫触");
+            }
+            return SUCCESS;
+        }catch (Exception e){
+            log.error("浠诲姟涓嬪彂澶辫触"+e.getMessage());
+        }
+        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
+    public ReturnT<String> dealWatiWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+
+        agvWrkMastList.forEach(agvWrkMast -> {
+            //鏌ヨ璇ョ珯鐐规墍鏈夋殏瀛樹綅鍦ㄥ伐浣滄。涓嚭鐜扮殑娆℃暟
+            List<Map<String, Object>> devNoMaps = agvBasDevpService.selectDevNoAndNumBystationCode(agvWrkMast.getLocNo());
+            //鍙栫涓�涓殏瀛樹綅锛屽苟鏌ヨ鍏舵鏁颁笌閰嶇疆鐨勬鏁板仛姣旇緝
+            Map<String, Object> devNoMap = devNoMaps.get(0);
+            if((int)devNoMap.get("num") < maxWrokNum){
+                agvWrkMast.setLocNo(devNoMap.get("dev_no").toString());
+                agvWrkMastService.updateById(agvWrkMast);
+                log.info("after锛�" + devNoMap.toString()  +  ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo());
+            }
+        });
+
         return SUCCESS;
     }
 
+    @Synchronized
     @Transactional
-    public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+    public ReturnT<String> autoEmptyOut(AgvBasDevp agvBasDevp) {
 
-        int startWwrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway");
+        agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(),0,9527L);
 
-        int code = agvWrkMastService.containerMove(agvWrkMastList);
-
-        if(code == 0){
-            agvWrkMastList.forEach(agvWrkMast -> {
-                //202.RCS鍙栬揣涓�
-                agvWrkMast.setWrkSts(202L);
-                agvWrkMastService.updateById(agvWrkMast);
-                if(agvWrkMast.getIoType() == 1){
-                    //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
-                    agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
-                }
-
-            });
-            //agvWrkMastService.updateBatchById(agvWrkMastList);
-
-            return SUCCESS;
-        }
-
-        return FAIL;
-    }
-
-    @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;
+        return SUCCESS;
     }
 
     private String getOrderNoByWrkNo(int wrkNo){
@@ -195,4 +489,54 @@
             }
         }
     }
+
+    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());
+    }
+
+    /*
+  鐢熸垚宸ヤ綔妗�
+   */
+    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor){
+        AgvWrkMast wrkMast = new AgvWrkMast();
+        //宸ヤ綔鐘舵��
+        wrkMast.setWrkSts(wrkSts);
+        //鍏ュ嚭搴撶被鍨�
+        wrkMast.setIoType(ioType);
+        wrkMast.setIoTime(now);
+        //浼樺厛绾�
+        wrkMast.setIoPri(300.0);
+        //婧愮珯鐐�
+        wrkMast.setSourceLocNo(sourceLocNo);
+        //鐩爣绔欑偣
+        wrkMast.setLocNo(locNo);
+        //璐ф灦缂栫爜
+        wrkMast.setBarcode(barcode);
+        //璐ф灦绫诲瀷
+        wrkMast.setWhsType(containerType);
+        // 鐩爣妤煎眰
+        wrkMast.setCrnNo(floor);
+
+        wrkMast.setAppeUser(userId);
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+
+        if (!agvWrkMastService.insertByIncrease(wrkMast)) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+
+        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false));
+
+        return wrkMast;
+    }
 }

--
Gitblit v1.9.1