From 09fcc4ec56a1ce6c0fcb308348d8dd5e2c08d336 Mon Sep 17 00:00:00 2001
From: fyxc <fyxc@qq.com>
Date: 星期四, 22 五月 2025 14:33:06 +0800
Subject: [PATCH] server commit files

---
 src/main/java/com/zy/core/thread/LiftThread.java |  591 ++++++----------------------------------------------------
 1 files changed, 69 insertions(+), 522 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
index 2854b0a..23f189c 100644
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -1,522 +1,69 @@
-//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);//鑾峰彇鍛戒护鎶ユ枃
-//
-//        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)));
-//            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;
-//        }
-//    }
-//
-//    //鑾峰彇鍛戒护鎶ユ枃
-//    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;
-//            }
-//
-//            //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬�
-//            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);
-//
-//    }
-//
-//}
+package com.zy.core.thread;
+
+import com.zy.common.ExecuteSupport;
+import com.zy.common.model.NavigateNode;
+import com.zy.core.ThreadHandler;
+import com.zy.core.enums.ForkLiftTaskModeType;
+import com.zy.core.enums.LiftCommandModeType;
+import com.zy.core.enums.LiftProtocolStatusType;
+import com.zy.core.model.CommandResponse;
+import com.zy.core.model.command.LiftCommand;
+import com.zy.core.model.protocol.LiftProtocol;
+import com.zy.core.model.protocol.LiftStaProtocol;
+
+import java.util.List;
+
+public interface LiftThread extends ThreadHandler {
+
+    LiftProtocol getStatus();//鑾峰彇鎻愬崌鏈虹姸鎬�
+
+    LiftProtocol getStatus(boolean clone);//鑾峰彇鎻愬崌鏈虹姸鎬�
+
+    List<LiftStaProtocol> getLiftStaProtocols();
+
+    CommandResponse move(LiftCommand command);//鍗囬檷绉诲姩
+
+    CommandResponse palletInOut(LiftCommand command);//鎵樼洏鍑哄叆
+
+    CommandResponse lock(LiftCommand command);//閿佸畾鎻愬崌鏈�
+
+    CommandResponse unlock(LiftCommand command);//瑙i攣鎻愬崌鏈�
+
+    CommandResponse reset(LiftCommand command);//澶嶄綅
+
+    boolean isIdle();//鏄惁绌洪棽
+
+    boolean isDeviceIdle();//璁惧鏄惁绌洪棽
+
+    boolean isDeviceIdle(ExecuteSupport support);//璁惧鏄惁绌洪棽
+
+    boolean setProtocolStatus(LiftProtocolStatusType status);//璁剧疆宸ヤ綔鐘舵��
+
+    boolean setSyncTaskNo(Integer taskNo);//璁剧疆宸ヤ綔鍙�
+
+    boolean isLock(ExecuteSupport support);
+
+    int generateDeviceTaskNo(int taskNo, ForkLiftTaskModeType type);//鐢熸垚纭欢璁惧宸ヤ綔鍙�
+
+    String getLiftLocNo(int lev);//鑾峰彇鎻愬崌鏈轰綅缃�
+
+    String getLiftStandByLocNo(int lev, boolean in);//鑾峰彇鎻愬崌鏈哄緟鏈轰綅
+
+    List<NavigateNode> getLiftStaNodes(int lev);
+
+    Integer getLevToStaNo(int lev);
+
+    //***************鑾峰彇鍛戒护*****************
+    List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//鎻愬崌鏈虹Щ鍔�
+
+    List<LiftCommand> getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//杞借溅绉诲姩
+
+    List<LiftCommand> getPalletInCommand(Integer taskNo, Integer sourceLev, Integer targetLev);//鎵樼洏鍏�
+
+    List<LiftCommand> getPalletOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev);//鎵樼洏鍑�
+
+    List<LiftCommand> getLockCommand(Integer taskNo, Boolean lock);//閿佸畾/瑙i攣鎻愬崌鏈�
+
+    List<LiftCommand> getShuttleSignalCommand(Integer taskNo, Boolean signal);//灏忚溅宸插埌浣�/宸查┒绂讳俊鍙�
+
+}

--
Gitblit v1.9.1