From 15b5002fd412a5d33be5d5c6deb63b3d02c77c41 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期二, 23 九月 2025 14:35:39 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/impl/NyLiftThread.java |  155 ++++++++++++++++++++++++++++-----------------------
 1 files changed, 84 insertions(+), 71 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
index e5a01e7..1af1ca3 100644
--- a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
@@ -3,13 +3,10 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
-import com.zy.asrs.entity.BasLift;
 import com.zy.asrs.entity.DeviceConfig;
 import com.zy.asrs.entity.DeviceDataLog;
-import com.zy.asrs.service.BasLiftService;
 import com.zy.asrs.service.DeviceDataLogService;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.ExecuteSupport;
@@ -45,10 +42,11 @@
     private DeviceConfig device;
     private LiftProtocol liftProtocol;
     private RedisUtil redisUtil;
-    LiftPointModel liftPointModel;
+    private LiftPointModel liftPointModel;
     private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>();
     private List<DeviceMsgModel> readResultList = new ArrayList<>();
     private List<DeviceMsgModel> resultList = new ArrayList<>();
+    private String realtimeOriginData = "";
 
     public NyLiftThread(DeviceConfig device, LiftPointModel liftPointModel, List<LiftStation> stationList, RedisUtil redisUtil) {
         this.device = device;
@@ -57,7 +55,7 @@
         //鍒濆鍖栫珯鐐�
         for (LiftStation station : stationList) {
             LiftStaProtocol liftStaProtocol = new LiftStaProtocol();
-            liftStaProtocol.setStaNo(station.getStaNo());//绔欑偣鍙�
+            liftStaProtocol.setSiteId(station.getSiteId());//绔欑偣鍙�
             liftStaProtocol.setLev(station.getLev());//绔欑偣妤煎眰
             String locNo = Utils.getLocNo(station.getRow(), station.getBay(), station.getLev());
             liftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙�
@@ -160,7 +158,7 @@
             if (null == liftProtocol) {
                 liftProtocol = new LiftProtocol();
                 liftProtocol.setLiftNo(device.getDeviceNo());
-                liftProtocol.setProtocolStatus(LiftProtocolStatusType.NONE);
+                liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
 
                 InnerLiftExtend innerLiftExtend = new InnerLiftExtend();
                 liftProtocol.setExtend(innerLiftExtend);
@@ -171,8 +169,8 @@
             liftProtocol.setModel(data.getInteger("model"));
             //PLC浠诲姟鍙�
             liftProtocol.setPlcTaskNo(data.getInteger("plcTaskNo"));
-            //浠诲姟鐘舵��
-            liftProtocol.setProtocolStatus(data.getInteger("protocolStatus"));
+            //璁惧鐘舵��
+            liftProtocol.setDeviceStatus(data.getInteger("deviceStatus"));
             //浠诲姟妯″紡
             liftProtocol.setTaskMode(data.getInteger("taskMode"));
             //鍙栬揣鏁版嵁
@@ -193,26 +191,47 @@
             //************琛ュ厖鎵╁睍瀛楁*************
             InnerLiftExtend liftExtend = (InnerLiftExtend) liftProtocol.getExtend();
             liftProtocol.setExtend(liftExtend);
-            liftExtend.setFrontOverrun(data.getBoolean("frontOverrun"));
-            liftExtend.setBackOverrun(data.getBoolean("backOverrun"));
-            liftExtend.setLeftOverrun(data.getBoolean("leftOverrun"));
-            liftExtend.setRightOverrun(data.getBoolean("rightOverrun"));
-            liftExtend.setOverHeight(data.getBoolean("overHeight"));
-            liftExtend.setOverWeight(data.getBoolean("overWeight"));
+            JSONObject extend = data.getJSONObject("extend");
+            liftExtend.setFrontOverrun(extend.getInteger("frontOverrun") == 1);
+            liftExtend.setBackOverrun(extend.getInteger("backOverrun") == 1);
+            liftExtend.setLeftOverrun(extend.getInteger("leftOverrun") == 1);
+            liftExtend.setRightOverrun(extend.getInteger("rightOverrun") == 1);
+            liftExtend.setOverHeight(extend.getInteger("overHeight") == 1);
+            liftExtend.setOverWeight(extend.getInteger("overWeight") == 1);
+            liftExtend.setPlcTaskNoComplete(extend.getInteger("plcTaskNoComplete"));
 
-            JSONArray trayList = data.getJSONArray("trayList");
-            for (int i = 0; i < trayList.size(); i++) {
-                int hasTray = (int) trayList.get(i);
-                LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i);
-                liftStaProtocol.setHasTray(hasTray == 1);
+            if (!liftExtend.getPlcTaskNoComplete().equals(liftProtocol.getPlcTaskNo())) {
+                //璁惧鐘舵��
+                liftProtocol.setDeviceStatus(LiftDeviceStatusType.BUSY.id);
             }
 
-            JSONArray carList = data.getJSONArray("carList");
-            for (int i = 0; i < carList.size(); i++) {
-                int hasCar = (int) carList.get(i);
-                LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i);
-                liftStaProtocol.setHasCar(hasCar == 1);
+            //璇诲彇绔欑偣
+            JSONArray stationList = data.getJSONArray("stationList");
+            if (stationList != null) {
+                for (int i = 0; i < stationList.size(); i++) {
+                    JSONObject staObj = stationList.getJSONObject(i);
+                    LiftStaProtocol liftStaProtocol = null;
+                    for (LiftStaProtocol staProtocol : liftStaProtocols) {
+                        if(staProtocol.getSiteId().equals(staObj.getInteger("siteId"))){
+                            liftStaProtocol = staProtocol;
+                            break;
+                        }
+                    }
+
+                    if(liftStaProtocol == null){
+                        continue;
+                    }
+
+                    liftStaProtocol.setModel(staObj.getInteger("model") == 1);
+                    liftStaProtocol.setBusy(staObj.getInteger("busy") == 1);
+                    liftStaProtocol.setHasTray(staObj.getInteger("hasTray") == 1);
+                    liftStaProtocol.setDeviceError(staObj.getInteger("deviceError") == 1);
+                    liftStaProtocol.setTaskNo(staObj.getInteger("taskNo"));
+                    liftStaProtocol.setBarcode(staObj.getString("barcode"));
+                }
             }
+
+            this.realtimeOriginData = JSON.toJSONString(data);
 
             if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) {
                 //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
@@ -230,27 +249,7 @@
                 liftProtocol.setDeviceDataLog(System.currentTimeMillis());
             }
 
-            //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
-            BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
-            BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>()
-                    .eq("lift_no", device.getDeviceNo()));
-            if (basLift == null) {
-                basLift = new BasLift();
-                //鎻愬崌鏈哄彿
-                basLift.setLiftNo(liftProtocol.getLiftNo());
-                basLift.setStatus(1);
-                basLiftService.insert(basLift);
-            }
-            //浠诲姟鍙�
-            basLift.setWrkNo(liftProtocol.getTaskNo());
-            //淇敼鏃堕棿
-            basLift.setUpdateTime(new Date());
-            //璁惧鐘舵��
-            basLift.setDeviceStatus(JSON.toJSONString(liftProtocol));
-            if (basLiftService.updateById(basLift)) {
-                OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), liftProtocol.getLiftNo()));
-            }
-
+            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), liftProtocol.getLiftNo()));
         } catch (Exception e) {
             e.printStackTrace();
             OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getDeviceNo(), device.getIp(), device.getPort()));
