From 900f7032f7e701efd4741c2bcabeaad969e5fd3f Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期二, 14 一月 2025 15:20:27 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/LiftThread.java | 1157 +++++++++++++++++++++++++--------------------------------
 1 files changed, 505 insertions(+), 652 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
index 9503c0e..2854b0a 100644
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -1,669 +1,522 @@
-package com.zy.core.thread;
-
-import HslCommunication.Core.Transfer.DataFormat;
-import HslCommunication.Core.Types.OperateResult;
-import HslCommunication.Core.Types.OperateResultExOne;
-import HslCommunication.ModBus.ModbusTcpNet;
-import HslCommunication.Profinet.Siemens.SiemensPLCS;
-import HslCommunication.Profinet.Siemens.SiemensS7Net;
-import com.alibaba.fastjson.JSON;
-import com.core.common.DateUtils;
-import com.core.common.SpringUtils;
-import com.core.exception.CoolException;
-import com.zy.asrs.entity.BasLift;
-import com.zy.asrs.entity.BasLiftOpt;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.mapper.WrkMastMapper;
-import com.zy.asrs.service.BasLiftOptService;
-import com.zy.asrs.service.BasLiftService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.utils.CommonUtils;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.DevpThread;
-import com.zy.core.News;
-import com.zy.core.ThreadHandler;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.*;
-import com.zy.core.model.LiftSlave;
-import com.zy.core.model.Task;
-import com.zy.core.model.command.*;
-import com.zy.core.model.protocol.LiftProtocol;
-import com.zy.core.model.protocol.StaProtocol;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 鎻愬崌鏈虹嚎绋�
- */
-@Data
-@Slf4j
-public class LiftThread implements  Runnable, ThreadHandler {
-
-    private SiemensS7Net siemensS7Net;
-    private LiftSlave slave;
-    private LiftProtocol liftProtocol;
-    private RedisUtil redisUtil;
-
-    public LiftThread(LiftSlave slave,RedisUtil redisUtil) {
-        this.slave = slave;
-        this.redisUtil = redisUtil;
-    }
-
-    @Override
-    public void run() {
-        this.connect();
-        while (true) {
-            try {
-                int step = 1;
-                Task task = MessageQueue.poll(SlaveType.Lift, slave.getId());
-                if (task != null) {
-                    step = task.getStep();
-                }
-                switch (step) {
-                    // 璇绘暟鎹�
-                    case 1:
-                        read();
-                        break;
-                    // 鍐欏叆鏁版嵁
-                    case 2:
-                        write((LiftCommand) task.getData());
-                        break;
-                    //鍒嗛厤浠诲姟
-                    case 3:
-                        assignWork((LiftAssignCommand) task.getData());
-                        break;
-                    default:
-                        break;
-                }
-                Thread.sleep(500);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    @Override
-    public boolean connect() {
-        boolean result = false;
-        //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
-        siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
-        OperateResult connect = siemensS7Net.ConnectServer();
-        if(connect.IsSuccess){
-            result = true;
-            OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戞彁鍗囨満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            log.info("鎻愬崌鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
-        } else {
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            log.error("鎻愬崌鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
-        }
-        siemensS7Net.ConnectClose();
-        //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
-        return result;
-    }
-
-    @Override
-    public void close() {
-        siemensS7Net.ConnectClose();
-    }
-
-    private void read() {
-        try {
-            readStatus();
-
-            //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓簍rue
-            if (liftProtocol.getBusy()) {
-                liftProtocol.setPakMk(true);
-            }
-
-            //鎻愬崌鏈哄浜庢湭杩愯銆佸氨缁�佹爣璁皌rue銆佹湁浠诲姟鍙�
-            if (!liftProtocol.getBusy()
-                    && liftProtocol.getPakMk()
-                    && liftProtocol.getTaskNo() != 0) {
-                //杩樻湁鏈畬鎴愮殑鍛戒护
-                executeWork(liftProtocol.getTaskNo());
-            }
-        } catch (Exception e) {
-            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-        }
-    }
-
-    private void readStatus() {
-        try {
-            OperateResultExOne<byte[]> result = siemensS7Net.Read("M100.0", (short) 28);
-            if (result.IsSuccess) {
-                if (null == liftProtocol) {
-                    liftProtocol = new LiftProtocol();
-                    liftProtocol.setLiftNo(slave.getId().shortValue());
-                }
-
-                //----------璇诲彇鎻愬崌鏈虹姸鎬�-----------
-                //鑾峰彇鏁版嵁
-                byte[] content = result.Content;
-                //妯″紡
-                liftProtocol.setModel(siemensS7Net.getByteTransform().TransBool(content, 0));
-                //蹇欓棽
-                liftProtocol.setBusy(siemensS7Net.getByteTransform().TransBool(content, 1));
-                //鍓嶈秴闄�
-                liftProtocol.setFrontOverrun(siemensS7Net.getByteTransform().TransBool(content, 7));
-                //鍚庤秴闄�
-                liftProtocol.setBackOverrun(siemensS7Net.getByteTransform().TransBool(content, 8));
-                //宸﹁秴闄�
-                liftProtocol.setLeftOverrun(siemensS7Net.getByteTransform().TransBool(content, 9));
-                //鍙宠秴闄�
-                liftProtocol.setRightOverrun(siemensS7Net.getByteTransform().TransBool(content, 10));
-                //瓒呴珮
-                liftProtocol.setOverHeight(siemensS7Net.getByteTransform().TransBool(content, 11));
-                //瓒呴噸
-                liftProtocol.setOverWeight(siemensS7Net.getByteTransform().TransBool(content, 12));
-                //鏈夋墭鐩�
-                liftProtocol.setHasTray(siemensS7Net.getByteTransform().TransBool(content, 16));
-                //鏈夊皬杞�
-                liftProtocol.setHasCar(siemensS7Net.getByteTransform().TransBool(content, 17));
-                //璁惧鏁呴殰
-                liftProtocol.setDeviceError(siemensS7Net.getByteTransform().TransBool(content, 18));
-                //浠诲姟鍙�
-                liftProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(content, 19));
-                //浠诲姟鍦板潃
-                liftProtocol.setTaskAddress(siemensS7Net.getByteTransform().TransInt16(content, 21));
-                //鐩殑鍦板潃
-                liftProtocol.setDistAddress(siemensS7Net.getByteTransform().TransInt16(content, 21));
-                //宸插畬鎴愪换鍔″彿
-                liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(content, 23));
-                //褰撳墠妤煎眰
-                liftProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(content, 25));
-
-                ///璇诲彇鎻愬崌鏈虹姸鎬�-end
-
-                //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
-                BasLiftService liftService = SpringUtils.getBean(BasLiftService.class);
-                BasLift basLift = liftService.selectById(liftProtocol.getLiftNo());
-                if (basLift == null) {
-                    basLift = new BasLift();
-                    //鎻愬崌鏈哄彿
-                    basLift.setLiftNo(slave.getId());
-                    liftService.insert(basLift);
-                }
-                basLift.setStatus(liftProtocol.getProtocolStatus());
-                basLift.setWrkNo(liftProtocol.getTaskNo().intValue());
-                basLift.setUpdateTime(new Date());
-                basLift.setPakMk(liftProtocol.getPakMk());
-                basLift.setModel(liftProtocol.getModel());
-                basLift.setBusy(liftProtocol.getBusy());
-                basLift.setFrontOverrun(liftProtocol.getFrontOverrun());
-                basLift.setBackOverrun(liftProtocol.getBackOverrun());
-                basLift.setLeftOverrun(liftProtocol.getLeftOverrun());
-                basLift.setRightOverrun(liftProtocol.getRightOverrun());
-                basLift.setOverHeight(liftProtocol.getOverHeight());
-                basLift.setOverWeight(liftProtocol.getOverWeight());
-                basLift.setHasTray(liftProtocol.getHasTray());
-                basLift.setHasCar(liftProtocol.getHasCar());
-                basLift.setDeviceError(liftProtocol.getDeviceError());
-                basLift.setTaskAddress(liftProtocol.getTaskAddress().intValue());
-                basLift.setDistAddress(liftProtocol.getDistAddress().intValue());
-                basLift.setCompleteTaskNo(liftProtocol.getCompleteTaskNo().intValue());
-                basLift.setLev(liftProtocol.getLev().intValue());
-                if (liftService.updateById(basLift)) {
-                    OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-//                    log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-                }
-
-            }else {
-                OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆憑1}鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId()));
-                throw new CoolException(MessageFormat.format( "鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort()));
-            }
-        } catch (Exception e) {
-            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-        }
-    }
-
-    private boolean write(LiftCommand command){
-        if (null == command) {
-            News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�");
-            return false;
-        }
-
+//package com.zy.core.thread;
+//
+//import HslCommunication.Core.Types.OperateResult;
+//import HslCommunication.Core.Types.OperateResultExOne;
+//import HslCommunication.Profinet.Siemens.SiemensPLCS;
+//import HslCommunication.Profinet.Siemens.SiemensS7Net;
+//import com.alibaba.fastjson.JSON;
+//import com.core.common.DateUtils;
+//import com.core.common.SpringUtils;
+//import com.core.exception.CoolException;
+//import com.zy.asrs.entity.BasLift;
+//import com.zy.asrs.entity.BasLiftOpt;
+//import com.zy.asrs.entity.DeviceDataLog;
+//import com.zy.asrs.mapper.WrkMastMapper;
+//import com.zy.asrs.service.BasLiftOptService;
+//import com.zy.asrs.service.BasLiftService;
+//import com.zy.asrs.service.DeviceDataLogService;
+//import com.zy.asrs.utils.Utils;
+//import com.zy.common.utils.RedisUtil;
+//import com.zy.core.News;
+//import com.zy.core.ThreadHandler;
+//import com.zy.core.cache.MessageQueue;
+//import com.zy.core.cache.OutputQueue;
+//import com.zy.core.enums.*;
+//import com.zy.core.model.LiftSlave;
+//import com.zy.core.model.Task;
+//import com.zy.core.model.command.*;
+//import com.zy.core.model.protocol.LiftStaProtocol;
+//import com.zy.core.model.protocol.LiftProtocol;
+//import com.zy.core.model.protocol.StaProtocol;
+//import lombok.Data;
+//import lombok.extern.slf4j.Slf4j;
+//
+//import java.text.MessageFormat;
+//import java.util.*;
+//
+///**
+// * 鎻愬崌鏈虹嚎绋�
+// */
+//@Data
+//@Slf4j
+//public class LiftThread implements  Runnable, ThreadHandler {
+//
+//    private SiemensS7Net siemensS7Net;
+//    private LiftSlave slave;
+//    private LiftProtocol liftProtocol;
+//    private RedisUtil redisUtil;
+//    private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>();
+//
+//    public LiftThread(LiftSlave slave,RedisUtil redisUtil) {
+//        this.slave = slave;
+//        this.redisUtil = redisUtil;
+//
+//        //鍒濆鍖栫珯鐐�
+//        for (LiftSlave.Sta sta : this.slave.getSta()) {
+//            LiftStaProtocol liftStaProtocol = new LiftStaProtocol();
+//            liftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙�
+//            liftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰
+//            String locNo = Utils.getLocNo(this.slave.getStaRow(), this.slave.getStaBay(), sta.getLev());
+//            liftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙�
+//            liftStaProtocol.setLiftNo(sta.getLiftNo());//鎻愬崌鏈哄彿
+//            liftStaProtocols.add(liftStaProtocol);
+//        }
+//
+//    }
+//
+//    @Override
+//    public void run() {
+//        this.connect();
+//        while (true) {
+//            try {
+//                int step = 1;
+//                Task task = MessageQueue.poll(SlaveType.Lift, slave.getId());
+//                if (task != null) {
+//                    step = task.getStep();
+//                }
+//                switch (step) {
+//                    // 璇绘暟鎹�
+//                    case 1:
+//                        read();
+//                        break;
+//                    // 鍐欏叆鏁版嵁
+//                    case 2:
+//                        write((NyLiftCommand) task.getData());
+//                        break;
+//                    //鍒嗛厤浠诲姟
+//                    case 3:
+//                        assignWork((LiftAssignCommand) task.getData());
+//                        break;
+//                    case 4:
+//                        write2((HashMap<String, Object>) task.getData());
+//                    default:
+//                        break;
+//                }
+//                Thread.sleep(500);
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//            }
+//        }
+//    }
+//
+//    @Override
+//    public boolean connect() {
+//        boolean result = false;
+//        //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
+//        siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
+//        OperateResult connect = siemensS7Net.ConnectServer();
+//        if(connect.IsSuccess){
+//            result = true;
+//            OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戞彁鍗囨満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+//            log.info("鎻愬崌鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
+//        } else {
+//            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+//            log.error("鎻愬崌鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
+//        }
+//        siemensS7Net.ConnectClose();
+//        //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
+//        return result;
+//    }
+//
+//    @Override
+//    public void close() {
+//        siemensS7Net.ConnectClose();
+//    }
+//
+//    private void read() {
+//        try {
+//            readStatus();
+//
+//            //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓篺alse
+//            if (liftProtocol.getBusy()) {
+//                liftProtocol.setPakMk(false);
+//            }
+//
+//            //鎻愬崌鏈哄浜庢湭杩愯銆佸氨缁�佹爣璁皌rue銆佹湁浠诲姟鍙�
+//            if (!liftProtocol.getBusy()
+//                    && !liftProtocol.getPakMk()
+//                    && liftProtocol.getTaskNo() != 0) {
+//                //杩樻湁鏈畬鎴愮殑鍛戒护
+//                executeWork(liftProtocol.getTaskNo());
+//            }
+//        } catch (Exception e) {
+//            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+//        }
+//    }
+//
+//    private void readStatus() {
+//        try {
+//            //鑾峰彇鎻愬崌鏈烘暟鎹�
+//            OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB82.4.0", (short) 10);
+//            if (result1.IsSuccess) {
+//                if (null == liftProtocol) {
+//                    liftProtocol = new LiftProtocol();
+//                    liftProtocol.setLiftNo(slave.getId().shortValue());
+//                }
+//                //璇诲彇4.0-4.7鏁版嵁
+//                boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result1.Content, 0, 1);
+//                //璇诲彇5.0-5.7鏁版嵁
+//                boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result1.Content, 1, 1);
+//                //妯″紡
+//                liftProtocol.setModel(status1[0]);
+//                //蹇欓棽
+//                liftProtocol.setBusy(!status1[1]);
+//                //鍓嶈秴闄�
+//                liftProtocol.setFrontOverrun(status1[4]);
+//                //鍚庤秴闄�
+//                liftProtocol.setBackOverrun(status1[5]);
+//                //宸﹁秴闄�
+//                liftProtocol.setLeftOverrun(status1[6]);
+//                //鍙宠秴闄�
+//                liftProtocol.setRightOverrun(status1[7]);
+//                //瓒呴珮
+//                liftProtocol.setOverHeight(status2[0]);
+//                //瓒呴噸
+//                liftProtocol.setOverWeight(status2[1]);
+//                //鏈夋墭鐩�
+//                liftProtocol.setHasTray(status2[5]);
+//                //鏈夊皬杞�
+//                liftProtocol.setHasCar(status2[6]);
+//                //璁惧鏁呴殰
+//                liftProtocol.setDeviceError(status2[7]);
+//                //浠诲姟鍙�
+//                liftProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 2));
+//                //鐩殑鍦板潃
+//                liftProtocol.setDistAddress(siemensS7Net.getByteTransform().TransInt16(result1.Content, 4));
+//                //宸插畬鎴愪换鍔″彿
+//                liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6));
+//                //褰撳墠妤煎眰
+//                short lev = siemensS7Net.getByteTransform().TransInt16(result1.Content, 8);
+//                if (lev >= 7 && lev <= 9) {
+//                    lev -= 2;
+//                } else if (lev >= 12 && lev <= 14) {
+//                    lev -= 4;
+//                }
+//                liftProtocol.setLev(lev);
+//
+//                //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
+//                BasLiftService liftService = SpringUtils.getBean(BasLiftService.class);
+//                BasLift basLift = liftService.selectById(liftProtocol.getLiftNo());
+//                if (basLift == null) {
+//                    basLift = new BasLift();
+//                    //鎻愬崌鏈哄彿
+//                    basLift.setLiftNo(slave.getId());
+//                    liftService.insert(basLift);
+//                }
+//                basLift.setStatus(liftProtocol.getProtocolStatus());
+//                basLift.setWrkNo(liftProtocol.getTaskNo().intValue());
+//                basLift.setUpdateTime(new Date());
+//                basLift.setPakMk(liftProtocol.getPakMk());
+//                basLift.setDeviceStatus(JSON.toJSONString(liftProtocol));
+//                if (liftService.updateById(basLift)) {
+//                    OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+////                    log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+//                }
+//            }else {
+//                OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆憑1}鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId()));
+//                throw new CoolException(MessageFormat.format( "鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort()));
+//            }
+//            Thread.sleep(200);
+//
+//            //鑾峰彇鎻愬崌鏈虹珯鐐规暟鎹�
+//            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB82.14.0", (short) (10 * liftStaProtocols.size()));
+//            if (result1.IsSuccess) {
+//                for (int i = 0; i < slave.getSta().size(); i++) {
+//                    LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i);
+//                    int i1 = 0 + (i * 10);
+//                    int i2 = 1 + (i * 10);
+//                    //璇诲彇x4.0-x4.7鏁版嵁
+//                    boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result2.Content, i1, 1);
+//                    //璇诲彇x5.0-x5.7鏁版嵁
+//                    boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result2.Content, i2, 1);
+//                    //妯″紡
+//                    liftStaProtocol.setModel(status1[0]);
+//                    //蹇欓棽
+//                    liftStaProtocol.setBusy(!status1[1]);
+//                    //鏈夋墭鐩�
+//                    liftStaProtocol.setHasTray(status1[2]);
+//                    //鏈夊皬杞�
+//                    liftStaProtocol.setHasCar(status2[6]);
+//                    //璁惧鏁呴殰
+//                    liftStaProtocol.setDeviceError(status2[7]);
+//                    //浠诲姟鍙�
+//                    liftStaProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result2.Content, 2));
+//                }
+//            }
+//
+//            Thread.sleep(100);
+//            //鑾峰彇鎻愬崌鏈哄紓甯告暟鎹�
+//            OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB82.22.0", (short) 2);
+//            if (result3.IsSuccess) {
+//                liftProtocol.setErrorCode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));//閿欒鐮�
+//            }
+//
+//            if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) {
+//                //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
+//                //淇濆瓨鏁版嵁璁板綍
+//                DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
+//                DeviceDataLog deviceDataLog = new DeviceDataLog();
+//                deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result1.Content));
+//                deviceDataLog.setWcsData(JSON.toJSONString(liftProtocol));
+//                deviceDataLog.setType("lift");
+//                deviceDataLog.setDeviceNo(liftProtocol.getLiftNo().intValue());
+//                deviceDataLog.setCreateTime(new Date());
+//                deviceDataLogService.insert(deviceDataLog);
+//
+//                //鏇存柊閲囬泦鏃堕棿
+//                liftProtocol.setDeviceDataLog(System.currentTimeMillis());
+//            }
+//
+//        } catch (Exception e) {
+//            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+//        }
+//    }
+//
+//    private boolean write(NyLiftCommand command){
+//        if (null == command) {
+//            News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�");
+//            return false;
+//        }
+//
 //        command.setLiftNo(slave.getId().shortValue());
 //        short[] array = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃
 //
-//        try {
-//            Thread.sleep(500);//鍛戒护涓嬪彂鍓嶄紤鐪�
-//        } catch (InterruptedException e) {
-//            throw new RuntimeException(e);
-//        }
-//
-//        OperateResult result = modbusTcpNet.Write("41088", array);
+//        OperateResult result = siemensS7Net.Write("DB83.0", array);
 //        if (result != null && result.IsSuccess) {
+//            liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
 //            News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
 //            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
-//
-//            try {
-//                Thread.sleep(500);//鍛戒护涓嬪彂鍚庝紤鐪�
-//            } catch (InterruptedException e) {
-//                throw new RuntimeException(e);
-//            }
-//
-//            for (int i = 0; i < 5; i++) {
-//                if (command.getRun().intValue() == 4 || command.getRun().intValue() == 5) {
-//                    break;//绯荤粺澶嶄綅鍜岄摼鏉″仠姝㈣浆鍔ㄤ笉闇�瑕侀噸鍙�
-//                }
-//                readStatus();//閲嶆柊璇诲彇鐘舵��
-//                if (liftProtocol.getRunning()) {
-//                    break;
-//                }
-//
-//                //鍒ゆ柇鏄惁杩愯涓紝濡備笉杩愯锛岄噸鏂颁笅鍙戝懡浠�
-//                result = modbusTcpNet.Write("41088", array);
-//                News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {},娆℃暟锛歿}", slave.getId(), JSON.toJSON(command), i);
-//                OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2},娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command), i));
-//                try {
-//                    Thread.sleep(300);//鍛戒护涓嬪彂鍚庝紤鐪�
-//                } catch (InterruptedException e) {
-//                    throw new RuntimeException(e);
-//                }
-//            }
 //            return true;
 //        } else {
 //            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戝啓鍏ユ彁鍗囨満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}],娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
 //            News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
 //            return false;
 //        }
-
-        return true;
-    }
-
-    //鑾峰彇鍛戒护鎶ユ枃
-    private short[] getCommandArr(LiftCommand command) {
-        // 寮�濮嬩换鍔�
-        short[] array = new short[30];
-        //寮�濮嬭繍琛�
-        array[0] = command.getRun();
-        if (command.getDistPosition() != null) {
-            //鐩爣浣嶇疆
-            array[1] = command.getDistPosition();
-        }
-        if (command.getSpeed() != null) {
-            //杩愯閫熷害
-            array[2] = command.getSpeed();
-        }
-        if (command.getHeight2() != null) {
-            //浜屽眰楂樺害璁惧畾
-            array[3] = command.getHeight2();
-        }
-        if (command.getHeight3() != null) {
-            //涓夊眰楂樺害璁惧畾
-            array[4] = command.getHeight3();
-        }
-        if (command.getHeight4() != null) {
-            //鍥涘眰楂樺害璁惧畾
-            array[5] = command.getHeight4();
-        }
-        if (command.getHeight5() != null) {
-            //鍥涘眰楂樺害璁惧畾
-            array[6] = command.getHeight5();
-        }
-        if (command.getLiftLockShortValue() != null) {
-            //鎻愬崌鏈洪攣瀹�
-            array[29] = command.getLiftLockShortValue();
-        }
-
-        if (array[2] == 0) {
-            // 寮�濮嬩换鍔�
-            short[] tmp = new short[2];
-            tmp[0] = array[0];
-            tmp[1] = array[1];
-            array = tmp;
-        }
-        return array;
-    }
-
-    //鍒嗛厤浠诲姟
-    private void assignWork(LiftAssignCommand assignCommand) {
-        //鎵嬪姩妯″紡鎸囦护
-        if (!assignCommand.getAuto()) {
-            LiftCommand command = new LiftCommand();
-            //鎻愬崌鏈哄綋鍓嶆ゼ灞�
-            Short lev = liftProtocol.getLev();
-            List<LiftCommand> commands = assignCommand.getCommands();
-            if (commands == null) {
-                commands = new ArrayList<LiftCommand>();
-            }
-            liftProtocol.setTaskNo(assignCommand.getTaskNo());
-            switch (assignCommand.getTaskMode()) {
-                case 1://绉诲姩鎻愬崌鏈�
-                    command = getLiftUpDownCommand(assignCommand.getLev());//鑾峰彇鎻愬崌鏈轰笂鍗囦笅闄嶅懡浠�
-                    break;
-                case 3://鏃犺揣姝h浆
-                    command = getLiftTurnCommand(3);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
-                    break;
-                case 4://鏃犺揣鍙嶈浆
-                    command = getLiftTurnCommand(4);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
-                    break;
-                case 5://鏈夎揣姝h浆
-                    command = getLiftTurnCommand(1);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
-                    break;
-                case 6://鏈夎揣鍙嶈浆
-                    command = getLiftTurnCommand(2);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
-                    break;
-                case 7://閾炬潯鍋滄
-                    command = getLiftTurnCommand(5);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
-                    break;
-                case 0://澶嶄綅
-                    command = getResetCommand();//鑾峰彇澶嶄綅鍛戒护
-                    break;
-                default:
-            }
-            commands.add(command);
-            assignCommand.setCommands(commands);
-        }
-
-        LiftRedisCommand redisCommand = new LiftRedisCommand();
-        redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿
-        redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙�
-        redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭
-        redisCommand.setAssignCommand(assignCommand);//鍛戒护
-        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-        redisUtil.set("lift_wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand));
-        liftProtocol.setAssignCommand(assignCommand);
-        liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);
-        //鎵ц涓嬪彂浠诲姟
-        executeWork(assignCommand.getTaskNo());
-    }
-
-    //鎵ц浠诲姟
-    private boolean executeWork(Short wrkNo) {
-        //璇诲彇redis鏁版嵁
-        if (wrkNo == null) {
-            return false;
-        }
-
-        WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class);
-        Object o = redisUtil.get("lift_wrk_no_" + wrkNo);
-        if (o == null) {
-            return false;
-        }
-        LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
-        List<LiftCommand> commands = redisCommand.getAssignCommand().getCommands();
-        //褰撳墠姝ュ簭
-        int commandStep = redisCommand.getCommandStep();
-        //鎬绘搴�
-        int size = commands.size();
-        LiftAssignCommand assignCommand = redisCommand.getAssignCommand();
-
-//        if (commandStep != 0) {
-//            //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀畬鎴�
-//            LiftCommand command = commands.get(commandStep - 1);
-//            if (command.getRun().intValue() == 1) {
-//                //鎻愬崌鏈哄崌闄嶅懡浠�
-//                if (command.getDistPosition().intValue() == liftProtocol.getPositionArrivalFeedback().intValue()) {
-//                    //鎻愬崌鏈虹洰鏍囨ゼ灞傚拰瀹為檯妤煎眰鐩稿悓锛屽垯璁ゅ畾鍛戒护瀹屾垚
-//                    command.setComplete(true);
-//                }
-//            } else if (command.getRun().intValue() == 2 || command.getRun().intValue() == 3) {
-//                //鏃犺揣姝h浆锛屾湁璐ф杞�
-//                if (!liftProtocol.getForwardRotationFeedback()) {
-//                    //杈撻�佺嚎姝h浆鍙嶉涓嶅湪杩愯涓紝璁ゅ畾鍛戒护瀹屾垚
-//                    command.setComplete(true);
-//                }
-//            } else if (command.getRun().intValue() == 6 || command.getRun().intValue() == 7) {
-//                //鏈夎揣鍙嶈浆锛屾棤璐у弽杞�
-//                if (!liftProtocol.getReverseFeedback()) {
-//                    //杈撻�佺嚎鍙嶈浆鍙嶉涓嶅湪杩愯涓紝璁ゅ畾鍛戒护瀹屾垚
-//                    command.setComplete(true);
-//                }
-//            } else if (command.getRun().intValue() == 4) {
-//                //杈撻�佺嚎鍋滄
-//                if (!liftProtocol.getForwardRotationFeedback() && !liftProtocol.getReverseFeedback()) {
-//                    //杈撻�佺嚎姝h浆鍙嶈浆閮戒笉鍦ㄨ繍琛屼腑锛岃瀹氬懡浠ゅ畬鎴�
-//                    command.setComplete(true);
-//                }
-//            }
-//            //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-//            redisUtil.set("lift_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
+//    }
 //
-//            if (!command.getComplete()) {
+//    //鑾峰彇鍛戒护鎶ユ枃
+//    private short[] getCommandArr(NyLiftCommand command) {
+//        // 寮�濮嬩换鍔�
+//        short[] array = new short[4];
+//        if (command.getTaskModel() != null) {
+//            //浠诲姟绫诲瀷
+//            array[0] = command.getTaskModel();
+//        }
+//        if (command.getSourceSta() != null) {
+//            //婧愮珯鍙扮紪鍙�
+//            array[1] = command.getSourceSta();
+//        }
+//        if (command.getTargetSta() != null) {
+//            //鐩爣绔欏彴缂栧彿
+//            array[2] = command.getTargetSta();
+//        }
+//        if (command.getTaskNo() != null) {
+//            //浠诲姟鍙�
+//            array[3] = command.getTaskNo();
+//        }
+//        return array;
+//    }
+//
+//    //鍒嗛厤浠诲姟
+//    private void assignWork(LiftAssignCommand assignCommand) {
+//        LiftRedisCommand redisCommand = new LiftRedisCommand();
+//        redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿
+//        redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙�
+//        redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭
+//        redisCommand.setAssignCommand(assignCommand);//鍛戒护
+//        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+//        redisUtil.set(RedisKeyType.LIFT.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand));
+//        liftProtocol.setAssignCommand(assignCommand);
+//        liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);
+//        //鎵ц涓嬪彂浠诲姟
+//        executeWork(assignCommand.getTaskNo());
+//    }
+//
+//    //鎵ц浠诲姟
+//    private boolean executeWork(Short wrkNo) {
+//        //璇诲彇redis鏁版嵁
+//        if (wrkNo == null) {
+//            return false;
+//        }
+//
+//        if (wrkNo >= 20000 && wrkNo <= 30000) {
+//            //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿
+//            BasLiftOptService basLiftOptService = SpringUtils.getBean(BasLiftOptService.class);
+//            BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftProtocol.getLiftNo().intValue());
+//            if (basLiftOpt != null) {
+//                wrkNo = basLiftOpt.getWrkNo().shortValue();
+//            }
+//        }
+//
+//        Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo);
+//        if (o == null) {
+//            return false;
+//        }
+//        LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
+//        List<NyLiftCommand> commands = redisCommand.getAssignCommand().getCommands();
+//        //褰撳墠姝ュ簭
+//        int commandStep = redisCommand.getCommandStep();
+//        //鎬绘搴�
+//        int size = commands.size();
+//
+//        if (!redisCommand.getLiftNo().equals(liftProtocol.getLiftNo())) {
+//            return false;
+//        }
+//
+//        if (commandStep != 0) {
+//            //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀仛瀹�
+//            NyLiftCommand lastCommand = commands.get(commandStep - 1);//涓婁竴鏉℃寚浠�
+//            if (!liftProtocol.getBusy() && liftProtocol.getTaskNo().equals(lastCommand.getTaskNo())) {
+//                //鎻愬崌鏈虹┖闂层�佷笖鎻愬崌鏈哄伐浣滃彿涓庝笂涓�鏉℃寚浠ゅ伐浣滃彿鐩稿悓
+//                lastCommand.setComplete(true);//鏍囪浠诲姟瀹屾垚
+//            }
+//
+//            //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+//            redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
+//
+//            if (!lastCommand.getComplete()) {
 //                //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠�
 //                return false;
 //            }
-//        }
-
-        //鍙栧嚭鍛戒护
-        LiftCommand command = commands.get(commandStep);
-        if (command.getOperaStaNo() != null && command.getDevpId() != null) {
-            //绔欑偣鍜岃緭閫佺嚎ID涓嶄负null锛岄渶瑕佷笅鍙戠珯鐐规寚浠よ皟搴︽寚瀹氱珯鐐硅繘琛岄摼鏉¤浆鍔�
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, command.getDevpId());
-            StaProtocol staProtocol = devpThread.getStation().get(command.getOperaStaNo().intValue());
-            staProtocol = staProtocol.clone();
-            if (!staProtocol.isLiftArrival()) {//閾炬潯杞姩鏉′欢锛岄渶瑕佹湁鎻愬崌鏈哄埌浣嶄俊鍙�
-                liftProtocol.setPakMk(true);
-                return false;
-            }
-            staProtocol.setWorkNo(wrkNo);//璁剧疆浠诲姟鍙�
-            if (command.getStaNo() != null) {
-                staProtocol.setStaNo(command.getStaNo());//璁剧疆鐩爣绔�
-            }
-
-            if (command.getRotationDire() != null) {
-                staProtocol.setRotationDire(command.getRotationDire());//绔欑偣閾炬潯杞姩淇″彿
-            }
-            Integer devpId = command.getDevpId();
-            boolean result1 = MessageQueue.offer(SlaveType.Devp, devpId, new Task(3, staProtocol));//涓嬪彂鍛戒护浣胯緭閫佺嚎閾炬潯杩愯浆
-        }
-
-        WrkMast wrkMast = wrkMastMapper.selectByWorkNo(wrkNo.intValue());
-        if (wrkMast != null) {
-            if (wrkMast.getWrkSts() == 28) {//28.鎻愬崌鏈烘惉杩愪腑
-                if (command.getRun().intValue() == 1 && command.getDistPosition().intValue() == LiftLevType.TWO.lev) {
-                    //鎻愬崌鏈虹Щ鍔ㄤ笖浣嶇疆鏄埌杈撻�佺嚎妤煎眰锛岄渶瑕佸垽鏂珯鐐硅揣鐗╂槸鍚︽棤鐗╋紝鎻愬崌鏈烘槸鍚︽湁鐗�
-                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, command.getDevpId());
-                    //宸ヤ綔妗f簮搴撲綅妤煎眰
-                    int wrkMastLocNoLey = Utils.getLev(wrkMast.getSourceLocNo());
-                    StaProtocol staProtocol = devpThread.getStation().get(Utils.levToOutInStaNo(wrkMastLocNoLey >= 2 ? wrkMastLocNoLey + 1 : wrkMastLocNoLey));//璧峰绔欑偣
-                    //鍒ゆ柇杈撻�佺珯鐐规槸鍚︽湁鐗╋紝鍙湁鏃犵墿鎯呭喌鎵嶈兘缁х画璋冨害鎻愬崌鏈�
-                    if (staProtocol.isLoading()) {
-                        //鏈夌墿绂佹璋冨害
-                        return false;
-                    }
-                }
-            }
-        }
-
-        //涓嬪彂鍛戒护
-        if (!write(command)) {
-            News.error("鎻愬崌鏈哄懡浠や笅鍙戝け璐ワ紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
-            return false;
-        }else {
-            News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
-
-            //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
-            liftProtocol.setPakMk(false);
-
-            //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
-            BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class);
-            if (liftOptService != null) {
-                short[] commandArr = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃
-                BasLiftOpt opt = new BasLiftOpt(
-                        redisCommand.getWrkNo().intValue(),
-                        redisCommand.getLiftNo().intValue(),
-                        new Date(),
-                        null,
-                        null,
-                        null,
-                        JSON.toJSONString(command),
-                        JSON.toJSONString(commandArr)
-                );
-                liftOptService.insert(opt);
-            }
-
-            //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚
-            if (commandStep < size - 1) {
-                //鏇存柊redis鏁版嵁
-                //姝ュ簭澧炲姞
-                commandStep++;
-                redisCommand.setCommandStep(commandStep);
-                //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-                redisUtil.set("lift_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
-            }else {
-                //宸叉墽琛屽畬鎴�
-                //鍒犻櫎redis
-                redisUtil.del("lift_wrk_no_" + redisCommand.getWrkNo());
-
-                //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
-                liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING);
-                News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * 鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
-     */
-    public LiftCommand getUnlockCommand(Short liftNo) {
-        LiftCommand command = new LiftCommand();
-        command.setRun((short) 0);
-        command.setLiftNo(liftNo);
-        command.setLiftLock(false);
-        return command;
-    }
-
-    /**
-     * 鑾峰彇澶嶄綅鍛戒护
-     */
-    public LiftCommand getResetCommand() {
-        LiftCommand command = new LiftCommand();
-        command.setRun((short) 5);
-        command.setLiftLock(false);
-        return command;
-    }
-
-    /**
-     * 鑾峰彇鎻愬崌鏈轰笂鍗囦笅闄嶅懡浠�
-     */
-    public LiftCommand getLiftUpDownCommand(Integer lev) {
-        LiftCommand command = new LiftCommand();
-        command.setRun((short) 1);//鍗囬檷
-        Short position = LiftLevType.getRealLev(lev);//鑾峰彇鎻愬崌鏈哄疄闄呮ゼ灞傛暟鍊�
-        command.setDistPosition(position);
-//        command.setSpeed((short) 200);
-//        command.setHeight2((short) 180);
-//        command.setHeight3((short) 1645);
-//        command.setHeight4((short) (2 * 1645));
-//        command.setHeight5((short) (3 * 1645));
-        return command;
-    }
-
-    /**
-     * 鑾峰彇鎻愬崌鏈轰笂鍗囦笅闄嶅懡浠�
-     */
-    public LiftCommand getLiftUpDownCommand(Short liftNo, Short taskNo, Integer lev) {
-        LiftCommand command = new LiftCommand();
-        Short position = LiftLevType.getRealLev(lev);//鑾峰彇鎻愬崌鏈哄疄闄呮ゼ灞傛暟鍊�
-        command.setRun((short) 1);//鍗囬檷
-        command.setLiftNo(liftNo);//鎻愬崌鏈哄彿
-        command.setTaskNo(taskNo);//浠诲姟鍙�
-        command.setDistPosition(position);//鐩爣妤煎眰
-//        command.setSpeed((short) 200);
-//        command.setHeight2((short) 180);
-//        command.setHeight3((short) 1645);
-//        command.setHeight4((short) 3290);
-//        command.setHeight5((short) 4945);
-        return command;
-    }
-
-    /**
-     * 鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠わ紝direction锛�1=銆嬫湁璐ф杞紝2=銆嬫湁璐у弽杞紝3=>鏃犺揣姝h浆锛�4=>鏃犺揣鍙嶈浆
-     */
-    public LiftCommand getLiftTurnCommand(Integer direction) {
-        LiftCommand command = new LiftCommand();
-        Short run = 0;
-        switch (direction) {
-            case 1:
-                run = 6;//鏈夎揣姝h浆
-                break;
-            case 2:
-                run = 3;//鏈夎揣鍙嶈浆
-                break;
-            case 3:
-                run = 2;//鏃犺揣姝h浆
-                break;
-            case 4:
-                run = 7;//鏃犺揣鍙嶈浆
-                break;
-            case 5:
-                run = 4;//閾炬潯鍋滄
-        }
-        command.setRun(run);
-        return command;
-    }
-
-    /**
-     * 鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠わ紝direction锛�1=銆嬫湁璐ф杞紝2=銆嬫湁璐у弽杞�
-     */
-    public LiftCommand getLiftTurnCommand(Short liftNo, Short taskNo, Integer direction) {
-        LiftCommand command = new LiftCommand();
-        Short run = 0;
-        switch (direction) {
-            case 1:
-                run = 6;//鏈夎揣姝h浆
-                break;
-            case 2:
-                run = 3;//鏈夎揣鍙嶈浆
-                break;
-            case 3:
-                run = 2;//鏃犺揣姝h浆
-                break;
-            case 4:
-                run = 7;//鏃犺揣鍙嶈浆
-                break;
-            case 5:
-                run = 4;//閾炬潯鍋滄
-        }
-        command.setRun(run);
-        command.setLiftNo(liftNo);//鎻愬崌鏈哄彿
-        command.setTaskNo(taskNo);//浠诲姟鍙�
-        return command;
-    }
-
-    /**
-     * 鍒濆鍖栨彁鍗囨満
-     */
-    private void initLift() {
-        this.connect();
-        if (null == liftProtocol) {
-            liftProtocol = new LiftProtocol();
-        }
-    }
-
-    /******************************************************************************************/
-    /**************************************** 娴嬭瘯涓撶敤 *****************************************/
-    /*****************************************************************************************/
-    public static void main(String[] args) throws InterruptedException {
-        LiftSlave slave = new LiftSlave();
-        slave.setId(1);
-        slave.setIp("192.168.4.24");
-        slave.setPort(502);
-//        LiftThread thread = new LiftThread(slave,);
-//        thread.connect();
-//        thread.readStatus();
 //
-//        LiftCommand command = new LiftCommand();
-//        command.setRun((short) 1);
-//        command.setDistPosition((short) 12);
-//        command.setSpeed((short) 300);
-//        command.setHeight2((short) 100);
-//        command.setHeight3((short) 200);
-//        command.setHeight4((short) 303);
-//        command.setLiftLock(true);
-//        thread.write(command);
-
-    }
-
-}
+//            //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬�
+//            NyLiftCommand endCommand = commands.get(commands.size() - 1);
+//            if (endCommand.getComplete()) {
+//                //宸叉墽琛屽畬鎴�
+//                //鍒犻櫎redis
+//                redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo());
+//
+//                //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
+//                liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING);
+//                News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愭墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", redisCommand.getLiftNo(), JSON.toJSON(redisCommand));
+//            }
+//
+//        }
+//
+//        //鍙栧嚭鍛戒护
+//        NyLiftCommand command = commands.get(commandStep);
+//
+//        //涓嬪彂鍛戒护
+//        if (!write(command)) {
+//            News.error("鎻愬崌鏈哄懡浠や笅鍙戝け璐ワ紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
+//            return false;
+//        }
+//
+//        liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);
+//        News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
+//
+//        //灏嗘爣璁扮疆涓簍rue(闃叉閲嶅彂)
+//        liftProtocol.setPakMk(true);
+//
+//        //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
+//        BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class);
+//        if (liftOptService != null) {
+//            short[] commandArr = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃
+//            BasLiftOpt opt = new BasLiftOpt(
+//                    redisCommand.getWrkNo().intValue(),
+//                    liftProtocol.getLiftNo().intValue(),
+//                    new Date(),
+//                    null,
+//                    null,
+//                    null,
+//                    JSON.toJSONString(command),
+//                    JSON.toJSONString(liftProtocol)
+//            );
+//            opt.setDeviceWrk(command.getTaskNo().toString());//璁惧宸ヤ綔鍙�
+//            liftOptService.insert(opt);
+//        }
+//
+//        //鏇存柊redis鏁版嵁
+//        //姝ュ簭澧炲姞
+//        commandStep++;
+//        redisCommand.setCommandStep(commandStep);
+//        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+//        redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
+//
+////        //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚
+////        if (commandStep < size - 1) {
+////            //鏇存柊redis鏁版嵁
+////            //姝ュ簭澧炲姞
+////            commandStep++;
+////            redisCommand.setCommandStep(commandStep);
+////            //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+////            redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
+////        }else {
+////            //宸叉墽琛屽畬鎴�
+////            //鍒犻櫎redis
+////            redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo());
+////
+////            //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
+////            liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING);
+////            News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
+////        }
+//
+//        if (redisCommand.getAssignCommand().getTaskMode() == NyLiftTaskModelType.RESET.id.shortValue()) {
+//            //澶嶄綅鍛戒护
+//            //宸ヤ綔鍙锋竻闆�
+//            liftProtocol.setTaskNo((short) 0);
+//            //浠ょ墝娓呴浂
+//            liftProtocol.setToken(0);
+//            //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵��
+//            liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
+//            //浠诲姟鎸囦护娓呴浂
+//            liftProtocol.setAssignCommand(null);
+//        }
+//
+//        return true;
+//    }
+//
+//    //缁欐彁鍗囨満鍐欏叆杩涘嚭鐘舵��
+//    private void write2(HashMap<String,Object> data) {
+////        //鍑�
+////        status = true;
+////        //杩�
+////        status = false;
+//        int lev = Integer.parseInt(data.get("lev").toString());
+//        boolean status = Boolean.parseBoolean(data.get("status").toString());
+//
+//        ArrayList<String> list = new ArrayList<String>(){{
+//            add("83.8.0");
+//            add("83.8.1");
+//            add("83.8.2");
+//            add("83.8.3");
+//            add("83.8.4");
+//            add("83.8.5");
+//            add("83.8.6");
+//            add("83.8.7");
+//            add("83.9.0");
+//            add("83.9.1");
+//        }};
+//        OperateResult result = siemensS7Net.Write("DB" + list.get(lev - 1), status);
+//        if (result != null && result.IsSuccess) {
+//            News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}]", slave.getId());
+//        } else {
+//            News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+//        }
+//    }
+//
+//    /******************************************************************************************/
+//    /**************************************** 娴嬭瘯涓撶敤 *****************************************/
+//    /*****************************************************************************************/
+//    public static void main(String[] args) throws InterruptedException {
+//        LiftSlave slave = new LiftSlave();
+//        slave.setId(1);
+//        slave.setIp("192.168.4.24");
+//        slave.setPort(502);
+////        LiftThread thread = new LiftThread(slave,);
+////        thread.connect();
+////        thread.readStatus();
+////
+////        LiftCommand command = new LiftCommand();
+////        command.setRun((short) 1);
+////        command.setDistPosition((short) 12);
+////        command.setSpeed((short) 300);
+////        command.setHeight2((short) 100);
+////        command.setHeight3((short) 200);
+////        command.setHeight4((short) 303);
+////        command.setLiftLock(true);
+////        thread.write(command);
+//
+//    }
+//
+//}

--
Gitblit v1.9.1