From ebb63d5ac2fb6c822e9d0541d4b86c7d71f21bdb Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期四, 18 四月 2024 15:44:22 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java |   80 ++++++++++++++++++++++++++++------------
 1 files changed, 56 insertions(+), 24 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
index 8fde087..d4f8011 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
@@ -7,6 +7,7 @@
 import com.zy.asrs.framework.common.DateUtils;
 import com.zy.asrs.framework.common.SpringUtils;
 import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wcs.common.ExecuteSupport;
 import com.zy.asrs.wcs.core.entity.Loc;
 import com.zy.asrs.wcs.core.model.command.LiftCommand;
 import com.zy.asrs.wcs.core.model.command.ShuttleCommand;
@@ -15,8 +16,10 @@
 import com.zy.asrs.wcs.core.service.LocService;
 import com.zy.asrs.wcs.rcs.News;
 import com.zy.asrs.wcs.rcs.cache.OutputQueue;
+import com.zy.asrs.wcs.rcs.entity.DeviceDataLog;
 import com.zy.asrs.wcs.rcs.model.enums.LiftProtocolStatusType;
 import com.zy.asrs.wcs.rcs.model.protocol.LiftProtocol;
+import com.zy.asrs.wcs.rcs.service.DeviceDataLogService;
 import com.zy.asrs.wcs.rcs.thread.LiftThread;
 import com.zy.asrs.wcs.core.utils.RedisUtil;
 import com.zy.asrs.wcs.rcs.entity.Device;
@@ -25,6 +28,7 @@
 
 import java.text.MessageFormat;
 import java.text.SimpleDateFormat;
+import java.util.Base64;
 import java.util.Date;
 import java.util.HashMap;
 
@@ -61,18 +65,10 @@
         try {
             readStatus();
 
-//            //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓篺alse
-//            if (liftProtocol.getBusy()) {
-//                liftProtocol.setPakMk(false);
-//            }
-//
-//            //鎻愬崌鏈哄浜庢湭杩愯銆佸氨缁�佹爣璁皌rue銆佹湁浠诲姟鍙�
-//            if (!liftProtocol.getBusy()
-//                    && !liftProtocol.getPakMk()
-//                    && liftProtocol.getTaskNo() != 0) {
-//                //杩樻湁鏈畬鎴愮殑鍛戒护
-//                executeWork(liftProtocol.getTaskNo());
-//            }
+            //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓篺alse
+            if (liftProtocol.getRun()) {
+                liftProtocol.setPakMk(false);
+            }
         } catch (Exception e) {
             OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getId(), device.getIp(), device.getPort()));
         }
@@ -141,6 +137,24 @@
 //                //宸插畬鎴愪换鍔″彿
 //                liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6));
 //                liftProtocol.setLev(lev);
+
+                if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) {
+                    //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
+                    //淇濆瓨鏁版嵁璁板綍
+                    DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
+                    DeviceDataLog deviceDataLog = new DeviceDataLog();
+                    deviceDataLog.setOriginData(JSON.toJSONString(data));
+                    deviceDataLog.setWcsData(JSON.toJSONString(liftProtocol));
+                    deviceDataLog.setType("lift");
+                    deviceDataLog.setDeviceNo(String.valueOf(liftProtocol.getLiftNo()));
+                    deviceDataLog.setCreateTime(new Date());
+                    deviceDataLog.setHostId(device.getHostId());
+                    deviceDataLogService.save(deviceDataLog);
+
+                    //鏇存柊閲囬泦鏃堕棿
+                    liftProtocol.setDeviceDataLog(System.currentTimeMillis());
+                }
+
             }else {
                 OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆憑1}璇诲彇鎻愬崌鏈虹姸鎬佷俊鎭け璐�", DateUtils.convert(new Date()), device.getId()));
                 throw new CoolException(MessageFormat.format( "璇诲彇鎻愬崌鏈虹姸鎬佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", device.getId(), device.getIp(), device.getPort()));
