Browse Source

1、区域管理接口对接以及优化;

2、综合报表数据查询接口对接以及优化;
3、设备台账、采集数据点位优化;
dev_mz
25604 5 days ago
parent
commit
bc7087a559
  1. 35
      mh-admin/src/main/java/com/mh/web/controller/comprehensive/CompreReportController.java
  2. 10
      mh-admin/src/main/java/com/mh/web/controller/device/CollectionParamsManageController.java
  3. 4
      mh-admin/src/main/resources/application-dev.yml
  4. 2
      mh-admin/src/main/resources/application.yml
  5. 52
      mh-admin/src/test/java/com/mh/MHApplicationTest.java
  6. 74
      mh-common/src/main/java/com/mh/common/core/domain/dto/CompreReportDTO.java
  7. 3
      mh-common/src/main/java/com/mh/common/core/domain/entity/CpmSpaceRelation.java
  8. 9
      mh-common/src/main/java/com/mh/common/core/domain/entity/HouseInfo.java
  9. 5
      mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java
  10. 5
      mh-common/src/main/java/com/mh/common/core/domain/vo/DeviceMonitorVO.java
  11. 1
      mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java
  12. 2
      mh-framework/src/main/java/com/mh/framework/netty/EchoServerHandler.java
  13. 3
      mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java
  14. 3
      mh-system/src/main/java/com/mh/system/mapper/space/CpmSpaceRelationMapper.java
  15. 2
      mh-system/src/main/java/com/mh/system/service/device/ICollectionParamsManageService.java
  16. 21
      mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java
  17. 44
      mh-system/src/main/java/com/mh/system/service/report/impl/ComprehensiveReportServiceImpl.java
  18. 138
      mh-system/src/main/java/com/mh/system/service/space/impl/HouseInfoServiceImpl.java
  19. 4
      sql/2025新增.sql

35
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.domain.vo.EnergyQueryVO;
import com.mh.common.core.page.TableDataInfo; import com.mh.common.core.page.TableDataInfo;
import com.mh.system.service.report.IComprehensiveReportService; import com.mh.system.service.report.IComprehensiveReportService;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import java.util.List;
import org.springframework.web.bind.annotation.RestController;
/** /**
* @Classname CompreReportController * @Classname CompreReportController
@ -25,10 +24,32 @@ public class CompreReportController extends BaseController {
this.proOverviewService = proOverviewService; this.proOverviewService = proOverviewService;
} }
@GetMapping("/report") @PostMapping("/report")
public TableDataInfo report(@RequestBody EnergyQueryVO vo) { public TableDataInfo report(@RequestBody EnergyQueryVO vo) {
startPage(); TableDataInfo dataTable = getDataTable(proOverviewService.report(vo));
return 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;
} }
} }

10
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)); return toAjax(iCollectionParamsManageService.deleteCommunicationByIds(cpmIds));
} }
/**
* 删除设备采集参数管理
*/
@Log(title = "设备采集参数管理")
@GetMapping("/list/{deviceLegerIds}")
public TableDataInfo queryList(@PathVariable String[] deviceLegerIds)
{
return getDataTable(iCollectionParamsManageService.selectCollectionParamsManageListByIds(deviceLegerIds));
}
} }

4
mh-admin/src/main/resources/application-dev.yml

@ -98,8 +98,8 @@ spring:
# 主库数据源 # 主库数据源
master: master:
#添加allowMultiQueries=true 在批量更新时才不会出错 #添加allowMultiQueries=true 在批量更新时才不会出错
# url: jdbc:postgresql://127.0.0.1:5432/eemcs url: jdbc:postgresql://127.0.0.1:5432/eemcs
url: jdbc:postgresql://106.55.173.225:5505/eemcs # url: jdbc:postgresql://106.55.173.225:5505/eemcs
username: postgres username: postgres
password: mh@803 password: mh@803
# 从库数据源 # 从库数据源

2
mh-admin/src/main/resources/application.yml

@ -1,6 +1,6 @@
spring: spring:
profiles: profiles:
active: prod active: dev
# 用户配置 # 用户配置
user: user:

52
mh-admin/src/test/java/com/mh/MHApplicationTest.java

