diff --git a/mh-admin/src/main/java/com/mh/web/controller/comprehensive/CompreReportController.java b/mh-admin/src/main/java/com/mh/web/controller/comprehensive/CompreReportController.java index c3bbd6b..5f22c8a 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/comprehensive/CompreReportController.java +++ b/mh-admin/src/main/java/com/mh/web/controller/comprehensive/CompreReportController.java @@ -4,10 +4,9 @@ import com.mh.common.core.controller.BaseController; import com.mh.common.core.domain.vo.EnergyQueryVO; import com.mh.common.core.page.TableDataInfo; import com.mh.system.service.report.IComprehensiveReportService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * @Classname CompreReportController @@ -25,10 +24,32 @@ public class CompreReportController extends BaseController { this.proOverviewService = proOverviewService; } - @GetMapping("/report") + @PostMapping("/report") public TableDataInfo report(@RequestBody EnergyQueryVO vo) { - startPage(); - return getDataTable(proOverviewService.report(vo)); + TableDataInfo dataTable = getDataTable(proOverviewService.report(vo)); + // 优化分页逻辑,防止出现数组越界异常 + List rows = dataTable.getRows(); + int total = rows.size(); + // 如果 pageNum 小于等于0,则返回全部 + if (vo.getPageNum() <= 0) { + return dataTable; + } + int pageNum = vo.getPageNum() <= 0 ? 1 : vo.getPageNum(); + int pageSize = vo.getPageSize() <= 0 ? 10 : vo.getPageSize(); + + // 计算起始索引和结束索引 + int startIndex = (pageNum - 1) * pageSize; + int endIndex = Math.min(startIndex + pageSize, total); + + // 边界检查 + if (startIndex >= total || startIndex < 0) { + dataTable.setRows(List.of()); // 返回空列表而不是抛出异常 + } else { + dataTable.setRows(rows.subList(startIndex, endIndex)); + } + + return dataTable; } + } diff --git a/mh-admin/src/main/java/com/mh/web/controller/device/CollectionParamsManageController.java b/mh-admin/src/main/java/com/mh/web/controller/device/CollectionParamsManageController.java index 4ef0487..90438f7 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/device/CollectionParamsManageController.java +++ b/mh-admin/src/main/java/com/mh/web/controller/device/CollectionParamsManageController.java @@ -88,4 +88,14 @@ public class CollectionParamsManageController extends BaseController { return toAjax(iCollectionParamsManageService.deleteCommunicationByIds(cpmIds)); } + /** + * 删除设备采集参数管理 + */ + @Log(title = "设备采集参数管理") + @GetMapping("/list/{deviceLegerIds}") + public TableDataInfo queryList(@PathVariable String[] deviceLegerIds) + { + return getDataTable(iCollectionParamsManageService.selectCollectionParamsManageListByIds(deviceLegerIds)); + } + } diff --git a/mh-admin/src/main/resources/application-dev.yml b/mh-admin/src/main/resources/application-dev.yml index 7bb00e7..0699c0e 100644 --- a/mh-admin/src/main/resources/application-dev.yml +++ b/mh-admin/src/main/resources/application-dev.yml @@ -98,8 +98,8 @@ spring: # 主库数据源 master: #添加allowMultiQueries=true 在批量更新时才不会出错 -# url: jdbc:postgresql://127.0.0.1:5432/eemcs - url: jdbc:postgresql://106.55.173.225:5505/eemcs + url: jdbc:postgresql://127.0.0.1:5432/eemcs +# url: jdbc:postgresql://106.55.173.225:5505/eemcs username: postgres password: mh@803 # 从库数据源 diff --git a/mh-admin/src/main/resources/application.yml b/mh-admin/src/main/resources/application.yml index 44f7920..c3ae7c3 100644 --- a/mh-admin/src/main/resources/application.yml +++ b/mh-admin/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: prod + active: dev # 用户配置 user: diff --git a/mh-admin/src/test/java/com/mh/MHApplicationTest.java b/mh-admin/src/test/java/com/mh/MHApplicationTest.java index 71e2b13..219ccc6 100644 --- a/mh-admin/src/test/java/com/mh/MHApplicationTest.java +++ b/mh-admin/src/test/java/com/mh/MHApplicationTest.java @@ -70,32 +70,32 @@ public class MHApplicationTest { @Test public void calcEnergyData() { -// for (int i = 10; i < 17; i++) { - hotWaterTask.calcEnergyData("2025-09-30"+" 00:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 01:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 02:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 03:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 04:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 05:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 06:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 07:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 08:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 09:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 10:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 11:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 12:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 13:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 14:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 15:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 16:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 17:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 18:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 19:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 20:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 21:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 22:00:00"); - hotWaterTask.calcEnergyData("2025-09-30"+" 23:00:00"); -// } + for (int i = 7; i < 8; i++) { + hotWaterTask.calcEnergyData("2025-10-0"+i+" 00:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 01:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 02:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 03:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 04:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 05:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 06:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 07:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 08:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 09:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 10:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 11:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 12:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 13:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 14:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 15:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 16:00:00"); + hotWaterTask.calcEnergyData("2025-10-0"+i+" 17:00:00"); +// hotWaterTask.calcEnergyData("2025-10-0"+i+" 18:00:00"); +// hotWaterTask.calcEnergyData("2025-10-0"+i+" 19:00:00"); +// hotWaterTask.calcEnergyData("2025-10-0"+i+" 20:00:00"); +// hotWaterTask.calcEnergyData("2025-10-0"+i+" 21:00:00"); +// hotWaterTask.calcEnergyData("2025-10-0"+i+" 22:00:00"); +// hotWaterTask.calcEnergyData("2025-10-0"+i+" 23:00:00"); + } } diff --git a/mh-common/src/main/java/com/mh/common/core/domain/dto/CompreReportDTO.java b/mh-common/src/main/java/com/mh/common/core/domain/dto/CompreReportDTO.java new file mode 100644 index 0000000..32fa49a --- /dev/null +++ b/mh-common/src/main/java/com/mh/common/core/domain/dto/CompreReportDTO.java @@ -0,0 +1,74 @@ +package com.mh.common.core.domain.dto; + +import java.util.StringJoiner; + +/** + * @author LJF + * @version 1.0 + * @project EEMCS + * @description 综合系统能耗查询DTO + * @date 2025-10-09 10:17:26 + */ +public class CompreReportDTO { + + private String time; + + private String electValue; + + private String coldValue; + + private String hotValue; + + private String steamValue; + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getElectValue() { + return electValue; + } + + public void setElectValue(String electValue) { + this.electValue = electValue; + } + + public String getColdValue() { + return coldValue; + } + + public void setColdValue(String coldValue) { + this.coldValue = coldValue; + } + + public String getHotValue() { + return hotValue; + } + + public void setHotValue(String hotValue) { + this.hotValue = hotValue; + } + + public String getSteamValue() { + return steamValue; + } + + public void setSteamValue(String steamValue) { + this.steamValue = steamValue; + } + + @Override + public String toString() { + return new StringJoiner(", ", CompreReportDTO.class.getSimpleName() + "[", "]") + .add("time='" + time + "'") + .add("electValue='" + electValue + "'") + .add("coldValue='" + coldValue + "'") + .add("hotValue='" + hotValue + "'") + .add("steamValue='" + steamValue + "'") + .toString(); + } +} diff --git a/mh-common/src/main/java/com/mh/common/core/domain/entity/CpmSpaceRelation.java b/mh-common/src/main/java/com/mh/common/core/domain/entity/CpmSpaceRelation.java index 51c75a6..3d311f7 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/entity/CpmSpaceRelation.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/entity/CpmSpaceRelation.java @@ -30,6 +30,9 @@ public class CpmSpaceRelation extends BaseEntity { @TableId(value = "id", type = IdType.ASSIGN_UUID) private String id; + /** 删除标志(0代表存在 2代表删除) */ + private String delFlag; + /** * 台账id */ diff --git a/mh-common/src/main/java/com/mh/common/core/domain/entity/HouseInfo.java b/mh-common/src/main/java/com/mh/common/core/domain/entity/HouseInfo.java index f921a59..99270e7 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/entity/HouseInfo.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/entity/HouseInfo.java @@ -12,6 +12,7 @@ import lombok.Setter; import org.apache.commons.lang3.builder.ToStringBuilder; import java.math.BigDecimal; +import java.util.List; import java.util.Map; /** @@ -95,16 +96,16 @@ public class HouseInfo extends BaseEntity { /** * 台账id */ - @JsonIgnore +// @JsonIgnore @TableField(exist = false) - private String ledgerId; + private List ledgerId; /** * 采集节点id */ - @JsonIgnore +// @JsonIgnore @TableField(exist = false) - private String cpmId; + private List cpmId; @Override public String toString() { diff --git a/mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java b/mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java index 8c218cb..a2456df 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java @@ -46,6 +46,11 @@ public class CollectionParamsManageVO { private int mtRatio; + /** + * 通信质量 + */ + private String quality; + public BigDecimal getCurValue() { return curValue; } diff --git a/mh-common/src/main/java/com/mh/common/core/domain/vo/DeviceMonitorVO.java b/mh-common/src/main/java/com/mh/common/core/domain/vo/DeviceMonitorVO.java index cdb683b..7fa292b 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/vo/DeviceMonitorVO.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/vo/DeviceMonitorVO.java @@ -62,6 +62,11 @@ public class DeviceMonitorVO { private int orderNum; + /** + * 采集值质量 + */ + private String quality; + @Override public String toString() { return new ToStringBuilder(this) diff --git a/mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java b/mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java index 6f48215..fa73935 100644 --- a/mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java +++ b/mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java @@ -108,6 +108,7 @@ public class DataProcessServiceImpl implements DataProcessService { continue; } collectionParamsManage.setCurTime(curTime); + collectionParamsManage.setQuality("0"); entities.add(collectionParamsManage); } } diff --git a/mh-framework/src/main/java/com/mh/framework/netty/EchoServerHandler.java b/mh-framework/src/main/java/com/mh/framework/netty/EchoServerHandler.java index 1f528a7..5436c21 100644 --- a/mh-framework/src/main/java/com/mh/framework/netty/EchoServerHandler.java +++ b/mh-framework/src/main/java/com/mh/framework/netty/EchoServerHandler.java @@ -188,6 +188,7 @@ public class EchoServerHandler extends ChannelInboundHandlerAdapter { collectionParamsManage.setDataType(Integer.valueOf(split[4])); collectionParamsManage.setParamType(split[3]); collectionParamsManage.setOtherName(split[5]); + collectionParamsManage.setQuality("0"); analysisReceiveData(receiveStr, collectionParamsManage); redisCache.deleteObject("order_send_read"); } @@ -377,6 +378,7 @@ public class EchoServerHandler extends ChannelInboundHandlerAdapter { AdvantechDatas datas = new AdvantechDatas(); datas.setValue(new BigDecimal(analysisData)); datas.setTag(deviceCodeParamEntity.getOtherName()); + datas.setQuality(0); advantechDatas.add(datas); advantechReceiver.setD(advantechDatas); sendMsgByTopic.sendToDeviceMQ(JSONObject.toJSONString(advantechReceiver)); 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 1ad23b6..18284bd 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 @@ -317,7 +317,8 @@ public interface CollectionParamsManageMapper extends BaseMapper { @Select("select * from cpm_space_relation where house_id = #{houseId} ") List selectListByHouseId(@Param("houseId") String houseId); + @Update("update cpm_space_relation set del_flag = #{delFlag} where house_id = #{houseId}") + void updateByHouseId(@Param("houseId") String houseId, @Param("delFlag") String delFlag); } diff --git a/mh-system/src/main/java/com/mh/system/service/device/ICollectionParamsManageService.java b/mh-system/src/main/java/com/mh/system/service/device/ICollectionParamsManageService.java index e14a69f..0c07af9 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/ICollectionParamsManageService.java +++ b/mh-system/src/main/java/com/mh/system/service/device/ICollectionParamsManageService.java @@ -85,4 +85,6 @@ public interface ICollectionParamsManageService { List selectSteamBoilerListByParams(String systemType, String type); List selectHotWaterBoilerListByParams(String systemType, String type); + + List selectCollectionParamsManageListByIds(String[] cpmIds); } diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java index ac4732c..bfaea74 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java @@ -97,6 +97,19 @@ public class CollectionParamsManageServiceImpl implements ICollectionParamsManag "DB611596"// 锅炉1-用户温度设定值 ); + @Override + public List selectCollectionParamsManageListByIds(String[] cpmIds) { + if (cpmIds.length == 0) return List.of(); + List collectionParamsManages = new ArrayList<>(); + for (String cpmId : cpmIds) { + List list = collectionParamsManageMapper.selectList( + new QueryWrapper() + .eq("device_ledger_id", cpmId)); + collectionParamsManages.addAll(list); + } + return processOtherNameFields(collectionParamsManages); + } + @Override public List selectHotWaterBoilerListByParams(String systemType, String type) { if (StringUtils.isEmpty(systemType)) { @@ -412,9 +425,12 @@ public class CollectionParamsManageServiceImpl implements ICollectionParamsManag // 检查该台账下所有设备的质量是否都为0(在线) boolean allOnline = entities.stream() .allMatch(entity -> entity.getQuality() != null && entity.getQuality().equals("0")); - + // 检查该台账下如果有设备的质量不为0(异常) + boolean hasQuality = entities.stream() + .anyMatch(entity -> entity.getQuality() != null && !entity.getQuality().equals("0")); + int status = allOnline ? 0 : hasQuality ? 2 : 1; // 更新设备台账在线状态:0-在线,1-离线 - deviceLedgerMapper.updateOnlineStatus(deviceLedgerId, allOnline ? 0 : 1); + deviceLedgerMapper.updateOnlineStatus(deviceLedgerId, status); }); // 根据网关id更新网关在线情况 chillersEntities.stream().map(CollectionParamsManage::getGatewayId).distinct().forEach(gatewayId -> { @@ -1026,6 +1042,7 @@ public class CollectionParamsManageServiceImpl implements ICollectionParamsManag deviceMonitorVO.setCollectTime(param.getCurTime()); deviceMonitorVO.setCollectValue(String.valueOf(new BigDecimal(String.valueOf(param.getCurValue())).intValue())); deviceMonitorVO.setParamType(param.getParamType()); + deviceMonitorVO.setQuality(param.getQuality()); } return deviceMonitorVO; }) diff --git a/mh-system/src/main/java/com/mh/system/service/report/impl/ComprehensiveReportServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/report/impl/ComprehensiveReportServiceImpl.java index 42aa9e3..f52bf27 100644 --- a/mh-system/src/main/java/com/mh/system/service/report/impl/ComprehensiveReportServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/report/impl/ComprehensiveReportServiceImpl.java @@ -2,6 +2,7 @@ package com.mh.system.service.report.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mh.common.core.domain.ColumnFilter; +import com.mh.common.core.domain.dto.CompreReportDTO; import com.mh.common.core.domain.dto.OverviewEnergyDTO; import com.mh.common.core.domain.entity.CollectionParamsManage; import com.mh.common.core.domain.entity.SysDictData; @@ -100,7 +101,44 @@ public class ComprehensiveReportServiceImpl implements IComprehensiveReportServi initialEnergyData(dataList, energyMap.get(paramType), getEnergyLabel(paramType), getEnergyUnit(paramType), result); } - return result.isEmpty() ? List.of() : result; + // 这里再拆分result数据,根据每个对象的时间进行比较赋值,如果都是相等,然后分别赋值给CompreReportDTO,其中 + // name="总用电量"的对应的data赋值给CompreReportDTO的electValue, + // name="总热水补水量"的对应的data赋值给CompreReportDTO的hotValue, + // name="总产冷量"的对应的data赋值给CompreReportDTO的coldValue, + // name="总蒸汽流量"的对应的data赋值给CompreReportDTO的steamValue, + // timeStr就赋值给CompreReportDTO的time + List compreReportDTOS = new ArrayList<>(); + + if (!result.isEmpty()) { + Map energyDataMap = result.stream() + .collect(Collectors.toMap(OverviewEnergyDTO::getName, dto -> dto)); + + OverviewEnergyDTO electDto = energyDataMap.get("总用电量"); + OverviewEnergyDTO hotDto = energyDataMap.get("总热水补水量"); + OverviewEnergyDTO coldDto = energyDataMap.get("总产冷量"); + OverviewEnergyDTO steamDto = energyDataMap.get("总蒸汽流量"); + + if (electDto != null && electDto.getTimeStr() != null) { + String[] times = electDto.getTimeStr(); + String[] electValues = electDto.getData(); + String[] hotValues = hotDto != null ? hotDto.getData() : new String[times.length]; + String[] coldValues = coldDto != null ? coldDto.getData() : new String[times.length]; + String[] steamValues = steamDto != null ? steamDto.getData() : new String[times.length]; + + for (int i = 0; i < times.length; i++) { + CompreReportDTO dto = new CompreReportDTO(); + dto.setTime(times[i]); + dto.setElectValue(i < electValues.length ? electValues[i] : "0.00"); + dto.setHotValue(i < hotValues.length ? hotValues[i] : "0.00"); + dto.setColdValue(i < coldValues.length ? coldValues[i] : "0.00"); + dto.setSteamValue(i < steamValues.length ? steamValues[i] : "0.00"); + compreReportDTOS.add(dto); + } + } + } + + return compreReportDTOS.isEmpty() ? List.of() : compreReportDTOS; + } private List queryCollectionParams(String paramType, String sysType, int grade, String terminalDeviceType, boolean isNow) { @@ -148,9 +186,9 @@ public class ComprehensiveReportServiceImpl implements IComprehensiveReportServi case "17": return "总产冷量"; case "18": - return "总用水量"; + return "总热水补水量"; case "19": - return "总用气量"; + return "总蒸汽流量"; default: throw new IllegalArgumentException("Invalid param type: " + paramType); } diff --git a/mh-system/src/main/java/com/mh/system/service/space/impl/HouseInfoServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/space/impl/HouseInfoServiceImpl.java index cee98a6..4f34843 100644 --- a/mh-system/src/main/java/com/mh/system/service/space/impl/HouseInfoServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/space/impl/HouseInfoServiceImpl.java @@ -6,6 +6,7 @@ import com.mh.common.core.domain.TreeSelect; import com.mh.common.core.domain.entity.*; import com.mh.common.utils.StringUtils; import com.mh.system.mapper.SysParamsMapper; +import com.mh.system.mapper.device.CollectionParamsManageMapper; import com.mh.system.mapper.space.*; import com.mh.system.service.space.IHouseInfoService; import jakarta.annotation.Resource; @@ -43,6 +44,9 @@ public class HouseInfoServiceImpl implements IHouseInfoService { @Resource private CpmSpaceRelationMapper cpmSpaceRelationMapper; + @Resource + private CollectionParamsManageMapper collectionParamsManageMapper; + @Override public List selectHouseInfoList(HouseInfo houseInfo) { if (houseInfo == null) { @@ -70,29 +74,81 @@ public class HouseInfoServiceImpl implements IHouseInfoService { queryWrapper.like("remark", houseInfo.getRemark()); } queryWrapper.orderByAsc("order_num"); - return houseInfoMapper.selectList(queryWrapper); + List houseInfos = houseInfoMapper.selectList(queryWrapper); + + for (HouseInfo val : houseInfos) { + // 根据houseId查询对应的cpmId关联 + List cpmIds = new ArrayList<>(); + List ledgerIds = new ArrayList<>(); + List finalLedgerIds = ledgerIds; + cpmSpaceRelationMapper.selectList(new QueryWrapper().eq("house_id", val.getId())).forEach(cpmSpaceRelation -> { + if (StringUtils.isNotEmpty(cpmSpaceRelation.getDelFlag()) && cpmSpaceRelation.getDelFlag().equals("0")) { + cpmIds.add(cpmSpaceRelation.getCpmId()); + if (StringUtils.isNotEmpty(cpmSpaceRelation.getLedgerId())) { + finalLedgerIds.add(cpmSpaceRelation.getLedgerId()); + } + } + }); + val.setCpmId(cpmIds); + // ledgerIds去掉重复值 + ledgerIds = finalLedgerIds.stream().distinct().collect(Collectors.toList()); + val.setLedgerId(ledgerIds); + } + return houseInfos; } @Override public HouseInfo selectHouseInfoById(String buildingId) { - return houseInfoMapper.selectById(buildingId); + HouseInfo houseInfo = houseInfoMapper.selectById(buildingId); + // 根据houseId查询对应的cpmId关联 + List cpmIds = new ArrayList<>(); + List ledgerIds = new ArrayList<>(); + List finalLedgerIds = ledgerIds; + cpmSpaceRelationMapper.selectList(new QueryWrapper().eq("house_id", houseInfo.getId())).forEach(cpmSpaceRelation -> { + if (StringUtils.isNotEmpty(cpmSpaceRelation.getDelFlag()) && cpmSpaceRelation.getDelFlag().equals("0")) { + cpmIds.add(cpmSpaceRelation.getCpmId()); + if (StringUtils.isNotEmpty(cpmSpaceRelation.getLedgerId())) { + finalLedgerIds.add(cpmSpaceRelation.getLedgerId()); + } + } + }); + houseInfo.setCpmId(cpmIds); + // ledgerIds去掉重复值 + ledgerIds = finalLedgerIds.stream().distinct().collect(Collectors.toList()); + houseInfo.setLedgerId(ledgerIds); + return houseInfo; } @Override public int insertHouseInfo(HouseInfo houseInfo) { getAreaIdAndBuildingId(houseInfo); int insert = houseInfoMapper.insert(houseInfo); - // 插入关联的区域关联表 - CpmSpaceRelation cpmSpaceRelation = new CpmSpaceRelation(); - cpmSpaceRelation.setAreaId(houseInfo.getAreaId()); - cpmSpaceRelation.setBuildingId(houseInfo.getBuildingId()); - cpmSpaceRelation.setHouseId(houseInfo.getId()); - cpmSpaceRelation.setFloorId(houseInfo.getFloorId()); - cpmSpaceRelation.setLedgerId(houseInfo.getLedgerId()); - cpmSpaceRelation.setCpmId(houseInfo.getCpmId()); - cpmSpaceRelation.setCreateBy(houseInfo.getCreateBy()); - cpmSpaceRelation.setCreateTime(houseInfo.getCreateTime()); - cpmSpaceRelationMapper.insert(cpmSpaceRelation); + List ledgerIds = houseInfo.getLedgerId(); + if (ledgerIds != null && !ledgerIds.isEmpty()) { + for (String ledgerId : ledgerIds) { + // 插入关联的区域关联表 + CpmSpaceRelation cpmSpaceRelation = new CpmSpaceRelation(); + cpmSpaceRelation.setAreaId(houseInfo.getAreaId()); + cpmSpaceRelation.setBuildingId(houseInfo.getBuildingId()); + cpmSpaceRelation.setHouseId(houseInfo.getId()); + cpmSpaceRelation.setFloorId(houseInfo.getFloorId()); + cpmSpaceRelation.setLedgerId(ledgerId); + List cpmIds = houseInfo.getCpmId(); + List collectionParamsManages = collectionParamsManageMapper.selectList(new QueryWrapper().eq("device_ledger_id", ledgerId)); + // 根据ledgerId查询对应的cpmId,判断当前houseIfo中的List cpmId包含了哪几个cpmId,就插入哪几个 + if (collectionParamsManages != null && !collectionParamsManages.isEmpty()) { + for (CollectionParamsManage cpm : collectionParamsManages) { + if (cpmIds != null && cpmIds.contains(cpm.getId())) { + cpmSpaceRelation.setCpmId(cpm.getId()); + cpmSpaceRelation.setCreateBy(houseInfo.getCreateBy()); + cpmSpaceRelation.setCreateTime(houseInfo.getCreateTime()); + cpmSpaceRelation.setDelFlag("0"); + cpmSpaceRelationMapper.insert(cpmSpaceRelation); + } + } + } + } + } return insert; } @@ -117,20 +173,48 @@ public class HouseInfoServiceImpl implements IHouseInfoService { getAreaIdAndBuildingId(houseInfo); int updateById = houseInfoMapper.updateById(houseInfo); if (updateById > 0) { - // 判断关联表是否已经存在对应的cpmId - CpmSpaceRelation cpmSpaceRelation = cpmSpaceRelationMapper.selectOne(new QueryWrapper() - .eq("house_id", houseInfo.getId()).eq("cpm_id", houseInfo.getCpmId())); - if (cpmSpaceRelation == null) { - cpmSpaceRelation = new CpmSpaceRelation(); - cpmSpaceRelation.setAreaId(houseInfo.getAreaId()); - cpmSpaceRelation.setBuildingId(houseInfo.getBuildingId()); - cpmSpaceRelation.setFloorId(houseInfo.getFloorId()); - cpmSpaceRelation.setHouseId(houseInfo.getId()); - cpmSpaceRelation.setLedgerId(houseInfo.getLedgerId()); - cpmSpaceRelation.setCpmId(houseInfo.getCpmId()); - cpmSpaceRelation.setCreateTime(new Date()); - cpmSpaceRelation.setCreateBy(houseInfo.getUpdateBy()); - cpmSpaceRelationMapper.insert(cpmSpaceRelation); + List ledgerIds = houseInfo.getLedgerId(); + List cpmIds = houseInfo.getCpmId(); +// if (cpmIds != null && !cpmIds.isEmpty()) { +// for (String cpmId : cpmIds) { +// // 删除对应的cpmId关联 +// cpmSpaceRelationMapper.delete(new QueryWrapper().eq("cpm_id", cpmId).eq("house_id", houseInfo.getId())); +// } +// } + // 更新delFlag为2 + cpmSpaceRelationMapper.updateByHouseId(houseInfo.getId(), "2"); + if (ledgerIds != null && !ledgerIds.isEmpty()) { + for (String ledgerId : ledgerIds) { + List collectionParamsManages = collectionParamsManageMapper.selectList(new QueryWrapper().eq("device_ledger_id", ledgerId)); + // 根据ledgerId查询对应的cpmId,判断当前houseIfo中的List cpmId包含了哪几个cpmId,就插入哪几个 + if (collectionParamsManages != null && !collectionParamsManages.isEmpty()) { + for (CollectionParamsManage cpm : collectionParamsManages) { + if (cpmIds != null && cpmIds.contains(cpm.getId())) { + // 判断关联表是否已经存在对应的cpmId + CpmSpaceRelation cpmSpaceRelation = cpmSpaceRelationMapper.selectOne(new QueryWrapper() + .eq("house_id", houseInfo.getId()).eq("cpm_id", cpm.getId())); + if (cpmSpaceRelation == null) { + cpmSpaceRelation = new CpmSpaceRelation(); + cpmSpaceRelation.setAreaId(houseInfo.getAreaId()); + cpmSpaceRelation.setBuildingId(houseInfo.getBuildingId()); + cpmSpaceRelation.setFloorId(houseInfo.getFloorId()); + cpmSpaceRelation.setHouseId(houseInfo.getId()); + cpmSpaceRelation.setLedgerId(ledgerId); + cpmSpaceRelation.setCpmId(cpm.getId()); + cpmSpaceRelation.setCreateTime(new Date()); + cpmSpaceRelation.setCreateBy(houseInfo.getUpdateBy()); + cpmSpaceRelation.setDelFlag("0"); + cpmSpaceRelationMapper.insert(cpmSpaceRelation); + } else { + cpmSpaceRelation.setUpdateTime(new Date()); + cpmSpaceRelation.setUpdateBy(houseInfo.getUpdateBy()); + cpmSpaceRelation.setDelFlag("0"); + cpmSpaceRelationMapper.updateById(cpmSpaceRelation); + } + } + } + } + } } } return updateById; diff --git a/sql/2025新增.sql b/sql/2025新增.sql index 59fba9e..f6c7bd9 100644 --- a/sql/2025新增.sql +++ b/sql/2025新增.sql @@ -134,4 +134,8 @@ ALTER TABLE collection_params_manage ADD COLUMN quality varchar(10) NULL; -- 设置默认值为0 UPDATE collection_params_manage SET quality = 0; -- quality备注 -COMMENT ON COLUMN collection_params_manage.quality IS '质量:网关上传的值质量'; \ No newline at end of file +COMMENT ON COLUMN collection_params_manage.quality IS '质量:网关上传的值质量'; + +-- 2025-10-09 +ALTER TABLE public.cpm_space_relation ADD del_flag bpchar(1) DEFAULT '0' NOT NULL; +COMMENT ON COLUMN public.cpm_space_relation.del_flag IS '删除标志(0代表存在 2代表删除)'; \ No newline at end of file