From 6efee0aeb0bada6e10af55e13d469ff52572fdfb Mon Sep 17 00:00:00 2001
From: lsh <1>
Date: 星期四, 25 一月 2024 13:51:31 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  603 ++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 426 insertions(+), 177 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index d9f635e..db7b609 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -47,6 +47,7 @@
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -98,6 +99,8 @@
     private WrkMastStaMapper wrkMastStaMapper;
     @Autowired
     private BasRgvMapMapper basRgvMapMapper;
+    @Autowired
+    private RgvOneSignMapper rgvOneSignMapper;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -385,7 +388,7 @@
 
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
 //                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo());
+                    WrkMast wrkMast = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"7");
                     if (wrkMast == null) {
                         // 鏃犳嫞鏂欐暟鎹�
                         continue;
@@ -395,64 +398,67 @@
                         continue;
                     }
 
-                    // 鑾峰彇鐩爣绔�
-                    Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                            .eq("type_no", wrkMast.getIoType() - 50)
-                            .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
-                            .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
-                    StaDesc staDesc = staDescService.selectOne(wrapper);
-                    if (Cools.isEmpty(staDesc)) {
-                        log.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
-                        continue;
-                    }
-
+                    //   鑾峰彇搴撲綅鍙�
                     try {
-                        // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-                        if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
-                            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+                        SearchLocParam param = new SearchLocParam();
+                        param.setBarcode(wrkMast.getBarcode());
+                        param.setIoType(wrkMast.getIoType());
+                        param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
+                        param.setLocType1((short)1);
+                        String response = "";
+                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+                        try {
+                            response = new HttpHandler.Builder()
+                                    .setUri(wmsUrl)
+                                    .setPath("/rpc/pakin2/loc/v1")
+                                    .setJson(JSON.toJSONString(param))
+                                    .setTimeout(15, TimeUnit.SECONDS)
+                                    .build()
+                                    .doPost();
+                        } catch(Exception e){
+                            log.error("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+                            log.error("stnToCrnStnPick2===>>鐩樼偣鏌ュ簱浣嶅叆搴撴帴鍙eけ璐�", e);
+                            e.printStackTrace();
+                            continue;
                         }
-                        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-                        if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
-                            throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"涓嬪彂鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS杩斿洖缁撴灉===>>" + response);
+                        if(response.equals("")) {
+                            continue;
                         }
-
-                        Date now = new Date();
-                        // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
-                        Integer staNo = staDesc.getCrnStn();
-                        // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
-                        wrkMast.setIoTime(now);
-                        wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
-                        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
-                        wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
-                        wrkMast.setStaNo(staNo); // 鐩爣绔�
-                        wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
-                        wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
-                        wrkMast.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
-                        }
-                        // 鏇存柊鏄庣粏妗o_time (鍘嗗彶妗e叧鑱斾娇鐢級
-                        wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
-                        // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
-                        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
-                        locMast.setLocSts("Q");
-                        locMast.setModiTime(new Date());
-                        if (!locMastService.updateById(locMast)) {
-                            throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+                        JSONObject jsonObject = JSON.parseObject(response);
+//                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+                        Integer code = jsonObject.getInteger("code");
+                        if (code == 200) {
+                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+                            if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getStaNo())) {
+                                log.error("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶅け璐�===>>" + jsonObject.toJSONString());
+                            } else {
+                                log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString());
+                                try {
+                                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+                                    staProtocol.setWorkNo(wrkMast.getWrkNo());
+                                    staProtocol.setStaNo(dto.getStaNo());
+                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                                    ledThread.errorReset();
+                                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                                    if (!result) {
+                                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                                    }
+                                    log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣/鎷f枡鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
+                                } catch (Exception e) {
+                                    log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
+                                    e.printStackTrace();
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                }
+                            }
+                        } else {
+                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response);
                         }
                     } catch (Exception e) {
+                        log.error("stnToCrnStnPick2===>>fail", e);
                         e.printStackTrace();
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        continue;
-                    }
-
-                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(wrkMast.getStaNo());
-                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    if (!result) {
-                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
                     }
 
                 }
