From bfe469c7fa604a6431d58ea5e5143c959d76bd86 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 11 十一月 2025 16:09:38 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/network/ZyCrnConnectDriver.java | 8
src/main/java/com/zy/asrs/utils/Utils.java | 12 +
src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java | 28 +--
src/main/webapp/views/components/WatchCrnCard.js | 206 +++++++++++++++++++------
src/main/java/com/zy/asrs/controller/CrnController.java | 76 ++++++++
src/main/java/com/zy/asrs/domain/param/CrnCommandTakeParam.java | 14 +
src/main/java/com/zy/core/thread/CrnThread.java | 2
src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java | 126 +++++++++++++++
8 files changed, 387 insertions(+), 85 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java
index b828dea..d3435f5 100644
--- a/src/main/java/com/zy/asrs/controller/CrnController.java
+++ b/src/main/java/com/zy/asrs/controller/CrnController.java
@@ -2,7 +2,9 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.annotations.ManagerAuth;
+import com.core.common.Cools;
import com.core.common.R;
+import com.zy.asrs.domain.param.CrnCommandTakeParam;
import com.zy.asrs.domain.vo.CrnStateTableVo;
import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.entity.BasCrnpErr;
@@ -10,15 +12,19 @@
import com.zy.asrs.service.BasCrnpErrService;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.WrkMastService;
+import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.CrnModeType;
import com.zy.core.enums.SlaveType;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.thread.CrnThread;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -42,7 +48,7 @@
@PostMapping("/table/crn/state")
@ManagerAuth(memo = "鍫嗗灈鏈轰俊鎭〃")
- public R crnStateTable(){
+ public R crnStateTable() {
List<CrnStateTableVo> list = new ArrayList<>();
List<BasCrnp> crnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().orderBy("crn_no"));
for (BasCrnp basCrnp : crnps) {
@@ -62,12 +68,12 @@
vo.setWorkNo(crnProtocol.getTaskNo()); // 浠诲姟鍙�
vo.setMode(crnProtocol.getModeType().desc); // 妯″紡鐘舵��
vo.setStatus(crnProtocol.getStatusType().desc); // 鐘舵��
- vo.setLoading(crnProtocol.getLoaded()==1?"鏈夌墿":"鏃犵墿"); // 鏈夌墿
+ vo.setLoading(crnProtocol.getLoaded() == 1 ? "鏈夌墿" : "鏃犵墿"); // 鏈夌墿
vo.setBay(crnProtocol.getBay()); // 鍒�
vo.setLev(crnProtocol.getLevel()); // 灞�
vo.setForkOffset(crnProtocol.getForkPosType().desc); // 璐у弶浣嶇疆
vo.setLiftPos(crnProtocol.getLiftPosType().desc);
- vo.setWalkPos(crnProtocol.getWalkPos()==1?"涓嶅湪瀹氫綅":"鍦ㄥ畾浣�");
+ vo.setWalkPos(crnProtocol.getWalkPos() == 1 ? "涓嶅湪瀹氫綅" : "鍦ㄥ畾浣�");
vo.setXspeed(crnProtocol.getXSpeed()); // 璧拌閫熷害锛坢/min)
vo.setYspeed(crnProtocol.getYSpeed()); // 鍗囬檷閫熷害锛坢/min)
vo.setZspeed(crnProtocol.getZSpeed()); // 鍙夌墮閫熷害锛坢/min)
@@ -80,7 +86,7 @@
vo.setDeviceStatus("AUTO");
}
- if (crnProtocol.getTaskNo()>0) {
+ if (crnProtocol.getTaskNo() > 0) {
WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo());
if (wrkMast != null) {
vo.setSourceStaNo(String.valueOf(wrkMast.getSourceStaNo())); // 婧愮珯
@@ -94,7 +100,7 @@
vo.setWarnCode(String.valueOf(crnProtocol.getAlarm()));
if (crnProtocol.getAlarm() > 0) {
BasCrnpErr crnError = basCrnpErrService.selectById(crnProtocol.getAlarm());
- vo.setAlarm(crnError==null?"鏈煡寮傚父":crnError.getErrName());
+ vo.setAlarm(crnError == null ? "鏈煡寮傚父" : crnError.getErrName());
vo.setDeviceStatus("ERROR");
}
}
@@ -103,15 +109,71 @@
@PostMapping("/output/site")
@ManagerAuth(memo = "鍫嗗灈鏈烘姤鏂囨棩蹇楄緭鍑�")
- public R crnOutput(){
+ public R crnOutput() {
StringBuilder str = new StringBuilder();
String s;
int i = 0;
- while((s = OutputQueue.CRN.poll()) != null && i <=10) {
+ while ((s = OutputQueue.CRN.poll()) != null && i <= 10) {
str.append("\n").append(s);
i++;
}
return R.ok().add(str.toString());
}
+ @PostMapping("/command/take")
+ public R crnCommandTake(@RequestBody CrnCommandTakeParam param) {
+ if (Cools.isEmpty(param)) {
+ return R.error("缂哄皯鍙傛暟");
+ }
+
+ Integer crnNo = param.getCrnNo();
+ String sourceLocNo = param.getSourceLocNo();
+ String targetLocNo = param.getTargetLocNo();
+
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo);
+ if (crnThread == null) {
+ return R.error("绾跨▼涓嶅瓨鍦�");
+ }
+
+ CrnCommand command = crnThread.getPickAndPutCommand(sourceLocNo, targetLocNo, 9999, crnNo);
+ MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
+ return R.ok();
+ }
+
+ @PostMapping("/command/move")
+ public R crnCommandMove(@RequestBody CrnCommandTakeParam param) {
+ if (Cools.isEmpty(param)) {
+ return R.error("缂哄皯鍙傛暟");
+ }
+
+ Integer crnNo = param.getCrnNo();
+ String targetLocNo = param.getTargetLocNo();
+
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo);
+ if (crnThread == null) {
+ return R.error("绾跨▼涓嶅瓨鍦�");
+ }
+
+ CrnCommand command = crnThread.getMoveCommand(targetLocNo, 9999, crnNo);
+ MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
+ return R.ok();
+ }
+
+ @PostMapping("/command/taskComplete")
+ public R crnCommandTaskComplete(@RequestBody CrnCommandTakeParam param) {
+ if (Cools.isEmpty(param)) {
+ return R.error("缂哄皯鍙傛暟");
+ }
+
+ Integer crnNo = param.getCrnNo();
+
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo);
+ if (crnThread == null) {
+ return R.error("绾跨▼涓嶅瓨鍦�");
+ }
+
+ CrnCommand command = crnThread.getResetCommand(crnNo);
+ MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, command));
+ return R.ok();
+ }
}
diff --git a/src/main/java/com/zy/asrs/domain/param/CrnCommandTakeParam.java b/src/main/java/com/zy/asrs/domain/param/CrnCommandTakeParam.java
new file mode 100644
index 0000000..d216c3a
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/param/CrnCommandTakeParam.java
@@ -0,0 +1,14 @@
+package com.zy.asrs.domain.param;
+
+import lombok.Data;
+
+@Data
+public class CrnCommandTakeParam {
+
+ private Integer crnNo;
+
+ private String sourceLocNo;
+
+ private String targetLocNo;
+
+}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index a55a484..cf9784b 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -8,6 +8,7 @@
public class Utils {
+ private static final String LOC_NO_FLAG = "-";
private static final DecimalFormat fmt = new DecimalFormat("##0.00");
public static float scale(Float f){
@@ -36,7 +37,8 @@
*/
public static int getRow(String locNo) {
if (!Cools.isEmpty(locNo)) {
- return Integer.parseInt(locNo.substring(0, 2));
+ String[] split = locNo.split(LOC_NO_FLAG);
+ return Integer.parseInt(split[0]);
}
throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
}
@@ -46,7 +48,8 @@
*/
public static int getBay(String locNo) {
if (!Cools.isEmpty(locNo)) {
- return Integer.parseInt(locNo.substring(2, 5));
+ String[] split = locNo.split(LOC_NO_FLAG);
+ return Integer.parseInt(split[1]);
}
throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
}
@@ -56,13 +59,14 @@
*/
public static int getLev(String locNo) {
if (!Cools.isEmpty(locNo)) {
- return Integer.parseInt(locNo.substring(5, 7));
+ String[] split = locNo.split(LOC_NO_FLAG);
+ return Integer.parseInt(split[2]);
}
throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
}
public static String getLocNo(Number row, Number bay, Number lev) {
- return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2);
+ return row + LOC_NO_FLAG + bay + LOC_NO_FLAG + lev;
}
public static boolean isJSON(String value) {
diff --git a/src/main/java/com/zy/core/network/ZyCrnConnectThread.java b/src/main/java/com/zy/core/network/ZyCrnConnectDriver.java
similarity index 92%
rename from src/main/java/com/zy/core/network/ZyCrnConnectThread.java
rename to src/main/java/com/zy/core/network/ZyCrnConnectDriver.java
index 985f96f..1127b47 100644
--- a/src/main/java/com/zy/core/network/ZyCrnConnectThread.java
+++ b/src/main/java/com/zy/core/network/ZyCrnConnectDriver.java
@@ -11,16 +11,18 @@
import com.zy.core.network.real.ZyCrnRealConnect;
import lombok.extern.slf4j.Slf4j;
-
+/**
+ * 杩炴帴椹卞姩
+ */
@Slf4j
-public class ZyCrnConnectThread implements ThreadHandler{
+public class ZyCrnConnectDriver implements ThreadHandler{
private boolean connected = false;
private SiemensS7Net siemensNet;
private DeviceConfig deviceConfig;
private ZyCrnConnectApi zyCrnConnectApi;
- public ZyCrnConnectThread(SiemensS7Net siemensS7Net, DeviceConfig deviceConfig) {
+ public ZyCrnConnectDriver(SiemensS7Net siemensS7Net, DeviceConfig deviceConfig) {
this.siemensNet = siemensS7Net;
this.deviceConfig = deviceConfig;
}
diff --git a/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java b/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java
index f68bdb1..6aa6da4 100644
--- a/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java
+++ b/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java
@@ -2,15 +2,20 @@
import com.alibaba.fastjson.JSON;
import com.zy.asrs.entity.DeviceConfig;
+import com.zy.core.enums.CrnStatusType;
+import com.zy.core.enums.CrnTaskModeType;
import com.zy.core.model.CommandResponse;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.network.api.ZyCrnConnectApi;
import com.zy.core.network.entity.ZyCrnStatusEntity;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
public class ZyCrnFakeConnect implements ZyCrnConnectApi {
private ZyCrnStatusEntity crnStatus;
private DeviceConfig deviceConfig;
+ private final ExecutorService executor = Executors.newSingleThreadExecutor();
public ZyCrnFakeConnect(DeviceConfig deviceConfig) {
this.deviceConfig = deviceConfig;
@@ -35,6 +40,127 @@
@Override
public CommandResponse sendCommand(CrnCommand command) {
CommandResponse response = new CommandResponse(false);
+ if (command.getTaskMode().intValue() == CrnTaskModeType.LOC_MOVE.id) {
+ //鍙栨斁璐�
+ executor.submit(() -> commandTake(command));
+ } else if (command.getTaskMode().intValue() == CrnTaskModeType.CRN_MOVE.id) {
+ //绉诲姩
+ executor.submit(() -> commandMove(command));
+ } else if (command.getTaskMode().intValue() == CrnTaskModeType.NONE.id) {
+ //澶嶄綅
+ executor.submit(() -> commandTaskComplete(command));
+ }
+ response.setResult(true);
return response;
}
+
+ private void commandTaskComplete(CrnCommand command) {
+ this.crnStatus.setTaskNo(0);
+ this.crnStatus.setStatus(CrnStatusType.IDLE.id);
+ }
+
+ private void commandMove(CrnCommand command) {
+ int destinationPosX = command.getDestinationPosX().intValue();
+ int destinationPosY = command.getDestinationPosY().intValue();
+ int destinationPosZ = command.getDestinationPosZ().intValue();
+ int taskMode = command.getTaskMode().intValue();
+ int taskNo = command.getTaskNo().intValue();
+
+ this.crnStatus.setTaskNo(taskNo);
+ this.crnStatus.setStatus(CrnStatusType.MOVING.id);
+ moveY(this.crnStatus.getBay(), destinationPosY);
+ moveZ(this.crnStatus.getLevel(), destinationPosZ);
+ this.crnStatus.setStatus(CrnStatusType.WAITING.id);
+ }
+
+ private void commandTake(CrnCommand command) {
+ int sourcePosX = command.getSourcePosX().intValue();
+ int sourcePosY = command.getSourcePosY().intValue();
+ int sourcePosZ = command.getSourcePosZ().intValue();
+ int destinationPosX = command.getDestinationPosX().intValue();
+ int destinationPosY = command.getDestinationPosY().intValue();
+ int destinationPosZ = command.getDestinationPosZ().intValue();
+ int taskMode = command.getTaskMode().intValue();
+ int taskNo = command.getTaskNo().intValue();
+
+ this.crnStatus.setTaskNo(taskNo);
+ this.crnStatus.setStatus(CrnStatusType.FETCH_MOVING.id);
+ moveY(this.crnStatus.getBay(), sourcePosY);
+ moveZ(this.crnStatus.getLevel(), sourcePosZ);
+ this.crnStatus.setStatus(CrnStatusType.FETCHING.id);
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ this.crnStatus.setLoaded(1);
+ this.crnStatus.setStatus(CrnStatusType.PUT_MOVING.id);
+ moveY(this.crnStatus.getBay(), destinationPosY);
+ moveZ(this.crnStatus.getLevel(), destinationPosZ);
+ this.crnStatus.setStatus(CrnStatusType.PUTTING.id);
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ this.crnStatus.setLoaded(0);
+ this.crnStatus.setStatus(CrnStatusType.WAITING.id);
+ }
+
+ private void moveZ(int sourcePosZ, int destinationPosZ) {
+ if(destinationPosZ - sourcePosZ > 0) {
+ int moveLength = destinationPosZ - sourcePosZ;
+ int initSourcePosZ = sourcePosZ;
+ for(int i = 0; i < moveLength; i++) {
+ initSourcePosZ++;
+ this.crnStatus.setLevel(initSourcePosZ);
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }else {
+ int moveLength = sourcePosZ - destinationPosZ;
+ int initSourcePosZ = sourcePosZ;
+ for(int i = 0; i < moveLength; i++) {
+ initSourcePosZ--;
+ this.crnStatus.setLevel(initSourcePosZ);
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ private void moveY(int sourcePosY, int destinationPosY) {
+ if(destinationPosY - sourcePosY > 0) {
+ int moveLength = destinationPosY - sourcePosY;
+ int initSourcePosY = sourcePosY;
+ for(int i = 0; i < moveLength; i++) {
+ initSourcePosY++;
+ this.crnStatus.setBay(initSourcePosY);
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }else {
+ int moveLength = sourcePosY - destinationPosY;
+ int initSourcePosY = sourcePosY;
+ for(int i = 0; i < moveLength; i++) {
+ initSourcePosY--;
+ this.crnStatus.setBay(initSourcePosY);
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
}
diff --git a/src/main/java/com/zy/core/thread/CrnThread.java b/src/main/java/com/zy/core/thread/CrnThread.java
index d4295fb..46cbd00 100644
--- a/src/main/java/com/zy/core/thread/CrnThread.java
+++ b/src/main/java/com/zy/core/thread/CrnThread.java
@@ -11,7 +11,7 @@
CrnCommand getPickAndPutCommand(String sourceLocNo, String targetLocNo, Integer taskNo, Integer crnNo);//鍙栨斁璐�
- CrnCommand getMoveCommand(String sourceLocNo, String targetLocNo, Integer taskNo, Integer crnNo);//绉诲姩
+ CrnCommand getMoveCommand(String targetLocNo, Integer taskNo, Integer crnNo);//绉诲姩
CrnCommand getResetCommand(Integer crnNo);//澶嶄綅
diff --git a/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java b/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
index 94e2d8f..4f87fdd 100644
--- a/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
@@ -14,7 +14,6 @@
import com.zy.asrs.utils.Utils;
import com.zy.common.utils.RedisUtil;
import com.zy.core.News;
-import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.enums.CrnTaskModeType;
@@ -24,7 +23,7 @@
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.network.DeviceConnectPool;
-import com.zy.core.network.ZyCrnConnectThread;
+import com.zy.core.network.ZyCrnConnectDriver;
import com.zy.core.network.entity.ZyCrnStatusEntity;
import com.zy.core.thread.CrnThread;
import lombok.Data;
@@ -43,7 +42,7 @@
private DeviceConfig deviceConfig;
private RedisUtil redisUtil;
- private ZyCrnConnectThread zyCrnConnectThread;
+ private ZyCrnConnectDriver zyCrnConnectDriver;
private CrnProtocol crnProtocol;
private boolean resetFlag = false;
@@ -112,9 +111,9 @@
@Override
public boolean connect() {
SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, deviceConfig.getIp());
- zyCrnConnectThread = new ZyCrnConnectThread(siemensS7Net, deviceConfig);
- new Thread(zyCrnConnectThread).start();
- DeviceConnectPool.put(SlaveType.Crn, deviceConfig.getDeviceNo(), zyCrnConnectThread);
+ zyCrnConnectDriver = new ZyCrnConnectDriver(siemensS7Net, deviceConfig);
+ new Thread(zyCrnConnectDriver).start();
+ DeviceConnectPool.put(SlaveType.Crn, deviceConfig.getDeviceNo(), zyCrnConnectDriver);
return true;
}
@@ -122,7 +121,7 @@
* 璇诲彇鐘舵��
*/
private void readStatus(){
- ZyCrnStatusEntity crnStatus = zyCrnConnectThread.getStatus();
+ ZyCrnStatusEntity crnStatus = zyCrnConnectDriver.getStatus();
if (crnStatus == null) {
OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
News.error("SiemensCrn"+" - 5"+" - 璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort());
@@ -206,7 +205,7 @@
@Override
public void close() {
- zyCrnConnectThread.close();
+ zyCrnConnectDriver.close();
}
@Override
@@ -231,18 +230,15 @@
}
@Override
- public CrnCommand getMoveCommand(String sourceLocNo, String targetLocNo, Integer taskNo, Integer crnNo) {
+ public CrnCommand getMoveCommand(String targetLocNo, Integer taskNo, Integer crnNo) {
CrnCommand crnCommand = new CrnCommand();
crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
crnCommand.setTaskNo(taskNo.shortValue()); // 宸ヤ綔鍙�
crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
crnCommand.setTaskMode(CrnTaskModeType.CRN_MOVE.id.shortValue()); // 浠诲姟妯″紡: 鍫嗗灈鏈虹Щ鍔�
- crnCommand.setSourcePosX((short) Utils.getRow(sourceLocNo)); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY((short) Utils.getBay(sourceLocNo)); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ((short) Utils.getLev(sourceLocNo)); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺�
- crnCommand.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒�
- crnCommand.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞�
+ crnCommand.setDestinationPosX((short) Utils.getRow(targetLocNo)); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY((short) Utils.getBay(targetLocNo)); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ((short) Utils.getLev(targetLocNo)); // 鐩爣搴撲綅灞�
crnCommand.setCommand((short) 1); // 浠诲姟纭
return crnCommand;
}
@@ -267,6 +263,6 @@
@Override
public synchronized CommandResponse sendCommand(CrnCommand command) {
this.crnProtocol.setLastCommandTime(System.currentTimeMillis());
- return zyCrnConnectThread.sendCommand(command);
+ return zyCrnConnectDriver.sendCommand(command);
}
}
diff --git a/src/main/webapp/views/components/WatchCrnCard.js b/src/main/webapp/views/components/WatchCrnCard.js
index a46864d..5a3c99e 100644
--- a/src/main/webapp/views/components/WatchCrnCard.js
+++ b/src/main/webapp/views/components/WatchCrnCard.js
@@ -1,9 +1,22 @@
-Vue.component('watch-crn-card', {
- template: `
+Vue.component("watch-crn-card", {
+ template: `
<div>
<div style="display: flex;margin-bottom: 10px;">
<div style="width: 100%;">鍫嗗灈鏈虹洃鎺�</div>
<div style="width: 100%;text-align: right;display: flex;"><el-input size="mini" v-model="searchCrnNo" placeholder="璇疯緭鍏ュ爢鍨涙満鍙�"></el-input><el-button @click="getCrnStateInfo" size="mini">鏌ヨ</el-button></div>
+ </div>
+ <div style="margin-bottom: 10px;">
+ <div style="margin-bottom: 5px;">
+ <el-button @click="openControl" size="mini">鎺у埗涓績</el-button>
+ </div>
+ <div v-if="showControl" style="display: flex;justify-content: space-between;flex-wrap: wrap;">
+ <div style="margin-bottom: 10px;width: 33%;"><el-input size="mini" v-model="controlParam.crnNo" placeholder="鍫嗗灈鏈哄彿"></el-input></div>
+ <div style="margin-bottom: 10px;width: 33%;"><el-input size="mini" v-model="controlParam.sourceLocNo" placeholder="婧愮偣"></el-input></div>
+ <div style="margin-bottom: 10px;width: 33%;"><el-input size="mini" v-model="controlParam.targetLocNo" placeholder="鐩爣鐐�"></el-input></div>
+ <div style="margin-bottom: 10px;"><el-button @click="controlCommandTransport()" size="mini">鍙栨斁璐�</el-button></div>
+ <div style="margin-bottom: 10px;"><el-button @click="controlCommandMove()" size="mini">绉诲姩</el-button></div>
+ <div style="margin-bottom: 10px;"><el-button @click="controlCommandTaskComplete()" size="mini">浠诲姟瀹屾垚</el-button></div>
+ </div>
</div>
<el-collapse v-model="activeNames">
<el-collapse-item v-for="(item) in crnList" :name="item.crnNo">
@@ -45,58 +58,143 @@
</el-collapse>
</div>
`,
- props: ['param'],
- data() {
- return {
- crnList: [],
- activeNames: '',
- searchCrnNo: ''
+ props: ["param"],
+ data() {
+ return {
+ crnList: [],
+ activeNames: "",
+ searchCrnNo: "",
+ showControl: true,
+ controlParam: {
+ crnNo: "",
+ sourceLocNo: "",
+ targetLocNo: "",
+ },
+ };
+ },
+ created() {
+ setInterval(() => {
+ this.getCrnStateInfo();
+ }, 1000);
+ },
+ watch: {
+ param: {
+ handler(newVal, oldVal) {
+ if (newVal.crnNo != 0) {
+ this.activeNames = newVal.crnNo;
}
+ },
+ deep: true, // 娣卞害鐩戝惉宓屽灞炴��
+ immediate: true, // 绔嬪嵆瑙﹀彂涓�娆★紙鍙�夛級
},
- created() {
- setInterval(() => {
- this.getCrnStateInfo()
- },1000)
- },
- watch: {
- param: {
- handler(newVal, oldVal) {
- if(newVal.crnNo != 0) {
- this.activeNames = newVal.crnNo
- }
- },
- deep: true, // 娣卞害鐩戝惉宓屽灞炴��
- immediate: true // 绔嬪嵆瑙﹀彂涓�娆★紙鍙�夛級
- }
- },
- methods: {
- getCrnStateInfo() {
- let that = this
- $.ajax({
- url: baseUrl + "/crn/table/crn/state",
- headers: {
- 'token': localStorage.getItem('token')
- },
- method: "post",
- success: (res) => {
- // 鍫嗗灈鏈轰俊鎭〃鑾峰彇
- if (res.code == 200) {
- let list = res.data;
-
- if (that.searchCrnNo == '') {
- that.crnList = list;
- }else {
- let tmp = []
- list.forEach((item) => {
- if(item.crnNo == that.searchCrnNo) {
- tmp.push(item)
- }
- })
- that.crnList = tmp;
- }
- }
- }
- })
+ },
+ methods: {
+ getCrnStateInfo() {
+ let that = this;
+ $.ajax({
+ url: baseUrl + "/crn/table/crn/state",
+ headers: {
+ token: localStorage.getItem("token"),
},
- }
-});
\ No newline at end of file
+ method: "post",
+ success: (res) => {
+ // 鍫嗗灈鏈轰俊鎭〃鑾峰彇
+ if (res.code == 200) {
+ let list = res.data;
+
+ if (that.searchCrnNo == "") {
+ that.crnList = list;
+ } else {
+ let tmp = [];
+ list.forEach((item) => {
+ if (item.crnNo == that.searchCrnNo) {
+ tmp.push(item);
+ }
+ });
+ that.crnList = tmp;
+ }
+ }
+ },
+ });
+ },
+ openControl() {
+ this.showControl = !this.showControl;
+ },
+ controlCommandTransport() {
+ let that = this;
+ //鍙栨斁璐�
+ $.ajax({
+ url: baseUrl + "/crn/command/take",
+ headers: {
+ token: localStorage.getItem("token"),
+ },
+ contentType: "application/json",
+ method: "post",
+ data: JSON.stringify(that.controlParam),
+ success: (res) => {
+ if (res.code == 200) {
+ that.$message({
+ message: res.msg,
+ type: "success",
+ });
+ } else {
+ that.$message({
+ message: res.msg,
+ type: "warning",
+ });
+ }
+ },
+ });
+ },
+ controlCommandMove() {
+ let that = this;
+ $.ajax({
+ url: baseUrl + "/crn/command/move",
+ headers: {
+ token: localStorage.getItem("token"),
+ },
+ contentType: "application/json",
+ method: "post",
+ data: JSON.stringify(that.controlParam),
+ success: (res) => {
+ if (res.code == 200) {
+ that.$message({
+ message: res.msg,
+ type: "success",
+ });
+ } else {
+ that.$message({
+ message: res.msg,
+ type: "warning",
+ });
+ }
+ },
+ });
+ },
+ controlCommandTaskComplete() {
+ let that = this;
+ $.ajax({
+ url: baseUrl + "/crn/command/taskComplete",
+ headers: {
+ token: localStorage.getItem("token"),
+ },
+ contentType: "application/json",
+ method: "post",
+ data: JSON.stringify(that.controlParam),
+ success: (res) => {
+ if (res.code == 200) {
+ that.$message({
+ message: res.msg,
+ type: "success",
+ });
+ } else {
+ that.$message({
+ message: res.msg,
+ type: "warning",
+ });
+ }
+ },
+ });
+ },
+ },
+});
--
Gitblit v1.9.1