From c65ab218b14e87489f1594b2d932f7bd54b3ba11 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期五, 17 十月 2025 13:34:19 +0800
Subject: [PATCH] 数采调整
---
cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java | 180 +++++++++++++++++++++++++++++++++---------------------------
1 files changed, 99 insertions(+), 81 deletions(-)
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java
index 874a419..96663aa 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java
@@ -15,9 +15,11 @@
import com.ruoyi.device.service.CollectBridgeService;
import com.ruoyi.device.vo.DeviceMqttVO;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
@@ -36,97 +38,108 @@
@Slf4j
public class CollectBridgeServiceImpl extends ServiceImpl<CollectBridgeMapper, CollectBridge> implements CollectBridgeService {
+ @Autowired
+ private CollectBridgeMapper collectBridgeMapper;
+
/**
* 濉厖閲囬泦鏁版嵁
* @param jsonObject
*/
@Override
public void addBridgeValue(JSONObject jsonObject) {
- JSONArray dataArray = jsonObject.getJSONArray("data");
- for (int i = 0; i < dataArray.size(); i++) {
- JSONObject listInfo = dataArray.getJSONObject(i);
- // 瀛樺偍鏁版嵁
- String dataStream = listInfo.getString("dataStream");
- if (dataStream.equals("DQCS.DQCS.SN")) {
- JSONArray dataPoints = listInfo.getJSONArray("dataPoints");
- JSONObject pointsJSONObject = dataPoints.getJSONObject(0);
- String entrustCode = pointsJSONObject.getString("value");
- // 瑙f瀽鏃堕棿鎴�
- Instant instant = Instant.ofEpochMilli(pointsJSONObject.getLong("time"));
- LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
-
- // 鍏堝瓨鍌ㄧ紪鍙�, 鍚庣画瀛樺偍鍊�
- CollectBridge collectBridge = new CollectBridge();
- collectBridge.setEntrustCode(entrustCode);
- collectBridge.setCollectDate(collectDate);
- baseMapper.insert(collectBridge);
-
- }
- // 瀵勫瓨鍣ㄥ湴鍧�绛変簬64鑾峰彇缁撴灉鍊�
- if (dataStream.equals("DQCS.DQCS.64")) {
- JSONArray dataPoints = listInfo.getJSONArray("dataPoints");
- JSONObject pointsJSONObject = dataPoints.getJSONObject(0);
- String value = pointsJSONObject.getString("value");
-
- if (value.equals("64")) {
- for (int j = 0; j < dataArray.size(); j++) {
- JSONObject listInfo2 = dataArray.getJSONObject(j);
- String dataStream2 = listInfo2.getString("dataStream");
- // 瀵勫瓨鍣ㄥ湴鍧�绛変簬64鑾峰彇缁撴灉鍊�
- if (dataStream2.equals("DQCS.DQCS.DZZ")) {
- JSONArray dataPoints2 = listInfo2.getJSONArray("dataPoints");
- JSONObject pointsJSONObject2 = dataPoints2.getJSONObject(0);
- String collectValue = pointsJSONObject2.getString("value");
-
- // 瑙f瀽鏃堕棿鎴�
- Instant instant = Instant.ofEpochMilli(pointsJSONObject2.getLong("time"));
- LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
-
- // 鏌ヨ鏈�鏂颁竴鏉℃暟鎹�
- CollectBridge collectBridge = baseMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery()
- .orderByDesc(CollectBridge::getCollectDate)
- .last("limit 1"));
-
- // 鍒ゆ柇涓ゆ潯鏁版嵁鏄惁鐩稿樊鍦�10鍒嗛挓涔嬪唴鍜屾湁娌℃湁缂栧彿
- if (isWithinTenMinutes(collectDate, collectBridge.getCollectDate()) &&
- StringUtils.isNotBlank(collectBridge.getEntrustCode())) {
- // 淇敼妫�楠屽��
- collectBridge.setCollectValue(collectValue);
- baseMapper.updateById(collectBridge);
- } else {
- // 鍙瓨鍌ㄥ��
- CollectBridge bridge = new CollectBridge();
- bridge.setCollectValue(collectValue);
- bridge.setCollectDate(collectDate);
- baseMapper.insert(bridge);
- }
- }
- }
- }
- }
- }
+// JSONArray dataArray = jsonObject.getJSONArray("data");
+// for (int i = 0; i < dataArray.size(); i++) {
+// JSONObject listInfo = dataArray.getJSONObject(i);
+// // 瀛樺偍鏁版嵁
+// String dataStream = listInfo.getString("dataStream");
+// if (dataStream.equals("DQCS.DQCS.SN")) {
+// JSONArray dataPoints = listInfo.getJSONArray("dataPoints");
+// JSONObject pointsJSONObject = dataPoints.getJSONObject(0);
+// String entrustCode = pointsJSONObject.getString("value");
+// // 瑙f瀽鏃堕棿鎴�
+// Instant instant = Instant.ofEpochMilli(pointsJSONObject.getLong("time"));
+// LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
+//
+// // 鍏堝瓨鍌ㄧ紪鍙�, 鍚庣画瀛樺偍鍊�
+// CollectBridge collectBridge = new CollectBridge();
+// collectBridge.setEntrustCode(entrustCode);
+// collectBridge.setCollectDate(collectDate);
+// baseMapper.insert(collectBridge);
+//
+// }
+// // 瀵勫瓨鍣ㄥ湴鍧�绛変簬64鑾峰彇缁撴灉鍊�
+// if (dataStream.equals("DQCS.DQCS.64")) {
+// JSONArray dataPoints = listInfo.getJSONArray("dataPoints");
+// JSONObject pointsJSONObject = dataPoints.getJSONObject(0);
+// String value = pointsJSONObject.getString("value");
+//
+// if (value.equals("64")) {
+// for (int j = 0; j < dataArray.size(); j++) {
+// JSONObject listInfo2 = dataArray.getJSONObject(j);
+// String dataStream2 = listInfo2.getString("dataStream");
+// // 瀵勫瓨鍣ㄥ湴鍧�绛変簬64鑾峰彇缁撴灉鍊�
+// if (dataStream2.equals("DQCS.DQCS.DZZ")) {
+// JSONArray dataPoints2 = listInfo2.getJSONArray("dataPoints");
+// JSONObject pointsJSONObject2 = dataPoints2.getJSONObject(0);
+// String collectValue = pointsJSONObject2.getString("value");
+//
+// // 瑙f瀽鏃堕棿鎴�
+// Instant instant = Instant.ofEpochMilli(pointsJSONObject2.getLong("time"));
+// LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
+//
+// // 鏌ヨ鏈�鏂颁竴鏉℃暟鎹�
+// CollectBridge collectBridge = baseMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery()
+// .orderByDesc(CollectBridge::getCollectDate)
+// .last("limit 1"));
+//
+// // 鍒ゆ柇涓ゆ潯鏁版嵁鏄惁鐩稿樊鍦�10鍒嗛挓涔嬪唴鍜屾湁娌℃湁缂栧彿
+// if (isWithinTenMinutes(collectDate, collectBridge.getCollectDate()) &&
+// StringUtils.isNotBlank(collectBridge.getEntrustCode())) {
+// // 淇敼妫�楠屽��
+// collectBridge.setCollectValue(collectValue);
+// baseMapper.updateById(collectBridge);
+// } else {
+// // 鍙瓨鍌ㄥ��
+// CollectBridge bridge = new CollectBridge();
+// bridge.setCollectValue(collectValue);
+// bridge.setCollectDate(collectDate);
+// baseMapper.insert(bridge);
+// }
+// }
+// }
+// }
+// }
+// }
}
@Override
- public void addBridgeValueByNS(String jsonStr) {
+ public void dcResistanceDataAnalysis(String jsonStr) {
Map<String, Object> dataMap = JSONObject.parseObject(jsonStr, new TypeReference<Map<String, Object>>(){}.getType());
if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){
List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType());
//杩囨护鍑哄寘鍚疄闄呯數闃诲�肩殑瀵硅薄
// 澶勭悊 NSDQCS.DQCS.DZZ 鏁版嵁
- Double value = getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_DZZ);
- RedisUtil.set(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ, value);
+ String entrustCode = getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_SN);
+ BigDecimal value = new BigDecimal(getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_DZZ));
+ Long count = collectBridgeMapper.selectCount(Wrappers.<CollectBridge>lambdaQuery().eq(CollectBridge::getEntrustCode, entrustCode));
+ if(count>0L){
+ collectBridgeMapper.update(null,Wrappers.<CollectBridge>lambdaUpdate()
+ .set(CollectBridge::getCollectValue,value)
+ .set(CollectBridge::getLastCollectDate,LocalDateTime.now())
+ .eq(CollectBridge::getEntrustCode,entrustCode));
+ }else{
+ collectBridgeMapper.insert(new CollectBridge(entrustCode,value,LocalDateTime.now(),LocalDateTime.now()));
+ }
}
}
@Override
- public void addBridgeValueByNSD(String jsonStr) {
+ public void elongationDataAnalysis(String jsonStr) {
Map<String, Object> dataMap = JSONObject.parseObject(jsonStr, new TypeReference<Map<String, Object>>(){}.getType());
if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){
List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType());
- //杩囨护鍑哄寘鍚疄闄呯數闃诲�肩殑瀵硅薄
- // 澶勭悊 NSTSSC.TSSC.WY 鏁版嵁
- processMultipleValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_WY,3);
+ // 浼搁暱鐜囷細澶勭悊 NSTSSC.TSSC.SCL 鏁版嵁
+ processMultipleValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_SCL,3,10.0);
}
}
@@ -135,17 +148,16 @@
* @param dataList 鏁版嵁鍒楄〃
* @param dataStream 鏁版嵁娴佹爣璇�
*/
- private Double getValueByDataStream(List<DeviceMqttVO> dataList, String dataStream) {
+ private String getValueByDataStream(List<DeviceMqttVO> dataList, String dataStream) {
DeviceMqttVO deviceMqttVO = dataList.stream()
.filter(f -> StringUtils.equals(f.getDataStream(), dataStream))
.findFirst()
.orElse(null);
if(Objects.nonNull(deviceMqttVO)){
List<DeviceMqttVO.DataPoint> dataPoints = deviceMqttVO.getDataPoints();
- BigDecimal value = CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():BigDecimal.ZERO;
- return value.doubleValue();
+ return CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():"";
}
- return 0.0;
+ return "";
}
/**
@@ -153,20 +165,26 @@
* @param dataList 鏁版嵁鍒楄〃
* @param dataStream 鏁版嵁娴佹爣璇�
* @param maxSize 淇濆瓨鐨勬渶澶т釜鏁�
+ * @param minVal 瀛樺偍鏁版嵁鐨勬渶灏忓�硷紝浣庝簬璇ュ�煎垯璺宠繃锛�-1浠h〃涓嶉檺鍒�
*/
- private void processMultipleValueDataStream(List<DeviceMqttVO> dataList, String dataStream,int maxSize){
+ private void processMultipleValueDataStream(List<DeviceMqttVO> dataList, String dataStream,int maxSize,Double minVal){
// 绛涢�夊嚭褰撳墠鏁版嵁娴佸搴旂殑鏁版嵁
- Double value = getValueByDataStream(dataList, dataStream);
+// Double value = Double.parseDouble(getValueByDataStream(dataList, dataStream));
+ Double value = BigDecimal.valueOf(Math.random()*100).setScale(7, RoundingMode.HALF_EVEN).doubleValue();
+ //濡傛灉鏈�灏忓�间笉涓虹┖涓斾笉涓�-1锛岃幏鍙栧埌鐨勫�煎皬浜庢渶灏忓�煎垯璺宠繃涓嶅仛澶勭悊
+ if(Objects.nonNull(minVal)&&minVal!=-1&&value<minVal){
+ return;
+ }
//鍒ゆ柇key鏄惁瀛樺湪
boolean existKey = RedisUtil.hasKey(dataStream);
if(existKey){
- long listSize = RedisUtil.lGetListSize(dataStream);
- if(listSize<maxSize){
- RedisUtil.lSet(dataStream,value);
+ long zSetSize = RedisUtil.getZSetSize(dataStream);
+ //濡傛灉鏁版嵁闀垮害瓒呰繃鏈�澶т釜鏁帮紝鍒欏垹闄ゅ垎鏁版渶浣庣殑鏁版嵁
+ if(zSetSize>=maxSize){
+ RedisUtil.delZSetRange(dataStream,0,0);
}
- }else{
- RedisUtil.lSet(dataStream,value);
}
+ RedisUtil.addZSet(dataStream,System.currentTimeMillis(),value);
}
/**
--
Gitblit v1.9.3