From 3adff2c549121bc166f49aa8de681265cd87b2d9 Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期四, 19 六月 2025 09:49:09 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  141 ++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 115 insertions(+), 26 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 d862449..a6f9389 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -29,6 +29,7 @@
 import com.zy.core.enums.*;
 import com.zy.core.model.CrnSlave;
 import com.zy.core.model.DevpSlave;
+import com.zy.core.model.LedSlave;
 import com.zy.core.model.Task;
 import com.zy.core.model.command.CommandPackage;
 import com.zy.core.model.command.CrnCommand;
@@ -36,6 +37,7 @@
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.BarcodeThread;
+import com.zy.core.thread.LedThread;
 import com.zy.core.thread.SiemensDevpThread;
 import com.zy.system.entity.Config;
 import com.zy.system.service.ConfigService;
@@ -304,6 +306,8 @@
                     }
                     Short workNo = staProtocol.getWorkNo();
                     Short stano = staProtocol.getStaNo();
+                    //led
+                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
 
                     // 灏哄妫�娴嬪紓甯�
                     boolean back = false;
@@ -343,27 +347,34 @@
                             && staProtocol.isPakMk()) {
                         // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                         BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
-                        if (barcodeThread == null) {
-                            continue;
-                        }
-                        String BoxNo = barcodeThread.getBarcode();
-                        TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
-                        if (!Cools.isEmpty(taskWrk1)) {
-                            log.info("鎵樼洏鐮侊細" + BoxNo + "浠诲姟妗e瓨鍦�");
-                            if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
-                                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                                        .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
-                                if (Cools.isEmpty(staDesc)) {
-                                    return;
-                                } else {
-                                    continue;
+                        String BoxNo = "";
+                        if (barcodeThread != null) {
+                            BoxNo = barcodeThread.getBarcode();
+                            TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
+                            if (!Cools.isEmpty(taskWrk1)) {
+                                log.info("鎵樼洏鐮侊細" + BoxNo + "浠诲姟妗e瓨鍦�");
+                                if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
+                                    StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+                                            .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+                                    if (Cools.isEmpty(staDesc)) {
+                                        return;
+                                    } else {
+                                        continue;
+                                    }
+                                }
+                            }
+                            if (back) {
+                                storageEscalationParam.setWCSStatus(1);
+                                storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
+                                // led 寮傚父鏄剧ず
+                                if (ledThread != null) {
+                                    String errorMsg = errMsg;
+                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                                 }
                             }
                         }
-                        if (back) {
-                            storageEscalationParam.setWCSStatus(1);
-                            storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
-                        }
+
+
                         storageEscalationParam.setBoxNo(BoxNo);
                         //鏄惁婊℃澘 1婊℃澘  0绌烘澘
                         storageEscalationParam.setStaType(staProtocol.isEmptyMk() ? 0 : 1);
@@ -432,6 +443,11 @@
                                             }
                                         }
                                     } else {
+                                        // led 寮傚父鏄剧ず
+                                        if (ledThread != null) {
+                                            String errorMsg = "宸叉湁鍏ュ簱浠诲姟锛侊紒锛�";
+                                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
+                                        }
                                         staProtocol.setWorkNo((short) 9991);
                                         staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                         devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -439,6 +455,13 @@
                                     }
 
                                 } else {
+
+                                    // led 寮傚父鏄剧ず
+                                    if (ledThread != null) {
+                                        String errorMsg = jsonObject.getString("ErrorMessage");
+                                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
+                                    }
+
                                     staProtocol.setWorkNo((short) 9991);
                                     staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                     devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -498,19 +521,28 @@
                         staProtocol = staProtocol.clone();
                     }
                     Short workNo = staProtocol.getWorkNo();