@ -70,32 +70,32 @@ public class MHApplicationTest {
@Test @Test
public void calcEnergyData() { public void calcEnergyData() {
// for (int i = 10; i < 17; i++) { for (int i = 7; i < 8; i++) {
hotWaterTask.calcEnergyData("2025-09-30"+" 00:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 00:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 01:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 01:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 02:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 02:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 03:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 03:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 04:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 04:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 05:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 05:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 06:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 06:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 07:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 07:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 08:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 08:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 09:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 09:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 10:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 10:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 11:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 11:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 12:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 12:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 13:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 13:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 14:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 14:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 15:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 15:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 16:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 16:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 17:00:00"); hotWaterTask.calcEnergyData("2025-10-0"+i+" 17:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 18:00:00"); // hotWaterTask.calcEnergyData("2025-10-0"+i+" 18:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 19:00:00"); // hotWaterTask.calcEnergyData("2025-10-0"+i+" 19:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 20:00:00"); // hotWaterTask.calcEnergyData("2025-10-0"+i+" 20:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 21:00:00"); // hotWaterTask.calcEnergyData("2025-10-0"+i+" 21:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 22:00:00"); // hotWaterTask.calcEnergyData("2025-10-0"+i+" 22:00:00");
hotWaterTask.calcEnergyData("2025-09-30"+" 23:00:00"); // hotWaterTask.calcEnergyData("2025-10-0"+i+" 23:00:00");
// } }
} }

74
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();
}
}

3
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) @TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id; private String id;
/** 删除标志(0代表存在 2代表删除) */
private String delFlag;
/** /**
* 台账id * 台账id
*/ */

9
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 org.apache.commons.lang3.builder.ToStringBuilder;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -95,16 +96,16 @@ public class HouseInfo extends BaseEntity {
/** /**
* 台账id * 台账id
*/ */
@JsonIgnore // @JsonIgnore
@TableField(exist = false) @TableField(exist = false)
private String ledgerId; private List<String> ledgerId;
/** /**
* 采集节点id * 采集节点id
*/ */
@JsonIgnore // @JsonIgnore
@TableField(exist = false) @TableField(exist = false)
private String cpmId; private List<String> cpmId;
@Override @Override
public String toString() { public String toString() {

5
mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java

@ -46,6 +46,11 @@ public class CollectionParamsManageVO {
private int mtRatio; private int mtRatio;
/**
* 通信质量
*/
private String quality;
public BigDecimal getCurValue() { public BigDecimal getCurValue() {
return curValue; return curValue;
} }

5
mh-common/src/main/java/com/mh/common/core/domain/vo/DeviceMonitorVO.java

@ -62,6 +62,11 @@ public class DeviceMonitorVO {
private int orderNum; private int orderNum;
/**
* 采集值质量
*/
private String quality;
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this) return new ToStringBuilder(this)

1
mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java

@ -108,6 +108,7 @@ public class DataProcessServiceImpl implements DataProcessService {
continue; continue;
} }
collectionParamsManage.setCurTime(curTime); collectionParamsManage.setCurTime(curTime);
collectionParamsManage.setQuality("0");
entities.add(collectionParamsManage); entities.add(collectionParamsManage);
} }
} }

2
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.setDataType(Integer.valueOf(split[4]));
collectionParamsManage.setParamType(split[3]); collectionParamsManage.setParamType(split[3]);
collectionParamsManage.setOtherName(split[5]); collectionParamsManage.setOtherName(split[5]);
collectionParamsManage.setQuality("0");
analysisReceiveData(receiveStr, collectionParamsManage); analysisReceiveData(receiveStr, collectionParamsManage);
redisCache.deleteObject("order_send_read"); redisCache.deleteObject("order_send_read");
} }
@ -377,6 +378,7 @@ public class EchoServerHandler extends ChannelInboundHandlerAdapter {
AdvantechDatas datas = new AdvantechDatas(); AdvantechDatas datas = new AdvantechDatas();
datas.setValue(new BigDecimal(analysisData)); datas.setValue(new BigDecimal(analysisData));
datas.setTag(deviceCodeParamEntity.getOtherName()); datas.setTag(deviceCodeParamEntity.getOtherName());
datas.setQuality(0);
advantechDatas.add(datas); advantechDatas.add(datas);
advantechReceiver.setD(advantechDatas); advantechReceiver.setD(advantechDatas);
sendMsgByTopic.sendToDeviceMQ(JSONObject.toJSONString(advantechReceiver)); sendMsgByTopic.sendToDeviceMQ(JSONObject.toJSONString(advantechReceiver));

3
mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java

@ -317,7 +317,8 @@ public interface CollectionParamsManageMapper extends BaseMapper<CollectionParam
" cpm.other_name, " + " cpm.other_name, " +
" cpm.cur_value, " + " cpm.cur_value, " +
" cpm.cur_time, " + " cpm.cur_time, " +
" cpm.param_type " + " cpm.param_type," +
" cpm.quality " +
"from " + "from " +
" collection_params_manage cpm " + " collection_params_manage cpm " +
"left join device_ledger dl on " + "left join device_ledger dl on " +

3
mh-system/src/main/java/com/mh/system/mapper/space/CpmSpaceRelationMapper.java

@ -5,6 +5,7 @@ import com.mh.common.core.domain.entity.CpmSpaceRelation;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List; import java.util.List;
@ -21,4 +22,6 @@ public interface CpmSpaceRelationMapper extends BaseMapper<CpmSpaceRelation> {
@Select("select * from cpm_space_relation where house_id = #{houseId} ") @Select("select * from cpm_space_relation where house_id = #{houseId} ")
List<CpmSpaceRelation> selectListByHouseId(@Param("houseId") String houseId); List<CpmSpaceRelation> 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);
} }

