Browse Source

1、mqtt控制列表接口添加;

dev
25604 13 hours ago
parent
commit
766b576477
  1. 52
      user-service/src/main/java/com/mh/user/controller/HotWaterMonitorController.java
  2. 144
      user-service/src/main/java/com/mh/user/dto/HotWaterBackPumpControlVO.java
  3. 104
      user-service/src/main/java/com/mh/user/dto/HotWaterCircuitPumpControlVO.java
  4. 38
      user-service/src/main/java/com/mh/user/dto/HotWaterControlDTO.java
  5. 77
      user-service/src/main/java/com/mh/user/dto/HotWaterControlListVO.java
  6. 186
      user-service/src/main/java/com/mh/user/dto/HotWaterControlVO.java
  7. 71
      user-service/src/main/java/com/mh/user/dto/HotWaterDeviceCalibrationControlVO.java
  8. 43
      user-service/src/main/java/com/mh/user/dto/HotWaterDeviceControlVO.java
  9. 241
      user-service/src/main/java/com/mh/user/dto/HotWaterHotPumpControlVO.java
  10. 55
      user-service/src/main/java/com/mh/user/dto/HotWaterNowDataDTO.java
  11. 145
      user-service/src/main/java/com/mh/user/dto/HotWaterSystemControlVO.java
  12. 2
      user-service/src/main/java/com/mh/user/job/CollectionLoopRunner.java
  13. 2
      user-service/src/main/java/com/mh/user/job/DealDataJob.java
  14. 69
      user-service/src/main/java/com/mh/user/mapper/CollectionParamsManageMapper.java
  15. 10
      user-service/src/main/java/com/mh/user/model/SanShiFengReceiver.java
  16. 9
      user-service/src/main/java/com/mh/user/service/CollectionParamsManageService.java
  17. 496
      user-service/src/main/java/com/mh/user/service/impl/CollectionParamsManageServiceImpl.java
  18. 2
      user-service/src/main/java/com/mh/user/service/mqtt/config/MqttConfig.java
  19. 34
      user-service/src/main/java/com/mh/user/service/mqtt/service/impl/EventsServiceImpl.java
  20. 4
      user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java
  21. 16
      user-service/src/main/resources/application-dev.yml
  22. 2
      user-service/src/main/resources/application.yml

52
user-service/src/main/java/com/mh/user/controller/HotWaterMonitorController.java

@ -0,0 +1,52 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
import com.mh.user.dto.HotWaterControlDTO;
import com.mh.user.dto.HotWaterNowDataDTO;
import com.mh.user.service.CollectionParamsManageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project CHWS
* @description 热水监控
* @date 2025-12-16 16:02:20
*/
@RestController
@RequestMapping("/device/hotWater")
public class HotWaterMonitorController {
@Autowired
private CollectionParamsManageService collectionParamsManageService;
/**
* 获取生活热水监控热泵信息
* @param buildingId
* @return
*/
@GetMapping("/monitorList")
public HttpResult monitorList(@RequestParam("buildingId") String buildingId) {
List<HotWaterNowDataDTO> list = collectionParamsManageService.monitorList(buildingId);
return HttpResult. ok(list);
}
/**
* 获取生活热水监控操作信息内容
* @param buildingId
* @return
*/
@GetMapping("/operateList")
public HttpResult operateList(@RequestParam("buildingId") String buildingId) {
List<HotWaterControlDTO> list = collectionParamsManageService.operateList(buildingId);
return HttpResult.ok(list);
}
}

144
user-service/src/main/java/com/mh/user/dto/HotWaterBackPumpControlVO.java

@ -0,0 +1,144 @@
package com.mh.user.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.StringJoiner;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 回水泵热泵控制界面VO
* @date 2025-03-14 09:00:37
*/
@Setter
@Getter
public class HotWaterBackPumpControlVO {
private String id;
private String name;
private int orderNum;
// 定时_时开1
private int oneHourTimeOpenSetOne;
private String oneHourTimeOpenSetOneId;
// 定时_分开1
private int oneMinTimeOpenSetOne;
private String oneMinTimeOpenSetOneId;
// 定时_时关1
private int oneHourTimeCloseSetOne;
private String oneHourTimeCloseSetOneId;
// 定时_分关1
private int oneMinTimeCloseSetOne;
private String oneMinTimeCloseSetOneId;
// 定时_时开2
private int oneHourTimeOpenSetTwo;
private String oneHourTimeOpenSetTwoId;
// 定时_分开2
private int oneMinTimeOpenSetTwo;
private String oneMinTimeOpenSetTwoId;
// 定时_时关2
private int oneHourTimeCloseSetTwo;
private String oneHourTimeCloseSetTwoId;
// 定时_分关2
private int oneMinTimeCloseSetTwo;
private String oneMinTimeCloseSetTwoId;
// 定时_时开3
private int oneHourTimeOpenSetThree;
private String oneHourTimeOpenSetThreeId;
// 定时_分开3
private int oneMinTimeOpenSetThree;
private String oneMinTimeOpenSetThreeId;
// 定时_时关3
private int oneHourTimeCloseSetThree;
private String oneHourTimeCloseSetThreeId;
// 定时_分关3
private int oneMinTimeCloseSetThree;
private String oneMinTimeCloseSetThreeId;
// 开延时
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private int openDelayTime;
private String openDelayTimeId;
// 温度设置
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal tempSet;
private String tempSetId;
// 累计运行时间
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal runTime;
private String runTimeId;
// 运行状态
private int runState;
private String runStateId;
// 启停控制
private int startStopControl;
private String startStopControlId;
// 故障
private int fault;
private String faultId;
@Override
public String toString() {
return new StringJoiner(", ", HotWaterBackPumpControlVO.class.getSimpleName() + "[", "]")
.add("id='" + id + "'")
.add("name='" + name + "'")
.add("orderNum=" + orderNum)
.add("oneHourTimeOpenSetOne=" + oneHourTimeOpenSetOne)
.add("oneHourTimeOpenSetOneId='" + oneHourTimeOpenSetOneId + "'")
.add("oneMinTimeOpenSetOne=" + oneMinTimeOpenSetOne)
.add("oneMinTimeOpenSetOneId='" + oneMinTimeOpenSetOneId + "'")
.add("oneHourTimeCloseSetOne=" + oneHourTimeCloseSetOne)
.add("oneHourTimeCloseSetOneId='" + oneHourTimeCloseSetOneId + "'")
.add("oneMinTimeCloseSetOne=" + oneMinTimeCloseSetOne)
.add("oneMinTimeCloseSetOneId='" + oneMinTimeCloseSetOneId + "'")
.add("oneHourTimeOpenSetTwo=" + oneHourTimeOpenSetTwo)
.add("oneHourTimeOpenSetTwoId='" + oneHourTimeOpenSetTwoId + "'")
.add("oneMinTimeOpenSetTwo=" + oneMinTimeOpenSetTwo)
.add("oneMinTimeOpenSetTwoId='" + oneMinTimeOpenSetTwoId + "'")
.add("oneHourTimeCloseSetTwo=" + oneHourTimeCloseSetTwo)
.add("oneHourTimeCloseSetTwoId='" + oneHourTimeCloseSetTwoId + "'")
.add("oneMinTimeCloseSetTwo=" + oneMinTimeCloseSetTwo)
.add("oneMinTimeCloseSetTwoId='" + oneMinTimeCloseSetTwoId + "'")
.add("oneHourTimeOpenSetThree=" + oneHourTimeOpenSetThree)
.add("oneHourTimeOpenSetThreeId='" + oneHourTimeOpenSetThreeId + "'")
.add("oneMinTimeOpenSetThree=" + oneMinTimeOpenSetThree)
.add("oneMinTimeOpenSetThreeId='" + oneMinTimeOpenSetThreeId + "'")
.add("oneHourTimeCloseSetThree=" + oneHourTimeCloseSetThree)
.add("oneHourTimeCloseSetThreeId='" + oneHourTimeCloseSetThreeId + "'")
.add("openDelayTime=" + openDelayTime)
.add("openDelayTimeId='" + openDelayTimeId + "'")
.add("tempSet=" + tempSet)
.add("tempSetId='" + tempSetId + "'")
.add("runTime=" + runTime)
.add("runTimeId='" + runTimeId + "'")
.add("runState=" + runState)
.add("runStateId='" + runStateId + "'")
.add("startStopControl=" + startStopControl)
.add("startStopControlId='" + startStopControlId + "'")
.add("fault=" + fault)
.add("faultId='" + faultId + "'")
.toString();
}
}

104
user-service/src/main/java/com/mh/user/dto/HotWaterCircuitPumpControlVO.java

