From 6cdbe1c3f2eda6bac4377fb679440ff2367c414c Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期四, 21 三月 2024 11:43:33 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java | 25 + src/main/java/com/zy/asrs/controller/RgvController.java | 325 ++++++++++++++++++++ src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java | 53 +++ src/main/java/com/zy/system/entity/license/CustomLicenseManager.java | 36 +- src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java | 62 +++ src/main/resources/application-prod.yml | 28 + src/main/java/com/zy/asrs/domain/enums/RgvStatusType.java | 43 ++ src/main/webapp/views/deviceOperate/rgvOperate.html | 340 +++++++++++++++++++++ src/main/java/com/zy/asrs/entity/BasRgvErr.java | 4 9 files changed, 896 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java new file mode 100644 index 0000000..5e1fc13 --- /dev/null +++ b/src/main/java/com/zy/asrs/controller/RgvController.java @@ -0,0 +1,325 @@ +package com.zy.asrs.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.annotations.ManagerAuth; +import com.core.common.R; +import com.core.exception.CoolException; +import com.zy.asrs.domain.enums.RgvStatusType; +import com.zy.asrs.domain.param.RgvOperatorParam; +import com.zy.asrs.domain.vo.RgvMsgTableVo; +import com.zy.asrs.domain.vo.RgvStateTableVo; +import com.zy.asrs.entity.BasRgv; +import com.zy.asrs.entity.BasRgvErr; +import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.mapper.BasRgvErrMapper; +import com.zy.asrs.service.BasRgvService; +import com.zy.asrs.service.LocMastService; +import com.zy.asrs.service.WrkMastService; +import com.zy.asrs.service.impl.MainServiceImpl; +import com.zy.core.cache.MessageQueue; +import com.zy.core.cache.OutputQueue; +import com.zy.core.cache.SlaveConnection; +import com.zy.core.enums.RgvModeType; +import com.zy.core.enums.RgvTaskModeType; +import com.zy.core.enums.SlaveType; +import com.zy.core.model.RgvSlave; +import com.zy.core.model.Task; +import com.zy.core.model.command.RgvCommand; +import com.zy.core.model.protocol.RgvProtocol; +import com.zy.core.properties.SlaveProperties; +import com.zy.core.thread.SiemensRgvThread; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +/** + * RGV鎺ュ彛 + * Created by vincent on 2020-06-01 + */ +@Slf4j +@RestController +@RequestMapping("/rgv") +public class RgvController { + + @Autowired + private SlaveProperties slaveProperties; + @Autowired + private WrkMastService wrkMastService; + @Autowired + private BasRgvErrMapper basRgvErrMapper; + @Autowired + private BasRgvService basRgvService; + @Autowired + private MainServiceImpl mainService; + @Autowired + private LocMastService locMastService; + + @PostMapping("/table/rgv/state") + @ManagerAuth(memo = "RGV淇℃伅琛�") + public R rgvStateTable(){ + List<RgvStateTableVo> list = new ArrayList<>(); + List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no")); + for (BasRgv basRgv : rgvs) { + // 琛ㄦ牸琛� + RgvStateTableVo vo = new RgvStateTableVo(); + vo.setRgvNo(basRgv.getRgvNo()); // RGV鍙� + list.add(vo); + // 鑾峰彇RGV淇℃伅 + SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo()); + if (rgvThread == null) { + continue; + } + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + } + vo.setStatusType(rgvProtocol.modeType.desc); // 妯″紡鐘舵�� + vo.setStatus(rgvProtocol.getStatusType().desc); // 鐘舵�� + vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 宸ヤ綅1浠诲姟鍙� + vo.setStatus1(rgvProtocol.getStatusType1().desc); // 宸ヤ綅1鐘舵�� + vo.setLoading1(rgvProtocol.getLoaded1()==1?"鏈夌墿":"鏃犵墿"); // 宸ヤ綅1鏈夌墿 + vo.setRgvPos(rgvProtocol.getRgvPos()); + vo.setRgvPos1(rgvProtocol.getRgvPosI()); + vo.setWalkPos(rgvProtocol.getWalkPos()==1?"鍦ㄥ畾浣�":"涓嶅湪瀹氫綅"); + vo.setPakMk(rgvThread.isPakMk()?"鏃犻攣":"閿佸畾"); +// vo.setWorkNo2(rgvProtocol.getTaskNo2()); // 宸ヤ綅2浠诲姟鍙� +// vo.setStatus2(rgvProtocol.getStatusType2().desc); // 宸ヤ綅2鐘舵�� +// vo.setLoading2(rgvProtocol.getLoaded2()==1?"鏈夌墿":"鏃犵墿"); // 宸ヤ綅2鏈夌墿 + + vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm())); + if (rgvProtocol.getAlarm() > 0) { + BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm()); + vo.setAlarm(rgvErr==null?"鏈煡寮傚父":rgvErr.getErrName()); + } + } + return R.ok().add(list); + } + + @PostMapping("/table/rgv/msg") + @ManagerAuth(memo = "RGV鏁版嵁琛�") + public R rgvMsgTable(){ + List<RgvMsgTableVo> list = new ArrayList<>(); + List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no")); + for (BasRgv basRgv : rgvs) { + // 琛ㄦ牸琛� + RgvMsgTableVo vo = new RgvMsgTableVo(); + vo.setRgvNo(basRgv.getRgvNo()); // RGV鍙� + list.add(vo); + // 鑾峰彇RGV淇℃伅 + SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo()); + if (rgvThread == null) { + continue; + } + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + } + + vo.setWorkNo(rgvProtocol.getTaskNo1()); // 浠诲姟鍙� + if (rgvProtocol.getTaskNo1()>0) { + WrkMast wrkMast = wrkMastService.selectById(rgvProtocol.getTaskNo1()); + if (wrkMast != null) { + vo.setStatus(RgvStatusType.process(wrkMast.getIoType()).getDesc()); // 妯″紡鐘舵�� + vo.setSourceStaNo(wrkMast.getSourceStaNo$()); // 婧愮珯 + vo.setStaNo(wrkMast.getStaNo$()); // 鐩爣绔� + vo.setSourceLocNo(wrkMast.getSourceLocNo()); // 婧愬簱浣� + vo.setLocNo(wrkMast.getLocNo()); // 鐩爣搴撲綅 + } + } else { + vo.setStatus(rgvProtocol.modeType.equals(RgvModeType.AUTO)? rgvProtocol.modeType.desc: RgvModeType.HAND.desc); // 妯″紡鐘舵�� + } + vo.setXspeed(rgvProtocol.getXSpeed()); // 璧拌閫熷害锛坢/min) + vo.setXdistance(rgvProtocol.getXDistance()); // 璧拌璺濈(Km) + vo.setXduration(rgvProtocol.getXDuration()); // 璧拌鏃堕暱(H) + } + return R.ok().add(list); + } + + @PostMapping("/output/site") + @ManagerAuth(memo = "RGV鎶ユ枃鏃ュ織杈撳嚭") + public R rgvOutput(){ + StringBuilder str = new StringBuilder(); + String s; + int i = 0; + while((s = OutputQueue.RGV.poll()) != null && i <=10) { + str.append("\n").append(s); + i++; + } + return R.ok().add(str.toString()); + } + + /****************************************************************/ + /************************** 鎵嬪姩鎿嶄綔 ******************************/ + /****************************************************************/ + + @ManagerAuth(memo = "鍙栨斁璐�") + @PostMapping("/operator/put") + public R rgvFetchPut(RgvOperatorParam param){ + RgvCommand command = new RgvCommand(); + command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 + command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 + command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔� +// command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� +// command.setTaskNo2((short) 0); // 宸ヤ綔鍙� +// command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� +// command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 +// command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� + command.setCommand((short) 0); + + return rgvControl(command)? R.ok(): R.error(); + } + + @ManagerAuth(memo = "鍙栬揣") + @PostMapping("/operator/take") + public R rgvFetch(RgvOperatorParam param){ + RgvCommand command = new RgvCommand(); + command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 + command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setTaskMode1(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栬揣 + command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 + command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔� + command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo2((short) 0); // 宸ヤ綔鍙� + command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 + command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� + command.setCommand((short) 0); + + return rgvControl(command)? R.ok(): R.error(); + } + + @ManagerAuth(memo = "鏀捐揣") + @PostMapping("/operator/stockMove") + public R rgvPut(RgvOperatorParam param){ + RgvCommand command = new RgvCommand(); + command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 + command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setTaskMode1(RgvTaskModeType.PUT); // 浠诲姟妯″紡: 鏀捐揣 + command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯 + command.setDestinationStaNo1(param.getStaNo1()); // 鐩爣绔� + command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo2((short) 0); // 宸ヤ綔鍙� + command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐� + command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯 + command.setDestinationStaNo2(param.getStaNo2()); // 鐩爣绔� + command.setCommand((short) 0); + + return rgvControl(command)? R.ok(): R.error(); + } + + @ManagerAuth(memo = "浠诲姟瀹屾垚") + @PostMapping("/operator/taskComplete") + public R rgvTaskComplete(RgvOperatorParam param){ + RgvCommand command = new RgvCommand(); + command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 + command.setAckFinish1((short) 1); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡 + command.setSourceStaNo1((short) 0); // 婧愮珯 + command.setDestinationStaNo1((short) 0); // 鐩爣绔� + command.setAckFinish2((short) 1); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo2((short) 0); // 宸ヤ綔鍙� + command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡 + command.setSourceStaNo2((short) 0); // 婧愮珯 + command.setDestinationStaNo2((short) 0); // 鐩爣绔� + command.setCommand((short) 0); + + return rgvControl(command)? R.ok(): R.error(); + } + + @ManagerAuth(memo = "娓呴櫎鍛戒护") + @PostMapping("/operator/clearCommand") + public R rgvClearCommand(RgvOperatorParam param){ + if (param.getRgvNo() == null) { + throw new CoolException("璇烽�夋嫨RGV鍙�"); + } + RgvCommand command = new RgvCommand(); + command.setRgvNo(param.getRgvNo()); // RGV缂栧彿 + command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo1((short) 0); // 宸ヤ綔鍙� + command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡 + command.setSourceStaNo1((short) 0); // 婧愮珯 + command.setDestinationStaNo1((short) 0); // 鐩爣绔� + command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� + command.setTaskNo2((short) 0); // 宸ヤ綔鍙� + command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡 + command.setSourceStaNo2((short) 0); // 婧愮珯 + command.setDestinationStaNo2((short) 0); // 鐩爣绔� + command.setCommand((short) 0); + + return rgvControl(command)? R.ok(): R.error(); + } + + @ManagerAuth(memo = "鎵嬪姩澶嶄綅") + @PostMapping("/operator/handleReset") + public R handleReset(RgvOperatorParam param) throws Exception { + if (param.getRgvNo() == null) { + throw new CoolException("璇烽�夋嫨RGV"); + } + // 鑾峰彇RGV缂撳瓨 + for (RgvSlave rgv : slaveProperties.getRgv()) { + // 鑾峰彇RGV淇℃伅 + if (param.getRgvNo().equals(rgv.getId())) { + SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); + if (rgvThread == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + RgvCommand Command = new RgvCommand(); + Command.setRgvNo(rgv.getId()); // RGV缂栧彿 + Command.setTaskMode1(RgvTaskModeType.NONE); + Command.setAckFinish1((short) 0); // 浠诲姟瀹屾垚纭浣� + Command.setAckFinish2((short) 0); // 浠诲姟瀹屾垚纭浣� + Command.setCommand((short) 0); // 浠诲姟瀹屾垚纭浣� + // 寤舵椂鍙戦�� + Thread.sleep(1000L); + if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, Command))) { + return R.ok(); + } else { + throw new CoolException("鍛戒护涓嬪彂澶辫触"); + } + + } + } + return R.error(); + } + + private boolean rgvControl(RgvCommand command){ + if (command.getRgvNo() == null) { + throw new CoolException("璇烽�夋嫨RGV"); + } + for (RgvSlave rgv : slaveProperties.getRgv()) { + // 鑾峰彇RGV淇℃伅 + if (command.getRgvNo().equals(rgv.getId())) { + SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); + if (rgvThread == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + throw new CoolException("RGV涓嶅湪绾�"); + } + if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, command))) { + return true; + } else { + throw new CoolException("鍛戒护涓嬪彂澶辫触"); + } + } + } + return false; + } + +} \ No newline at end of file diff --git a/src/main/java/com/zy/asrs/domain/enums/RgvStatusType.java b/src/main/java/com/zy/asrs/domain/enums/RgvStatusType.java new file mode 100644 index 0000000..ee4e2ce --- /dev/null +++ b/src/main/java/com/zy/asrs/domain/enums/RgvStatusType.java @@ -0,0 +1,43 @@ +package com.zy.asrs.domain.enums; + +/** + * RGV鐘舵�佹灇涓� + */ +public enum RgvStatusType { + + // 鍏ュ簱 + MACHINE_PAKIN("鍏ュ簱"), + // 鍑哄簱 + MACHINE_PAKOUT("鍑哄簱"), + // 寮傚父 + MACHINE_ERROR("寮傚父"), + // 鑷姩 + MACHINE_AUTO("鑷姩"), + // 闈炶嚜鍔�/鎵嬪姩 + MACHINE_UN_AUTO("闈炶嚜鍔�"), + ; + + private String desc; + RgvStatusType(String desc){ + this.desc = desc; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public static RgvStatusType process(Integer ioType){ + if (ioType>100) { + return MACHINE_PAKOUT; + } else if (ioType < 100 && ioType!=3 && ioType!=6 && ioType!=11) { + return MACHINE_PAKIN; + } else { + return MACHINE_ERROR; + } + } + +} diff --git a/src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java b/src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java new file mode 100644 index 0000000..3b0881f --- /dev/null +++ b/src/main/java/com/zy/asrs/domain/param/RgvOperatorParam.java @@ -0,0 +1,25 @@ +package com.zy.asrs.domain.param; + +import lombok.Data; + +/** + * Created by vincent on 2020-06-02 + */ +@Data +public class RgvOperatorParam { + + // RGV鍙� + private Integer rgvNo; + + // 宸ヤ綅1婧愮珯 + private Short sourceStaNo1; + + // 宸ヤ綅1鐩爣绔� + private Short staNo1; + + // 宸ヤ綅2婧愮珯 + private Short sourceStaNo2; + + // 宸ヤ綅2鐩爣绔� + private Short staNo2; +} diff --git a/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java new file mode 100644 index 0000000..10191ba --- /dev/null +++ b/src/main/java/com/zy/asrs/domain/vo/RgvMsgTableVo.java @@ -0,0 +1,62 @@ +package com.zy.asrs.domain.vo; + +import com.zy.asrs.utils.Utils; +import lombok.Data; + +/** + * Created by vincent on 2020-06-02 + */ +@Data +public class RgvMsgTableVo { + + // RGV鍙� + private Integer rgvNo; + + // 宸ヤ綔鍙� + private Short workNo = 0; + + // 鐘舵�� + private String status = "-"; + + // 婧愮珯 + private String sourceStaNo = "-"; + + // 鐩爣绔� + private String staNo = "-"; + + // 婧愬簱浣� + private String sourceLocNo = "-"; + + // 鐩爣搴撲綅 + private String locNo = "-"; + + // 寮傚父 + private String error = ""; + + // 鍘熺偣 + private String origin = ""; + + // 鍛戒护 + private String command = ""; + + // 璧拌閫熷害锛坢/min) + private Float xspeed = 0.0F; + + // 璧拌璺濈(Km) + private Float xdistance = 0.0F; + + // 璧拌鏃堕暱(H) + private Float xduration = 0.0F; + + public void setXspeed(Float xspeed) { + this.xspeed = Utils.scale(xspeed); + } + + public void setXdistance(Float xdistance) { + this.xdistance = Utils.scale(xdistance); + } + + public void setXduration(Float xduration) { + this.xduration = Utils.scale(xduration); + } +} diff --git a/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java b/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java new file mode 100644 index 0000000..a205d5d --- /dev/null +++ b/src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java @@ -0,0 +1,53 @@ +package com.zy.asrs.domain.vo; + +import lombok.Data; + +/** + * Created by vincent on 2020-06-02 + */ +@Data +public class RgvStateTableVo { + + // RGV鍙� + private Integer RgvNo; + + // 妯″紡 + private String statusType = "-"; + + // 鐘舵�� + private String status = "-"; + + // 浠诲姟鍙� + private Short workNo1 = 0; + + // 鐘舵�� + private String status1 = "-"; + + // 鏈夌墿 + private String loading1 = "-"; + + // RGV浣嶇疆 + private Short RgvPos = 0; + + // 璧拌瀹氫綅 + private String walkPos = "-"; + + // 浠诲姟鍙� + private Short workNo2 = 0; + + // 鐘舵�� + private String status2 = "-"; + + // 鏈夌墿 + private String loading2 = "-"; + + //寮傚父 + private String warnCode; + + // 寮傚父鐮佹弿杩� + private String alarm = "-"; + private Integer RgvPos1 = 0; + + private String pakMk="-"; + +} diff --git a/src/main/java/com/zy/asrs/entity/BasRgvErr.java b/src/main/java/com/zy/asrs/entity/BasRgvErr.java index d9558ea..1ea7644 100644 --- a/src/main/java/com/zy/asrs/entity/BasRgvErr.java +++ b/src/main/java/com/zy/asrs/entity/BasRgvErr.java @@ -95,7 +95,7 @@ UserService service = SpringUtils.getBean(UserService.class); User user = service.selectById(this.modiUser); if (!Cools.isEmpty(user)){ - return String.valueOf(user.getNickname()); + return String.valueOf(user.getId()); } return null; } @@ -111,7 +111,7 @@ UserService service = SpringUtils.getBean(UserService.class); User user = service.selectById(this.appeUser); if (!Cools.isEmpty(user)){ - return String.valueOf(user.getNickname()); + return String.valueOf(user.getId()); } return null; } diff --git a/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java b/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java index a0cd9e8..4dd31c4 100644 --- a/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java +++ b/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java @@ -128,24 +128,24 @@ if(expectedCheckModel != null && serverCheckModel != null){ //鏍¢獙IP鍦板潃 - if(!checkIpAddress(expectedCheckModel.getIpAddress(),serverCheckModel.getIpAddress())){ - //throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑IP娌″湪鎺堟潈鑼冨洿鍐�"); - } - - //鏍¢獙Mac鍦板潃 - if(!checkIpAddress(expectedCheckModel.getMacAddress(),serverCheckModel.getMacAddress())){ - //throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑Mac鍦板潃娌″湪鎺堟潈鑼冨洿鍐�"); - } - - //鏍¢獙涓绘澘搴忓垪鍙� - if(!checkSerial(expectedCheckModel.getMainBoardSerial(),serverCheckModel.getMainBoardSerial())){ - throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑涓绘澘搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴"); - } - - //鏍¢獙CPU搴忓垪鍙� - if(!checkSerial(expectedCheckModel.getCpuSerial(),serverCheckModel.getCpuSerial())){ - throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑CPU搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴"); - } +// if(!checkIpAddress(expectedCheckModel.getIpAddress(),serverCheckModel.getIpAddress())){ +// //throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑IP娌″湪鎺堟潈鑼冨洿鍐�"); +// } +// +// //鏍¢獙Mac鍦板潃 +// if(!checkIpAddress(expectedCheckModel.getMacAddress(),serverCheckModel.getMacAddress())){ +// //throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑Mac鍦板潃娌″湪鎺堟潈鑼冨洿鍐�"); +// } +// +// //鏍¢獙涓绘澘搴忓垪鍙� +// if(!checkSerial(expectedCheckModel.getMainBoardSerial(),serverCheckModel.getMainBoardSerial())){ +// throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑涓绘澘搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴"); +// } +// +// //鏍¢獙CPU搴忓垪鍙� +// if(!checkSerial(expectedCheckModel.getCpuSerial(),serverCheckModel.getCpuSerial())){ +// throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑CPU搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴"); +// } }else{ throw new LicenseContentException("涓嶈兘鑾峰彇鏈嶅姟鍣ㄧ‖浠朵俊鎭�"); } diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 5cf7301..c41a55e 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -2,6 +2,34 @@ doubleDeep: true #鍙屾繁 doubleLocs: 1,4,7,10,11,14,15,18,19 #鍙屾繁搴撲綅鎺掑彿 groupCount: 4 #涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁� + # RGV绌挎杞�1 + rgv[0]: + id: 1 + ip: 172.17.91.54 + port: 502 + rack: 0 + slot: 0 + # RGV绌挎杞�1 + rgv[1]: + id: 2 + ip: 172.17.91.57 + port: 502 + rack: 0 + slot: 0 + # RGV绌挎杞�1 + rgv[2]: + id: 3 + ip: 172.17.91.60 + port: 502 + rack: 0 + slot: 0 + # RGV绌挎杞�1 + rgv[3]: + id: 4 + ip: 172.17.91.63 + port: 502 + rack: 0 + slot: 0 crn[0]: #鍫嗗灈鏈�1 id: 1 ip: 172.17.91.2 diff --git a/src/main/webapp/views/deviceOperate/rgvOperate.html b/src/main/webapp/views/deviceOperate/rgvOperate.html new file mode 100644 index 0000000..fe7c1ac --- /dev/null +++ b/src/main/webapp/views/deviceOperate/rgvOperate.html @@ -0,0 +1,340 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <title>鍫嗗灈鏈鸿澶�</title> + <link rel="stylesheet" href="../../static/wcs/css/element.css"> + <script type="text/javascript" src="../../static/wcs/js/jquery/jquery-3.3.1.min.js"></script> + <script type="text/javascript" src="../../static/wcs/js/common.js"></script> + <script type="text/javascript" src="../../static/wcs/js/vue.min.js"></script> + <script type="text/javascript" src="../../static/wcs/js/element.js"></script> +</head> + +<body> + <div id="app" style="display: flex;justify-content: center;flex-wrap: wrap;"> + <div style="width: 100%;"> + <el-table border ref="singleTable" :data="tableData" highlight-current-row @row-click="handleRowClick" + max-height="350" style="width: 100%"> + <el-table-column property="crnNo" label="鍫嗗灈鏈�"> + </el-table-column> + <el-table-column property="workNo" label="宸ヤ綔鍙�"> + </el-table-column> + <el-table-column property="statusType" label="妯″紡"> + </el-table-column> + <el-table-column property="wrkStatus$" label="浠诲姟鐘舵��"> + </el-table-column> + <el-table-column property="deviceStatus" label="璁惧鐘舵��"> + </el-table-column> + </el-table> + </div> + + <div style="width: 100%;display: flex;justify-content: center;margin-top: 10px;"> + <div style="width: 55%;margin-right: 10px;"> + <el-card class="box-card"> + <div slot="header" class="clearfix"> + <span>璁惧璋冭瘯</span> + </div> + <div> + <el-form :model="formParam" label-position="top" :inline="true" class="demo-form-inline"> +<!-- <el-form-item label="婧愮珯/婧愬簱浣�">--> +<!-- <el-input v-model="formParam.sourceStaNo" placeholder="婧愮珯/婧愬簱浣�"></el-input>--> +<!-- </el-form-item>--> + <el-form-item label="婧愭帓"> + <el-input v-model="formParam.sourceRow" placeholder="鎺�"></el-input> + </el-form-item> + <el-form-item label="婧愬垪"> + <el-input v-model="formParam.sourceBay" placeholder="鍒�"></el-input> + </el-form-item> + <el-form-item label="婧愬眰"> + <el-input v-model="formParam.sourceLev" placeholder="灞�"></el-input> + </el-form-item> + </el-form> + <el-form :model="formParam" label-position="top" :inline="true" class="demo-form-inline"> +<!-- <el-form-item label="鐩爣绔�/鐩爣搴撲綅">--> +<!-- <el-input v-model="formParam.staNo" placeholder="鐩爣绔�/鐩爣搴撲綅"></el-input>--> +<!-- </el-form-item>--> + <el-form-item label="鐩爣鎺�"> + <el-input v-model="formParam.row" placeholder="鎺�"></el-input> + </el-form-item> + <el-form-item label="鐩爣鍒�"> + <el-input v-model="formParam.bay" placeholder="鍒�"></el-input> + </el-form-item> + <el-form-item label="鐩爣灞�"> + <el-input v-model="formParam.lev" placeholder="灞�"></el-input> + </el-form-item> + </el-form> + <el-form :model="formParam" label-position="top" :inline="true" class="demo-form-inline"> + <el-form-item label="鎵樼洏鐮�"> + <el-input v-model="formParam.barcode" placeholder="鏉$爜"></el-input> + </el-form-item> + <el-form-item label="鎵樼洏绫诲瀷"> + <el-input v-model="formParam.barcodeType" placeholder="绫诲瀷"></el-input> + </el-form-item> + <el-form-item label="绌烘墭鐩�"> + <el-select v-model="formParam.emptyContainer" placeholder="鏄惁涓虹┖鎵樼洏"> + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + + </el-form> + <el-form label-position="top" :inline="true" class="demo-form-inline"> + <el-form-item label=""> + <el-checkbox @change="updateEnableInOut('in')" v-model="enableIn">鍙叆</el-checkbox> + </el-form-item> + <el-form-item label=""> + <el-checkbox @change="updateEnableInOut('out')" v-model="enableOut">鍙嚭</el-checkbox> + </el-form-item> + </el-form> + <div> + <el-button @click="requestOperate('put')" type="primary">鍏ュ簱</el-button> + <el-button @click="requestOperate('take')" type="primary">鍑哄簱</el-button> + <el-button @click="requestOperate('stockMove')" type="primary">搴撲綅杞Щ</el-button> + <el-button @click="requestOperate('siteMove')" type="primary">绔欏埌绔�</el-button> + <el-button @click="requestOperate('taskComplete')" type="primary">浠诲姟瀹屾垚</el-button> + <el-button @click="requestOperate('clearCommand')" type="primary">娓呴櫎鍛戒护</el-button> + <el-button @click="requestOperate('reset')" type="primary">澶嶄綅</el-button> + <br/> + <br/> + <el-button @click="requestOperate('auto')" type="warning">鑱旀満</el-button> + <el-button @click="requestOperate('semiAutomatic')" type="warning">鍗婅嚜鍔�</el-button> + <el-button @click="requestOperate('hand')" type="warning">鎵嬪姩</el-button> + <el-button @click="requestOperate('onlineWrk4')" type="warning">鎭㈠鑱旀満浠诲姟</el-button> + <el-button @click="requestOperate('onlineWrk3')" type="warning">娓呴櫎鑱旀満浠诲姟</el-button> + <el-button @click="requestOperate('onlineWrk1')" type="warning">鐢宠瀹屾垚浠诲姟</el-button> + <br/> + <br/> + <el-button @click="requestOperate('onlineWrk2')" type="warning">鐢宠鍙栨秷浠诲姟</el-button> + </div> + </div> + </el-card> + </div> + <div style="width: 45%;"> + <el-card class="box-card"> + <div slot="header" class="clearfix"> + <span>璁惧鐘舵��</span> + </div> + <div> + <div v-if="currentIndex == null"> + <el-empty description="璇烽�夋嫨璁惧"></el-empty> + </div> + <div v-else> + <el-descriptions :title="currentTitle" direction="vertical" :column="4" border> + <el-descriptions-item label="鍫嗗灈鏈�">{{ tableData[currentIndex].crnNo }} + </el-descriptions-item> + <el-descriptions-item label="宸ヤ綔鍙�"> + {{ tableData[currentIndex].workNo }} + </el-descriptions-item> + <el-descriptions-item label="妯″紡"> + <el-tag>{{ tableData[currentIndex].statusType }}</el-tag> + </el-descriptions-item> + <el-descriptions-item label="浠诲姟鐘舵��"> + <div v-if="tableData[currentIndex].wrkStatus == 0"> + <el-tag>{{ tableData[currentIndex].wrkStatus$ }}</el-tag> + </div> + <div v-else> + <el-tag type="success">{{ tableData[currentIndex].wrkStatus$ }}</el-tag> + </div> + </el-descriptions-item> + <el-descriptions-item label="璁惧鐘舵��"> + <el-tag>{{ tableData[currentIndex].deviceStatus }}</el-tag> + </el-descriptions-item> + <el-descriptions-item label="鏈夌墿"> + <el-tag>{{ tableData[currentIndex].loading }}</el-tag> + </el-descriptions-item> + <el-descriptions-item label="鍒�">{{ tableData[currentIndex].bay }} + </el-descriptions-item> + <el-descriptions-item label="灞�">{{ tableData[currentIndex].lev }} + </el-descriptions-item> + <el-descriptions-item label="鏁呴殰浠g爜">{{ tableData[currentIndex].warnCode }} + </el-descriptions-item> + <el-descriptions-item label="鏁呴殰鎻忚堪">{{ tableData[currentIndex].lev }} + </el-descriptions-item> + <el-descriptions-item label="婧愮珯">{{ tableData[currentIndex].sourceStaNo }} + </el-descriptions-item> + <el-descriptions-item label="鐩爣绔�">{{ tableData[currentIndex].staNo }} + </el-descriptions-item> + <el-descriptions-item label="婧愬簱浣�">{{ tableData[currentIndex].sourceLocNo }} + </el-descriptions-item> + <el-descriptions-item label="鐩爣搴撲綅">{{ tableData[currentIndex].locNo }} + </el-descriptions-item> + <el-descriptions-item label="璐у弶瀹氫綅">{{ tableData[currentIndex].forkOffset }} + </el-descriptions-item> + <el-descriptions-item label="杞借揣鍙板畾浣�">{{ tableData[currentIndex].liftPos }} + </el-descriptions-item> + <el-descriptions-item label="璧拌鍦ㄥ畾浣�">{{ tableData[currentIndex].walkPos }} + </el-descriptions-item> + <el-descriptions-item label="璧拌閫熷害(m/min)">{{ tableData[currentIndex].xspeed }} + </el-descriptions-item> + <el-descriptions-item label="鍗囬檷閫熷害(m/min)">{{ tableData[currentIndex].yspeed }} + </el-descriptions-item> + <el-descriptions-item label="鍙夌墮閫熷害(m/min)">{{ tableData[currentIndex].zspeed }} + </el-descriptions-item> + <el-descriptions-item label="璧拌璺濈(Km)">{{ tableData[currentIndex].xdistance }} + </el-descriptions-item> + <el-descriptions-item label="鍗囬檷璺濈(Km)">{{ tableData[currentIndex].ydistance }} + </el-descriptions-item> + <el-descriptions-item label="璧拌鏃堕暱(H)">{{ tableData[currentIndex].xduration }} + </el-descriptions-item> + <el-descriptions-item label="鍗囬檷鏃堕暱(H)">{{ tableData[currentIndex].yduration }} + </el-descriptions-item> + </el-descriptions> + </div> + </div> + </el-card> + </div> + </div> + </div> + <script> + var app = new Vue({ + el: '#app', + data: { + tableData: [], + currentRow: null, + currentTitle: "鏈�夋嫨璁惧", + currentIndex: null, + formParam: { + crnNo: null, + sourceStaNo: null, + sourceRow: 1, + sourceBay: 0, + sourceLev: 1, + staNo: null, + row: 1, + bay: 0, + lev: 1, + barcode:null, + barcodeType:null, + emptyContainer:null + }, + enableIn: false, + enableOut: false, + options:[ + { + value:'1', + label:'鏄�' + }, + { + value:'0', + label:'鍚�' + } + ] + }, + created() { + this.init() + }, + watch: { + + }, + methods: { + init() { + this.getTableData() + + setInterval(() => { + this.getTableData() + }, 1000) + }, + handleRowClick(row, col, event) { + const index = this.tableData.indexOf(row) + this.currentRow = row; + this.currentIndex = index + this.currentTitle = row.crnNo + "鍙峰爢鍨涙満" + this.formParam.crnNo = row.crnNo + this.enableIn = row.inEnable == "Y" ? true : false + this.enableOut = row.outEnable == "Y" ? true : false + }, + getTableData() { + let that = this; + $.ajax({ + url: baseUrl + "/rgv/table/rgv/state", + headers: { + 'token': localStorage.getItem('token') + }, + data: {}, + dataType: 'json', + contentType: 'application/json;charset=UTF-8', + method: 'post', + success: function (res) { + that.tableData = res.data + } + }); + }, + requestOperate(method) { + let that = this + that.$confirm('姝ゆ搷浣滃瓨鍦ㄩ闄╋紝鏄惁缁х画','鎻愮ず',{ + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(()=>{ + $.ajax({ + url: baseUrl + "/crn/operator/" + method, + headers: { + 'token': localStorage.getItem('token') + }, + data: this.formParam, + method: 'POST', + success: function (res) { + if (res.code == 200) { + that.$message({ + message: res.msg, + type: 'success' + }); + } else { + that.$message({ + message: res.msg, + type: 'error' + }); + } + } + }); + }) + + }, + updateEnableInOut(type) { + let that = this + let param = {} + if (type == "in") { + param = { + inEnable: this.enableIn ? "Y" : "N", + crnNo: this.formParam.crnNo + } + } else { + param = { + outEnable: this.enableOut ? "Y" : "N", + crnNo: this.formParam.crnNo + } + } + + $.ajax({ + url: baseUrl + "/basCrnp/update/auth", + headers: { + 'token': localStorage.getItem('token') + }, + data: param, + method: 'POST', + success: function (res) { + if (res.code == 200) { + that.$message({ + message: res.msg, + type: 'success' + }); + } else { + that.$message({ + message: res.msg, + type: 'error' + }); + } + } + }); + } + } + }) + </script> +</body> + +</html> \ No newline at end of file -- Gitblit v1.9.1