Browse Source

冷源站监控接口

dev
mh 2 months ago
parent
commit
91d435f06f
  1. BIN
      doc/梅州豪生控制点表xls.xls
  2. 26
      mh-admin/src/main/java/com/mh/web/controller/device/OperationController.java
  3. 32
      mh-common/src/main/java/com/mh/common/core/domain/dto/DeviceMonitorDTO.java
  4. 4
      mh-common/src/main/java/com/mh/common/core/domain/entity/OrderEntity.java
  5. 51
      mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java
  6. 76
      mh-common/src/main/java/com/mh/common/core/domain/vo/DeviceMonitorVO.java
  7. 136
      mh-common/src/main/java/com/mh/common/core/domain/vo/DeviceOperateMonitorVO.java
  8. 21
      mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java
  9. 7
      mh-system/src/main/java/com/mh/system/service/device/ICollectionParamsManageService.java
  10. 168
      mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java

BIN
doc/梅州豪生控制点表xls.xls

Binary file not shown.

26
mh-admin/src/main/java/com/mh/web/controller/device/OperationController.java

@ -3,10 +3,10 @@ package com.mh.web.controller.device;
import com.mh.common.annotation.ControlDeviceAno;
import com.mh.common.core.controller.BaseController;
import com.mh.common.core.domain.AjaxResult;
import com.mh.common.core.domain.entity.CollectionParamsManage;
import com.mh.common.core.domain.dto.DeviceMonitorDTO;
import com.mh.common.core.domain.entity.OrderEntity;
import com.mh.common.core.domain.vo.DeviceOperateMonitorVO;
import com.mh.common.core.page.TableDataInfo;
import com.mh.common.utils.StringUtils;
import com.mh.framework.mqtt.service.IMqttGatewayService;
import com.mh.system.service.device.ICollectionParamsManageService;
import com.mh.system.service.operation.IOperationDeviceService;
@ -47,12 +47,30 @@ public class OperationController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('device:cpm:list')")
@GetMapping("/monitor/list")
public TableDataInfo list(CollectionParamsManage communicationParams)
public TableDataInfo list(@RequestParam(name = "systemType") String systemType)
{
List<CollectionParamsManage> list = iCollectionParamsManageService.selectCollectionParamsManageList(communicationParams);
List<DeviceMonitorDTO> list = iCollectionParamsManageService.selectMonitorListBySystemType(systemType);
return getDataTable(list);
}
/**
* 对设备进行操作处理获取对应的列表数据
*
* @param systemType
* @return
*/
@PreAuthorize("@ss.hasPermi('device:cpm:operation')")
@PostMapping("/operation/list")
public TableDataInfo operationDeviceList(@RequestParam(name = "systemType") String systemType) {
try {
List<DeviceOperateMonitorVO> deviceOperateMonitorVOS = iCollectionParamsManageService.operationDeviceList(systemType);
return getDataTable(deviceOperateMonitorVOS);
} catch (Exception e) {
log.error("设备操作失败", e);
return getDataTable(null);
}
}
/**
* 对设备进行操作处理
*

32
mh-common/src/main/java/com/mh/common/core/domain/dto/DeviceMonitorDTO.java

@ -0,0 +1,32 @@
package com.mh.common.core.domain.dto;
import com.mh.common.core.domain.vo.DeviceOperateMonitorVO;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 响应给前端的dto数据
* @date 2025-03-10 15:43:36
*/
@Setter
@Getter
public class DeviceMonitorDTO {
private String name;
private List<?> values;
@Override
public String toString() {
return new ToStringBuilder(this)
.append("name", name)
.append("values", values)
.toString();
}
}

4
mh-common/src/main/java/com/mh/common/core/domain/entity/OrderEntity.java