@ -0,0 +1,104 @@
package com.mh.user.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.StringJoiner;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 热泵控制界面VO
* @date 2025-03-14 09:00:37
*/
@Setter
@Getter
public class HotWaterCircuitPumpControlVO {
private String id;
private String name;
private int orderNum;
// 定时_时开1
private int oneHourTimeOpenSetOne;
private String oneHourTimeOpenSetOneId;
// 定时_分开1
private int oneMinTimeOpenSetOne;
private String oneMinTimeOpenSetOneId;
// 定时_时关1
private int oneHourTimeCloseSetOne;
private String oneHourTimeCloseSetOneId;
// 定时_分关1
private int oneMinTimeCloseSetOne;
private String oneMinTimeCloseSetOneId;
// 开延时
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private int openDelayTime;
private String openDelayTimeId;
// 温差
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal tempDiff;
private String tempDiffId;
// 温差设置
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal tempDiffSet;
private String tempDiffSetId;
// 累计运行时间
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal runTime;
private String runTimeId;
// 运行状态
private int runState;
private String runStateId;
// 启停控制
private int startStopControl;
private String startStopControlId;
// 故障
private int fault;
private String faultId;
@Override
public String toString() {
return new StringJoiner(", ", HotWaterCircuitPumpControlVO.class.getSimpleName() + "[", "]")
.add("id='" + id + "'")
.add("name='" + name + "'")
.add("orderNum=" + orderNum)
.add("oneHourTimeOpenSetOne=" + oneHourTimeOpenSetOne)
.add("oneHourTimeOpenSetOneId='" + oneHourTimeOpenSetOneId + "'")
.add("oneMinTimeOpenSetOne=" + oneMinTimeOpenSetOne)
.add("oneMinTimeOpenSetOneId='" + oneMinTimeOpenSetOneId + "'")
.add("oneHourTimeCloseSetOne=" + oneHourTimeCloseSetOne)
.add("oneHourTimeCloseSetOneId='" + oneHourTimeCloseSetOneId + "'")
.add("oneMinTimeCloseSetOne=" + oneMinTimeCloseSetOne)
.add("oneMinTimeCloseSetOneId='" + oneMinTimeCloseSetOneId + "'")
.add("tempDiff=" + tempDiff)
.add("tempDiffId='" + tempDiffId + "'")
.add("tempDiffSet=" + tempDiffSet)
.add("tempDiffSetId='" + tempDiffSetId + "'")
.add("runTime=" + runTime)
.add("runTimeId='" + runTimeId + "'")
.add("runState=" + runState)
.add("runStateId='" + runStateId + "'")
.add("startStopControl=" + startStopControl)
.add("startStopControlId='" + startStopControlId + "'")
.add("fault=" + fault)
.add("faultId='" + faultId + "'")
.toString();
}
}

38
user-service/src/main/java/com/mh/user/dto/HotWaterControlDTO.java

@ -0,0 +1,38 @@
package com.mh.user.dto;
import lombok.Getter;
import lombok.Setter;
import org.apache.poi.ss.formula.functions.T;
import java.util.List;
import java.util.StringJoiner;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 生活热水监控dto
* @date 2025-03-14 09:13:19
*/
@Setter
@Getter
public class HotWaterControlDTO {
private String id;
private String name;
private int orderNum;
private List<?> children;
@Override
public String toString() {
return new StringJoiner(", ", HotWaterControlDTO.class.getSimpleName() + "[", "]")
.add("id='" + id + "'")
.add("name='" + name + "'")
.add("orderNum=" + orderNum)
.add("children=" + children)
.toString();
}
}

77
user-service/src/main/java/com/mh/user/dto/HotWaterControlListVO.java

@ -0,0 +1,77 @@
package com.mh.user.dto;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date;
import java.util.StringJoiner;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 生活热水监控需要的列表信息
* @date 2025-03-14 09:07:46
*/
@Setter
@Getter
public class HotWaterControlListVO {
private String cpmId;
private String buildingId;
private String buildingName;
private String deviceType;
private String deviceId;
private String deviceName;
private BigDecimal curValue;
private Date curTime;
private String paramTypeId;
private String otherName;
private int dtOrderNum;
private int dlOrderNum;
private int ctOrderNum;
public BigDecimal getCurValue() {
return curValue;
}
public void setCurValue(BigDecimal curValue) {
if (curValue!= null) {
// 保留两位小数
curValue = curValue.setScale(2, BigDecimal.ROUND_HALF_UP);
}
this.curValue = curValue;
}
@Override
public String toString() {
return new StringJoiner(", ", HotWaterControlListVO.class.getSimpleName() + "[", "]")
.add("cpmId='" + cpmId + "'")
.add("buildingId='" + buildingId + "'")
.add("buildingName='" + buildingName + "'")
.add("deviceType='" + deviceType + "'")
.add("deviceId='" + deviceId + "'")
.add("deviceName='" + deviceName + "'")
.add("curValue=" + curValue)
.add("curTime=" + curTime)
.add("paramTypeId='" + paramTypeId + "'")
.add("otherName='" + otherName + "'")
.add("dtOrderNum=" + dtOrderNum)
.add("dlOrderNum=" + dlOrderNum)
.add("ctOrderNum=" + ctOrderNum)
.toString();
}
}

186
user-service/src/main/java/com/mh/user/dto/HotWaterControlVO.java

@ -0,0 +1,186 @@
package com.mh.user.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date;
import java.util.StringJoiner;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 生活热水系统控制界面VO
* @date 2025-03-14 09:00:37
*/
@Setter
@Getter
public class HotWaterControlVO {
private String id;
private String name;
// 运行状态 1d
private int runningStatus;
private String runningStatusId;
// 启停控制 2
private int switchStatus;
private String switchStatusId;
// 频率设置 3
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal frequencySet;
private String frequencySetId;
// 频率 4
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal frequency;
private String frequencyId;
// 故障状态 5
private int alarmStatus;
private String alarmStatusId;
// 手动自动切换 6
private int handAutomaticSwitch;
private String handAutomaticSwitchId;
// 开控制 8
private int openSwitch;
private String openSwitchId;
// 关控制 9
private int closeSwitch;
private String closeSwitchId;
// 水位设置 10
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0.0")
private BigDecimal waterLevelSet;
private String waterLevelSetId;
// 水位 11
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0.0")
private BigDecimal waterLevel;
private String waterLevelId;
// 温度 12
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal temp;
private String tempId;
// 压力 13
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal pressure;
private String pressureId;
// 温度设置 14
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal tempSet;
private String tempSetId;
// 压力设置 15
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal pressureSet;
private String pressureSetId;
// 延时时间设置 34
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal delayTimeSet;
private String delayTimeSetId;
// 差值设置 35
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal diffValueSet;
private String diffValueSetId;
// 计数器设置 36
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal counterSet;
private String counterSetId;
// 切换时间设置 37
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal switchTimeSet;
private String switchTimeSetId;
// 故障复位状态 38
private int faultResetStatus;
private String faultResetStatusId;
// 急停状态 39
private int emergencyStopStatus;
private String emergencyStopStatusId;
// 最低设置值 44
private int minSet;
private String minSetId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date curTime;
private int orderNum;
public void setCounterSet(BigDecimal counterSet) {
if (counterSet != null) {
counterSet = counterSet.setScale(0, BigDecimal.ROUND_HALF_UP);
}
this.counterSet = counterSet;
}
@Override
public String toString() {
return new StringJoiner(", ", HotWaterControlVO.class.getSimpleName() + "[", "]")
.add("id='" + id + "'")
.add("name='" + name + "'")
.add("runningStatus=" + runningStatus)
.add("runningStatusId='" + runningStatusId + "'")
.add("switchStatus=" + switchStatus)
.add("switchStatusId='" + switchStatusId + "'")
.add("frequencySet=" + frequencySet)
.add("frequencySetId='" + frequencySetId + "'")
.add("frequency=" + frequency)
.add("frequencyId='" + frequencyId + "'")
.add("alarmStatus=" + alarmStatus)
.add("alarmStatusId='" + alarmStatusId + "'")
.add("handAutomaticSwitch=" + handAutomaticSwitch)
.add("handAutomaticSwitchId='" + handAutomaticSwitchId + "'")
.add("openSwitch=" + openSwitch)
.add("openSwitchId='" + openSwitchId + "'")
.add("closeSwitch=" + closeSwitch)
.add("closeSwitchId='" + closeSwitchId + "'")
.add("waterLevelSet=" + waterLevelSet)
.add("waterLevelSetId='" + waterLevelSetId + "'")
.add("waterLevel=" + waterLevel)
.add("waterLevelId='" + waterLevelId + "'")
.add("temp=" + temp)
.add("tempId='" + tempId + "'")
.add("pressure=" + pressure)
.add("pressureId='" + pressureId + "'")
.add("tempSet=" + tempSet)
.add("tempSetId='" + tempSetId + "'")
.add("pressureSet=" + pressureSet)
.add("pressureSetId='" + pressureSetId + "'")
.add("delayTimeSet=" + delayTimeSet)
.add("delayTimeSetId='" + delayTimeSetId + "'")
.add("diffValueSet=" + diffValueSet)
.add("diffValueSetId='" + diffValueSetId + "'")
.add("counterSet=" + counterSet)
.add("counterSetId='" + counterSetId + "'")
.add("switchTimeSet=" + switchTimeSet)
.add("switchTimeSetId='" + switchTimeSetId + "'")
.add("faultResetStatus=" + faultResetStatus)
.add("faultResetStatusId='" + faultResetStatusId + "'")
.add("emergencyStopStatus=" + emergencyStopStatus)
.add("emergencyStopStatusId='" + emergencyStopStatusId + "'")
.add("minSet=" + minSet)
.add("minSetId='" + minSetId + "'")
.add("curTime=" + curTime)
.add("orderNum=" + orderNum)
.toString();
}
}

