|
@@ -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;
|
|
|
}
|