@ -15,7 +15,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
@Getter
public class OrderEntity {
private Integer id;
private String id;
private String param;
private Integer type; // 0:修改频率,
// 1:修改开关状态,
@ -30,7 +30,7 @@ public class OrderEntity {
public OrderEntity() {
}
public OrderEntity(Integer id, String param, Integer type, String otherName) {
public OrderEntity(String id, String param, Integer type, String otherName) {
this.id = id;
this.param = param;
this.type = type;

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

@ -0,0 +1,51 @@
package com.mh.common.core.domain.vo;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 监控和控制数据传输类
* @date 2025-03-11 11:26:10
*/
@Setter
@Getter
public class CollectionParamsManageVO {
private String id;
private String mtType;
private String deviceLedgerId;
private String deviceName;
private String otherName;
private BigDecimal curValue;
private Date curTime;
private String paramType;
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("mtType", mtType)
.append("deviceLedgerId", deviceLedgerId)
.append("deviceName", deviceName)
.append("otherName", otherName)
.append("curValue", curValue)
.append("curTime", curTime)
.append("paramType", paramType)
.toString();
}
}

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

@ -0,0 +1,76 @@
package com.mh.common.core.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 设备监控响应前端数据格式
* @date 2025-03-10 15:24:32
*/
@Setter
@Getter
public class DeviceMonitorVO {
/**
* id
*/
private String id;
/**
* 设备台账id
*/
private String deviceLedgerId;
/**
* 设备名称
*/
private String deviceName;
/**
* 点位名称
*/
private String collectName;
/**
* 设备类型
*/
private String deviceType;
/**
* 采集时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date collectTime;
/**
* 采集值
*/
private String collectValue;
/**
* 采集类型
*/
private String paramType;
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("deviceLedgerId", deviceLedgerId)
.append("deviceName", deviceName)
.append("collectName", collectName)
.append("deviceType", deviceType)
.append("collectTime", collectTime)
.append("collectValue", collectValue)
.append("paramType", paramType)
.toString();
}
}

136
mh-common/src/main/java/com/mh/common/core/domain/vo/DeviceOperateMonitorVO.java

@ -0,0 +1,136 @@
package com.mh.common.core.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 设备监控响应前端数据格式
* @date 2025-03-10 15:24:32
*/
@Setter
@Getter
public class DeviceOperateMonitorVO {
/**
* ID
*/
private String id;
/**
* 设备台账ID
*/
private String deviceLedgerId;
/**
* 点位名称
*/
private String collectName;
/**
* 设备类型
*/
private String deviceType;
/**
* 采集时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date collectTime;
/**
* 运行状态
*/
private Integer runStatus;
/**
* 设置启停
*/
private Integer setRunOrStop;
/**
* 故障报警状态
*/
private Integer alarmStatus;
/**
* 手自动状态
*/
private Integer handOrAuto;
/**
* 阀门状态
*/
private Integer valveStatus;
/**
* 设置阀门开度
*/
private Integer setValveOpen;
/**
* 设置阀门关闭
*/
private Integer setValveClose;
/**
* 频率
*/
private BigDecimal frequency;
/**
* 频率设置
*/
private BigDecimal setFrequency;
/**
* 供水温度
*/
private BigDecimal outTemp;
/**
* 回水温度
*/
private BigDecimal inTemp;
/**
* 供水压力
*/
private BigDecimal outPressure;
/**
* 回水压力
*/
private BigDecimal inPressure;
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("deviceLedgerId", deviceLedgerId)
.append("collectName", collectName)
.append("deviceType", deviceType)
.append("collectTime", collectTime)
.append("runStatus", runStatus)
.append("alarmStatus", alarmStatus)
.append("handOrAuto", handOrAuto)
.append("valveStatus", valveStatus)
.append("setValveOpen", setValveOpen)
.append("setValveClose", setValveClose)
.append("frequency", frequency)
.append("setFrequency", setFrequency)
.append("outTemp", outTemp)
.append("inTemp", inTemp)
.append("outPressure", outPressure)
.append("inPressure", inPressure)
.toString();
}
}

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

@ -3,6 +3,7 @@ package com.mh.system.mapper.device;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mh.common.core.domain.dto.TempHumidityDTO;
import com.mh.common.core.domain.entity.CollectionParamsManage;
import com.mh.common.core.domain.vo.CollectionParamsManageVO;
import org.apache.ibatis.annotations.*;
import java.util.List;
@ -143,4 +144,24 @@ public interface CollectionParamsManageMapper extends BaseMapper<CollectionParam
" and cpm.mt_type = #{mtType} ")
List<Map<String, String>> selectByHouseIdAndMtType(@Param("houseId") String houseId,
@Param("mtType") String mtType);
@Select("select " +
" cpm.id, " +
" dl.device_type as mt_type, " +
" cpm.device_ledger_id, " +
" dl.device_name, " +
" cpm.other_name, " +
" cpm.cur_value, " +
" cpm.cur_time, " +
" cpm.param_type " +
"from " +
" collection_params_manage cpm " +
"left join " +
"device_ledger dl on " +
" cpm.device_ledger_id = dl.id " +
" where cpm.system_type = #{systemType} " +
" and cpm.param_type != '0' " +
" order by dl.device_type, cpm.param_type ")
List<CollectionParamsManageVO> selectBySystemType(@Param("systemType") String systemType);
}

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

