|
@@ -10,6 +10,7 @@ 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.jeecg.modules.fpgLeanModel.entity.DeviceStatiscsModelMongodb;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Sort;
|
|
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
|
@@ -19,10 +20,7 @@ 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.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -39,10 +37,14 @@ public class DeviceInformationServiceImpl extends ServiceImpl<DeviceInformationM
|
|
|
MongoTemplate mongoTemplate;
|
|
|
|
|
|
@Override
|
|
|
- public DeviceModelInfo queryDeviceModelById(String deviceRegionId) {
|
|
|
+ public DeviceModelInfo queryDeviceModelById(String deviceRegionId, String deviceType) {
|
|
|
DeviceModelInfo result = new DeviceModelInfo();
|
|
|
LambdaQueryWrapper<DeviceInformation> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(DeviceInformation::getDeviceRegionId, deviceRegionId);
|
|
|
+ if ("0".equals(deviceType)){
|
|
|
+ wrapper.eq(DeviceInformation::getDeviceRegionId, deviceRegionId);
|
|
|
+ }else {
|
|
|
+ wrapper.eq(DeviceInformation::getDeviceRegionId, deviceRegionId).eq(DeviceInformation::getDeviceType, deviceType);
|
|
|
+ }
|
|
|
List<DeviceInformation> deviceInformationList = baseMapper.selectList(wrapper);
|
|
|
if (oConvertUtils.listIsEmpty(deviceInformationList)){
|
|
|
log.info("{}{}", "通过设备区域ID——未查询到设备信息:", deviceRegionId);
|
|
@@ -50,6 +52,17 @@ public class DeviceInformationServiceImpl extends ServiceImpl<DeviceInformationM
|
|
|
}
|
|
|
result.setDeviceInformationList(deviceInformationList);
|
|
|
List<String> deviceInformationIds = deviceInformationList.stream().map(DeviceInformation::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ Query querylr = new Query();
|
|
|
+ querylr.addCriteria(Criteria.where("deviceInformationId").in(deviceInformationIds));
|
|
|
+ // 执行查询
|
|
|
+ List<DeviceStatiscsModelMongodb> deviceStatiscsModelMongodbList = mongoTemplate.find(querylr, DeviceStatiscsModelMongodb.class, "leanmodel_run_realtime");
|
|
|
+ if (oConvertUtils.listIsEmpty(deviceStatiscsModelMongodbList)){
|
|
|
+ log.info("{}{}", "未查询到leanmodel_run_realtime峰平谷大屏实时功率和电流为空:", deviceInformationIds);
|
|
|
+ }
|
|
|
+ List<DeviceStatiscsModelMongodb> deviceStatiscsModelMongodbs = processDeviceStats(deviceStatiscsModelMongodbList);
|
|
|
+ result.setDeviceStatiscsModelMongodbList(deviceStatiscsModelMongodbs);
|
|
|
+
|
|
|
// 获取mongoDB中的模型信息
|
|
|
Query query = new Query();
|
|
|
query.addCriteria(Criteria.where("deviceRegionId").is(deviceRegionId))// 设备区域ID
|
|
@@ -61,8 +74,7 @@ public class DeviceInformationServiceImpl extends ServiceImpl<DeviceInformationM
|
|
|
log.info("{}{}", "未查询到mongoDB信息total_startstop:", "区域ID:" + deviceRegionId + "设备ID集合:" + deviceInformationIds);
|
|
|
return result;
|
|
|
}
|
|
|
- // 获取尖峰平谷 时长、用电、占比
|
|
|
- // 获取当前日期
|
|
|
+ // 获取当前日期 尖峰平谷 时长、用电、占比
|
|
|
LocalDate currentDate = LocalDate.now();
|
|
|
// 定义日期格式
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
@@ -120,4 +132,22 @@ public class DeviceInformationServiceImpl extends ServiceImpl<DeviceInformationM
|
|
|
log.info("{}{}", "模型信息总数:", statiscsModelDataResultListMerge.size());
|
|
|
return result;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ public static List<DeviceStatiscsModelMongodb> processDeviceStats(List<DeviceStatiscsModelMongodb> deviceStatiscsModelMongodbList) {
|
|
|
+ if (deviceStatiscsModelMongodbList == null || deviceStatiscsModelMongodbList.isEmpty()) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ // 先按照deviceInformationId进行分组,每组内按照createTime降序排序
|
|
|
+ Map<String, List<DeviceStatiscsModelMongodb>> groupedByDeviceId = deviceStatiscsModelMongodbList.stream()
|
|
|
+ .collect(Collectors.groupingBy(DeviceStatiscsModelMongodb::getDeviceInformationId,
|
|
|
+ Collectors.collectingAndThen(Collectors.toList(), list -> list.stream()
|
|
|
+ .sorted(Comparator.comparing(DeviceStatiscsModelMongodb::getDatestr).reversed())
|
|
|
+ .collect(Collectors.toList()))));
|
|
|
+ // 从每个分组中取第一条(即最新的)记录,组成新的列表
|
|
|
+ List<DeviceStatiscsModelMongodb> resultList = groupedByDeviceId.values().stream()
|
|
|
+ .map(deviceStats -> deviceStats.get(0))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
}
|