@@ -487,19 +493,6 @@
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep4(staProtocol.getSiteId(),"3");
 
                     if (wrkMast == null) {
-//                        WrkMast wrkMast1 = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"3");
-//                        if (Cools.isEmpty(wrkMast1) && staProtocol.isEmptyMk()){
-//                            WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(staProtocol.getSiteId() + 9999L);
-//                            if (Cools.isEmpty(wrkMastSta)){
-//                                WrkMastSta wrkMastSta1 = new WrkMastSta(new Date(),staProtocol.getSiteId());
-//                                wrkMastSta1.setType(2);
-//                                wrkMastSta1.setWrkType(1);
-//                                wrkMastStaMapper.insert(wrkMastSta1);
-//                            }
-//                            continue;
-//                        }
-//                        log.error("绔欑偣鍙�"+staProtocol.getSiteId()+"鏈煡璇㈠埌宸ヤ綔妗f锛�");
-                        // 鏃犳嫞鏂欐暟鎹�
                         continue;
                     }
                     if (staProtocol.isEmptyMk()){
@@ -511,65 +504,137 @@
                         continue;
                     }
 
-                    // 鑾峰彇鐩爣绔�
-                    Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                            .eq("type_no", wrkMast.getIoType() - 50)
-                            .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
-                            .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
-                    StaDesc staDesc = staDescService.selectOne(wrapper);
-                    if (Cools.isEmpty(staDesc)) {
-                        log.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
+                    String barcode = wrkMast.getBarcode();
+                    if(!Cools.isEmpty(barcode)) {
+                        if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+                            continue;
+                        }
+                    } else {
                         continue;
                     }
 
+                    //   鑾峰彇搴撲綅鍙�
                     try {
-                        // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-                        if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
-                            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+                        SearchLocParam param = new SearchLocParam();
+                        param.setBarcode(barcode);
+                        param.setIoType(wrkMast.getIoType());
+                        param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
+                        param.setLocType1((short)1);
+                        String response = "";
+                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+                        try {
+                            response = new HttpHandler.Builder()
+                                    .setUri(wmsUrl)
+                                    .setPath("/rpc/pakin2/loc/v1")
+                                    .setJson(JSON.toJSONString(param))
+                                    .setTimeout(15, TimeUnit.SECONDS)
+                                    .build()
+                                    .doPost();
+                        } catch(Exception e){
+                            log.error("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+                            log.error("stnToCrnStnPick2===>>鐩樼偣鏌ュ簱浣嶅叆搴撴帴鍙eけ璐�", e);
+                            e.printStackTrace();
+                            continue;
                         }
-                        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-                        if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
-                            throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"涓嬪彂鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS杩斿洖缁撴灉===>>" + response);
+                        if(response.equals("")) {
+                            continue;
                         }
-
-                        Date now = new Date();
-                        // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
-                        Integer staNo = staDesc.getCrnStn();
-                        // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
-                        wrkMast.setIoTime(now);
-                        wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
-                        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
-                        wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
-                        wrkMast.setStaNo(staNo); // 鐩爣绔�
-                        wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
-                        wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
-                        wrkMast.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
-                        }
-                        // 鏇存柊鏄庣粏妗o_time (鍘嗗彶妗e叧鑱斾娇鐢級
-                        wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
-                        // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
-                        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
-                        locMast.setLocSts("Q");
-                        locMast.setModiTime(new Date());
-                        if (!locMastService.updateById(locMast)) {
-                            throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+                        JSONObject jsonObject = JSON.parseObject(response);
+//                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+                        Integer code = jsonObject.getInteger("code");
+                        if (code == 200) {
+                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+                            if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getStaNo())) {
+                                log.error("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶅け璐�===>>" + jsonObject.toJSONString());
+                            } else {
+                                log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString());
+                                try {
+                                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+                                    staProtocol.setWorkNo(wrkMast.getWrkNo());
+                                    staProtocol.setStaNo(dto.getStaNo());
+                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                                    ledThread.errorReset();
+                                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                                    if (!result) {
+                                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                                    }
+                                    log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣/鎷f枡鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
+                                } catch (Exception e) {
+                                    log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
+                                    e.printStackTrace();
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                }
+                            }
+                        } else {
+                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response);
                         }
                     } catch (Exception e) {
+                        log.error("stnToCrnStnPick2===>>fail", e);
                         e.printStackTrace();
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        continue;
                     }
 
