From f6279b2e1ec14c10bf87b8c01619e72f699a9f26 Mon Sep 17 00:00:00 2001 From: mh Date: Fri, 18 Apr 2025 18:52:39 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=B8=A9=E6=B9=BF=E5=BA=A6=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BC=98=E5=8C=96=E4=BB=A5=E5=8F=8A=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/OperationController.java | 2 +- .../monitor/IndoorTempMonitorController.java | 2 +- .../mh/common/core/domain/dto/DeviceDTO.java | 20 ++ .../core/domain/dto/TempHisRequest.java | 10 + .../core/domain/dto/TempHumidityDTO.java | 26 +++ .../common/core/domain/vo/IndoorTempVO.java | 9 + .../com/mh/quartz/task/CreateAlarmTask.java | 11 +- .../java/com/mh/quartz/task/DealDataTask.java | 4 +- .../device/CollectionParamsManageMapper.java | 31 +-- .../mapper/device/DataProcessMapper.java | 25 ++- .../device/IIndoorTempMonitorService.java | 3 +- .../impl/IndoorTempMonitorServiceImpl.java | 179 ++++++++++++------ .../overview/impl/ProOverviewServiceImpl.java | 8 +- .../policy/impl/PolicyManageServiceImpl.java | 17 +- 14 files changed, 254 insertions(+), 93 deletions(-) diff --git a/mh-admin/src/main/java/com/mh/web/controller/device/OperationController.java b/mh-admin/src/main/java/com/mh/web/controller/device/OperationController.java index 89f59d3..058c578 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/device/OperationController.java +++ b/mh-admin/src/main/java/com/mh/web/controller/device/OperationController.java @@ -92,7 +92,7 @@ public class OperationController extends BaseController { String sendOrder = iOperationService.operationDevice(changeValues); // 获取mqtt操作队列(后期通过mqtt队列配置发送主题) log.info("发送主题:{},消息:{}", controlTopic, sendOrder); -// iMqttGatewayService.publish(controlTopic, sendOrder, 1); + iMqttGatewayService.publish(controlTopic, sendOrder, 1); } catch (Exception e) { log.error("设备操作失败", e); return AjaxResult.error(); diff --git a/mh-admin/src/main/java/com/mh/web/controller/monitor/IndoorTempMonitorController.java b/mh-admin/src/main/java/com/mh/web/controller/monitor/IndoorTempMonitorController.java index c29ae25..de39ca2 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/monitor/IndoorTempMonitorController.java +++ b/mh-admin/src/main/java/com/mh/web/controller/monitor/IndoorTempMonitorController.java @@ -44,7 +44,7 @@ public class IndoorTempMonitorController extends BaseController { @PostMapping("/tempHis") public TableDataInfo getIndoorTempHisByHouseId(@RequestBody TempHisRequest tempHisRequest) { - List indoorTempHisByHouseId = indoorTempMonitorService.getIndoorTempHisByHouseId(tempHisRequest.getSystemType(), tempHisRequest.getHouseIds()); + List indoorTempHisByHouseId = indoorTempMonitorService.getIndoorTempHisByHouseId(tempHisRequest); return getDataTable(indoorTempHisByHouseId); } diff --git a/mh-common/src/main/java/com/mh/common/core/domain/dto/DeviceDTO.java b/mh-common/src/main/java/com/mh/common/core/domain/dto/DeviceDTO.java index 4877528..38a3aa3 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/dto/DeviceDTO.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/dto/DeviceDTO.java @@ -13,6 +13,8 @@ class DeviceDTO { private int orderNum; private String otherName; private String curValue; + private String paramType; + private Integer alarmStatus; /** * 时间格式化 */ @@ -25,6 +27,24 @@ class DeviceDTO { this.curValue = data.getCurValue().stripTrailingZeros().toPlainString(); this.curTime = data.getCurTime(); this.status = data.getStatus(); + this.paramType = data.getParamType(); + this.alarmStatus = data.getAlarmStatus(); + } + + public Integer getAlarmStatus() { + return alarmStatus; + } + + public void setAlarmStatus(Integer alarmStatus) { + this.alarmStatus = alarmStatus; + } + + public String getParamType() { + return paramType; + } + + public void setParamType(String paramType) { + this.paramType = paramType; } public String getCpmId() { diff --git a/mh-common/src/main/java/com/mh/common/core/domain/dto/TempHisRequest.java b/mh-common/src/main/java/com/mh/common/core/domain/dto/TempHisRequest.java index 52c9a71..8f790bd 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/dto/TempHisRequest.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/dto/TempHisRequest.java @@ -20,4 +20,14 @@ public class TempHisRequest { private List houseIds; + /** + * 开始时间 yyyy-MM-dd + */ + private String startTime; + + /** + * 结束时间 yyyy-MM-dd + */ + private String endTime; + } diff --git a/mh-common/src/main/java/com/mh/common/core/domain/dto/TempHumidityDTO.java b/mh-common/src/main/java/com/mh/common/core/domain/dto/TempHumidityDTO.java index d7857e0..636f967 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/dto/TempHumidityDTO.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/dto/TempHumidityDTO.java @@ -33,6 +33,32 @@ public class TempHumidityDTO { private int orderNum; + /** + * 采集类型 + */ + private String paramType; + + /** + * 报警状态 + */ + private Integer alarmStatus; + + public Integer getAlarmStatus() { + return alarmStatus; + } + + public void setAlarmStatus(Integer alarmStatus) { + this.alarmStatus = alarmStatus; + } + + public String getParamType() { + return paramType; + } + + public void setParamType(String paramType) { + this.paramType = paramType; + } + public int getOrderNum() { return orderNum; } diff --git a/mh-common/src/main/java/com/mh/common/core/domain/vo/IndoorTempVO.java b/mh-common/src/main/java/com/mh/common/core/domain/vo/IndoorTempVO.java index bf86160..c5b7b49 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/vo/IndoorTempVO.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/vo/IndoorTempVO.java @@ -23,6 +23,15 @@ public class IndoorTempVO { private BigDecimal indoorHumidity; + public IndoorTempVO() { + } + + public IndoorTempVO(String curTime, BigDecimal indoorTemp, BigDecimal indoorHumidity) { + this.curTime = curTime; + this.indoorTemp = indoorTemp; + this.indoorHumidity = indoorHumidity; + } + @Override public String toString() { return new ToStringBuilder(this) diff --git a/mh-quartz/src/main/java/com/mh/quartz/task/CreateAlarmTask.java b/mh-quartz/src/main/java/com/mh/quartz/task/CreateAlarmTask.java index 8562443..8ffac85 100644 --- a/mh-quartz/src/main/java/com/mh/quartz/task/CreateAlarmTask.java +++ b/mh-quartz/src/main/java/com/mh/quartz/task/CreateAlarmTask.java @@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.Date; import java.util.List; @@ -84,8 +85,8 @@ public class CreateAlarmTask { if (compare) { // 创建报警记录 String content = alarmCode.getMsgContent(); - content.replace("#{curValue}", curValue.toString()); - content.replace("#{setValue}", alarmRule.getCondition1() + threshold1); + content = content.replace("#{curValue}", curValue.setScale(1, RoundingMode.HALF_UP).toString()); + content = content.replace("#{setValue}", alarmRule.getCondition1() + threshold1); alarmRecords.setContent(content); alarmRecords.setAlarmType(alarmRule.getAlarmType()); alarmRecords.setEventType(alarmRule.getEventType()); @@ -101,9 +102,9 @@ public class CreateAlarmTask { alarmRecordService.insertAlarmRecord(alarmRecords); } else { // 更新报警记录 - alarmRecords.setContent(content); - alarmRecords.setCreateTime(collectionParamsManage.getCurTime()); - alarmRecordService.updateAlarmRecord(alarmRecords); + isExits.setContent(content); + isExits.setCreateTime(collectionParamsManage.getCurTime()); + alarmRecordService.updateAlarmRecord(isExits); } } } diff --git a/mh-quartz/src/main/java/com/mh/quartz/task/DealDataTask.java b/mh-quartz/src/main/java/com/mh/quartz/task/DealDataTask.java index 64a1568..30f0dd6 100644 --- a/mh-quartz/src/main/java/com/mh/quartz/task/DealDataTask.java +++ b/mh-quartz/src/main/java/com/mh/quartz/task/DealDataTask.java @@ -280,11 +280,11 @@ public class DealDataTask { return; } dataProcessService.batchInsertOrUpdate(hourList, "hour"); - //TODO 修改分钟表的状态,grade=1 - dataProcessService.batchUpdateGrade(idMap, "min"); } catch (Exception e) { log.error("小时数据表处理异常:" + e); } + //TODO 修改分钟表的状态,grade=1 + dataProcessService.batchUpdateGrade(idMap, "min"); } diff --git a/mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java b/mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java index d03634a..b55d1d4 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java +++ b/mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java @@ -121,9 +121,11 @@ public interface CollectionParamsManageMapper extends BaseMapper" + " #{item}" + " " + - " and cpm.param_type = #{paramType} " + + " and cpm.param_type = #{paramType}" + + " and cpm.system_type = #{systemType} " + "") List> selectByHouseIdAndMtType(@Param("houseIds") List houseIds, + @Param("systemType") String systemType, @Param("mtType") String mtType, @Param("paramType") String paramType); @@ -145,21 +147,28 @@ public interface CollectionParamsManageMapper extends BaseMapper= CURRENT_DATE " + + " and ar.create_time < CURRENT_DATE + interval '1 day' then 1 " + + " else 0 " + + " end as alarm_status " + "from " + " cpm_space_relation csr " + - " join collection_params_manage cpm " + - "on " + + "join collection_params_manage cpm on " + " csr.cpm_id = cpm.id " + - " join house_info hi " + - "on " + + "join house_info hi on " + " csr.house_id = hi.id " + - " join device_ledger dl " + - "on " + + "join device_ledger dl on " + " dl.id = cpm.device_ledger_id " + - " and csr.floor_id = #{floorId} " + - " and cpm.param_type = #{paramType}" + - " and cpm.system_type = #{systemType} ") + "join alarm_records ar on " + + " ar.cpm_id = cpm.id " + + "where " + + " csr.floor_id = #{floorId} " + + " and hi.floor_id = #{floorId} " + + " and cpm.param_type = #{paramType} " + + " and cpm.system_type = #{systemType}; ") List selectByParamType(@Param("systemType") String systemType, @Param("floorId") String floorId, @Param("paramType") String paramType); diff --git a/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java b/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java index 63bfe4e..2a70c32 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java +++ b/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java @@ -177,13 +177,24 @@ public interface DataProcessMapper { @Param("registerId") String registerId); @Select("") List selectHisDataByCodeAndRegisterAddr(@Param("tableName") String tableName, - @Param("registerIds") List registerIds); + @Param("registerIds") List registerIds, + @Param("startTime") String startTime, + @Param("endTime") String endTime); + } diff --git a/mh-system/src/main/java/com/mh/system/service/device/IIndoorTempMonitorService.java b/mh-system/src/main/java/com/mh/system/service/device/IIndoorTempMonitorService.java index 128a4a0..b6bad92 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/IIndoorTempMonitorService.java +++ b/mh-system/src/main/java/com/mh/system/service/device/IIndoorTempMonitorService.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; import com.mh.common.core.domain.dto.HouseGroupDTO; import com.mh.common.core.domain.dto.IndoorTempDTO; +import com.mh.common.core.domain.dto.TempHisRequest; import com.mh.common.core.domain.entity.ChillersEntity; import com.mh.common.core.domain.vo.IndoorTempVO; @@ -22,5 +23,5 @@ public interface IIndoorTempMonitorService { List getIndoorTempHisByFloorAndHouseId(String systemType, String floorId, String houseId); - List getIndoorTempHisByHouseId(String systemType, List houseId); + List getIndoorTempHisByHouseId(TempHisRequest tempHisRequest); } diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/IndoorTempMonitorServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/IndoorTempMonitorServiceImpl.java index d61ba8a..fa2da58 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/IndoorTempMonitorServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/device/impl/IndoorTempMonitorServiceImpl.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.mh.common.core.domain.dto.HouseGroupDTO; import com.mh.common.core.domain.dto.IndoorTempDTO; +import com.mh.common.core.domain.dto.TempHisRequest; import com.mh.common.core.domain.dto.TempHumidityDTO; import com.mh.common.core.domain.entity.ChillersEntity; import com.mh.common.core.domain.vo.IndoorTempVO; @@ -45,8 +46,12 @@ public class IndoorTempMonitorServiceImpl implements IIndoorTempMonitorService { @Override public List getIndoorTempByFloor(String systemType, String floorId) throws JsonProcessingException { - // 查询采集类型是温度的参数,采集参数是99 + // 查询采集类型是温度的参数,采集参数是12 List collectionParamsManages = collectionParamsManageMapper.selectByParamType(systemType, floorId, "12"); + // 湿度采集参数:32 + List humidityDTOS = collectionParamsManageMapper.selectByParamType(systemType, floorId, "32"); + // 合并collectionParamsManages和humidityDTOS + collectionParamsManages.addAll(humidityDTOS); return convert(collectionParamsManages); } @@ -72,8 +77,10 @@ public class IndoorTempMonitorServiceImpl implements IIndoorTempMonitorService { if (list.size() > 1) { log.warn("Duplicate entries found for key: {}|{}", list.get(0).getHouseId(), list.get(0).getHouseName()); } - HouseGroupDTO group = new HouseGroupDTO(list.get(0)); - list.forEach(group::addDevice); + HouseGroupDTO group = new HouseGroupDTO(list.getFirst()); + for (TempHumidityDTO data : list) { + group.addDevice(data); + } return group; } ) @@ -89,74 +96,132 @@ public class IndoorTempMonitorServiceImpl implements IIndoorTempMonitorService { } @Override - public List getIndoorTempHisByHouseId(String systemType, List houseIds) { - // 1. 使用Java 8时间API替代字符串截取 - LocalDateTime now = LocalDateTime.now(); - String tableName = "chillers_data_min" + now.getYear(); // 直接获取年份更安全 - - // 2. 增强SQL查询参数校验 + public List getIndoorTempHisByHouseId(TempHisRequest tempHisRequest) { + List houseIds = tempHisRequest.getHouseIds(); + String systemType = tempHisRequest.getSystemType(); + String startTime = tempHisRequest.getStartTime(); + String endTime = tempHisRequest.getEndTime(); + // 1. 参数校验 if (houseIds.isEmpty()) { log.warn("无效房间ID: {}", houseIds); return Collections.emptyList(); } - // 3. 使用更明确的集合类型声明 - List> cpmIdList = collectionParamsManageMapper.selectByHouseIdAndMtType( - houseIds, - "7", // 使用枚举常量 - "12" - ); + // 2. 准备基础数据 + String tableName = "chillers_data_min" + LocalDateTime.now().getYear(); - // cpmIdList用stream houseId分组遍历得出houseId,houseName, orderNum先赋值给result; - // 使用Stream分组映射 - Map houseMapping = cpmIdList.stream() - .filter(map -> map.containsKey("houseId") && map.containsKey("houseName")) - .collect(Collectors.toMap( - map -> map.get("houseId"), // 键:houseId - map -> map.get("houseName"), // 值:houseName - (oldVal, newVal) -> oldVal // 重复键处理:保留首次出现的值 - )); + // 3. 获取温度数据映射 + Map tempData = getHouseDataMapping(houseIds, systemType, "8", "12"); + Map humidityData = getHouseDataMapping(houseIds, systemType, "8", "32"); + + // 4. 构建结果 + return houseIds.stream() + .map(houseId -> buildIndoorTempDTO( + houseId, + tableName, + tempData.getOrDefault(houseId, HouseData.EMPTY), + humidityData.getOrDefault(houseId, HouseData.EMPTY), + startTime, + endTime + )) + .collect(Collectors.toList()); + } - Map houseOrderMapping = cpmIdList.stream() - .filter(map -> map.containsKey("houseId") && map.containsKey("houseName")) + // 辅助类封装房屋数据 + private static class HouseData { + static final HouseData EMPTY = new HouseData("未知房间", "0", Collections.emptyList()); + + final String houseName; + final String orderNum; + final List cpmIds; + + HouseData(String houseName, String orderNum, List cpmIds) { + this.houseName = houseName; + this.orderNum = orderNum; + this.cpmIds = cpmIds; + } + } + + // 获取房屋数据映射 + private Map getHouseDataMapping(List houseIds, String systemType, String mtType, String paramType) { + List> rawData = collectionParamsManageMapper.selectByHouseIdAndMtType(houseIds, systemType, mtType, paramType); + + return rawData.stream() + .filter(map -> map.containsKey("houseId") && map.containsKey("houseName") && map.containsKey("orderNum")) .collect(Collectors.toMap( - map -> map.get("houseId"), // 键:houseId - map -> map.get("orderNum"), // 值:houseName - (oldVal, newVal) -> oldVal // 重复键处理:保留首次出现的值 + // 确保 houseId 转换为 String + map -> String.valueOf(map.get("houseId")), + map -> new HouseData( + // 确保 houseName 转换为 String + String.valueOf(map.get("houseName")), + // 确保 orderNum 转换为 String + String.valueOf(map.get("orderNum")), + rawData.stream() + .filter(m -> String.valueOf(m.get("houseId")).equals(String.valueOf(map.get("houseId")))) + .map(m -> String.valueOf(m.get("cpmId"))) + .collect(Collectors.toList()) + ), + (oldVal, newVal) -> oldVal )); + } - // 构建结果集合 - return houseIds.stream() - .map(houseId -> { - // 根据houseId查询对应的cmpList - List cpmData = cpmIdList.stream() - .filter(map -> houseId.equals(map.get("houseId"))) - .map(map -> map.get("cpmId")) - .collect(Collectors.toList()); - List rawData = dataProcessMapper.selectHisDataByCodeAndRegisterAddr(tableName, cpmData); - // 4. 优化聚合计算(单次Stream完成所有操作) - List collect = rawData.stream() -// .filter(vo -> isValidTimeFormat(vo.getCurTime())) // 格式校验 - .collect(Collectors.groupingBy( - IndoorTempVO::getCurTime, - () -> new TreeMap<>(this::compareTimeString), // 自定义排序 - Collectors.collectingAndThen( - Collectors.toList(), - this::calculateAverage - ) - )) - .entrySet().stream() - .map(entry -> buildResultVO(entry.getKey(), entry.getValue())) - .toList(); - return new IndoorTempDTO( - Integer.parseInt(String.valueOf(houseOrderMapping.getOrDefault(houseId, 0))), // 默认值兜底 - houseId, - String.valueOf(houseMapping.getOrDefault(houseId, "未知房间")), // 默认值兜底 - collect); // 初始化数据列表 + // 构建单个房屋的DTO + private IndoorTempDTO buildIndoorTempDTO(String houseId, String tableName, HouseData tempData, HouseData humidityData, String startTime, String endTime) { + List tempRecords = getProcessedData(tableName, tempData.cpmIds, startTime, endTime); + List humidityRecords = getProcessedData(tableName, humidityData.cpmIds, startTime, endTime); + + List mergedData = mergeTempAndHumidity(tempRecords, humidityRecords); + + return new IndoorTempDTO( + Integer.parseInt(tempData.orderNum), + houseId, + tempData.houseName, + mergedData + ); + } + + // 获取处理后的数据 + private List getProcessedData(String tableName, List cpmIds, String startTime, String endTime) { + if (cpmIds.isEmpty()) { + return Collections.emptyList(); + } + + List rawData = dataProcessMapper.selectHisDataByCodeAndRegisterAddr(tableName, cpmIds, startTime, endTime); + + return rawData.stream() + .collect(Collectors.groupingBy( + IndoorTempVO::getCurTime, + () -> new TreeMap<>(this::compareTimeString), + Collectors.collectingAndThen( + Collectors.toList(), + this::calculateAverage + ) + )) + .entrySet().stream() + .map(entry -> buildResultVO(entry.getKey(), entry.getValue())) + .collect(Collectors.toList()); + } + + // 合并温度和湿度数据 + private List mergeTempAndHumidity(List tempData, List humidityData) { + return humidityData.stream() + .filter(humidity -> tempData.stream().anyMatch(temp -> temp.getCurTime().equals(humidity.getCurTime()))) + .map(humidity -> { + IndoorTempVO temp = tempData.stream() + .filter(t -> t.getCurTime().equals(humidity.getCurTime())) + .findFirst() + .orElseThrow(); + + return new IndoorTempVO( + humidity.getCurTime(), + temp.getIndoorTemp().setScale(1, RoundingMode.HALF_UP), + humidity.getIndoorTemp().setScale(1, RoundingMode.HALF_UP) + ); }) .collect(Collectors.toList()); } + // 辅助方法:时间格式校验 private boolean isValidTimeFormat(String time) { return time != null && time.matches("\\d{4}-\\d{2}-\\d{2} \\d{2}"); diff --git a/mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java index f058306..99ca928 100644 --- a/mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java @@ -326,6 +326,7 @@ public class ProOverviewServiceImpl implements IProOverviewService { HashMap totalData = new HashMap<>(); if (count > 0) { // 查询总表 + queryWrapper.eq("terminal_device_type", "15"); totalData = getTotalData(paramType, queryWrapper); } else { // 查询分表综合 @@ -334,6 +335,7 @@ public class ProOverviewServiceImpl implements IProOverviewService { queryWrapper.eq("system_type", sysType); queryWrapper.eq("grade", 40); queryWrapper.eq("mt_is_sum", 1); + queryWrapper.ne("terminal_device_type", "15"); // 查询分表总和 totalData = getTotalData(paramType, queryWrapper); } @@ -382,8 +384,10 @@ public class ProOverviewServiceImpl implements IProOverviewService { result.put("totalValue", multiply); }); // 计算得出今年的各个参数用量 - BigDecimal yearValue = overviewMapper.queryByDeviceNum(collectionParamsManages); - result.put("yearValue", yearValue == null ? BigDecimal.ZERO : yearValue); + if (!collectionParamsManages.isEmpty()) { + BigDecimal yearValue = overviewMapper.queryByDeviceNum(collectionParamsManages); + result.put("yearValue", yearValue == null ? BigDecimal.ZERO : yearValue); + } // switch (Integer.parseInt(paramType)) { // case 16: // yearEle = yearValue; diff --git a/mh-system/src/main/java/com/mh/system/service/policy/impl/PolicyManageServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/policy/impl/PolicyManageServiceImpl.java index 5416f81..94a399e 100644 --- a/mh-system/src/main/java/com/mh/system/service/policy/impl/PolicyManageServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/policy/impl/PolicyManageServiceImpl.java @@ -1,7 +1,7 @@ package com.mh.system.service.policy.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mh.common.core.domain.dto.DeviceMonitorDTO; +import com.mh.common.core.domain.entity.CollectionParamsManage; import com.mh.common.core.domain.entity.PolicyManage; import com.mh.system.mapper.device.CollectionParamsManageMapper; import com.mh.system.mapper.policy.PolicyManageMapper; @@ -49,16 +49,21 @@ public class PolicyManageServiceImpl implements IPolicyManageService { .peek(policy -> { // 自动开关机时间,反馈是ms,页面是s,所以除以1000 // if (funPolicyType.equals("2")) { - policy.setCurValue(BigDecimal.valueOf(policy.getCurValue() + policy.setCurValue(BigDecimal.valueOf((policy.getCurValue()==null?new BigDecimal("0"):policy.getCurValue()) .divide(new BigDecimal( (int) Math.pow(10, policy.getDigits()))).intValue())); // 除以1000并保留整数 // } // 判断系统启动模式值是多少,如果是1:一键启动,如果是2:定时启动 if (policy.getPolicyType().equals("5") && policy.getFunPolicyType().equals("1")) { // 查询当前系统启动模式值 - int systemStartMode = collectionParamsManageMapper.selectById(policy.getCpmId()).getCurValue().intValue(); - // 匹配orderNum值,如果相等,哪个的curValue=1 - if (policy.getOrderNum() == systemStartMode) { - policy.setCurValue(BigDecimal.valueOf(1)); + CollectionParamsManage collectionParamsManage = collectionParamsManageMapper.selectById(policy.getCpmId()); + if (null != collectionParamsManage) { + int systemStartMode = collectionParamsManageMapper.selectById(policy.getCpmId()).getCurValue().intValue(); + // 匹配orderNum值,如果相等,哪个的curValue=1 + if (policy.getOrderNum() == systemStartMode) { + policy.setCurValue(BigDecimal.valueOf(1)); + } else { + policy.setCurValue(BigDecimal.valueOf(0)); + } } else { policy.setCurValue(BigDecimal.valueOf(0)); }