71
user-service/src/main/java/com/mh/user/dto/HotWaterDeviceCalibrationControlVO.java

@ -0,0 +1,71 @@
package com.mh.user.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date;
import java.util.StringJoiner;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 设备校准控制界面VO
* @date 2025-03-14 09:00:37
*/
@Setter
@Getter
public class HotWaterDeviceCalibrationControlVO {
private String id;
private String name;
private int orderNum;
// 校准值
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal calibrationValue;
private String calibrationValueId;
// 工程量最低值
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal engineeringMinValue;
private String engineeringMinValueId;
// 工程量最高值
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal engineeringMaxValue;
private String engineeringMaxValueId;
// 数字量最低值
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal digitalMinValue;
private String digitalMinValueId;
// 数字量最高值
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal digitalMaxValue;
private String digitalMaxValueId;
@Override
public String toString() {
return new StringJoiner(", ", HotWaterDeviceCalibrationControlVO.class.getSimpleName() + "[", "]")
.add("id='" + id + "'")
.add("name='" + name + "'")
.add("orderNum=" + orderNum)
.add("calibrationValue=" + calibrationValue)
.add("calibrationValueId='" + calibrationValueId + "'")
.add("engineeringMinValue=" + engineeringMinValue)
.add("engineeringMinValueId='" + engineeringMinValueId + "'")
.add("engineeringMaxValue=" + engineeringMaxValue)
.add("engineeringMaxValueId='" + engineeringMaxValueId + "'")
.add("digitalMinValue=" + digitalMinValue)
.add("digitalMinValueId='" + digitalMinValueId + "'")
.add("digitalMaxValue=" + digitalMaxValue)
.add("digitalMaxValueId='" + digitalMaxValueId + "'")
.toString();
}
}

43
user-service/src/main/java/com/mh/user/dto/HotWaterDeviceControlVO.java

@ -0,0 +1,43 @@
package com.mh.user.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date;
import java.util.StringJoiner;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 生活热水系统控制界面VO
* @date 2025-03-14 09:00:37
*/
@Setter
@Getter
public class HotWaterDeviceControlVO {
private String id;
private String name;
private int orderNum;
// 累计读数
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal totalReading;
private String totalReadingId;
@Override
public String toString() {
return new StringJoiner(", ", HotWaterDeviceControlVO.class.getSimpleName() + "[", "]")
.add("id='" + id + "'")
.add("name='" + name + "'")
.add("orderNum=" + orderNum)
.add("totalReading=" + totalReading)
.add("totalReadingId='" + totalReadingId + "'")
.toString();
}
}

241
user-service/src/main/java/com/mh/user/dto/HotWaterHotPumpControlVO.java

@ -0,0 +1,241 @@
package com.mh.user.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.StringJoiner;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 热泵控制界面VO
* @date 2025-03-14 09:00:37
*/
@Setter
@Getter
public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private String id;
private String name;
private int orderNum;
// 热泵12定时_时开1
private int oneHourTimeOpenSetOne;
private String oneHourTimeOpenSetOneId;
// 热泵12定时_分开1 (新增分钟设置)
private int oneMinTimeOpenSetOne;
private String oneMinTimeOpenSetOneId;
// 热泵12定时_时关1
private int oneHourTimeCloseSetOne;
private String oneHourTimeCloseSetOneId;
// 热泵12定时_分关1 (新增分钟设置)
private int oneMinTimeCloseSetOne;
private String oneMinTimeCloseSetOneId;
// 热泵12定时_时开2
private int oneHourTimeOpenSetTwo;
private String oneHourTimeOpenSetTwoId;
// 热泵12定时_分开2 (新增分钟设置)
private int oneMinTimeOpenSetTwo;
private String oneMinTimeOpenSetTwoId;
// 热泵12定时_时关2
private int oneHourTimeCloseSetTwo;
private String oneHourTimeCloseSetTwoId;
// 热泵12定时_分关2 (新增分钟设置)
private int oneMinTimeCloseSetTwo;
private String oneMinTimeCloseSetTwoId;
// 热泵12定时_时开3
private int oneHourTimeOpenSetThree;
private String oneHourTimeOpenSetThreeId;
// 热泵12定时_分开3 (新增分钟设置)
private int oneMinTimeOpenSetThree;
private String oneMinTimeOpenSetThreeId;
// 热泵12定时_时关3
private int oneHourTimeCloseSetThree;
private String oneHourTimeCloseSetThreeId;
// 热泵12定时_分关3 (新增分钟设置)
private int oneMinTimeCloseSetThree;
private String oneMinTimeCloseSetThreeId;
// 热泵12定时_时开1
private int twoHourTimeOpenSetOne;
private String twoHourTimeOpenSetOneId;
// 热泵34定时_分开1 (新增分钟设置)
private int twoMinTimeOpenSetOne;
private String twoMinTimeOpenSetOneId;
// 热泵34定时_时关1
private int twoHourTimeCloseSetOne;
private String twoHourTimeCloseSetOneId;
// 热泵34定时_分关1 (新增分钟设置)
private int twoMinTimeCloseSetOne;
private String twoMinTimeCloseSetOneId;
// 热泵34定时_时开2
private int twoHourTimeOpenSetTwo;
private String twoHourTimeOpenSetTwoId;
// 热泵34定时_分开2 (新增分钟设置)
private int twoMinTimeOpenSetTwo;
private String twoMinTimeOpenSetTwoId;
// 热泵34定时_时关2
private int twoHourTimeCloseSetTwo;
private String twoHourTimeCloseSetTwoId;
// 热泵34定时_分关2 (新增分钟设置)
private int twoMinTimeCloseSetTwo;
private String twoMinTimeCloseSetTwoId;
// 热泵34定时_时开3
private int twoHourTimeOpenSetThree;
private String twoHourTimeOpenSetThreeId;
// 热泵34定时_分开3 (新增分钟设置)
private int twoMinTimeOpenSetThree;
private String twoMinTimeOpenSetThreeId;
// 热泵34定时_时关3
private int twoHourTimeCloseSetThree;
private String twoHourTimeCloseSetThreeId;
// 热泵34定时_分关3 (新增分钟设置)
private int twoMinTimeCloseSetThree;
private String twoMinTimeCloseSetThreeId;
// 热泵_开机 -> 去掉pump前缀
private String start;
private String startId;
// 热泵_关机 -> 去掉pump前缀
private String stop;
private String stopId;
// 热泵_运行状态 -> 去掉pump前缀
private int runState;
private String runStateId;
// 热泵_启停控制 -> 去掉pump前缀
private int startStopControl;
private String startStopControlId;
// 热泵_设定温度 -> 去掉pump前缀
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal setTemp;
private String setTempId;
// 热泵_水箱温度 -> 去掉pump前缀
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal tankTemp;
private String tankTempId;
// 热泵累计运行时间 -> 去掉pump前缀
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal runTime;
private String runTimeId;
// 热泵_出水温度 -> 去掉pump前缀
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal outWaterTemp;
private String outWaterTempId;
// 热泵_进水温度 -> 去掉pump前缀
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal inWaterTemp;
private String inWaterTempId;
// 热泵_故障 -> 去掉pump前缀
private int fault;
@Override
public String toString() {
return new StringJoiner(", ", HotWaterHotPumpControlVO.class.getSimpleName() + "[", "]") // 更新类名引用
.add("id='" + id + "'")
.add("name='" + name + "'")
.add("oneHourTimeOpenSetOne=" + oneHourTimeOpenSetOne)
.add("oneHourTimeOpenSetOneId='" + oneHourTimeOpenSetOneId + "'")
.add("oneMinTimeOpenSetOne=" + oneMinTimeOpenSetOne) // 新增分钟字段
.add("oneMinTimeOpenSetOneId='" + oneMinTimeOpenSetOneId + "'") // 新增分钟字段
.add("oneHourTimeCloseSetOne=" + oneHourTimeCloseSetOne)
.add("oneHourTimeCloseSetOneId='" + oneHourTimeCloseSetOneId + "'")
.add("oneMinTimeCloseSetOne=" + oneMinTimeCloseSetOne) // 新增分钟字段
.add("oneMinTimeCloseSetOneId='" + oneMinTimeCloseSetOneId + "'") // 新增分钟字段
.add("oneHourTimeOpenSetTwo=" + oneHourTimeOpenSetTwo)
.add("oneHourTimeOpenSetTwoId='" + oneHourTimeOpenSetTwoId + "'")
.add("oneMinTimeOpenSetTwo=" + oneMinTimeOpenSetTwo) // 新增分钟字段
.add("oneMinTimeOpenSetTwoId='" + oneMinTimeOpenSetTwoId + "'") // 新增分钟字段
.add("oneHourTimeCloseSetTwo=" + oneHourTimeCloseSetTwo)
.add("oneHourTimeCloseSetTwoId='" + oneHourTimeCloseSetTwoId + "'")
.add("oneMinTimeCloseSetTwo=" + oneMinTimeCloseSetTwo) // 新增分钟字段
.add("oneMinTimeCloseSetTwoId='" + oneMinTimeCloseSetTwoId + "'") // 新增分钟字段
.add("oneHourTimeOpenSetThree=" + oneHourTimeOpenSetThree)
.add("oneHourTimeOpenSetThreeId='" + oneHourTimeOpenSetThreeId + "'")
.add("oneMinTimeOpenSetThree=" + oneMinTimeOpenSetThree) // 新增分钟字段
.add("oneMinTimeOpenSetThreeId='" + oneMinTimeOpenSetThreeId + "'") // 新增分钟字段
.add("oneHourTimeCloseSetThree=" + oneHourTimeCloseSetThree)
.add("oneHourTimeCloseSetThreeId='" + oneHourTimeCloseSetThreeId + "'")
.add("oneMinTimeCloseSetThree=" + oneMinTimeCloseSetThree) // 新增分钟字段
.add("oneMinTimeCloseSetThreeId='" + oneMinTimeCloseSetThreeId + "'") // 新增分钟字段
.add("twoHourTimeOpenSetOne=" + twoHourTimeOpenSetOne)
.add("twoHourTimeOpenSetOneId='" + twoHourTimeOpenSetOneId + "'")
.add("twoMinTimeOpenSetOne=" + twoMinTimeOpenSetOne) // 新增分钟字段
.add("twoMinTimeOpenSetOneId='" + twoMinTimeOpenSetOneId + "'") // 新增分钟字段
.add("twoHourTimeCloseSetOne=" + twoHourTimeCloseSetOne)
.add("twoHourTimeCloseSetOneId='" + twoHourTimeCloseSetOneId + "'")
.add("twoMinTimeCloseSetOne=" + twoMinTimeCloseSetOne) // 新增分钟字段
.add("twoMinTimeCloseSetOneId='" + twoMinTimeCloseSetOneId + "'") // 新增分钟字段
.add("twoHourTimeOpenSetTwo=" + twoHourTimeOpenSetTwo)
.add("twoHourTimeOpenSetTwoId='" + twoHourTimeOpenSetTwoId + "'")
.add("twoMinTimeOpenSetTwo=" + twoMinTimeOpenSetTwo) // 新增分钟字段
.add("twoMinTimeOpenSetTwoId='" + twoMinTimeOpenSetTwoId + "'") // 新增分钟字段
.add("twoHourTimeCloseSetTwo=" + twoHourTimeCloseSetTwo)
.add("twoHourTimeCloseSetTwoId='" + twoHourTimeCloseSetTwoId + "'")
.add("twoMinTimeCloseSetTwo=" + twoMinTimeCloseSetTwo) // 新增分钟字段
.add("twoMinTimeCloseSetTwoId='" + twoMinTimeCloseSetTwoId + "'") // 新增分钟字段
.add("twoHourTimeOpenSetThree=" + twoHourTimeOpenSetThree)
.add("twoHourTimeOpenSetThreeId='" + twoHourTimeOpenSetThreeId + "'")
.add("twoMinTimeOpenSetThree=" + twoMinTimeOpenSetThree) // 新增分钟字段
.add("twoMinTimeOpenSetThreeId='" + twoMinTimeOpenSetThreeId + "'") // 新增分钟字段
.add("twoHourTimeCloseSetThree=" + twoHourTimeCloseSetThree)
.add("twoHourTimeCloseSetThreeId='" + twoHourTimeCloseSetThreeId + "'")
.add("twoMinTimeCloseSetThree=" + twoMinTimeCloseSetThree) // 新增分钟字段
.add("twoMinTimeCloseSetThreeId='" + twoMinTimeCloseSetThreeId + "'") // 新增分钟字段
.add("start='" + start + "'")
.add("startId='" + startId + "'")
.add("stop='" + stop + "'")
.add("stopId='" + stopId + "'")
.add("runState='" + runState + "'")
.add("runStateId='" + runStateId + "'")
.add("startStopControl='" + startStopControl + "'")
.add("startStopControlId='" + startStopControlId + "'")
.add("setTemp=" + setTemp)
.add("setTempId='" + setTempId + "'")
.add("tankTemp=" + tankTemp)
.add("tankTempId='" + tankTempId + "'")
.add("runTime=" + runTime)
.add("runTimeId='" + runTimeId + "'")
.add("outWaterTemp=" + outWaterTemp)
.add("outWaterTempId='" + outWaterTempId + "'")
.add("inWaterTemp=" + inWaterTemp)
.add("inWaterTempId='" + inWaterTempId + "'")
.add("fault=" + fault)
.toString();
}
}

