From 15b5002fd412a5d33be5d5c6deb63b3d02c77c41 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期二, 23 九月 2025 14:35:39 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/impl/NyLiftThread.java | 155 ++++++++++++++++++++++++++++----------------------- 1 files changed, 84 insertions(+), 71 deletions(-) diff --git a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java index e5a01e7..1af1ca3 100644 --- a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java +++ b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java @@ -3,13 +3,10 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -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.DeviceConfig; 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; @@ -45,10 +42,11 @@ private DeviceConfig device; private LiftProtocol liftProtocol; private RedisUtil redisUtil; - LiftPointModel liftPointModel; + private LiftPointModel liftPointModel; private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>(); private List<DeviceMsgModel> readResultList = new ArrayList<>(); private List<DeviceMsgModel> resultList = new ArrayList<>(); + private String realtimeOriginData = ""; public NyLiftThread(DeviceConfig device, LiftPointModel liftPointModel, List<LiftStation> stationList, RedisUtil redisUtil) { this.device = device; @@ -57,7 +55,7 @@ //鍒濆鍖栫珯鐐� for (LiftStation station : stationList) { LiftStaProtocol liftStaProtocol = new LiftStaProtocol(); - liftStaProtocol.setStaNo(station.getStaNo());//绔欑偣鍙� + liftStaProtocol.setSiteId(station.getSiteId());//绔欑偣鍙� liftStaProtocol.setLev(station.getLev());//绔欑偣妤煎眰 String locNo = Utils.getLocNo(station.getRow(), station.getBay(), station.getLev()); liftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙� @@ -160,7 +158,7 @@ if (null == liftProtocol) { liftProtocol = new LiftProtocol(); liftProtocol.setLiftNo(device.getDeviceNo()); - liftProtocol.setProtocolStatus(LiftProtocolStatusType.NONE); + liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); InnerLiftExtend innerLiftExtend = new InnerLiftExtend(); liftProtocol.setExtend(innerLiftExtend); @@ -171,8 +169,8 @@ liftProtocol.setModel(data.getInteger("model")); //PLC浠诲姟鍙� liftProtocol.setPlcTaskNo(data.getInteger("plcTaskNo")); - //浠诲姟鐘舵�� - liftProtocol.setProtocolStatus(data.getInteger("protocolStatus")); + //璁惧鐘舵�� + liftProtocol.setDeviceStatus(data.getInteger("deviceStatus")); //浠诲姟妯″紡 liftProtocol.setTaskMode(data.getInteger("taskMode")); //鍙栬揣鏁版嵁 @@ -193,26 +191,47 @@ //************琛ュ厖鎵╁睍瀛楁************* InnerLiftExtend liftExtend = (InnerLiftExtend) liftProtocol.getExtend(); liftProtocol.setExtend(liftExtend); - liftExtend.setFrontOverrun(data.getBoolean("frontOverrun")); - liftExtend.setBackOverrun(data.getBoolean("backOverrun")); - liftExtend.setLeftOverrun(data.getBoolean("leftOverrun")); - liftExtend.setRightOverrun(data.getBoolean("rightOverrun")); - liftExtend.setOverHeight(data.getBoolean("overHeight")); - liftExtend.setOverWeight(data.getBoolean("overWeight")); + JSONObject extend = data.getJSONObject("extend"); + liftExtend.setFrontOverrun(extend.getInteger("frontOverrun") == 1); + liftExtend.setBackOverrun(extend.getInteger("backOverrun") == 1); + liftExtend.setLeftOverrun(extend.getInteger("leftOverrun") == 1); + liftExtend.setRightOverrun(extend.getInteger("rightOverrun") == 1); + liftExtend.setOverHeight(extend.getInteger("overHeight") == 1); + liftExtend.setOverWeight(extend.getInteger("overWeight") == 1); + liftExtend.setPlcTaskNoComplete(extend.getInteger("plcTaskNoComplete")); - JSONArray trayList = data.getJSONArray("trayList"); - for (int i = 0; i < trayList.size(); i++) { - int hasTray = (int) trayList.get(i); - LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i); - liftStaProtocol.setHasTray(hasTray == 1); + if (!liftExtend.getPlcTaskNoComplete().equals(liftProtocol.getPlcTaskNo())) { + //璁惧鐘舵�� + liftProtocol.setDeviceStatus(LiftDeviceStatusType.BUSY.id); } - JSONArray carList = data.getJSONArray("carList"); - for (int i = 0; i < carList.size(); i++) { - int hasCar = (int) carList.get(i); - LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i); - liftStaProtocol.setHasCar(hasCar == 1); + //璇诲彇绔欑偣 + JSONArray stationList = data.getJSONArray("stationList"); + if (stationList != null) { + for (int i = 0; i < stationList.size(); i++) { + JSONObject staObj = stationList.getJSONObject(i); + LiftStaProtocol liftStaProtocol = null; + for (LiftStaProtocol staProtocol : liftStaProtocols) { + if(staProtocol.getSiteId().equals(staObj.getInteger("siteId"))){ + liftStaProtocol = staProtocol; + break; + } + } + + if(liftStaProtocol == null){ + continue; + } + + liftStaProtocol.setModel(staObj.getInteger("model") == 1); + liftStaProtocol.setBusy(staObj.getInteger("busy") == 1); + liftStaProtocol.setHasTray(staObj.getInteger("hasTray") == 1); + liftStaProtocol.setDeviceError(staObj.getInteger("deviceError") == 1); + liftStaProtocol.setTaskNo(staObj.getInteger("taskNo")); + liftStaProtocol.setBarcode(staObj.getString("barcode")); + } } + + this.realtimeOriginData = JSON.toJSONString(data); if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) { //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� @@ -230,27 +249,7 @@ liftProtocol.setDeviceDataLog(System.currentTimeMillis()); } - //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴� - BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class); - BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>() - .eq("lift_no", device.getDeviceNo())); - if (basLift == null) { - basLift = new BasLift(); - //鎻愬崌鏈哄彿 - basLift.setLiftNo(liftProtocol.getLiftNo()); - basLift.setStatus(1); - basLiftService.insert(basLift); - } - //浠诲姟鍙� - basLift.setWrkNo(liftProtocol.getTaskNo()); - //淇敼鏃堕棿 - basLift.setUpdateTime(new Date()); - //璁惧鐘舵�� - basLift.setDeviceStatus(JSON.toJSONString(liftProtocol)); - if (basLiftService.updateById(basLift)) { - OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), liftProtocol.getLiftNo())); - } - + OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), liftProtocol.getLiftNo())); } catch (Exception e) { e.printStackTrace(); OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getDeviceNo(), device.getIp(), device.getPort())); @@ -381,30 +380,10 @@ @Override public CommandResponse reset() { - CommandResponse response = new CommandResponse(false); - try { - LiftCommand resetCommand = getResetCommand(9999); - - //鍙戝嚭璇锋眰 - String resultKey = requestCommand(resetCommand); - //鏌ヨ璇锋眰缁撴灉 - JSONObject result = queryCommandStatus(resultKey); - if (result == null) { - return response;//璇锋眰澶辫触 - } - if(!result.getString("result").equals("success")) { - return response;//璇锋眰澶辫触 - } - - this.liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 - response.setMessage(JSON.toJSONString(result)); - response.setResult(true); - return response; - } catch (Exception e) { - e.printStackTrace(); - response.setMessage(e.getMessage()); - return response; - } + CommandResponse response = new CommandResponse(true); + this.setSyncTaskNo(0); + this.setProtocolStatus(LiftProtocolStatusType.IDLE); + return response; } @Override @@ -413,6 +392,7 @@ || this.liftProtocol.getPlcTaskNo() == null || this.liftProtocol.getProtocolStatus() == null || this.liftProtocol.getModel() == null + || this.liftProtocol.getDeviceStatus() == null || this.liftProtocol.getErrorCode() == null || this.liftProtocol.getExtend() == null ) { @@ -422,9 +402,10 @@ InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend(); boolean res = this.liftProtocol.getProtocolStatus() == LiftProtocolStatusType.IDLE.id - && this.liftProtocol.getPlcTaskNo() == 0 +// && this.liftProtocol.getPlcTaskNo() == 0 && this.liftProtocol.getTaskNo() == 0 && this.liftProtocol.getModel() == 2 + && this.liftProtocol.getDeviceStatus() == LiftDeviceStatusType.IDLE.id && this.liftProtocol.getErrorCode() == 0 && !extend.getFrontOverrun() && !extend.getBackOverrun() @@ -452,6 +433,7 @@ if (this.liftProtocol.getProtocolStatus() == null || this.liftProtocol.getModel() == null + || this.liftProtocol.getDeviceStatus() == null || this.liftProtocol.getErrorCode() == null || this.liftProtocol.getExtend() == null ) { @@ -462,6 +444,7 @@ boolean res = this.liftProtocol.getProtocolStatus() == LiftProtocolStatusType.IDLE.id && this.liftProtocol.getModel() == 2 + && this.liftProtocol.getDeviceStatus() == LiftDeviceStatusType.IDLE.id && this.liftProtocol.getErrorCode() == 0 && !extend.getFrontOverrun() && !extend.getBackOverrun() @@ -481,7 +464,8 @@ @Override public boolean setSyncTaskNo(Integer taskNo) { - this.liftProtocol.setSyncTaskNo(taskNo); + redisUtil.setSync(RedisKeyType.LIFT_FLAG.key + liftProtocol.getLiftNo(), taskNo); + this.liftProtocol.setTaskNo(taskNo); return true; } @@ -499,6 +483,11 @@ } @Override + public String getRealtimeOriginData() { + return this.realtimeOriginData; + } + + @Override public LiftCommand getPickAndPutCommand(Integer taskNo, Integer pick, Integer put) { LiftCommand command = new LiftCommand(); command.setLiftNo(device.getDeviceNo()); @@ -507,6 +496,10 @@ command.setPick(pick); command.setPut(put); + LiftStaProtocol pickSta = findSta(pick); + LiftStaProtocol putSta = findSta(put); + command.setPickLev(pickSta.getLev()); + command.setPutLev(putSta.getLev()); return command; } @@ -519,6 +512,10 @@ command.setPick(pick); command.setPut(put); + LiftStaProtocol pickSta = findSta(pick); + LiftStaProtocol putSta = findSta(put); + command.setPickLev(pickSta.getLev()); + command.setPutLev(putSta.getLev()); return command; } @@ -531,6 +528,10 @@ command.setPick(pick); command.setPut(put); + LiftStaProtocol pickSta = findSta(pick); + LiftStaProtocol putSta = findSta(put); + command.setPickLev(pickSta.getLev()); + command.setPutLev(putSta.getLev()); return command; } @@ -655,6 +656,15 @@ } } + private LiftStaProtocol findSta(Integer staNo) { + for (LiftStaProtocol liftStaProtocol : this.liftStaProtocols) { + if (liftStaProtocol.getSiteId().equals(staNo)) { + return liftStaProtocol; + } + } + return null; + } + /** * 鎵╁睍瀛楁 */ @@ -691,5 +701,8 @@ */ private Boolean overWeight; + //PLC宸插畬鎴愪换鍔″彿 + private Integer plcTaskNoComplete; + } } -- Gitblit v1.9.1