+                    //led
+                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+
                     // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                     if (staProtocol.isAutoing() && staProtocol.isLoading()
                             && staProtocol.isInEnable()
                             && staProtocol.isPakMk()) {
                         // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                         String BoxNo = "";
+                        //绔欑偣鎷f枡鍥炲簱浠诲姟鏄細鏈変竴鏉�
+                        TaskWrk taskWrkk =taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("start_point",staProtocol.getSiteId()));
+                        if (!Cools.isEmpty(taskWrkk)) {
+                            continue;
+                        }
                         if(!staProtocol.isEmptyMk()&&staProtocol.getWorkNo()<9990){
-                            TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("task_no", workNo));
+
+                            TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no", workNo));
 
                             if (!Cools.isEmpty(taskWrk1)) {
                                 BoxNo = taskWrk1.getBarcode();
                             } else {
-                                TaskWrkLog taskWrkLog = taskWrkLogService.selectOne(new EntityWrapper<TaskWrkLog>().eq("task_no", workNo).orderBy("modi_time", false));
+                                TaskWrkLog taskWrkLog = taskWrkLogService.selectOne(new EntityWrapper<TaskWrkLog>().eq("wrk_no", workNo).orderBy("modi_time", false));
                                 if (taskWrkLog != null) {
                                     BoxNo = taskWrkLog.getBarcode();
                                 }
@@ -536,6 +568,7 @@
 
                             if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("ReturnStatus")) && jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) {
                                 Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
+
                                 // 鍒涙柊涓�涓叆搴撳伐浣滄。
                                 TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
                                 if (Cools.isEmpty(taskWrk)) {
@@ -579,6 +612,11 @@
                                         }
                                     }
                                 } else {
+                                    // led 寮傚父鏄剧ず
+                                    if (ledThread != null) {
+                                        String errorMsg = "浠诲姟宸插瓨鍦紒锛侊紒锛�";
+                                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
+                                    }
                                     staProtocol.setWorkNo((short) 9991);
                                     staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                     devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -586,6 +624,11 @@
                                 }
 
                             } else {
+                                // led 寮傚父鏄剧ず
+                                if (ledThread != null) {
+                                    String errorMsg = jsonObject.getString("ErrorMessage");
+                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
+                                }
                                 staProtocol.setWorkNo((short) 9991);
                                 staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                 devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -932,7 +975,7 @@
                             staProtocol.setStaNo(staDesc.getStnNo().shortValue());
                             boolean offer = false;
                             try {
-                                offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                                offer = MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol));
                             } catch (Exception e) {
                                 log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e);
                                 log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer);
@@ -1118,9 +1161,19 @@
 
                     LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
                     //鍒ゆ柇鍏跺簱浣嶆槸鍚︿负娣卞簱浣嶏紝濡傛灉涓烘繁搴撲綅鎵惧叾娴呭簱浣嶆槸閮芥湁璐�
-                    if (locMast.getRow1() == 8 || locMast.getRow1() == 5) {
+                    if (locMast.getRow1() == 5) {
                         LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
                                 .eq("row1", (locMast.getRow1() + 1))
+                                .eq("bay1", locMast.getBay1())
+                                .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
+                        if (!Cools.isEmpty(locMast1)) {
+                            log.info(locMast.getLocNo() + "鍑烘繁搴撲綅锛屾祬搴撲綅鏈夎揣");
+                            continue;
+                        }
+                    }
+                    if (locMast.getRow1() == 8) {
+                        LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+                                .eq("row1", (locMast.getRow1() - 1 ))
                                 .eq("bay1", locMast.getBay1())
                                 .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
                         if (!Cools.isEmpty(locMast1)) {
@@ -1771,7 +1824,6 @@
     private TaskWrk createTask1(Result result, String barcode,Integer staNo) {
         String locNo = Utils.Fusion(result.getRow(), result.getFloor(), result.getColumn());
 
-
         Date now = new Date();
         TaskWrk taskWrk = new TaskWrk();
         int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
@@ -1779,11 +1831,9 @@
         taskWrk.setWrkNo(workNo1);
         taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹
         taskWrk.setCreateTime(now);
-        taskWrk.setIoType(1);//浠诲姟绫诲瀷
+        taskWrk.setIoType(1);//浠诲姟绫诲瀷 鍏ュ簱
         taskWrk.setIoPri(13);//浼樺厛绾�
         taskWrk.setBarcode(barcode);//鏉$爜
-        LocMast locMast = locMastService.selectByLocNo(locNo);
-        taskWrk.setCrnNo(locMast.getCrnNo());
         taskWrk.setTargetPoint(locNo);
         taskWrk.setStartPoint(staNo+"");
         taskWrk.setCrnNo(Integer.valueOf(result.getAlley()));//鍫嗗灈鏈哄彿
@@ -1839,4 +1889,43 @@
         return taskWrk;
     }
 
+    //----------------------------------------------------------鐢佃鏈烘樉绀哄鐞�----------------------------------------
+    /**
+     * 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
+     */
+    public synchronized void ledReset(Integer mark) {
+
+//        log.info(""+mark+" - 0"+" - 寮�濮嬫墽琛�:鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅");
+        for (LedSlave led : slaveProperties.getLed()) {
+
+            // 鑾峰彇杈撻�佺嚎plc绾跨▼
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
+            // 鍛戒护闆嗗悎
+            boolean reset = true;
+            for (Integer staNo : led.getStaArr()) {
+                // 鑾峰彇鍙夎溅绔欑偣
+                StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                if (staProtocol == null) {
+                    continue;
+                }
+                if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) {
+                    reset = false;
+                    break;
+                }
+            }
+            // 鑾峰彇led绾跨▼
+            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+            // led鏄剧ず榛樿鍐呭
+            if (reset && !ledThread.isLedMk()) {
+                ledThread.setLedMk(true);
+                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) {
+                    log.error(""+mark+" - 1"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                } else {
+
+                }
+            }
+        }
+//        log.info(""+mark+" - 0"+" - 鎵ц瀹屾垚锛氬叾浠�  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅");
+    }
+
 }

--
Gitblit v1.9.1