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