From 40d95599c1ac6ef89d465e031132d9c627a7f0bc Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 19 十一月 2025 13:38:54 +0800
Subject: [PATCH] #增加出入库模式
---
src/main/java/com/zy/asrs/controller/SiteController.java | 1
src/main/java/com/zy/asrs/controller/ConsoleController.java | 49 +++++++++++-
src/main/webapp/views/console.html | 100 ++++++++++++++----------
src/main/webapp/views/pipeline.html | 57 --------------
src/main/java/com/zy/core/model/protocol/LiftProtocol.java | 3
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 26 ++++++
6 files changed, 132 insertions(+), 104 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java
index f159b5f..00aa8a4 100644
--- a/src/main/java/com/zy/asrs/controller/ConsoleController.java
+++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -24,15 +24,14 @@
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.Slave;
+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.CrnSlave;
-import com.zy.core.model.DevpSlave;
-import com.zy.core.model.LedSlave;
-import com.zy.core.model.RgvSlave;
+import com.zy.core.model.*;
import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.LiftProtocol;
import com.zy.core.model.protocol.RgvProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
@@ -410,4 +409,46 @@
return R.ok();
}
+ @GetMapping("/getIoMode")
+ public R getIoMode() {
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ if (devpThread == null) {
+ return R.error("绾跨▼涓嶅瓨鍦�");
+ }
+
+ LiftProtocol liftProtocol = devpThread.getLiftStatus();
+ if (liftProtocol == null) {
+ return R.error("绾跨▼涓嶅瓨鍦�");
+ }
+
+ return R.ok().add(liftProtocol.getIoMode());
+ }
+
+ @PostMapping("/switchIoMode")
+ public R switchIoMode() {
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ if (devpThread == null) {
+ return R.error("绾跨▼涓嶅瓨鍦�");
+ }
+
+ LiftProtocol liftProtocol = devpThread.getLiftStatus();
+ if (liftProtocol == null) {
+ return R.error("绾跨▼涓嶅瓨鍦�");
+ }
+
+ //妫�娴嬫槸鍚﹁繕鏈変换鍔℃病鍋氬畬
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>());
+ if (!wrkMasts.isEmpty()) {
+ return R.error("绯荤粺浠诲姟鏈畬鎴愶紝璇峰畬鎴愬悗鍐嶅垏鎹㈡ā寮�");
+ }
+
+ int switchIoMode = 1;
+ if (liftProtocol.getIoMode() == 1) {
+ switchIoMode = 2;
+ }
+
+ boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, switchIoMode));
+ return R.ok();
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java
index fd671c3..9d1aeea 100644
--- a/src/main/java/com/zy/asrs/controller/SiteController.java
+++ b/src/main/java/com/zy/asrs/controller/SiteController.java
@@ -156,7 +156,6 @@
vo.setPakMk(staProtocol.isPakMk()?"Y":"N"); // 闇�姹�1
vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N"); // 绌烘澘淇″彿
vo.setStaNo(staProtocol.getStaNo()); // 鐩爣绔�
- vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "浣�" : "楂�"); //楂樹綆搴撲綅
return R.ok().add(vo);
}
}
diff --git a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
index 63a11dd..f2e8054 100644
--- a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
@@ -16,4 +16,7 @@
//0鏈畬鎴� 1宸插畬鎴�
private Short taskStatus = 0;
+ //鍑哄叆搴撴ā寮� 1锛氬叆搴� 2锛氬嚭搴�
+ private Short ioMode = 0;
+
}
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 5baf7d8..ee70d68 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -130,6 +130,8 @@
case 2:
write((LiftCommand) task.getData());
break;
+ case 3:
+ writeIoMode((Integer) task.getData());
default:
break;
}
@@ -231,6 +233,7 @@
liftProtocol.setDeviceStatus(siemensS7Net.getByteTransform().TransInt16(result3.Content, 2)); // 璁惧鐘舵��
liftProtocol.setTaskStatus(siemensS7Net.getByteTransform().TransInt16(result3.Content, 4)); // 瀹屾垚淇″彿
liftProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result3.Content, 6)); // 宸ヤ綔鍙�
+ liftProtocol.setIoMode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 10)); // 鍑哄叆搴撴ā寮�
}
//娓╂箍搴︿俊鎭弽棣�
@@ -293,7 +296,7 @@
/**
* 鍐欏叆鍛戒护
*/
- private void write(LiftCommand liftCommand) throws InterruptedException {
+ private void write(LiftCommand liftCommand) {
if (null == liftCommand) {
return;
}
@@ -314,6 +317,27 @@
}
/**
+ * 鍐欏叆鍛戒护
+ */
+ private void writeIoMode(Integer ioMode) {
+ if (null == ioMode) {
+ return;
+ }
+ short[] array = new short[1];
+ array[0] = ioMode.shortValue();
+
+ OperateResult write = siemensS7Net.Write("DB100.12", array);
+
+ if (!write.IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ嚭鍏ュ簱妯″紡鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", DateUtils.convert(new Date()), slave.getId(), ioMode));
+ News.error("SiemensDevp"+" - 4"+" - 鍐欏叆鍑哄叆搴撴ā寮忔暟鎹け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), ioMode);
+ } else {
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 鍑哄叆搴撴ā寮忓懡浠や笅鍙� [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), ioMode));
+ News.info("SiemensDevp"+" - 5"+" - 鍑哄叆搴撴ā寮忓懡浠や笅鍙� [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), ioMode);
+ }
+ }
+
+ /**
* 璁剧疆鍏ュ簱鏍囪
*/
@Override
diff --git a/src/main/webapp/views/console.html b/src/main/webapp/views/console.html
index 513907f..6bae96a 100644
--- a/src/main/webapp/views/console.html
+++ b/src/main/webapp/views/console.html
@@ -40,47 +40,14 @@
</div>
</div>
</div>
- <!-- 鍫嗗灈鏈虹姸鎬� -->
- <div class="machine-status">
- <div class="body-head">鍫嗗灈鏈虹姸鎬�</div>
- <div class="state">
- <span>鍫嗗灈鏈� 1</span>
- <span class="state-ss machine-put-flag ">鍏ュ簱</span>
- </div>
- <div class="state">
- <span>鍫嗗灈鏈� 2</span>
- <span class="state-ss machine-auto-flag ">鑷姩</span>
-
- </div>
- <div class="button"><span>鎵�鏈夌姸鎬�</span></div>
- <div class="button item-group">
- <span class="machine-put-flag">鍏ュ簱</span>
- <span class="machine-take-flag">鍑哄簱</span>
- <span class="machine-stock-move-flag">搴撳埌搴�</span>
- <span class="machine-site-move-flag">绔欏埌绔�</span>
- <span class="machine-p-move-flag">PToP</span>
- <span class="machine-error-flag">寮傚父</span>
- <span class="machine-auto-flag">鑷姩</span>
- <span class="machine-unauto-flag">闈炶嚜鍔�/鎵嬪姩</span>
- </div>
- </div>
<div class="line-status">
- <div class="body-head">杈撻�佺嚎鐘舵��</div>
- <div class="state">
- <span>杩愯緭绾挎�绘暟</span>
- <span id="line-total" class="line-ss"></span>
- </div>
- <div class="state">
- <span>杈撻�佺嚎浠诲姟 <span id="devpTaskStackOver"></span></span>
- <span id="devpWorkingCount" class="line-ss"></span>
- </div>
- <div class="button"><span>鎵�鏈夌姸鎬�</span></div>
- <div class="button item-group">
- <span class="site-auto-run-id">鑷姩+鏈夌墿+ID</span>
- <span class="site-auto-run">鑷姩+鏈夌墿</span>
- <span class="site-auto-id">鑷姩+ID</span>
- <span class="site-auto">鑷姩</span>
- <span class="site-unauto">闈炶嚜鍔�/鎵嬪姩</span>
+ <div class="body-head">鍑哄叆搴撴ā寮�</div>
+ <div class="button" onclick="switchIoMode()"><span class="site-auto-id">鐐瑰嚮鍒囨崲妯″紡</span></div>
+ <div class="button" style="margin-top: 10px;">
+ <span>褰撳墠妯″紡锛�</span>
+ <span id="ioMode-in" class="site-auto">鍏ュ簱妯″紡</span>
+ <span id="ioMode-out" class="site-auto-run">鍑哄簱妯″紡</span>
+ <span id="ioMode-none" class="site-unauto">鏈煡妯″紡</span>
</div>
</div>
<div class="bar-code">
@@ -341,6 +308,7 @@
setInterval(function () {
getCodeData();
renderBarCode();
+ getIoModeInfo()
}, 1000)
var tData = [],tData1 = [],tData2 = [],tData3 = [];
function getCodeData() {
@@ -348,7 +316,6 @@
url: baseUrl + '/console/barcode/output/site',
method: 'GET',
success: function (res) {
- console.log(res)
if (res.code === 200) {
tData = eval(res.data);
if (tData.length <= 5) {
@@ -372,6 +339,7 @@
}
})
}
+
function renderBarCode() {
for (var i = 0; i < tData1.length; i++) {
var str1 = '<li><span>' + tData1[i].barcode + '</span><span class="right">' + tData1[i].time + '</span></li>'
@@ -386,6 +354,56 @@
$('#barcode3').append(str3)
}
}
+
+ function getIoModeInfo() {
+ $.ajax({
+ url: baseUrl + "/console/getIoMode",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'GET',
+ success: function (res) {
+ if (res.code === 200){
+ let ioModeData = res.data;
+ if (ioModeData == 1) {
+ $("#ioMode-none").hide()
+ $("#ioMode-in").show()
+ $("#ioMode-out").hide()
+ }else if(ioModeData == 2) {
+ $("#ioMode-none").hide()
+ $("#ioMode-in").hide()
+ $("#ioMode-out").show()
+ }else {
+ $("#ioMode-none").show()
+ $("#ioMode-in").hide()
+ $("#ioMode-out").hide()
+ }
+ } else if (res.code === 403){
+ window.location.href = baseUrl+"/login";
+ } else {
+ console.log(res.msg);
+ }
+ }
+ });
+ }
+
+ function switchIoMode() {
+ $.ajax({
+ url: baseUrl + "/console/switchIoMode",
+ headers: {
+ 'token': localStorage.getItem('token')
+ },
+ data: {},
+ method: 'post',
+ success: function (res) {
+ if (res.code === 200){
+ layer.msg(res.msg)
+ } else if (res.code === 403){
+ window.location.href = baseUrl+"/login";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ });
+ }
</script>
<script type="text/javascript">
// 寮圭獥绔欑偣淇℃伅
diff --git a/src/main/webapp/views/pipeline.html b/src/main/webapp/views/pipeline.html
index c182d24..5c60e6b 100644
--- a/src/main/webapp/views/pipeline.html
+++ b/src/main/webapp/views/pipeline.html
@@ -180,7 +180,6 @@
var siteTableFullRows = 0;
var outputDom = document.getElementById("output");
$(document).ready(function() {
- getIoModeInfo();
initPlcErrorTable();
getPlcError();
initSiteTable();
@@ -190,7 +189,6 @@
setInterval(function () {
getPlcError();
starGetSite();
- getIoModeInfo();
}, 1000);
setInterval(function () {
getSiteOutput();
@@ -201,61 +199,6 @@
} else {
getSite();
}
- }
-
- var ioModeData;
- function getIoModeInfo() {
- $.ajax({
- url: baseUrl+ "/site/io/mode/info/site",
- headers: {'token': localStorage.getItem('token')},
- method: 'GET',
- success: function (res) {
- if (res.code === 200){
- ioModeData = res.data;
- ioModeData.forEach(function (e) {
- $("#io-mode-"+e.floor).html(e.modeDesc);
- })
- } else if (res.code === 403){
- window.location.href = baseUrl+"/login";
- } else {
- console.log(res.msg);
- }
- }
- });
- }
-
- /**
- * 寮哄埗鍒囨崲鍏ュ嚭搴撴ā寮�
- */
- function ioModeSwitch(el) {
- var floor = el.split("-")[2];
- if (ioModeData != null && ioModeData.length > 1) {
- ioModeData.forEach(function(e) {
- if (e.floor === Number(floor)) {
- if (e.modeVal === 3 || e.modeVal === 4) {
- layer.confirm('纭畾鍒囨崲涓哄叆搴撴ā寮忓悧锛�',function () {
- $.ajax({
- url: baseUrl+ "/site/io/mode/action/site",
- headers: {'token': localStorage.getItem('token')},
- data: {floor: e.floor},
- method: 'POST',
- success: function (res) {
- if (res.code === 200){
- layer.msg("鏆傛椂涓嶈兘鍒囨崲锛�", {icon: 1})
- } else if (res.code === 403){
- window.location.href = baseUrl+"/login";
- } else {
- console.log(res.msg);
- }
- }
- });
- layer.closeAll();
- })
- }
- }
- });
- }
-
}
// plc寮傚父淇℃伅琛ㄨ幏鍙�
--
Gitblit v1.9.1