-                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(wrkMast.getStaNo());
-                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    if (!result) {
-                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                    }
+//                    // 鑾峰彇鐩爣绔�
+//                    Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+//                            .eq("type_no", wrkMast.getIoType() - 50)
+//                            .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+//                            .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+//                    StaDesc staDesc = staDescService.selectOne(wrapper);
+//                    if (Cools.isEmpty(staDesc)) {
+//                        log.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
+//                        continue;
+//                    }
+//
+//                    try {
+//                        // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+//                        if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
+//                            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+//                        }
+//                        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+//                        if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
+//                            throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+//                        }
+//
+//                        Date now = new Date();
+//                        // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+//                        Integer staNo = staDesc.getCrnStn();
+//                        // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+//                        wrkMast.setIoTime(now);
+//                        wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+//                        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+//                        wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+//                        wrkMast.setStaNo(staNo); // 鐩爣绔�
+//                        wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+//                        wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+//                        wrkMast.setModiTime(now);
+//                        if (wrkMastMapper.updateById(wrkMast) == 0) {
+//                            throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+//                        }
+//                        // 鏇存柊鏄庣粏妗o_time (鍘嗗彶妗e叧鑱斾娇鐢級
+//                        wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
+//                        // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+//                        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+//                        locMast.setLocSts("Q");
+//                        locMast.setModiTime(new Date());
+//                        if (!locMastService.updateById(locMast)) {
+//                            throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+//                        }
+//                    } catch (Exception e) {
+//                        e.printStackTrace();
+//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                        continue;
+//                    }
+//
+//                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+//                    staProtocol.setWorkNo(wrkMast.getWrkNo());
+//                    staProtocol.setStaNo(wrkMast.getStaNo());
+//                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                    if (!result) {
+//                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+//                    }
 
                 }
 
@@ -578,6 +643,164 @@
         }
     }
 
