From 225f8abb319ed527b90f50c678c38f6e7af68bdd Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 18 六月 2024 16:34:00 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java |  130 +++++++++++++++++++++++++++++++++----------
 1 files changed, 100 insertions(+), 30 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 7f35a9b..6fc6529 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
@@ -2,21 +2,23 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zy.asrs.common.utils.HttpHandler;
 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.core.entity.Loc;
+import com.zy.asrs.wcs.common.ExecuteSupport;
+import com.zy.asrs.wcs.core.entity.BasLift;
 import com.zy.asrs.wcs.core.model.command.LiftCommand;
-import com.zy.asrs.wcs.core.model.command.ShuttleCommand;
 import com.zy.asrs.wcs.core.model.enums.LiftCommandModeType;
-import com.zy.asrs.wcs.core.model.enums.ShuttleCommandModeType;
-import com.zy.asrs.wcs.core.service.LocService;
+import com.zy.asrs.wcs.core.service.BasLiftService;
 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;
@@ -61,18 +63,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()));
         }
@@ -112,7 +106,7 @@
 
 
                 //************琛ュ厖鎵╁睍瀛楁*************
-                InnerLiftExtend liftExtend = JSON.parseObject(JSON.toJSONString(liftProtocol.getExtend()), InnerLiftExtend.class);
+                InnerLiftExtend liftExtend = JSON.parseObject(JSON.toJSONString(liftProtocol.getExtend(), SerializerFeature.DisableCircularReferenceDetect), InnerLiftExtend.class);
                 liftExtend.setLock(data.getInteger("lockStatus") == 1 ? true : false);
                 liftProtocol.setExtend(liftExtend);
 
@@ -141,6 +135,49 @@
 //                //宸插畬鎴愪换鍔″彿
 //                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());
+                }
+
+                //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
+                BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
+                BasLift basLift = basLiftService.getOne(new LambdaQueryWrapper<BasLift>()
+                        .eq(BasLift::getLiftNo, device.getDeviceNo())
+                        .eq(BasLift::getHostId, device.getHostId()));
+                if (basLift == null) {
+                    basLift = new BasLift();
+                    //鎻愬崌鏈哄彿
+                    basLift.setLiftNo(Integer.valueOf(device.getDeviceNo()));
+                    basLift.setStatus(1);
+                    basLift.setDeleted(0);
+                    basLift.setHostId(device.getHostId());
+                    basLift.setDeviceId(device.getId());
+                    basLiftService.save(basLift);
+                }
+                //浠诲姟鍙�
+                basLift.setTaskNo(liftProtocol.getTaskNo().intValue());
+                //淇敼鏃堕棿
+                basLift.setUpdateTime(new Date());
+                //璁惧鐘舵��
+                basLift.setProtocol(JSON.toJSONString(liftProtocol));
+                if (basLiftService.updateById(basLift)) {
+                    OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), device.getDeviceNo()));
+                }
+
             }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()));
@@ -163,7 +200,7 @@
 
     @Override
     public LiftProtocol getStatus() {
-        return this.liftProtocol;
+        return this.liftProtocol.clone();
     }
 
     @Override
@@ -294,16 +331,47 @@
 
     @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;
         }
         return false;
+    }
+
+    @Override
+    public boolean setProtocolStatus(LiftProtocolStatusType status) {
+        this.liftProtocol.setProtocolStatus(status);
+        return true;
+    }
+
+    @Override
+    public boolean setSyncTaskNo(Integer taskNo) {
+        this.liftProtocol.setTaskNo(taskNo);
+        return true;
+    }
+
+    @Override
+    public boolean isLock(ExecuteSupport support) {
+        InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();
+        return extend.getLock();
     }
 
     //***************璁惧灞傞�氳-涓嶅悓鍘傚晢璁惧閫氳鏂规涓嶄竴鑷�***************
@@ -370,7 +438,9 @@
 
     //绌鸿浇绉诲姩
     @Override
-    public LiftCommand getEmptyMoveCommand(Integer taskNo, Integer targetLev) {
+    public LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) {
+        int taskMode = 3;//绌鸿浇绉诲姩
+
         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 +448,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 +461,13 @@
 
     //杞借溅绉诲姩
     @Override
-    public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer originLev, Integer targetLev) {
+    public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType 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 +475,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, LiftCommandModeType 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 +498,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