@@ -381,30 +380,10 @@
 
     @Override
     public CommandResponse reset() {
-        CommandResponse response = new CommandResponse(false);
-        try {
-            LiftCommand resetCommand = getResetCommand(9999);
-
-            //鍙戝嚭璇锋眰
-            String resultKey = requestCommand(resetCommand);
-            //鏌ヨ璇锋眰缁撴灉
-            JSONObject result = queryCommandStatus(resultKey);
-            if (result == null) {
-                return response;//璇锋眰澶辫触
-            }
-            if(!result.getString("result").equals("success")) {
-                return response;//璇锋眰澶辫触
-            }
-
-            this.liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-            response.setMessage(JSON.toJSONString(result));
-            response.setResult(true);
-            return response;
-        } catch (Exception e) {
-            e.printStackTrace();
-            response.setMessage(e.getMessage());
-            return response;
-        }
+        CommandResponse response = new CommandResponse(true);
+        this.setSyncTaskNo(0);
+        this.setProtocolStatus(LiftProtocolStatusType.IDLE);
+        return response;
     }
 
     @Override
@@ -413,6 +392,7 @@
                 || this.liftProtocol.getPlcTaskNo() == null
                 || this.liftProtocol.getProtocolStatus() == null
                 || this.liftProtocol.getModel() == null
