From 4d2609f0e8c9fbb75eed02fddec04dc9c4538767 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 15 十一月 2023 15:23:20 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/model/CrnSlave.java               |    6 +
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  139 ++++++++++++++++++++-------
 src/main/java/com/zy/core/MainProcess.java                  |   34 ------
 src/main/resources/application.yml                          |   73 ++++++++------
 4 files changed, 152 insertions(+), 100 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 52964b6..e9739c2 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -46,10 +46,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -2100,43 +2097,111 @@
         }
     }
 
-    public synchronized void autoEmptyOut() {
-        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        Integer autoOutSite = 12;
-        //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
-        StaProtocol staProtocol = devpThread.getStation().get(autoOutSite);
-        if (staProtocol == null) {
-            return;
-        } else {
-            staProtocol = staProtocol.clone();
-        }
-        if (staProtocol.isAutoing()  //鑷姩
-                && !staProtocol.isLoading()  //鏃犵墿
-                && staProtocol.isOutEnable()  //鍙嚭淇″彿
-                && staProtocol.getWorkNo() == 0
-        ) {
-            WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(autoOutSite);
-            if (null != pakoutEmpty) {
-                return;
-            }
-            try {
-                String response = new HttpHandler.Builder()
-                        .setUri(wmsUrl)
-                        .setPath("/rpc/auto/emptyOut/v1")
-                        .build()
-                        .doPost();
-                JSONObject jsonObject = JSON.parseObject(response);
-                if (jsonObject.getInteger("code").equals(200)) {
-                    JSONObject data = (JSONObject) jsonObject.get("data");
-                    log.info((String) data.get("msg"));
+    /**
+     * 鎵弿纰熺洏鏈鸿嚜鍔ㄥ叆搴撶┖鎵樼洏
+     */
+    public synchronized void autoEmptyIn() {
+        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+            // 閬嶅巻绌烘澘鍏ュ簱鍙�
+            for (CrnSlave.CrnStn emptyInStn : crnSlave.getEmptyCrnInStn()) {
+                // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, emptyInStn.getDevpPlcId());
+                StaProtocol staProtocol = devpThread.getStation().get(emptyInStn.getStaNo());
+                if (staProtocol == null) {
+                    continue;
                 } else {
-                    log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
+                    staProtocol = staProtocol.clone();
                 }
-            } catch (Exception e) {
-                e.printStackTrace();
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+
+                // 绔欑偣鏉′欢鍒ゆ柇
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
+                        && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() >= 9990
+                        && staProtocol.getWorkNo() <= 9999)) {
+                    try {
+                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+
+                        SearchLocParam param = new SearchLocParam();
+                        param.setIoType(10);
+                        param.setSourceStaNo(emptyInStn.getStaNo());
+                        param.setLocType1(locTypeDto.getLocType1());
+                        String response = new HttpHandler.Builder()
+                                .setUri(wmsUrl)
+                                .setPath("/rpc/pakin/loc/v1")
+                                .setJson(JSON.toJSONString(param))
+                                .build()
+                                .doPost();
+                        JSONObject jsonObject = JSON.parseObject(response);
+                        if (jsonObject.getInteger("code").equals(200)) {
+                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+
+                            // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+                            staProtocol.setWorkNo(dto.getWorkNo().shortValue());
+                            staProtocol.setStaNo(dto.getStaNo().shortValue());
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
+                            if (!result) {
+                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                            }
+                        } else {
+                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    }
+
+                }
             }
         }
     }
 
+    /**
+     * 鎵弿鎷嗙洏鏈鸿嚜鍔ㄥ嚭搴撶┖鎵樼洏
+     */
+    public synchronized void autoEmptyOut() {
+        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+            for (CrnSlave.CrnStn emptyOutStn : crnSlave.getEmptyCrnOutStn()) {
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, emptyOutStn.getDevpPlcId());
+                StaProtocol staProtocol = devpThread.getStation().get(emptyOutStn.getStaNo());
+                if (staProtocol == null) {
+                    return;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+
+                if (staProtocol.isAutoing()  //鑷姩
+                        && !staProtocol.isLoading()  //鏃犵墿
+                        && staProtocol.isOutEnable()  //鍙嚭淇″彿
+                        && staProtocol.getWorkNo() == 0
+                ) {
+                    WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(emptyOutStn.getStaNo());
+                    if (null != pakoutEmpty) {
+                        return;
+                    }
+                    try {
+                        HashMap<String, Object> map = new HashMap<>();
+                        map.put("crnNo", crnSlave.getId());
+                        String response = new HttpHandler.Builder()
+                                .setUri(wmsUrl)
+                                .setParams(map)
+                                .setPath("/rpc/auto/emptyOut/v1")
+                                .build()
+                                .doPost();
+                        JSONObject jsonObject = JSON.parseObject(response);
+                        if (jsonObject.getInteger("code").equals(200)) {
+                            JSONObject data = (JSONObject) jsonObject.get("data");
+                            log.info((String) data.get("msg"));
+                        } else {
+                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
+                        }
+                    } catch (Exception 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 35a4edf..04368e8 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -45,58 +45,32 @@
 
                     // 婕旂ず
                     //mainService.crnDemoOfLocMove1();
-
                     // 婕旂ず 鎵�鏈夊簱浣嶈疆璇�
                     mainService.crnDemoOfLocMove2();
-
-                    // 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
-//                    mainService.ioConvert();
-
                     // 鍏ュ簱  ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
                     mainService.generateStoreWrkFile(); // 缁勬墭
-
                     mainService.generateStoreWrkFile0(); // WMS鍏ュ簱
-
                     // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
                     mainService.stnToCrnStnPick();
-
                     // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
                     mainService.crnStnToOutStn();
-
                     // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
                     mainService.crnIoExecute();
-
-                    // 鍏ュ嚭搴撳寮� ===>> 鍫嗗灈鏈哄懡浠や笅鍙戝悗锛屽紓姝ヤ慨鏀瑰伐浣滄。鐘舵��
-//                    mainService.crnIoWrkMast();
-
                     // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
                     mainService.storeFinished();
-
                     // 鍫嗗灈鏈哄紓甯镐俊鎭褰�
                     mainService.recCrnErr();
-
                     // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
                     mainService.storeEmptyPlt();  // 绌烘澘鍏ュ簱
-
                     // 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
                     mainService.ledExecute();
-
                     // 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
                     mainService.ledReset();
-
                     mainService.outOfDevp();
-
-                    //绌烘墭鐩樿嚜鍔ㄥ嚭搴�
-                    //mainService.autoEmptyOut();
-//                    //绌烘墭鐩樿嚜鍔ㄥ叆搴�
-//                    mainService.autoEmptyIn();
-
-//                    // 鍏朵粬  ===>> 鍏ュ嚭搴撴ā寮忓垏鎹�
-//                    i++;
-//                    if (i > 1) {
-//                        mainService.ioConvert();
-//                        i = 0;
-//                    }
+                    // 鎵弿纰熺洏鏈鸿嚜鍔ㄥ叆搴撶┖鎵樼洏
+                    mainService.autoEmptyIn();
+                    // 鎵弿鎷嗙洏鏈鸿嚜鍔ㄥ嚭搴撶┖鎵樼洏
+                    mainService.autoEmptyOut();
 
                 } catch (Exception e) {
                     e.printStackTrace();
diff --git a/src/main/java/com/zy/core/model/CrnSlave.java b/src/main/java/com/zy/core/model/CrnSlave.java
index cfee50d..8af7e82 100644
--- a/src/main/java/com/zy/core/model/CrnSlave.java
+++ b/src/main/java/com/zy/core/model/CrnSlave.java
@@ -28,6 +28,12 @@
     // 鍫嗗灈鏈哄嚭搴撶珯鐐�
     private List<CrnStn> crnOutStn = new ArrayList<>();
 
+    // 绌烘墭鍏ュ簱绔欑偣
+    private List<CrnStn> emptyCrnInStn = new ArrayList<>();
+
+    // 绌烘墭鍑哄簱绔欑偣
+    private List<CrnStn> emptyCrnOutStn = new ArrayList<>();
+
     @Data
     public static class CrnStn {
 
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 1ebdf02..d2d6e7d 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -57,30 +57,30 @@
     # 鍫嗗灈鏈哄叆搴撶珯1
     crnInStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 102
-      row: 1
-      bay: 1
-      lev: 1
-    # 鍫嗗灈鏈哄叆搴撶珯鐐�2
-    crnInStn[1]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 105
+      staNo: 100
       row: 1
       bay: 1
       lev: 1
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�1
     crnOutStn[0]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 102
-      row: 1
-      bay: 1
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 300
+      row: 3
+      bay: 36
       lev: 1
-    # 鍫嗗灈鏈哄嚭搴撶珯鐐�2
-    crnOutStn[1]:
+    # 绌烘墭鍏ュ簱绔欑偣
+    emptyCrnInStn[0]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 307
+      row: 3
+      bay: 36
+      lev: 1
+    # 绌烘墭鍑哄簱绔欑偣
+    emptyCrnOutStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 105
-      row: 1
-      bay: 1
+      staNo: 103
+      row: 3
+      bay: 36
       lev: 1
   # 鍫嗗灈鏈�2
   crn[1]:
@@ -95,30 +95,37 @@
     # 鍫嗗灈鏈哄叆搴撶珯1
     crnInStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 102
-      row: 1
-      bay: 1
-      lev: 5
-    # 鍫嗗灈鏈哄叆搴撶珯鐐�2
-    crnInStn[1]:
-      devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 105
+      staNo: 203
       row: 1
       bay: 1
       lev: 5
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�1
     crnOutStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 102
-      row: 1
-      bay: 1
+      staNo: 406
+      row: 8
+      bay: 27
       lev: 5
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�2
     crnOutStn[1]:
       devpPlcId: ${wcs-slave.devp[0].id}
-      staNo: 105
-      row: 1
-      bay: 26
+      staNo: 407
+      row: 10
+      bay: 27
+      lev: 1
+    # 绌烘墭鍏ュ簱绔欑偣
+    emptyCrnInStn[0]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 408
+      row: 3
+      bay: 36
+      lev: 1
+    # 绌烘墭鍑哄簱绔欑偣
+    emptyCrnOutStn[0]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 204
+      row: 3
+      bay: 36
       lev: 1
   # 杈撻�佺嚎1
   devp[0]:
@@ -173,10 +180,10 @@
     slot: 0
     # 绌烘澘鍏ュ簱鍙�1
     emptyInSta[0]:
-      staNo: 305
+      staNo: 307
     # 绌烘澘鍏ュ簱鍙�2
     emptyInSta[1]:
-      staNo: 400
+      staNo: 408
     # 鍑哄簱鍙�1
     outSta[0]:
       staNo: 305

--
Gitblit v1.9.1