+    /**
+     * 2妤�212鍛煎彨绌烘澘
+     */
+    public synchronized void stnToCrnStnPick3Auto(Integer sign) {
+        try{
+            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+            StaProtocol staProtocol = devpThread.getStation().get(212);
+            if (staProtocol == null) {
+                return;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo()==0 ){
+                switch (sign){
+                    //鎵ц灏忚溅璐х墿鎼繍浠诲姟
+                    case 1:
+                    case 4:
+                        stnToCrnStnPick3();
+                        return;
+                    //鎵ц灏忚溅绌烘澘鎼繍浠诲姟
+                    case 2://鏀�//鎷嗙洏
+                    case 5://鏀�//鎷嗙洏
+                        stnToCrnStnPick4();
+                        return;
+                    default:
+                        return;
+                }
+            } else if (staProtocol.isAutoing() && staProtocol.isLoading()){
+                switch (sign){
+                    case 3://婊℃斁
+                    case 6://婊℃斁
+                        stnToCrnStnPick5();
+                        return;
+                    default:
+                        return;
+                }
+            }
+        }catch (Exception e){
+            log.error("2妤�212鍛煎彨绌烘澘"+e);
+        }
+    }
+    /**
+     * 2妤�212鍛煎彨绌烘澘
+     */
+    public synchronized void stnToCrnStnPick3() {
+        WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne212();
+        if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=61){//61銆佺瓑寰呯┖鏉�
+            return;
+        }
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            for (DevpSlave.Sta driveSta : devp.getDriveSta()) {
+                if (driveSta.getStaNo()!=215){
+                    continue;
+                }
+                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(driveSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo()==0
+                        || (staProtocol.getWorkNo()>9899 && staProtocol.getWorkNo()<10000)) ){
+                    boolean result1 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol));
+
+                    staProtocol.setWorkNo(wrkMast.getWrkNo()-1);
+                    staProtocol.setStaNo(driveSta.getStaNo()==215? 217:221);
+                    boolean result2 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    if (!result2) {
+                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                    }
+                    wrkMast.setWrkSts(62L);
+                    wrkMastMapper.updateById(wrkMast);
+
+                    boolean result3 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol));
+                    return;
+                }
+            }
+        }
+    }
+
+    /**
+     * 2妤�212鍛煎彨绌烘澘
+     */
+    public synchronized void stnToCrnStnPick4() {
+        WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne212();
+        if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=62){//62銆佺瓑寰呭皬杞︽惉杩�
+            return;
+        }
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            for (DevpSlave.Sta driveSta : devp.getInSta()) {
+                if (driveSta.getStaNo()!=217){
+                    continue;
+                }
+                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(driveSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                StaProtocol staProtocol212 = devpThread.getStation().get(212);
+                if (staProtocol212 == null) {
+                    continue;
+                } else {
+                    staProtocol212 = staProtocol212.clone();
+                }
+                if (staProtocol212.isAutoing() && !staProtocol212.isLoading() && staProtocol212.getWorkNo()==0){
+                    if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo()==0
+                            || (staProtocol.getWorkNo()>9899 && staProtocol.getWorkNo()<10000) || staProtocol.getWorkNo()==wrkMast.getWrkNo()-1) ){
+//                        boolean result1 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol));
+
+                        staProtocol.setWorkNo(wrkMast.getWrkNo());
+                        staProtocol.setStaNo(212);
+                        boolean result2 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        if (!result2) {
+                            log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                        }
+                        wrkMast.setWrkSts(63L);
+                        wrkMastMapper.updateById(wrkMast);
+
+//                        boolean result3 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol));
+                        return;
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 2妤�212鍛煎彨绌烘澘
+     */
+    public synchronized void stnToCrnStnPick5() {
+        WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne212();
+        if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=63){//63銆佺瓑寰呭畬鎴�
+            return;
+        }
+
+        // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+        StaProtocol staProtocol = devpThread.getStation().get(212);
+        if (staProtocol == null) {
+            return;
+        } else {
+            staProtocol = staProtocol.clone();
+        }
+        if (staProtocol.isAutoing() && staProtocol.isLoading()){
+//            boolean result1 = MessageQueue.offer(SlaveType.Devp, 2, new Task(3, staProtocol));
+
+            wrkMast.setWrkSts(64L);
+            wrkMastMapper.updateById(wrkMast);
+
+//            boolean result3 = MessageQueue.offer(SlaveType.Devp, 2, new Task(4, staProtocol));
+            return;
+        }
+    }
     /**
      * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  鎷嗗灈浣嶇疆
      */
@@ -1285,6 +1508,13 @@
             if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
                 log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
                 continue;
+            }
+            //閫�搴撴ā寮忚烦杩�118銆�119鍑哄簱浠诲姟
+            if (wrkMast.getStaNo()==118 || wrkMast.getStaNo()==119){
+                RgvOneSign rgvOneSign = rgvOneSignMapper.selectOneSign();
+                if (Cools.isEmpty(rgvOneSign) || rgvOneSign.getRgvOneSign()==1){
+                    continue;
+                }
             }
             // 鑾峰彇婧愬簱浣嶄俊鎭�
             LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
