From 5e644156839fbb018fe63972ee74be550540a06a Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期一, 08 十二月 2025 13:24:31 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/impl/ZyStationThread.java |   81 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 70 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/impl/ZyStationThread.java b/src/main/java/com/zy/core/thread/impl/ZyStationThread.java
index 68cbd91..2624e46 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyStationThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyStationThread.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.utils.Utils;
 import com.zy.core.network.DeviceConnectPool;
 import com.zy.core.thread.StationThread;
 import com.alibaba.fastjson.JSON;
@@ -11,6 +12,8 @@
 import com.core.common.SpringUtils;
 import com.zy.asrs.entity.DeviceConfig;
 import com.zy.asrs.entity.DeviceDataLog;
+import com.zy.asrs.entity.BasStationOpt;
+import com.zy.asrs.service.BasStationOptService;
 import com.zy.common.utils.RedisUtil;
 import com.zy.core.network.ZyStationConnectDriver;
 import com.zy.core.cache.MessageQueue;
@@ -24,9 +27,7 @@
 import com.zy.core.network.entity.ZyStationStatusEntity;
 
 import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
@@ -42,6 +43,7 @@
     private DeviceConfig deviceConfig;
     private RedisUtil redisUtil;
     private ZyStationConnectDriver zyStationConnectDriver;
+    private int deviceLogCollectTime = 200;
     private long deviceDataLogTime = System.currentTimeMillis();
 
     public ZyStationThread(DeviceConfig deviceConfig, RedisUtil redisUtil) {
@@ -53,6 +55,21 @@
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
         this.connect();
+        deviceLogCollectTime = Utils.getDeviceLogCollectTime();
+
+        //璁惧璇诲彇
+        Thread readThread = new Thread(() -> {
+            while (true) {
+                try {
+                    readStatus();
+                    Thread.sleep(200);
+                } catch (Exception e) {
+                    log.error("StationThread Fail", e);
+                }
+            }
+        });
+        readThread.start();
+
         while (true) {
             try {
                 int step = 1;
@@ -61,10 +78,6 @@
                     step = task.getStep();
                 }
                 switch (step) {
-                    // 璇绘暟鎹�
-                    case 1:
-                        readStatus();
-                        break;
                     case 2:
                         sendCommand((StationCommand) task.getData());
                         break;
@@ -84,7 +97,12 @@
         }
 
         if(statusList.isEmpty()) {
-            BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+            BasDevpService basDevpService = null;
+            try {
+                basDevpService = SpringUtils.getBean(BasDevpService.class);
+            } catch (Exception e) {
+
+            }
             if (basDevpService == null) {
                 return;
             }
@@ -124,7 +142,7 @@
 
         OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), deviceConfig.getDeviceNo()));
 
-        if (System.currentTimeMillis() - deviceDataLogTime > 1000 * 1) {
+        if (System.currentTimeMillis() - deviceDataLogTime > deviceLogCollectTime) {
             //淇濆瓨鏁版嵁璁板綍
             DeviceDataLog deviceDataLog = new DeviceDataLog();
             deviceDataLog.setOriginData(JSON.toJSONString(zyStationStatusEntities));
@@ -168,8 +186,49 @@
 
     @Override
     public CommandResponse sendCommand(StationCommand command) {
-       CommandResponse commandResponse = zyStationConnectDriver.sendCommand(command);
-       return commandResponse;
+       CommandResponse commandResponse = null;
+       try {
+           commandResponse = zyStationConnectDriver.sendCommand(command);
+           return commandResponse;
+       } finally {
+           BasStationOptService optService = SpringUtils.getBean(BasStationOptService.class);
+           List<ZyStationStatusEntity> statusListEntity = zyStationConnectDriver.getStatus();
+           ZyStationStatusEntity matched = null;
+           if (statusListEntity != null) {
+               for (ZyStationStatusEntity e : statusListEntity) {
+                   if (e.getStationId() != null && e.getStationId().equals(command.getStationId())) {
+                       matched = e;
+                       break;
+                   }
+               }
+           }
+           BasStationOpt basStationOpt = new BasStationOpt(
+                   command.getTaskNo(),
+                   command.getStationId(),
+                   new Date(),
+                   "MOVE",
+                   command.getStationId(),
+                   command.getTargetStaNo(),
+                   null,
+                   null,
+                   null,
+                   JSON.toJSONString(command),
+                   JSON.toJSONString(matched),
+                   1,
+                   JSON.toJSONString(commandResponse)
+           );
+           if (optService != null) {
+               optService.insert(basStationOpt);
+           }
+       }
     }
 
+    @Override
+    public Map<Integer, StationProtocol> getStatusMap() {
+        Map<Integer, StationProtocol> map = new HashMap<>();
+        for (StationProtocol stationProtocol : statusList) {
+            map.put(stationProtocol.getStationId(), stationProtocol);
+        }
+        return map;
+    }
 }

--
Gitblit v1.9.1