2
mh-system/src/main/java/com/mh/system/service/device/ICollectionParamsManageService.java

@ -85,4 +85,6 @@ public interface ICollectionParamsManageService {
List<CollectionParamsManage> selectSteamBoilerListByParams(String systemType, String type); List<CollectionParamsManage> selectSteamBoilerListByParams(String systemType, String type);
List<DeviceMonitorDTO> selectHotWaterBoilerListByParams(String systemType, String type); List<DeviceMonitorDTO> selectHotWaterBoilerListByParams(String systemType, String type);
List<?> selectCollectionParamsManageListByIds(String[] cpmIds);
} }

21
mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java

@ -97,6 +97,19 @@ public class CollectionParamsManageServiceImpl implements ICollectionParamsManag
"DB611596"// 锅炉1-用户温度设定值 "DB611596"// 锅炉1-用户温度设定值
); );
@Override
public List<?> selectCollectionParamsManageListByIds(String[] cpmIds) {
if (cpmIds.length == 0) return List.of();
List<CollectionParamsManage> collectionParamsManages = new ArrayList<>();
for (String cpmId : cpmIds) {
List<CollectionParamsManage> list = collectionParamsManageMapper.selectList(
new QueryWrapper<CollectionParamsManage>()
.eq("device_ledger_id", cpmId));
collectionParamsManages.addAll(list);
}
return processOtherNameFields(collectionParamsManages);
}
@Override @Override
public List<DeviceMonitorDTO> selectHotWaterBoilerListByParams(String systemType, String type) { public List<DeviceMonitorDTO> selectHotWaterBoilerListByParams(String systemType, String type) {
if (StringUtils.isEmpty(systemType)) { if (StringUtils.isEmpty(systemType)) {
@ -412,9 +425,12 @@ public class CollectionParamsManageServiceImpl implements ICollectionParamsManag
// 检查该台账下所有设备的质量是否都为0(在线) // 检查该台账下所有设备的质量是否都为0(在线)
boolean allOnline = entities.stream() boolean allOnline = entities.stream()
.allMatch(entity -> entity.getQuality() != null && entity.getQuality().equals("0")); .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-离线 // 更新设备台账在线状态:0-在线,1-离线
deviceLedgerMapper.updateOnlineStatus(deviceLedgerId, allOnline ? 0 : 1); deviceLedgerMapper.updateOnlineStatus(deviceLedgerId, status);
}); });
// 根据网关id更新网关在线情况 // 根据网关id更新网关在线情况
chillersEntities.stream().map(CollectionParamsManage::getGatewayId).distinct().forEach(gatewayId -> { chillersEntities.stream().map(CollectionParamsManage::getGatewayId).distinct().forEach(gatewayId -> {
@ -1026,6 +1042,7 @@ public class CollectionParamsManageServiceImpl implements ICollectionParamsManag
deviceMonitorVO.setCollectTime(param.getCurTime()); deviceMonitorVO.setCollectTime(param.getCurTime());
deviceMonitorVO.setCollectValue(String.valueOf(new BigDecimal(String.valueOf(param.getCurValue())).intValue())); deviceMonitorVO.setCollectValue(String.valueOf(new BigDecimal(String.valueOf(param.getCurValue())).intValue()));
deviceMonitorVO.setParamType(param.getParamType()); deviceMonitorVO.setParamType(param.getParamType());
deviceMonitorVO.setQuality(param.getQuality());
} }
return deviceMonitorVO; return deviceMonitorVO;
}) })