@@ -294,11 +308,24 @@
 
     @Override
     public boolean isIdle() {
-        InnerLiftExtend extend = (InnerLiftExtend) liftProtocol.getExtend();//鑾峰彇鎵╁睍瀛楁
+        return isIdle(null);
+    }
+
+    @Override
+    public boolean isIdle(ExecuteSupport support) {
+        if (null != support) {
+            if (!support.judgement()) {
+                return false;
+            }
+        }
+        InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();//鑾峰彇鎵╁睍瀛楁
         // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佸氨缁�佺┖闂层�佹湭閿佸畾
-        if (liftProtocol.getModel()
-                && !liftProtocol.getRun()
-                && liftProtocol.getReady()
+        if (this.liftProtocol.getModel()
+                && !this.liftProtocol.getRun()
+                && this.liftProtocol.getReady()
+                && this.liftProtocol.getPakMk()
+                && this.liftProtocol.getErrorCode().equals("0")
+                && this.liftProtocol.getProtocolStatus().equals(LiftProtocolStatusType.IDLE)
                 && !extend.getLock()
         ) {
             return true;
@@ -370,7 +397,12 @@
 
     //绌鸿浇绉诲姩
     @Override
-    public LiftCommand getEmptyMoveCommand(Integer taskNo, Integer targetLev) {
+    public LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer mode) {
+        int taskMode = 3;//绌鸿浇绉诲姩
+        if (mode == null) {
+            taskMode = mode.shortValue();
+        }
+
         HashMap<String, Object> body = new HashMap<>();
         body.put("messageName", "lifterTask");
         body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
@@ -378,7 +410,7 @@
         body.put("taskId", taskNo);
         body.put("startLayer", 0);
         body.put("endLayer", targetLev);
-        body.put("model", 3);//绌鸿浇绉诲姩
+        body.put("model", taskMode);
 
         LiftCommand command = new LiftCommand();
         command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
@@ -391,13 +423,13 @@
 
     //杞借溅绉诲姩
     @Override
-    public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer originLev, Integer targetLev) {
+    public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer mode) {
         HashMap<String, Object> body = new HashMap<>();
         body.put("messageName", "lifterTask");
         body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
         body.put("deviceNo", Integer.parseInt(this.device.getDeviceNo()));
         body.put("taskId", taskNo);
-        body.put("startLayer", originLev);
+        body.put("startLayer", sourceLev);
         body.put("endLayer", targetLev);
         body.put("model", 2);//杞借溅绉诲姩
 
@@ -405,20 +437,20 @@
         command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
         command.setBody(JSON.toJSONString(body));
         command.setMode(LiftCommandModeType.MOVE.id);
-        command.setOriginLev(originLev);
+        command.setOriginLev(sourceLev);
         command.setTargetLev(targetLev);
         return command;
     }
 
     //鎵樼洏鍑哄叆
     @Override
-    public LiftCommand getPalletInOutCommand(Integer taskNo, Integer originLev, Integer targetLev, Integer originSta, Integer targetSta) {
+    public LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, Integer mode) {
         HashMap<String, Object> body = new HashMap<>();
         body.put("messageName", "lifterTask");
         body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
         body.put("deviceNo", Integer.parseInt(this.device.getDeviceNo()));
         body.put("taskId", taskNo);
-        body.put("startLayer", originLev);
+        body.put("startLayer", sourceLev);
         body.put("endLayer", targetLev);
         body.put("startLocation", originSta);
         body.put("endLocation", targetSta);
@@ -428,7 +460,7 @@
         command.setLiftNo(Integer.valueOf(this.device.getDeviceNo()));
         command.setBody(JSON.toJSONString(body));
         command.setMode(LiftCommandModeType.PALLET_INOUT.id);
-        command.setOriginLev(originLev);
+        command.setOriginLev(sourceLev);
         command.setTargetLev(targetLev);
         command.setOriginSta(originSta);
         command.setTargetSta(targetSta);

--
Gitblit v1.9.1