From 876270f40c443d99729c5d98d629b74fa5a7a1c0 Mon Sep 17 00:00:00 2001
From: CZT <czt18638530771@163.com>
Date: 星期六, 07 十月 2023 12:03:48 +0800
Subject: [PATCH] 贝博粮情解析5
---
igds-core/src/main/java/com/ld/igds/util/BytesUtil.java | 45 +++++++++--
igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java | 161 ++++++++++++++++++++++-----------------
2 files changed, 127 insertions(+), 79 deletions(-)
diff --git a/igds-core/src/main/java/com/ld/igds/util/BytesUtil.java b/igds-core/src/main/java/com/ld/igds/util/BytesUtil.java
index ef8863e..1e1a5c5 100644
--- a/igds-core/src/main/java/com/ld/igds/util/BytesUtil.java
+++ b/igds-core/src/main/java/com/ld/igds/util/BytesUtil.java
@@ -190,6 +190,42 @@
return rsBinStr;
}
+ public static String hexString2binaryString(String hexString, int num) {
+ //16杩涘埗杞�10杩涘埗
+ BigInteger sint = new BigInteger(hexString, num);
+ //10杩涘埗杞�2杩涘埗
+ String str = sint.toString(2);
+ if(str.length() < num){
+ for (int i = str.length(); i < num; i++) {
+ str = "0" + str;
+ }
+ }
+ return str;
+ }
+
+ /**
+ * 灏嗕簩杩涘埗杞崲涓�10杩涘埗
+ * @param binStr
+ * @return
+ */
+ public static Integer biannary2Decimal(String binStr){
+
+ Integer sum = 0;
+ int len = binStr.length();
+
+ for (int i=1;i<=len;i++){
+ //绗琲浣� 鐨勬暟瀛椾负锛�
+ int dt = Integer.parseInt(binStr.substring(i-1,i));
+ sum+=(int)Math.pow(2,len-i)*dt;
+ }
+ return sum;
+ }
+
+ public static void main(String[] args) {
+ String s = hexString2binaryString("21E9", 16);
+ System.out.println(s);
+ }
+
/**
* 涓嶈冻width涓瓧鑺傚搴︽椂锛屽墠闈㈣ˉ0鑷硍idth*8
*
@@ -362,15 +398,6 @@
nSum = nSum * nValue;
}
return nSum;
- }
-
- public static void main(String[] args) {
-
- String hex = "<END>";
- byte[] attr = hex.getBytes();
-
- hex = bytesToString(attr);
-
}
/**
diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java
index f93e77b..5a789b8 100644
--- a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java
+++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java
@@ -26,6 +26,7 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+
import java.util.*;
/**
@@ -54,21 +55,21 @@
public static String result = "";
- public static Map<String, String> contextMap = new HashMap<>();
-
public static double ERROR_CHECK_TAG = -100.0;
public static double FAULT_CHECK_TAG = 85.0;
public static double ERROR_CHECK_TAG2 = 50;
+ public static String ERROR_HEX = "FFFF";
public static double MAX_TEMP = -50.0;
public static double MIN_TEMP = 50.0;
public static void main(String[] args) {
String str = "00000000FFEB90FEAA41E821EC21EA21EC21ED21EC21E921E221E921E921E921EC21E921ED21F021E521E521E221E421E321E321E121DE21D721E021DD21DC21DF21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF";
- System.out.println(str.substring(9*2, 10*2));
+ System.out.println(str.substring(9 * 2, 10 * 2));
}
+
/**
* 00000000FFEB90FEAA41E821EC21EA21EC21ED21EC21E921E221E921E921E921EC21E921ED21F021E521E521E221E421E321E321E121DE21D721E021DD21DC21DF21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
*
@@ -77,59 +78,66 @@
public void analysis(String ip, int port, String hexStr) {
result += hexStr;
- if(result.length() < 1066*2){
+ if (result.length() < 1066 * 2) {
log.info("鍒嗘満------->>骞冲彴锛屾姤鏂囬暱搴︿笉澶燂紝绛夊緟涓嬩竴鍖呮暟鎹�");
return;
}
- //灏佽鏁版嵁
- ReMessage reMessage = ReMessageBuilder.getInstance().buildMessage(result);
- reMessage.setIp(ip);
- reMessage.setPort(port);
- log.info("鍒嗘満------->>骞冲彴锛氱伯鎯呭畬鏁存姤鏂囦俊鎭�={}", reMessage);
- result = "";
- if (!BeiboGrainServerUtils.MSG_START.startsWith(reMessage.getStartStr())) {
- log.error("鍒嗘満------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ細鎶ユ枃璧峰绗�={}閿欒锛屼笉瑙f瀽", reMessage.getStartStr());
- return;
+ try {
+
+
+ //灏佽鏁版嵁
+ ReMessage reMessage = ReMessageBuilder.getInstance().buildMessage(result);
+ reMessage.setIp(ip);
+ reMessage.setPort(port);
+ log.info("鍒嗘満------->>骞冲彴锛氱伯鎯呭畬鏁存姤鏂囦俊鎭�={}", reMessage);
+ result = "";
+ if (!BeiboGrainServerUtils.MSG_START.startsWith(reMessage.getStartStr())) {
+ log.error("鍒嗘満------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ細鎶ユ枃璧峰绗�={}閿欒锛屼笉瑙f瀽", reMessage.getStartStr());
+ return;
+ }
+
+ //鏍规嵁鍒嗘満鍦板潃鑾峰彇鍒嗘満淇℃伅
+ DeviceSer ser = coreSerService.getCacheSer(ContextUtil.getDefaultCompanyId(), reMessage.getSerId());
+ if (ser == null) {
+ log.error("鍒嗘満-------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ紝鏈幏鍙栧埌绯荤粺绮儏涓绘満閰嶇疆锛�" + reMessage.getSerId());
+ return;
+ }
+
+ List<ExeRequest> list = exeOrderService.getInProgressOrderBySerId(BizType.GRAIN.getCode(), ser.getId());
+ if (null == list || list.isEmpty()) {
+ String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍒版墍灞炰粨搴撲俊鎭��";
+ log.error("鍒嗘満------>>>骞冲彴锛�" + info);
+ notifyGrainInvoker.notifyWeb(ser.getCompanyId(), OrderRespEnum.MSG_ERROR, BizType.GRAIN, info);
+ return;
+ }
+
+ ExeRequest exeRequest = list.get(0);
+ log.info("鑾峰彇绮儏鍛戒护淇℃伅={}", exeRequest);
+ if (null == exeRequest) {
+ String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍘嗗彶鍛戒护銆�";
+ log.error("璐濆崥鍒嗘満------>>>骞冲彴锛�" + info);
+ return;
+ }
+
+ DepotConf depotConf = commonService.getCacheDepotConf(exeRequest.getCompanyId(), exeRequest.getDepotId());
+ if (null == depotConf) {
+ String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍒扮伯鎯呭弬鏁伴厤缃俊鎭��";
+ log.error("鍒嗘満------>>>骞冲彴锛�" + info);
+ notifyGrainInvoker.notifyWeb(ser.getCompanyId(),
+ OrderRespEnum.MSG_ERROR, BizType.GRAIN, info);
+ return;
+ }
+
+ // 棣栧厛鑾峰彇鍒扮郴缁熷弬鏁帮紝鍒ゆ柇鏄惁闇�瑕佹壒娆¤嚜鍔ㄤ紭鍖�
+ DicSysConf sysConf = commonService.getCacheSysConf(ser.getCompanyId());
+
+ reMessage.setCompanyId(ser.getCompanyId());
+ analysisGrain(depotConf, reMessage, ser, exeRequest, sysConf);
+ } catch (Exception e) {
+ result = "";
+ log.error("鍒嗘満------->>骞冲彴锛岃В鏋愮伯鎯呭紓甯革細鍘熷洜={}", e.toString());
}
-
- //鏍规嵁鍒嗘満鍦板潃鑾峰彇鍒嗘満淇℃伅
- DeviceSer ser = coreSerService.getCacheSer(ContextUtil.getDefaultCompanyId(), reMessage.getSerId());
- if (ser == null) {
- log.error("鍒嗘満-------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ紝鏈幏鍙栧埌绯荤粺绮儏涓绘満閰嶇疆锛�" + reMessage.getSerId());
- return;
- }
-
- List<ExeRequest> list = exeOrderService.getInProgressOrderBySerId(BizType.GRAIN.getCode(), ser.getId());
- if (null == list || list.isEmpty()) {
- String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍒版墍灞炰粨搴撲俊鎭��";
- log.error("鍒嗘満------>>>骞冲彴锛�" + info);
- notifyGrainInvoker.notifyWeb(ser.getCompanyId(), OrderRespEnum.MSG_ERROR, BizType.GRAIN, info);
- return;
- }
-
- ExeRequest exeRequest = list.get(0);
- log.info("鑾峰彇绮儏鍛戒护淇℃伅={}", exeRequest);
- if (null == exeRequest) {
- String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍘嗗彶鍛戒护銆�";
- log.error("璐濆崥鍒嗘満------>>>骞冲彴锛�" + info);
- return;
- }
-
- DepotConf depotConf = commonService.getCacheDepotConf(exeRequest.getCompanyId(), exeRequest.getDepotId());
- if (null == depotConf) {
- String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍒扮伯鎯呭弬鏁伴厤缃俊鎭��";
- log.error("鍒嗘満------>>>骞冲彴锛�" + info);
- notifyGrainInvoker.notifyWeb(ser.getCompanyId(),
- OrderRespEnum.MSG_ERROR, BizType.GRAIN, info);
- return;
- }
-
- // 棣栧厛鑾峰彇鍒扮郴缁熷弬鏁帮紝鍒ゆ柇鏄惁闇�瑕佹壒娆¤嚜鍔ㄤ紭鍖�
- DicSysConf sysConf = commonService.getCacheSysConf(ser.getCompanyId());
-
- reMessage.setCompanyId(ser.getCompanyId());
- analysisGrain(depotConf, reMessage, ser, exeRequest, sysConf);
}
@@ -255,15 +263,22 @@
temp = "0000";
}
//楂樹綆浣嶈浆鎹㈠悗杞负16浣嶄簩杩涘埗瀛楃涓�
- temp = BytesUtil.toBinary8StringSame(BytesUtil.hexToInt(BytesUtil.tran_LH(temp)), 16);
- //绗﹀彿浣�
- symbol = Integer.valueOf(temp.substring(0, 1));
- //鑾峰彇娓╁害鍊�
- tempValue = BytesUtil.hexToInt(BytesUtil.binToHex(temp.substring(6))) * 0.0625;
- if(symbol == 1){
- tempValue = (1- BytesUtil.hexToInt(BytesUtil.binToHex(temp.substring(6))))*0.0625;
+ temp = BytesUtil.tran_LH(temp);
+ if(ERROR_HEX.equals(temp)){
+ tempValue = Constant.ERROR_TEMP;
+ }else {
+ //10杩涘埗杞�16浣嶇殑2杩涘埗
+ temp = BytesUtil.hexString2binaryString(temp, 16);
+ //绗﹀彿浣�
+ symbol = Integer.valueOf(temp.substring(0, 1));
+ //鑾峰彇娓╁害鍊�
+ tempValue = BytesUtil.biannary2Decimal(temp.substring(6)) * 0.0625;
+ //鑻ヤ负璐燂紝鍒欒ˉ鐮侊細鍙栧弽鍔�1
+ if (symbol == 1) {
+ tempValue = ((~BytesUtil.biannary2Decimal(temp.substring(6))) + 1) * 0.0625;
+ }
+ tempValue = NumberUtil.keepPrecision(tempValue, 1);
}
- tempValue = NumberUtil.keepPrecision(tempValue, 1);
//闈炴甯稿��
if (tempValue > ERROR_CHECK_TAG2) {
@@ -370,16 +385,22 @@
temp = "0000";
}
- //楂樹綆浣嶈浆鎹㈠悗杞负16浣嶄簩杩涘埗瀛楃涓�
- temp = BytesUtil.toBinary8StringSame(BytesUtil.hexToInt(BytesUtil.tran_LH(temp)), 16);
- //绗﹀彿浣�
- symbol = Integer.valueOf(temp.substring(0, 1));
- //鑾峰彇娓╁害鍊�
- tempValue = BytesUtil.hexToInt(BytesUtil.binToHex(temp.substring(6))) * 0.0625;
- if(symbol == 1){
- tempValue = (1- BytesUtil.hexToInt(BytesUtil.binToHex(temp.substring(6))))*0.0625;
+ if(ERROR_HEX.equals(temp)){
+ tempValue = Constant.ERROR_TEMP;
+ }else {
+ //10杩涘埗杞�16浣嶇殑2杩涘埗
+ temp = BytesUtil.hexString2binaryString(temp, 16);
+ //绗﹀彿浣�
+ symbol = Integer.valueOf(temp.substring(0, 1));
+ //鑾峰彇娓╁害鍊�
+ tempValue = BytesUtil.biannary2Decimal(temp.substring(6)) * 0.0625;
+ //鑻ヤ负璐燂紝鍒欒ˉ鐮侊細鍙栧弽鍔�1
+ if (symbol == 1) {
+ tempValue = ((~BytesUtil.biannary2Decimal(temp.substring(6))) + 1) * 0.0625;
+ }
+ tempValue = NumberUtil.keepPrecision(tempValue, 1);
}
- tempValue = NumberUtil.keepPrecision(tempValue, 1);
+
// 璇存槑瑙f瀽鐨勬暟鎹湁闂
if (tempValue == ERROR_CHECK_TAG || tempValue == ERROR_CHECK_TAG2) {
tempValue = Constant.ERROR_TEMP;
@@ -442,7 +463,7 @@
grain.setTempIn(Constant.ERROR_TEMP);
grain.setHumidityIn(Constant.ERROR_TEMP);
- grain.setReceiveDate(msg.getReceiveDate());
+ grain.setReceiveDate(new Date());
grain.setRemark("绮俯姝e父");
// 鑾峰彇缂撳瓨涓殑鍛戒护淇℃伅
@@ -524,7 +545,7 @@
grain.setTempIn(Constant.ERROR_TEMP);
grain.setHumidityIn(Constant.ERROR_TEMP);
- grain.setReceiveDate(msg.getReceiveDate());
+ grain.setReceiveDate(new Date());
grain.setRemark("绮俯姝e父");
grain.setCheckUser(exeRequest.getExeUser());
--
Gitblit v1.9.3