From 3c45d4f9f3aba5bc85a9577e43c0dffc71b93a22 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 10 七月 2025 15:54:27 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java |  950 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 475 insertions(+), 475 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java b/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java
index 82bb5aa..ae2b966 100644
--- a/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java
+++ b/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java
@@ -1,475 +1,475 @@
-package com.zy.core.thread.impl;
-
-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.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.DateUtils;
-import com.core.common.SpringUtils;
-import com.zy.asrs.entity.BasLift;
-import com.zy.asrs.entity.DeviceDataLog;
-import com.zy.asrs.service.BasLiftService;
-import com.zy.asrs.service.DeviceDataLogService;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.ExecuteSupport;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.News;
-import com.zy.core.action.ForkLiftAction;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.*;
-import com.zy.core.model.CommandResponse;
-import com.zy.core.model.ForkLiftSlave;
-import com.zy.core.model.command.ForkLiftCommand;
-import com.zy.core.model.protocol.ForkLiftProtocol;
-import com.zy.core.model.protocol.ForkLiftStaProtocol;
-import com.zy.core.thread.ForkLiftThread;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-
-import java.text.MessageFormat;
-import java.util.*;
-
-@Slf4j
-@SuppressWarnings("all")
-public class LfdZyForkLiftSlaveThread implements ForkLiftThread {
-
-    private Integer masterId;
-    private ForkLiftSlave slave;
-    private ForkLiftProtocol forkLiftProtocol;
-    private RedisUtil redisUtil;
-    private List<ForkLiftStaProtocol> forkLiftStaProtocols = new ArrayList<>();
-    private LfdZyForkLiftMasterThread masterThread;
-
-    public LfdZyForkLiftSlaveThread(ForkLiftSlave slave, RedisUtil redisUtil, Integer masterId) {
-        this.slave = slave;
-        this.redisUtil = redisUtil;
-        this.masterId = masterId;
-        //鍒濆鍖栫珯鐐�
-        for (ForkLiftSlave.Sta sta : this.slave.getSta()) {
-            ForkLiftStaProtocol forkLiftStaProtocol = new ForkLiftStaProtocol();
-            forkLiftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙�
-            forkLiftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰
-            String locNo = Utils.getLocNo(this.slave.getStaRow(), this.slave.getStaBay(), sta.getLev());
-            forkLiftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙�
-            forkLiftStaProtocol.setLiftNo(sta.getLiftNo());//鎻愬崌鏈哄彿
-            forkLiftStaProtocols.add(forkLiftStaProtocol);
-        }
-    }
-
-    @Override
-    public boolean connect() {
-        boolean result = false;
-        LfdZyForkLiftMasterThread masterThread = (LfdZyForkLiftMasterThread) SlaveConnection.get(SlaveType.ForkLiftMaster, masterId);
-        if(masterThread != null) {
-            result = true;
-            this.masterThread = masterThread;
-        }
-        return result;
-    }
-
-    @Override
-    public void close() {
-
-    }
-
-    @Override
-    public void run() {
-        News.info("{}鍙疯揣鍙夋彁鍗囨満绾跨▼鍚姩", slave.getId());
-        this.connect();
-        while (true) {
-            try {
-                if (this.masterThread == null) {
-                    this.connect();
-                    continue;
-                }
-
-                read();
-                Thread.sleep(300);
-                execute();
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    private void execute() {
-        ForkLiftAction forkLiftAction = null;
-        try {
-            forkLiftAction = SpringUtils.getBean(ForkLiftAction.class);
-        }catch (Exception e){}
-        if (forkLiftAction == null) {
-            return;
-        }
-
-        Object object = redisUtil.get(RedisKeyType.FORK_LIFT_FLAG.key + slave.getId());
-        if (object == null) {
-            return;
-        }
-
-        Integer taskNo = Integer.valueOf(String.valueOf(object));
-        if (taskNo != 0) {
-            //瀛樺湪浠诲姟闇�瑕佹墽琛�
-            boolean result = forkLiftAction.executeWork(slave.getId(), taskNo);
-        }
-    }
-
-    private void read() {
-        try {
-            readStatus();
-
-            //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓簍rue
-            if (forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PICK_UP)
-                    || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PUT_DOWN)
-                    || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.WAITING)) {
-                forkLiftProtocol.setPakMk(true);
-            }
-        } catch (Exception e) {
-            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-        }
-    }
-
-    private void readStatus() {
-        try {
-            //鑾峰彇鎻愬崌鏈烘暟鎹�
-            OperateResultExOne<byte[]> result1 = this.masterThread.read(this.slave.getId(), "status");
-            SiemensS7Net siemensS7Net = this.masterThread.getSiemensS7Net();
-            if (result1.IsSuccess) {
-                if (null == forkLiftProtocol) {
-                    forkLiftProtocol = new ForkLiftProtocol();
-                    forkLiftProtocol.setLiftNo(slave.getId());
-                    forkLiftProtocol.setProtocolStatus(ForkLiftProtocolStatusType.NONE);
-
-                    InnerForkLiftExtend innerForkLiftExtend = new InnerForkLiftExtend();
-                }
-
-                //----------璇诲彇鎻愬崌鏈虹姸鎬�-----------
-                //妯″紡
-                forkLiftProtocol.setModel((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 0));
-                //PLC浠诲姟鍙�
-                forkLiftProtocol.setWrkNo((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 2));
-                //浠诲姟鐘舵��
-                forkLiftProtocol.setProtocolStatus((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 4));
-                //浠诲姟妯″紡
-                forkLiftProtocol.setTaskMode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 6));
-                //鍙栬揣鏁版嵁
-                forkLiftProtocol.setPick((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 8));
-                //鏀捐揣鏁版嵁
-                forkLiftProtocol.setPut((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 10));
-                //鍑哄叆搴撴ā寮�
-                forkLiftProtocol.setIOMode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 12));
-                //鏁呴殰鐮�
-                forkLiftProtocol.setErrorCode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 14));
-                //褰撳墠灞�
-                forkLiftProtocol.setLev((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 16));
-
-                //************琛ュ厖鎵╁睍瀛楁*************
-                InnerForkLiftExtend forkLiftExtend = (InnerForkLiftExtend) forkLiftProtocol.getExtend();
-                forkLiftProtocol.setExtend(forkLiftExtend);
-
-            }else {
-                OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆憑1}璇诲彇璐у弶鎻愬崌鏈虹姸鎬佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId()));
-            }
-
-            OperateResultExOne<byte[]> result2 = this.masterThread.read(this.slave.getId(), "staStatusTray");
-            if (result2.IsSuccess) {
-                for (int i = 0; i < this.slave.getSta().size(); i++) {
-                    ForkLiftSlave.Sta sta = this.slave.getSta().get(i);
-                    if (forkLiftStaProtocols.isEmpty()) {
-                        continue;
-                    }
-
-                    short val = siemensS7Net.getByteTransform().TransInt16(result2.Content, i * 2);
-                    ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i);
-                    forkLiftStaProtocol.setHasTray(val == 1);
-                }
-            }
-
-            OperateResultExOne<byte[]> result3 = this.masterThread.read(this.slave.getId(), "staStatusCar");
-            if (result3.IsSuccess) {
-                for (int i = 0; i < this.slave.getSta().size(); i++) {
-                    ForkLiftSlave.Sta sta = this.slave.getSta().get(i);
-                    if (forkLiftStaProtocols.isEmpty()) {
-                        continue;
-                    }
-
-                    short val = siemensS7Net.getByteTransform().TransInt16(result3.Content, i * 2);
-                    ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i);
-                    forkLiftStaProtocol.setHasCar(val == 1);
-                }
-            }
-
-            if (System.currentTimeMillis() - forkLiftProtocol.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(forkLiftProtocol));
-                deviceDataLog.setType("forkLift");
-                deviceDataLog.setDeviceNo(forkLiftProtocol.getLiftNo());
-                deviceDataLog.setCreateTime(new Date());
-                deviceDataLogService.insert(deviceDataLog);
-
-                //淇濆瓨鏁版嵁璁板綍
-                DeviceDataLog deviceDataLog2 = new DeviceDataLog();
-                deviceDataLog2.setOriginData(Base64.getEncoder().encodeToString(result2.Content));
-                deviceDataLog2.setWcsData(JSON.toJSONString(forkLiftStaProtocols));
-                deviceDataLog2.setType("forkLiftStaProtocols");
-                deviceDataLog2.setDeviceNo(forkLiftProtocol.getLiftNo());
-                deviceDataLog2.setCreateTime(new Date());
-                deviceDataLogService.insert(deviceDataLog2);
-
-                //鏇存柊閲囬泦鏃堕棿
-                forkLiftProtocol.setDeviceDataLog(System.currentTimeMillis());
-            }
-
-            //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
-            BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
-            BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>()
-                    .eq("lift_no", slave.getId()));
-            if (basLift == null) {
-                basLift = new BasLift();
-                //鎻愬崌鏈哄彿
-                basLift.setLiftNo(forkLiftProtocol.getLiftNo());
-                basLift.setStatus(1);
-                basLiftService.insert(basLift);
-            }
-            //浠诲姟鍙�
-            basLift.setWrkNo(forkLiftProtocol.getTaskNo());
-            //淇敼鏃堕棿
-            basLift.setUpdateTime(new Date());
-            //璁惧鐘舵��
-            basLift.setDeviceStatus(JSON.toJSONString(forkLiftProtocol));
-            if (basLiftService.updateById(basLift)) {
-                OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), forkLiftProtocol.getLiftNo()));
-            }
-
-        } catch (Exception e) {
-            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栬揣鍙夋彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-        }
-    }
-
-    @Override
-    public ForkLiftProtocol getStatus(boolean clone) {
-        if (this.forkLiftProtocol == null) {
-            return null;
-        }
-        return clone ? this.forkLiftProtocol.clone() : this.forkLiftProtocol;
-    }
-
-    @Override
-    public List<ForkLiftStaProtocol> getForkLiftStaProtocols() {
-        return this.forkLiftStaProtocols;
-    }
-
-    @Override
-    public ForkLiftProtocol getStatus() {
-        return getStatus(true);
-    }
-
-    @Override
-    public CommandResponse pickAndPut(ForkLiftCommand command) {
-        CommandResponse response = new CommandResponse(false);
-
-        short[] array = new short[4];
-        array[0] = command.getTaskNo();//浠诲姟鍙�
-        array[1] = command.getMode();//浠诲姟妯″紡
-        array[2] = command.getPick();//鍙栬揣鏁版嵁
-        array[3] = command.getPut();//鏀捐揣鏁版嵁
-        OperateResult result = this.masterThread.write(this.slave.getId(), "write", array);
-        if (result.IsSuccess) {
-            OperateResult result2 = this.masterThread.write(this.slave.getId(), "writeConfirm", command.getConfirm());
-            if (result2.IsSuccess) {
-                response.setResult(true);
-            }
-        }
-        return response;
-    }
-
-    @Override
-    public CommandResponse shuttleSwitch(ForkLiftCommand command) {
-        CommandResponse response = new CommandResponse(false);
-
-        short[] array = new short[4];
-        array[0] = command.getTaskNo();//浠诲姟鍙�
-        array[1] = command.getMode();//浠诲姟妯″紡
-        array[2] = command.getPick();//鍙栬揣鏁版嵁
-        array[3] = command.getPut();//鏀捐揣鏁版嵁
-        OperateResult result = this.masterThread.write(this.slave.getId(), "write", array);
-        if (result.IsSuccess) {
-            OperateResult result2 = this.masterThread.write(this.slave.getId(), "writeConfirm", command.getConfirm());
-            if (result2.IsSuccess) {
-                response.setResult(true);
-            }
-        }
-        return response;
-    }
-
-    @Override
-    public CommandResponse move(ForkLiftCommand command) {
-        CommandResponse response = new CommandResponse(false);
-
-        short[] array = new short[4];
-        array[0] = command.getTaskNo();//浠诲姟鍙�
-        array[1] = command.getMode();//浠诲姟妯″紡
-        array[2] = command.getPut();//鏀捐揣鏁版嵁
-        OperateResult result = this.masterThread.write(this.slave.getId(), "write", array);
-        if (result.IsSuccess) {
-            OperateResult result2 = this.masterThread.write(this.slave.getId(), "writeConfirm", command.getConfirm());
-            if (result2.IsSuccess) {
-                response.setResult(true);
-            }
-        }
-        return response;
-    }
-
-    @Override
-    public CommandResponse reset() {
-        CommandResponse response = new CommandResponse(false);
-        OperateResult result = this.masterThread.write(this.slave.getId(), "confirm", (short) 1);
-        if (result.IsSuccess) {
-            News.info("璐у弶鎻愬崌鏈虹‘璁ゅ懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}", forkLiftProtocol.getLiftNo());
-            response.setResult(true);
-        }
-        return response;
-    }
-
-    @Override
-    public boolean isIdle() {
-        if (this.forkLiftProtocol.getTaskNo() == null
-                || this.forkLiftProtocol.getProtocolStatus() == null
-                || this.forkLiftProtocol.getModel() == null
-                || this.forkLiftProtocol.getErrorCode() == null
-        ) {
-            return false;
-        }
-
-        boolean res = this.forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.IDLE.id
-                && this.forkLiftProtocol.getWrkNo() == 0
-                && this.forkLiftProtocol.getTaskNo() == 0
-                && this.forkLiftProtocol.getModel() == 2
-                && this.forkLiftProtocol.getErrorCode() == 0
-                ;
-        return res;
-    }
-
-    @Override
-    public boolean isDeviceIdle() {
-        return isDeviceIdle(null);
-    }
-
-    @Override
-    public boolean isDeviceIdle(ExecuteSupport support) {
-        if (null != support) {
-            Boolean judgement = support.judgement();
-            if (judgement != null && !judgement) {
-                return true;
-            }
-        }
-
-        if (this.forkLiftProtocol.getTaskNo() == null
-                || this.forkLiftProtocol.getProtocolStatus() == null
-                || this.forkLiftProtocol.getModel() == null
-                || this.forkLiftProtocol.getErrorCode() == null
-        ) {
-            return false;
-        }
-
-        boolean res = this.forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.IDLE.id
-                && this.forkLiftProtocol.getWrkNo() == 0
-                && this.forkLiftProtocol.getModel() == 2
-                && this.forkLiftProtocol.getErrorCode() == 0
-                ;
-        return res;
-    }
-
-    @Override
-    public boolean setProtocolStatus(ForkLiftProtocolStatusType status) {
-        return false;
-    }
-
-    @Override
-    public boolean setSyncTaskNo(Integer taskNo) {
-        this.forkLiftProtocol.setSyncTaskNo(taskNo);
-        return true;
-    }
-
-    @Override
-    public boolean switchIOMode(ForkLiftIoModeType type) {
-        OperateResult result = this.masterThread.write(this.slave.getId(), "switchIOMode", type.id.shortValue());
-        if (result.IsSuccess) {
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public int generateDeviceTaskNo(int taskNo, ForkLiftTaskModeType type) {
-        return taskNo;
-    }
-
-    @Override
-    public List<ForkLiftCommand> getPickAndPutCommand(Integer taskNo, Integer pick, Integer put) {
-        Integer realPick = pick % 1000;
-        Integer realPut = put % 1000;
-
-        List<ForkLiftCommand> commands = new ArrayList<>();
-        ForkLiftCommand command = new ForkLiftCommand();
-        command.setLiftNo(slave.getId());
-        command.setTaskNo(taskNo.shortValue());
-        command.setMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
-        command.setPick(realPick.shortValue());
-        command.setPut(realPut.shortValue());
-        command.setConfirm((short) 1);
-
-        commands.add(command);
-        return commands;
-    }
-
-    @Override
-    public List<ForkLiftCommand> getShuttleSwitchCommand(Integer taskNo, Integer pick, Integer put) {
-        Integer realPick = pick % 1000;
-        Integer realPut = put % 1000;
-
-        List<ForkLiftCommand> commands = new ArrayList<>();
-        ForkLiftCommand command = new ForkLiftCommand();
-        command.setLiftNo(slave.getId());
-        command.setTaskNo(taskNo.shortValue());
-        command.setMode(ForkLiftTaskModeType.SHUTTLE_SWITCH.id.shortValue());
-        command.setPick(realPick.shortValue());
-        command.setPut(realPut.shortValue());
-        command.setConfirm((short) 1);
-
-        commands.add(command);
-        return commands;
-    }
-
-    @Override
-    public List<ForkLiftCommand> getMoveCommand(Integer taskNo, Integer pick, Integer put) {
-        Integer realPick = pick % 1000;
-        Integer realPut = put % 1000;
-
-        List<ForkLiftCommand> commands = new ArrayList<>();
-        ForkLiftCommand command = new ForkLiftCommand();
-        command.setLiftNo(slave.getId());
-        command.setTaskNo(taskNo.shortValue());
-        command.setMode(ForkLiftTaskModeType.MOVE.id.shortValue());
-        command.setPick(realPick.shortValue());
-        command.setPut(realPut.shortValue());
-        command.setConfirm((short) 1);
-
-        commands.add(command);
-        return commands;
-    }
-
-    /**
-     * 鎵╁睍瀛楁
-     */
-    @Data
-    private class InnerForkLiftExtend {
-
-    }
-}
+//package com.zy.core.thread.impl;
+//
+//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.baomidou.mybatisplus.mapper.EntityWrapper;
+//import com.core.common.DateUtils;
+//import com.core.common.SpringUtils;
+//import com.zy.asrs.entity.BasLift;
+//import com.zy.asrs.entity.DeviceDataLog;
+//import com.zy.asrs.service.BasLiftService;
+//import com.zy.asrs.service.DeviceDataLogService;
+//import com.zy.asrs.utils.Utils;
+//import com.zy.common.ExecuteSupport;
+//import com.zy.common.utils.RedisUtil;
+//import com.zy.core.News;
+//import com.zy.core.action.ForkLiftAction;
+//import com.zy.core.cache.OutputQueue;
+//import com.zy.core.cache.SlaveConnection;
+//import com.zy.core.enums.*;
+//import com.zy.core.model.CommandResponse;
+//import com.zy.core.model.ForkLiftSlave;
+//import com.zy.core.model.command.ForkLiftCommand;
+//import com.zy.core.model.protocol.ForkLiftProtocol;
+//import com.zy.core.model.protocol.ForkLiftStaProtocol;
+//import com.zy.core.thread.ForkLiftThread;
+//import lombok.Data;
+//import lombok.extern.slf4j.Slf4j;
+//
+//import java.text.MessageFormat;
+//import java.util.*;
+//
+//@Slf4j
+//@SuppressWarnings("all")
+//public class LfdZyForkLiftSlaveThread implements ForkLiftThread {
+//
+//    private Integer masterId;
+//    private ForkLiftSlave slave;
+//    private ForkLiftProtocol forkLiftProtocol;
+//    private RedisUtil redisUtil;
+//    private List<ForkLiftStaProtocol> forkLiftStaProtocols = new ArrayList<>();
+//    private LfdZyForkLiftMasterThread masterThread;
+//
+//    public LfdZyForkLiftSlaveThread(ForkLiftSlave slave, RedisUtil redisUtil, Integer masterId) {
+//        this.slave = slave;
+//        this.redisUtil = redisUtil;
+//        this.masterId = masterId;
+//        //鍒濆鍖栫珯鐐�
+//        for (ForkLiftSlave.Sta sta : this.slave.getSta()) {
+//            ForkLiftStaProtocol forkLiftStaProtocol = new ForkLiftStaProtocol();
+//            forkLiftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙�
+//            forkLiftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰
+//            String locNo = Utils.getLocNo(this.slave.getStaRow(), this.slave.getStaBay(), sta.getLev());
+//            forkLiftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙�
+//            forkLiftStaProtocol.setLiftNo(sta.getLiftNo());//鎻愬崌鏈哄彿
+//            forkLiftStaProtocols.add(forkLiftStaProtocol);
+//        }
+//    }
+//
+//    @Override
+//    public boolean connect() {
+//        boolean result = false;
+//        LfdZyForkLiftMasterThread masterThread = (LfdZyForkLiftMasterThread) SlaveConnection.get(SlaveType.ForkLiftMaster, masterId);
+//        if(masterThread != null) {
+//            result = true;
+//            this.masterThread = masterThread;
+//        }
+//        return result;
+//    }
+//
+//    @Override
+//    public void close() {
+//
+//    }
+//
+//    @Override
+//    public void run() {
+//        News.info("{}鍙疯揣鍙夋彁鍗囨満绾跨▼鍚姩", slave.getId());
+//        this.connect();
+//        while (true) {
+//            try {
+//                if (this.masterThread == null) {
+//                    this.connect();
+//                    continue;
+//                }
+//
+//                read();
+//                Thread.sleep(300);
+//                execute();
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//            }
+//        }
+//    }
+//
+//    private void execute() {
+//        ForkLiftAction forkLiftAction = null;
+//        try {
+//            forkLiftAction = SpringUtils.getBean(ForkLiftAction.class);
+//        }catch (Exception e){}
+//        if (forkLiftAction == null) {
+//            return;
+//        }
+//
+//        Object object = redisUtil.get(RedisKeyType.FORK_LIFT_FLAG.key + slave.getId());
+//        if (object == null) {
+//            return;
+//        }
+//
+//        Integer taskNo = Integer.valueOf(String.valueOf(object));
+//        if (taskNo != 0) {
+//            //瀛樺湪浠诲姟闇�瑕佹墽琛�
+//            boolean result = forkLiftAction.executeWork(slave.getId(), taskNo);
+//        }
+//    }
+//
+//    private void read() {
+//        try {
+//            readStatus();
+//
+//            //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓簍rue
+//            if (forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PICK_UP)
+//                    || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.PUT_DOWN)
+//                    || forkLiftProtocol.getProtocolStatusType().equals(ForkLiftProtocolStatusType.WAITING)) {
+//                forkLiftProtocol.setPakMk(true);
+//            }
+//        } catch (Exception e) {
+//            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+//        }
+//    }
+//
+//    private void readStatus() {
+//        try {
+//            //鑾峰彇鎻愬崌鏈烘暟鎹�
+//            OperateResultExOne<byte[]> result1 = this.masterThread.read(this.slave.getId(), "status");
+//            SiemensS7Net siemensS7Net = this.masterThread.getSiemensS7Net();
+//            if (result1.IsSuccess) {
+//                if (null == forkLiftProtocol) {
+//                    forkLiftProtocol = new ForkLiftProtocol();
+//                    forkLiftProtocol.setLiftNo(slave.getId());
+//                    forkLiftProtocol.setProtocolStatus(ForkLiftProtocolStatusType.NONE);
+//
+//                    InnerForkLiftExtend innerForkLiftExtend = new InnerForkLiftExtend();
+//                }
+//
+//                //----------璇诲彇鎻愬崌鏈虹姸鎬�-----------
+//                //妯″紡
+//                forkLiftProtocol.setModel((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 0));
+//                //PLC浠诲姟鍙�
+//                forkLiftProtocol.setWrkNo((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 2));
+//                //浠诲姟鐘舵��
+//                forkLiftProtocol.setProtocolStatus((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 4));
+//                //浠诲姟妯″紡
+//                forkLiftProtocol.setTaskMode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 6));
+//                //鍙栬揣鏁版嵁
+//                forkLiftProtocol.setPick((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 8));
+//                //鏀捐揣鏁版嵁
+//                forkLiftProtocol.setPut((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 10));
+//                //鍑哄叆搴撴ā寮�
+//                forkLiftProtocol.setIOMode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 12));
+//                //鏁呴殰鐮�
+//                forkLiftProtocol.setErrorCode((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 14));
+//                //褰撳墠灞�
+//                forkLiftProtocol.setLev((int) siemensS7Net.getByteTransform().TransInt16(result1.Content, 16));
+//
+//                //************琛ュ厖鎵╁睍瀛楁*************
+//                InnerForkLiftExtend forkLiftExtend = (InnerForkLiftExtend) forkLiftProtocol.getExtend();
+//                forkLiftProtocol.setExtend(forkLiftExtend);
+//
+//            }else {
+//                OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆憑1}璇诲彇璐у弶鎻愬崌鏈虹姸鎬佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId()));
+//            }
+//
+//            OperateResultExOne<byte[]> result2 = this.masterThread.read(this.slave.getId(), "staStatusTray");
+//            if (result2.IsSuccess) {
+//                for (int i = 0; i < this.slave.getSta().size(); i++) {
+//                    ForkLiftSlave.Sta sta = this.slave.getSta().get(i);
+//                    if (forkLiftStaProtocols.isEmpty()) {
+//                        continue;
+//                    }
+//
+//                    short val = siemensS7Net.getByteTransform().TransInt16(result2.Content, i * 2);
+//                    ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i);
+//                    forkLiftStaProtocol.setHasTray(val == 1);
+//                }
+//            }
+//
+//            OperateResultExOne<byte[]> result3 = this.masterThread.read(this.slave.getId(), "staStatusCar");
+//            if (result3.IsSuccess) {
+//                for (int i = 0; i < this.slave.getSta().size(); i++) {
+//                    ForkLiftSlave.Sta sta = this.slave.getSta().get(i);
+//                    if (forkLiftStaProtocols.isEmpty()) {
+//                        continue;
+//                    }
+//
+//                    short val = siemensS7Net.getByteTransform().TransInt16(result3.Content, i * 2);
+//                    ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i);
+//                    forkLiftStaProtocol.setHasCar(val == 1);
+//                }
+//            }
+//
+//            if (System.currentTimeMillis() - forkLiftProtocol.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(forkLiftProtocol));
+//                deviceDataLog.setType("forkLift");
+//                deviceDataLog.setDeviceNo(forkLiftProtocol.getLiftNo());
+//                deviceDataLog.setCreateTime(new Date());
+//                deviceDataLogService.insert(deviceDataLog);
+//
+//                //淇濆瓨鏁版嵁璁板綍
+//                DeviceDataLog deviceDataLog2 = new DeviceDataLog();
+//                deviceDataLog2.setOriginData(Base64.getEncoder().encodeToString(result2.Content));
+//                deviceDataLog2.setWcsData(JSON.toJSONString(forkLiftStaProtocols));
+//                deviceDataLog2.setType("forkLiftStaProtocols");
+//                deviceDataLog2.setDeviceNo(forkLiftProtocol.getLiftNo());
+//                deviceDataLog2.setCreateTime(new Date());
+//                deviceDataLogService.insert(deviceDataLog2);
+//
+//                //鏇存柊閲囬泦鏃堕棿
+//                forkLiftProtocol.setDeviceDataLog(System.currentTimeMillis());
+//            }
+//
+//            //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
+//            BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
+//            BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>()
+//                    .eq("lift_no", slave.getId()));
+//            if (basLift == null) {
+//                basLift = new BasLift();
+//                //鎻愬崌鏈哄彿
+//                basLift.setLiftNo(forkLiftProtocol.getLiftNo());
+//                basLift.setStatus(1);
+//                basLiftService.insert(basLift);
+//            }
+//            //浠诲姟鍙�
+//            basLift.setWrkNo(forkLiftProtocol.getTaskNo());
+//            //淇敼鏃堕棿
+//            basLift.setUpdateTime(new Date());
+//            //璁惧鐘舵��
+//            basLift.setDeviceStatus(JSON.toJSONString(forkLiftProtocol));
+//            if (basLiftService.updateById(basLift)) {
+//                OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), forkLiftProtocol.getLiftNo()));
+//            }
+//
+//        } catch (Exception e) {
+//            OutputQueue.FORKLIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栬揣鍙夋彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
+//        }
+//    }
+//
+//    @Override
+//    public ForkLiftProtocol getStatus(boolean clone) {
+//        if (this.forkLiftProtocol == null) {
+//            return null;
+//        }
+//        return clone ? this.forkLiftProtocol.clone() : this.forkLiftProtocol;
+//    }
+//
+//    @Override
+//    public List<ForkLiftStaProtocol> getForkLiftStaProtocols() {
+//        return this.forkLiftStaProtocols;
+//    }
+//
+//    @Override
+//    public ForkLiftProtocol getStatus() {
+//        return getStatus(true);
+//    }
+//
+//    @Override
+//    public CommandResponse pickAndPut(ForkLiftCommand command) {
+//        CommandResponse response = new CommandResponse(false);
+//
+//        short[] array = new short[4];
+//        array[0] = command.getTaskNo();//浠诲姟鍙�
+//        array[1] = command.getMode();//浠诲姟妯″紡
+//        array[2] = command.getPick();//鍙栬揣鏁版嵁
+//        array[3] = command.getPut();//鏀捐揣鏁版嵁
+//        OperateResult result = this.masterThread.write(this.slave.getId(), "write", array);
+//        if (result.IsSuccess) {
+//            OperateResult result2 = this.masterThread.write(this.slave.getId(), "writeConfirm", command.getConfirm());
+//            if (result2.IsSuccess) {
+//                response.setResult(true);
+//            }
+//        }
+//        return response;
+//    }
+//
+//    @Override
+//    public CommandResponse shuttleSwitch(ForkLiftCommand command) {
+//        CommandResponse response = new CommandResponse(false);
+//
+//        short[] array = new short[4];
+//        array[0] = command.getTaskNo();//浠诲姟鍙�
+//        array[1] = command.getMode();//浠诲姟妯″紡
+//        array[2] = command.getPick();//鍙栬揣鏁版嵁
+//        array[3] = command.getPut();//鏀捐揣鏁版嵁
+//        OperateResult result = this.masterThread.write(this.slave.getId(), "write", array);
+//        if (result.IsSuccess) {
+//            OperateResult result2 = this.masterThread.write(this.slave.getId(), "writeConfirm", command.getConfirm());
+//            if (result2.IsSuccess) {
+//                response.setResult(true);
+//            }
+//        }
+//        return response;
+//    }
+//
+//    @Override
+//    public CommandResponse move(ForkLiftCommand command) {
+//        CommandResponse response = new CommandResponse(false);
+//
+//        short[] array = new short[4];
+//        array[0] = command.getTaskNo();//浠诲姟鍙�
+//        array[1] = command.getMode();//浠诲姟妯″紡
+//        array[2] = command.getPut();//鏀捐揣鏁版嵁
+//        OperateResult result = this.masterThread.write(this.slave.getId(), "write", array);
+//        if (result.IsSuccess) {
+//            OperateResult result2 = this.masterThread.write(this.slave.getId(), "writeConfirm", command.getConfirm());
+//            if (result2.IsSuccess) {
+//                response.setResult(true);
+//            }
+//        }
+//        return response;
+//    }
+//
+//    @Override
+//    public CommandResponse reset() {
+//        CommandResponse response = new CommandResponse(false);
+//        OperateResult result = this.masterThread.write(this.slave.getId(), "confirm", (short) 1);
+//        if (result.IsSuccess) {
+//            News.info("璐у弶鎻愬崌鏈虹‘璁ゅ懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}", forkLiftProtocol.getLiftNo());
+//            response.setResult(true);
+//        }
+//        return response;
+//    }
+//
+//    @Override
+//    public boolean isIdle() {
+//        if (this.forkLiftProtocol.getTaskNo() == null
+//                || this.forkLiftProtocol.getProtocolStatus() == null
+//                || this.forkLiftProtocol.getModel() == null
+//                || this.forkLiftProtocol.getErrorCode() == null
+//        ) {
+//            return false;
+//        }
+//
+//        boolean res = this.forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.IDLE.id
+//                && this.forkLiftProtocol.getWrkNo() == 0
+//                && this.forkLiftProtocol.getTaskNo() == 0
+//                && this.forkLiftProtocol.getModel() == 2
+//                && this.forkLiftProtocol.getErrorCode() == 0
+//                ;
+//        return res;
+//    }
+//
+//    @Override
+//    public boolean isDeviceIdle() {
+//        return isDeviceIdle(null);
+//    }
+//
+//    @Override
+//    public boolean isDeviceIdle(ExecuteSupport support) {
+//        if (null != support) {
+//            Boolean judgement = support.judgement();
+//            if (judgement != null && !judgement) {
+//                return true;
+//            }
+//        }
+//
+//        if (this.forkLiftProtocol.getTaskNo() == null
+//                || this.forkLiftProtocol.getProtocolStatus() == null
+//                || this.forkLiftProtocol.getModel() == null
+//                || this.forkLiftProtocol.getErrorCode() == null
+//        ) {
+//            return false;
+//        }
+//
+//        boolean res = this.forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.IDLE.id
+//                && this.forkLiftProtocol.getWrkNo() == 0
+//                && this.forkLiftProtocol.getModel() == 2
+//                && this.forkLiftProtocol.getErrorCode() == 0
+//                ;
+//        return res;
+//    }
+//
+//    @Override
+//    public boolean setProtocolStatus(ForkLiftProtocolStatusType status) {
+//        return false;
+//    }
+//
+//    @Override
+//    public boolean setSyncTaskNo(Integer taskNo) {
+//        this.forkLiftProtocol.setSyncTaskNo(taskNo);
+//        return true;
+//    }
+//
+//    @Override
+//    public boolean switchIOMode(ForkLiftIoModeType type) {
+//        OperateResult result = this.masterThread.write(this.slave.getId(), "switchIOMode", type.id.shortValue());
+//        if (result.IsSuccess) {
+//            return true;
+//        }
+//        return false;
+//    }
+//
+//    @Override
+//    public int generateDeviceTaskNo(int taskNo, ForkLiftTaskModeType type) {
+//        return taskNo;
+//    }
+//
+//    @Override
+//    public List<ForkLiftCommand> getPickAndPutCommand(Integer taskNo, Integer pick, Integer put) {
+//        Integer realPick = pick % 1000;
+//        Integer realPut = put % 1000;
+//
+//        List<ForkLiftCommand> commands = new ArrayList<>();
+//        ForkLiftCommand command = new ForkLiftCommand();
+//        command.setLiftNo(slave.getId());
+//        command.setTaskNo(taskNo.shortValue());
+//        command.setMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
+//        command.setPick(realPick.shortValue());
+//        command.setPut(realPut.shortValue());
+//        command.setConfirm((short) 1);
+//
+//        commands.add(command);
+//        return commands;
+//    }
+//
+//    @Override
+//    public List<ForkLiftCommand> getShuttleSwitchCommand(Integer taskNo, Integer pick, Integer put) {
+//        Integer realPick = pick % 1000;
+//        Integer realPut = put % 1000;
+//
+//        List<ForkLiftCommand> commands = new ArrayList<>();
+//        ForkLiftCommand command = new ForkLiftCommand();
+//        command.setLiftNo(slave.getId());
+//        command.setTaskNo(taskNo.shortValue());
+//        command.setMode(ForkLiftTaskModeType.SHUTTLE_SWITCH.id.shortValue());
+//        command.setPick(realPick.shortValue());
+//        command.setPut(realPut.shortValue());
+//        command.setConfirm((short) 1);
+//
+//        commands.add(command);
+//        return commands;
+//    }
+//
+//    @Override
+//    public List<ForkLiftCommand> getMoveCommand(Integer taskNo, Integer pick, Integer put) {
+//        Integer realPick = pick % 1000;
+//        Integer realPut = put % 1000;
+//
+//        List<ForkLiftCommand> commands = new ArrayList<>();
+//        ForkLiftCommand command = new ForkLiftCommand();
+//        command.setLiftNo(slave.getId());
+//        command.setTaskNo(taskNo.shortValue());
+//        command.setMode(ForkLiftTaskModeType.MOVE.id.shortValue());
+//        command.setPick(realPick.shortValue());
+//        command.setPut(realPut.shortValue());
+//        command.setConfirm((short) 1);
+//
+//        commands.add(command);
+//        return commands;
+//    }
+//
+//    /**
+//     * 鎵╁睍瀛楁
+//     */
+//    @Data
+//    private class InnerForkLiftExtend {
+//
+//    }
+//}

--
Gitblit v1.9.1