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/DeviceServiceImpl.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 94 insertions(+), 21 deletions(-)
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
index 66e5a2a..6e9bc72 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -17,6 +17,8 @@
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.RedisUtil;
+import com.ruoyi.device.constant.DCResistanceMqttConstants;
import com.ruoyi.device.dto.*;
import com.ruoyi.device.mapper.CollectBridgeMapper;
import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
@@ -35,6 +37,7 @@
import lombok.AllArgsConstructor;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -44,9 +47,11 @@
import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
+import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
@@ -193,6 +198,8 @@
@Override
public Result<?> dataAcquisition(HttpServletRequest request, DeviceCollectionDto dto) {
+
+
// 鏌ヨ妫�楠岄」
List<Integer> itemIds = dto.getItemIds();
if (CollectionUtils.isEmpty(itemIds)) {
@@ -233,18 +240,42 @@
// 鏁伴噰杩斿洖淇℃伅
Map<String, Object> map = new HashMap<>();
for (Device device : deviceList) {
+
+ Device device1 = deviceMapper.selectById(device.getId());
+ dto.setDbUserName(device1.getDbUserName());
+ dto.setDbPassword(device1.getDbPassword());
+ dto.setDbTable(device1.getDbTable());
String ip = device.getIp();
+
// 鏍规嵁妫�楠岄」鑾峰彇config
List<DataConfig> list = dataConfigService.list(Wrappers.<DataConfig>lambdaQuery()
.in(DataConfig::getStructureItemParameterId, itemParameterIds)
.eq(DataConfig::getDeviceId, device.getId()));
// 鑾峰彇璁惧閰嶇疆绫�
- // 鍒ゆ柇璁惧鏄惁鏄暟瀛楃洿妗�
+ // 鍒ゆ柇璁惧鏄惁鏄暟瀛楃洿妗CZX-ZB-ER02022
if (device.getManagementNumber().equals("JCZX-ZB-ER02022")) {
map.putAll(dataCollectBridge(list, device, dto.getEntrustCode()));
- } else {
- map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag()));
+ }else if(device.getFileType().equals(".mqtt")){
+ //濡傛灉鏂囦欢绫诲瀷鏄痬qtt,鍒欎笉璧伴噰闆嗗櫒閲囬泦
+ Map<String, List<DataConfig>> userMap = list.stream()
+ .peek(i -> {
+ String itemName = i.getInspectionItem();
+ if (StringUtils.isNotBlank(i.getInspectionItemClass())) {
+ itemName += "@" + i.getInspectionItemClass();
+ }
+ String name = i.getInspectionItem().equals(i.getInspectionItemSubclass()) ? itemName + "," : itemName + "," + i.getInspectionItemSubclass();
+
+ // 娣诲姞妫�楠岄」鍚嶇О
+ i.setInsProductItem(name);
+ })
+ .collect(Collectors.groupingBy(DataConfig::getInsProductItem));
+ map.putAll(getActualResistanceValueAsMap(userMap, device,dto.getEntrustCode()));
+ }else {
+ String dbUserName = StringUtils.isNotBlank(dto.getDbUserName())?dto.getDbUserName():"";
+ String dbPassword = StringUtils.isNotBlank(dto.getDbPassword())?dto.getDbPassword():"";
+ String dbTable = StringUtils.isNotBlank(dto.getDbTable())?dto.getDbTable():"";
+ map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag(),dbUserName,dbPassword,dbTable));
}
}
@@ -256,6 +287,46 @@
} else {
return Result.success(null);
}
+ }
+
+ /**
+ * 浠� Redis 涓幏鍙栧疄闄呯數闃诲�硷紝骞朵互閿�煎褰㈠紡杩斿洖
+ * @param dataConfig 鏁版嵁閰嶇疆淇℃伅
+ * @param device 璁惧淇℃伅
+ * @return 鍖呭惈瀹為檯鐢甸樆鍊煎鐞嗙粨鏋滅殑閿�煎锛涜嫢鏈幏鍙栧埌鏈夋晥鏁版嵁鍒欒繑鍥炵┖ Map
+ */
+ public Map<String, Object> getActualResistanceValueAsMap(Map<String, List<DataConfig>> dataConfig, Device device,String entrustCode) {
+ Map<String, Object> map = new HashMap<>();
+ if (ObjectUtils.isEmpty(dataConfig)) {
+ return map;
+ }
+ dataConfig.forEach((k, v) -> {
+ AtomicInteger numberOfDataEntries = new AtomicInteger();
+ List<Object> list = new ArrayList<>();
+ for (int config = 0; config < v.size(); config++) {
+ String refery = DataAcquisition.getRefer(v.get(config).getRefery());
+ if (refery.equals(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ)){
+ // 鏌ヨ瀵瑰簲濮旀墭缂栧彿鐨勬暟鎹�
+// Object value = RedisUtil.get(refery);
+ CollectBridge collectBridge = collectBridgeMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery().eq(CollectBridge::getEntrustCode,entrustCode).last("limit 1"));
+ if(Objects.isNull(collectBridge)){
+ throw new ErrorException("鐩存祦鐢甸樆鏁伴噰寮傚父锛氭病鏈夋壘鍒板鎵樼紪鍙蜂负銆�"+entrustCode+"銆戠殑鏁版嵁");
+ }
+ list.add(0,1);//娴嬭瘯闀垮害锛岄粯璁�1
+ list.add(1,Objects.isNull(collectBridge.getCollectTemperature())?0.0:collectBridge.getCollectTemperature());//todo:娓╁害锛屾殏鏃舵湭閲囬泦鍒板��
+ list.add(2,collectBridge.getCollectValue());//瀹為檯鐢甸樆鍊�
+ }else {
+ // 浠� Redis 涓幏鍙栧垪琛ㄦ暟鎹�
+ List<?> objectList = RedisUtil.lGet(refery, 0, -1);
+ list.addAll(objectList);
+ }
+ numberOfDataEntries.getAndIncrement();
+ }
+ // 杩涜鍏紡璁$畻
+ Object resultValue = DataAcquisition.calculationFormula(list, v.get(0), k, device);
+ map.put(k, resultValue);
+ });
+ return map;
}
/**
@@ -279,21 +350,21 @@
Map<String, Object> map = new HashMap<>();
- userMap.forEach((k, v) -> {
- List<String> resultValue = new ArrayList<>();
- // 鏌ヨ鐩存ˉ鐢垫祦鐢甸樆鏁伴噰鍊�
- List<CollectBridge> collectBridges = collectBridgeMapper.selectList(Wrappers.<CollectBridge>lambdaQuery()
- .like(CollectBridge::getEntrustCode, entrustCode)
- .orderByAsc(CollectBridge::getCollectDate));
-
- resultValue = collectBridges.stream().map(CollectBridge::getCollectValue).collect(Collectors.toList());
-
- Map<String, Object> hashMap = new HashMap<>();
- hashMap.put("equipName", device.getDeviceName());
- hashMap.put("equipValue", device.getManagementNumber());
- hashMap.put("result", resultValue);
- map.put(k, hashMap);
- });
+// userMap.forEach((k, v) -> {
+// List<String> resultValue = new ArrayList<>();
+// // 鏌ヨ鐩存ˉ鐢垫祦鐢甸樆鏁伴噰鍊�
+// List<CollectBridge> collectBridges = collectBridgeMapper.selectList(Wrappers.<CollectBridge>lambdaQuery()
+// .like(CollectBridge::getEntrustCode, entrustCode)
+// .orderByAsc(CollectBridge::getCollectDate));
+//
+// resultValue = collectBridges.stream().map(CollectBridge::getCollectValue).collect(Collectors.toList());
+//
+// Map<String, Object> hashMap = new HashMap<>();
+// hashMap.put("equipName", device.getDeviceName());
+// hashMap.put("equipValue", device.getManagementNumber());
+// hashMap.put("result", resultValue);
+// map.put(k, hashMap);
+// });
return map;
}
@@ -352,6 +423,7 @@
template.write(os);
os.flush();
os.close();
+ inputStream.close();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("瀵煎嚭澶辫触");
@@ -396,11 +468,11 @@
DeviceMaintenance deviceMaintenance = deviceMaintenanceList.get(i);
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 缁翠慨鏃ユ湡
- deviceMetricRecordAndMaintenanceDto.setMaintenanceDateString(deviceMaintenance.getDate().format(dateTimeFormatter));
+ deviceMetricRecordAndMaintenanceDto.setMaintenanceDateString(deviceMaintenance.getMaintenanceDate().format(dateTimeFormatter));
// 澶勭悊鏂规硶
- deviceMetricRecordAndMaintenanceDto.setHandlingMethod(deviceMaintenance.getContent());
+ deviceMetricRecordAndMaintenanceDto.setHandlingMethod(deviceMaintenance.getMaintenanceContent());
// 澶囨敞
- deviceMetricRecordAndMaintenanceDto.setComments(deviceMaintenance.getComments());
+ deviceMetricRecordAndMaintenanceDto.setComments(deviceMaintenance.getRemark());
}
deviceMetricRecordAndMaintenanceDtoList.add(deviceMetricRecordAndMaintenanceDto);
@@ -487,6 +559,7 @@
template.write(os);
os.flush();
os.close();
+ inputStream.close();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("瀵煎嚭澶辫触");
--
Gitblit v1.9.3