44
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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mh.common.core.domain.ColumnFilter; 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.dto.OverviewEnergyDTO;
import com.mh.common.core.domain.entity.CollectionParamsManage; import com.mh.common.core.domain.entity.CollectionParamsManage;
import com.mh.common.core.domain.entity.SysDictData; 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); 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<CompreReportDTO> compreReportDTOS = new ArrayList<>();
if (!result.isEmpty()) {
Map<String, OverviewEnergyDTO> 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<CollectionParamsManage> queryCollectionParams(String paramType, String sysType, int grade, String terminalDeviceType, boolean isNow) { private List<CollectionParamsManage> queryCollectionParams(String paramType, String sysType, int grade, String terminalDeviceType, boolean isNow) {
@ -148,9 +186,9 @@ public class ComprehensiveReportServiceImpl implements IComprehensiveReportServi
case "17": case "17":
return "总产冷量"; return "总产冷量";
case "18": case "18":
return "总水量"; return "总热水补水量";
case "19": case "19":
return "总用气量"; return "总蒸汽流量";
default: default:
throw new IllegalArgumentException("Invalid param type: " + paramType); throw new IllegalArgumentException("Invalid param type: " + paramType);
} }

138
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.core.domain.entity.*;
import com.mh.common.utils.StringUtils; import com.mh.common.utils.StringUtils;
import com.mh.system.mapper.SysParamsMapper; import com.mh.system.mapper.SysParamsMapper;
import com.mh.system.mapper.device.CollectionParamsManageMapper;
import com.mh.system.mapper.space.*; import com.mh.system.mapper.space.*;
import com.mh.system.service.space.IHouseInfoService; import com.mh.system.service.space.IHouseInfoService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -43,6 +44,9 @@ public class HouseInfoServiceImpl implements IHouseInfoService {
@Resource @Resource
private CpmSpaceRelationMapper cpmSpaceRelationMapper; private CpmSpaceRelationMapper cpmSpaceRelationMapper;
@Resource
private CollectionParamsManageMapper collectionParamsManageMapper;
@Override @Override
public List<HouseInfo> selectHouseInfoList(HouseInfo houseInfo) { public List<HouseInfo> selectHouseInfoList(HouseInfo houseInfo) {
if (houseInfo == null) { if (houseInfo == null) {
@ -70,29 +74,81 @@ public class HouseInfoServiceImpl implements IHouseInfoService {
queryWrapper.like("remark", houseInfo.getRemark()); queryWrapper.like("remark", houseInfo.getRemark());
} }
queryWrapper.orderByAsc("order_num"); queryWrapper.orderByAsc("order_num");
return houseInfoMapper.selectList(queryWrapper); List<HouseInfo> houseInfos = houseInfoMapper.selectList(queryWrapper);
for (HouseInfo val : houseInfos) {
// 根据houseId查询对应的cpmId关联
List<String> cpmIds = new ArrayList<>();
List<String> ledgerIds = new ArrayList<>();
List<String> finalLedgerIds = ledgerIds;
cpmSpaceRelationMapper.selectList(new QueryWrapper<CpmSpaceRelation>().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 @Override
public HouseInfo selectHouseInfoById(String buildingId) { public HouseInfo selectHouseInfoById(String buildingId) {
return houseInfoMapper.selectById(buildingId); HouseInfo houseInfo = houseInfoMapper.selectById(buildingId);
// 根据houseId查询对应的cpmId关联
List<String> cpmIds = new ArrayList<>();
List<String> ledgerIds = new ArrayList<>();
List<String> finalLedgerIds = ledgerIds;
cpmSpaceRelationMapper.selectList(new QueryWrapper<CpmSpaceRelation>().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 @Override
public int insertHouseInfo(HouseInfo houseInfo) { public int insertHouseInfo(HouseInfo houseInfo) {
getAreaIdAndBuildingId(houseInfo); getAreaIdAndBuildingId(houseInfo);
int insert = houseInfoMapper.insert(houseInfo); int insert = houseInfoMapper.insert(houseInfo);
// 插入关联的区域关联表 List<String> ledgerIds = houseInfo.getLedgerId();
CpmSpaceRelation cpmSpaceRelation = new CpmSpaceRelation(); if (ledgerIds != null && !ledgerIds.isEmpty()) {
cpmSpaceRelation.setAreaId(houseInfo.getAreaId()); for (String ledgerId : ledgerIds) {
cpmSpaceRelation.setBuildingId(houseInfo.getBuildingId()); // 插入关联的区域关联表
cpmSpaceRelation.setHouseId(houseInfo.getId()); CpmSpaceRelation cpmSpaceRelation = new CpmSpaceRelation();
cpmSpaceRelation.setFloorId(houseInfo.getFloorId()); cpmSpaceRelation.setAreaId(houseInfo.getAreaId());
cpmSpaceRelation.setLedgerId(houseInfo.getLedgerId()); cpmSpaceRelation.setBuildingId(houseInfo.getBuildingId());
cpmSpaceRelation.setCpmId(houseInfo.getCpmId()); cpmSpaceRelation.setHouseId(houseInfo.getId());
cpmSpaceRelation.setCreateBy(houseInfo.getCreateBy()); cpmSpaceRelation.setFloorId(houseInfo.getFloorId());
cpmSpaceRelation.setCreateTime(houseInfo.getCreateTime()); cpmSpaceRelation.setLedgerId(ledgerId);
cpmSpaceRelationMapper.insert(cpmSpaceRelation); List<String> cpmIds = houseInfo.getCpmId();
List<CollectionParamsManage> collectionParamsManages = collectionParamsManageMapper.selectList(new QueryWrapper<CollectionParamsManage>().eq("device_ledger_id", ledgerId));
// 根据ledgerId查询对应的cpmId,判断当前houseIfo中的List<String> 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; return insert;
} }
@ -117,20 +173,48 @@ public class HouseInfoServiceImpl implements IHouseInfoService {
getAreaIdAndBuildingId(houseInfo); getAreaIdAndBuildingId(houseInfo);
int updateById = houseInfoMapper.updateById(houseInfo); int updateById = houseInfoMapper.updateById(houseInfo);
if (updateById > 0) { if (updateById > 0) {
// 判断关联表是否已经存在对应的cpmId List<String> ledgerIds = houseInfo.getLedgerId();
CpmSpaceRelation cpmSpaceRelation = cpmSpaceRelationMapper.selectOne(new QueryWrapper<CpmSpaceRelation>() List<String> cpmIds = houseInfo.getCpmId();
.eq("house_id", houseInfo.getId()).eq("cpm_id", houseInfo.getCpmId())); // if (cpmIds != null && !cpmIds.isEmpty()) {
if (cpmSpaceRelation == null) { // for (String cpmId : cpmIds) {
cpmSpaceRelation = new CpmSpaceRelation(); // // 删除对应的cpmId关联
cpmSpaceRelation.setAreaId(houseInfo.getAreaId()); // cpmSpaceRelationMapper.delete(new QueryWrapper<CpmSpaceRelation>().eq("cpm_id", cpmId).eq("house_id", houseInfo.getId()));
cpmSpaceRelation.setBuildingId(houseInfo.getBuildingId()); // }
cpmSpaceRelation.setFloorId(houseInfo.getFloorId()); // }
cpmSpaceRelation.setHouseId(houseInfo.getId()); // 更新delFlag为2
cpmSpaceRelation.setLedgerId(houseInfo.getLedgerId()); cpmSpaceRelationMapper.updateByHouseId(houseInfo.getId(), "2");
cpmSpaceRelation.setCpmId(houseInfo.getCpmId()); if (ledgerIds != null && !ledgerIds.isEmpty()) {
cpmSpaceRelation.setCreateTime(new Date()); for (String ledgerId : ledgerIds) {
cpmSpaceRelation.setCreateBy(houseInfo.getUpdateBy()); List<CollectionParamsManage> collectionParamsManages = collectionParamsManageMapper.selectList(new QueryWrapper<CollectionParamsManage>().eq("device_ledger_id", ledgerId));
cpmSpaceRelationMapper.insert(cpmSpaceRelation); // 根据ledgerId查询对应的cpmId,判断当前houseIfo中的List<String> 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<CpmSpaceRelation>()
.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; return updateById;

4
sql/2025新增.sql

@ -135,3 +135,7 @@ ALTER TABLE collection_params_manage ADD COLUMN quality varchar(10) NULL;
UPDATE collection_params_manage SET quality = 0; UPDATE collection_params_manage SET quality = 0;
-- quality备注 -- quality备注
COMMENT ON COLUMN collection_params_manage.quality IS '质量:网关上传的值质量'; 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代表删除)';
Loading…
Cancel
Save