From 56e6e0bf18c39a933aec78762b636fdf2efa8d68 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期一, 08 十二月 2025 17:59:24 +0800
Subject: [PATCH] 外购成品检验报告生成功能
---
cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java | 78 +++++++++++++++++++++++++-------------
1 files changed, 51 insertions(+), 27 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 5968267..b968dec 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
@@ -17,13 +17,12 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.Duration;
-import java.time.Instant;
import java.time.LocalDateTime;
-import java.time.ZoneId;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -113,16 +112,17 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
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());
+ if(CollectionUtil.isNotEmpty(dataMap)){
//杩囨护鍑哄寘鍚疄闄呯數闃诲�肩殑瀵硅薄
- String entrustCode = getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_SN);
- BigDecimal zxdzzValue = new BigDecimal(getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_ZXDZZ));
- BigDecimal fxdzzValue = new BigDecimal(getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_FXDZZ));
+ String entrustCode = getValueByDataStream(dataMap,DCResistanceMqttConstants.NSDQCS_DQCS_SN);
+ String deviceCode = getValueByDataStream(dataMap,DCResistanceMqttConstants.deviceName);
+ BigDecimal zxdzzValue = new BigDecimal(getValueByDataStream(dataMap,DCResistanceMqttConstants.NSDQCS_DQCS_ZXDZZ));
+ BigDecimal fxdzzValue = new BigDecimal(getValueByDataStream(dataMap,DCResistanceMqttConstants.NSDQCS_DQCS_FXDZZ));
// BigDecimal testLength = new BigDecimal(getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_CD));
- Double tempValue = new BigDecimal(getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_WD)).setScale(2, RoundingMode.HALF_UP).doubleValue();
+ Double tempValue = new BigDecimal(getValueByDataStream(dataMap,DCResistanceMqttConstants.NSDQCS_DQCS_WD)).setScale(2, RoundingMode.HALF_UP).doubleValue();
//璁$畻骞冲潎鐢甸樆鍊�
BigDecimal value = zxdzzValue.abs().add(fxdzzValue.abs()).divide(BigDecimal.valueOf(2L), RoundingMode.HALF_UP);
Long count = collectBridgeMapper.selectCount(Wrappers.<CollectBridge>lambdaQuery().eq(CollectBridge::getEntrustCode, entrustCode));
@@ -131,9 +131,10 @@
.set(CollectBridge::getCollectValue,value)
.set(CollectBridge::getCollectTemperature,tempValue)
.set(CollectBridge::getLastCollectDate,LocalDateTime.now())
+ .eq(CollectBridge::getDeviceCode,deviceCode)
.eq(CollectBridge::getEntrustCode,entrustCode));
}else{
- collectBridgeMapper.insert(new CollectBridge(entrustCode,value,tempValue,LocalDateTime.now(),LocalDateTime.now()));
+ collectBridgeMapper.insert(new CollectBridge(entrustCode,deviceCode,value,tempValue,LocalDateTime.now(),LocalDateTime.now()));
}
}
}
@@ -141,41 +142,36 @@
@Override
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());
+ if(CollectionUtil.isNotEmpty(dataMap)){
// 浼搁暱鐜囷細澶勭悊 NSTSSC.TSSC.SCL 鏁版嵁
- processMultipleValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_SCL,3,10.0);
+ processMultipleValueDataStream(dataMap, ElongationMqttConstants.NSTSSC_TSSC_SCL,3,10.0);
}
}
/**
* 鑾峰彇mqtt娑堟伅浣撲腑瀵瑰簲鏍囪瘑鐨勫��
- * @param dataList 鏁版嵁鍒楄〃
+ * @param dataMap 鏁版嵁鍒楄〃
* @param 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();
- return CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():"";
+ private String getValueByDataStream(Map<String,Object> dataMap, String dataStream) {
+ try{
+ String val = dataMap.get(dataStream).toString();
+ return StringUtils.isNotBlank(val)?val:"0";
+ }catch (Exception e){
+ return "0";
}
- return "";
}
/**
* 澶勭悊闇�瑕佷繚瀛樺涓�肩殑鏁版嵁娴侊紝骞朵繚瀛樺埌 Redis
- * @param dataList 鏁版嵁鍒楄〃
+ * @param dataMap 鏁版嵁鍒楄〃
* @param dataStream 鏁版嵁娴佹爣璇�
* @param maxSize 淇濆瓨鐨勬渶澶т釜鏁�
* @param minVal 瀛樺偍鏁版嵁鐨勬渶灏忓�硷紝浣庝簬璇ュ�煎垯璺宠繃锛�-1浠h〃涓嶉檺鍒�
*/
- private void processMultipleValueDataStream(List<DeviceMqttVO> dataList, String dataStream,int maxSize,Double minVal){
+ private void processMultipleValueDataStream(Map<String,Object> dataMap, String dataStream,int maxSize,Double minVal){
// 绛涢�夊嚭褰撳墠鏁版嵁娴佸搴旂殑鏁版嵁
- Double value = Double.parseDouble(getValueByDataStream(dataList, dataStream));
-// Double value = BigDecimal.valueOf(Math.random()*100).setScale(7, RoundingMode.HALF_EVEN).doubleValue();
+ Double value = Double.parseDouble(getValueByDataStream(dataMap, dataStream));
//濡傛灉鏈�灏忓�间笉涓虹┖涓斾笉涓�-1锛岃幏鍙栧埌鐨勫�煎皬浜庢渶灏忓�煎垯璺宠繃涓嶅仛澶勭悊
if(Objects.nonNull(minVal)&&minVal!=-1&&value<minVal){
return;
@@ -189,7 +185,35 @@
RedisUtil.delZSetRange(dataStream,0,0);
}
}
- RedisUtil.addZSet(dataStream,System.currentTimeMillis(),value);
+ String deviceCode = getValueByDataStream(dataMap,ElongationMqttConstants.deviceName);
+ RedisUtil.addZSet(dataStream+"."+deviceCode,System.currentTimeMillis(),value);
+ }
+
+ /**
+ * 澶勭悊闇�瑕佷繚瀛樺涓�肩殑鏁版嵁娴侊紝骞朵繚瀛樺埌 Redis
+ * @param dataMap 鏁版嵁鍒楄〃
+ * @param dataStream 鏁版嵁娴佹爣璇�
+ * @param maxSize 淇濆瓨鐨勬渶澶т釜鏁�
+ * @param minVal 瀛樺偍鏁版嵁鐨勬渶灏忓�硷紝浣庝簬璇ュ�煎垯璺宠繃锛�-1浠h〃涓嶉檺鍒�
+ * @param deviceCode 璁惧缂栧彿
+ */
+ private void processMultipleValueDataStream(Map<String,Object> dataMap, String dataStream,int maxSize,Double minVal,String deviceCode){
+ // 绛涢�夊嚭褰撳墠鏁版嵁娴佸搴旂殑鏁版嵁
+ Double value = Double.parseDouble(dataMap.get(dataStream).toString());
+ //濡傛灉鏈�灏忓�间笉涓虹┖涓斾笉涓�-1锛岃幏鍙栧埌鐨勫�煎皬浜庢渶灏忓�煎垯璺宠繃涓嶅仛澶勭悊
+ if(Objects.nonNull(minVal)&&minVal!=-1&&value<minVal){
+ return;
+ }
+ //鍒ゆ柇key鏄惁瀛樺湪
+ boolean existKey = RedisUtil.hasKey(dataStream);
+ if(existKey){
+ long zSetSize = RedisUtil.getZSetSize(dataStream);
+ //濡傛灉鏁版嵁闀垮害瓒呰繃鏈�澶т釜鏁帮紝鍒欏垹闄ゅ垎鏁版渶浣庣殑鏁版嵁
+ if(zSetSize>=maxSize){
+ RedisUtil.delZSetRange(dataStream,0,0);
+ }
+ }
+ RedisUtil.addZSet(dataStream+"."+deviceCode,System.currentTimeMillis(),value);
}
/**
--
Gitblit v1.9.3