@ -1,12 +1,13 @@
package com.mh.system.service.device;
import com.mh.common.core.domain.dto.DeviceMonitorDTO;
import com.mh.common.core.domain.dto.PumpInfoDTO;
import com.mh.common.core.domain.entity.ChillersEntity;
import com.mh.common.core.domain.entity.CollectionParamsManage;
import com.mh.common.core.domain.vo.DeviceOperateMonitorVO;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author LJF
@ -36,4 +37,8 @@ public interface ICollectionParamsManageService {
List<PumpInfoDTO> selectPumpListInfo(String registerAddr, String mtType);
List<ChillersEntity> lineData(String registerAddr, String mtType);
List<DeviceMonitorDTO> selectMonitorListBySystemType(String systemType);
List<DeviceOperateMonitorVO> operationDeviceList(String systemType);
}

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

@ -1,10 +1,14 @@
package com.mh.system.service.device.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mh.common.core.domain.dto.DeviceMonitorDTO;
import com.mh.common.core.domain.dto.PumpInfoDTO;
import com.mh.common.core.domain.entity.ChillersEntity;
import com.mh.common.core.domain.entity.CollectionParamsManage;
import com.mh.common.core.domain.entity.DeviceLedger;
import com.mh.common.core.domain.vo.CollectionParamsManageVO;
import com.mh.common.core.domain.vo.DeviceMonitorVO;
import com.mh.common.core.domain.vo.DeviceOperateMonitorVO;
import com.mh.common.utils.DateUtils;
import com.mh.common.utils.StringUtils;
import com.mh.system.mapper.device.CollectionParamsManageMapper;
@ -20,6 +24,7 @@ import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author LJF
@ -199,4 +204,167 @@ public class CollectionParamsManageServiceImpl implements ICollectionParamsManag
}
return chillersEntities;
}
@Override
public List<DeviceMonitorDTO> selectMonitorListBySystemType(String systemType) {
// 根据系统类型查询出对应的设备
List<CollectionParamsManageVO> collectionParamsManages = collectionParamsManageMapper.selectBySystemType(systemType);
if (collectionParamsManages.isEmpty()) {
return List.of();
}
// 得出的collectionParamsManages进行数据赋值,如果paramType="1',则是运行状态,则赋值给runStatus,
// 如果paramType="5",则是故障报警,则赋值给alarmStatus
// 如果paramType="6",则是手自动状态,则赋值给handOrAuto
// 如果paramType="4",则是频率反馈,则赋值给frequency
// 使用Stream API处理数据
Map<String, List<DeviceMonitorVO>> groupedByDeviceType = collectionParamsManages.stream()
.collect(Collectors.groupingBy(CollectionParamsManageVO::getId))
.values()
.stream()
.map(params -> {
DeviceMonitorVO deviceMonitorVO = new DeviceMonitorVO();
for (CollectionParamsManageVO param : params) {
deviceMonitorVO.setId(param.getId());
deviceMonitorVO.setDeviceLedgerId(param.getDeviceLedgerId());
deviceMonitorVO.setDeviceName(param.getDeviceName());
deviceMonitorVO.setDeviceType(param.getMtType());
deviceMonitorVO.setCollectName(param.getOtherName());
deviceMonitorVO.setCollectTime(param.getCurTime());
deviceMonitorVO.setCollectValue(String.valueOf(param.getCurValue()));
deviceMonitorVO.setParamType(param.getParamType());
}
return deviceMonitorVO;
})
.collect(Collectors.groupingBy(DeviceMonitorVO::getDeviceType));
// 根据deviceType进行分组,赋值给List<DeviceMonitorDTO>得出结果集
List<DeviceMonitorDTO> result = groupedByDeviceType.entrySet().stream()
.map(entry -> {
DeviceMonitorDTO deviceMonitorDTO = new DeviceMonitorDTO();
deviceMonitorDTO.setName(entry.getKey());
deviceMonitorDTO.setValues(entry.getValue());
return deviceMonitorDTO;
})
.collect(Collectors.toList());
return result;
}
@Override
public List<DeviceOperateMonitorVO> operationDeviceList(String systemType) {
// 根据系统类型查询出对应的设备
List<CollectionParamsManageVO> collectionParamsManages = collectionParamsManageMapper.selectBySystemType(systemType);
if (collectionParamsManages.isEmpty()) {
return List.of();
}
// 得出的collectionParamsManages进行数据赋值,如果paramType="1',则是运行状态,则赋值给runStatus,
// 如果paramType="5",则是故障报警,则赋值给alarmStatus
// 如果paramType="6",则是手自动状态,则赋值给handOrAuto
// 如果paramType="4",则是频率反馈,则赋值给frequency
// 使用Stream API处理数据
Map<String, List<DeviceOperateMonitorVO>> groupedByDeviceType = collectionParamsManages.stream()
.collect(Collectors.groupingBy(CollectionParamsManageVO::getId))
.values()
.stream()
.map(params -> {
DeviceOperateMonitorVO deviceOperateMonitorVO = new DeviceOperateMonitorVO();
for (CollectionParamsManageVO param : params) {
switch (param.getParamType()) {
case "1":
deviceOperateMonitorVO.setRunStatus(param.getCurValue().intValue());
break;
case "2":
deviceOperateMonitorVO.setRunStatus(param.getCurValue().intValue());
break;
case "3":
deviceOperateMonitorVO.setSetFrequency(param.getCurValue());
break;
case "4":
deviceOperateMonitorVO.setFrequency(param.getCurValue());
break;
case "5":
deviceOperateMonitorVO.setAlarmStatus(param.getCurValue().intValue());
break;
case "6":
deviceOperateMonitorVO.setHandOrAuto(param.getCurValue().intValue());
break;
case "7":
if ("阀开反馈".contains(param.getOtherName()) && param.getCurValue().intValue() == 1) {
deviceOperateMonitorVO.setValveStatus(1);
} else if ("阀关反馈".contains(param.getOtherName()) && param.getCurValue().intValue() == 1) {
deviceOperateMonitorVO.setValveStatus(0);
} else {
deviceOperateMonitorVO.setValveStatus(0);
}
case "8":
deviceOperateMonitorVO.setSetValveOpen(param.getCurValue().intValue());
break;
case "9":
deviceOperateMonitorVO.setSetValveClose(param.getCurValue().intValue());
break;
default:
// 处理未知的paramType
break;
}
deviceOperateMonitorVO.setId(param.getId());
deviceOperateMonitorVO.setDeviceType(param.getMtType());
deviceOperateMonitorVO.setCollectName(param.getDeviceName());
deviceOperateMonitorVO.setCollectTime(param.getCurTime());
deviceOperateMonitorVO.setDeviceLedgerId(param.getDeviceLedgerId());
}
return deviceOperateMonitorVO;
})
.collect(Collectors.groupingBy(DeviceOperateMonitorVO::getDeviceLedgerId));
// 根据得出的分组数据之后,同样类型的分组数据进行合并起来变成一条数据,这里合并的规则就是某个值为空的,拿同样另一个值不为空的补上,得出List<DeviceMonitorVO>结果集
// 创建最终结果集合
List<DeviceOperateMonitorVO> result = new ArrayList<>();
// 遍历分组后的数据
groupedByDeviceType.forEach((deviceLedgerId, voList) -> {
// 创建合并后的VO对象
DeviceOperateMonitorVO mergedVO = new DeviceOperateMonitorVO();
// 设置设备类型
mergedVO.setDeviceLedgerId(deviceLedgerId);
// 设置设备类型
mergedVO.setDeviceType(voList.getFirst().getDeviceType());
// 遍历同类型设备的所有监控数据
voList.forEach(vo -> {
// 合并规则:当目标字段为空时,用当前VO的对应字段值补上
if (mergedVO.getRunStatus() == null) {
mergedVO.setRunStatus(vo.getRunStatus());
}
if (mergedVO.getAlarmStatus() == null) {
mergedVO.setAlarmStatus(vo.getAlarmStatus());
}
if (mergedVO.getHandOrAuto() == null) {
mergedVO.setHandOrAuto(vo.getHandOrAuto());
}
if (mergedVO.getFrequency() == null) {
mergedVO.setFrequency(vo.getFrequency());
}
if (mergedVO.getValveStatus() == null) {
mergedVO.setValveStatus(vo.getValveStatus());
}
// 合并基础字段(取第一个有效值)
if (mergedVO.getId() == null) {
mergedVO.setId(vo.getId());
}
if (mergedVO.getCollectName() == null) {
mergedVO.setCollectName(vo.getCollectName());
}
if (mergedVO.getCollectTime() == null ||
vo.getCollectTime().after(mergedVO.getCollectTime())) {
// 取最新的采集时间
mergedVO.setCollectTime(vo.getCollectTime());
}
});
result.add(mergedVO);
});
return result;
}
}

Loading…
Cancel
Save