Kaynağa Gözat

实时监控平台实时电流和功率处理

qiangxuan 6 ay önce
ebeveyn
işleme
9d9033713b

+ 3 - 2
zgztBus/jeecg-module-lesm/src/main/java/org/jeecg/modules/deviceLesm/controller/DeviceInformationController.java

@@ -290,8 +290,9 @@ public class DeviceInformationController extends JeecgController<DeviceInformati
 
 	 @ApiOperation(value="设备模型信息-通过区域id查询", notes="设备模型信息-通过区域id查询")
 	 @GetMapping(value = "/queryDeviceModelById")
-	 public Result<DeviceModelInfo> queryDeviceModelById(@RequestParam(name="deviceRegionId") String deviceRegionId) {
-		 DeviceModelInfo deviceModelInfo = deviceInformationService.queryDeviceModelById(deviceRegionId);
+	 public Result<DeviceModelInfo> queryDeviceModelById(@RequestParam(name="deviceRegionId") String deviceRegionId,
+														 @RequestParam(name="deviceType") String deviceType) {
+		 DeviceModelInfo deviceModelInfo = deviceInformationService.queryDeviceModelById(deviceRegionId, deviceType);
 		 if(deviceModelInfo == null) {
 			 return Result.ok("未找到对应数据");
 		 }

+ 7 - 0
zgztBus/jeecg-module-lesm/src/main/java/org/jeecg/modules/deviceLesm/entity/DeviceInformation.java

@@ -75,4 +75,11 @@ public class DeviceInformation implements Serializable {
     @ApiModelProperty(value = "运行状态")
     @Dict(dicCode = "sfqy")
     private String status;
+
+    /**
+     * 设备类型(1棒一2棒二3棒三4高线5板带)
+     * */
+    @Excel(name = "设备类型 ", width = 15)
+    @ApiModelProperty(value = "设备类型")
+    private String deviceType;
 }

+ 5 - 0
zgztBus/jeecg-module-lesm/src/main/java/org/jeecg/modules/deviceLesm/entity/DeviceModelInfo.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.deviceLesm.entity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.jeecg.modules.fpgLeanModel.entity.DeviceStatiscsModelMongodb;
 
 import java.util.List;
 
@@ -15,4 +16,8 @@ public class DeviceModelInfo {
 
     @ApiModelProperty(value = "模型信息")
     private List<StatiscsModelDataResult> statiscsModelDataResultList;
+
+    @ApiModelProperty(value = "实时电流功率信息")
+    private List<DeviceStatiscsModelMongodb> deviceStatiscsModelMongodbList;
+
 }

+ 1 - 1
zgztBus/jeecg-module-lesm/src/main/java/org/jeecg/modules/deviceLesm/service/IDeviceInformationService.java

@@ -12,5 +12,5 @@ import org.jeecg.modules.deviceLesm.entity.DeviceModelInfo;
  */
 public interface IDeviceInformationService extends IService<DeviceInformation> {
 
-    DeviceModelInfo queryDeviceModelById(String deviceRegionId);
+    DeviceModelInfo queryDeviceModelById(String deviceRegionId, String deviceType);
 }

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

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

+ 13 - 14
zgztBus/jeecg-module-lesm/src/main/java/org/jeecg/modules/fpgLeanModel/service/impl/FpgLeanModelServiceImpl.java

@@ -116,27 +116,26 @@ public class FpgLeanModelServiceImpl extends ServiceImpl<FpgLeanModelMapper, Fpg
         Query query = new Query();
         query.addCriteria(Criteria.where("deviceInformationId").is(deviceInformationId))
                 .with(Sort.by(Sort.Direction.ASC, "createTime"));
-        Date startTime = new Date();
-        // 加8小时
-        Calendar calendar1 = Calendar.getInstance();
-        calendar1.setTime(startTime);
-        calendar1.add(Calendar.HOUR, 8);
-        Date specifiedTimePlus8HoursStartTime = calendar1.getTime();
-
-        Date endTime = new Date();
-        Calendar calendar2 = Calendar.getInstance();
-        calendar2.setTime(endTime);
-        Date specifiedTimePlus8HoursStartEndTime = calendar2.getTime();
-        query.addCriteria(Criteria.where("createTime").gte(specifiedTimePlus8HoursStartEndTime).lt(specifiedTimePlus8HoursStartTime));
+//        Date startTime = new Date();
+//        // 加8小时
+//        Calendar calendar1 = Calendar.getInstance();
+//        calendar1.setTime(startTime);
+//        calendar1.add(Calendar.HOUR, -8);
+//        Date specifiedTimePlus8HoursStartTime = calendar1.getTime();
+//
+//        Date endTime = new Date();
+//        Calendar calendar2 = Calendar.getInstance();
+//        calendar2.setTime(endTime);
+//        Date specifiedTimePlus8HoursStartEndTime = calendar2.getTime();
+//        query.addCriteria(Criteria.where("createTime").gte(specifiedTimePlus8HoursStartEndTime).lt(specifiedTimePlus8HoursStartTime));
         // 执行查询
         List<DeviceStatiscsModelMongodb> deviceStatiscsModelMongodbList = mongoTemplate.find(query, DeviceStatiscsModelMongodb.class, "leanmodel_run_realtime");
         if (oConvertUtils.listIsEmpty(deviceStatiscsModelMongodbList)){
-            log.info("{}{}", "leanmodel_run_realtime峰平谷大屏通过设备id查询实时功率和电流为空", deviceInformationId);
+            log.info("{}{}", "leanmodel_run_realtime折线图峰平谷大屏通过设备id查询实时功率和电流为空", deviceInformationId);
             return new ArrayList<>();
         }
         return deviceStatiscsModelMongodbList;
     }
-
     /**
      * 龙钢峰平谷积木报表导出逻辑处理
      * @param leanModelCode