55
user-service/src/main/java/com/mh/user/dto/HotWaterNowDataDTO.java

@ -0,0 +1,55 @@
package com.mh.user.dto;
import lombok.Data;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 热水实时监控列表数据
* @date 2025-03-10 15:43:36
*/
@Data
public class HotWaterNowDataDTO {
private String id;
private String curDate; //日期
private String buildingId; //楼栋编号
private String buildingName; //楼栋名称
private String pumpId; //热泵编号
private String pumpName; //热泵名称
private String tempSet; //水温设定
private String waterTemp; //水箱水温
private String runState; //运行状态
private String isFault; //是否故障
private String levelSet1; //水位设置
private String levelSet2; //水位设置
private String waterLevel1; //实际水位
private String waterLevel2; //实际水位
private String tankId; //水箱编号
private String tankName; //水箱名称
private String envTemp; //环境温度
private String upWaterState1; // 供水1泵状态
private String freq1; // 供水频率1
private String upWaterState2; // 供水2泵状态
private String freq2; // 供水频率2
private String upWaterState3; // 供水3泵状态
private String freq3; // 供水频率3
private String upWaterState4; // 供水4泵状态
private String freq4; // 供水频率4
private String useWaterState; // 补水状态
private String backWaterState; // 回水状态
private int orderNum;
}

145
user-service/src/main/java/com/mh/user/dto/HotWaterSystemControlVO.java

@ -0,0 +1,145 @@
package com.mh.user.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date;
import java.util.StringJoiner;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 生活热水系统控制界面VO
* @date 2025-03-14 09:00:37
*/
@Setter
@Getter
public class HotWaterSystemControlVO {
private String id;
private String name;
// 启用时间写入 1
private int timeSet;
private String timeSetId;
// 水箱温度 2
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal tankTemp;
private String tankTempId;
// 太阳能温度 3
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal solarTemp;
private String solarTempId;
// 回水温度 4
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal inTemp;
private String inTempId;
// 压力 4
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal pressure;
private String pressureId;
// PLC 时间
private String plcTime;
// 秒_读 6
private int sTimeRead;
private String sTimeReadId;
// 分_读 8
private int minTimeRead;
private String minTimeReadId;
// 时_读 9
private int hourTimeRead;
private String hourTimeReadId;
// 日_读 9
private int dayTimeRead;
private String dayTimeReadId;
// 月_读 10
private int monthTimeRead;
private String monthTimeReadId;
// 年_读 11
private int yearTimeRead;
private String yearTimeReadId;
// 秒_写 6
private int sTimeSet;
private String sTimeSetId;
// 分_写 8
private int minTimeSet;
private String minTimeSetId;
// 时_写 9
private int hourTimeSet;
private String hourTimeSetId;
// 日_写 9
private int dayTimeSet;
private String dayTimeSetId;
// 月_写 10
private int monthTimeSet;
private String monthTimeSetId;
// 年_写 11
private int yearTimeSet;
private String yearTimeSetId;
private int orderNum;
@Override
public String toString() {
return new StringJoiner(", ", HotWaterSystemControlVO.class.getSimpleName() + "[", "]")
.add("id='" + id + "'")
.add("name='" + name + "'")
.add("timeSet=" + timeSet)
.add("timeSetId='" + timeSetId + "'")
.add("tankTemp=" + tankTemp)
.add("tankTempId='" + tankTempId + "'")
.add("solarTemp=" + solarTemp)
.add("solarTempId='" + solarTempId + "'")
.add("inTemp=" + inTemp)
.add("inTempId='" + inTempId + "'")
.add("pressure=" + pressure)
.add("pressureId='" + pressureId + "'")
.add("plcTime='" + plcTime + "'")
.add("sTimeRead=" + sTimeRead)
.add("sTimeReadId='" + sTimeReadId + "'")
.add("minTimeRead=" + minTimeRead)
.add("minTimeReadId='" + minTimeReadId + "'")
.add("hourTimeRead=" + hourTimeRead)
.add("hourTimeReadId='" + hourTimeReadId + "'")
.add("dayTimeRead=" + dayTimeRead)
.add("dayTimeReadId='" + dayTimeReadId + "'")
.add("monthTimeRead=" + monthTimeRead)
.add("monthTimeReadId='" + monthTimeReadId + "'")
.add("yearTimeRead=" + yearTimeRead)
.add("yearTimeReadId='" + yearTimeReadId + "'")
.add("sTimeSet=" + sTimeSet)
.add("sTimeSetId='" + sTimeSetId + "'")
.add("minTimeSet=" + minTimeSet)
.add("minTimeSetId='" + minTimeSetId + "'")
.add("hourTimeSet=" + hourTimeSet)
.add("hourTimeSetId='" + hourTimeSetId + "'")
.add("dayTimeSet=" + dayTimeSet)
.add("dayTimeSetId='" + dayTimeSetId + "'")
.add("monthTimeSet=" + monthTimeSet)
.add("monthTimeSetId='" + monthTimeSetId + "'")
.add("yearTimeSet=" + yearTimeSet)
.add("yearTimeSetId='" + yearTimeSetId + "'")
.add("orderNum=" + orderNum)
.toString();
}
}

