瀏覽代碼

根据区域ID查询方块阵统计信息

qiangxuan 8 月之前
父節點
當前提交
91a8c79189

+ 45 - 14
zgztBus/jeecg-module-lesm/src/main/java/org/jeecg/modules/deviceLesm/service/impl/DeviceInformationServiceImpl.java

@@ -9,7 +9,6 @@ import org.jeecg.modules.deviceLesm.entity.DeviceModelInfo;
 import org.jeecg.modules.deviceLesm.entity.StatiscsModelDataResult;
 import org.jeecg.modules.deviceLesm.mapper.DeviceInformationMapper;
 import org.jeecg.modules.deviceLesm.service.IDeviceInformationService;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -20,7 +19,9 @@ import org.springframework.stereotype.Service;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -68,20 +69,50 @@ public class DeviceInformationServiceImpl extends ServiceImpl<DeviceInformationM
                 .addCriteria(Criteria.where("deviceInformationId").in(deviceInformationIds))// 虚拟设备
                 .addCriteria(Criteria.where("dates").is(formattedDate));
         List<StatiscsModelDataResult> statiscsModelDataResultList2 = mongoTemplate.find(querys, StatiscsModelDataResult.class, "total_day_powerproportioncurrent");
-
+        if (oConvertUtils.listIsEmpty(statiscsModelDataResultList2)){
+            return result;
+        }
+        // 使用 Map 存储列表2的数据,提高查找效率
+        Map<String, StatiscsModelDataResult> map2 = new HashMap<>();
+        for (StatiscsModelDataResult item : statiscsModelDataResultList2) {
+            String key = item.getDeviceRegionId() + item.getDeviceInformationId();
+            map2.put(key, item);
+        }
+        // 根据设备id和设备区域id,合并list对象
         List<StatiscsModelDataResult> statiscsModelDataResultListMerge = new ArrayList<>();
-        statiscsModelDataResultList1.forEach(x ->{
-            statiscsModelDataResultList2.forEach(y ->{
-                if (x.getDeviceRegionId().equals(y.getDeviceRegionId()) && x.getDeviceInformationId().equals(y.getDeviceInformationId())){
-                    StatiscsModelDataResult statiscsModelDataResult = new StatiscsModelDataResult();
-                    BeanUtils.copyProperties(y, statiscsModelDataResult);
-                    statiscsModelDataResult.setIngTime(x.getIngTime());
-                    statiscsModelDataResult.setPower(x.getPower());
-                    statiscsModelDataResult.setDeviceStartTime(x.getDeviceStartTime());
-                    statiscsModelDataResultListMerge.add(statiscsModelDataResult);
-                }
-            });
-        });
+        for (StatiscsModelDataResult item1 : statiscsModelDataResultList1) {
+            String key = item1.getDeviceRegionId() + item1.getDeviceInformationId();
+            if (map2.containsKey(key)) {
+                StatiscsModelDataResult item2 = map2.get(key);
+                StatiscsModelDataResult mergedItem = new StatiscsModelDataResult();
+                // 手动复制属性 设备ID、区域ID
+                mergedItem.setDeviceRegionId(item2.getDeviceRegionId());
+                mergedItem.setDeviceInformationId(item2.getDeviceInformationId());
+                // 尖峰平谷 用电
+                mergedItem.setTopsPower(item2.getTopsPower());
+                mergedItem.setPeaksPower(item2.getPeaksPower());
+                mergedItem.setFlatPower(item2.getFlatPower());
+                mergedItem.setValleysPower(item2.getValleysPower());
+                // 尖峰平谷 时长
+                mergedItem.setTopsIngTime(item2.getTopsIngTime());
+                mergedItem.setPeaksIngTime(item2.getPeaksIngTime());
+                mergedItem.setFlatIngTime(item2.getFlatIngTime());
+                mergedItem.setValleysIngTime(item2.getValleysIngTime());
+                // 尖峰平谷 占比
+                mergedItem.setTopsProportion(item2.getTopsProportion());
+                mergedItem.setPeaksProportion(item2.getPeaksProportion());
+                mergedItem.setFlatProportion(item2.getFlatProportion());
+                mergedItem.setValleysProportion(item2.getValleysProportion());
+
+                mergedItem.setDates(item2.getDates());
+
+                // 复制其他需要的属性
+                mergedItem.setIngTime(item1.getIngTime());// 运行累计时间
+                mergedItem.setPower(item1.getPower());// 运行累加功率
+                mergedItem.setDeviceStartTime(item1.getDeviceStartTime());// 上次运行时刻
+                statiscsModelDataResultListMerge.add(mergedItem);
+            }
+        }
         result.setStatiscsModelDataResultList(statiscsModelDataResultListMerge);
         return result;
     }