From b9b7d28c2ee64de19c2905eee98091f3eb68709f Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 25 十一月 2025 19:14:40 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/core/Slave.java | 5 ++
src/main/java/com/zy/core/cache/OutputQueue.java | 2 +
src/main/java/com/zy/core/thread/ScaleThread.java | 104 ++++++++++++++++++++++++++++++++++++++++++++-------
3 files changed, 96 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/zy/core/Slave.java b/src/main/java/com/zy/core/Slave.java
index 5d38e9d..fbddf55 100644
--- a/src/main/java/com/zy/core/Slave.java
+++ b/src/main/java/com/zy/core/Slave.java
@@ -14,4 +14,9 @@
private Integer port;
+ private Integer staNo;
+
+ // 杈撻�佺嚎plc缂栧彿
+ private Integer devpPlcId;
+
}
diff --git a/src/main/java/com/zy/core/cache/OutputQueue.java b/src/main/java/com/zy/core/cache/OutputQueue.java
index 65df862..9a4e678 100644
--- a/src/main/java/com/zy/core/cache/OutputQueue.java
+++ b/src/main/java/com/zy/core/cache/OutputQueue.java
@@ -15,6 +15,8 @@
public static ArrayBlockingQueue<String> DEVP = new ArrayBlockingQueue<>(32);
// 鏉$爜鍣ㄨ緭鍑烘棩蹇�
public static ArrayBlockingQueue<JSONObject> BARCODE = new ArrayBlockingQueue<>(32);
+ // 纾呯Г杈撳嚭鏃ュ織
+ public static ArrayBlockingQueue<JSONObject> SCALE = new ArrayBlockingQueue<>(32);
// rgv杈撳嚭鏃ュ織
public static ArrayBlockingQueue<String> RGV = new ArrayBlockingQueue<>(32);
}
diff --git a/src/main/java/com/zy/core/thread/ScaleThread.java b/src/main/java/com/zy/core/thread/ScaleThread.java
index ec2320a..9d6bc1e 100644
--- a/src/main/java/com/zy/core/thread/ScaleThread.java
+++ b/src/main/java/com/zy/core/thread/ScaleThread.java
@@ -1,9 +1,19 @@
package com.zy.core.thread;
+import com.alibaba.fastjson.JSONObject;
import com.core.common.Cools;
-import com.zy.common.utils.News;
+import com.core.common.DateUtils;
+import com.core.common.SpringUtils;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.service.DeviceErrorService;
+import com.zy.core.DevpThread;
import com.zy.core.Slave;
import com.zy.core.ThreadHandler;
+import com.zy.core.cache.OutputQueue;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.protocol.StaProtocol;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -14,6 +24,7 @@
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketTimeoutException;
+import java.util.Date;
/**
* 纾呯Г绾跨▼
@@ -42,8 +53,56 @@
byte[] read = read(8, 100);
if (null != read) {
String s = new String(read);
- if (!Cools.isEmpty(s) && s.startsWith("=")) {
+ if (!Cools.isEmpty(s) && s.startsWith("\u0002+")) {
+// if (!Cools.isEmpty(s) && s.startsWith("=")) {
scale = Double.parseDouble(s.substring(1));
+
+// System.out.println("scale:"+scale+ "ip:"+slave.getIp());
+// String substring = s.substring(1);
+// String s1 = new StringBuilder(substring).reverse().toString();//閫嗗簭
+// scale = Double.parseDouble(s1);
+ //灏嗙О閲嶉噸閲忓啓鍏ヨ澶囧熀纭�鏁版嵁涓殑gross_wt瀛楁
+// if(scale > 20) {
+ try{
+ // 鑾峰彇绔欎俊鎭�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, slave.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(slave.getStaNo());
+ if (staProtocol != null) {
+ if (scale>10000){
+ scale = scale-10000;
+ }
+ devpThread.setGrossWt(staProtocol.getSiteId(), scale);
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("time", DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F));
+ jsonObject.put("id", slave.getStaNo());
+ jsonObject.put("scale", scale);
+ if (OutputQueue.SCALE.size() >= 32) {
+ OutputQueue.SCALE.poll();
+ }
+ OutputQueue.SCALE.offer(jsonObject);
+ }
+ } catch (Exception e){
+ log.error("绉伴噸妯″潡寮傚父"+e .getMessage());
+ }
+// BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+// BasDevp basDevp = basDevpService.selectById(slave.getStaNo());
+// if(!Cools.isEmpty(basDevp)) {
+// basDevp.setGrossWt(scale);
+// if (null != basDevpService && !basDevpService.updateById(basDevp)) {
+// throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+// }
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.put("time", DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F));
+// jsonObject.put("id", slave.getStaNo());
+// jsonObject.put("scale", scale);
+// if (OutputQueue.SCALE.size() >= 32) {
+// OutputQueue.SCALE.poll();
+// }
+// OutputQueue.SCALE.offer(jsonObject);
+//
+// }
+// }
}
}
Thread.sleep(100);
@@ -56,6 +115,7 @@
@Override
public boolean connect() {
+
try {
close(); //1.涓诲姩閲婃斁杩炴帴 //2.鏌愪簺鏈嶅姟鍣ㄥ鎸囧畾ip鏈夐摼璺暟闄愬埗
socket = new Socket();
@@ -65,9 +125,23 @@
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataInputStream = new DataInputStream(socket.getInputStream());
// log.info("鏉$爜鎵弿浠繛鎺ユ垚鍔� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.deleteDeviceError("Scale", slave.getId());
+ } catch (Exception e){
+// log.error("e:"+e.getMessage());
+ }
} catch (Exception e) {
socket = null;
- News.error("Scale"+" - 1"+" - 鏉$爜鎵弿浠繛鎺ュけ璐ワ紒锛侊紒 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+// log.error("纾呯Г杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+// DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+// deviceErrorService.addDeviceError("scale", slave.getId(), "纾呯Г杩炴帴澶辫触");
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.deleteDeviceError("Scale", slave.getId());
+ } catch (Exception e1){
+// log.error("e:"+e1.getMessage());
+ }
return false;
}
return true;
@@ -77,20 +151,20 @@
public void close() {
try {
if (null != dataOutputStream) {
- dataOutputStream.close();
- }
- if (null != dataInputStream) {
- dataInputStream.close();
- }
+ dataOutputStream.close();
+ }
+ if (null != dataInputStream) {
+ dataInputStream.close();
+ }
// if (null != socket && !socket.isClosed()) {
// socket.close();
// }
- if (null != socket){
- socket.close();
- }
- socket = null;
+ if (null != socket){
+ socket.close();
+ }
+ socket = null;
} catch (IOException e) {
- News.error("Scale"+" - 2"+" - SocketClient close Exception:" + e.getMessage());
+ log.error("SocketClient close Exception:" + e.getMessage());
}
}
@@ -112,8 +186,8 @@
int len = dataInputStream.read(bytes);
byte[] tempBytes = null;
if (len > 0) {
- tempBytes = new byte[len];
- System.arraycopy(bytes, 0, tempBytes, 0, len);
+ tempBytes = new byte[len];
+ System.arraycopy(bytes, 0, tempBytes, 0, len);
}
return tempBytes;
}
--
Gitblit v1.9.1