2
user-service/src/main/java/com/mh/user/job/CollectionLoopRunner.java

@ -67,7 +67,7 @@ public class CollectionLoopRunner implements ApplicationRunner {
// NettyEchoServer nettyEchoServer = new NettyEchoServer();
// nettyEchoServer.bind(8098);
// 初始化mqtt订阅记录
// initializeMqttSubscription();
initializeMqttSubscription();
}
/**

2
user-service/src/main/java/com/mh/user/job/DealDataJob.java

@ -73,7 +73,7 @@ public class DealDataJob {
/**
* 采集
*/
@Scheduled(cron = "35 0/2 * * * ?")
// @Scheduled(cron = "35 0/2 * * * ?")
// @Scheduled(cron = "0 0/1 * * * ?")
// @Scheduled(cron = "0 0/5 * * * ?") //5分钟
public void collect() {

69
user-service/src/main/java/com/mh/user/mapper/CollectionParamsManageMapper.java

@ -1,10 +1,12 @@
package com.mh.user.mapper;
import com.mh.user.dto.HotWaterControlListVO;
import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceInstallEntity;
import org.apache.ibatis.annotations.*;
import tk.mybatis.mapper.common.BaseMapper;
import java.math.BigDecimal;
import java.util.List;
/**
@ -77,10 +79,35 @@ public interface CollectionParamsManageMapper extends BaseMapper<CollectionParam
@Select("select count(1) from collection_params_manage where other_name = #{otherName} ")
int selectCountByOtherName(String otherName);
@Update("update collection_params_manage set cur_value = #{value}, cur_time = #{time} where other_name = #{name}")
void updateCPMByOtherName(String name, float value, String time);
@Update("update collection_params_manage set cur_value = #{value}, cur_time = #{time}, quality = #{quality} where other_name = #{name}")
void updateCPMByOtherName(String name, BigDecimal value, String time, String quality);
@Select("select top 1 * from collection_params_manage where other_name = #{name}")
@Results({
@Result(column = "id", property = "id"),
@Result(column = "create_time", property = "createTime"),
@Result(column = "update_time", property = "updateTime"),
@Result(column = "device_install_id", property = "deviceInstallId"),
@Result(column = "register_addr", property = "registerAddr"),
@Result(column = "func_code", property = "funcCode"),
@Result(column = "mt_ratio", property = "mtRatio"),
@Result(column = "mt_init_value", property = "mtInitValue"),
@Result(column = "digits", property = "digits"),
@Result(column = "data_type", property = "dataType"),
@Result(column = "cur_value", property = "curValue"),
@Result(column = "cur_time", property = "curTime"),
@Result(column = "mt_is_sum", property = "mtIsSum"),
@Result(column = "unit", property = "unit"),
@Result(column = "order_num", property = "orderNum"),
@Result(column = "remark", property = "remark"),
@Result(column = "register_size", property = "registerSize"),
@Result(column = "is_use", property = "isUse"),
@Result(column = "other_name", property = "otherName"),
@Result(column = "grade", property = "grade"),
@Result(column = "param_type_id", property = "paramTypeId"),
@Result(column = "collection_type", property = "collectionType"),
@Result(column = "quality", property = "quality")
})
CollectionParamsManageEntity selectDeviceInstallByOtherName(String name);
@Insert("insert into collection_params_manage(" +
@ -125,4 +152,42 @@ public interface CollectionParamsManageMapper extends BaseMapper<CollectionParam
@Delete("delete from collection_params_manage where id = #{msId}")
void deleteById(String msId);
@Select("SELECT " +
" cpm.id as cpm_id, " +
" di.building_id, " +
" di.building_name, " +
" di.device_type, " +
" di.id as device_id, " +
" di.device_name, " +
" cpm.other_name, " +
" cpm.cur_value, " +
" cpm.cur_time, " +
" cpm.param_type_id, " +
" ct.order_num AS ct_order_num, " +
" di.order_num AS dl_order_num " +
"FROM " +
" device_install di " +
" JOIN collection_params_manage cpm ON di.id = cpm.device_install_id " +
" JOIN code_table ct ON ct.des = di.device_type " +
" AND di.building_id = #{buildingId} " +
" AND ct.name = 'deviceType' " +
"ORDER BY " +
" ct.order_num, " +
" di.order_num ")
@Results({
@Result(column = "cpm_id", property = "cpmId"),
@Result(column = "building_id", property = "buildingId"),
@Result(column = "building_name", property = "buildingName"),
@Result(column = "device_type", property = "deviceType"),
@Result(column = "device_id", property = "deviceId"),
@Result(column = "device_name", property = "deviceName"),
@Result(column = "other_name", property = "otherName"),
@Result(column = "cur_value", property = "curValue"),
@Result(column = "cur_time", property = "curTime"),
@Result(column = "param_type_id", property = "paramTypeId"),
@Result(column = "ct_order_num", property = "ctOrderNum"),
@Result(column = "dl_order_num", property = "dlOrderNum")
})
List<HotWaterControlListVO> selectHotWaterByBuildingId(String buildingId);
}

10
user-service/src/main/java/com/mh/user/model/SanShiFengReceiver.java

@ -3,6 +3,7 @@ package com.mh.user.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.util.Collections;
import java.util.List;
/**
@ -32,4 +33,13 @@ public class SanShiFengReceiver<T> {
private String time;
// 确保在 getDatas() 方法中正确处理泛型类型
public List<SanShiFengDatas> getDatas() {
// 如果是从 JSON 反序列化,使用 TypeReference
if (this.datas != null) {
return (List<SanShiFengDatas>) this.datas;
}
return Collections.emptyList();
}
}

9
user-service/src/main/java/com/mh/user/service/CollectionParamsManageService.java

@ -1,8 +1,11 @@
package com.mh.user.service;
import com.mh.user.dto.HotWaterControlDTO;
import com.mh.user.dto.HotWaterNowDataDTO;
import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceInstallEntity;
import java.math.BigDecimal;
import java.util.List;
/**
@ -26,7 +29,11 @@ public interface CollectionParamsManageService {
int deleteByIds(String[] msIds);
void updateCPMByOtherName(String name, float value, String time);
void updateCPMByOtherName(String name, BigDecimal value, String time);
CollectionParamsManageEntity selectDeviceInstallByOtherName(String name);
List<HotWaterNowDataDTO> monitorList(String buildingId);
List<HotWaterControlDTO> operateList(String floorId);
}

496
user-service/src/main/java/com/mh/user/service/impl/CollectionParamsManageServiceImpl.java

@ -1,14 +1,20 @@
package com.mh.user.service.impl;
import com.mh.common.utils.StringUtils;
import com.mh.user.constants.Constant;
import com.mh.user.dto.*;
import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.mapper.CollectionParamsManageMapper;
import com.mh.user.service.CollectionParamsManageService;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author LJF
@ -26,14 +32,497 @@ public class CollectionParamsManageServiceImpl implements CollectionParamsManage
this.collectionParamsManageMapper = collectionParamsManageMapper;
}
@Override
public List<HotWaterNowDataDTO> monitorList(String buildingId) {
return Collections.emptyList();
}
@Override
public List<HotWaterControlDTO> operateList(String floorId) {
List<HotWaterControlListVO> hotWaterControlListVOS = collectionParamsManageMapper.selectHotWaterByBuildingId(floorId);
if (hotWaterControlListVOS.isEmpty()) {
return Collections.emptyList();
}
return hotWaterControlListVOS.stream()
// .peek(vo -> System.out.println(vo.getHiOrderNum()))
.collect(Collectors.groupingBy(HotWaterControlListVO::getDeviceType))
.entrySet().stream()
.map(houseEntry -> {
HotWaterControlDTO dto = new HotWaterControlDTO();
dto.setId(houseEntry.getKey());
dto.setName(houseEntry.getValue().get(0).getDeviceType());
dto.setOrderNum(houseEntry.getValue().get(0).getCtOrderNum());
List<?> children = houseEntry.getValue().stream()
.collect(Collectors.groupingBy(HotWaterControlListVO::getDeviceId))
.entrySet().stream()
.map(dlEntry -> {
List<HotWaterControlListVO> dlItems = dlEntry.getValue();
switch (dto.getName()) {
case "系统":
HotWaterSystemControlVO vo = new HotWaterSystemControlVO();
vo.setId(dlEntry.getKey());
if (StringUtils.isBlank(dlItems.get(0).getDeviceName())) {
// 如果设备名称为空,则使用房间号
vo.setName(dto.getName());
} else {
vo.setName(dlItems.get(0).getDeviceName());
}
vo.setOrderNum(dlItems.get(0).getDlOrderNum());
// 单独对系统参数
dlItems.forEach(item -> {
switch (item.getParamTypeId()) {
case "1":
// 启用写入时间
vo.setTimeSet(item.getCurValue().intValue());
vo.setTimeSetId(item.getCpmId());
break;
case "5":
// 压力
vo.setPressure(item.getCurValue());
vo.setPressureId(item.getCpmId());
break;
case "6":
// 回水温度
vo.setInTemp(item.getCurValue());
vo.setInTempId(item.getCpmId());
break;
case "10":
// 水箱温度
vo.setTankTemp(item.getCurValue());
vo.setTankTempId(item.getCpmId());
break;
case "19":
// 太阳能温度
vo.setSolarTemp(item.getCurValue());
vo.setSolarTempId(item.getCpmId());
break;
case "15":
// 时间
if ("年_读".equals(item.getOtherName())) {
vo.setYearTimeRead(item.getCurValue().intValue());
vo.setYearTimeReadId(item.getCpmId());
} else if ("月_读".equals(item.getOtherName())) {
vo.setMonthTimeRead(item.getCurValue().intValue());
vo.setMonthTimeReadId(item.getCpmId());
} else if ("日_读".equals(item.getOtherName())) {
vo.setDayTimeRead(item.getCurValue().intValue());
vo.setDayTimeReadId(item.getCpmId());
} else if ("时_读".equals(item.getOtherName())) {
vo.setHourTimeRead(item.getCurValue().intValue());
vo.setHourTimeReadId(item.getCpmId());
} else if ("分_读".equals(item.getOtherName())) {
vo.setMinTimeRead(item.getCurValue().intValue());
vo.setMinTimeReadId(item.getCpmId());
} else if ("秒_读".equals(item.getOtherName())) {
vo.setSTimeSet(item.getCurValue().intValue());
vo.setSTimeSetId(item.getCpmId());
} else if ("年_写".equals(item.getOtherName())) {
vo.setYearTimeSet(item.getCurValue().intValue());
vo.setYearTimeSetId(item.getCpmId());
} else if ("月_写".equals(item.getOtherName())) {
vo.setMonthTimeSet(item.getCurValue().intValue());
vo.setMonthTimeSetId(item.getCpmId());
} else if ("日_写".equals(item.getOtherName())) {
vo.setDayTimeSet(item.getCurValue().intValue());
vo.setDayTimeSetId(item.getCpmId());
} else if ("时_写".equals(item.getOtherName())) {
vo.setHourTimeSet(item.getCurValue().intValue());
vo.setHourTimeSetId(item.getCpmId());
} else if ("分_写".equals(item.getOtherName())) {
vo.setMinTimeSet(item.getCurValue().intValue());
vo.setMinTimeSetId(item.getCpmId());
} else if ("秒_写".equals(item.getOtherName())) {
vo.setSTimeSet(item.getCurValue().intValue());
vo.setSTimeSetId(item.getCpmId());
}
break;
default:
break;
}
});
return vo;
case "热泵":
HotWaterHotPumpControlVO hotPumpVo = new HotWaterHotPumpControlVO(); // 修改类名
hotPumpVo.setId(dlEntry.getKey());
if (StringUtils.isBlank(dlItems.get(0).getDeviceName())) {
// 如果设备名称为空,则使用房间号
hotPumpVo.setName(dto.getName());
} else {
hotPumpVo.setName(dlItems.get(0).getDeviceName());
}
hotPumpVo.setOrderNum(dlItems.get(0).getDlOrderNum());
// 判断只有存在一个故障点,那么当前设备就是故障
if (dlItems.stream().anyMatch(item -> ("3".equals(item.getParamTypeId()) && "1".equals(item.getCurValue().toString())))) {
hotPumpVo.setFault(1); // 去除pump前缀
}
// 单独对系统参数
dlItems.forEach(item -> {
switch (item.getParamTypeId()) {
case "4":
// 定时开关
if (item.getOtherName().contains("12定时_时开1")) {
hotPumpVo.setOneHourTimeOpenSetOne(item.getCurValue().intValue());
hotPumpVo.setOneHourTimeOpenSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("12定时_时关1")) {
hotPumpVo.setOneHourTimeCloseSetOne(item.getCurValue().intValue());
hotPumpVo.setOneHourTimeCloseSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("12定时_时开2")) {
hotPumpVo.setOneHourTimeOpenSetTwo(item.getCurValue().intValue());
hotPumpVo.setOneHourTimeOpenSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("12定时_时关2")) {
hotPumpVo.setOneHourTimeCloseSetTwo(item.getCurValue().intValue());
hotPumpVo.setOneHourTimeCloseSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("12定时_时开3")) {
hotPumpVo.setOneHourTimeOpenSetThree(item.getCurValue().intValue());
hotPumpVo.setOneHourTimeOpenSetThreeId(item.getCpmId());
} else if (item.getOtherName().contains("12定时_时关3")) {
hotPumpVo.setOneHourTimeCloseSetThree(item.getCurValue().intValue());
hotPumpVo.setOneHourTimeCloseSetThreeId(item.getCpmId());
} else if (item.getOtherName().contains("12定时_分开1")) { // 新增分钟设置
hotPumpVo.setOneMinTimeOpenSetOne(item.getCurValue().intValue());
hotPumpVo.setOneMinTimeOpenSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("12定时_分关1")) { // 新增分钟设置
hotPumpVo.setOneMinTimeCloseSetOne(item.getCurValue().intValue());
hotPumpVo.setOneMinTimeCloseSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("12定时_分开2")) { // 新增分钟设置
hotPumpVo.setOneMinTimeOpenSetTwo(item.getCurValue().intValue());
hotPumpVo.setOneMinTimeOpenSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("12定时_分关2")) { // 新增分钟设置
hotPumpVo.setOneMinTimeCloseSetTwo(item.getCurValue().intValue());
hotPumpVo.setOneMinTimeCloseSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("12定时_分开3")) { // 新增分钟设置
hotPumpVo.setOneMinTimeOpenSetThree(item.getCurValue().intValue());
hotPumpVo.setOneMinTimeOpenSetThreeId(item.getCpmId());
} else if (item.getOtherName().contains("12定时_分关3")) { // 新增分钟设置
hotPumpVo.setOneMinTimeCloseSetThree(item.getCurValue().intValue());
hotPumpVo.setOneMinTimeCloseSetThreeId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_时开1")) {
hotPumpVo.setTwoHourTimeOpenSetOne(item.getCurValue().intValue());
hotPumpVo.setTwoHourTimeOpenSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_时关1")) {
hotPumpVo.setTwoHourTimeCloseSetOne(item.getCurValue().intValue());
hotPumpVo.setTwoHourTimeCloseSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_时开2")) {
hotPumpVo.setTwoHourTimeOpenSetTwo(item.getCurValue().intValue());
hotPumpVo.setTwoHourTimeOpenSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_时关2")) {
hotPumpVo.setTwoHourTimeCloseSetTwo(item.getCurValue().intValue());
hotPumpVo.setTwoHourTimeCloseSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_时开3")) {
hotPumpVo.setTwoHourTimeOpenSetThree(item.getCurValue().intValue());
hotPumpVo.setTwoHourTimeOpenSetThreeId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_时关3")) {
hotPumpVo.setTwoHourTimeCloseSetThree(item.getCurValue().intValue());
hotPumpVo.setTwoHourTimeCloseSetThreeId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_分开1")) { // 新增分钟设置
hotPumpVo.setTwoMinTimeOpenSetOne(item.getCurValue().intValue());
hotPumpVo.setTwoMinTimeOpenSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_分关1")) { // 新增分钟设置
hotPumpVo.setTwoMinTimeCloseSetOne(item.getCurValue().intValue());
hotPumpVo.setTwoMinTimeCloseSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_分开2")) { // 新增分钟设置
hotPumpVo.setTwoMinTimeOpenSetTwo(item.getCurValue().intValue());
hotPumpVo.setTwoMinTimeOpenSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_分关2")) { // 新增分钟设置
hotPumpVo.setTwoMinTimeCloseSetTwo(item.getCurValue().intValue());
hotPumpVo.setTwoMinTimeCloseSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_分开3")) { // 新增分钟设置
hotPumpVo.setTwoMinTimeOpenSetThree(item.getCurValue().intValue());
hotPumpVo.setTwoMinTimeOpenSetThreeId(item.getCpmId());
} else if (item.getOtherName().contains("34定时_分关3")) { // 新增分钟设置
hotPumpVo.setTwoMinTimeCloseSetThree(item.getCurValue().intValue());
hotPumpVo.setTwoMinTimeCloseSetThreeId(item.getCpmId());
}
break;
case "1":
// 启停控制
hotPumpVo.setStartStopControl(item.getCurValue().intValue()); // 去除pump前缀
hotPumpVo.setStartStopControlId(item.getCpmId()); // 去除pump前缀
break;
case "2":
// 运行状态
hotPumpVo.setRunState(item.getCurValue().intValue()); // 去除pump前缀
hotPumpVo.setRunStateId(item.getCpmId()); // 去除pump前缀
break;
case "10":
// 水箱温度
hotPumpVo.setTankTemp(item.getCurValue()); // 去除pump前缀
hotPumpVo.setTankTempId(item.getCpmId()); // 去除pump前缀
break;
case "11":
// 出水温度
hotPumpVo.setOutWaterTemp(item.getCurValue()); // 去除pump前缀
hotPumpVo.setOutWaterTempId(item.getCpmId()); // 去除pump前缀
break;
case "12":
// 回水温度
hotPumpVo.setInWaterTemp(item.getCurValue()); // 去除pump前缀
hotPumpVo.setInWaterTempId(item.getCpmId()); // 去除pump前缀
break;
case "16":
// 累计运行时间
hotPumpVo.setRunTime(item.getCurValue()); // 去除pump前缀
hotPumpVo.setRunTimeId(item.getCpmId()); // 去除pump前缀
break;
case "17":
// 开机
hotPumpVo.setStart(item.getCurValue().toString()); // 去除pump前缀
hotPumpVo.setStartId(item.getCpmId()); // 去除pump前缀
break;
case "18":
// 关机
hotPumpVo.setStop(item.getCurValue().toString()); // 去除pump前缀
hotPumpVo.setStopId(item.getCpmId()); // 去除pump前缀
break;
default:
break;
}
});
return hotPumpVo;
case "循环泵":
HotWaterCircuitPumpControlVO circuitPumpVo = new HotWaterCircuitPumpControlVO();
circuitPumpVo.setId(dlEntry.getKey());
if (StringUtils.isBlank(dlItems.get(0).getDeviceName())) {
// 如果设备名称为空,则使用房间号
circuitPumpVo.setName(dto.getName());
} else {
circuitPumpVo.setName(dlItems.get(0).getDeviceName());
}
circuitPumpVo.setOrderNum(dlItems.get(0).getDlOrderNum());
// 单独对系统参数
dlItems.forEach(item -> {
switch (item.getParamTypeId()) {
case "1":
// 启停
circuitPumpVo.setStartStopControl(item.getCurValue().intValue());
circuitPumpVo.setStartStopControlId(item.getCpmId());
break;
case "2":
// 运行状态
circuitPumpVo.setRunState(item.getCurValue().intValue());
circuitPumpVo.setRunStateId(item.getCpmId());
break;
case "3":
// 故障
circuitPumpVo.setFault(item.getCurValue().intValue());
circuitPumpVo.setFaultId(item.getCpmId());
break;
case "4":
// 时控
if (item.getOtherName().contains("定时_时开1")) {
circuitPumpVo.setOneHourTimeOpenSetOne(item.getCurValue().intValue());
circuitPumpVo.setOneHourTimeOpenSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("定时_时关1")) {
circuitPumpVo.setOneHourTimeCloseSetOne(item.getCurValue().intValue());
circuitPumpVo.setOneHourTimeCloseSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("定时_分开1")) {
circuitPumpVo.setOneMinTimeOpenSetOne(item.getCurValue().intValue());
circuitPumpVo.setOneMinTimeOpenSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("定时_分关1")) {
circuitPumpVo.setOneMinTimeCloseSetOne(item.getCurValue().intValue());
circuitPumpVo.setOneMinTimeCloseSetOneId(item.getCpmId());
}
break;
case "15":
// 开延时
circuitPumpVo.setOpenDelayTime(item.getCurValue().intValue());
circuitPumpVo.setOpenDelayTimeId(item.getCpmId());
break;
case "16":
if (item.getOtherName().contains("小时")) {
// 累计运行时间
circuitPumpVo.setRunTime(item.getCurValue());
circuitPumpVo.setRunTimeId(item.getCpmId());
}
break;
default:
break;
}
});
return circuitPumpVo;
case "回水泵":
HotWaterBackPumpControlVO backPumpVo = new HotWaterBackPumpControlVO();
backPumpVo.setId(dlEntry.getKey());
if (StringUtils.isBlank(dlItems.get(0).getDeviceName())) {
// 如果设备名称为空,则使用房间号
backPumpVo.setName(dto.getName());
} else {
backPumpVo.setName(dlItems.get(0).getDeviceName());
}
backPumpVo.setOrderNum(dlItems.get(0).getDlOrderNum());
// 单独对系统参数
dlItems.forEach(item -> {
switch (item.getParamTypeId()) {
case "1":
// 启停
backPumpVo.setStartStopControl(item.getCurValue().intValue());
backPumpVo.setStartStopControlId(item.getCpmId());
break;
case "2":
// 运行状态
backPumpVo.setRunState(item.getCurValue().intValue());
backPumpVo.setRunStateId(item.getCpmId());
break;
case "3":
// 故障
backPumpVo.setFault(item.getCurValue().intValue());
backPumpVo.setFaultId(item.getCpmId());
break;
case "4":
// 时控
if (item.getOtherName().contains("定时_时开1")) {
backPumpVo.setOneHourTimeOpenSetOne(item.getCurValue().intValue());
backPumpVo.setOneHourTimeOpenSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("定时_时关1")) {
backPumpVo.setOneHourTimeCloseSetOne(item.getCurValue().intValue());
backPumpVo.setOneHourTimeCloseSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("定时_分开1")) {
backPumpVo.setOneMinTimeOpenSetOne(item.getCurValue().intValue());
backPumpVo.setOneMinTimeOpenSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("定时_分关1")) {
backPumpVo.setOneMinTimeCloseSetOne(item.getCurValue().intValue());
backPumpVo.setOneMinTimeCloseSetOneId(item.getCpmId());
} else if (item.getOtherName().contains("定时_时开2")) {
backPumpVo.setOneHourTimeOpenSetTwo(item.getCurValue().intValue());
backPumpVo.setOneHourTimeOpenSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("定时_时关2")) {
backPumpVo.setOneHourTimeCloseSetTwo(item.getCurValue().intValue());
backPumpVo.setOneHourTimeCloseSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("定时_分开2")) {
backPumpVo.setOneMinTimeOpenSetTwo(item.getCurValue().intValue());
backPumpVo.setOneMinTimeOpenSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("定时_分关2")) {
backPumpVo.setOneMinTimeCloseSetTwo(item.getCurValue().intValue());
backPumpVo.setOneMinTimeCloseSetTwoId(item.getCpmId());
} else if (item.getOtherName().contains("定时_时开3")) {
backPumpVo.setOneHourTimeOpenSetThree(item.getCurValue().intValue());
backPumpVo.setOneHourTimeOpenSetThreeId(item.getCpmId());
} else if (item.getOtherName().contains("定时_时关3")) {
backPumpVo.setOneHourTimeCloseSetThree(item.getCurValue().intValue());
backPumpVo.setOneHourTimeCloseSetThreeId(item.getCpmId());
} else if (item.getOtherName().contains("定时_分开3")) {
backPumpVo.setOneMinTimeOpenSetThree(item.getCurValue().intValue());
backPumpVo.setOneMinTimeOpenSetThreeId(item.getCpmId());
} else if (item.getOtherName().contains("定时_分关3")) {
backPumpVo.setOneMinTimeCloseSetThree(item.getCurValue().intValue());
backPumpVo.setOneMinTimeCloseSetThreeId(item.getCpmId());
}
break;
case "7":
// 回水温度设置
backPumpVo.setTempSet(item.getCurValue());
backPumpVo.setTempSetId(item.getCpmId());
break;
case "15":
// 开延时
backPumpVo.setOpenDelayTime(item.getCurValue().intValue());
backPumpVo.setOpenDelayTimeId(item.getCpmId());
break;
case "16":
if (item.getOtherName().contains("小时")) {
// 累计运行时间
backPumpVo.setRunTime(item.getCurValue());
backPumpVo.setRunTimeId(item.getCpmId());
}
break;
default:
break;
}
});
return backPumpVo;
case "设备校准":
HotWaterDeviceCalibrationControlVO deviceCalibrationVo = new HotWaterDeviceCalibrationControlVO();
deviceCalibrationVo.setId(dlEntry.getKey());
if (StringUtils.isBlank(dlItems.get(0).getDeviceName())) {
// 如果设备名称为空,则使用房间号
deviceCalibrationVo.setName(dto.getName());
} else {
deviceCalibrationVo.setName(dlItems.get(0).getDeviceName());
}
deviceCalibrationVo.setOrderNum(dlItems.get(0).getDlOrderNum());
// 单独对系统参数
dlItems.forEach(item -> {
switch (item.getParamTypeId()) {
case "0":
if (item.getOtherName().contains("工程量上限")) {
deviceCalibrationVo.setEngineeringMaxValue(item.getCurValue());
deviceCalibrationVo.setEngineeringMaxValueId(item.getCpmId());
} else if (item.getOtherName().contains("工程量下限")) {
deviceCalibrationVo.setEngineeringMinValue(item.getCurValue());
deviceCalibrationVo.setEngineeringMinValueId(item.getCpmId());
} else if (item.getOtherName().contains("数字量上限")) {
deviceCalibrationVo.setDigitalMaxValue(item.getCurValue());
deviceCalibrationVo.setDigitalMaxValueId(item.getCpmId());
} else if (item.getOtherName().contains("数字量下限")) {
deviceCalibrationVo.setDigitalMinValue(item.getCurValue());
deviceCalibrationVo.setDigitalMinValueId(item.getCpmId());
}
break;
case "9":
// 校准值
deviceCalibrationVo.setCalibrationValue(item.getCurValue());
deviceCalibrationVo.setCalibrationValueId(item.getCpmId());
break;
default:
break;
}
});
return deviceCalibrationVo;
case "电表":
case "水表":
HotWaterDeviceControlVO meterVo = new HotWaterDeviceControlVO();
meterVo.setId(dlEntry.getKey());
if (StringUtils.isBlank(dlItems.get(0).getDeviceName())) {
meterVo.setName(dto.getName());
} else {
meterVo.setName(dlItems.get(0).getDeviceName());
}
meterVo.setOrderNum(dlItems.get(0).getDlOrderNum());
// 单独对系统参数
dlItems.forEach(item -> {
switch (item.getParamTypeId()) {
case "13":
meterVo.setTotalReading(item.getCurValue());
meterVo.setTotalReadingId(item.getCpmId());
break;
case "14":
meterVo.setTotalReading(item.getCurValue());
meterVo.setTotalReadingId(item.getCpmId());
break;
default:
break;
}
});
return meterVo;
default:
break;
}
return null;
})
.collect(Collectors.toList());
dto.setChildren(children);
return dto;
})
// 添加排序操作
.sorted(Comparator.comparingInt(HotWaterControlDTO::getOrderNum))
.collect(Collectors.toList());
}
@Override
public CollectionParamsManageEntity selectDeviceInstallByOtherName(String name) {
return collectionParamsManageMapper.selectDeviceInstallByOtherName(name);
}
@Override
public void updateCPMByOtherName(String name, float value, String time) {
collectionParamsManageMapper.updateCPMByOtherName(name, value, time);
public void updateCPMByOtherName(String name, BigDecimal value, String time) {
try {
collectionParamsManageMapper.updateCPMByOtherName(name, value, time, "0");
} catch (Exception e) {
collectionParamsManageMapper.updateCPMByOtherName(name, new BigDecimal(0), time, "-1");
;
}
}
@Override
@ -57,6 +546,9 @@ public class CollectionParamsManageServiceImpl implements CollectionParamsManage
if (collectionParamsManageMapper.selectCountByOtherName(cpmEntity.getOtherName()) > 0) {
return "存在相同参数名称";
}
if (null == cpmEntity.getCurTime()) {
cpmEntity.setCurTime(new Date());
}
collectionParamsManageMapper.insertCPM(cpmEntity);
return Constant.SUCCESS;
}

2
user-service/src/main/java/com/mh/user/service/mqtt/config/MqttConfig.java

@ -82,7 +82,7 @@ public class MqttConfig {
mqttConnectOptions.setPassword(StringUtils.hasText(customizeOptions.getPassword()) ?
customizeOptions.getPassword().toCharArray() : new char[0]);
// 直接进行自动连接
mqttConnectOptions.setAutomaticReconnect(false);
mqttConnectOptions.setAutomaticReconnect(true);
// 时间间隔时间10s
mqttConnectOptions.setKeepAliveInterval(1000);

34
user-service/src/main/java/com/mh/user/service/mqtt/service/impl/EventsServiceImpl.java

@ -8,6 +8,7 @@ import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.factory.Device;
import com.mh.user.factory.DeviceFactory;
import com.mh.user.model.SanShiFengDatas;
import com.mh.user.model.SanShiFengReceiver;
import com.mh.user.service.CollectionParamsManageService;
import com.mh.user.service.DeviceInstallService;
@ -23,6 +24,8 @@ import org.springframework.messaging.MessageHeaders;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
@ -92,19 +95,40 @@ public class EventsServiceImpl implements IEventsService {
String time = datas.getTime();
// 更新网关设备在线状态
gatewayManageService.updateGatewayManageOnlineBySn(sn, 0);
List<JSONObject> datasList = datas.getDatas();
for (JSONObject data : datasList) {
// 修复类型转换问题
List<?> rawDataList = datas.getDatas();
for (Object rawData : rawDataList) {
// 安全地转换对象
SanShiFengDatas data = new SanShiFengDatas();
if (rawData instanceof SanShiFengDatas) {
data = (SanShiFengDatas) rawData;
} else {
// 如果是 LinkedHashMap,则手动转换
JSONObject jsonObject = new JSONObject((HashMap<?, ?>) rawData);
try {
data = jsonObject.to(SanShiFengDatas.class);
} catch (Exception e) {
log.error("mqtt数据上报异常", e);
data.setName(jsonObject.getString("name"));
data.setValue(0);
}
}
// 不使用消息队列,查询属于哪种设备类型,然后通过策略进行数据解析
log.info("设备SN:{},PLC名称:{},项目名称:{},时间:{},数据:{}", sn, plcName, projectName, time, data.toString());
// 获取点位参数名称
String name = data.getString("name");
String name = data.getName();
// 获取点位值
float value = data.getFloatValue("value");
BigDecimal value = new BigDecimal(0);
try {
value = new BigDecimal(String.valueOf(data.getValue()));
} catch (Exception e) {
value = BigDecimal.ZERO;
}
// 直接更新collectionParamManage参数值
collectionParamManageService.updateCPMByOtherName(name, value, time);
// 查询device_install表,走之前的逻辑
CollectionParamsManageEntity collectionParamsManageEntity = collectionParamManageService.selectDeviceInstallByOtherName(name);
if (collectionParamsManageEntity.getDeviceInstallId() != null) {
if (null != collectionParamsManageEntity && collectionParamsManageEntity.getDeviceInstallId() != null) {
DeviceInstallEntity deviceInstallEntity = deviceInstallService.selectDeviceById(collectionParamsManageEntity.getDeviceInstallId());
if (deviceInstallEntity != null) {
// 开始走策略判断

4
user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java

@ -163,8 +163,8 @@ public class WtMeterStrategy implements DeviceStrategy {
} catch (Exception e) {
log.error("水表数据保存数据库失败!楼栋名称:{}", deviceInstallEntity.getBuildingName(), e);
}
if (!StringUtils.isBlank(data)) {
data = String.valueOf(Double.valueOf(data));
if (!StringUtils.isBlank(dataStr)) {
data = String.valueOf(Double.valueOf(dataStr));
}
return data;
}

16
user-service/src/main/resources/application-dev.yml

@ -1,3 +1,17 @@
# 项目相关配置
mh:
# 名称
name: nfxy
# 版本
version: 1.0.0
# 版权年份
copyrightYear: 2025
# 文件路径 示例( Windows配置D:/mh/uploadPath,Linux配置 /home/mh/uploadPath)
profile: D:/mh/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数字计算 char 字符验证
captchaType: math
server:
port: 8762 #8761创新、8762广商、8763华厦、广州理工
spring:
@ -8,7 +22,7 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource
druid:
#添加allowMultiQueries=true 在批量更新时才不会出错
url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=chws_bsdz;allowMultiQueries=true;encrypt=false
url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=chws_nfxy;allowMultiQueries=true;encrypt=false
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: mh@803

2
user-service/src/main/resources/application.yml

@ -1,6 +1,6 @@
spring:
profiles:
active: prod
active: dev
mvc:
pathmatch:
matching-strategy: ant_path_matcher

Loading…
Cancel
Save