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/resources/mapper/BasLiftMapper.xml | 16 src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 127 +- src/main/java/com/zy/core/thread/impl/ZyForkLiftThread2.java | 451 +++++++++ src/main/java/com/zy/core/utils/DeviceMsgUtils.java | 1 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 153 +- src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java | 4 src/main/java/com/zy/core/model/DeviceMsgModel.java | 2 src/main/java/com/zy/asrs/controller/ForkLiftController.java | 16 src/main/webapp/views/admin/basLift/basLift.html | 159 --- src/main/java/com/zy/core/thread/impl/LfdZyForkLiftSlaveThread.java | 950 ++++++++++---------- src/main/java/com/zy/asrs/entity/BasLift.java | 22 src/main/java/com/zy/core/ServerBootstrap.java | 63 /dev/null | 452 --------- src/main/webapp/static/js/basLift/basLift.js | 25 src/main/java/com/zy/core/model/DeviceCommandMsgModel.java | 2 src/main/java/com/zy/core/model/command/ForkLiftCommand.java | 10 src/main/java/com/zy/core/thread/ForkLiftThread.java | 14 src/main/java/com/zy/core/thread/impl/LfdZyForkLiftMasterThread.java | 306 +++--- src/main/resources/application.yml | 22 19 files changed, 1,307 insertions(+), 1,488 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/ForkLiftController.java b/src/main/java/com/zy/asrs/controller/ForkLiftController.java index eb34bc6..3344deb 100644 --- a/src/main/java/com/zy/asrs/controller/ForkLiftController.java +++ b/src/main/java/com/zy/asrs/controller/ForkLiftController.java @@ -59,7 +59,7 @@ for (DeviceConfig device : forkliftList) { // 琛ㄦ牸琛� JSONObject baseObj = new JSONObject(); - baseObj.put("shuttleNo", device.getDeviceNo()); + baseObj.put("liftNo", device.getDeviceNo()); list.add(baseObj); // 鑾峰彇鎻愬崌鏈轰俊鎭� ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo()); @@ -112,7 +112,7 @@ StringBuilder str = new StringBuilder(); String s; int i = 0; - while((s = OutputQueue.LIFT.poll()) != null && i <=10) { + while((s = OutputQueue.FORKLIFT.poll()) != null && i <=10) { str.append("\n").append(s); i++; } @@ -286,9 +286,9 @@ Integer targetSta = param.getStaNo(); //鑾峰彇鎻愬崌鏈哄懡浠� - List<ForkLiftCommand> liftCommand = forkLiftThread.getShuttleSwitchCommand(workNo, startSta, targetSta); + ForkLiftCommand liftCommand = forkLiftThread.getShuttleSwitchCommand(workNo, startSta, targetSta); ArrayList<ForkLiftCommand> commands = new ArrayList<>(); - commands.addAll(liftCommand); + commands.add(liftCommand); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); @@ -308,9 +308,9 @@ Integer targetSta = param.getStaNo(); //鑾峰彇鎻愬崌鏈哄懡浠� - List<ForkLiftCommand> liftCommand = forkLiftThread.getPickAndPutCommand(workNo, startSta, targetSta); + ForkLiftCommand liftCommand = forkLiftThread.getPickAndPutCommand(workNo, startSta, targetSta); ArrayList<ForkLiftCommand> commands = new ArrayList<>(); - commands.addAll(liftCommand); + commands.add(liftCommand); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); @@ -330,9 +330,9 @@ Integer targetSta = param.getStaNo(); //鑾峰彇鎻愬崌鏈哄懡浠� - List<ForkLiftCommand> liftCommand = forkLiftThread.getMoveCommand(workNo, startSta, targetSta); + ForkLiftCommand liftCommand = forkLiftThread.getMoveCommand(workNo, startSta, targetSta); ArrayList<ForkLiftCommand> commands = new ArrayList<>(); - commands.addAll(liftCommand); + commands.add(liftCommand); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); diff --git a/src/main/java/com/zy/asrs/entity/BasLift.java b/src/main/java/com/zy/asrs/entity/BasLift.java index 66b85e2..7f8317c 100644 --- a/src/main/java/com/zy/asrs/entity/BasLift.java +++ b/src/main/java/com/zy/asrs/entity/BasLift.java @@ -1,11 +1,14 @@ package com.zy.asrs.entity; +import com.alibaba.fastjson.JSON; import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.enums.IdType; import com.baomidou.mybatisplus.annotations.TableField; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; +import com.zy.core.model.LiftStation; import org.springframework.format.annotation.DateTimeFormat; import com.core.common.SpringUtils; import com.zy.system.service.UserService; @@ -15,6 +18,7 @@ import lombok.Data; import com.baomidou.mybatisplus.annotations.TableName; import java.io.Serializable; +import java.util.List; @Data @TableName("asr_bas_lift") @@ -86,6 +90,13 @@ @TableField("point") private String point; + /** + * 鎻愬崌鏈虹珯鐐� + */ + @ApiModelProperty(value= "鎻愬崌鏈虹珯鐐�") + @TableField("station_list") + private String stationList; + public BasLift() {} public BasLift(Integer liftNo, Integer status, Integer wrkNo, Date updateTime, Long updateBy, String memo, Boolean pakMk, String deviceStatus) { @@ -115,4 +126,15 @@ return null; } + public List<LiftStation> getStationList$(){ + List<LiftStation> list = new ArrayList<>(); + if (Cools.isEmpty(this.stationList)){ + return list; + } + + List<LiftStation> liftStations = JSON.parseArray(stationList, LiftStation.class); + list.addAll(liftStations); + return list; + } + } diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index 6811d6d..67ccf13 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -762,9 +762,9 @@ } //鑾峰彇鎻愬崌鏈哄懡浠� - List<ForkLiftCommand> liftCommands = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), liftSta.getLev()); + ForkLiftCommand liftCommand = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), liftSta.getLev()); ArrayList<ForkLiftCommand> commands = new ArrayList<>(); - commands.addAll(liftCommands); + commands.add(liftCommand); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); @@ -890,9 +890,9 @@ } //鑾峰彇鎻愬崌鏈哄懡浠� - List<ForkLiftCommand> liftCommands = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getLev(), wrkMast.getStaNo()); + ForkLiftCommand liftCommand = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getLev(), wrkMast.getStaNo()); ArrayList<ForkLiftCommand> commands = new ArrayList<>(); - commands.addAll(liftCommands); + commands.add(liftCommand); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); @@ -924,6 +924,9 @@ for (DeviceConfig device : forkliftList) { //鑾峰彇鎻愬崌鏈轰俊鎭� ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo()); + if(forkLiftThread == null) { + continue; + } ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); if (forkLiftProtocol == null) { continue; @@ -1775,9 +1778,9 @@ } //鑾峰彇鎻愬崌鏈哄懡浠� - List<ForkLiftCommand> liftCommands = forkLiftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getLev(), liftSta.getLev()); + ForkLiftCommand liftCommand = forkLiftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getLev(), liftSta.getLev()); ArrayList<ForkLiftCommand> commands = new ArrayList<>(); - commands.addAll(liftCommands); + commands.add(liftCommand); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); @@ -1919,73 +1922,73 @@ //鑷姩鍒囨崲鍑哄叆搴撴ā寮� public void autoSwitchForkLiftIOMode() { - List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() - .eq("device_type", String.valueOf(SlaveType.ForkLift))); - for (DeviceConfig device : forkliftList) { - Integer liftNo = device.getDeviceNo(); - ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); - if (forkLiftThread == null) { - continue; - } - ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); - if (forkLiftProtocol == null) { - continue; - } - - List<Integer> liftAllStaNo = ForkLiftUtils.getLiftAllStaNo(liftNo); - if (liftAllStaNo.isEmpty()) { - continue; - } - - List<Integer> conveyorBindLiftAllStaNo = ForkLiftUtils.getConveyorBindLiftAllStaNo(liftNo); - if (conveyorBindLiftAllStaNo.isEmpty()) { - continue; - } - - //鑾峰彇鍏ュ簱浠诲姟 - List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() - .in("sta_no", liftAllStaNo) - .in("wrk_sts" - , WrkStsType.NEW_INBOUND.sts - , WrkStsType.INBOUND_DEVICE_RUN.sts - , WrkStsType.INBOUND_LIFT_RUN.sts - , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts - , WrkStsType.INBOUND_SHUTTLE_RUN.sts - , WrkStsType.INBOUND_SHUTTLE_RUN_COMPLETE.sts - )); - - //鑾峰彇鍑哄簱浠诲姟 - List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() - .in("sta_no", conveyorBindLiftAllStaNo) - .in("wrk_sts" - , WrkStsType.NEW_OUTBOUND.sts - , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts - , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts - , WrkStsType.OUTBOUND_LIFT_RUN.sts - , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts - )); - - if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.NONE)) { - //鏈煡妯″紡 - if (!inWrkMasts.isEmpty()) { - forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); - } else if (!outWrkMasts.isEmpty()) { - forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT); - }else { - forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); - } - } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) { - //鍏ュ簱妯″紡 - if (inWrkMasts.isEmpty() && !outWrkMasts.isEmpty()) { - forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT); - } - } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) { - //鍑哄簱妯″紡 - if (outWrkMasts.isEmpty() && !inWrkMasts.isEmpty()) { - forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); - } - } - } +// List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() +// .eq("device_type", String.valueOf(SlaveType.ForkLift))); +// for (DeviceConfig device : forkliftList) { +// Integer liftNo = device.getDeviceNo(); +// ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); +// if (forkLiftThread == null) { +// continue; +// } +// ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); +// if (forkLiftProtocol == null) { +// continue; +// } +// +// List<Integer> liftAllStaNo = ForkLiftUtils.getLiftAllStaNo(liftNo); +// if (liftAllStaNo.isEmpty()) { +// continue; +// } +// +// List<Integer> conveyorBindLiftAllStaNo = ForkLiftUtils.getConveyorBindLiftAllStaNo(liftNo); +// if (conveyorBindLiftAllStaNo.isEmpty()) { +// continue; +// } +// +// //鑾峰彇鍏ュ簱浠诲姟 +// List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() +// .in("sta_no", liftAllStaNo) +// .in("wrk_sts" +// , WrkStsType.NEW_INBOUND.sts +// , WrkStsType.INBOUND_DEVICE_RUN.sts +// , WrkStsType.INBOUND_LIFT_RUN.sts +// , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts +// , WrkStsType.INBOUND_SHUTTLE_RUN.sts +// , WrkStsType.INBOUND_SHUTTLE_RUN_COMPLETE.sts +// )); +// +// //鑾峰彇鍑哄簱浠诲姟 +// List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() +// .in("sta_no", conveyorBindLiftAllStaNo) +// .in("wrk_sts" +// , WrkStsType.NEW_OUTBOUND.sts +// , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts +// , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts +// , WrkStsType.OUTBOUND_LIFT_RUN.sts +// , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts +// )); +// +// if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.NONE)) { +// //鏈煡妯″紡 +// if (!inWrkMasts.isEmpty()) { +// forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); +// } else if (!outWrkMasts.isEmpty()) { +// forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT); +// }else { +// forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); +// } +// } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) { +// //鍏ュ簱妯″紡 +// if (inWrkMasts.isEmpty() && !outWrkMasts.isEmpty()) { +// forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT); +// } +// } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) { +// //鍑哄簱妯″紡 +// if (outWrkMasts.isEmpty() && !inWrkMasts.isEmpty()) { +// forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); +// } +// } +// } } //鍑哄簱浠诲姟棰勮皟搴︽彁鍗囨満 @@ -2056,9 +2059,9 @@ int workNo = commonService.getWorkNo(WrkIoType.FORKLIFT_MOVE.id);//鑾峰彇浠诲姟鍙� //鑾峰彇鎻愬崌鏈哄懡浠� - List<ForkLiftCommand> liftCommand = forkLiftThread.getMoveCommand(workNo, forkLiftProtocol.getLev(), Utils.getLev(wrkMast.getSourceLocNo())); + ForkLiftCommand liftCommand = forkLiftThread.getMoveCommand(workNo, forkLiftProtocol.getLev(), Utils.getLev(wrkMast.getSourceLocNo())); ArrayList<ForkLiftCommand> commands = new ArrayList<>(); - commands.addAll(liftCommand); + commands.add(liftCommand); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); diff --git a/src/main/java/com/zy/common/utils/ForkLiftOperaUtils.java b/src/main/java/com/zy/common/utils/ForkLiftOperaUtils.java deleted file mode 100644 index e45d338..0000000 --- a/src/main/java/com/zy/common/utils/ForkLiftOperaUtils.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.zy.common.utils; - -import com.zy.core.model.command.ForkLiftCommand; -import org.springframework.stereotype.Component; - -/** - * 璐у弶鎻愬崌鏈烘搷浣滃伐鍏风被 - */ -@Component -public class ForkLiftOperaUtils { - - /** - * 鑾峰彇鎻愬崌鏈哄懡浠� - */ - public ForkLiftCommand getLiftCommand(Integer liftNo, Integer taskNo, Integer taskModel, Integer pick, Integer put, Integer confirm) { - ForkLiftCommand command = new ForkLiftCommand(); - command.setLiftNo(liftNo); - command.setTaskNo(taskNo.shortValue()); - command.setMode(taskModel.shortValue()); - command.setPick(pick.shortValue()); - command.setPut(put.shortValue()); - command.setConfirm(confirm.shortValue()); - return command; - } - -} diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java index c67e150..003d514 100644 --- a/src/main/java/com/zy/core/ServerBootstrap.java +++ b/src/main/java/com/zy/core/ServerBootstrap.java @@ -3,13 +3,16 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.exception.CoolException; +import com.zy.asrs.entity.BasLift; import com.zy.asrs.entity.DeviceConfig; +import com.zy.asrs.service.BasLiftService; import com.zy.asrs.service.DeviceConfigService; import com.zy.common.utils.RedisUtil; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.thread.impl.NyShuttleThread; +import com.zy.core.thread.impl.ZyForkLiftThread; import com.zy.core.utils.DeviceMsgUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -36,6 +39,8 @@ private DeviceConfigService deviceConfigService; @Autowired private DeviceMsgUtils deviceMsgUtils; + @Autowired + private BasLiftService basLiftService; @PostConstruct @Async @@ -70,44 +75,38 @@ List<DeviceConfig> allDevices = new ArrayList<>(); List<DeviceConfig> fakeDevices = new ArrayList<>(); -// // 鍒濆鍖栬揣鍙夋彁鍗囨満 -// List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() -// .eq("device_type", String.valueOf(SlaveType.ForkLift))); -// allDevices.addAll(forkLiftList); -// for (DeviceConfig deviceConfig : forkLiftList) { -// News.info("鍒濆鍖栬揣鍙夋彁鍗囨満........................................................"); -// ThreadHandler thread = null; -// if (deviceConfig.getThreadImpl().equals("ZyForkLiftThread")) { -// thread = new ZyForkLiftThread(forkLiftSlave, redisUtil); -// } else if (deviceConfig.getThreadImpl().equals("LfdZyForkLiftSlaveThread")) { -// thread = new LfdZyForkLiftSlaveThread(forkLiftSlave, redisUtil, forkLiftSlave.getMasterId()); -// } else { -// throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�"); -// } -// -// new Thread(thread).start(); -// SlaveConnection.put(SlaveType.ForkLift, deviceConfig.getDeviceNo(), thread); -// } + // 鍒濆鍖栬揣鍙夋彁鍗囨満 + News.info("鍒濆鍖栬揣鍙夋彁鍗囨満........................................................"); + List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.ForkLift))); + for (DeviceConfig deviceConfig : forkLiftList) { + BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>().eq("lift_no", deviceConfig.getDeviceNo())); + if (basLift == null) { + throw new CoolException("鏈厤缃揣鍙夋彁鍗囨満鏁版嵁"); + } -// // 鍒濆鍖栬揣鍙夋彁鍗囨満 -// for (ForkLiftSlave forkLiftSlave : slaveProperties.getForkLiftMaster()) { -// News.info("鍒濆鍖栬揣鍙夋彁鍗囨満Master........................................................"); -// ThreadHandler thread = null; -// if (forkLiftSlave.getThreadImpl().equals("LfdZyForkLiftMasterThread")) { -// thread = new LfdZyForkLiftMasterThread(forkLiftSlave, redisUtil); -// } else { -// throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�"); -// } -// -// new Thread(thread).start(); -// SlaveConnection.put(SlaveType.ForkLiftMaster, forkLiftSlave.getId(), thread); -// } + ThreadHandler thread = null; + if (deviceConfig.getThreadImpl().equals("ZyForkLiftThread")) { + thread = new ZyForkLiftThread(deviceConfig, basLift.getStationList$(), redisUtil); + } else { + throw new CoolException("鏈煡鐨勭嚎绋嬪疄鐜�"); + } + + new Thread(thread).start(); + SlaveConnection.put(SlaveType.ForkLift, deviceConfig.getDeviceNo(), thread); + + if (deviceConfig.getFake() == 1) { + fakeDevices.add(deviceConfig); + }else { + allDevices.add(deviceConfig); + } + } // 鍒濆鍖栧洓鍚戠┛姊溅 + News.info("鍒濆鍖栧洓鍚戠┛姊溅......................................................"); List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() .eq("device_type", String.valueOf(SlaveType.Shuttle))); for (DeviceConfig deviceConfig : shuttleList) { - News.info("鍒濆鍖栧洓鍚戠┛姊溅......................................................"); ThreadHandler thread = null; if (deviceConfig.getThreadImpl().equals("NyShuttleThread")) { thread = new NyShuttleThread(deviceConfig, redisUtil); diff --git a/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java b/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java index 894c60d..adcbc6b 100644 --- a/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java +++ b/src/main/java/com/zy/core/enums/ForkLiftTaskModeType.java @@ -9,6 +9,10 @@ PICK_PUT(3, "鍙栨斁璐�"), SHUTTLE_SWITCH(4, "灏忚溅鎹㈠眰"), MOVE(5, "鎻愬崌鏈虹Щ鍔�"), + RESET(9996, "澶嶄綅"), + SWITCH_IN(9997, "鍒囨崲鍏ュ簱妯″紡"), + SWITCH_OUt(9998, "鍒囨崲鍑哄簱妯″紡"), + READ_STATUS(9999, "璇诲彇鐘舵��"), ; public Integer id; diff --git a/src/main/java/com/zy/core/model/DeviceCommandMsgModel.java b/src/main/java/com/zy/core/model/DeviceCommandMsgModel.java index 0e44755..8d8ad92 100644 --- a/src/main/java/com/zy/core/model/DeviceCommandMsgModel.java +++ b/src/main/java/com/zy/core/model/DeviceCommandMsgModel.java @@ -9,6 +9,8 @@ private String deviceType; + private String resultKey; + private Object command; } diff --git a/src/main/java/com/zy/core/model/DeviceMsgModel.java b/src/main/java/com/zy/core/model/DeviceMsgModel.java index ecabe4f..ca64719 100644 --- a/src/main/java/com/zy/core/model/DeviceMsgModel.java +++ b/src/main/java/com/zy/core/model/DeviceMsgModel.java @@ -13,4 +13,6 @@ private String deviceOriginMsg; + private String resultKey; + } diff --git a/src/main/java/com/zy/core/model/command/ForkLiftCommand.java b/src/main/java/com/zy/core/model/command/ForkLiftCommand.java index 69b637f..aba270a 100644 --- a/src/main/java/com/zy/core/model/command/ForkLiftCommand.java +++ b/src/main/java/com/zy/core/model/command/ForkLiftCommand.java @@ -17,27 +17,27 @@ /** * 浠诲姟鍙� */ - private Short taskNo; + private Integer taskNo; /** * 浠诲姟妯″紡 */ - private Short mode; + private Integer mode; /** * 鍙栬揣鏁版嵁 */ - private Short pick; + private Integer pick; /** * 鏀捐揣鏁版嵁 */ - private Short put; + private Integer put; /** * 浠诲姟纭 */ - private Short confirm; + private Integer confirm; /** * 鍛戒护鏄惁瀹屾垚,榛樿false鏈畬鎴� diff --git a/src/main/java/com/zy/core/thread/ForkLiftThread.java b/src/main/java/com/zy/core/thread/ForkLiftThread.java index 408ad8c..62fe964 100644 --- a/src/main/java/com/zy/core/thread/ForkLiftThread.java +++ b/src/main/java/com/zy/core/thread/ForkLiftThread.java @@ -26,6 +26,8 @@ CommandResponse move(ForkLiftCommand command);//灏忚溅鎹㈠眰 + CommandResponse switchIOMode(ForkLiftCommand command);//鍒囨崲鍑哄叆搴撴ā寮� + CommandResponse reset();//澶嶄綅 boolean isIdle();//鏄惁绌洪棽 @@ -38,16 +40,18 @@ boolean setSyncTaskNo(Integer taskNo);//璁剧疆宸ヤ綔鍙� - boolean switchIOMode(ForkLiftIoModeType type);//鍒囨崲鍑哄叆搴撴ā寮� - int generateDeviceTaskNo(int taskNo, ForkLiftTaskModeType type);//鐢熸垚纭欢璁惧宸ヤ綔鍙� //***************鑾峰彇鍛戒护***************** - List<ForkLiftCommand> getPickAndPutCommand(Integer taskNo, Integer pick, Integer put);//鍙栨斁璐ф寚浠� + ForkLiftCommand getPickAndPutCommand(Integer taskNo, Integer pick, Integer put);//鍙栨斁璐ф寚浠� - List<ForkLiftCommand> getShuttleSwitchCommand(Integer taskNo, Integer pick, Integer put);//灏忚溅鎹㈠眰 + ForkLiftCommand getShuttleSwitchCommand(Integer taskNo, Integer pick, Integer put);//灏忚溅鎹㈠眰 - List<ForkLiftCommand> getMoveCommand(Integer taskNo, Integer pick, Integer put);//鎻愬崌鏈虹Щ鍔� + ForkLiftCommand getMoveCommand(Integer taskNo, Integer pick, Integer put);//鎻愬崌鏈虹Щ鍔� + + ForkLiftCommand getSwitchIOCommand(Integer taskNo, ForkLiftIoModeType mode); + + ForkLiftCommand getResetCommand(Integer taskNo); } diff --git a/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftMasterThread.java b/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftMasterThread.java index 8a8964d..fbf2829 100644 --- a/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftMasterThread.java +++ b/src/main/java/com/zy/core/thread/impl/LfdZyForkLiftMasterThread.java @@ -1,153 +1,153 @@ -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.core.common.DateUtils; -import com.zy.common.utils.RedisUtil; -import com.zy.core.News; -import com.zy.core.ThreadHandler; -import com.zy.core.cache.OutputQueue; -import com.zy.core.model.ForkLiftSlave; -import com.zy.core.model.protocol.ForkLiftProtocol; -import lombok.extern.slf4j.Slf4j; - -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -@Slf4j -@SuppressWarnings("all") -public class LfdZyForkLiftMasterThread implements ThreadHandler { - - private ForkLiftSlave slave; - private ForkLiftProtocol forkLiftProtocol; - private RedisUtil redisUtil; - private SiemensS7Net siemensS7Net; - private List<HashMap<String,Object>> slaveAddressList = null; - private boolean connect = false; - - public LfdZyForkLiftMasterThread(ForkLiftSlave slave, RedisUtil redisUtil) { - this.slave = slave; - this.redisUtil = redisUtil; - ArrayList<HashMap<String, Object>> addressList = new ArrayList<>(); - - HashMap<String, Object> lift1 = new HashMap<>(); - lift1.put("status", new DbData("DB101.0", (short) 18));//鎻愬崌鏈烘暟鎹� - lift1.put("staStatusTray", new DbData("DB102.0", (short) 14));//绔欑偣鏁版嵁 - lift1.put("staStatusCar", new DbData("DB102.50", (short) 14));//绔欑偣鏁版嵁 - lift1.put("write", new DbData("DB103.0", null));//鍐欏叆鏁版嵁 - lift1.put("writeConfirm", new DbData("DB103.8", null));//鍐欏叆纭鏁版嵁 - lift1.put("confirm", new DbData("DB103.10", null));//纭鍛戒护 - lift1.put("switchIOMode", new DbData("DB103.12", null));//鍑哄叆搴撴ā寮� - - HashMap<String, Object> lift2 = new HashMap<>(); - lift2.put("status", new DbData("DB104.0", (short) 18));//鎻愬崌鏈烘暟鎹� - lift2.put("staStatusTray", new DbData("DB105.0", (short) 14));//绔欑偣鏁版嵁 - lift2.put("staStatusCar", new DbData("DB105.50", (short) 14));//绔欑偣鏁版嵁 - lift2.put("write", new DbData("DB106.0", null));//鍐欏叆鏁版嵁 - lift2.put("writeConfirm", new DbData("DB106.8", null));//鍐欏叆纭鏁版嵁 - lift2.put("confirm", new DbData("DB106.10", null));//纭鍛戒护 - lift2.put("switchIOMode", new DbData("DB106.12", null));//鍑哄叆搴撴ā寮� - - addressList.add(lift1); - addressList.add(lift2); - this.slaveAddressList = addressList; - } - - @Override - public boolean connect() { - boolean result = false; - siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); - siemensS7Net.setRack(slave.getRack().byteValue()); - siemensS7Net.setSlot(slave.getSlot().byteValue()); - OperateResult connect = siemensS7Net.ConnectServer(); - if(connect.IsSuccess){ - result = true; - OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - News.info("璐у弶鎻愬崌鏈鸿繛鎺ユ垚鍔� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - } else { - OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - News.error("璐у弶鎻愬崌鏈鸿繛鎺ュけ璐ワ紒锛侊紒 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - } - // siemensS7Net.ConnectClose(); - this.connect = result; - return result; - } - - @Override - public void close() { - - } - - @Override - public void run() { - News.info("{}鍙疯揣鍙夋彁鍗囨満Master绾跨▼鍚姩", slave.getId()); - this.connect(); - while (true) { - try { - if (!this.connect) { - this.connect(); - } - - Thread.sleep(500); - }catch (Exception e){ - e.printStackTrace(); - } - } - } - - public SiemensS7Net getSiemensS7Net() { - return siemensS7Net; - } - - public synchronized OperateResultExOne<byte[]> read(Integer slaveId, String dbTag) { - try { - HashMap<String, Object> map = this.slaveAddressList.get(slaveId - 1); - DbData dbData = (DbData) map.get(dbTag); - OperateResultExOne<byte[]> result = siemensS7Net.Read(dbData.dbAddress, dbData.dbAddressLength); - return result; - } 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())); - } - return null; - } - - public synchronized OperateResult write(Integer slaveId, String dbTag, short[] array) { - try { - HashMap<String, Object> map = this.slaveAddressList.get(slaveId - 1); - DbData dbData = (DbData) map.get(dbTag); - OperateResult result = siemensS7Net.Write(dbData.dbAddress, array); - return result; - } 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())); - } - return null; - } - - public synchronized OperateResult write(Integer slaveId, String dbTag, short val) { - try { - HashMap<String, Object> map = this.slaveAddressList.get(slaveId - 1); - DbData dbData = (DbData) map.get(dbTag); - OperateResult result = siemensS7Net.Write(dbData.dbAddress, val); - return result; - } 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())); - } - return null; - } - - private class DbData { - private String dbAddress; - private Short dbAddressLength; - - public DbData(String dbAddress, Short dbAddressLength) { - this.dbAddress = dbAddress; - this.dbAddressLength = dbAddressLength; - } - - } -} +//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.core.common.DateUtils; +//import com.zy.common.utils.RedisUtil; +//import com.zy.core.News; +//import com.zy.core.ThreadHandler; +//import com.zy.core.cache.OutputQueue; +//import com.zy.core.model.ForkLiftSlave; +//import com.zy.core.model.protocol.ForkLiftProtocol; +//import lombok.extern.slf4j.Slf4j; +// +//import java.text.MessageFormat; +//import java.util.ArrayList; +//import java.util.Date; +//import java.util.HashMap; +//import java.util.List; +// +//@Slf4j +//@SuppressWarnings("all") +//public class LfdZyForkLiftMasterThread implements ThreadHandler { +// +// private ForkLiftSlave slave; +// private ForkLiftProtocol forkLiftProtocol; +// private RedisUtil redisUtil; +// private SiemensS7Net siemensS7Net; +// private List<HashMap<String,Object>> slaveAddressList = null; +// private boolean connect = false; +// +// public LfdZyForkLiftMasterThread(ForkLiftSlave slave, RedisUtil redisUtil) { +// this.slave = slave; +// this.redisUtil = redisUtil; +// ArrayList<HashMap<String, Object>> addressList = new ArrayList<>(); +// +// HashMap<String, Object> lift1 = new HashMap<>(); +// lift1.put("status", new DbData("DB101.0", (short) 18));//鎻愬崌鏈烘暟鎹� +// lift1.put("staStatusTray", new DbData("DB102.0", (short) 14));//绔欑偣鏁版嵁 +// lift1.put("staStatusCar", new DbData("DB102.50", (short) 14));//绔欑偣鏁版嵁 +// lift1.put("write", new DbData("DB103.0", null));//鍐欏叆鏁版嵁 +// lift1.put("writeConfirm", new DbData("DB103.8", null));//鍐欏叆纭鏁版嵁 +// lift1.put("confirm", new DbData("DB103.10", null));//纭鍛戒护 +// lift1.put("switchIOMode", new DbData("DB103.12", null));//鍑哄叆搴撴ā寮� +// +// HashMap<String, Object> lift2 = new HashMap<>(); +// lift2.put("status", new DbData("DB104.0", (short) 18));//鎻愬崌鏈烘暟鎹� +// lift2.put("staStatusTray", new DbData("DB105.0", (short) 14));//绔欑偣鏁版嵁 +// lift2.put("staStatusCar", new DbData("DB105.50", (short) 14));//绔欑偣鏁版嵁 +// lift2.put("write", new DbData("DB106.0", null));//鍐欏叆鏁版嵁 +// lift2.put("writeConfirm", new DbData("DB106.8", null));//鍐欏叆纭鏁版嵁 +// lift2.put("confirm", new DbData("DB106.10", null));//纭鍛戒护 +// lift2.put("switchIOMode", new DbData("DB106.12", null));//鍑哄叆搴撴ā寮� +// +// addressList.add(lift1); +// addressList.add(lift2); +// this.slaveAddressList = addressList; +// } +// +// @Override +// public boolean connect() { +// boolean result = false; +// siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); +// siemensS7Net.setRack(slave.getRack().byteValue()); +// siemensS7Net.setSlot(slave.getSlot().byteValue()); +// OperateResult connect = siemensS7Net.ConnectServer(); +// if(connect.IsSuccess){ +// result = true; +// OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); +// News.info("璐у弶鎻愬崌鏈鸿繛鎺ユ垚鍔� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); +// } else { +// OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); +// News.error("璐у弶鎻愬崌鏈鸿繛鎺ュけ璐ワ紒锛侊紒 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); +// } +// // siemensS7Net.ConnectClose(); +// this.connect = result; +// return result; +// } +// +// @Override +// public void close() { +// +// } +// +// @Override +// public void run() { +// News.info("{}鍙疯揣鍙夋彁鍗囨満Master绾跨▼鍚姩", slave.getId()); +// this.connect(); +// while (true) { +// try { +// if (!this.connect) { +// this.connect(); +// } +// +// Thread.sleep(500); +// }catch (Exception e){ +// e.printStackTrace(); +// } +// } +// } +// +// public SiemensS7Net getSiemensS7Net() { +// return siemensS7Net; +// } +// +// public synchronized OperateResultExOne<byte[]> read(Integer slaveId, String dbTag) { +// try { +// HashMap<String, Object> map = this.slaveAddressList.get(slaveId - 1); +// DbData dbData = (DbData) map.get(dbTag); +// OperateResultExOne<byte[]> result = siemensS7Net.Read(dbData.dbAddress, dbData.dbAddressLength); +// return result; +// } 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())); +// } +// return null; +// } +// +// public synchronized OperateResult write(Integer slaveId, String dbTag, short[] array) { +// try { +// HashMap<String, Object> map = this.slaveAddressList.get(slaveId - 1); +// DbData dbData = (DbData) map.get(dbTag); +// OperateResult result = siemensS7Net.Write(dbData.dbAddress, array); +// return result; +// } 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())); +// } +// return null; +// } +// +// public synchronized OperateResult write(Integer slaveId, String dbTag, short val) { +// try { +// HashMap<String, Object> map = this.slaveAddressList.get(slaveId - 1); +// DbData dbData = (DbData) map.get(dbTag); +// OperateResult result = siemensS7Net.Write(dbData.dbAddress, val); +// return result; +// } 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())); +// } +// return null; +// } +// +// private class DbData { +// private String dbAddress; +// private Short dbAddressLength; +// +// public DbData(String dbAddress, Short dbAddressLength) { +// this.dbAddress = dbAddress; +// this.dbAddressLength = dbAddressLength; +// } +// +// } +//} 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 { +// +// } +//} diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java index 166c711..68771e5 100644 --- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java +++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java @@ -56,7 +56,7 @@ private static final boolean DEBUG = false;//璋冭瘯妯″紡 private List<JSONObject> socketReadResults = new ArrayList<>(); - private List<JSONObject> socketResults = new ArrayList<>(); + private List<DeviceMsgModel> socketResults = new ArrayList<>(); //鍘熷璁惧鏁版嵁 private Object originDeviceData; @@ -188,54 +188,32 @@ data.put("originDeviceData", deviceMsg.getDeviceOriginMsg()); socketReadResults.add(data); } else { - socketResults.add(data);//娣诲姞鏁版嵁 + socketResults.add(deviceMsg);//娣诲姞鏁版嵁 } } catch (Exception e) { e.printStackTrace(); } } - public JSONObject getRequestBody(String type, String taskId) { + public JSONObject getRequestBody(String resultKey) { try { // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� JSONObject result = null; - if (type.equals("readState")) { - type = "state"; - } - + int idx = -1; 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; + DeviceMsgModel deviceMsgModel = socketResults.get(i); + if(deviceMsgModel.getResultKey().equals(resultKey)){ + idx = i; + result = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg())); 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;//鏃犲搷搴旂粨鏋� } + socketResults.remove(idx); return filterBodyData(result);//杩斿洖Body缁撴灉闆� } catch (Exception e) { return null; @@ -359,35 +337,38 @@ // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� JSONObject result = null; int removeIdx = -1; + JSONObject socketResult = null; for (int i = 0; i < socketResults.size(); i++) { - JSONObject socketResult = socketResults.get(i); - if (socketResult == null) { + DeviceMsgModel deviceMsgModel = socketResults.get(i); + if (!deviceMsgModel.getDeviceMsgType().equals("shuttleInit")) { continue; } - if (!socketResult.get("msgType").equals("requestMsg")) {//涓嶆槸璇锋眰鍐呭 - continue; - } + removeIdx = i; + socketResult = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg())); + break; + } - 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); + if (socketResult == null) { + return; + } - Integer code = resultBody.getInteger("code"); - //灏忚溅澶嶄綅璇锋眰 - ShuttleCommand initCommand = getInitCommand(requestId, code); - //鍙戝嚭璇锋眰 - NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class); - requestCommand(httpCommand); + 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")) { + socketResults.remove(removeIdx); - log.info(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort())); - OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort())); - break; - } + Integer code = resultBody.getInteger("code"); + //灏忚溅澶嶄綅璇锋眰 + ShuttleCommand initCommand = getInitCommand(requestId, code); + //鍙戝嚭璇锋眰 + NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class); + requestCommand(httpCommand); + + log.info(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort())); + OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戣溅澶嶄綅涓婃姤 ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort())); } } catch (Exception e) { e.printStackTrace(); @@ -479,9 +460,9 @@ try { //鍙戝嚭璇锋眰 NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - JSONObject requestToken = requestCommand(httpCommand); + String resultKey = requestCommand(httpCommand); //鏌ヨ璇锋眰缁撴灉 - JSONObject result = queryCommandStatus(requestToken.getString("requestType"), requestToken.getString("taskId")); + JSONObject result = queryCommandStatus(resultKey); if (result == null) { return response;//璇锋眰澶辫触 } @@ -502,9 +483,9 @@ try { //鍙戝嚭璇锋眰 NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - JSONObject requestToken = requestCommand(httpCommand); + String resultKey = requestCommand(httpCommand); //鏌ヨ璇锋眰缁撴灉 - JSONObject result = queryCommandStatus(requestToken.getString("requestType"), requestToken.getString("taskId")); + JSONObject result = queryCommandStatus(resultKey); if (result == null) { return response;//璇锋眰澶辫触 } @@ -524,9 +505,9 @@ try { //鍙戝嚭璇锋眰 NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - JSONObject requestToken = requestCommand(httpCommand); + String resultKey = requestCommand(httpCommand); //鏌ヨ璇锋眰缁撴灉 - JSONObject result = queryCommandStatus(requestToken.getString("requestType"), requestToken.getString("taskId")); + JSONObject result = queryCommandStatus(resultKey); if (result == null) { return response;//璇锋眰澶辫触 } @@ -554,9 +535,9 @@ try { //鍙戝嚭璇锋眰 NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); - JSONObject requestToken = requestCommand(httpCommand); + String resultKey = requestCommand(httpCommand); //鏌ヨ璇锋眰缁撴灉 - JSONObject result = queryCommandStatus(requestToken.getString("requestType"), requestToken.getString("taskId")); + JSONObject result = queryCommandStatus(resultKey); if (result == null) { return response;//璇锋眰澶辫触 } @@ -1127,7 +1108,7 @@ } //鍙戝嚭璇锋眰 - private JSONObject requestCommand(NyShuttleHttpCommand httpCommand) throws IOException { + private String requestCommand(NyShuttleHttpCommand httpCommand) throws IOException { try { DeviceMsgUtils deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class); if (deviceMsgUtils == null) { @@ -1143,33 +1124,19 @@ commandMsgModel.setDeviceType(String.valueOf(SlaveType.Shuttle)); commandMsgModel.setCommand(data); String key = deviceMsgUtils.sendDeviceCommand(SlaveType.Shuttle, deviceConfig.getDeviceNo(), commandMsgModel); - - 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鍙兘鍙栫┖锛屼笉鎶ラ敊锛屾甯告儏鍐� - } - - JSONObject result = new JSONObject(); - result.put("requestType", requestType); - result.put("taskId", taskId); - return result; + return key; }catch (Exception e) { e.printStackTrace(); } return null; } - private JSONObject queryCommandStatus(String requestType, String taskId) { + private JSONObject queryCommandStatus(String resultKey) { // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� // 灏濊瘯50娆� JSONObject result = null; for (int i = 0; i < 50; i++) { - result = getRequestBody(requestType, taskId); + result = getRequestBody(resultKey); if (result == null) { try { Thread.sleep(500); diff --git a/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java b/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java deleted file mode 100644 index e795ce3..0000000 --- a/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java +++ /dev/null @@ -1,452 +0,0 @@ -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.action.ShuttleAction; -import com.zy.core.cache.OutputQueue; -import com.zy.core.enums.ForkLiftIoModeType; -import com.zy.core.enums.ForkLiftProtocolStatusType; -import com.zy.core.enums.ForkLiftTaskModeType; -import com.zy.core.enums.RedisKeyType; -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 ZyForkLiftThread implements ForkLiftThread { - - private ForkLiftSlave slave; - private ForkLiftProtocol forkLiftProtocol; - private RedisUtil redisUtil; - private SiemensS7Net siemensS7Net; - private List<ForkLiftStaProtocol> forkLiftStaProtocols = new ArrayList<>(); - - public ZyForkLiftThread(ForkLiftSlave slave, RedisUtil redisUtil) { - this.slave = slave; - this.redisUtil = redisUtil; - //鍒濆鍖栫珯鐐� - 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; - siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); - siemensS7Net.setRack(slave.getRack().byteValue()); - siemensS7Net.setSlot(slave.getSlot().byteValue()); - OperateResult connect = siemensS7Net.ConnectServer(); - if(connect.IsSuccess){ - result = true; - OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - News.info("璐у弶鎻愬崌鏈鸿繛鎺ユ垚鍔� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - } else { - OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); - News.error("璐у弶鎻愬崌鏈鸿繛鎺ュけ璐ワ紒锛侊紒 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - } - // siemensS7Net.ConnectClose(); - return result; - } - - @Override - public void close() { - - } - - @Override - public void run() { - News.info("{}鍙疯揣鍙夋彁鍗囨満绾跨▼鍚姩", slave.getId()); - this.connect(); - while (true) { - try { - read(); - Thread.sleep(200); - execute(); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - private void execute() { - ForkLiftAction forkLiftAction = SpringUtils.getBean(ForkLiftAction.class); - 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 = siemensS7Net.Read("DB101.0", (short) 16); - 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)); - - //************琛ュ厖鎵╁睍瀛楁************* - 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 = siemensS7Net.Read("DB102.0", (short) 8); - 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; - } - - ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i); - boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result2.Content, i * 2, 2); - forkLiftStaProtocol.setHasTray(status1[0]); - forkLiftStaProtocol.setHasCar(status1[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); - - //鏇存柊閲囬泦鏃堕棿 - 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 = siemensS7Net.Write("DB103.0", array); - if (result.IsSuccess) { - OperateResult result2 = siemensS7Net.Write("DB103.8", 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 = siemensS7Net.Write("DB103.0", array); - if (result.IsSuccess) { - OperateResult result2 = siemensS7Net.Write("DB103.8", 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.getPick();//鍙栬揣鏁版嵁 - array[3] = command.getPut();//鏀捐揣鏁版嵁 - OperateResult result = siemensS7Net.Write("DB103.0", array); - if (result.IsSuccess) { - OperateResult result2 = siemensS7Net.Write("DB103.8", command.getConfirm()); - if (result2.IsSuccess) { - response.setResult(true); - } - } - return response; - } - - @Override - public CommandResponse reset() { - CommandResponse response = new CommandResponse(false); - OperateResult result = siemensS7Net.Write("DB103.10", (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 = siemensS7Net.Write("DB103.12", 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 { - - } -} diff --git a/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread2.java b/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread2.java new file mode 100644 index 0000000..84c661e --- /dev/null +++ b/src/main/java/com/zy/core/thread/impl/ZyForkLiftThread2.java @@ -0,0 +1,451 @@ +//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.enums.ForkLiftIoModeType; +//import com.zy.core.enums.ForkLiftProtocolStatusType; +//import com.zy.core.enums.ForkLiftTaskModeType; +//import com.zy.core.enums.RedisKeyType; +//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 ZyForkLiftThread2 implements ForkLiftThread { +// +// private ForkLiftSlave slave; +// private ForkLiftProtocol forkLiftProtocol; +// private RedisUtil redisUtil; +// private SiemensS7Net siemensS7Net; +// private List<ForkLiftStaProtocol> forkLiftStaProtocols = new ArrayList<>(); +// +// public ZyForkLiftThread2(ForkLiftSlave slave, RedisUtil redisUtil) { +// this.slave = slave; +// this.redisUtil = redisUtil; +// //鍒濆鍖栫珯鐐� +// 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; +// siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); +// siemensS7Net.setRack(slave.getRack().byteValue()); +// siemensS7Net.setSlot(slave.getSlot().byteValue()); +// OperateResult connect = siemensS7Net.ConnectServer(); +// if(connect.IsSuccess){ +// result = true; +// OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); +// News.info("璐у弶鎻愬崌鏈鸿繛鎺ユ垚鍔� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); +// } else { +// OutputQueue.FORKLIFT.offer(MessageFormat.format( "銆恵0}銆戣揣鍙夋彁鍗囨満杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); +// News.error("璐у弶鎻愬崌鏈鸿繛鎺ュけ璐ワ紒锛侊紒 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); +// } +// // siemensS7Net.ConnectClose(); +// return result; +// } +// +// @Override +// public void close() { +// +// } +// +// @Override +// public void run() { +// News.info("{}鍙疯揣鍙夋彁鍗囨満绾跨▼鍚姩", slave.getId()); +// this.connect(); +// while (true) { +// try { +// read(); +// Thread.sleep(200); +// execute(); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// } +// +// private void execute() { +// ForkLiftAction forkLiftAction = SpringUtils.getBean(ForkLiftAction.class); +// 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 = siemensS7Net.Read("DB101.0", (short) 16); +// 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)); +// +// //************琛ュ厖鎵╁睍瀛楁************* +// 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 = siemensS7Net.Read("DB102.0", (short) 8); +// 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; +// } +// +// ForkLiftStaProtocol forkLiftStaProtocol = forkLiftStaProtocols.get(i); +// boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result2.Content, i * 2, 2); +// forkLiftStaProtocol.setHasTray(status1[0]); +// forkLiftStaProtocol.setHasCar(status1[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); +// +// //鏇存柊閲囬泦鏃堕棿 +// 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 = siemensS7Net.Write("DB103.0", array); +// if (result.IsSuccess) { +// OperateResult result2 = siemensS7Net.Write("DB103.8", 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 = siemensS7Net.Write("DB103.0", array); +// if (result.IsSuccess) { +// OperateResult result2 = siemensS7Net.Write("DB103.8", 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.getPick();//鍙栬揣鏁版嵁 +// array[3] = command.getPut();//鏀捐揣鏁版嵁 +// OperateResult result = siemensS7Net.Write("DB103.0", array); +// if (result.IsSuccess) { +// OperateResult result2 = siemensS7Net.Write("DB103.8", command.getConfirm()); +// if (result2.IsSuccess) { +// response.setResult(true); +// } +// } +// return response; +// } +// +// @Override +// public CommandResponse reset() { +// CommandResponse response = new CommandResponse(false); +// OperateResult result = siemensS7Net.Write("DB103.10", (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 = siemensS7Net.Write("DB103.12", 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 { +// +// } +//} diff --git a/src/main/java/com/zy/core/utils/DeviceMsgUtils.java b/src/main/java/com/zy/core/utils/DeviceMsgUtils.java index c6c26fc..7a4f8b3 100644 --- a/src/main/java/com/zy/core/utils/DeviceMsgUtils.java +++ b/src/main/java/com/zy/core/utils/DeviceMsgUtils.java @@ -84,6 +84,7 @@ public String sendDeviceCommand(SlaveType deviceType, Integer deviceId, DeviceCommandMsgModel command) { String key = parseDeviceCommandMsgKey(deviceType, deviceId) + System.currentTimeMillis(); + command.setResultKey(key); redisUtil.set(key, command, 60 * 60 * 24); return key; } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4b685fd..c20a4eb 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -17,7 +17,7 @@ mvc: static-path-pattern: /** redis: - host: 127.0.0.1 + host: 192.168.4.77 port: 6379 database: 0 # password: 123456 @@ -46,16 +46,16 @@ # 璇诲彇鏁版嵁鍚庤嚜鍔ㄥ垹闄� destroyAfterReading: true -# 涓嬩綅鏈洪厤缃� -wcs-slave: - # 鍥涘悜绌挎杞�1 - shuttle[0]: - id: 1 - ip: 10.10.20.11 - port: 8888 - rack: 0 - slot: 0 - threadImpl: NyShuttleThread +## 涓嬩綅鏈洪厤缃� +#wcs-slave: +# # 鍥涘悜绌挎杞�1 +# shuttle[0]: +# id: 1 +# ip: 10.10.20.11 +# port: 8888 +# rack: 0 +# slot: 0 +# threadImpl: NyShuttleThread # # 鍥涘悜绌挎杞�2 # shuttle[1]: # id: 2 diff --git a/src/main/resources/mapper/BasLiftMapper.xml b/src/main/resources/mapper/BasLiftMapper.xml index 484f672..3975d12 100644 --- a/src/main/resources/mapper/BasLiftMapper.xml +++ b/src/main/resources/mapper/BasLiftMapper.xml @@ -11,21 +11,7 @@ <result column="memo" property="memo" /> <result column="pak_mk" property="pakMk" /> <result column="point" property="point" /> - <result column="model" property="model" /> - <result column="busy" property="busy" /> - <result column="front_overrun" property="frontOverrun" /> - <result column="back_overrun" property="backOverrun" /> - <result column="left_overrun" property="leftOverrun" /> - <result column="right_overrun" property="rightOverrun" /> - <result column="over_height" property="overHeight" /> - <result column="over_weight" property="overWeight" /> - <result column="has_tray" property="hasTray" /> - <result column="has_car" property="hasCar" /> - <result column="device_error" property="deviceError" /> - <result column="task_address" property="taskAddress" /> - <result column="dist_address" property="distAddress" /> - <result column="complete_task_no" property="completeTaskNo" /> - <result column="lev" property="lev" /> + <result column="station_list" property="stationList" /> </resultMap> diff --git a/src/main/webapp/static/js/basLift/basLift.js b/src/main/webapp/static/js/basLift/basLift.js index cdef2d8..80ae9a6 100644 --- a/src/main/webapp/static/js/basLift/basLift.js +++ b/src/main/webapp/static/js/basLift/basLift.js @@ -25,31 +25,12 @@ ,{field: 'liftNo', align: 'center',title: '鎻愬崌鏈哄彿'} ,{field: 'status', align: 'center',title: '褰撳墠浠诲姟鐘舵��'} ,{field: 'wrkNo', align: 'center',title: '浠诲姟鍙�'} + ,{field: 'point', align: 'center',title: '鎻愬崌鏈哄潗鏍�'} + ,{field: 'stationList', align: 'center',title: '绔欑偣鍒楄〃'} // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'} // ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'} ,{field: 'memo', align: 'center',title: '澶囨敞'} - ,{field: 'pakMk$', align: 'center',title: '浣滀笟鏍囪'} - ,{field: 'liftLock$', align: 'center',title: '鎻愬崌鏈洪攣瀹�'} - ,{field: 'positionArrivalFeedback', align: 'center',title: '浣嶇疆鍒拌揪鍙嶉'} - ,{field: 'ready$', align: 'center',title: '鍑嗗灏辩华'} - ,{field: 'running', align: 'center',title: '杩愯涓�'} - ,{field: 'mode$', align: 'center',title: '鑱旀満/鍗曟満'} - // ,{field: 'lineFrontHasStock', align: 'center',title: '杈撻�佺嚎鍓嶇鍏夌數鏈夎揣'} - // ,{field: 'forwardRotationFeedback', align: 'center',title: '杈撻�佺嚎姝h浆鍙嶉'} - // ,{field: 'reverseFeedback', align: 'center',title: '杈撻�佺嚎鍙嶈浆鍙嶉'} - // ,{field: 'motorOverload', align: 'center',title: '杈撻�佺嚎鐢垫満杩囪浇'} - // ,{field: 'lineEndHasStock', align: 'center',title: '杈撻�佺嚎鏈鍏夌數鏈夎揣'} - // ,{field: 'inConveyLineCardTrayAlarm', align: 'center',title: '杩涜緭閫佺嚎鍗℃墭鐩樻姤璀�'} - // ,{field: 'outConveyLineCardTrayAlarm', align: 'center',title: '鍑鸿緭閫佺嚎鍗℃墭鐩樻姤璀�'} - // ,{field: 'platPositionDeviationAlarm', align: 'center',title: '骞冲彴浣嶇疆鍋忓樊鎶ヨ'} - // ,{field: 'platTorqueDeviationAlarm', align: 'center',title: '骞冲彴鎵煩鍋忓樊鎶ヨ'} - // ,{field: 'platShuttleCheck', align: 'center',title: '骞冲彴鍥涘悜杞︽娴�'} - ,{field: 'notReady$', align: 'center',title: '鏈氨缁姸鎬�'} - // ,{field: 'servoError1', align: 'center',title: '浼烘湇1閿欒'} - // ,{field: 'servoError2', align: 'center',title: '浼烘湇2閿欒'} - // ,{field: 'servoError3', align: 'center',title: '浼烘湇3閿欒'} - // ,{field: 'servoError4', align: 'center',title: '浼烘湇4閿欒'} - // ,{field: 'liftActualSpeed', align: 'center',title: '鎻愬崌鏈哄疄闄呴�熷害鍙嶉'} + // ,{field: 'pakMk', align: 'center',title: '浣滀笟鏍囪'} ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120} ]], diff --git a/src/main/webapp/views/admin/basLift/basLift.html b/src/main/webapp/views/admin/basLift/basLift.html index 2d2dd95..8028c2f 100644 --- a/src/main/webapp/views/admin/basLift/basLift.html +++ b/src/main/webapp/views/admin/basLift/basLift.html @@ -79,174 +79,23 @@ </div> </div> <div class="layui-form-item"> - <label class="layui-form-label">褰撳墠浠诲姟鐘舵��: </label> + <label class="layui-form-label">鎻愬崌鏈哄潗鏍�: </label> <div class="layui-input-block"> - <input class="layui-input" name="status" placeholder="璇疯緭鍏ュ綋鍓嶄换鍔$姸鎬�"> + <input class="layui-input" name="point" placeholder="璇疯緭鍏ユ彁鍗囨満鍧愭爣"> </div> </div> <div class="layui-form-item"> - <label class="layui-form-label">浠诲姟鍙�: </label> + <label class="layui-form-label">绔欑偣鍒楄〃: </label> <div class="layui-input-block"> - <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ヤ换鍔″彿"> + <input class="layui-input" name="stationList" placeholder="璇疯緭鍏ョ珯鐐瑰垪琛�"> </div> </div> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">淇敼鏃堕棿: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">淇敼浜哄憳: </label>--> -<!-- <div class="layui-input-block cool-auto-complete">--> -<!-- <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">--> -<!-- <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>--> -<!-- <div class="cool-auto-complete-window">--> -<!-- <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">--> -<!-- <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> -<!-- </select>--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> <div class="layui-form-item"> <label class="layui-form-label">澶囨敞: </label> <div class="layui-input-block"> <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�"> </div> </div> - <div class="layui-form-item"> - <label class="layui-form-label">浣滀笟鏍囪: </label> - <div class="layui-input-block"> - <input class="layui-input" name="pakMk" placeholder="璇疯緭鍏ヤ綔涓氭爣璁�"> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">鎻愬崌鏈洪攣瀹�: </label> - <div class="layui-input-block"> - <input class="layui-input" name="liftLock" placeholder="璇疯緭鍏ユ彁鍗囨満閿佸畾"> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">浣嶇疆鍒拌揪鍙嶉: </label> - <div class="layui-input-block"> - <input class="layui-input" name="positionArrivalFeedback" placeholder="璇疯緭鍏ヤ綅缃埌杈惧弽棣�"> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">鍑嗗灏辩华: </label> - <div class="layui-input-block"> - <input class="layui-input" name="ready" placeholder="璇疯緭鍏ュ噯澶囧氨缁�"> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">杩愯涓�: </label> - <div class="layui-input-block"> - <input class="layui-input" name="running" placeholder="璇疯緭鍏ヨ繍琛屼腑"> - </div> - </div> - <div class="layui-form-item"> - <label class="layui-form-label">鑱旀満/鍗曟満: </label> - <div class="layui-input-block"> - <input class="layui-input" name="mode" placeholder="璇疯緭鍏ヨ仈鏈�/鍗曟満"> - </div> - </div> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">杈撻�佺嚎鍓嶇鍏夌數鏈夎揣: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="lineFrontHasStock" placeholder="璇疯緭鍏ヨ緭閫佺嚎鍓嶇鍏夌數鏈夎揣">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">杈撻�佺嚎姝h浆鍙嶉: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="forwardRotationFeedback" placeholder="璇疯緭鍏ヨ緭閫佺嚎姝h浆鍙嶉">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">杈撻�佺嚎鍙嶈浆鍙嶉: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="reverseFeedback" placeholder="璇疯緭鍏ヨ緭閫佺嚎鍙嶈浆鍙嶉">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">杈撻�佺嚎鐢垫満杩囪浇: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="motorOverload" placeholder="璇疯緭鍏ヨ緭閫佺嚎鐢垫満杩囪浇">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">杈撻�佺嚎鏈鍏夌數鏈夎揣: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="lineEndHasStock" placeholder="璇疯緭鍏ヨ緭閫佺嚎鏈鍏夌數鏈夎揣">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">杩涜緭閫佺嚎鍗℃墭鐩樻姤璀�: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="inConveyLineCardTrayAlarm" placeholder="璇疯緭鍏ヨ繘杈撻�佺嚎鍗℃墭鐩樻姤璀�">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">鍑鸿緭閫佺嚎鍗℃墭鐩樻姤璀�: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="outConveyLineCardTrayAlarm" placeholder="璇疯緭鍏ュ嚭杈撻�佺嚎鍗℃墭鐩樻姤璀�">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">骞冲彴浣嶇疆鍋忓樊鎶ヨ: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="platPositionDeviationAlarm" placeholder="璇疯緭鍏ュ钩鍙颁綅缃亸宸姤璀�">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">骞冲彴鎵煩鍋忓樊鎶ヨ: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="platTorqueDeviationAlarm" placeholder="璇疯緭鍏ュ钩鍙版壄鐭╁亸宸姤璀�">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">骞冲彴鍥涘悜杞︽娴�: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="platShuttleCheck" placeholder="璇疯緭鍏ュ钩鍙板洓鍚戣溅妫�娴�">--> -<!-- </div>--> -<!-- </div>--> - <div class="layui-form-item"> - <label class="layui-form-label">鏈氨缁姸鎬�: </label> - <div class="layui-input-block"> - <input class="layui-input" name="notReady" placeholder="璇疯緭鍏ユ湭灏辩华鐘舵��"> - </div> - </div> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">浼烘湇1閿欒: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="servoError1" placeholder="璇疯緭鍏ヤ己鏈�1閿欒">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">浼烘湇2閿欒: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="servoError2" placeholder="璇疯緭鍏ヤ己鏈�2閿欒">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">浼烘湇3閿欒: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="servoError3" placeholder="璇疯緭鍏ヤ己鏈�3閿欒">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">浼烘湇4閿欒: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="servoError4" placeholder="璇疯緭鍏ヤ己鏈�4閿欒">--> -<!-- </div>--> -<!-- </div>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label">鎻愬崌鏈哄疄闄呴�熷害鍙嶉: </label>--> -<!-- <div class="layui-input-block">--> -<!-- <input class="layui-input" name="liftActualSpeed" placeholder="璇疯緭鍏ユ彁鍗囨満瀹為檯閫熷害鍙嶉">--> -<!-- </div>--> -<!-- </div>--> - </div> </div> <hr class="layui-bg-gray"> -- Gitblit v1.9.1