From bdfbc18dd29ad3c7b3ae0f9ed6345e4c69ddd6c9 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期四, 29 二月 2024 11:08:10 +0800
Subject: [PATCH] #盘点

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  163 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java         |    1 
 src/main/resources/mapper/WrkMastMapper.xml                 |    3 +
 src/main/java/com/zy/core/MainProcess.java                  |   10 ++-
 4 files changed, 173 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 7386c18..4e9911d 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -109,4 +109,5 @@
     WrkMast selectPakoutEmpty(@Param("staNo")Integer outSite);
 
 
+    WrkMast selectPickStep2(@Param("barcode")String barcode);
 }
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 64f28bb..1e62e56 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -46,6 +46,7 @@
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -198,7 +199,7 @@
                     }
                     WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                             .eq("barcode", barcode)
-                            .in("io_type", 107,103));
+                            .in("io_type", 107,103,57));
                     if (!Cools.isEmpty(checkPick)) {
                         continue;
                     }
@@ -470,6 +471,166 @@
 //        News.infoNoLog(""+mark+" - 0"+" - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
     }
 
+
+    //鐩樼偣鍐嶅叆搴�
+    public synchronized void stnToCrnStnPick2(){
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻鎷f枡鍏ュ簱鍙�
+            for (DevpSlave.Sta pickSta : devp.getPickSta()) {
+                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                if (staProtocol.isAutoing()
+                        && staProtocol.isLoading()
+                        && staProtocol.isInEnable()
+                        && !staProtocol.isEmptyMk()
+//                        && staProtocol.getWorkNo() > 0
+                        && staProtocol.isPakMk()){
+
+                    // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+                    if (barcodeThread == null) {
+                        continue;
+                    }
+                    String barcode = barcodeThread.getBarcode();
+                    if(!Cools.isEmpty(barcode)) {
+//                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+                        if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+                            staProtocol.setWorkNo(wrkNo++);
+                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+                            // led 寮傚父鏄剧ず
+                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+                            if (ledThread != null) {
+                                String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+                            }
+                            continue;
+                        }
+                    } else {
+                        staProtocol.setWorkNo(wrkNo++);
+                        staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+
+                        // led 寮傚父鏄剧ず
+                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+                        if (ledThread != null) {
+                            String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+                            MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+                        }
+                        continue;
+                    }
+
+                    WrkMast wrkMast = wrkMastMapper.selectPickStep2(barcode);
+                    if (wrkMast == null) {
+                        // 鏃犵洏鐐规暟鎹�
+                        continue;
+                    }
+
+                    // 鍑哄簱纭淇″彿浣�
+//                    if ((Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) && wrkMast.getIoType() != 107) {
+//                        continue;
+//                    }
+//                    if ( wrkMast.getIoType() != 107 || Cools.isEmpty(wrkMast.getStaNo())
+//                            || Cools.isEmpty(wrkMast.getSourceStaNo())) {
+//                        continue;
+//                    }
+
+                    //   鑾峰彇搴撲綅鍙�
+                    try {
+                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+                        SearchLocParam param = new SearchLocParam();
+                        param.setBarcode(barcode);
+                        param.setIoType(107);
+                        param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
+                        if (!Cools.isEmpty(locMast)){
+                            param.setLocType1(locMast.getLocType1());
+                        }else {
+                            param.setLocType1(locTypeDto.getLocType1());
+                        }
+
+                        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;
+                        }
+                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"涓嬪彂鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS杩斿洖缁撴灉===>>" + response);
+                        if(response.equals("")) {
+                            continue;
+                        }
+                        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((short)161);
+                                    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()+"鐩樼偣鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
+                                } catch (Exception e) {
+                                    log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
+                                    e.printStackTrace();
+                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                }
+                            }
+                        } else {
+                            staProtocol.setWorkNo(wrkNo++);
+                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            if (ledThread != null) {
+                                String errorMsg = jsonObject.getString("msg");
+                                if (!Cools.isEmpty(errorMsg)) {
+                                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+                                }
+                            }
+                            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();
+                    }
+
+                }
+
+            }
+
+        }
+    }
+
     /**
      * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
      */
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index ac59b57..1192aa1 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -51,12 +51,16 @@
 
                     // 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
 //                    mainService.ioConvert();
+
+                    // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
+//                    mainService.stnToCrnStnPick(3);
+                    mainService.stnToCrnStnPick2();
+
                     // 鍏ュ簱  ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
                     mainService.generateStoreWrkFile(1); // 缁勬墭
-                    mainService.generateStoreWrkFile0(2); // WMS鍏ュ簱
+//                    mainService.generateStoreWrkFile0(2); // WMS鍏ュ簱
                     Thread.sleep(500);
-                    // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
-                    mainService.stnToCrnStnPick(3);
+
                     // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
                     mainService.crnStnToOutStn(4);
                     // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 247a32a..c9b43fe 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -185,4 +185,7 @@
     <select id="selectPakoutEmpty" resultMap="BaseResultMap">
         select top 1 * from dbo.asr_wrk_mast where  io_type = 110 and sta_no = #{staNo} order by io_time,wrk_no
     </select>
+    <select id="selectPickStep2" resultMap="BaseResultMap">
+        select top 1 * from asr_wrk_mast where barcode = #{barcode} and (wrk_sts=14 and io_type=107) or (wrk_sts=2 and io_type=57)
+    </select>
 </mapper>

--
Gitblit v1.9.1