@@ -2011,6 +2241,10 @@
      */
     public synchronized void storeEmptyPlt3() {
         try{
+            RgvOneSign rgvOneSign = rgvOneSignMapper.selectOneSign();
+            if (Cools.isEmpty(rgvOneSign) || rgvOneSign.getRgvOneSign()==1){
+                return;
+            }
             for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
                 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
                 RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
@@ -2130,6 +2364,10 @@
                         ledCommand.setTitle("鐩樼偣鍑哄簱");
                         break;
                     case 110:
+                        ledCommand.setTitle("绌烘澘鍑哄簱");
+                        ledCommand.setEmptyMk(true);
+                        break;
+                    case 212:
                         ledCommand.setTitle("绌烘澘鍑哄簱");
                         ledCommand.setEmptyMk(true);
                         break;
@@ -2738,10 +2976,10 @@
      */
     public synchronized void stackingCompletionDriveTray() {
         try {
-            int[] staNos=new int[]{216,220,123};//(3涓叆搴撶珯鐐癸紝1妤�1涓��璐х爜鍨涚珯锛�2妤间袱涓叆搴撶爜鍨涚珯)
+            int[] staNos=new int[]{215,219};//(2妤间袱涓叆搴撶爜鍨涚珯)
             for (int staNo : staNos){
                 BasDevp basDevp = basDevpService.selectById(staNo);
-                if (basDevp.getWrkNo()!=9992 || Cools.isEmpty(basDevp.getBarcode())){
+                if ((basDevp.getWrkNo()!=0 && (basDevp.getWrkNo()<9900 || basDevp.getWrkNo()>9999)) || Cools.isEmpty(basDevp.getBarcode())){
                     continue;
                 }
                 Integer zpallet = waitPakinMapper.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", basDevp.getBarcode()).eq("status","N"));
@@ -2772,11 +3010,11 @@
                         && staProtocol.isLoading()
                         && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk()
-                        && staProtocol.getWorkNo() == 9992
+                        && (basDevp.getWrkNo()==0 || (basDevp.getWrkNo()>=9900 && basDevp.getWrkNo()<=9999))
                 ) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
-
-                    staProtocol.setWorkNo(9999);
-                    staProtocol.setStaNo(staNo + 1);
+                    int workNo = commonService.getWorkNo(5);
+                    staProtocol.setWorkNo(workNo);
+                    staProtocol.setStaNo(staNo + 2);
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
                     if (!result) {
@@ -2887,7 +3125,7 @@
                         // 鏃犳嫞鏂欐暟鎹�
                         continue;
                     }
-                    if (!wrkMast.getSheetNo().equals("2") || wrkMast.getIoType()<100 || wrkMast.getWrkSts()!=14){
+                    if (Cools.isEmpty(wrkMast.getSheetNo()) || !wrkMast.getSheetNo().equals("2") || wrkMast.getIoType()<100 || wrkMast.getWrkSts()!=14){
                         continue;
                     }
                     if (wrkMast.getIoType()==101){
@@ -3079,9 +3317,9 @@
                         && staProtocol.isLoading()
                         && basDevp.getReportSign()==0
                 ) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
-                    if (true){
-                        return;
-                    }
+//                    if (true){
+//                        return;
+//                    }
 
                     //浠诲姟瀹屾垚
                     boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol135));
@@ -3090,7 +3328,8 @@
                     }catch (Exception e){ }
                     basDevp135.setReportSign(2);
                     basDevpService.updateById(basDevp135);
-                    staProtocol135.setWorkNo(32222);
+                    int workNo = commonService.getWorkNo(5);
+                    staProtocol135.setWorkNo(workNo);
                     staProtocol135.setStaNo(144);
                     devpThread.setPakMk(staProtocol135.getSiteId(), false);
                     boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol135));
@@ -3148,17 +3387,14 @@
                             log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
                             continue;
                         }
-                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                        if (!rgvComplete){
-                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            break;
-                        }
-
-                        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                        StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
                         WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
                         if (!Cools.isEmpty(wrkMast)){
                             Thread.sleep(200);
+                            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                            StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
+                            if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
+                                continue;
+                            }
                             // 涓嬪彂绔欑偣淇℃伅
                             staProtocol.setWorkNo(wrkMast.getWrkNo());
                             staProtocol.setStaNo(wrkMast.getStaNo());
@@ -3166,22 +3402,27 @@
                                 continue;
                             }
                             log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol);
