From 4aaf4991f544da347574c1abb10c72762e60a9b1 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 30 一月 2021 15:37:38 +0800
Subject: [PATCH] #磅秤
---
src/main/java/com/zy/asrs/controller/ConsoleController.java | 19 ++++
src/main/java/com/zy/asrs/domain/vo/ScaleDataVo.java | 18 ++++
src/main/webapp/views/console.html | 31 +++++++
src/main/webapp/static/css/console.css | 15 +++
src/main/java/com/zy/core/thread/ScaleThread.java | 136 ++++++++++++++++++++++++++++++++++
src/main/java/com/zy/core/ServerBootstrap.java | 9 +
6 files changed, 225 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java
index b4d1309..b5792d8 100644
--- a/src/main/java/com/zy/asrs/controller/ConsoleController.java
+++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -1,6 +1,7 @@
package com.zy.asrs.controller;
import com.core.annotations.ManagerAuth;
+import com.core.common.Arith;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.asrs.domain.enums.CrnStatusType;
@@ -25,6 +26,7 @@
import com.zy.core.properties.SlaveProperties;
import com.zy.core.properties.SystemProperties;
import com.zy.core.thread.BarcodeThread;
+import com.zy.core.thread.ScaleThread;
import com.zy.core.thread.SiemensCrnThread;
import com.zy.core.DevpThread;
import lombok.extern.slf4j.Slf4j;
@@ -166,6 +168,23 @@
return R.ok().add(list);
}
+ @PostMapping("/latest/data/scale")
+ @ManagerAuth(memo = "纾呯Г瀹炴椂鏁版嵁")
+ public R scaleLatestData(){
+ List<ScaleDataVo> list = new ArrayList<>();
+ for (Slave scale : slaveProperties.getScale()) {
+ ScaleThread scaleThread = (ScaleThread) SlaveConnection.get(SlaveType.Scale, scale.getId());
+ if (null == scaleThread) {
+ continue;
+ }
+ ScaleDataVo vo = new ScaleDataVo();
+ vo.setScaleId(scale.getId());
+ vo.setValue(String.valueOf(Arith.multiplys(1, scaleThread.getScale(), 1)));
+ list.add(vo);
+ }
+ return R.ok().add(list);
+ }
+
/****************************************************************/
/************************** 璇︽儏鎿嶄綔 ******************************/
/****************************************************************/
diff --git a/src/main/java/com/zy/asrs/domain/vo/ScaleDataVo.java b/src/main/java/com/zy/asrs/domain/vo/ScaleDataVo.java
new file mode 100644
index 0000000..1b1aefb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/vo/ScaleDataVo.java
@@ -0,0 +1,18 @@
+package com.zy.asrs.domain.vo;
+
+import lombok.Data;
+
+/**
+ * 纾呯Г瀹炴椂鏁版嵁瑙嗗浘瀵硅薄
+ * Created by vincent on 2020-06-03
+ */
+@Data
+public class ScaleDataVo {
+
+ // 纾呯Г缂栧彿
+ private Integer scaleId;
+
+ // 纾呯Г鍐呭
+ private String value;
+
+}
diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index 9e5e95d..26d14a9 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -78,7 +78,6 @@
new Thread((Runnable) crnThread).start();
SlaveConnection.put(SlaveType.Crn, crn.getId(), crnThread);
}
-
// 鍒濆鍖栬緭閫佺嚎绾跨▼
log.info("鍒濆鍖栬緭閫佺嚎绾跨▼...................................................");
for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -86,7 +85,6 @@
new Thread((Runnable) devpThread).start();
SlaveConnection.put(SlaveType.Devp, devp.getId(), devpThread);
}
-
// 鍒濆鍖栨潯鐮佹壂鎻忎华绾跨▼
log.info("鍒濆鍖栨潯鐮佹壂鎻忎华绾跨▼...................................................");
for (Slave barcode : slaveProperties.getBarcode()) {
@@ -101,6 +99,13 @@
new Thread(ledThread).start();
SlaveConnection.put(SlaveType.Led, led.getId(), ledThread);
}
+ // 鍒濆鍖栫绉ょ嚎绋�
+ log.info("鍒濆鍖栫绉ょ嚎绋�...................................................");
+ for (Slave scale : slaveProperties.getScale()) {
+ ScaleThread barcodeThread = new ScaleThread(scale);
+ new Thread(barcodeThread).start();
+ SlaveConnection.put(SlaveType.Scale, scale.getId(), barcodeThread);
+ }
}
diff --git a/src/main/java/com/zy/core/thread/ScaleThread.java b/src/main/java/com/zy/core/thread/ScaleThread.java
new file mode 100644
index 0000000..c5a2d4b
--- /dev/null
+++ b/src/main/java/com/zy/core/thread/ScaleThread.java
@@ -0,0 +1,136 @@
+package com.zy.core.thread;
+
+import com.core.common.Cools;
+import com.zy.core.Slave;
+import com.zy.core.ThreadHandler;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.SocketAddress;
+import java.net.SocketTimeoutException;
+
+/**
+ * 纾呯Г绾跨▼
+ * Created by vincent on 2020/8/4
+ */
+@Data
+@Slf4j
+public class ScaleThread implements Runnable, ThreadHandler {
+
+ private Slave slave;
+ private Double scale = 0.0D;
+ private Socket socket;
+ private DataOutputStream dataOutputStream;
+ private DataInputStream dataInputStream;
+
+ public ScaleThread(Slave slave) {
+ this.slave = slave;
+ }
+
+ @Override
+ @SuppressWarnings("InfiniteLoopStatement")
+ public void run() {
+ connect();
+ while (true) {
+ try {
+ byte[] read = read(8, 100);
+ if (null != read) {
+ String s = new String(read);
+ if (!Cools.isEmpty(s) && s.startsWith("=")) {
+ scale = Double.parseDouble(s.substring(1));
+ }
+ }
+ Thread.sleep(100);
+ } catch (SocketTimeoutException ignore) {
+ } catch (Exception e) {
+// e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public boolean connect() {
+ try {
+ close(); //1.涓诲姩閲婃斁杩炴帴 //2.鏌愪簺鏈嶅姟鍣ㄥ鎸囧畾ip鏈夐摼璺暟闄愬埗
+ socket = new Socket();
+ //socket.setKeepAlive(true);
+ SocketAddress socketAddress = new InetSocketAddress(slave.getIp(), slave.getPort());
+ socket.connect(socketAddress, 1000); //鏌愪簺鏈嶅姟鍣╬ing寤惰繜楂樻椂瑕佸鍔�,鍚﹀垯浼氭姤閿檆onnect timeout
+ dataOutputStream = new DataOutputStream(socket.getOutputStream());
+ dataInputStream = new DataInputStream(socket.getInputStream());
+// log.info("鏉$爜鎵弿浠繛鎺ユ垚鍔� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ } catch (Exception e) {
+ socket = null;
+ log.error("鏉$爜鎵弿浠繛鎺ュけ璐ワ紒锛侊紒 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void close() {
+ try {
+ if (null != dataOutputStream) {
+ dataOutputStream.close();
+ }
+ if (null != dataInputStream) {
+ dataInputStream.close();
+ }
+// if (null != socket && !socket.isClosed()) {
+// socket.close();
+// }
+ if (null != socket){
+ socket.close();
+ }
+ socket = null;
+ } catch (IOException e) {
+ log.error("SocketClient close Exception:" + e.getMessage());
+ }
+ }
+
+ public void write(byte[] msg, int len) throws IOException {
+ if (null != dataInputStream)
+ {
+ dataOutputStream.write(msg, 0, len);
+ dataOutputStream.flush();
+ }
+ }
+
+ public byte[] read(int bufferSize, int timeOut) throws IOException {
+// if (socket == null) {
+// connect();
+// }
+ connect();
+ socket.setSoTimeout(timeOut);
+ byte[] bytes = new byte[bufferSize];
+ int len = dataInputStream.read(bytes);
+ byte[] tempBytes = null;
+ if (len > 0) {
+ tempBytes = new byte[len];
+ System.arraycopy(bytes, 0, tempBytes, 0, len);
+ }
+ return tempBytes;
+ }
+
+ public boolean valid() throws Exception {
+ if (null == socket || socket.isClosed() || socket.isInputShutdown() || socket.isOutputShutdown()) {
+ if (dataInputStream != null) {
+ dataInputStream.close();
+ }
+ if (dataOutputStream != null) {
+ dataOutputStream.close();
+ }
+ if (socket != null) {
+ socket.close();
+ }
+ return false;
+ }
+ return true;
+ }
+
+}
diff --git a/src/main/webapp/static/css/console.css b/src/main/webapp/static/css/console.css
index a8f9f6e..a43cfe5 100644
--- a/src/main/webapp/static/css/console.css
+++ b/src/main/webapp/static/css/console.css
@@ -465,6 +465,21 @@
font-size: xx-small;
margin-left: 35px;
}
+/* 纾呯Г */
+.scale {
+ position: absolute;
+ width: 50px;
+ height: 20px;
+ /*background-image: url("../image/bscanner.png");*/
+ background-repeat: no-repeat;
+ background-size:100% 60%;
+ background-position: top center;
+}
+/* 纾呯Г1 */
+#scale-1 {
+ top: 290px;
+ left: 240px;
+}
/* 寮圭獥 */
form .form-item {
diff --git a/src/main/webapp/views/console.html b/src/main/webapp/views/console.html
index a2161f7..7c7048f 100644
--- a/src/main/webapp/views/console.html
+++ b/src/main/webapp/views/console.html
@@ -89,6 +89,10 @@
<div id="code-decoder-2" class="code-decoder">
<span id="code-decoder-data-2" class="code-decoder-data">0</span>
</div>
+ <!-- 纾呯Г -->
+ <div class="scale" id="scale-1">
+ <button id="scale-data-1">纾呯Г</button>
+ </div>
<!----------- 宸﹁緭閫佺嚎 ---------->
@@ -528,11 +532,13 @@
getCrnInfo();
getSystemRunningStatus();
getBarcodeInfo();
+ getScaleInfo();
// 瀹炴椂璁块棶
setInterval(function () {
getCrnInfo();
getSystemRunningStatus();
- getBarcodeInfo()
+ getBarcodeInfo();
+ getScaleInfo();
}, 1000);
setInterval(function () {
getSitesInfo();
@@ -689,6 +695,29 @@
});
}
+ // 纾呯Г瀹炴椂鏁版嵁鑾峰彇
+ function getScaleInfo(){
+ $.ajax({
+ url: baseUrl+ "/console/latest/data/scale",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'POST',
+ success: function (res) {
+
+ if (res.code === 200){
+ var sclaes = res.data;
+ for (var i = 0; i < sclaes.length; i++){
+ console.log(sclaes[i].scaleId + ":" + sclaes[i].value)
+ $("#scale-data-"+sclaes[i].scaleId).text(sclaes[i].value);
+ }
+ } else if (res.code === 403){
+ parent.location.href = baseUrl+"/login";
+ } else {
+ console.log(res.msg);
+ }
+ }
+ });
+ }
+
// 鍫嗗灈鏈哄亸绉诲姩鐢�
function crnAnimate(id, leftVal) {
switch (id) {
--
Gitblit v1.9.1