+                || this.liftProtocol.getDeviceStatus() == null
                 || this.liftProtocol.getErrorCode() == null
                 || this.liftProtocol.getExtend() == null
         ) {
@@ -422,9 +402,10 @@
         InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();
 
         boolean res = this.liftProtocol.getProtocolStatus() == LiftProtocolStatusType.IDLE.id
-                && this.liftProtocol.getPlcTaskNo() == 0
+//                && this.liftProtocol.getPlcTaskNo() == 0
                 && this.liftProtocol.getTaskNo() == 0
                 && this.liftProtocol.getModel() == 2
+                && this.liftProtocol.getDeviceStatus() == LiftDeviceStatusType.IDLE.id
                 && this.liftProtocol.getErrorCode() == 0
                 && !extend.getFrontOverrun()
                 && !extend.getBackOverrun()
@@ -452,6 +433,7 @@
 
         if (this.liftProtocol.getProtocolStatus() == null
                 || this.liftProtocol.getModel() == null
+                || this.liftProtocol.getDeviceStatus() == null
                 || this.liftProtocol.getErrorCode() == null
                 || this.liftProtocol.getExtend() == null
         ) {
@@ -462,6 +444,7 @@
 
         boolean res = this.liftProtocol.getProtocolStatus() == LiftProtocolStatusType.IDLE.id
                 && this.liftProtocol.getModel() == 2
+                && this.liftProtocol.getDeviceStatus() == LiftDeviceStatusType.IDLE.id
                 && this.liftProtocol.getErrorCode() == 0
                 && !extend.getFrontOverrun()
                 && !extend.getBackOverrun()
@@ -481,7 +464,8 @@
 
     @Override
     public boolean setSyncTaskNo(Integer taskNo) {
-        this.liftProtocol.setSyncTaskNo(taskNo);
+        redisUtil.setSync(RedisKeyType.LIFT_FLAG.key + liftProtocol.getLiftNo(), taskNo);
+        this.liftProtocol.setTaskNo(taskNo);
         return true;
     }
 
@@ -499,6 +483,11 @@
     }
 
     @Override
+    public String getRealtimeOriginData() {
+        return this.realtimeOriginData;
+    }
+
+    @Override
     public LiftCommand getPickAndPutCommand(Integer taskNo, Integer pick, Integer put) {
         LiftCommand command = new LiftCommand();
         command.setLiftNo(device.getDeviceNo());
@@ -507,6 +496,10 @@
         command.setPick(pick);
         command.setPut(put);
 
+        LiftStaProtocol pickSta = findSta(pick);
+        LiftStaProtocol putSta = findSta(put);
+        command.setPickLev(pickSta.getLev());
+        command.setPutLev(putSta.getLev());
         return command;
     }
 
@@ -519,6 +512,10 @@
         command.setPick(pick);
         command.setPut(put);
 
+        LiftStaProtocol pickSta = findSta(pick);
+        LiftStaProtocol putSta = findSta(put);
+        command.setPickLev(pickSta.getLev());
+        command.setPutLev(putSta.getLev());
         return command;
     }
 
@@ -531,6 +528,10 @@
         command.setPick(pick);
         command.setPut(put);
 
+        LiftStaProtocol pickSta = findSta(pick);
+        LiftStaProtocol putSta = findSta(put);
+        command.setPickLev(pickSta.getLev());
+        command.setPutLev(putSta.getLev());
         return command;
     }
 
@@ -655,6 +656,15 @@
         }
     }
 
+    private LiftStaProtocol findSta(Integer staNo) {
+        for (LiftStaProtocol liftStaProtocol : this.liftStaProtocols) {
+            if (liftStaProtocol.getSiteId().equals(staNo)) {
+                return liftStaProtocol;
+            }
+        }
+        return null;
+    }
+
     /**
      * 鎵╁睍瀛楁
      */
@@ -691,5 +701,8 @@
          */
         private Boolean overWeight;
 
+        //PLC宸插畬鎴愪换鍔″彿
+        private Integer plcTaskNoComplete;
+
     }
 }

--
Gitblit v1.9.1