From dd7a033e4591b8004ecd570ef4ff2ef925df65bc Mon Sep 17 00:00:00 2001
From: jiazx0107@163.com <jiazx0107@163.com>
Date: 星期五, 19 一月 2024 23:28:50 +0800
Subject: [PATCH] 增加油罐仓的解析
---
src/main/java/com/fzzy/async/fzzy40/entity/Fz40Grain.java | 5
src/main/java/com/fzzy/gateway/hx2023/data/GrainTH.java | 2
src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java | 2
src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java | 1
src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java | 202 ++++++++++++++++++++++--
src/main/resources/application-pro5012.yml | 2
src/main/java/com/fzzy/api/utils/RedisConst.java | 7
src/main/resources/application-pro.yml | 2
src/main/java/com/fzzy/protocol/data/GrainCableData.java | 19 ++
src/main/resources/application-devGateway.yml | 2
src/main/resources/application-pro5303.yml | 2
src/main/resources/application-proGateway.yml | 2
src/main/java/com/fzzy/protocol/bhzn/v0/analysis/AnalysisService.java | 221 +++++++++++++++++++++++---
src/main/resources/application.yml | 2
14 files changed, 409 insertions(+), 62 deletions(-)
diff --git a/src/main/java/com/fzzy/api/utils/RedisConst.java b/src/main/java/com/fzzy/api/utils/RedisConst.java
index 6b9869f..58d40fb 100644
--- a/src/main/java/com/fzzy/api/utils/RedisConst.java
+++ b/src/main/java/com/fzzy/api/utils/RedisConst.java
@@ -8,7 +8,12 @@
public class RedisConst {
- /**
+ /**
+ * 浠撳簱娑蹭綅鏁版嵁缂撳瓨
+ */
+ public static final String KEY_DEPOT_HEIGHT = "DEPOT_HEIGHT";
+
+ /**
* 瀛楀吀琛ㄧ紦瀛�
*/
public static String KYE_LIST_TRIGGER = "LIST_TRIGGER";
diff --git a/src/main/java/com/fzzy/async/fzzy40/entity/Fz40Grain.java b/src/main/java/com/fzzy/async/fzzy40/entity/Fz40Grain.java
index 9a366f3..afbb66e 100644
--- a/src/main/java/com/fzzy/async/fzzy40/entity/Fz40Grain.java
+++ b/src/main/java/com/fzzy/async/fzzy40/entity/Fz40Grain.java
@@ -81,6 +81,7 @@
@Column(name = "OIL_HEIGHT_", length = 20)
private String oilHeight;
+
@Column(name = "WEATHER_", length = 20)
@PropertyDef(label = "澶╂皵", description = "鐩存帴濉啓涓枃淇℃伅锛屾櫞锛岄槾闆ㄥぉ")
private String weather = "";
@@ -104,4 +105,8 @@
@Transient
@PropertyDef(label = "鎵�灞炲垎搴�", description = "鍒嗗簱缂栫爜锛岄潪鏁版嵁搴撳瓧娈�")
private String deptId;
+
+ @Transient
+ @PropertyDef(label = "寤虹瓚楂樺害")
+ private String depotHeight;
}
diff --git a/src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java b/src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java
index 9c9dcd0..bbc6cf4 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java
@@ -25,6 +25,6 @@
private String weatherStation;
-
+ private String properties;
}
diff --git a/src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java b/src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java
index b902384..65b1c93 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java
@@ -1,6 +1,5 @@
package com.fzzy.gateway.hx2023.data;
-import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import java.util.List;
diff --git a/src/main/java/com/fzzy/gateway/hx2023/data/GrainTH.java b/src/main/java/com/fzzy/gateway/hx2023/data/GrainTH.java
index 2cabdfb..2555434 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/data/GrainTH.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/data/GrainTH.java
@@ -17,7 +17,7 @@
//娓╁害鍊�
private String temperature;
- //娓╁害鍊�
+ //婀垮害鍊�
private String humidity;
//绱㈠紩锛屼粠0寮�濮�
diff --git a/src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java b/src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java
index ed9e782..ffc5f7b 100644
--- a/src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java
+++ b/src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java
@@ -6,6 +6,9 @@
import com.fzzy.api.data.GatewayDeviceType;
import com.fzzy.api.utils.BytesUtil;
import com.fzzy.api.utils.NumberUtil;
+import com.fzzy.api.utils.RedisConst;
+import com.fzzy.api.utils.RedisUtil;
+import com.fzzy.data.ConfigData;
import com.fzzy.gateway.GatewayUtils;
import com.fzzy.gateway.api.GatewayDeviceReportService;
import com.fzzy.gateway.api.GatewayRemoteManager;
@@ -18,10 +21,12 @@
import com.fzzy.protocol.bhzn.cmd.CommandBuild;
import com.fzzy.protocol.bhzn.cmd.ReMessageBuilder;
import com.fzzy.protocol.bhzn.data.IoMessage;
+import com.fzzy.protocol.data.GrainCableData;
import com.fzzy.protocol.data.THDto;
import com.fzzy.protocol.bhzn.server.BhznGrainV2ServerEngine;
import com.fzzy.protocol.bhzn.server.BhznGrainV2ServerUtils;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -41,6 +46,10 @@
@Resource
private GatewayRemoteManager gatewayRemoteManager;
+ @Resource
+ private ConfigData configData;
+ @Resource
+ private RedisUtil redisUtil;
/**
* 閽堝鍒嗗寘绮儏鎶ユ枃杩涜灏佽
@@ -114,7 +123,6 @@
}
-
//鑾峰彇璇锋眰淇℃伅
BaseReqData reqData = ProtocolUtils.getSyncReq(gatewayDevice.getDepotIdSys());
if (null == reqData) {
@@ -124,11 +132,8 @@
}
// 鍒ゆ柇鏁版嵁鏈夋病鏈夋敹鍙栧畬鏁�
- String[] attCable = gatewayDevice.getCableRule().split("-");
- int cableZ = Integer.valueOf(attCable[0]);
- int cableY = Integer.valueOf(attCable[1]);
- int cableX = Integer.valueOf(attCable[2]);
- int sumPoint = cableZ * cableY * cableX;
+ GrainCableData cableData = this.getCableData(gatewayDevice);
+ int sumPoint = cableData.getSumNum();
//鑾峰彇褰撳墠绮儏娓╁害鎶ユ枃
String grainHex = message.getContent().substring(16);
@@ -141,7 +146,7 @@
log.info("鍒嗘満------>>>骞冲彴锛氱伯鎯呮暟鎹崟鍖�=" + grainHex);
//杩斿洖绮儏鎺ユ敹淇℃伅
replayGrain(message);
- analysisGrain2(message, reqData, grainHex);
+ analysisGrain2(message, reqData, grainHex, cableData);
return;
}
@@ -162,7 +167,7 @@
//杩斿洖绮儏鎺ユ敹淇℃伅
replayGrain(message);
log.info("鍒嗘満------>>>骞冲彴锛氱伯鎯呮暟鎹鍖咃紝瀹屾暣鏁版嵁=" + grainHex);
- analysisGrain2(message, reqData, grainHex);
+ analysisGrain2(message, reqData, grainHex, cableData);
return;
} else {
@@ -174,6 +179,39 @@
} catch (Exception e) {
log.error(e.getMessage(), e);
}
+ }
+
+ private GrainCableData getCableData(GatewayDevice gatewayDevice) {
+ String cableRule = gatewayDevice.getCableRule();
+ String cableCir = gatewayDevice.getCableCir();
+
+ GrainCableData result = new GrainCableData();
+
+ int cableY, cableX;
+ String[] attCable = cableRule.split("-");
+ int cableZ = Integer.valueOf(attCable[0]);
+ if (StringUtils.isEmpty(cableCir)) {
+ cableY = Integer.valueOf(attCable[1]);
+ cableX = Integer.valueOf(attCable[2]);
+ } else {
+ String[] attCir = cableCir.split("-");
+ cableZ = Integer.valueOf(attCir[0]);
+ cableY = 1;
+ cableX = 0;
+ //閽堝澶氬湀璁$畻
+ for (int i = 0; i < cableCir.length(); i++) {
+ cableX += Integer.valueOf(attCir[i]);
+ }
+
+ result.setCir(true);
+ }
+
+ result.setCableY(cableY);
+ result.setCableZ(cableZ);
+ result.setCableX(cableX);
+ result.setSumNum(cableZ * cableY * cableX);
+
+ return result;
}
/**
@@ -189,17 +227,17 @@
BhznGrainV2ServerEngine.push(message.getIp(), message.getPort(), BytesUtil.hexStrToBytes(hexStr));
}
- private void analysisGrain2(IoMessage message, BaseReqData reqData, String grainStr) {
+ private void analysisGrain2(IoMessage message, BaseReqData reqData, String grainStr, GrainCableData cableData) {
GatewayDevice device = reqData.getDevice();
// 鑾峰彇瀹屾暣鐨勭伯鎯呭寘淇℃伅
- String[] attCable = device.getCableRule().split("-");
- int cableZ = Integer.valueOf(attCable[0]);
- int cableY = Integer.valueOf(attCable[1]);
- int cableX = Integer.valueOf(attCable[2]);
+ int cableZ = cableData.getCableZ();
+ int cableY = cableData.getCableY();
+ int cableX = cableData.getCableX();
+ int sumNum = cableData.getSumNum();
// 鏍规嵁灞傝鍒楄幏鍙栨寚瀹氶暱搴�
int start = 0;
- int len = 4 * cableZ * cableY * cableX;
+ int len = 4 * sumNum;
log.info("鍒嗘満------>>>骞冲彴锛氳繑鍥炵伯鎯呭畬鏁翠俊鎭紝鍒嗘満={}", device.getDeviceName());
@@ -235,8 +273,129 @@
String key = "GRAIN_" + message.getAddr();
contextMapGrain.put(key, null);
- // 灏嗛泦鍚堣В鏋愭垚鍧愭爣鏁版嵁
- addPoint1(temps, reqData, thDto);
+ if (cableData.isCir()) {
+ //绛掍粨
+ analysisAndPush2(temps, reqData, thDto, cableData);
+ } else {
+ //骞虫埧浠�
+ analysisAndPush1(temps, reqData, thDto, cableData);
+ }
+ }
+
+ /**
+ * 绛掍粨瑙f瀽锛岃В鏋愮浜屾锛岃В鏋愬埌鍧愭爣鏁版嵁
+ *
+ * @param temps
+ * @throws Exception
+ */
+ private void analysisAndPush2(List<Double> temps, BaseReqData reqData, THDto thDto, GrainCableData cableData) {
+
+ GatewayDevice device = reqData.getDevice();
+
+ int cableZ = cableData.getCableZ();
+ int cableY = cableData.getCableY();
+ int cableX = cableData.getCableX();
+
+ int sumNum = temps.size();
+
+ //鏁版嵁灏佽
+ GrainData grain = new GrainData();
+ grain.setMessageId(ScConstant.getMessageId());
+ grain.setDeviceId(device.getDeviceId());
+ grain.setTimestamp(System.currentTimeMillis() + "");
+
+ ClientHeaders headers = new ClientHeaders();
+ headers.setDeviceName(device.getDeviceName());
+ headers.setProductId(device.getProductId());
+ headers.setOrgId(device.getOrgId());
+ headers.setMsgId(reqData.getMessageId());
+ grain.setHeaders(headers);
+
+
+ GrainOutPut outPut = new GrainOutPut();
+
+
+ double max = com.fzzy.protocol.bhzn.v0.cmd.ReMessageBuilder.MAX_TEMP, min = com.fzzy.protocol.bhzn.v0.cmd.ReMessageBuilder.MIN_TEMP, sumT = 0.0;
+
+ List<GrainTemp> temperature = new ArrayList<>();
+ //鏍瑰彿
+ int cableNum = 1, position = 0;
+
+ double curTemp;
+ int x = 0, y = 0, z = 0;
+ for (int i = 0; i < sumNum; i++) {
+ curTemp = temps.get(i);
+ position = i;
+
+ z = i % cableZ + 1;
+ x = i / (cableZ * cableY);
+ y = x * (cableZ * cableY);
+ y = (i - y) / cableZ;
+ //鏍瑰彿
+ cableNum = (i / cableZ) + 1;
+
+ temperature.add(new GrainTemp(cableNum + "", z + "", curTemp + "", position + ""));
+
+ //姹傛渶澶ф渶灏忓��
+ if (curTemp < -900) {
+ sumNum--;
+ } else {
+ sumT += curTemp;
+ if (curTemp > max) {
+ max = curTemp;
+ }
+ if (curTemp < min) {
+ min = curTemp;
+ }
+ }
+ }
+
+ if (sumNum == 0) {
+ sumNum = 1;
+ log.warn("---褰撳墠绮儏閲囬泦寮傚父--");
+ }
+ //杩囨护姣旇緝鐢ㄧ殑鏈�澶ф渶灏忓��
+ if (max == com.fzzy.protocol.bhzn.v0.cmd.ReMessageBuilder.MAX_TEMP) {
+ max = 0.0;
+ }
+ if (min == com.fzzy.protocol.bhzn.v0.cmd.ReMessageBuilder.MIN_TEMP) {
+ min = 0.0;
+ }
+
+ outPut.setTemperature(temperature);
+ outPut.setAvgTemperature(NumberUtil.keepPrecision((sumT / sumNum), 1) + "");
+ outPut.setMinTemperature(min + "");
+ outPut.setMaxTemperature(min + "");
+
+
+ JSONObject properties = new JSONObject();
+ properties.put("data", JSONObject.toJSONString(outPut));
+ properties.put("timestamp", grain.getTimestamp());
+
+ String height = this.getCacheHeight(device);
+ if (StringUtils.isEmpty(height)) height = "0.0";
+ properties.put("liquidHeight", height);
+
+ grain.setProperties(properties.toJSONString());
+
+ //灏佽濂界殑鏁版嵁
+ log.info("---娴呭渾浠撳皝瑁呭畬鎴�----寮�濮嬫墽琛屾帹閫�");
+
+ reqData.setData(JSONObject.toJSONString(grain));
+
+ doPushGrain(reqData);
+ }
+
+ /**
+ * 浠嶳EDIS涓幏鍙栨恫浣嶉珮搴︿俊鎭�
+ *
+ * @param device
+ * @return
+ */
+ private String getCacheHeight(GatewayDevice device) {
+ //缁欏叾浠栬蒋浣跨敤
+ String key = RedisConst.KEY_DEPOT_HEIGHT + ":" + configData.getCompanyId() + "_" + device.getDepotIdSys();
+ return (String) redisUtil.get(key);
}
@@ -246,14 +405,13 @@
* @param temps
* @throws Exception
*/
- private void addPoint1(List<Double> temps, BaseReqData reqData, THDto thDto) {
+ private void analysisAndPush1(List<Double> temps, BaseReqData reqData, THDto thDto, GrainCableData cableData) {
GatewayDevice device = reqData.getDevice();
- String[] attCable = device.getCableRule().split("-");
- int cableZ = Integer.valueOf(attCable[0]);
- int cableY = Integer.valueOf(attCable[1]);
- int cableX = Integer.valueOf(attCable[2]);
+ int cableZ = cableData.getCableZ();
+ int cableY = cableData.getCableY();
+ int cableX = cableData.getCableX();
//鏁版嵁灏佽
GrainData grain = new GrainData();
@@ -325,7 +483,7 @@
outPut.setMaxTemperature(min + "");
List<GrainTH> ths = new ArrayList<>();
- ths.add(new GrainTH(thDto.getTempIn()!=null?thDto.getTempIn()+"":"",thDto.getHumidityIn()!=null?thDto.getHumidityIn()+"":"","1"));
+ ths.add(new GrainTH(thDto.getTempIn() != null ? thDto.getTempIn() + "" : "", thDto.getHumidityIn() != null ? thDto.getHumidityIn() + "" : "", "1"));
outPut.setTemperatureAndhumidity(ths);
grain.setOutput(JSONObject.toJSONString(outPut));
diff --git a/src/main/java/com/fzzy/protocol/bhzn/v0/analysis/AnalysisService.java b/src/main/java/com/fzzy/protocol/bhzn/v0/analysis/AnalysisService.java
index 7e131b3..6caca77 100644
--- a/src/main/java/com/fzzy/protocol/bhzn/v0/analysis/AnalysisService.java
+++ b/src/main/java/com/fzzy/protocol/bhzn/v0/analysis/AnalysisService.java
@@ -6,6 +6,10 @@
import com.fzzy.api.data.GatewayDeviceType;
import com.fzzy.api.utils.BytesUtil;
import com.fzzy.api.utils.NumberUtil;
+import com.fzzy.api.utils.RedisConst;
+import com.fzzy.api.utils.RedisUtil;
+import com.fzzy.async.fzzy40.entity.Fz40Grain;
+import com.fzzy.data.ConfigData;
import com.fzzy.gateway.GatewayUtils;
import com.fzzy.gateway.api.GatewayDeviceReportService;
import com.fzzy.gateway.api.GatewayRemoteManager;
@@ -20,8 +24,11 @@
import com.fzzy.protocol.bhzn.v0.data.IoMessage;
import com.fzzy.protocol.bhzn.v0.server.BhznGrainV0ServerEngine;
import com.fzzy.protocol.bhzn.v0.server.BhznGrainV0ServerUtils;
+import com.fzzy.protocol.data.GrainCableData;
import com.fzzy.protocol.data.THDto;
+import lombok.Data;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -41,6 +48,10 @@
@Resource
private GatewayRemoteManager gatewayRemoteManager;
+ @Resource
+ private ConfigData configData;
+ @Resource
+ private RedisUtil redisUtil;
/**
* 閽堝鍒嗗寘绮儏鎶ユ枃杩涜灏佽
@@ -97,7 +108,6 @@
*/
private void analysisGrain(IoMessage message) {
try {
-
//鏍规嵁鍒嗘満SN鑾峰彇璁惧閰嶇疆淇℃伅
GatewayDevice gatewayDevice = GatewayUtils.getCacheByDeviceSn(message.getAddr());
if (null == gatewayDevice) {
@@ -113,7 +123,6 @@
return;
}
-
//鑾峰彇璇锋眰淇℃伅
BaseReqData reqData = ProtocolUtils.getSyncReq(gatewayDevice.getDepotIdSys());
if (null == reqData) {
@@ -123,11 +132,7 @@
}
// 鍒ゆ柇鏁版嵁鏈夋病鏈夋敹鍙栧畬鏁�
- String[] attCable = gatewayDevice.getCableRule().split("-");
- int cableZ = Integer.valueOf(attCable[0]);
- int cableY = Integer.valueOf(attCable[1]);
- int cableX = Integer.valueOf(attCable[2]);
- int sumPoint = cableZ * cableY * cableX;
+ GrainCableData cableData = this.getCableData(gatewayDevice);
//鑾峰彇褰撳墠绮儏娓╁害鎶ユ枃
String grainHex = message.getContent().substring(16);
@@ -136,11 +141,11 @@
int curPoint = BytesUtil.hexToInt(BytesUtil.tran_LH(message.getContent().substring(4, 8)));
//濡傛灉褰撳墠鍖呯殑鏁版嵁涓暟澶т簬绛変簬褰撳墠浠撳簱鐨勯厤缃偣浣嶅垯琛ㄧず鍗曞寘杩斿洖
- if (curPoint >= sumPoint) {
+ if (curPoint >= cableData.getSumNum()) {
log.info("鍒嗘満------>>>骞冲彴锛氱伯鎯呮暟鎹崟鍖�=" + grainHex);
//杩斿洖绮儏鎺ユ敹淇℃伅
replayGrain(message);
- analysisGrain2(message, reqData, grainHex);
+ analysisGrain2(message, reqData, grainHex, cableData);
return;
}
@@ -157,13 +162,12 @@
grainHex = oldGrainHex + grainHex;
}
- if (grainHex.length() >= sumPoint * 4) {
+ if (grainHex.length() >= cableData.getSumNum() * 4) {
//杩斿洖绮儏鎺ユ敹淇℃伅
replayGrain(message);
log.info("鍒嗘満------>>>骞冲彴锛氱伯鎯呮暟鎹鍖咃紝瀹屾暣鏁版嵁=" + grainHex);
- analysisGrain2(message, reqData, grainHex);
+ analysisGrain2(message, reqData, grainHex, cableData);
return;
-
} else {
log.info("鍒嗘満------>>>骞冲彴锛氬皢绗竴鍖呮暟鎹瓨鍏ュ唴瀛�=" + grainHex);
contextMapGrain.put(key, grainHex);
@@ -173,6 +177,39 @@
} catch (Exception e) {
log.error(e.getMessage(), e);
}
+ }
+
+ private GrainCableData getCableData(GatewayDevice gatewayDevice) {
+ String cableRule = gatewayDevice.getCableRule();
+ String cableCir = gatewayDevice.getCableCir();
+
+ GrainCableData result = new GrainCableData();
+
+ int cableY, cableX;
+ String[] attCable = cableRule.split("-");
+ int cableZ = Integer.valueOf(attCable[0]);
+ if (StringUtils.isEmpty(cableCir)) {
+ cableY = Integer.valueOf(attCable[1]);
+ cableX = Integer.valueOf(attCable[2]);
+ } else {
+ String[] attCir = cableCir.split("-");
+ cableZ = Integer.valueOf(attCir[0]);
+ cableY = 1;
+ cableX = 0;
+ //閽堝澶氬湀璁$畻
+ for (int i = 0; i < cableCir.length(); i++) {
+ cableX += Integer.valueOf(attCir[i]);
+ }
+
+ result.setCir(true);
+ }
+
+ result.setCableY(cableY);
+ result.setCableZ(cableZ);
+ result.setCableX(cableX);
+ result.setSumNum(cableZ * cableY * cableX);
+
+ return result;
}
/**
@@ -188,17 +225,19 @@
BhznGrainV0ServerEngine.push(message.getIp(), message.getPort(), BytesUtil.hexStrToBytes(hexStr));
}
- private void analysisGrain2(IoMessage message, BaseReqData reqData, String grainStr) {
+ /**
+ * 鑾峰彇鍒版墍鏈夌殑绮儏鏁版嵁锛屽紑濮嬭В鏋�
+ *
+ * @param message
+ * @param reqData
+ * @param grainStr
+ */
+ private void analysisGrain2(IoMessage message, BaseReqData reqData, String grainStr, GrainCableData cableData) {
GatewayDevice device = reqData.getDevice();
- // 鑾峰彇瀹屾暣鐨勭伯鎯呭寘淇℃伅
- String[] attCable = device.getCableRule().split("-");
- int cableZ = Integer.valueOf(attCable[0]);
- int cableY = Integer.valueOf(attCable[1]);
- int cableX = Integer.valueOf(attCable[2]);
// 鏍规嵁灞傝鍒楄幏鍙栨寚瀹氶暱搴�
int start = 0;
- int len = 4 * cableZ * cableY * cableX;
+ int len = 4 * cableData.getSumNum();
log.info("鍒嗘満------>>>骞冲彴锛氳繑鍥炵伯鎯呭畬鏁翠俊鎭紝鍒嗘満={}", device.getDeviceName());
@@ -234,25 +273,31 @@
String key = "GRAIN_" + message.getAddr();
contextMapGrain.put(key, null);
- // 灏嗛泦鍚堣В鏋愭垚鍧愭爣鏁版嵁
- addPoint1(temps, reqData, thDto);
+
+ if (cableData.isCir()) {
+ //绛掍粨
+ analysisAndPush2(temps, reqData, thDto, cableData);
+ } else {
+ //骞虫埧浠�
+ analysisAndPush1(temps, reqData, thDto, cableData);
+ }
}
-
/**
- * 骞虫埧浠擄紝瑙f瀽绗簩姝ワ紝瑙f瀽鍒板潗鏍囨暟鎹�
+ * 绛掍粨瑙f瀽锛岃В鏋愮浜屾锛岃В鏋愬埌鍧愭爣鏁版嵁
*
* @param temps
* @throws Exception
*/
- private void addPoint1(List<Double> temps, BaseReqData reqData, THDto thDto) {
+ private void analysisAndPush2(List<Double> temps, BaseReqData reqData, THDto thDto, GrainCableData cableData) {
GatewayDevice device = reqData.getDevice();
- String[] attCable = device.getCableRule().split("-");
- int cableZ = Integer.valueOf(attCable[0]);
- int cableY = Integer.valueOf(attCable[1]);
- int cableX = Integer.valueOf(attCable[2]);
+ int cableZ = cableData.getCableZ();
+ int cableY = cableData.getCableY();
+ int cableX = cableData.getCableX();
+
+ int sumNum = temps.size();
//鏁版嵁灏佽
GrainData grain = new GrainData();
@@ -271,8 +316,123 @@
GrainOutPut outPut = new GrainOutPut();
- double max = ReMessageBuilder.MAX_TEMP, min = ReMessageBuilder.MIN_TEMP, sumT = 0.0, sumNum = cableX
- * cableY * cableZ;
+ double max = ReMessageBuilder.MAX_TEMP, min = ReMessageBuilder.MIN_TEMP, sumT = 0.0;
+
+ List<GrainTemp> temperature = new ArrayList<>();
+ //鏍瑰彿
+ int cableNum = 1, position = 0;
+
+ double curTemp;
+ int x = 0, y = 0, z = 0;
+ for (int i = 0; i < sumNum; i++) {
+ curTemp = temps.get(i);
+ position = i;
+
+ z = i % cableZ + 1;
+ x = i / (cableZ * cableY);
+ y = x * (cableZ * cableY);
+ y = (i - y) / cableZ;
+ //鏍瑰彿
+ cableNum = (i / cableZ) + 1;
+
+ temperature.add(new GrainTemp(cableNum + "", z + "", curTemp + "", position + ""));
+
+ //姹傛渶澶ф渶灏忓��
+ if (curTemp < -900) {
+ sumNum--;
+ } else {
+ sumT += curTemp;
+ if (curTemp > max) {
+ max = curTemp;
+ }
+ if (curTemp < min) {
+ min = curTemp;
+ }
+ }
+ }
+
+ if (sumNum == 0) {
+ sumNum = 1;
+ log.warn("---褰撳墠绮儏閲囬泦寮傚父--");
+ }
+ //杩囨护姣旇緝鐢ㄧ殑鏈�澶ф渶灏忓��
+ if (max == ReMessageBuilder.MAX_TEMP) {
+ max = 0.0;
+ }
+ if (min == ReMessageBuilder.MIN_TEMP) {
+ min = 0.0;
+ }
+
+ outPut.setTemperature(temperature);
+ outPut.setAvgTemperature(NumberUtil.keepPrecision((sumT / sumNum), 1) + "");
+ outPut.setMinTemperature(min + "");
+ outPut.setMaxTemperature(min + "");
+
+
+ JSONObject properties = new JSONObject();
+ properties.put("data", JSONObject.toJSONString(outPut));
+ properties.put("timestamp", grain.getTimestamp());
+
+ String height = this.getCacheHeight(device);
+ if (StringUtils.isEmpty(height)) height = "0.0";
+ properties.put("liquidHeight", height);
+
+ grain.setProperties(properties.toJSONString());
+
+ //灏佽濂界殑鏁版嵁
+ log.info("---娴呭渾浠撳皝瑁呭畬鎴�----寮�濮嬫墽琛屾帹閫�");
+
+ reqData.setData(JSONObject.toJSONString(grain));
+
+ doPushGrain(reqData);
+ }
+
+ /**
+ * 浠嶳EDIS涓幏鍙栨恫浣嶉珮搴︿俊鎭�
+ *
+ * @param device
+ * @return
+ */
+ private String getCacheHeight(GatewayDevice device) {
+ //缁欏叾浠栬蒋浣跨敤
+ String key = RedisConst.KEY_DEPOT_HEIGHT + ":" + configData.getCompanyId() + "_" + device.getDepotIdSys();
+ return (String) redisUtil.get(key);
+ }
+
+
+
+ /**
+ * 骞虫埧浠擄紝瑙f瀽绗簩姝ワ紝瑙f瀽鍒板潗鏍囨暟鎹�
+ *
+ * @param temps
+ * @throws Exception
+ */
+ private void analysisAndPush1(List<Double> temps, BaseReqData reqData, THDto thDto, GrainCableData cableData) {
+
+ GatewayDevice device = reqData.getDevice();
+
+ int cableZ = cableData.getCableZ();
+ int cableY = cableData.getCableY();
+ int cableX = cableData.getCableX();
+
+ //鏁版嵁灏佽
+ GrainData grain = new GrainData();
+ grain.setMessageId(ScConstant.getMessageId());
+ grain.setDeviceId(device.getDeviceId());
+ grain.setTimestamp(System.currentTimeMillis() + "");
+
+ ClientHeaders headers = new ClientHeaders();
+ headers.setDeviceName(device.getDeviceName());
+ headers.setProductId(device.getProductId());
+ headers.setOrgId(device.getOrgId());
+ headers.setMsgId(reqData.getMessageId());
+ grain.setHeaders(headers);
+
+
+ GrainOutPut outPut = new GrainOutPut();
+
+
+ double max = ReMessageBuilder.MAX_TEMP, min = ReMessageBuilder.MIN_TEMP, sumT = 0.0, sumNum = cableData.getSumNum();
List<GrainTemp> temperature = new ArrayList<>();
//鏍瑰彿
@@ -283,6 +443,7 @@
for (int i = 0; i < temps.size(); i++) {
curTemp = temps.get(i);
position = i;
+
z = i % cableZ + 1;
x = i / (cableZ * cableY);
y = x * (cableZ * cableY);
diff --git a/src/main/java/com/fzzy/protocol/data/GrainCableData.java b/src/main/java/com/fzzy/protocol/data/GrainCableData.java
new file mode 100644
index 0000000..d42a0cb
--- /dev/null
+++ b/src/main/java/com/fzzy/protocol/data/GrainCableData.java
@@ -0,0 +1,19 @@
+package com.fzzy.protocol.data;
+
+
+import lombok.Data;
+
+@Data
+public class GrainCableData {
+
+ private int cableZ;
+
+ private int cableX;
+
+ private int cableY;
+
+ private int sumNum;
+
+ private boolean isCir = false;
+
+}
diff --git a/src/main/resources/application-devGateway.yml b/src/main/resources/application-devGateway.yml
index 7ba4ef8..d13cc61 100644
--- a/src/main/resources/application-devGateway.yml
+++ b/src/main/resources/application-devGateway.yml
@@ -34,7 +34,7 @@
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
# Redis鐩稿叧閰嶇疆
redis:
- database: 5
+ database: 0
host: 127.0.0.1
port: 6379
password: Redispwd..
diff --git a/src/main/resources/application-pro.yml b/src/main/resources/application-pro.yml
index b54b5cc..f14b82c 100644
--- a/src/main/resources/application-pro.yml
+++ b/src/main/resources/application-pro.yml
@@ -38,7 +38,7 @@
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
# Redis鐩稿叧閰嶇疆
redis:
- database: 1
+ database: 0
host: 127.0.0.1
port: 6379
password: Redispwd..
diff --git a/src/main/resources/application-pro5012.yml b/src/main/resources/application-pro5012.yml
index 909580f..42cd796 100644
--- a/src/main/resources/application-pro5012.yml
+++ b/src/main/resources/application-pro5012.yml
@@ -35,7 +35,7 @@
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
# Redis鐩稿叧閰嶇疆
redis:
- database: 5
+ database: 0
host: 127.0.0.1
port: 6379
password:
diff --git a/src/main/resources/application-pro5303.yml b/src/main/resources/application-pro5303.yml
index 1546be1..983d8fc 100644
--- a/src/main/resources/application-pro5303.yml
+++ b/src/main/resources/application-pro5303.yml
@@ -38,7 +38,7 @@
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
# Redis鐩稿叧閰嶇疆
redis:
- database: 1
+ database: 0
host: 127.0.0.1
port: 6379
password: Abc123..
diff --git a/src/main/resources/application-proGateway.yml b/src/main/resources/application-proGateway.yml
index 55e75e4..e4905db 100644
--- a/src/main/resources/application-proGateway.yml
+++ b/src/main/resources/application-proGateway.yml
@@ -35,7 +35,7 @@
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
# Redis鐩稿叧閰嶇疆
redis:
- database: 5
+ database: 0
host: 127.0.0.1
port: 6379
password:
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 64fe8d6..03f1270 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -21,7 +21,7 @@
config: classpath:logback-spring.xml
- ########################## thymeleaf妯℃澘閰嶇疆 ##########################
+########################## thymeleaf妯℃澘閰嶇疆 ##########################
thymeleaf:
prefix: classpath:/templates/
suffix: .html
--
Gitblit v1.9.3