-                            try{
-                                Thread.sleep(1000);
-                                DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                                StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
-                                log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
-                                if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
-                                    staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
-                                    staProtocolEnd.setStaNo(wrkMast.getStaNo());
-                                    if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
-                                        continue;
-                                    }
-                                    log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
-                                }
-                            }catch (Exception e){
-
-                            }
+//                            try{
+//                                Thread.sleep(1000);
+//                                DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+//                                StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
+//                                log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
+//                                if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
+//                                    staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
+//                                    staProtocolEnd.setStaNo(wrkMast.getStaNo());
+//                                    if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
+//                                        continue;
+//                                    }
+//                                    log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
+//                                }
+//                            }catch (Exception e){
+//
+//                            }
+                        }
+                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+                        if (!rgvComplete){
+                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+                            break;
                         }
                         wrkMastSta.setWrkSts(3);
                         wrkMastStaMapper.updateById(wrkMastSta);
@@ -3204,16 +3445,14 @@
                             log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
                             continue;
                         }
-                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                        if (!rgvComplete){
-                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            break;
-                        }
-                        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                        StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
                         WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
                         if (!Cools.isEmpty(wrkMast)){
                             Thread.sleep(200);
+                            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                            StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
+                            if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
+                                continue;
+                            }
                             // 涓嬪彂绔欑偣淇℃伅
                             staProtocol.setWorkNo(wrkMast.getWrkNo());
                             staProtocol.setStaNo(wrkMast.getStaNo());
@@ -3221,22 +3460,27 @@
                                 continue;
                             }
                             log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol);
-                            try{
-                                Thread.sleep(1000);
-                                DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                                StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
-                                log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
-                                if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
-                                    staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
-                                    staProtocolEnd.setStaNo(wrkMast.getStaNo());
-                                    if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
-                                        continue;
-                                    }
-                                    log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
-                                }
-                            }catch (Exception e){
-
-                            }
+//                            try{
+//                                Thread.sleep(1000);
+//                                DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+//                                StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
+//                                log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
+//                                if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
+//                                    staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
+//                                    staProtocolEnd.setStaNo(wrkMast.getStaNo());
+//                                    if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
+//                                        continue;
+//                                    }
+//                                    log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
+//                                }
+//                            }catch (Exception e){
+//
+//                            }
+                        }
+                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+                        if (!rgvComplete){
+                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+                            break;
                         }
                         wrkMastSta.setWrkSts(3);
                         wrkMastStaMapper.updateById(wrkMastSta);
@@ -3255,7 +3499,8 @@
     /**
      * 鍏ュ嚭搴�  ===>>  灏忚溅浣滀笟涓嬪彂
      */
-    public synchronized void rgvIoExecute(Integer sign) {
+    public synchronized boolean rgvIoExecute(Integer sign) {
+        boolean rgvIoExecuteSign = false;
         try{
             for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
                 // 鑾峰彇灏忚溅淇℃伅
@@ -3304,7 +3549,7 @@
                             break;
                     }
                 }
-                for (int signCount = 1;!signWork && signCount<8;signCount++){
+                for (int signCount = 1;!signWork && signCount<7;signCount++){
                     switch (signCount){
                         case 1://鎵ц灏忚溅璐х墿鎼繍浠诲姟
                             signWork = rgvRunWrkMastFullSta();
@@ -3325,18 +3570,22 @@
 //                            signWork = rgvRunWrkMastEmptyStaPut();
                             break;
                         default:
-                            if (sign>6){
-                                rgvRunWrkMastEmptyStaAvoidance();//閬胯
-                                signWork = true;
-                            }
                             break;
                     }
                 }
-
+                if (!rgvIoExecuteSign){
+                    rgvIoExecuteSign = signWork;
+                }
+            }
+            if (!rgvIoExecuteSign){
+                if (sign>6){
+                    rgvRunWrkMastEmptyStaAvoidance();//閬胯
+                }
             }
         }catch (Exception e){
             log.error("RGV灏忚溅浠诲姟涓嬪彂鎶ラ敊"+e);
         }
+        return rgvIoExecuteSign;
     }
     /**
      * 鎵ц灏忚溅鎼繍浠诲姟

--
Gitblit v1.9.1