From 3a56af8205d3bc571a115855b475237022c74caf Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期一, 14 七月 2025 14:57:22 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/impl/NyShuttleThread2.java | 2602 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 1,301 insertions(+), 1,301 deletions(-) diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread2.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread2.java index 6c97534..6f0cdee 100644 --- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread2.java +++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread2.java @@ -1,1302 +1,1302 @@ -package com.zy.core.thread.impl; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.core.common.DateUtils; -import com.core.common.SpringUtils; -import com.core.exception.CoolException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.zy.asrs.entity.BasShuttle; -import com.zy.asrs.entity.DeviceDataLog; -import com.zy.asrs.entity.LocMast; -import com.zy.asrs.service.BasShuttleService; -import com.zy.asrs.service.DeviceDataLogService; -import com.zy.asrs.service.LocMastService; -import com.zy.asrs.utils.Utils; -import com.zy.common.ExecuteSupport; -import com.zy.common.model.MapNode; -import com.zy.common.model.NavigateNode; -import com.zy.common.model.enums.NavigationMapType; -import com.zy.common.utils.NavigateMapData; -import com.zy.common.utils.NavigatePositionConvert; -import com.zy.common.utils.RedisUtil; -import com.zy.core.News; -import com.zy.core.action.ShuttleAction; -import com.zy.core.cache.OutputQueue; -import com.zy.core.enums.*; -import com.zy.core.model.CommandResponse; -import com.zy.core.model.ShuttleSlave; -import com.zy.core.model.command.NyShuttleHttpCommand; -import com.zy.core.model.command.ShuttleCommand; -import com.zy.core.model.command.ShuttleRedisCommand; -import com.zy.core.model.param.ShuttleMoveLocParam; -import com.zy.core.model.protocol.ShuttleProtocol; -import com.zy.core.thread.ShuttleThread; -import com.zy.system.entity.Config; -import com.zy.system.service.ConfigService; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.net.InetAddress; -import java.net.Socket; -import java.text.MessageFormat; -import java.util.*; - -@Slf4j -@SuppressWarnings("all") -public class NyShuttleThread2 implements ShuttleThread { - - private ShuttleSlave slave; - private RedisUtil redisUtil; - private ShuttleProtocol shuttleProtocol; - private Socket socket; - - private static final boolean DEBUG = false;//璋冭瘯妯″紡 - - private List<JSONObject> socketReadResults = new ArrayList<>(); - private List<JSONObject> socketResults = new ArrayList<>(); - - //鍘熷璁惧鏁版嵁 - private Object originDeviceData; - - public NyShuttleThread2(ShuttleSlave slave, RedisUtil redisUtil) { - this.slave = slave; - this.redisUtil = redisUtil; - } - - @Override - public void run() { - News.info("{}鍙峰洓鍚戣溅绾跨▼鍚姩", slave.getId()); - this.connect(); - - //鐩戝惉娑堟伅骞跺瓨鍌� - Thread innerThread = new Thread(() -> { - while (true) { - try { - listenSocketMessage(); - listenInit();//鐩戝惉鍒濆鍖栦簨浠� - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - innerThread.start(); - - //璁惧璇诲彇 - Thread readThread = new Thread(() -> { - while (true) { - try { - read(); - Thread.sleep(50); - } catch (Exception e) { - log.error("ShuttleThread Fail", e); - } - } - }); - readThread.start(); - - //璁惧鎵ц - Thread executeThread = new Thread(() -> { - while (true) { - try { - ShuttleAction shuttleAction = SpringUtils.getBean(ShuttleAction.class); - if (shuttleAction == null) { - continue; - } - - Object object = redisUtil.get(RedisKeyType.SHUTTLE_FLAG.key + slave.getId()); - if (object == null) { - continue; - } - - Integer taskNo = Integer.valueOf(String.valueOf(object)); - if (taskNo != 0) { - //瀛樺湪浠诲姟闇�瑕佹墽琛� - boolean result = shuttleAction.executeWork(slave.getId(), taskNo); - } - -// //灏忚溅绌洪棽涓旀湁璺戝簱绋嬪簭 -// shuttleAction.moveLoc(slave.getId()); - - //婕旂ず妯″紡 - shuttleAction.demo(slave.getId()); - - Thread.sleep(200); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - executeThread.start(); - - //鍏朵粬浠诲姟 - Thread otherThread = new Thread(() -> { - while (true) { - try { - saveLog();//淇濆瓨鏁版嵁 - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - otherThread.start(); - } - - private void saveLog() { - if (shuttleProtocol == null) { - return; - } - - if (System.currentTimeMillis() - shuttleProtocol.getDeviceDataLog() > 1000 * 5) { - if (this.originDeviceData != null) { - //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� - //淇濆瓨鏁版嵁璁板綍 - DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class); - if (deviceDataLogService == null) { - return; - } - DeviceDataLog deviceDataLog = new DeviceDataLog(); - deviceDataLog.setOriginData(JSON.toJSONString(this.originDeviceData)); - deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol)); - deviceDataLog.setType(String.valueOf(SlaveType.Shuttle)); - deviceDataLog.setDeviceNo(slave.getId()); - deviceDataLog.setCreateTime(new Date()); - deviceDataLogService.insert(deviceDataLog); - - //鏇存柊閲囬泦鏃堕棿 - shuttleProtocol.setDeviceDataLog(System.currentTimeMillis()); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - } - } - } - - private void listenSocketMessage() { - try { - if (this.socket == null) { - return; - } - - // 鑾峰彇杈撳叆娴� - BufferedReader reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream())); - // 璇诲彇鏈嶅姟鍣ㄧ殑鍝嶅簲 - StringBuffer sb = new StringBuffer(); - char[] chars = new char[2048];//缂撳啿鍖� - while (true) { - reader.read(chars); - String trim = new String(chars); - sb.append(trim); - if (trim.lastIndexOf("\r\n") != -1) { - break; - } - } - - JSONObject result = JSON.parseObject(sb.toString());//寰楀埌鍝嶅簲缁撴灉闆� - - String msgType = result.getString("msgType"); - if ("responseMsg".equals(msgType)) { - JSONObject response = result.getJSONObject("response"); - JSONObject body = response.getJSONObject("body"); - if (body.containsKey("workingMode")) { - //read - socketReadResults.add(body); - return; - } - } - - if (!socketResults.isEmpty() && socketResults.size() >= 20) { - socketResults.remove(0);//娓呯悊澶磋妭鐐� - } - socketResults.add(result);//娣诲姞鏁版嵁 - } catch (Exception e) { -// e.printStackTrace(); - } - } - - public JSONObject getRequestBody(String type, String taskId) { - try { - // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� - JSONObject result = null; - if (type.equals("readState")) { - type = "state"; - } - - for (int i = 0; i < socketResults.size(); i++) { - JSONObject socketResult = socketResults.get(i); - if (!socketResult.get("msgType").equals("responseMsg")) {//涓嶆槸鍝嶅簲鍐呭 - continue; - } - - JSONObject resultResponse = JSON.parseObject(socketResult.get("response").toString()); - JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString()); - String responseType = resultBody.get("responseType").toString(); - if (DEBUG) { - result = socketResult; - break; - } - - if (!responseType.equals(type)) { - continue;//鍝嶅簲绫诲瀷涓庤姹傜被鍨嬩笉涓�鑷达紝涓嶅湪璋冭瘯妯″紡涓� - } - - if (taskId != null) { - String responseTaskId = resultBody.get("taskId").toString(); - if (!responseTaskId.equals(taskId)) { - continue;//鍝嶅簲ID涓庤姹侷D涓嶄竴鑷达紝涓嶅湪璋冭瘯妯″紡涓� - } - } - - result = socketResult; - break; - } - - if (result == null) { - return null;//鏃犲搷搴旂粨鏋� - } - - return filterBodyData(result);//杩斿洖Body缁撴灉闆� - } catch (Exception e) { - return null; - } - } - - private void read() { - try { - if (this.socket == null || this.socket.isClosed()) { - //閾炬帴鏂紑閲嶆柊閾炬帴 - this.connect(); - } - readStatus(); - } catch (Exception e) { - e.printStackTrace(); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戣鍙栧洓鍚戠┛姊溅鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - } - } - - private void readStatus() { - try { - if (null == shuttleProtocol) { - shuttleProtocol = new ShuttleProtocol(); - shuttleProtocol.setShuttleNo(slave.getId()); - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); - - InnerSuhttleExtend extend = new InnerSuhttleExtend(); - shuttleProtocol.setExtend(extend); - } - - //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�----------- - NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(slave.getId()); - requestCommandAsync(readStatusCommand);//璇锋眰鐘舵�� - - if (this.socketReadResults.isEmpty()) { - if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) { - //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾� - this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); - } - return; - } - - JSONObject data = this.socketReadResults.get(0); - this.socketReadResults.remove(0); - if (data == null) { - if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) { - //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾� - this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); - } - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - }else { - - //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�----------- - //灏忚溅璁惧鐘舵�� - shuttleProtocol.setDeviceStatus(data.getInteger("free")); - //灏忚溅妯″紡 - shuttleProtocol.setMode(data.getInteger("workingMode")); - //褰撳墠浜岀淮鐮� - shuttleProtocol.setCurrentCode(data.getString("point")); - //鐢垫睜鐢甸噺 - shuttleProtocol.setBatteryPower(data.getString("powerPercent")); - //鐢垫睜鐢靛帇 - shuttleProtocol.setBatteryVoltage(data.getInteger("voltage")); - //鏁呴殰 - shuttleProtocol.setErrorCode(data.getJSONArray("errCode").getString(0)); - - //鏄惁椤跺崌 - shuttleProtocol.setHasLift(data.getInteger("liftPosition") == 2 ? true : false); - //鏄惁鏈夋墭鐩� - shuttleProtocol.setHasPallet(data.getInteger("loadState") == 1 ? true : false); - //琛岄┒鏂瑰悜 - shuttleProtocol.setRunDirection(data.getString("runDir") == null ? "none" : data.getString("runDir")); - //鏄惁涓哄厖鐢电姸鎬� - shuttleProtocol.setHasCharge(data.getInteger("chargState") == 1 ? true : false); - //杩愯閫熷害 - shuttleProtocol.setSpeed(data.getInteger("speed")); - - //*********璇诲彇鎵╁睍瀛楁********** - InnerSuhttleExtend extend = (InnerSuhttleExtend) shuttleProtocol.getExtend(); - //绠″埗鐘舵�� - extend.setSuspendState(data.getInteger("suspendState")); - //鏈�楂樼數鑺數鍘�(mV) - extend.setMaxCellVoltage(data.getInteger("maxCellVoltage")); - //鏈�浣庣數鑺數鍘�(mV) - extend.setMinCellVoltage(data.getInteger("minCellVoltage")); - //鐢垫睜鐢靛帇 - extend.setVoltage(data.getInteger("voltage")); - //鍏呮斁鐢靛惊鐜鏁� - extend.setChargeCycleTimes(data.getInteger("chargeCycleTimes")); - //鍓╀綑鐢甸噺 - extend.setSurplusQuantity(data.getInteger("surplusQuantity")); - //鎬荤數閲� - extend.setCountQuantity(data.getInteger("countQuantity")); - shuttleProtocol.setExtend(extend);//鎵╁睍瀛楁 - - //鏈�杩戜竴娆″湪绾挎椂闂� - shuttleProtocol.setLastOnlineTime(System.currentTimeMillis()); - ///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end - - //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue - if (shuttleProtocol.getDeviceStatus() == 0) { - shuttleProtocol.setPakMk(true); - } - - if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 1) { - //灏忚溅绌洪棽鐘舵�併�佸皬杞︿换鍔$姸鎬佷负鏈煡锛岃瀹氭浘绂荤嚎杩囷紝闇�瑕佸浣嶆垚绌洪棽 - this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); - } - - if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE) && shuttleProtocol.getDeviceStatus().intValue() == 1) { - this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); - } - - this.originDeviceData = data; - - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - } - } catch (Exception e) { - e.printStackTrace(); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - try { - this.socket.close(); - this.socket = null; - Thread.sleep(1000); - this.connect(); - } catch (IOException | InterruptedException exception) { - e.printStackTrace(); - } - } - } - - /** - * 鐩戝惉灏忚溅澶嶄綅鍒濆鍖栦俊鍙� - */ - public void listenInit() { - try { - // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� - JSONObject result = null; - int removeIdx = -1; - for (int i = 0; i < socketResults.size(); i++) { - JSONObject socketResult = socketResults.get(i); - if (socketResult == null) { - continue; - } - if (!socketResult.get("msgType").equals("requestMsg")) {//涓嶆槸璇锋眰鍐呭 - continue; - } - - JSONObject resultResponse = JSON.parseObject(socketResult.get("request").toString()); - JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString()); - JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString()); - String requestType = resultBody.getString("requestType"); - Integer requestId = resultHeader.getInteger("requestId"); - if (requestType.equals("init")) { - removeIdx = i;//姝ゆ暟鎹凡缁忓鐞嗭紝浠庣粨鏋滈泦涓墧闄� - socketResults.remove(removeIdx); - - Integer code = resultBody.getInteger("code"); - //灏忚溅澶嶄綅璇锋眰 - ShuttleCommand initCommand = getInitCommand(requestId, code); - //鍙戝嚭璇锋眰 - NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class); - JSONObject requestResult = requestCommand(httpCommand); - - log.info(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", slave.getId(), code, slave.getIp(), slave.getPort())); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", slave.getId(), code, slave.getIp(), slave.getPort())); - break; - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override - public ShuttleProtocol getStatus() { - return getStatus(true); - } - - @Override - public ShuttleProtocol getStatus(boolean clone) { - if (this.shuttleProtocol == null) { - return null; - } - return clone ? this.shuttleProtocol.clone() : this.shuttleProtocol; - } - - @Override - public CommandResponse movePath(List<NavigateNode> nodes, Integer taskNo) { - CommandResponse response = new CommandResponse(true); - return response; - } - - @Override - public CommandResponse move(ShuttleCommand command) { - CommandResponse response = new CommandResponse(false); - try { - //鍙戝嚭璇锋眰 - NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - Map<String, Object> body = httpCommand.getRequest().getBody(); - Object pathObj = body.get("path"); - int taskId = Integer.parseInt(body.get("taskId").toString()); - List<JSONObject> path = JSON.parseArray(JSON.toJSONString(pathObj), JSONObject.class); - ArrayList<NyShuttleHttpCommand> commandList = new ArrayList<>(); - while (!path.isEmpty()) { - ArrayList<Map<String, Object>> list = new ArrayList<>(); - if (path.size() > 10) { - List<JSONObject> subList = path.subList(0, 10); - list.addAll(subList); - - List<JSONObject> tmp = new ArrayList<>(); - for (int i = 10; i < path.size(); i++) { - tmp.add(path.get(i)); - } - path = tmp; - }else { - list.addAll(path); - path.clear(); - } - - NyShuttleHttpCommand httpCommandCopy = JSON.parseObject(JSON.toJSONString(httpCommand), NyShuttleHttpCommand.class); - JSONObject bodyCopy = JSON.parseObject(JSON.toJSONString(body)); - - NyShuttleHttpCommand.NyRequest request = httpCommandCopy.getRequest(); - bodyCopy.put("path", list); - bodyCopy.put("taskId", taskId++); - request.setBody(bodyCopy); - httpCommandCopy.setRequest(request); - - commandList.add(httpCommandCopy);//add copy - } - - for (NyShuttleHttpCommand requestCommand : commandList) { - while (true) { - JSONObject result = requestCommand(requestCommand); - if (result == null) { -// return response;//璇锋眰澶辫触 - continue;//璇锋眰澶辫触灏濊瘯閲嶆柊璇锋眰 - } - this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 - response.setMessage(JSON.toJSONString(result)); - response.setResult(true); - break; - } - } - return response; - } catch (Exception e) { - e.printStackTrace(); - response.setMessage(e.getMessage()); - return response; - } - } - - @Override - public CommandResponse lift(ShuttleCommand command) { - CommandResponse response = new CommandResponse(false); - try { - //鍙戝嚭璇锋眰 - NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - JSONObject result = requestCommand(httpCommand); - if (result == null) { - return response;//璇锋眰澶辫触 - } - this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 - response.setMessage(JSON.toJSONString(result)); - response.setResult(true); - return response; - } catch (Exception e) { - e.printStackTrace(); - return response; - } - } - - @Override - public CommandResponse charge(ShuttleCommand command) { - CommandResponse response = new CommandResponse(false); - try { - //鍙戝嚭璇锋眰 - NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - JSONObject result = requestCommand(httpCommand); - if (result == null) { - return response;//璇锋眰澶辫触 - } - this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 - response.setMessage(JSON.toJSONString(result)); - response.setResult(true); - return response; - } catch (Exception e) { - e.printStackTrace(); - return response; - } - } - - @Override - public CommandResponse reset(ShuttleCommand command) { - setSyncTaskNo(0); - setProtocolStatus(ShuttleProtocolStatusType.IDLE); - enableMoveLoc(null, false); - return new CommandResponse(true, JSON.toJSONString(command)); - } - - @Override - public CommandResponse updateLocation(ShuttleCommand command) { - CommandResponse response = new CommandResponse(false); - try { - //鍙戝嚭璇锋眰 - NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - JSONObject result = requestCommand(httpCommand); - if (result == null) { - return response;//璇锋眰澶辫触 - } - this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 - response.setMessage(JSON.toJSONString(result)); - response.setResult(true); - return response; - } catch (Exception e) { - e.printStackTrace(); - return response; - } - } - - @Override - public boolean isIdle() { - return this.isIdle(null); - } - - @Override - public boolean isIdle(ExecuteSupport support) { - if (null != support) { - Boolean judgement = support.judgement(); - if (judgement != null && !judgement) { - return true; - } - } - - if (this.shuttleProtocol.getDeviceStatus() == null - || this.shuttleProtocol.getPakMk() == null - || this.shuttleProtocol.getErrorCode() == null - || this.shuttleProtocol.getProtocolStatus() == null - || this.shuttleProtocol.getMode() == null - || this.shuttleProtocol.getExtend() == null - ) { - return false; - } - - InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); - - boolean res = this.shuttleProtocol.getDeviceStatus() == 1 - && this.shuttleProtocol.getMode() == 1 - && this.shuttleProtocol.getPakMk() - && this.shuttleProtocol.getErrorCode().equals("0") - && this.shuttleProtocol.getTaskNo() == 0 - && (this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id - || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id - || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) - && extend.getSuspendState() == 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.shuttleProtocol.getDeviceStatus() == null - || this.shuttleProtocol.getPakMk() == null - || this.shuttleProtocol.getErrorCode() == null - || this.shuttleProtocol.getMode() == null - || this.shuttleProtocol.getExtend() == null - ) { - return false; - } - - InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); - - boolean res = this.shuttleProtocol.getDeviceStatus() == 1 - && this.shuttleProtocol.getMode() == 1 - && this.shuttleProtocol.getPakMk() - && this.shuttleProtocol.getErrorCode().equals("0") - && extend.getSuspendState() == 0 - ; - return res; - } - - @Override - public boolean isRequireCharge() { - if (this.shuttleProtocol.getDeviceStatus() == null - || this.shuttleProtocol.getPakMk() == null - || this.shuttleProtocol.getErrorCode() == null - || this.shuttleProtocol.getProtocolStatus() == null - || this.shuttleProtocol.getMode() == null - || this.shuttleProtocol.getExtend() == null - ) { - return false; - } - - InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); - - boolean res = this.shuttleProtocol.getDeviceStatus() == 1 - && this.shuttleProtocol.getMode() == 1 - && this.shuttleProtocol.getPakMk() - && this.shuttleProtocol.getErrorCode().equals("0") - && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id - && extend.getSuspendState() == 0 - ; - if (!res) { - return res; - } else { - // 鐢甸噺灏忎簬闃堝�奸渶瑕佽繘琛屽厖鐢� - try { - BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); - if (shuttleService == null) { - return false; - } - BasShuttle basShuttle = shuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", slave.getId())); - if (basShuttle == null) { - return false; - } - Integer chargeLine = basShuttle.getChargeLine(); - if (chargeLine == null) { - return false; - } - return Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < chargeLine; - } catch (Exception e) { - return false; - } - } - } - - @Override - public boolean isCharging() { - if (this.shuttleProtocol.getDeviceStatus() == null || this.shuttleProtocol.getHasCharge() == null) { - return false; - } - - if (this.shuttleProtocol.getDeviceStatus() == 0 && this.shuttleProtocol.getHasCharge()) { - //杩愯涓� && 鍏呯數涓� - return true; - } - return false; - } - - @Override - public boolean isChargingCompleted() { - Integer maxPower = 100; - ConfigService configService = SpringUtils.getBean(ConfigService.class); - if (configService != null) { - Config chargeMaxValue = configService.selectOne(new EntityWrapper<Config>() - .eq("code", "chargeMaxValue") - .eq("status", 1)); - if (chargeMaxValue != null) { - maxPower = Integer.parseInt(chargeMaxValue.getValue()); - } - } - - //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** - Config shuttleMaxPowerVerifyConfig = configService.selectOne(new EntityWrapper<Config>() - .eq("code", "shuttleMaxPowerVerify") - .eq("status", 1)); - if (shuttleMaxPowerVerifyConfig != null) { - if (shuttleMaxPowerVerifyConfig.getValue().equals("true")) { - if (this.shuttleProtocol.getBatteryVoltage() < 5630) { - return false;//鐢靛帇涓嶅缁х画鍏呯數 - } - } - } - //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** - - if (this.shuttleProtocol.getHasCharge() == null) { - return false; - } - - if (this.shuttleProtocol.getBatteryPower() == null) { - return false; - } - - if (!this.shuttleProtocol.getHasCharge()) { - return false; - } - - if (Integer.valueOf(this.shuttleProtocol.getBatteryPower()) >= maxPower) { - return true; - } - return false; - } - - @Override - public boolean isFault() { - if (this.shuttleProtocol.getErrorCode() == null - || this.shuttleProtocol.getMode() == null - || this.shuttleProtocol.getExtend() == null - ) { - return false; - } - - if (this.shuttleProtocol.getMode() == 0) { - return true; - } - - if (!this.shuttleProtocol.getErrorCode().equals("0")) { - return true; - } - - InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); - - if (extend.getSuspendState() == 1) { - return true; - } - - return false; - } - - @Override - public List<NavigateNode> getMoveAdvancePath() { - ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class); - NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); - ArrayList<NavigateNode> path = new ArrayList<>(); - if (shuttleProtocol.getTaskNo() != 0) { - //瀛樺湪浠诲姟锛岃幏鍙栨寚浠� - Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo()); - if (object != null) { - ShuttleRedisCommand redisCommand = null; - try { - redisCommand = objectMapper.readValue(String.valueOf(object), ShuttleRedisCommand.class); - } catch (IOException e) { - return path; - } - List<NavigateNode> nodes = redisCommand.getAssignCommand().getNodes();//绌挎杞﹂璁¤矾寰� - if (nodes == null) { - return path; - } - if (!nodes.isEmpty()) { - path.addAll(nodes); - } - NavigateNode navigateNode = path.get(0); - int lev = navigateNode.getZ(); - - //灏嗚矾寰勯攣涓庡皬杞﹁矾寰勮繘琛屽尮閰� - ArrayList<NavigateNode> tmp = new ArrayList<>(); - //妫�娴嬭矾寰勬槸鍚﹁閿佸畾 - int[][] map = navigateMapData.getDataFromRedis(lev, NavigationMapType.DFX.id, null, null); - for (NavigateNode node : path) { - if(map[node.getX()][node.getY()] == -999) { - tmp.add(node); - } - } - - path = tmp; - } - } - return path; - } - - @Override - public int generateDeviceTaskNo(int taskNo, ShuttleTaskNoType type) { - return taskNo; - } - - @Override - public synchronized boolean setProtocolStatus(ShuttleProtocolStatusType status) { - this.shuttleProtocol.setProtocolStatus(status); - return true; - } - - @Override - public synchronized boolean setTaskNo(Integer taskNo) { - this.shuttleProtocol.setTaskNo(taskNo); - return true; - } - - @Override - public synchronized boolean setSyncTaskNo(Integer taskNo) { - this.shuttleProtocol.setSyncTaskNo(taskNo); - return true; - } - - @Override - public synchronized boolean setPakMk(boolean pakMk) { - this.shuttleProtocol.setPakMk(pakMk); - return true; - } - - @Override - public boolean enableMoveLoc(ShuttleMoveLocParam param, boolean enable) { - if (enable) { - shuttleProtocol.setMoveLoc(true);//寮�鍚窇搴� - shuttleProtocol.setMoveType(param.getMoveType()); - shuttleProtocol.setXStart(param.getStartX()); - shuttleProtocol.setXTarget(param.getTargetX()); - shuttleProtocol.setXCurrent(param.getStartX()); - shuttleProtocol.setYStart(param.getStartY()); - shuttleProtocol.setYTarget(param.getTargetY()); - shuttleProtocol.setYCurrent(param.getStartY()); - }else { - shuttleProtocol.setMoveLoc(false); - shuttleProtocol.setMoveType(0); - shuttleProtocol.setXStart(0); - shuttleProtocol.setXTarget(0); - shuttleProtocol.setXCurrent(0); - shuttleProtocol.setYStart(0); - shuttleProtocol.setYTarget(0); - shuttleProtocol.setYCurrent(0); - } - return true; - } - - @Override - public boolean requestWaiting() { - if (this.shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.IDLE)) { - this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); - return true; - } - return false; - } - - @Override - public boolean enableDemo(boolean enable) { - shuttleProtocol.setDemo(enable); - return true; - } - - @Override - public boolean offerSystemMsg(String format, Object... arguments) { - String msg = News.replace(format, arguments); - shuttleProtocol.setSystemMsg(msg); - return true; - } - - @Override - public JSONObject parseStatusToMsg(ShuttleProtocol shuttleProtocol) { - return null; - } - - @Override - public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) { - NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); - NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - ArrayList<HashMap<String, Object>> path = new ArrayList<>(); - - Integer taskId = getTaskId(); - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "move");//绉诲姩鍛戒护 - body.put("taskId", taskId);//TaskID闇�瑕侀殢鏈� -// body.put("start", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(startCodeNum, device.getHostId())));//璧风偣 -// body.put("target", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(distCodeNum, device.getHostId())));//缁堢偣 - body.put("path", path); - request.setBody(body); - - NavigateNode startNode = nodes.get(0); - for (NavigateNode node : nodes) { - HashMap<String, Object> data = new HashMap<>(); - String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ()); - Map<String, Object> nyNode = navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(codeNum)); - int xp = Integer.parseInt(String.valueOf(nyNode.get("y"))); - int yp = Integer.parseInt(String.valueOf(nyNode.get("x"))); - int z = Integer.parseInt(String.valueOf(nyNode.get("z"))); - - List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.NONE.id, null, null); - List<MapNode> mapNodes = mapData.get(node.getX()); - MapNode mapNode = mapNodes.get(node.getY()); - - data.put("xp", xp); - data.put("yp", yp); - data.put("z", z); - data.put("x", mapNode.getXBase()); - data.put("y", mapNode.getYBase()); - path.add(data); - } - - httpStandard.setRequest(request); - - LocMastService locMastService = SpringUtils.getBean(LocMastService.class); - LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() - .eq("qr_code_value", distCodeNum)); - if (locMast == null) { - throw new CoolException("搴撲綅淇℃伅涓嶅瓨鍦�"); - } - - ShuttleCommand command = new ShuttleCommand(); - command.setShuttleNo(slave.getId()); - command.setBody(JSON.toJSONString(httpStandard)); - command.setMode(ShuttleCommandModeType.MOVE.id); - command.setTargetLocNo(locMast.getLocNo()); - command.setTaskNo(taskId); - return command; - } - - @Override - public ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift) { - NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - Integer taskId = getTaskId();//TaskID闇�瑕侀殢鏈� - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", lift ? "liftUp" : "liftDown");//椤跺崌鎴栦笅闄嶅懡浠� - body.put("taskId", taskId); - request.setBody(body); - - httpStandard.setRequest(request); - - ShuttleCommand command = new ShuttleCommand(); - command.setShuttleNo(slave.getId()); - command.setBody(JSON.toJSONString(httpStandard)); - command.setMode(lift ? ShuttleCommandModeType.PALLET_LIFT.id : ShuttleCommandModeType.PALLET_DOWN.id); - command.setTaskNo(taskId); - return command; - } - - @Override - public ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge) { - NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - Integer taskId = getTaskId();//TaskID闇�瑕侀殢鏈� - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", charge ? "charge" : "stopCharge");//鍏呯數鎴栧仠姝㈠厖鐢� - body.put("taskId", taskId); - request.setBody(body); - - httpStandard.setRequest(request); - - ShuttleCommand command = new ShuttleCommand(); - command.setShuttleNo(slave.getId()); - command.setBody(JSON.toJSONString(httpStandard)); - command.setMode(charge ? ShuttleCommandModeType.CHARGE_OPEN.id : ShuttleCommandModeType.CHARGE_CLOSE.id); - command.setTaskNo(taskId); - return command; - } - - @Override - public ShuttleCommand getUpdateLocationCommand(Integer taskNo, String locNo) { - NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "updateFloor");//鏇存柊灞俍 - body.put("z", Utils.getLev(locNo));//鍧愭爣Z - request.setBody(body); - - httpStandard.setRequest(request); - - ShuttleCommand command = new ShuttleCommand(); - command.setShuttleNo(slave.getId()); - command.setBody(JSON.toJSONString(httpStandard)); - command.setMode(ShuttleCommandModeType.UPDATE_LOCATION.id); - command.setTaskNo(taskNo); - return command; - } - - //鑾峰彇灏忚溅澶嶄綅鍝嶅簲鍛戒护 - public ShuttleCommand getInitCommand(Integer taskNo, Integer code) { - LocMastService locMastService = SpringUtils.getBean(LocMastService.class); - NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); - NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - //code -> {Integer@13781} 1101101 - int lev = code % 100; - int bay = code / 100 % 1000; - int row = code / 100000; - - HashMap<String, Object> map = new HashMap<>(); - map.put("x", row); - map.put("y", bay); - map.put("z", lev); - - String mapStr = JSON.toJSONString(map); - LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() - .eq("qr_code_value", mapStr)); - if (locMast == null) { - throw new CoolException("鍦板潃鐮佷笉瀛樺湪"); - } - - List<List<MapNode>> mapData = navigateMapData.getJsonData(lev, NavigationMapType.NONE.id, null, null); - List<MapNode> mapNodes = mapData.get(locMast.getRow1()); - MapNode mapNode = mapNodes.get(locMast.getBay1()); - - HashMap<String, Object> location = new HashMap<>(); - location.put("xp", row); - location.put("yp", bay); - location.put("z", lev); - location.put("x", mapNode.getXBase()); - location.put("y", mapNode.getYBase()); - - HashMap<String, Object> body = new HashMap<>(); - body.put("responseType", "init");//澶嶄綅 - body.put("location", location);//鍒濆鍖栧潗鏍� - body.put("devicePoints", new ArrayList<>());//鎻愬崌鏈虹偣浣� - body.put("specialPoints", new ArrayList<>());//鐗规畩鏉$爜鍧愭爣 - request.setBody(body); - - httpStandard.setRequest(request); - - ShuttleCommand command = new ShuttleCommand(); - command.setShuttleNo(slave.getId()); - command.setBody(JSON.toJSONString(httpStandard)); - command.setMode(ShuttleCommandModeType.RESET.id); - command.setTaskNo(taskNo); - return command; - } - - @Override - public boolean connect() { - try { - InetAddress address = InetAddress.getByName(slave.getIp()); - if (address.isReachable(10000)) { - Socket socket = new Socket(slave.getIp(), slave.getPort()); - socket.setSoTimeout(10000); - socket.setKeepAlive(true); - this.socket = socket; - log.info(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - } - } catch (Exception e) { - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - return false; - } - - return true; - } - - @Override - public void close() { - - } - - //鑾峰彇HTTP璇锋眰鏍囧噯缁撴瀯浣� - private NyShuttleHttpCommand getHttpStandard(Integer shuttleNo, Integer taskNo) { - NyShuttleHttpCommand httpStandard = new NyShuttleHttpCommand(); - httpStandard.setMsgType("requestMsg");//璇锋眰娑堟伅 - httpStandard.setRobotId(shuttleNo);//杞﹁締缂栧彿 - httpStandard.setTaskNo(taskNo);//宸ヤ綔鍙� - - //璁剧疆璇锋眰娑堟伅 - NyShuttleHttpCommand.NyRequest request = new NyShuttleHttpCommand.NyRequest(); - NyShuttleHttpCommand.NyRequest.NyHeader header = new NyShuttleHttpCommand.NyRequest.NyHeader(); - header.setVersion("1.0");//鐗堟湰鍙� - header.setRequestId(getRequestId());//娑堟伅缂栧彿 - - //璁剧疆璇锋眰澶� - request.setHeader(header); - httpStandard.setRequest(request); - return httpStandard; - } - - //鑾峰彇璇锋眰缂栧彿 - private Integer getRequestId() { - Random random = new Random(); - return random.nextInt(9999999); - } - - //鑾峰彇TaskId - private static Integer getTaskId() { - Random random = new Random(); - return random.nextInt(999999); - } - - //鑾峰彇璇籉AS鐘舵�佷俊鎭懡浠� - private NyShuttleHttpCommand getReadStatusCommand(Integer shuttleNo) { - NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); - NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); - - HashMap<String, Object> body = new HashMap<>(); - body.put("requestType", "readState");//璇籉AS鐘舵�佷俊鎭� - request.setBody(body); - - httpStandard.setRequest(request); - return httpStandard; - } - - //鍙戝嚭璇锋眰 - private JSONObject requestCommand(NyShuttleHttpCommand httpCommand) throws IOException { - try { - if (this.socket == null) { - return null; - } - - //鍘嬬缉鏁版嵁鍖� - JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand)); - data.remove("nodes"); - - // 鑾峰彇杈撳嚭娴� - OutputStreamWriter writer = new OutputStreamWriter(this.socket.getOutputStream()); - writer.write(JSON.toJSONString(data) + "\r\n"); - writer.flush(); -// System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand)); - - String requestType = null; - String taskId = null; - try { - requestType = httpCommand.getRequest().getBody().get("requestType").toString(); - taskId = httpCommand.getRequest().getBody().get("taskId").toString(); - } catch (Exception e) { +//package com.zy.core.thread.impl; +// +//import com.alibaba.fastjson.JSON; +//import com.alibaba.fastjson.JSONObject; +//import com.baomidou.mybatisplus.mapper.EntityWrapper; +//import com.core.common.DateUtils; +//import com.core.common.SpringUtils; +//import com.core.exception.CoolException; +//import com.fasterxml.jackson.databind.ObjectMapper; +//import com.zy.asrs.entity.BasShuttle; +//import com.zy.asrs.entity.DeviceDataLog; +//import com.zy.asrs.entity.LocMast; +//import com.zy.asrs.service.BasShuttleService; +//import com.zy.asrs.service.DeviceDataLogService; +//import com.zy.asrs.service.LocMastService; +//import com.zy.asrs.utils.Utils; +//import com.zy.common.ExecuteSupport; +//import com.zy.common.model.MapNode; +//import com.zy.common.model.NavigateNode; +//import com.zy.common.model.enums.NavigationMapType; +//import com.zy.common.utils.NavigateMapData; +//import com.zy.common.utils.NavigatePositionConvert; +//import com.zy.common.utils.RedisUtil; +//import com.zy.core.News; +//import com.zy.core.action.ShuttleAction; +//import com.zy.core.cache.OutputQueue; +//import com.zy.core.enums.*; +//import com.zy.core.model.CommandResponse; +//import com.zy.core.model.ShuttleSlave; +//import com.zy.core.model.command.NyShuttleHttpCommand; +//import com.zy.core.model.command.ShuttleCommand; +//import com.zy.core.model.command.ShuttleRedisCommand; +//import com.zy.core.model.param.ShuttleMoveLocParam; +//import com.zy.core.model.protocol.ShuttleProtocol; +//import com.zy.core.thread.ShuttleThread; +//import com.zy.system.entity.Config; +//import com.zy.system.service.ConfigService; +//import lombok.Data; +//import lombok.extern.slf4j.Slf4j; +// +//import java.io.BufferedReader; +//import java.io.IOException; +//import java.io.InputStreamReader; +//import java.io.OutputStreamWriter; +//import java.net.InetAddress; +//import java.net.Socket; +//import java.text.MessageFormat; +//import java.util.*; +// +//@Slf4j +//@SuppressWarnings("all") +//public class NyShuttleThread2 implements ShuttleThread { +// +// private ShuttleSlave slave; +// private RedisUtil redisUtil; +// private ShuttleProtocol shuttleProtocol; +// private Socket socket; +// +// private static final boolean DEBUG = false;//璋冭瘯妯″紡 +// +// private List<JSONObject> socketReadResults = new ArrayList<>(); +// private List<JSONObject> socketResults = new ArrayList<>(); +// +// //鍘熷璁惧鏁版嵁 +// private Object originDeviceData; +// +// public NyShuttleThread2(ShuttleSlave slave, RedisUtil redisUtil) { +// this.slave = slave; +// this.redisUtil = redisUtil; +// } +// +// @Override +// public void run() { +// News.info("{}鍙峰洓鍚戣溅绾跨▼鍚姩", slave.getId()); +// this.connect(); +// +// //鐩戝惉娑堟伅骞跺瓨鍌� +// Thread innerThread = new Thread(() -> { +// while (true) { +// try { +// listenSocketMessage(); +// listenInit();//鐩戝惉鍒濆鍖栦簨浠� +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// }); +// innerThread.start(); +// +// //璁惧璇诲彇 +// Thread readThread = new Thread(() -> { +// while (true) { +// try { +// read(); +// Thread.sleep(50); +// } catch (Exception e) { +// log.error("ShuttleThread Fail", e); +// } +// } +// }); +// readThread.start(); +// +// //璁惧鎵ц +// Thread executeThread = new Thread(() -> { +// while (true) { +// try { +// ShuttleAction shuttleAction = SpringUtils.getBean(ShuttleAction.class); +// if (shuttleAction == null) { +// continue; +// } +// +// Object object = redisUtil.get(RedisKeyType.SHUTTLE_FLAG.key + slave.getId()); +// if (object == null) { +// continue; +// } +// +// Integer taskNo = Integer.valueOf(String.valueOf(object)); +// if (taskNo != 0) { +// //瀛樺湪浠诲姟闇�瑕佹墽琛� +// boolean result = shuttleAction.executeWork(slave.getId(), taskNo); +// } +// +//// //灏忚溅绌洪棽涓旀湁璺戝簱绋嬪簭 +//// shuttleAction.moveLoc(slave.getId()); +// +// //婕旂ず妯″紡 +// shuttleAction.demo(slave.getId()); +// +// Thread.sleep(200); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// }); +// executeThread.start(); +// +// //鍏朵粬浠诲姟 +// Thread otherThread = new Thread(() -> { +// while (true) { +// try { +// saveLog();//淇濆瓨鏁版嵁 +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// }); +// otherThread.start(); +// } +// +// private void saveLog() { +// if (shuttleProtocol == null) { +// return; +// } +// +// if (System.currentTimeMillis() - shuttleProtocol.getDeviceDataLog() > 1000 * 5) { +// if (this.originDeviceData != null) { +// //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� +// //淇濆瓨鏁版嵁璁板綍 +// DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class); +// if (deviceDataLogService == null) { +// return; +// } +// DeviceDataLog deviceDataLog = new DeviceDataLog(); +// deviceDataLog.setOriginData(JSON.toJSONString(this.originDeviceData)); +// deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol)); +// deviceDataLog.setType(String.valueOf(SlaveType.Shuttle)); +// deviceDataLog.setDeviceNo(slave.getId()); +// deviceDataLog.setCreateTime(new Date()); +// deviceDataLogService.insert(deviceDataLog); +// +// //鏇存柊閲囬泦鏃堕棿 +// shuttleProtocol.setDeviceDataLog(System.currentTimeMillis()); +// OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); +// } +// } +// } +// +// private void listenSocketMessage() { +// try { +// if (this.socket == null) { +// return; +// } +// +// // 鑾峰彇杈撳叆娴� +// BufferedReader reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream())); +// // 璇诲彇鏈嶅姟鍣ㄧ殑鍝嶅簲 +// StringBuffer sb = new StringBuffer(); +// char[] chars = new char[2048];//缂撳啿鍖� +// while (true) { +// reader.read(chars); +// String trim = new String(chars); +// sb.append(trim); +// if (trim.lastIndexOf("\r\n") != -1) { +// break; +// } +// } +// +// JSONObject result = JSON.parseObject(sb.toString());//寰楀埌鍝嶅簲缁撴灉闆� +// +// String msgType = result.getString("msgType"); +// if ("responseMsg".equals(msgType)) { +// JSONObject response = result.getJSONObject("response"); +// JSONObject body = response.getJSONObject("body"); +// if (body.containsKey("workingMode")) { +// //read +// socketReadResults.add(body); +// return; +// } +// } +// +// if (!socketResults.isEmpty() && socketResults.size() >= 20) { +// socketResults.remove(0);//娓呯悊澶磋妭鐐� +// } +// socketResults.add(result);//娣诲姞鏁版嵁 +// } catch (Exception e) { +//// e.printStackTrace(); +// } +// } +// +// public JSONObject getRequestBody(String type, String taskId) { +// try { +// // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� +// JSONObject result = null; +// if (type.equals("readState")) { +// type = "state"; +// } +// +// for (int i = 0; i < socketResults.size(); i++) { +// JSONObject socketResult = socketResults.get(i); +// if (!socketResult.get("msgType").equals("responseMsg")) {//涓嶆槸鍝嶅簲鍐呭 +// continue; +// } +// +// JSONObject resultResponse = JSON.parseObject(socketResult.get("response").toString()); +// JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString()); +// String responseType = resultBody.get("responseType").toString(); +// if (DEBUG) { +// result = socketResult; +// break; +// } +// +// if (!responseType.equals(type)) { +// continue;//鍝嶅簲绫诲瀷涓庤姹傜被鍨嬩笉涓�鑷达紝涓嶅湪璋冭瘯妯″紡涓� +// } +// +// if (taskId != null) { +// String responseTaskId = resultBody.get("taskId").toString(); +// if (!responseTaskId.equals(taskId)) { +// continue;//鍝嶅簲ID涓庤姹侷D涓嶄竴鑷达紝涓嶅湪璋冭瘯妯″紡涓� +// } +// } +// +// result = socketResult; +// break; +// } +// +// if (result == null) { +// return null;//鏃犲搷搴旂粨鏋� +// } +// +// return filterBodyData(result);//杩斿洖Body缁撴灉闆� +// } catch (Exception e) { // return null; - //taskId鍙兘鍙栫┖锛屼笉鎶ラ敊锛屾甯告儏鍐� - } - - // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� - // 灏濊瘯10娆� - JSONObject result = null; - for (int i = 0; i < 10; i++) { - result = getRequestBody(requestType, taskId); - if (result == null) { - try { - Thread.sleep(100); - } catch (Exception e) { - e.printStackTrace(); - } - }else { - break; - } - } - return result;//杩斿洖Body缁撴灉闆� - }catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - private void requestCommandAsync(NyShuttleHttpCommand httpCommand) throws IOException { - if (this.socket == null) { - return; - } - - try { - //鍘嬬缉鏁版嵁鍖� - JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand)); - data.remove("nodes"); - - // 鑾峰彇杈撳嚭娴� - OutputStreamWriter writer = new OutputStreamWriter(this.socket.getOutputStream()); - writer.write(JSON.toJSONString(data) + "\r\n"); - writer.flush(); -// System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand)); - }catch (Exception e) { -// e.printStackTrace(); -// System.out.println("socket write error"); - this.socket.close(); - this.socket = null; - } - } - - private JSONObject filterBodyData(JSONObject data) { - Object response = data.get("response"); - if (response == null) { - return null; - } - - JSONObject result = JSON.parseObject(response.toString()); - Object body = result.get("body"); - if (body == null) { - return null; - } - JSONObject jsonBody = JSON.parseObject(body.toString()); - return jsonBody; - } - - //鍦板浘鑺傜偣杞崲鐗涚溂鑺傜偣 - private static Map<String, Object> navigateNodeToNyPointNode(NavigateNode node) { - int[] NyPosition = WCSXyzToNyXyz(node.getX(), node.getY(), node.getZ());//WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍� - HashMap<String, Object> point = new HashMap<>(); - point.put("x", NyPosition[0]); - point.put("y", NyPosition[1]); - point.put("z", NyPosition[2]); - return point; - } - - //WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍� - private static int[] WCSXyzToNyXyz(int x, int y, int z) { -// //WCS绯荤粺Y杞� => 鐗涚溂X杞磋浆鎹㈠叕寮� -// int x1 = Math.abs(y - 61) + 11; -// //WCS绯荤粺X杞� => 鐗涚溂Y杞磋浆鎹㈠叕寮� -// int y1 = x + 10; - -// int x1 = x + 10; -// int y1 = y + 10; - LocMastService locMastService = SpringUtils.getBean(LocMastService.class); - LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() - .eq("row1", x) - .eq("bay1", y) - .eq("lev1", z) - .eq("status", 1)); - if (locMast == null) { - return null; - } - - String qrCodeValue = locMast.getQrCodeValue(); - JSONObject data = JSON.parseObject(qrCodeValue); - return new int[]{data.getInteger("y"), data.getInteger("x"), z}; - } - - @Data - private class InnerSuhttleExtend { - - /** - * 绠″埗鐘舵�佷笉鍦ㄧ鍒朵笅/琚鍒朵腑 - * 0/1 - */ - private Integer suspendState; - - /** - * 鏈�楂樼數鑺數鍘�(mV) - */ - private Integer maxCellVoltage; - - /** - * 鏈�浣庣數鑺數鍘�(mV)锛屼綆浜�2900mv闇�瑕佺珛鍗冲厖鐢� - */ - private Integer minCellVoltage; - - /** - * 鐢垫睜鐢靛帇锛坢V锛� - */ - private Integer voltage; - - /** - * 鍏呮斁鐢靛惊鐜鏁� - */ - private Integer chargeCycleTimes; - - /** - * 鍓╀綑鐢甸噺/10(A) - */ - private Integer surplusQuantity; - - /** - * 鎬荤數閲�/10(A) - */ - private Integer countQuantity; - - } -} +// } +// } +// +// private void read() { +// try { +// if (this.socket == null || this.socket.isClosed()) { +// //閾炬帴鏂紑閲嶆柊閾炬帴 +// this.connect(); +// } +// readStatus(); +// } catch (Exception e) { +// e.printStackTrace(); +// OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戣鍙栧洓鍚戠┛姊溅鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// } +// } +// +// private void readStatus() { +// try { +// if (null == shuttleProtocol) { +// shuttleProtocol = new ShuttleProtocol(); +// shuttleProtocol.setShuttleNo(slave.getId()); +// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); +// +// InnerSuhttleExtend extend = new InnerSuhttleExtend(); +// shuttleProtocol.setExtend(extend); +// } +// +// //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�----------- +// NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(slave.getId()); +// requestCommandAsync(readStatusCommand);//璇锋眰鐘舵�� +// +// if (this.socketReadResults.isEmpty()) { +// if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) { +// //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾� +// this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); +// } +// return; +// } +// +// JSONObject data = this.socketReadResults.get(0); +// this.socketReadResults.remove(0); +// if (data == null) { +// if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) { +// //鏈�鍚庝竴娆′笂绾挎椂闂磋秴杩�60s锛岃瀹氱绾� +// this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); +// } +// OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// }else { +// +// //----------璇诲彇鍥涘悜绌挎杞︾姸鎬�----------- +// //灏忚溅璁惧鐘舵�� +// shuttleProtocol.setDeviceStatus(data.getInteger("free")); +// //灏忚溅妯″紡 +// shuttleProtocol.setMode(data.getInteger("workingMode")); +// //褰撳墠浜岀淮鐮� +// shuttleProtocol.setCurrentCode(data.getString("point")); +// //鐢垫睜鐢甸噺 +// shuttleProtocol.setBatteryPower(data.getString("powerPercent")); +// //鐢垫睜鐢靛帇 +// shuttleProtocol.setBatteryVoltage(data.getInteger("voltage")); +// //鏁呴殰 +// shuttleProtocol.setErrorCode(data.getJSONArray("errCode").getString(0)); +// +// //鏄惁椤跺崌 +// shuttleProtocol.setHasLift(data.getInteger("liftPosition") == 2 ? true : false); +// //鏄惁鏈夋墭鐩� +// shuttleProtocol.setHasPallet(data.getInteger("loadState") == 1 ? true : false); +// //琛岄┒鏂瑰悜 +// shuttleProtocol.setRunDirection(data.getString("runDir") == null ? "none" : data.getString("runDir")); +// //鏄惁涓哄厖鐢电姸鎬� +// shuttleProtocol.setHasCharge(data.getInteger("chargState") == 1 ? true : false); +// //杩愯閫熷害 +// shuttleProtocol.setSpeed(data.getInteger("speed")); +// +// //*********璇诲彇鎵╁睍瀛楁********** +// InnerSuhttleExtend extend = (InnerSuhttleExtend) shuttleProtocol.getExtend(); +// //绠″埗鐘舵�� +// extend.setSuspendState(data.getInteger("suspendState")); +// //鏈�楂樼數鑺數鍘�(mV) +// extend.setMaxCellVoltage(data.getInteger("maxCellVoltage")); +// //鏈�浣庣數鑺數鍘�(mV) +// extend.setMinCellVoltage(data.getInteger("minCellVoltage")); +// //鐢垫睜鐢靛帇 +// extend.setVoltage(data.getInteger("voltage")); +// //鍏呮斁鐢靛惊鐜鏁� +// extend.setChargeCycleTimes(data.getInteger("chargeCycleTimes")); +// //鍓╀綑鐢甸噺 +// extend.setSurplusQuantity(data.getInteger("surplusQuantity")); +// //鎬荤數閲� +// extend.setCountQuantity(data.getInteger("countQuantity")); +// shuttleProtocol.setExtend(extend);//鎵╁睍瀛楁 +// +// //鏈�杩戜竴娆″湪绾挎椂闂� +// shuttleProtocol.setLastOnlineTime(System.currentTimeMillis()); +// ///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end +// +// //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue +// if (shuttleProtocol.getDeviceStatus() == 0) { +// shuttleProtocol.setPakMk(true); +// } +// +// if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 1) { +// //灏忚溅绌洪棽鐘舵�併�佸皬杞︿换鍔$姸鎬佷负鏈煡锛岃瀹氭浘绂荤嚎杩囷紝闇�瑕佸浣嶆垚绌洪棽 +// this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); +// } +// +// if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE) && shuttleProtocol.getDeviceStatus().intValue() == 1) { +// this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); +// } +// +// this.originDeviceData = data; +// +// OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// try { +// this.socket.close(); +// this.socket = null; +// Thread.sleep(1000); +// this.connect(); +// } catch (IOException | InterruptedException exception) { +// e.printStackTrace(); +// } +// } +// } +// +// /** +// * 鐩戝惉灏忚溅澶嶄綅鍒濆鍖栦俊鍙� +// */ +// public void listenInit() { +// try { +// // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� +// JSONObject result = null; +// int removeIdx = -1; +// for (int i = 0; i < socketResults.size(); i++) { +// JSONObject socketResult = socketResults.get(i); +// if (socketResult == null) { +// continue; +// } +// if (!socketResult.get("msgType").equals("requestMsg")) {//涓嶆槸璇锋眰鍐呭 +// continue; +// } +// +// JSONObject resultResponse = JSON.parseObject(socketResult.get("request").toString()); +// JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString()); +// JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString()); +// String requestType = resultBody.getString("requestType"); +// Integer requestId = resultHeader.getInteger("requestId"); +// if (requestType.equals("init")) { +// removeIdx = i;//姝ゆ暟鎹凡缁忓鐞嗭紝浠庣粨鏋滈泦涓墧闄� +// socketResults.remove(removeIdx); +// +// Integer code = resultBody.getInteger("code"); +// //灏忚溅澶嶄綅璇锋眰 +// ShuttleCommand initCommand = getInitCommand(requestId, code); +// //鍙戝嚭璇锋眰 +// NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class); +// JSONObject requestResult = requestCommand(httpCommand); +// +// log.info(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", slave.getId(), code, slave.getIp(), slave.getPort())); +// OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", slave.getId(), code, slave.getIp(), slave.getPort())); +// break; +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @Override +// public ShuttleProtocol getStatus() { +// return getStatus(true); +// } +// +// @Override +// public ShuttleProtocol getStatus(boolean clone) { +// if (this.shuttleProtocol == null) { +// return null; +// } +// return clone ? this.shuttleProtocol.clone() : this.shuttleProtocol; +// } +// +// @Override +// public CommandResponse movePath(List<NavigateNode> nodes, Integer taskNo) { +// CommandResponse response = new CommandResponse(true); +// return response; +// } +// +// @Override +// public CommandResponse move(ShuttleCommand command) { +// CommandResponse response = new CommandResponse(false); +// try { +// //鍙戝嚭璇锋眰 +// NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); +// Map<String, Object> body = httpCommand.getRequest().getBody(); +// Object pathObj = body.get("path"); +// int taskId = Integer.parseInt(body.get("taskId").toString()); +// List<JSONObject> path = JSON.parseArray(JSON.toJSONString(pathObj), JSONObject.class); +// ArrayList<NyShuttleHttpCommand> commandList = new ArrayList<>(); +// while (!path.isEmpty()) { +// ArrayList<Map<String, Object>> list = new ArrayList<>(); +// if (path.size() > 10) { +// List<JSONObject> subList = path.subList(0, 10); +// list.addAll(subList); +// +// List<JSONObject> tmp = new ArrayList<>(); +// for (int i = 10; i < path.size(); i++) { +// tmp.add(path.get(i)); +// } +// path = tmp; +// }else { +// list.addAll(path); +// path.clear(); +// } +// +// NyShuttleHttpCommand httpCommandCopy = JSON.parseObject(JSON.toJSONString(httpCommand), NyShuttleHttpCommand.class); +// JSONObject bodyCopy = JSON.parseObject(JSON.toJSONString(body)); +// +// NyShuttleHttpCommand.NyRequest request = httpCommandCopy.getRequest(); +// bodyCopy.put("path", list); +// bodyCopy.put("taskId", taskId++); +// request.setBody(bodyCopy); +// httpCommandCopy.setRequest(request); +// +// commandList.add(httpCommandCopy);//add copy +// } +// +// for (NyShuttleHttpCommand requestCommand : commandList) { +// while (true) { +// JSONObject result = requestCommand(requestCommand); +// if (result == null) { +//// return response;//璇锋眰澶辫触 +// continue;//璇锋眰澶辫触灏濊瘯閲嶆柊璇锋眰 +// } +// this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 +// response.setMessage(JSON.toJSONString(result)); +// response.setResult(true); +// break; +// } +// } +// return response; +// } catch (Exception e) { +// e.printStackTrace(); +// response.setMessage(e.getMessage()); +// return response; +// } +// } +// +// @Override +// public CommandResponse lift(ShuttleCommand command) { +// CommandResponse response = new CommandResponse(false); +// try { +// //鍙戝嚭璇锋眰 +// NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); +// JSONObject result = requestCommand(httpCommand); +// if (result == null) { +// return response;//璇锋眰澶辫触 +// } +// this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 +// response.setMessage(JSON.toJSONString(result)); +// response.setResult(true); +// return response; +// } catch (Exception e) { +// e.printStackTrace(); +// return response; +// } +// } +// +// @Override +// public CommandResponse charge(ShuttleCommand command) { +// CommandResponse response = new CommandResponse(false); +// try { +// //鍙戝嚭璇锋眰 +// NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); +// JSONObject result = requestCommand(httpCommand); +// if (result == null) { +// return response;//璇锋眰澶辫触 +// } +// this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 +// response.setMessage(JSON.toJSONString(result)); +// response.setResult(true); +// return response; +// } catch (Exception e) { +// e.printStackTrace(); +// return response; +// } +// } +// +// @Override +// public CommandResponse reset(ShuttleCommand command) { +// setSyncTaskNo(0); +// setProtocolStatus(ShuttleProtocolStatusType.IDLE); +// enableMoveLoc(null, false); +// return new CommandResponse(true, JSON.toJSONString(command)); +// } +// +// @Override +// public CommandResponse updateLocation(ShuttleCommand command) { +// CommandResponse response = new CommandResponse(false); +// try { +// //鍙戝嚭璇锋眰 +// NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); +// JSONObject result = requestCommand(httpCommand); +// if (result == null) { +// return response;//璇锋眰澶辫触 +// } +// this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 +// response.setMessage(JSON.toJSONString(result)); +// response.setResult(true); +// return response; +// } catch (Exception e) { +// e.printStackTrace(); +// return response; +// } +// } +// +// @Override +// public boolean isIdle() { +// return this.isIdle(null); +// } +// +// @Override +// public boolean isIdle(ExecuteSupport support) { +// if (null != support) { +// Boolean judgement = support.judgement(); +// if (judgement != null && !judgement) { +// return true; +// } +// } +// +// if (this.shuttleProtocol.getDeviceStatus() == null +// || this.shuttleProtocol.getPakMk() == null +// || this.shuttleProtocol.getErrorCode() == null +// || this.shuttleProtocol.getProtocolStatus() == null +// || this.shuttleProtocol.getMode() == null +// || this.shuttleProtocol.getExtend() == null +// ) { +// return false; +// } +// +// InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); +// +// boolean res = this.shuttleProtocol.getDeviceStatus() == 1 +// && this.shuttleProtocol.getMode() == 1 +// && this.shuttleProtocol.getPakMk() +// && this.shuttleProtocol.getErrorCode().equals("0") +// && this.shuttleProtocol.getTaskNo() == 0 +// && (this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id +// || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id +// || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) +// && extend.getSuspendState() == 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.shuttleProtocol.getDeviceStatus() == null +// || this.shuttleProtocol.getPakMk() == null +// || this.shuttleProtocol.getErrorCode() == null +// || this.shuttleProtocol.getMode() == null +// || this.shuttleProtocol.getExtend() == null +// ) { +// return false; +// } +// +// InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); +// +// boolean res = this.shuttleProtocol.getDeviceStatus() == 1 +// && this.shuttleProtocol.getMode() == 1 +// && this.shuttleProtocol.getPakMk() +// && this.shuttleProtocol.getErrorCode().equals("0") +// && extend.getSuspendState() == 0 +// ; +// return res; +// } +// +// @Override +// public boolean isRequireCharge() { +// if (this.shuttleProtocol.getDeviceStatus() == null +// || this.shuttleProtocol.getPakMk() == null +// || this.shuttleProtocol.getErrorCode() == null +// || this.shuttleProtocol.getProtocolStatus() == null +// || this.shuttleProtocol.getMode() == null +// || this.shuttleProtocol.getExtend() == null +// ) { +// return false; +// } +// +// InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); +// +// boolean res = this.shuttleProtocol.getDeviceStatus() == 1 +// && this.shuttleProtocol.getMode() == 1 +// && this.shuttleProtocol.getPakMk() +// && this.shuttleProtocol.getErrorCode().equals("0") +// && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id +// && extend.getSuspendState() == 0 +// ; +// if (!res) { +// return res; +// } else { +// // 鐢甸噺灏忎簬闃堝�奸渶瑕佽繘琛屽厖鐢� +// try { +// BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); +// if (shuttleService == null) { +// return false; +// } +// BasShuttle basShuttle = shuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", slave.getId())); +// if (basShuttle == null) { +// return false; +// } +// Integer chargeLine = basShuttle.getChargeLine(); +// if (chargeLine == null) { +// return false; +// } +// return Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < chargeLine; +// } catch (Exception e) { +// return false; +// } +// } +// } +// +// @Override +// public boolean isCharging() { +// if (this.shuttleProtocol.getDeviceStatus() == null || this.shuttleProtocol.getHasCharge() == null) { +// return false; +// } +// +// if (this.shuttleProtocol.getDeviceStatus() == 0 && this.shuttleProtocol.getHasCharge()) { +// //杩愯涓� && 鍏呯數涓� +// return true; +// } +// return false; +// } +// +// @Override +// public boolean isChargingCompleted() { +// Integer maxPower = 100; +// ConfigService configService = SpringUtils.getBean(ConfigService.class); +// if (configService != null) { +// Config chargeMaxValue = configService.selectOne(new EntityWrapper<Config>() +// .eq("code", "chargeMaxValue") +// .eq("status", 1)); +// if (chargeMaxValue != null) { +// maxPower = Integer.parseInt(chargeMaxValue.getValue()); +// } +// } +// +// //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** +// Config shuttleMaxPowerVerifyConfig = configService.selectOne(new EntityWrapper<Config>() +// .eq("code", "shuttleMaxPowerVerify") +// .eq("status", 1)); +// if (shuttleMaxPowerVerifyConfig != null) { +// if (shuttleMaxPowerVerifyConfig.getValue().equals("true")) { +// if (this.shuttleProtocol.getBatteryVoltage() < 5630) { +// return false;//鐢靛帇涓嶅缁х画鍏呯數 +// } +// } +// } +// //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** +// +// if (this.shuttleProtocol.getHasCharge() == null) { +// return false; +// } +// +// if (this.shuttleProtocol.getBatteryPower() == null) { +// return false; +// } +// +// if (!this.shuttleProtocol.getHasCharge()) { +// return false; +// } +// +// if (Integer.valueOf(this.shuttleProtocol.getBatteryPower()) >= maxPower) { +// return true; +// } +// return false; +// } +// +// @Override +// public boolean isFault() { +// if (this.shuttleProtocol.getErrorCode() == null +// || this.shuttleProtocol.getMode() == null +// || this.shuttleProtocol.getExtend() == null +// ) { +// return false; +// } +// +// if (this.shuttleProtocol.getMode() == 0) { +// return true; +// } +// +// if (!this.shuttleProtocol.getErrorCode().equals("0")) { +// return true; +// } +// +// InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); +// +// if (extend.getSuspendState() == 1) { +// return true; +// } +// +// return false; +// } +// +// @Override +// public List<NavigateNode> getMoveAdvancePath() { +// ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class); +// NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); +// ArrayList<NavigateNode> path = new ArrayList<>(); +// if (shuttleProtocol.getTaskNo() != 0) { +// //瀛樺湪浠诲姟锛岃幏鍙栨寚浠� +// Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo()); +// if (object != null) { +// ShuttleRedisCommand redisCommand = null; +// try { +// redisCommand = objectMapper.readValue(String.valueOf(object), ShuttleRedisCommand.class); +// } catch (IOException e) { +// return path; +// } +// List<NavigateNode> nodes = redisCommand.getAssignCommand().getNodes();//绌挎杞﹂璁¤矾寰� +// if (nodes == null) { +// return path; +// } +// if (!nodes.isEmpty()) { +// path.addAll(nodes); +// } +// NavigateNode navigateNode = path.get(0); +// int lev = navigateNode.getZ(); +// +// //灏嗚矾寰勯攣涓庡皬杞﹁矾寰勮繘琛屽尮閰� +// ArrayList<NavigateNode> tmp = new ArrayList<>(); +// //妫�娴嬭矾寰勬槸鍚﹁閿佸畾 +// int[][] map = navigateMapData.getDataFromRedis(lev, NavigationMapType.DFX.id, null, null); +// for (NavigateNode node : path) { +// if(map[node.getX()][node.getY()] == -999) { +// tmp.add(node); +// } +// } +// +// path = tmp; +// } +// } +// return path; +// } +// +// @Override +// public int generateDeviceTaskNo(int taskNo, ShuttleTaskNoType type) { +// return taskNo; +// } +// +// @Override +// public synchronized boolean setProtocolStatus(ShuttleProtocolStatusType status) { +// this.shuttleProtocol.setProtocolStatus(status); +// return true; +// } +// +// @Override +// public synchronized boolean setTaskNo(Integer taskNo) { +// this.shuttleProtocol.setTaskNo(taskNo); +// return true; +// } +// +// @Override +// public synchronized boolean setSyncTaskNo(Integer taskNo) { +// this.shuttleProtocol.setSyncTaskNo(taskNo); +// return true; +// } +// +// @Override +// public synchronized boolean setPakMk(boolean pakMk) { +// this.shuttleProtocol.setPakMk(pakMk); +// return true; +// } +// +// @Override +// public boolean enableMoveLoc(ShuttleMoveLocParam param, boolean enable) { +// if (enable) { +// shuttleProtocol.setMoveLoc(true);//寮�鍚窇搴� +// shuttleProtocol.setMoveType(param.getMoveType()); +// shuttleProtocol.setXStart(param.getStartX()); +// shuttleProtocol.setXTarget(param.getTargetX()); +// shuttleProtocol.setXCurrent(param.getStartX()); +// shuttleProtocol.setYStart(param.getStartY()); +// shuttleProtocol.setYTarget(param.getTargetY()); +// shuttleProtocol.setYCurrent(param.getStartY()); +// }else { +// shuttleProtocol.setMoveLoc(false); +// shuttleProtocol.setMoveType(0); +// shuttleProtocol.setXStart(0); +// shuttleProtocol.setXTarget(0); +// shuttleProtocol.setXCurrent(0); +// shuttleProtocol.setYStart(0); +// shuttleProtocol.setYTarget(0); +// shuttleProtocol.setYCurrent(0); +// } +// return true; +// } +// +// @Override +// public boolean requestWaiting() { +// if (this.shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.IDLE)) { +// this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); +// return true; +// } +// return false; +// } +// +// @Override +// public boolean enableDemo(boolean enable) { +// shuttleProtocol.setDemo(enable); +// return true; +// } +// +// @Override +// public boolean offerSystemMsg(String format, Object... arguments) { +// String msg = News.replace(format, arguments); +// shuttleProtocol.setSystemMsg(msg); +// return true; +// } +// +// @Override +// public JSONObject parseStatusToMsg(ShuttleProtocol shuttleProtocol) { +// return null; +// } +// +// @Override +// public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) { +// NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); +// NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); +// NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); +// +// ArrayList<HashMap<String, Object>> path = new ArrayList<>(); +// +// Integer taskId = getTaskId(); +// HashMap<String, Object> body = new HashMap<>(); +// body.put("requestType", "move");//绉诲姩鍛戒护 +// body.put("taskId", taskId);//TaskID闇�瑕侀殢鏈� +//// body.put("start", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(startCodeNum, device.getHostId())));//璧风偣 +//// body.put("target", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(distCodeNum, device.getHostId())));//缁堢偣 +// body.put("path", path); +// request.setBody(body); +// +// NavigateNode startNode = nodes.get(0); +// for (NavigateNode node : nodes) { +// HashMap<String, Object> data = new HashMap<>(); +// String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ()); +// Map<String, Object> nyNode = navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(codeNum)); +// int xp = Integer.parseInt(String.valueOf(nyNode.get("y"))); +// int yp = Integer.parseInt(String.valueOf(nyNode.get("x"))); +// int z = Integer.parseInt(String.valueOf(nyNode.get("z"))); +// +// List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.NONE.id, null, null); +// List<MapNode> mapNodes = mapData.get(node.getX()); +// MapNode mapNode = mapNodes.get(node.getY()); +// +// data.put("xp", xp); +// data.put("yp", yp); +// data.put("z", z); +// data.put("x", mapNode.getXBase()); +// data.put("y", mapNode.getYBase()); +// path.add(data); +// } +// +// httpStandard.setRequest(request); +// +// LocMastService locMastService = SpringUtils.getBean(LocMastService.class); +// LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() +// .eq("qr_code_value", distCodeNum)); +// if (locMast == null) { +// throw new CoolException("搴撲綅淇℃伅涓嶅瓨鍦�"); +// } +// +// ShuttleCommand command = new ShuttleCommand(); +// command.setShuttleNo(slave.getId()); +// command.setBody(JSON.toJSONString(httpStandard)); +// command.setMode(ShuttleCommandModeType.MOVE.id); +// command.setTargetLocNo(locMast.getLocNo()); +// command.setTaskNo(taskId); +// return command; +// } +// +// @Override +// public ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift) { +// NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); +// NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); +// +// Integer taskId = getTaskId();//TaskID闇�瑕侀殢鏈� +// HashMap<String, Object> body = new HashMap<>(); +// body.put("requestType", lift ? "liftUp" : "liftDown");//椤跺崌鎴栦笅闄嶅懡浠� +// body.put("taskId", taskId); +// request.setBody(body); +// +// httpStandard.setRequest(request); +// +// ShuttleCommand command = new ShuttleCommand(); +// command.setShuttleNo(slave.getId()); +// command.setBody(JSON.toJSONString(httpStandard)); +// command.setMode(lift ? ShuttleCommandModeType.PALLET_LIFT.id : ShuttleCommandModeType.PALLET_DOWN.id); +// command.setTaskNo(taskId); +// return command; +// } +// +// @Override +// public ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge) { +// NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); +// NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); +// +// Integer taskId = getTaskId();//TaskID闇�瑕侀殢鏈� +// HashMap<String, Object> body = new HashMap<>(); +// body.put("requestType", charge ? "charge" : "stopCharge");//鍏呯數鎴栧仠姝㈠厖鐢� +// body.put("taskId", taskId); +// request.setBody(body); +// +// httpStandard.setRequest(request); +// +// ShuttleCommand command = new ShuttleCommand(); +// command.setShuttleNo(slave.getId()); +// command.setBody(JSON.toJSONString(httpStandard)); +// command.setMode(charge ? ShuttleCommandModeType.CHARGE_OPEN.id : ShuttleCommandModeType.CHARGE_CLOSE.id); +// command.setTaskNo(taskId); +// return command; +// } +// +// @Override +// public ShuttleCommand getUpdateLocationCommand(Integer taskNo, String locNo) { +// NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); +// NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); +// +// HashMap<String, Object> body = new HashMap<>(); +// body.put("requestType", "updateFloor");//鏇存柊灞俍 +// body.put("z", Utils.getLev(locNo));//鍧愭爣Z +// request.setBody(body); +// +// httpStandard.setRequest(request); +// +// ShuttleCommand command = new ShuttleCommand(); +// command.setShuttleNo(slave.getId()); +// command.setBody(JSON.toJSONString(httpStandard)); +// command.setMode(ShuttleCommandModeType.UPDATE_LOCATION.id); +// command.setTaskNo(taskNo); +// return command; +// } +// +// //鑾峰彇灏忚溅澶嶄綅鍝嶅簲鍛戒护 +// public ShuttleCommand getInitCommand(Integer taskNo, Integer code) { +// LocMastService locMastService = SpringUtils.getBean(LocMastService.class); +// NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); +// NyShuttleHttpCommand httpStandard = getHttpStandard(slave.getId(), taskNo); +// NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); +// +// //code -> {Integer@13781} 1101101 +// int lev = code % 100; +// int bay = code / 100 % 1000; +// int row = code / 100000; +// +// HashMap<String, Object> map = new HashMap<>(); +// map.put("x", row); +// map.put("y", bay); +// map.put("z", lev); +// +// String mapStr = JSON.toJSONString(map); +// LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() +// .eq("qr_code_value", mapStr)); +// if (locMast == null) { +// throw new CoolException("鍦板潃鐮佷笉瀛樺湪"); +// } +// +// List<List<MapNode>> mapData = navigateMapData.getJsonData(lev, NavigationMapType.NONE.id, null, null); +// List<MapNode> mapNodes = mapData.get(locMast.getRow1()); +// MapNode mapNode = mapNodes.get(locMast.getBay1()); +// +// HashMap<String, Object> location = new HashMap<>(); +// location.put("xp", row); +// location.put("yp", bay); +// location.put("z", lev); +// location.put("x", mapNode.getXBase()); +// location.put("y", mapNode.getYBase()); +// +// HashMap<String, Object> body = new HashMap<>(); +// body.put("responseType", "init");//澶嶄綅 +// body.put("location", location);//鍒濆鍖栧潗鏍� +// body.put("devicePoints", new ArrayList<>());//鎻愬崌鏈虹偣浣� +// body.put("specialPoints", new ArrayList<>());//鐗规畩鏉$爜鍧愭爣 +// request.setBody(body); +// +// httpStandard.setRequest(request); +// +// ShuttleCommand command = new ShuttleCommand(); +// command.setShuttleNo(slave.getId()); +// command.setBody(JSON.toJSONString(httpStandard)); +// command.setMode(ShuttleCommandModeType.RESET.id); +// command.setTaskNo(taskNo); +// return command; +// } +// +// @Override +// public boolean connect() { +// try { +// InetAddress address = InetAddress.getByName(slave.getIp()); +// if (address.isReachable(10000)) { +// Socket socket = new Socket(slave.getIp(), slave.getPort()); +// socket.setSoTimeout(10000); +// socket.setKeepAlive(true); +// this.socket = socket; +// log.info(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// } +// } catch (Exception e) { +// OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// return false; +// } +// +// return true; +// } +// +// @Override +// public void close() { +// +// } +// +// //鑾峰彇HTTP璇锋眰鏍囧噯缁撴瀯浣� +// private NyShuttleHttpCommand getHttpStandard(Integer shuttleNo, Integer taskNo) { +// NyShuttleHttpCommand httpStandard = new NyShuttleHttpCommand(); +// httpStandard.setMsgType("requestMsg");//璇锋眰娑堟伅 +// httpStandard.setRobotId(shuttleNo);//杞﹁締缂栧彿 +// httpStandard.setTaskNo(taskNo);//宸ヤ綔鍙� +// +// //璁剧疆璇锋眰娑堟伅 +// NyShuttleHttpCommand.NyRequest request = new NyShuttleHttpCommand.NyRequest(); +// NyShuttleHttpCommand.NyRequest.NyHeader header = new NyShuttleHttpCommand.NyRequest.NyHeader(); +// header.setVersion("1.0");//鐗堟湰鍙� +// header.setRequestId(getRequestId());//娑堟伅缂栧彿 +// +// //璁剧疆璇锋眰澶� +// request.setHeader(header); +// httpStandard.setRequest(request); +// return httpStandard; +// } +// +// //鑾峰彇璇锋眰缂栧彿 +// private Integer getRequestId() { +// Random random = new Random(); +// return random.nextInt(9999999); +// } +// +// //鑾峰彇TaskId +// private static Integer getTaskId() { +// Random random = new Random(); +// return random.nextInt(999999); +// } +// +// //鑾峰彇璇籉AS鐘舵�佷俊鎭懡浠� +// private NyShuttleHttpCommand getReadStatusCommand(Integer shuttleNo) { +// NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); +// NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); +// +// HashMap<String, Object> body = new HashMap<>(); +// body.put("requestType", "readState");//璇籉AS鐘舵�佷俊鎭� +// request.setBody(body); +// +// httpStandard.setRequest(request); +// return httpStandard; +// } +// +// //鍙戝嚭璇锋眰 +// private JSONObject requestCommand(NyShuttleHttpCommand httpCommand) throws IOException { +// try { +// if (this.socket == null) { +// return null; +// } +// +// //鍘嬬缉鏁版嵁鍖� +// JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand)); +// data.remove("nodes"); +// +// // 鑾峰彇杈撳嚭娴� +// OutputStreamWriter writer = new OutputStreamWriter(this.socket.getOutputStream()); +// writer.write(JSON.toJSONString(data) + "\r\n"); +// writer.flush(); +//// System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand)); +// +// String requestType = null; +// String taskId = null; +// try { +// requestType = httpCommand.getRequest().getBody().get("requestType").toString(); +// taskId = httpCommand.getRequest().getBody().get("taskId").toString(); +// } catch (Exception e) { +//// return null; +// //taskId鍙兘鍙栫┖锛屼笉鎶ラ敊锛屾甯告儏鍐� +// } +// +// // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� +// // 灏濊瘯10娆� +// JSONObject result = null; +// for (int i = 0; i < 10; i++) { +// result = getRequestBody(requestType, taskId); +// if (result == null) { +// try { +// Thread.sleep(100); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// }else { +// break; +// } +// } +// return result;//杩斿洖Body缁撴灉闆� +// }catch (Exception e) { +// e.printStackTrace(); +// } +// return null; +// } +// +// private void requestCommandAsync(NyShuttleHttpCommand httpCommand) throws IOException { +// if (this.socket == null) { +// return; +// } +// +// try { +// //鍘嬬缉鏁版嵁鍖� +// JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand)); +// data.remove("nodes"); +// +// // 鑾峰彇杈撳嚭娴� +// OutputStreamWriter writer = new OutputStreamWriter(this.socket.getOutputStream()); +// writer.write(JSON.toJSONString(data) + "\r\n"); +// writer.flush(); +//// System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand)); +// }catch (Exception e) { +//// e.printStackTrace(); +//// System.out.println("socket write error"); +// this.socket.close(); +// this.socket = null; +// } +// } +// +// private JSONObject filterBodyData(JSONObject data) { +// Object response = data.get("response"); +// if (response == null) { +// return null; +// } +// +// JSONObject result = JSON.parseObject(response.toString()); +// Object body = result.get("body"); +// if (body == null) { +// return null; +// } +// JSONObject jsonBody = JSON.parseObject(body.toString()); +// return jsonBody; +// } +// +// //鍦板浘鑺傜偣杞崲鐗涚溂鑺傜偣 +// private static Map<String, Object> navigateNodeToNyPointNode(NavigateNode node) { +// int[] NyPosition = WCSXyzToNyXyz(node.getX(), node.getY(), node.getZ());//WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍� +// HashMap<String, Object> point = new HashMap<>(); +// point.put("x", NyPosition[0]); +// point.put("y", NyPosition[1]); +// point.put("z", NyPosition[2]); +// return point; +// } +// +// //WCS绯荤粺鍧愭爣杞墰鐪煎潗鏍� +// private static int[] WCSXyzToNyXyz(int x, int y, int z) { +//// //WCS绯荤粺Y杞� => 鐗涚溂X杞磋浆鎹㈠叕寮� +//// int x1 = Math.abs(y - 61) + 11; +//// //WCS绯荤粺X杞� => 鐗涚溂Y杞磋浆鎹㈠叕寮� +//// int y1 = x + 10; +// +//// int x1 = x + 10; +//// int y1 = y + 10; +// LocMastService locMastService = SpringUtils.getBean(LocMastService.class); +// LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() +// .eq("row1", x) +// .eq("bay1", y) +// .eq("lev1", z) +// .eq("status", 1)); +// if (locMast == null) { +// return null; +// } +// +// String qrCodeValue = locMast.getQrCodeValue(); +// JSONObject data = JSON.parseObject(qrCodeValue); +// return new int[]{data.getInteger("y"), data.getInteger("x"), z}; +// } +// +// @Data +// private class InnerSuhttleExtend { +// +// /** +// * 绠″埗鐘舵�佷笉鍦ㄧ鍒朵笅/琚鍒朵腑 +// * 0/1 +// */ +// private Integer suspendState; +// +// /** +// * 鏈�楂樼數鑺數鍘�(mV) +// */ +// private Integer maxCellVoltage; +// +// /** +// * 鏈�浣庣數鑺數鍘�(mV)锛屼綆浜�2900mv闇�瑕佺珛鍗冲厖鐢� +// */ +// private Integer minCellVoltage; +// +// /** +// * 鐢垫睜鐢靛帇锛坢V锛� +// */ +// private Integer voltage; +// +// /** +// * 鍏呮斁鐢靛惊鐜鏁� +// */ +// private Integer chargeCycleTimes; +// +// /** +// * 鍓╀綑鐢甸噺/10(A) +// */ +// private Integer surplusQuantity; +// +// /** +// * 鎬荤數閲�/10(A) +// */ +// private Integer countQuantity; +// +// } +//} -- Gitblit v1.9.1