Browse Source

1、接入mqtt控制;

2、广州理工供回水状态添加;
3、增加通过sn、buildingId、otherName更新采集参数;
dev
25604 3 weeks ago
parent
commit
9f9cda3870
  1. 1
      user-service/src/main/java/com/mh/user/constants/Constant.java
  2. 52
      user-service/src/main/java/com/mh/user/controller/DeviceOperateController.java
  3. 24
      user-service/src/main/java/com/mh/user/dto/HotWaterBackPumpControlVO.java
  4. 14
      user-service/src/main/java/com/mh/user/dto/HotWaterCircuitPumpControlVO.java
  5. 7
      user-service/src/main/java/com/mh/user/dto/HotWaterDeviceControlVO.java
  6. 46
      user-service/src/main/java/com/mh/user/dto/HotWaterHotPumpControlVO.java
  7. 10
      user-service/src/main/java/com/mh/user/dto/HotWaterNowDataDTO.java
  8. 16
      user-service/src/main/java/com/mh/user/dto/HotWaterSystemControlVO.java
  9. 20
      user-service/src/main/java/com/mh/user/entity/NowDataEntity.java
  10. 1
      user-service/src/main/java/com/mh/user/entity/NowPublicDataEntity.java
  11. 3
      user-service/src/main/java/com/mh/user/job/CollectionLoopRunner.java
  12. 91
      user-service/src/main/java/com/mh/user/mapper/CollectionParamsManageMapper.java
  13. 2
      user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java
  14. 3
      user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java
  15. 4
      user-service/src/main/java/com/mh/user/model/SanShiFengDatas.java
  16. 5
      user-service/src/main/java/com/mh/user/model/SerialPortModel.java
  17. 4
      user-service/src/main/java/com/mh/user/service/CollectionParamsManageService.java
  18. 5
      user-service/src/main/java/com/mh/user/service/DeviceControlService.java
  19. 2
      user-service/src/main/java/com/mh/user/service/GatewayManageService.java
  20. 1151
      user-service/src/main/java/com/mh/user/service/impl/CollectionParamsManageServiceImpl.java
  21. 82
      user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java
  22. 112
      user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java
  23. 5
      user-service/src/main/java/com/mh/user/service/impl/GatewayManageServiceImpl.java
  24. 410
      user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java
  25. 24
      user-service/src/main/java/com/mh/user/service/impl/NowPublicDataServiceImpl.java
  26. 22
      user-service/src/main/java/com/mh/user/service/mqtt/config/MqttConfig.java
  27. 57
      user-service/src/main/java/com/mh/user/service/mqtt/config/MqttInboundConfig.java
  28. 26
      user-service/src/main/java/com/mh/user/service/mqtt/config/MqttOutboundConfig.java
  29. 17
      user-service/src/main/java/com/mh/user/service/mqtt/service/IMqttManagerService.java
  30. 13
      user-service/src/main/java/com/mh/user/service/mqtt/service/impl/EventsServiceImpl.java
  31. 64
      user-service/src/main/java/com/mh/user/service/mqtt/service/impl/MqttManagerServiceImpl.java
  32. 19
      user-service/src/main/java/com/mh/user/service/mqtt/service/impl/MqttTopicServiceImpl.java
  33. 21
      user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java
  34. 7
      user-service/src/main/resources/application-dev.yml
  35. 23
      user-service/src/main/resources/application-prod.yml

1
user-service/src/main/java/com/mh/user/constants/Constant.java

@ -13,6 +13,7 @@ public class Constant {
public static final CharSequence CUSTOM_NAME_GUANGSHANG = "广州商学院"; public static final CharSequence CUSTOM_NAME_GUANGSHANG = "广州商学院";
public static final CharSequence CUSTOM_NAME_ZBSD = "北京师范大学珠海校区"; public static final CharSequence CUSTOM_NAME_ZBSD = "北京师范大学珠海校区";
public static final CharSequence CUSTOM_NAME_HUARUAN = "广州软件学院"; public static final CharSequence CUSTOM_NAME_HUARUAN = "广州软件学院";
public static final CharSequence CUSTOM_NAME_LIGONG = "理工学院";
public static final String WEATHER_DATA = "weather_data"; public static final String WEATHER_DATA = "weather_data";
public static final String COMMUNITY_TYPE_REAL_COM = "realCom"; public static final String COMMUNITY_TYPE_REAL_COM = "realCom";
public static final String COMMUNITY_TYPE_TCP = "tcp"; public static final String COMMUNITY_TYPE_TCP = "tcp";

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

@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONObject;
import com.mh.common.http.HttpResult; import com.mh.common.http.HttpResult;
import com.mh.common.utils.StringUtils; import com.mh.common.utils.StringUtils;
import com.mh.user.annotation.SysLogger; import com.mh.user.annotation.SysLogger;
import com.mh.user.config.MHConfig;
import com.mh.user.constants.Constant; import com.mh.user.constants.Constant;
import com.mh.user.entity.ControlSetEntity; import com.mh.user.entity.ControlSetEntity;
import com.mh.user.entity.DeviceCodeParamEntity; import com.mh.user.entity.DeviceCodeParamEntity;
@ -13,9 +14,11 @@ import com.mh.user.model.DeviceModel;
import com.mh.user.model.SerialPortModel; import com.mh.user.model.SerialPortModel;
import com.mh.user.serialport.SerialPortSingle2; import com.mh.user.serialport.SerialPortSingle2;
import com.mh.user.service.*; import com.mh.user.service.*;
import com.mh.user.service.mqtt.service.IMqttGatewayService;
import com.mh.user.utils.ExchangeStringUtil; import com.mh.user.utils.ExchangeStringUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -42,6 +45,14 @@ public class DeviceOperateController {
@Autowired @Autowired
private DeviceControlService deviceControlService; private DeviceControlService deviceControlService;
@Autowired
private MHConfig mhConfig;
@Value("${control.topic}")
String controlTopic;
@Autowired
private IMqttGatewayService iMqttGatewayService;
//操作设备 //操作设备
@SysLogger(title = "控制管理", optDesc = "设置设备参数值") @SysLogger(title = "控制管理", optDesc = "设置设备参数值")
@ -49,10 +60,43 @@ public class DeviceOperateController {
public HttpResult operateDevice(@RequestBody List<SerialPortModel> params) { public HttpResult operateDevice(@RequestBody List<SerialPortModel> params) {
try { try {
Constant.WEB_FLAG = true; //单抄,暂时停止采集 Constant.WEB_FLAG = true; //单抄,暂时停止采集
Thread.sleep(1000); // 判断通讯方式
String returnStr = deviceControlService.readOrWriteDevice(params, Constant.WRITE); if (deviceControlService.isMqttControl(params)) {
if (!StringUtils.isBlank(returnStr) && "fail".equals(returnStr)) { for (SerialPortModel serialPortModel :
return HttpResult.error(500, "fail"); params) {
String sn = deviceControlService.getSn(serialPortModel);
if (StringUtils.isBlank(sn)) {
return HttpResult.error(500, "mqtt设备未配置SN");
}
String sendOrder = deviceControlService.operationDevice(serialPortModel);
if (Constant.FAIL.equals(sendOrder)) {
return HttpResult.error(500, "fail");
}
String name = mhConfig.getName();
// 获取mqtt操作队列(后期通过mqtt队列配置发送主题)
String sendTopic = name + "/" + controlTopic + "/" + sn;
log.info("发送主题:{},消息:{}", sendTopic, sendOrder);
iMqttGatewayService.publish(sendTopic, sendOrder, 1);
// 判断当前cpmId是否是 11:固定是 启用写入时间戳
if (serialPortModel.getCpmId().equals("11")) {
// 是的话,重新写入,启用时间写入值变成 0
serialPortModel.setDataValue("0");
sendOrder = deviceControlService.operationDevice(serialPortModel);
if (Constant.FAIL.equals(sendOrder)) {
return HttpResult.error(500, "fail");
}
name = mhConfig.getName();
// 获取mqtt操作队列(后期通过mqtt队列配置发送主题)
sendTopic = name + "/" + controlTopic + "/" + sn;
log.info("发送主题:{},消息:{}", sendTopic, sendOrder);
iMqttGatewayService.publish(sendTopic, sendOrder, 1);
}
}
} else {
String returnStr = deviceControlService.readOrWriteDevice(params, Constant.WRITE);
if (!StringUtils.isBlank(returnStr) && "fail".equals(returnStr)) {
return HttpResult.error(500, "fail");
}
} }
Constant.WEB_FLAG = false; //单抄,恢复采集 Constant.WEB_FLAG = false; //单抄,恢复采集
return HttpResult.ok(); return HttpResult.ok();

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

@ -40,6 +40,11 @@ public class HotWaterBackPumpControlVO {
private int oneMinTimeCloseSetOne; private int oneMinTimeCloseSetOne;
private String oneMinTimeCloseSetOneId; private String oneMinTimeCloseSetOneId;
// 定时_时分开1
private String oneHourMinTimeOpenSetOneStr;
// 定时_时分关1
private String oneHourMinTimeCloseSetOneStr;
// 定时_时开2 // 定时_时开2
private int oneHourTimeOpenSetTwo; private int oneHourTimeOpenSetTwo;
private String oneHourTimeOpenSetTwoId; private String oneHourTimeOpenSetTwoId;
@ -56,6 +61,11 @@ public class HotWaterBackPumpControlVO {
private int oneMinTimeCloseSetTwo; private int oneMinTimeCloseSetTwo;
private String oneMinTimeCloseSetTwoId; private String oneMinTimeCloseSetTwoId;
// 定时_时分开2
private String oneHourMinTimeOpenSetTwoStr;
// 定时_时分关2
private String oneHourMinTimeCloseSetTwoStr;
// 定时_时开3 // 定时_时开3
private int oneHourTimeOpenSetThree; private int oneHourTimeOpenSetThree;
private String oneHourTimeOpenSetThreeId; private String oneHourTimeOpenSetThreeId;
@ -72,6 +82,11 @@ public class HotWaterBackPumpControlVO {
private int oneMinTimeCloseSetThree; private int oneMinTimeCloseSetThree;
private String oneMinTimeCloseSetThreeId; private String oneMinTimeCloseSetThreeId;
// 定时_时分开3
private String oneHourMinTimeOpenSetThreeStr;
// 定时_时分关3
private String oneHourMinTimeCloseSetThreeStr;
// 开延时 // 开延时
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private int openDelayTime; private int openDelayTime;
@ -99,6 +114,15 @@ public class HotWaterBackPumpControlVO {
private int fault; private int fault;
private String faultId; private String faultId;
// 一键启动
private int startOneKey;
private String startOneKeyId;
// 手自动切换
private int manualAutoSwitch;
private String manualAutoSwitchId;
@Override @Override
public String toString() { public String toString() {
return new StringJoiner(", ", HotWaterBackPumpControlVO.class.getSimpleName() + "[", "]") return new StringJoiner(", ", HotWaterBackPumpControlVO.class.getSimpleName() + "[", "]")

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

@ -32,6 +32,9 @@ public class HotWaterCircuitPumpControlVO {
private int oneMinTimeOpenSetOne; private int oneMinTimeOpenSetOne;
private String oneMinTimeOpenSetOneId; private String oneMinTimeOpenSetOneId;
// 定时_时分开1
private String oneHourMinTimeOpenSetOneStr;
// 定时_时关1 // 定时_时关1
private int oneHourTimeCloseSetOne; private int oneHourTimeCloseSetOne;
private String oneHourTimeCloseSetOneId; private String oneHourTimeCloseSetOneId;
@ -40,6 +43,9 @@ public class HotWaterCircuitPumpControlVO {
private int oneMinTimeCloseSetOne; private int oneMinTimeCloseSetOne;
private String oneMinTimeCloseSetOneId; private String oneMinTimeCloseSetOneId;
// 定时_时分关1
private String oneHourMinTimeCloseSetOneStr;
// 开延时 // 开延时
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private int openDelayTime; private int openDelayTime;
@ -72,6 +78,14 @@ public class HotWaterCircuitPumpControlVO {
private int fault; private int fault;
private String faultId; private String faultId;
// 一键启动
private int startOneKey;
private String startOneKeyId;
// 手自动切换
private int manualAutoSwitch;
private String manualAutoSwitchId;
@Override @Override
public String toString() { public String toString() {
return new StringJoiner(", ", HotWaterCircuitPumpControlVO.class.getSimpleName() + "[", "]") return new StringJoiner(", ", HotWaterCircuitPumpControlVO.class.getSimpleName() + "[", "]")

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

@ -30,6 +30,11 @@ public class HotWaterDeviceControlVO {
private BigDecimal totalReading; private BigDecimal totalReading;
private String totalReadingId; private String totalReadingId;
// 当前时间
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date currentTime;
private String currentTimeId;
@Override @Override
public String toString() { public String toString() {
return new StringJoiner(", ", HotWaterDeviceControlVO.class.getSimpleName() + "[", "]") return new StringJoiner(", ", HotWaterDeviceControlVO.class.getSimpleName() + "[", "]")
@ -38,6 +43,8 @@ public class HotWaterDeviceControlVO {
.add("orderNum=" + orderNum) .add("orderNum=" + orderNum)
.add("totalReading=" + totalReading) .add("totalReading=" + totalReading)
.add("totalReadingId='" + totalReadingId + "'") .add("totalReadingId='" + totalReadingId + "'")
.add("currentTime=" + currentTime)
.add("currentTimeId='" + currentTimeId + "'")
.toString(); .toString();
} }
} }

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

@ -32,6 +32,9 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int oneMinTimeOpenSetOne; private int oneMinTimeOpenSetOne;
private String oneMinTimeOpenSetOneId; private String oneMinTimeOpenSetOneId;
// 定时_时分开1
private String oneHourMinTimeOpenSetOneStr;
// 热泵12定时_时关1 // 热泵12定时_时关1
private int oneHourTimeCloseSetOne; private int oneHourTimeCloseSetOne;
private String oneHourTimeCloseSetOneId; private String oneHourTimeCloseSetOneId;
@ -40,6 +43,9 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int oneMinTimeCloseSetOne; private int oneMinTimeCloseSetOne;
private String oneMinTimeCloseSetOneId; private String oneMinTimeCloseSetOneId;
// 定时_时分关1
private String oneHourMinTimeCloseSetOneStr;
// 热泵12定时_时开2 // 热泵12定时_时开2
private int oneHourTimeOpenSetTwo; private int oneHourTimeOpenSetTwo;
private String oneHourTimeOpenSetTwoId; private String oneHourTimeOpenSetTwoId;
@ -48,6 +54,9 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int oneMinTimeOpenSetTwo; private int oneMinTimeOpenSetTwo;
private String oneMinTimeOpenSetTwoId; private String oneMinTimeOpenSetTwoId;
// 定时_时分开2
private String oneHourMinTimeOpenSetTwoStr;
// 热泵12定时_时关2 // 热泵12定时_时关2
private int oneHourTimeCloseSetTwo; private int oneHourTimeCloseSetTwo;
private String oneHourTimeCloseSetTwoId; private String oneHourTimeCloseSetTwoId;
@ -56,6 +65,9 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int oneMinTimeCloseSetTwo; private int oneMinTimeCloseSetTwo;
private String oneMinTimeCloseSetTwoId; private String oneMinTimeCloseSetTwoId;
// 定时_时分关2
private String oneHourMinTimeCloseSetTwoStr;
// 热泵12定时_时开3 // 热泵12定时_时开3
private int oneHourTimeOpenSetThree; private int oneHourTimeOpenSetThree;
private String oneHourTimeOpenSetThreeId; private String oneHourTimeOpenSetThreeId;
@ -64,6 +76,9 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int oneMinTimeOpenSetThree; private int oneMinTimeOpenSetThree;
private String oneMinTimeOpenSetThreeId; private String oneMinTimeOpenSetThreeId;
// 定时_时分开3
private String oneHourMinTimeOpenSetThreeStr;
// 热泵12定时_时关3 // 热泵12定时_时关3
private int oneHourTimeCloseSetThree; private int oneHourTimeCloseSetThree;
private String oneHourTimeCloseSetThreeId; private String oneHourTimeCloseSetThreeId;
@ -72,7 +87,10 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int oneMinTimeCloseSetThree; private int oneMinTimeCloseSetThree;
private String oneMinTimeCloseSetThreeId; private String oneMinTimeCloseSetThreeId;
// 热泵12定时_时开1 // 定时_时分关3
private String oneHourMinTimeCloseSetThreeStr;
// 热泵34定时_时开1
private int twoHourTimeOpenSetOne; private int twoHourTimeOpenSetOne;
private String twoHourTimeOpenSetOneId; private String twoHourTimeOpenSetOneId;
@ -80,6 +98,9 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int twoMinTimeOpenSetOne; private int twoMinTimeOpenSetOne;
private String twoMinTimeOpenSetOneId; private String twoMinTimeOpenSetOneId;
// 定时_时分开1
private String twoHourMinTimeOpenSetOneStr;
// 热泵34定时_时关1 // 热泵34定时_时关1
private int twoHourTimeCloseSetOne; private int twoHourTimeCloseSetOne;
private String twoHourTimeCloseSetOneId; private String twoHourTimeCloseSetOneId;
@ -88,6 +109,9 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int twoMinTimeCloseSetOne; private int twoMinTimeCloseSetOne;
private String twoMinTimeCloseSetOneId; private String twoMinTimeCloseSetOneId;
// 定时_时分关1
private String twoHourMinTimeCloseSetOneStr;
// 热泵34定时_时开2 // 热泵34定时_时开2
private int twoHourTimeOpenSetTwo; private int twoHourTimeOpenSetTwo;
private String twoHourTimeOpenSetTwoId; private String twoHourTimeOpenSetTwoId;
@ -96,6 +120,9 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int twoMinTimeOpenSetTwo; private int twoMinTimeOpenSetTwo;
private String twoMinTimeOpenSetTwoId; private String twoMinTimeOpenSetTwoId;
// 定时_时分开2
private String twoHourMinTimeOpenSetTwoStr;
// 热泵34定时_时关2 // 热泵34定时_时关2
private int twoHourTimeCloseSetTwo; private int twoHourTimeCloseSetTwo;
private String twoHourTimeCloseSetTwoId; private String twoHourTimeCloseSetTwoId;
@ -104,6 +131,9 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int twoMinTimeCloseSetTwo; private int twoMinTimeCloseSetTwo;
private String twoMinTimeCloseSetTwoId; private String twoMinTimeCloseSetTwoId;
// 定时_时分关2
private String twoHourMinTimeCloseSetTwoStr;
// 热泵34定时_时开3 // 热泵34定时_时开3
private int twoHourTimeOpenSetThree; private int twoHourTimeOpenSetThree;
private String twoHourTimeOpenSetThreeId; private String twoHourTimeOpenSetThreeId;
@ -112,6 +142,9 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int twoMinTimeOpenSetThree; private int twoMinTimeOpenSetThree;
private String twoMinTimeOpenSetThreeId; private String twoMinTimeOpenSetThreeId;
// 定时_时分开3
private String twoHourMinTimeOpenSetThreeStr;
// 热泵34定时_时关3 // 热泵34定时_时关3
private int twoHourTimeCloseSetThree; private int twoHourTimeCloseSetThree;
private String twoHourTimeCloseSetThreeId; private String twoHourTimeCloseSetThreeId;
@ -120,6 +153,9 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int twoMinTimeCloseSetThree; private int twoMinTimeCloseSetThree;
private String twoMinTimeCloseSetThreeId; private String twoMinTimeCloseSetThreeId;
// 定时_时分关3
private String twoHourMinTimeCloseSetThreeStr;
// 热泵_开机 -> 去掉pump前缀 // 热泵_开机 -> 去掉pump前缀
private String start; private String start;
private String startId; private String startId;
@ -136,6 +172,14 @@ public class HotWaterHotPumpControlVO { // 去掉pump后的类名
private int startStopControl; private int startStopControl;
private String startStopControlId; private String startStopControlId;
// 热泵_12启停控制
private int startStopControlOne;
private String startStopControlOneId;
// 热泵_34启停控制
private int startStopControlTwo;
private String startStopControlTwoId;
// 热泵_设定温度 -> 去掉pump前缀 // 热泵_设定温度 -> 去掉pump前缀
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "0")
private BigDecimal setTemp; private BigDecimal setTemp;

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

@ -48,7 +48,15 @@ public class HotWaterNowDataDTO {
private String useWaterState; // 补水状态 private String useWaterState; // 补水状态
private String backWaterState; // 回水状态 private String backWaterState; // 回水状态1
private String backWaterState2; // 回水状态2
private String pressure; // 压力
private String circulateState; // 循环泵状态1
private String circulateState2; // 循环泵状态2
private int orderNum; private int orderNum;

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

@ -50,8 +50,8 @@ public class HotWaterSystemControlVO {
// PLC 时间 // PLC 时间
private String plcTime; private String plcTime;
// 秒_读 6 // 秒_读 6
private int sTimeRead; private int scTimeRead;
private String sTimeReadId; private String scTimeReadId;
// 分_读 8 // 分_读 8
private int minTimeRead; private int minTimeRead;
@ -74,8 +74,8 @@ public class HotWaterSystemControlVO {
private String yearTimeReadId; private String yearTimeReadId;
// 秒_写 6 // 秒_写 6
private int sTimeSet; private int scTimeSet;
private String sTimeSetId; private String scTimeSetId;
// 分_写 8 // 分_写 8
private int minTimeSet; private int minTimeSet;
@ -115,8 +115,8 @@ public class HotWaterSystemControlVO {
.add("pressure=" + pressure) .add("pressure=" + pressure)
.add("pressureId='" + pressureId + "'") .add("pressureId='" + pressureId + "'")
.add("plcTime='" + plcTime + "'") .add("plcTime='" + plcTime + "'")
.add("sTimeRead=" + sTimeRead) .add("scTimeRead=" + scTimeRead)
.add("sTimeReadId='" + sTimeReadId + "'") .add("scTimeReadId='" + scTimeReadId + "'")
.add("minTimeRead=" + minTimeRead) .add("minTimeRead=" + minTimeRead)
.add("minTimeReadId='" + minTimeReadId + "'") .add("minTimeReadId='" + minTimeReadId + "'")
.add("hourTimeRead=" + hourTimeRead) .add("hourTimeRead=" + hourTimeRead)
@ -127,8 +127,8 @@ public class HotWaterSystemControlVO {
.add("monthTimeReadId='" + monthTimeReadId + "'") .add("monthTimeReadId='" + monthTimeReadId + "'")
.add("yearTimeRead=" + yearTimeRead) .add("yearTimeRead=" + yearTimeRead)
.add("yearTimeReadId='" + yearTimeReadId + "'") .add("yearTimeReadId='" + yearTimeReadId + "'")
.add("sTimeSet=" + sTimeSet) .add("scTimeSet=" + scTimeSet)
.add("sTimeSetId='" + sTimeSetId + "'") .add("scTimeSetId='" + scTimeSetId + "'")
.add("minTimeSet=" + minTimeSet) .add("minTimeSet=" + minTimeSet)
.add("minTimeSetId='" + minTimeSetId + "'") .add("minTimeSetId='" + minTimeSetId + "'")
.add("hourTimeSet=" + hourTimeSet) .add("hourTimeSet=" + hourTimeSet)

20
user-service/src/main/java/com/mh/user/entity/NowDataEntity.java

@ -23,10 +23,24 @@ public class NowDataEntity {
private String tankName; //水箱名称 private String tankName; //水箱名称
private String envTemp; //环境温度 private String envTemp; //环境温度
private String upWaterState; // 供水状态 private String upWaterState; // 供水状态1
private String useWaterState; // 补水状态 private String useWaterState; // 补水状态1
private String backWaterState; // 回水状态 private String backWaterState; // 回水状态1
private String upWaterState2; // 供水状态2
private String useWaterState2; // 补水状态2
private String backWaterState2; // 回水状态2
private String circulateState; // 循环泵状态1
private String circulateState2; // 循环泵状态2
private String pressure; // 压力
private String gwState; // 网关状态
} }

1
user-service/src/main/java/com/mh/user/entity/NowPublicDataEntity.java

@ -17,5 +17,6 @@ public class NowPublicDataEntity {
private String useWaterTemp; //供水温度 private String useWaterTemp; //供水温度
private String backWaterTemp; //回水温度 private String backWaterTemp; //回水温度
private String singleTemp; //单箱温度 private String singleTemp; //单箱温度
private String pressure; //压力
} }

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

@ -17,6 +17,7 @@ import com.mh.user.utils.ExchangeStringUtil;
import com.mh.user.utils.GetReadOrder485; import com.mh.user.utils.GetReadOrder485;
import gnu.io.SerialPort; import gnu.io.SerialPort;
import gnu.io.SerialPortEvent; import gnu.io.SerialPortEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner; import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -48,9 +49,11 @@ public class CollectionLoopRunner implements ApplicationRunner {
private GetWeatherInfoJob getWeatherInfoJob; private GetWeatherInfoJob getWeatherInfoJob;
@Resource @Resource
@Autowired(required = false)
private MqttSubscriptionService iMqttSubscriptionService; private MqttSubscriptionService iMqttSubscriptionService;
@Resource @Resource
@Autowired(required = false)
private IMqttTopicService iMqttTopicService; private IMqttTopicService iMqttTopicService;
@Override @Override

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

@ -79,10 +79,10 @@ public interface CollectionParamsManageMapper extends BaseMapper<CollectionParam
@Select("select count(1) from collection_params_manage where other_name = #{otherName} ") @Select("select count(1) from collection_params_manage where other_name = #{otherName} ")
int selectCountByOtherName(String otherName); int selectCountByOtherName(String otherName);
@Update("update collection_params_manage set cur_value = #{value}, cur_time = #{time}, quality = #{quality} where other_name = #{name}") @Update("update collection_params_manage set cur_value = #{value}, cur_time = #{time}, quality = #{quality} where other_name = #{name} and building_id = #{buildingId}")
void updateCPMByOtherName(String name, BigDecimal value, String time, String quality); void updateCPMByOtherName(String name, BigDecimal value, String time, String quality, String buildingId);
@Select("select top 1 * from collection_params_manage where other_name = #{name}") @Select("select top 1 * from collection_params_manage where other_name = #{name} and building_id = #{buildingId} ")
@Results({ @Results({
@Result(column = "id", property = "id"), @Result(column = "id", property = "id"),
@Result(column = "create_time", property = "createTime"), @Result(column = "create_time", property = "createTime"),
@ -108,7 +108,7 @@ public interface CollectionParamsManageMapper extends BaseMapper<CollectionParam
@Result(column = "collection_type", property = "collectionType"), @Result(column = "collection_type", property = "collectionType"),
@Result(column = "quality", property = "quality") @Result(column = "quality", property = "quality")
}) })
CollectionParamsManageEntity selectDeviceInstallByOtherName(String name); CollectionParamsManageEntity selectDeviceInstallByOtherName(String name, String buildingId);
@Insert("insert into collection_params_manage(" + @Insert("insert into collection_params_manage(" +
"device_install_id, register_addr, func_code, mt_ratio, mt_init_value, digits, data_type, " + "device_install_id, register_addr, func_code, mt_ratio, mt_init_value, digits, data_type, " +
@ -190,4 +190,87 @@ public interface CollectionParamsManageMapper extends BaseMapper<CollectionParam
@Result(column = "dl_order_num", property = "dlOrderNum") @Result(column = "dl_order_num", property = "dlOrderNum")
}) })
List<HotWaterControlListVO> selectHotWaterByBuildingId(String buildingId); List<HotWaterControlListVO> selectHotWaterByBuildingId(String buildingId);
@Select("SELECT " +
" top 1 gm.community_type " +
"FROM " +
" device_install di " +
" JOIN collection_params_manage cpm ON di.id = cpm.device_install_id " +
" JOIN gateway_manage gm ON di.data_com = gm.data_com " +
" AND cpm.id = #{cpmId} ")
String selectCommunicationType(String cpmId);
@Select("SELECT " +
" top 1 gm.sn " +
"FROM " +
" device_install di " +
" JOIN collection_params_manage cpm ON di.id = cpm.device_install_id " +
" JOIN gateway_manage gm ON di.data_com = gm.data_com " +
" AND cpm.id = #{cpmId} ")
String selectSn(String cpmId);
@Select("SELECT " +
" top 1 gm.gateway_name " +
"FROM " +
" device_install di " +
" JOIN collection_params_manage cpm ON di.id = cpm.device_install_id " +
" JOIN gateway_manage gm ON di.data_com = gm.data_com " +
" AND cpm.id = #{cpmId} ")
String selectPlcName(String cpmId);
@Select("select top 1 * from collection_params_manage where id = #{id}")
@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 selectById(String id);
@Select("select top 1 * from collection_params_manage where device_install_id = #{deviceInstallId} and param_type_id = #{paramTypeId}")
@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 selectByDeviceIdAndParamTypeId(Long deviceInstallId, String paramTypeId);
} }

2
user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java

@ -49,7 +49,7 @@ public interface DeviceInstallMapper extends BaseMapper<DeviceInstallEntity> {
int updateDevice(DeviceInstallEntity deviceInstallEntity); int updateDevice(DeviceInstallEntity deviceInstallEntity);
//按id更新水电表读数和采集日期 //按id更新水电表读数和采集日期
@Update("update device_install set last_value=#{lastValue},last_date=#{lastDate} where id=#{id}") @Update("update device_install set last_value=#{lastValue},last_date=#{lastDate}, is_online = '在线' where id=#{id}")
void updateLastValue(@Param("id") Long id,@Param("lastValue") String lastValue,@Param("lastDate") Date lastDate); void updateLastValue(@Param("id") Long id,@Param("lastValue") String lastValue,@Param("lastDate") Date lastDate);
/** /**
* 设备管理模块 * 设备管理模块

3
user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java

@ -118,4 +118,7 @@ public interface GatewayManageMapper {
@Update("update gateway_manage set grade = #{grade}, connect_date = getdate() where sn = #{sn}") @Update("update gateway_manage set grade = #{grade}, connect_date = getdate() where sn = #{sn}")
void updateGatewayManageOnlineBySn(String sn, int grade); void updateGatewayManageOnlineBySn(String sn, int grade);
@Select("select top 1 building_id from device_install di join gateway_manage gm on di.data_com = gm.data_com and gm.sn = #{sn}")
String queryBuildingIdBySn(String sn);
} }

4
user-service/src/main/java/com/mh/user/model/SanShiFengDatas.java

@ -6,11 +6,11 @@ import lombok.Data;
* @author LJF * @author LJF
* @version 1.0 * @version 1.0
* @project EEMCS * @project EEMCS
* @description 研华数据体 * @description 三石峰数据体
* @date 2025-01-22 14:47:25 * @date 2025-01-22 14:47:25
*/ */
@Data @Data
public class SanShiFengDatas<T extends Number> { public class SanShiFengDatas<T extends String> {
/** /**
* 对应研华的标签值 * 对应研华的标签值

5
user-service/src/main/java/com/mh/user/model/SerialPortModel.java

@ -35,4 +35,9 @@ public class SerialPortModel {
*/ */
private String dataValue; private String dataValue;
/**
* 对应的采集参数id
*/
private String cpmId;
} }

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

@ -29,9 +29,9 @@ public interface CollectionParamsManageService {
int deleteByIds(String[] msIds); int deleteByIds(String[] msIds);
void updateCPMByOtherName(String name, BigDecimal value, String time); void updateCPMByOtherName(String name, BigDecimal value, String time, String buildingId);
CollectionParamsManageEntity selectDeviceInstallByOtherName(String name); CollectionParamsManageEntity selectDeviceInstallByOtherName(String name, String buildingId);
List<HotWaterNowDataDTO> monitorList(String buildingId); List<HotWaterNowDataDTO> monitorList(String buildingId);

5
user-service/src/main/java/com/mh/user/service/DeviceControlService.java

@ -20,4 +20,9 @@ public interface DeviceControlService {
*/ */
public String readOrWriteDevice(List<SerialPortModel> params, String type); public String readOrWriteDevice(List<SerialPortModel> params, String type);
boolean isMqttControl(List<SerialPortModel> params);
String operationDevice(SerialPortModel params);
String getSn(SerialPortModel serialPortModel);
} }

2
user-service/src/main/java/com/mh/user/service/GatewayManageService.java

@ -55,4 +55,6 @@ public interface GatewayManageService {
void updateGatewayManageOnlineByImei(String imei, int status); void updateGatewayManageOnlineByImei(String imei, int status);
void updateGatewayManageOnlineBySn(String sn, int grade); void updateGatewayManageOnlineBySn(String sn, int grade);
String queryBuildingIdBySn(String sn);
} }

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

File diff suppressed because it is too large Load Diff

82
user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java

@ -13,9 +13,12 @@ import org.springframework.stereotype.Service;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import static java.util.Calendar.*;
@Service @Service
public class DataResultServiceImpl implements DataResultService { public class DataResultServiceImpl implements DataResultService {
@ -28,6 +31,8 @@ public class DataResultServiceImpl implements DataResultService {
@Autowired @Autowired
DeviceInstallService deviceInstallService; DeviceInstallService deviceInstallService;
private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("0.000");
@Override @Override
public void saveDataResult(DataResultEntity dataResultEntity) { public void saveDataResult(DataResultEntity dataResultEntity) {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@ -43,6 +48,10 @@ public class DataResultServiceImpl implements DataResultService {
if (dataResultEntity.getCurDate()==null){ if (dataResultEntity.getCurDate()==null){
dataResultEntity.setCurDate(date); dataResultEntity.setCurDate(date);
} }
// 格式化时间,按五分钟保存一次
Date formattedDate = formatToFiveMinuteInterval(dataResultEntity.getCurDate());
dataResultEntity.setCurDate(formattedDate);
//从安装表获取设备信息 //从安装表获取设备信息
DeviceInstallEntity deviceInstallEntity=deviceInstallMapper.selectDevice(dataResultEntity.getDeviceAddr(),dataResultEntity.getDeviceType(),dataResultEntity.getBuildingId()); DeviceInstallEntity deviceInstallEntity=deviceInstallMapper.selectDevice(dataResultEntity.getDeviceAddr(),dataResultEntity.getDeviceType(),dataResultEntity.getBuildingId());
double ratio=deviceInstallEntity.getRatio(); //倍率 double ratio=deviceInstallEntity.getRatio(); //倍率
@ -60,10 +69,15 @@ public class DataResultServiceImpl implements DataResultService {
} }
dayValue=100; dayValue=100;
} }
//判断是否有记录
int r = dataResultMapper.selectDataResultCount(sdf1.format(dataResultEntity.getCurDate()), int r = dataResultMapper.selectDataResultCount(sdf1.format(dataResultEntity.getCurDate()),
dataResultEntity.getDeviceAddr(),dataResultEntity.getDeviceType()); dataResultEntity.getDeviceAddr(),dataResultEntity.getDeviceType());
if (r==0){//插入记录 if (r==0){//插入记录
// 获取上一个抄表记录curValue,curDate
// dataResultEntity.getCurDate()减去5分钟,
Calendar calendar = Calendar.getInstance();
calendar.setTime(dataResultEntity.getCurDate());
calendar.add(Calendar.MINUTE, -5);
DataResultEntity lastData = dataResultMapper.selectDataResult(sdf1.format(calendar.getTime()),dataResultEntity.getDeviceAddr(),dataResultEntity.getDeviceType());
DataResultEntity data=new DataResultEntity(); DataResultEntity data=new DataResultEntity();
data.setDeviceAddr(dataResultEntity.getDeviceAddr()); //通讯地址 data.setDeviceAddr(dataResultEntity.getDeviceAddr()); //通讯地址
data.setDeviceType(dataResultEntity.getDeviceType()); //设备类型 data.setDeviceType(dataResultEntity.getDeviceType()); //设备类型
@ -73,22 +87,30 @@ public class DataResultServiceImpl implements DataResultService {
curValue=dataResultEntity.getCurValue(); curValue=dataResultEntity.getCurValue();
data.setBuildingId(deviceInstallEntity.getBuildingId()); //楼栋编号 data.setBuildingId(deviceInstallEntity.getBuildingId()); //楼栋编号
data.setRatio(ratio); //倍率 data.setRatio(ratio); //倍率
lastValue=deviceInstallEntity.getLastValue(); //上次读数 if (lastData!=null){
data.setLastDate(lastData.getCurDate()); //上次抄表日期
data.setLastValue(lastData.getCurValue()); //上次读数
} else {
lastValue = deviceInstallEntity.getLastValue(); //上次读数
if (deviceInstallEntity.getLastDate()!=null){ //上次抄表日期
String lastDate=sdf1.format(deviceInstallEntity.getLastDate());
data.setLastDate(sdf1.parse(lastDate));
}else{
String lastDate=sdf1.format(date);
data.setLastDate(sdf1.parse(lastDate));
}
data.setLastValue(lastValue);
}
calcValue=(dataResultEntity.getCurValue()-lastValue)*ratio; //计算用量 calcValue=(dataResultEntity.getCurValue()-lastValue)*ratio; //计算用量
DecimalFormat df = new DecimalFormat("0.000"); // 使用时
calcValue=Double.parseDouble(df.format(calcValue)); calcValue = Double.parseDouble(DECIMAL_FORMAT.format(calcValue));
data.setCalcValue(calcValue); //用量 data.setCalcValue(calcValue); //用量
if (deviceInstallEntity.getLastDate()!=null){ //上次抄表日期
String lastDate=sdf1.format(deviceInstallEntity.getLastDate());
data.setLastDate(sdf1.parse(lastDate));
}else{
String lastDate=sdf1.format(date);
data.setLastDate(sdf1.parse(lastDate));
}
data.setLastValue(lastValue);
//判断读数,并保存数据 //判断读数,并保存数据
if (deviceInstallEntity.getLastDate() == null) {
deviceInstallEntity.setLastDate(date);
}
days=(int)ExchangeStringUtil.daysBetween(dataResultEntity.getCurDate(),deviceInstallEntity.getLastDate()); //计算相差天数 days=(int)ExchangeStringUtil.daysBetween(dataResultEntity.getCurDate(),deviceInstallEntity.getLastDate()); //计算相差天数
if (calcValue>=0 && calcValue<=dayValue){ if (calcValue>=0 && calcValue<=dayValue){
dataResultMapper.saveDataResult(data); //插入新的记录 dataResultMapper.saveDataResult(data); //插入新的记录
@ -141,6 +163,42 @@ public class DataResultServiceImpl implements DataResultService {
} }
} }
/**
* 将时间格式化为五分钟间隔
* 例如09:01:02 -> 09:05:00, 09:06:30 -> 09:10:00
* @param originalDate 原始时间
* @return 格式化后的时间
*/
private Date formatToFiveMinuteInterval(Date originalDate) {
if (originalDate == null) {
return new Date();
}
Calendar calendar = getInstance();
calendar.setTime(originalDate);
int minutes = calendar.get(MINUTE);
int seconds = calendar.get(SECOND);
int milliseconds = calendar.get(MILLISECOND);
// 计算下一个五分钟节点
int nextFiveMinute = ((minutes / 5) + 1) * 5;
// 如果超过55分钟,则进位到下一小时
if (nextFiveMinute >= 60) {
calendar.add(HOUR_OF_DAY, 1);
calendar.set(MINUTE, 0);
} else {
calendar.set(MINUTE, nextFiveMinute);
}
// 秒和毫秒设为0
calendar.set(SECOND, 0);
calendar.set(MILLISECOND, 0);
return calendar.getTime();
}
@Override @Override
public void updateDataResult(DataResultEntity dataResultEntity) { public void updateDataResult(DataResultEntity dataResultEntity) {
dataResultMapper.updateDataResult(dataResultEntity); dataResultMapper.updateDataResult(dataResultEntity);

112
user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java

@ -1,22 +1,26 @@
package com.mh.user.service.impl; package com.mh.user.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.mh.common.http.HttpResult; import com.mh.common.http.HttpResult;
import com.mh.common.utils.StringUtils; import com.mh.common.utils.StringUtils;
import com.mh.user.constants.Constant; import com.mh.user.constants.Constant;
import com.mh.user.entity.ControlSetEntity; import com.mh.user.entity.*;
import com.mh.user.entity.DeviceCodeParamEntity; import com.mh.user.mapper.CollectionParamsManageMapper;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.entity.PumpSetEntity;
import com.mh.user.model.DeviceModel; import com.mh.user.model.DeviceModel;
import com.mh.user.model.SanShiFengDatas;
import com.mh.user.model.SanShiFengReceiver;
import com.mh.user.model.SerialPortModel; import com.mh.user.model.SerialPortModel;
import com.mh.user.serialport.SerialPortSingle2; import com.mh.user.serialport.SerialPortSingle2;
import com.mh.user.service.*; import com.mh.user.service.*;
import com.mh.user.utils.DateUtil;
import com.mh.user.utils.ExchangeStringUtil; import com.mh.user.utils.ExchangeStringUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -43,6 +47,70 @@ public class DeviceControlServiceImpl implements DeviceControlService {
@Resource @Resource
private ControlSetService controlSetService; private ControlSetService controlSetService;
@Resource
private CollectionParamsManageMapper collectionParamsManageMapper;
@Override
public String getSn(SerialPortModel serialPortModel) {
return collectionParamsManageMapper.selectSn(serialPortModel.getCpmId());
}
@Override
public boolean isMqttControl(List<SerialPortModel> params) {
if (!params.isEmpty()) {
for (SerialPortModel serialPortModel : params) {
// 判断是否是mqtt通讯
String communicationType = collectionParamsManageMapper.selectCommunicationType(serialPortModel.getCpmId());
if ("mqtt".equals(communicationType)) {
return true;
}
}
}
return false;
}
@Override
public String operationDevice(SerialPortModel params) {
// 拼接发送的报文
SanShiFengReceiver<SanShiFengDatas> sendData = new SanShiFengReceiver<>();
try {
List<SanShiFengDatas> advantechDatas = getAdvantechDatas(params);
if (null == advantechDatas) {
return Constant.FAIL;
}
sendData.setDatas(advantechDatas);
sendData.setTime(DateUtil.dateToString(new Date(), "yyyy-MM-dd HH:mm:ss"));
// 获取plcName
String plcName = collectionParamsManageMapper.selectPlcName(params.getCpmId());
sendData.setPlcName(plcName);
} catch (Exception e) {
log.error("发送mqtt控制设备指令失败", e);
return Constant.FAIL;
}
return JSONObject.toJSONString(sendData);
}
public List<SanShiFengDatas> getAdvantechDatas(SerialPortModel params) {
List<SanShiFengDatas> advantechDatas = new ArrayList<>();
String dataValue = params.getDataValue();
// 获取报文类型
// 获取报文其他信息
String otherName = "";
// 从数据库id获取设备名称
CollectionParamsManageEntity collectionParamsManage = collectionParamsManageMapper.selectById(params.getCpmId());
if (null != collectionParamsManage) {
otherName = collectionParamsManage.getOtherName();
} else {
return null;
}
// 发送报文
SanShiFengDatas data = new SanShiFengDatas();
data.setName(otherName);
data.setValue(dataValue);
advantechDatas.add(data);
return advantechDatas;
}
@Override @Override
public String readOrWriteDevice(List<SerialPortModel> params, String type) { public String readOrWriteDevice(List<SerialPortModel> params, String type) {
try { try {
@ -159,7 +227,7 @@ public class DeviceControlServiceImpl implements DeviceControlService {
deviceCodeParam.setFunCode("10"); deviceCodeParam.setFunCode("10");
deviceCodeParam.setRegisterAddr("010C"); deviceCodeParam.setRegisterAddr("010C");
rtData = serialPortSingle.serialPortSend(deviceCodeParam); rtData = serialPortSingle.serialPortSend(deviceCodeParam);
} else if (!StringUtils.isBlank(brand) && brand.equals("蒙浩") && !rtData.equals(Constant.FAIL) && deviceCodeParam.getRegisterAddr().equals("0000")) { } else if (!StringUtils.isBlank(brand) && brand.equals("蒙浩") && !rtData.equals(Constant.FAIL) && deviceCodeParam.getRegisterAddr().equals("0000")) {
log.error("进入蒙浩时控控制指令发送"); log.error("进入蒙浩时控控制指令发送");
// 需要继续发送指令 // 需要继续发送指令
deviceCodeParam.setFunCode("10"); deviceCodeParam.setFunCode("10");
@ -402,8 +470,8 @@ public class DeviceControlServiceImpl implements DeviceControlService {
deviceCodeParam.setFunCode("06"); deviceCodeParam.setFunCode("06");
String time1 = split[1].substring(0, 2); String time1 = split[1].substring(0, 2);
String time2 = split[1].substring(3, 5); String time2 = split[1].substring(3, 5);
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
} }
break; break;
case "timeSetClose1": case "timeSetClose1":
@ -414,8 +482,8 @@ public class DeviceControlServiceImpl implements DeviceControlService {
deviceCodeParam.setFunCode("06"); deviceCodeParam.setFunCode("06");
String time1 = split[1].substring(0, 2); String time1 = split[1].substring(0, 2);
String time2 = split[1].substring(3, 5); String time2 = split[1].substring(3, 5);
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
} }
break; break;
case "timeSetOpen2": case "timeSetOpen2":
@ -426,8 +494,8 @@ public class DeviceControlServiceImpl implements DeviceControlService {
deviceCodeParam.setFunCode("06"); deviceCodeParam.setFunCode("06");
String time1 = split[1].substring(0, 2); String time1 = split[1].substring(0, 2);
String time2 = split[1].substring(3, 5); String time2 = split[1].substring(3, 5);
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
} }
break; break;
case "timeSetClose2": case "timeSetClose2":
@ -438,8 +506,8 @@ public class DeviceControlServiceImpl implements DeviceControlService {
deviceCodeParam.setFunCode("06"); deviceCodeParam.setFunCode("06");
String time1 = split[1].substring(0, 2); String time1 = split[1].substring(0, 2);
String time2 = split[1].substring(3, 5); String time2 = split[1].substring(3, 5);
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
} }
break; break;
case "timeSetOpen3": case "timeSetOpen3":
@ -450,8 +518,8 @@ public class DeviceControlServiceImpl implements DeviceControlService {
deviceCodeParam.setFunCode("06"); deviceCodeParam.setFunCode("06");
String time1 = split[1].substring(0, 2); String time1 = split[1].substring(0, 2);
String time2 = split[1].substring(3, 5); String time2 = split[1].substring(3, 5);
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
} }
break; break;
case "timeSetClose3": case "timeSetClose3":
@ -462,8 +530,8 @@ public class DeviceControlServiceImpl implements DeviceControlService {
deviceCodeParam.setFunCode("06"); deviceCodeParam.setFunCode("06");
String time1 = split[1].substring(0, 2); String time1 = split[1].substring(0, 2);
String time2 = split[1].substring(3, 5); String time2 = split[1].substring(3, 5);
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
} }
break; break;
case "timeSetOpen4": case "timeSetOpen4":
@ -474,8 +542,8 @@ public class DeviceControlServiceImpl implements DeviceControlService {
deviceCodeParam.setFunCode("06"); deviceCodeParam.setFunCode("06");
String time1 = split[1].substring(0, 2); String time1 = split[1].substring(0, 2);
String time2 = split[1].substring(3, 5); String time2 = split[1].substring(3, 5);
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
} }
break; break;
case "timeSetClose4": case "timeSetClose4":
@ -486,8 +554,8 @@ public class DeviceControlServiceImpl implements DeviceControlService {
deviceCodeParam.setFunCode("06"); deviceCodeParam.setFunCode("06");
String time1 = split[1].substring(0, 2); String time1 = split[1].substring(0, 2);
String time2 = split[1].substring(3, 5); String time2 = split[1].substring(3, 5);
deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); deviceCodeParam.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1)*60 + Integer.parseInt(time2))); serialPortModel.setDataValue(String.valueOf(Integer.parseInt(time1) * 60 + Integer.parseInt(time2)));
} }
break; break;
case "channelSet": case "channelSet":
@ -500,7 +568,7 @@ public class DeviceControlServiceImpl implements DeviceControlService {
break; break;
case "weekSet": case "weekSet":
// 星期设置 // 星期设置
registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(24 + (scene-1) * 18)), 4); registerStr = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(24 + (scene - 1) * 18)), 4);
if (Constant.WRITE.equals(type)) { if (Constant.WRITE.equals(type)) {
String dataValue = ExchangeStringUtil.addZeroForNum(deviceCodeParam.getDataValue(), 8); String dataValue = ExchangeStringUtil.addZeroForNum(deviceCodeParam.getDataValue(), 8);
dataValue = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.parseByte2HexStr(dataValue), 4); dataValue = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.parseByte2HexStr(dataValue), 4);

5
user-service/src/main/java/com/mh/user/service/impl/GatewayManageServiceImpl.java

@ -113,4 +113,9 @@ public class GatewayManageServiceImpl implements GatewayManageService {
public void updateGatewayManageOnlineBySn(String sn, int grade) { public void updateGatewayManageOnlineBySn(String sn, int grade) {
gatewayManageMapper.updateGatewayManageOnlineBySn(sn, grade); gatewayManageMapper.updateGatewayManageOnlineBySn(sn, grade);
} }
@Override
public String queryBuildingIdBySn(String sn) {
return gatewayManageMapper.queryBuildingIdBySn(sn);
}
} }

410
user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java

@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
@ -56,6 +57,8 @@ public class NowDataServiceImpl implements NowDataService {
@Qualifier("gatewayManageMapper") @Qualifier("gatewayManageMapper")
@Autowired @Autowired
private GatewayManageMapper gatewayManageMapper; private GatewayManageMapper gatewayManageMapper;
@Autowired
private CollectionParamsManageMapper collectionParamsManageMapper;
@Override @Override
public void updateMultiNowData(NowDataEntity nowDataEntity) { public void updateMultiNowData(NowDataEntity nowDataEntity) {
@ -110,8 +113,8 @@ public class NowDataServiceImpl implements NowDataService {
@Override @Override
public NowDataEntity queryNowDataByPumpName(String buildingId, String buildingName, String deviceAddr, String deviceName) { public NowDataEntity queryNowDataByPumpName(String buildingId, String buildingName, String deviceAddr, String deviceName) {
int count = nowDataMapper.selectNowDataByPumName(buildingId,deviceAddr,deviceName); int count = nowDataMapper.selectNowDataByPumName(buildingId, deviceAddr, deviceName);
if (count==0){ if (count == 0) {
NowDataEntity nowDataEntity = new NowDataEntity(); NowDataEntity nowDataEntity = new NowDataEntity();
nowDataEntity.setPumpId(deviceAddr); nowDataEntity.setPumpId(deviceAddr);
nowDataEntity.setPumpName(deviceName); nowDataEntity.setPumpName(deviceName);
@ -120,7 +123,7 @@ public class NowDataServiceImpl implements NowDataService {
nowDataMapper.saveNowData(nowDataEntity); nowDataMapper.saveNowData(nowDataEntity);
return nowDataEntity; return nowDataEntity;
} }
return nowDataMapper.queryNowDataByPumpName(buildingId,deviceAddr,deviceName); return nowDataMapper.queryNowDataByPumpName(buildingId, deviceAddr, deviceName);
} }
@Override @Override
@ -130,94 +133,94 @@ public class NowDataServiceImpl implements NowDataService {
//保存热泵采集数据 //保存热泵采集数据
@Override @Override
public void saveNowHistoryData(String pumpId, String deviceType, String strData,String dataType,String buildingId) { public void saveNowHistoryData(String pumpId, String deviceType, String strData, String dataType, String buildingId) {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date(); Date date = new Date();
String strDate=sdf1.format(date); String strDate = sdf1.format(date);
strDate=strDate.substring(0,13)+":00:00"; strDate = strDate.substring(0, 13) + ":00:00";
NowDataEntity data=new NowDataEntity(); NowDataEntity data = new NowDataEntity();
try{ try {
if (dataType.equals("tempSet")){ //温度设定 if (dataType.equals("tempSet")) { //温度设定
data.setTempSet(strData); data.setTempSet(strData);
}else if (dataType.equals("waterTemp")){ //水箱水温 } else if (dataType.equals("waterTemp")) { //水箱水温
data.setWaterTemp(strData); data.setWaterTemp(strData);
}else if (dataType.equals("runState")){ //运行状态 } else if (dataType.equals("runState")) { //运行状态
data.setRunState(strData); data.setRunState(strData);
}else if (dataType.equals("isFault")){ //是否故障 } else if (dataType.equals("isFault")) { //是否故障
data.setIsFault(strData); data.setIsFault(strData);
} }
//从安装表获取设备信息 //从安装表获取设备信息
DeviceInstallEntity deviceInstallEntity=deviceInstallMapper.selectDevice(pumpId,deviceType,buildingId); DeviceInstallEntity deviceInstallEntity = deviceInstallMapper.selectDevice(pumpId, deviceType, buildingId);
//获取对应水箱信息 //获取对应水箱信息
DeviceModel tank=deviceFloorMapper.selectTankName(buildingId,"水箱",pumpId); DeviceModel tank = deviceFloorMapper.selectTankName(buildingId, "水箱", pumpId);
if (tank!=null){ if (tank != null) {
data.setTankId(String.valueOf(tank.getId())); //对应水箱编号 data.setTankId(String.valueOf(tank.getId())); //对应水箱编号
data.setTankName(tank.getDeviceName()); //对应水箱名称 data.setTankName(tank.getDeviceName()); //对应水箱名称
} }
String buildingName=buildingService.queryBuildingName(buildingId); String buildingName = buildingService.queryBuildingName(buildingId);
//判断实时表是否有记录 //判断实时表是否有记录
int r1 = nowDataMapper.selectNowDataCount(deviceInstallEntity.getBuildingId(),pumpId);//判断now_data表是否存在记录 int r1 = nowDataMapper.selectNowDataCount(deviceInstallEntity.getBuildingId(), pumpId);//判断now_data表是否存在记录
if(r1==0){ if (r1 == 0) {
data.setPumpId(pumpId); //通讯地址 data.setPumpId(pumpId); //通讯地址
data.setPumpName(deviceInstallEntity.getDeviceName()); //通讯地址 data.setPumpName(deviceInstallEntity.getDeviceName()); //通讯地址
data.setBuildingId(deviceInstallEntity.getBuildingId()); data.setBuildingId(deviceInstallEntity.getBuildingId());
data.setBuildingName(buildingName); data.setBuildingName(buildingName);
nowDataMapper.saveNowData(data); nowDataMapper.saveNowData(data);
} else { } else {
NowDataEntity data1=nowDataMapper.selectNowData(deviceInstallEntity.getBuildingId(),pumpId); NowDataEntity data1 = nowDataMapper.selectNowData(deviceInstallEntity.getBuildingId(), pumpId);
if (data1!=null){ if (data1 != null) {
if (dataType.equals("tempSet")){ //温度设定 if (dataType.equals("tempSet")) { //温度设定
data1.setTempSet(strData); data1.setTempSet(strData);
}else if (dataType.equals("waterTemp")){ //水箱水温 } else if (dataType.equals("waterTemp")) { //水箱水温
data1.setWaterTemp(strData); data1.setWaterTemp(strData);
}else if (dataType.equals("runState")){ //运行状态 } else if (dataType.equals("runState")) { //运行状态
data1.setRunState(strData); data1.setRunState(strData);
}else if (dataType.equals("isFault")){ //是否故障 } else if (dataType.equals("isFault")) { //是否故障
data1.setIsFault(strData); data1.setIsFault(strData);
} }
nowDataMapper.updateNowData(data1); nowDataMapper.updateNowData(data1);
} }
} }
//判断历史表是否有记录 //判断历史表是否有记录
int r2 = nowDataMapper.selectHistoryDataCount(strDate,deviceInstallEntity.getBuildingId(),pumpId);//判断now_data表是否存在记录 int r2 = nowDataMapper.selectHistoryDataCount(strDate, deviceInstallEntity.getBuildingId(), pumpId);//判断now_data表是否存在记录
if (r2==0){ if (r2 == 0) {
data.setPumpId(pumpId); //通讯地址 data.setPumpId(pumpId); //通讯地址
data.setPumpName(deviceInstallEntity.getDeviceName()); //通讯地址 data.setPumpName(deviceInstallEntity.getDeviceName()); //通讯地址
data.setBuildingId(deviceInstallEntity.getBuildingId()); data.setBuildingId(deviceInstallEntity.getBuildingId());
data.setBuildingName(buildingName); data.setBuildingName(buildingName);
data.setCurDate(strDate); data.setCurDate(strDate);
nowDataMapper.saveHistoryData(data); nowDataMapper.saveHistoryData(data);
}else { } else {
NowDataEntity data2=nowDataMapper.selectHistoryData(strDate,deviceInstallEntity.getBuildingId(),pumpId); NowDataEntity data2 = nowDataMapper.selectHistoryData(strDate, deviceInstallEntity.getBuildingId(), pumpId);
if (data2!=null){ if (data2 != null) {
if (dataType.equals("tempSet")){ //温度设定 if (dataType.equals("tempSet")) { //温度设定
data2.setTempSet(strData); data2.setTempSet(strData);
}else if (dataType.equals("waterTemp")){ //水箱水温 } else if (dataType.equals("waterTemp")) { //水箱水温
data2.setWaterTemp(strData); data2.setWaterTemp(strData);
}else if (dataType.equals("runState")){ //运行状态 } else if (dataType.equals("runState")) { //运行状态
data2.setRunState(strData); data2.setRunState(strData);
}else if (dataType.equals("isFault")){ //是否故障 } else if (dataType.equals("isFault")) { //是否故障
data2.setIsFault(strData); data2.setIsFault(strData);
} }
nowDataMapper.updateHistoryData(data2); nowDataMapper.updateHistoryData(data2);
} }
} }
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
//非热泵温控、状态检测数据 //非热泵温控、状态检测数据
@Override @Override
public void saveNowHistoryData2(String deviceAddr, String deviceType, String strData, String dataType,String buildingId) { public void saveNowHistoryData2(String deviceAddr, String deviceType, String strData, String dataType, String buildingId) {
NowDataEntity data=new NowDataEntity(); NowDataEntity data = new NowDataEntity();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date(); Date date = new Date();
String strDate=sdf1.format(date); String strDate = sdf1.format(date);
strDate=strDate.substring(0,13)+":00:00"; strDate = strDate.substring(0, 13) + ":00:00";
try{ try {
switch (dataType) { switch (dataType) {
case "tempSet": //温度设定 case "tempSet": //温度设定
data.setTempSet(strData); data.setTempSet(strData);
@ -239,28 +242,28 @@ public class NowDataServiceImpl implements NowDataService {
break; break;
} }
//从安装表获取设备信息 //从安装表获取设备信息
DeviceInstallEntity deviceInstallEntity=deviceInstallMapper.selectDevice(deviceAddr,deviceType,buildingId); DeviceInstallEntity deviceInstallEntity = deviceInstallMapper.selectDevice(deviceAddr, deviceType, buildingId);
String buildingName=buildingService.queryBuildingName(buildingId); String buildingName = buildingService.queryBuildingName(buildingId);
data.setBuildingName(buildingName); data.setBuildingName(buildingName);
// 获取项目名称 // 获取项目名称
String name = dealDataService.customName(); String name = dealDataService.customName();
if (deviceType.equals("温控") if (deviceType.equals("温控")
&& !name.contains(Constant.CUSTOM_NAME_HUAXIA) && !name.contains(Constant.CUSTOM_NAME_HUAXIA)
&& !name.contains(Constant.CUSTOM_NAME_HUARUAN) ) { && !name.contains(Constant.CUSTOM_NAME_HUARUAN)) {
log.error("进入到热泵1------------------------"); log.error("进入到热泵1------------------------");
//为了兼容旧系统,旧系统热泵信息保存在楼面表,从楼面表获取热泵资料 //为了兼容旧系统,旧系统热泵信息保存在楼面表,从楼面表获取热泵资料
PumpModel pump=deviceFloorMapper.selectDeviceId2("热泵",buildingId); PumpModel pump = deviceFloorMapper.selectDeviceId2("热泵", buildingId);
String pumpId="1"; String pumpId = "1";
String pumpName="热泵1"; String pumpName = "热泵1";
if (pump!=null){ if (pump != null) {
pumpId=pump.getPumpId(); pumpId = pump.getPumpId();
pumpName=pump.getPumpName(); pumpName = pump.getPumpName();
//获取对应水箱信息 //获取对应水箱信息
DeviceModel tank=deviceFloorMapper.selectTankName(buildingId,"水箱",pumpId); DeviceModel tank = deviceFloorMapper.selectTankName(buildingId, "水箱", pumpId);
if (tank!=null){ if (tank != null) {
data.setTankId(String.valueOf(tank.getId())); //对应水箱编号 data.setTankId(String.valueOf(tank.getId())); //对应水箱编号
data.setTankName(tank.getDeviceName()); //对应水箱名称 data.setTankName(tank.getDeviceName()); //对应水箱名称
}else{ } else {
data.setTankId("1"); //对应水箱编号 data.setTankId("1"); //对应水箱编号
data.setTankName("水箱1"); //对应水箱名称 data.setTankName("水箱1"); //对应水箱名称
} }
@ -272,68 +275,68 @@ public class NowDataServiceImpl implements NowDataService {
data.setCurDate(strDate); data.setCurDate(strDate);
//判断实时表是否有记录 //判断实时表是否有记录
int r1 = nowDataMapper.selectNowDataCount2(buildingId);//判断now_data表是否存在记录 int r1 = nowDataMapper.selectNowDataCount2(buildingId);//判断now_data表是否存在记录
if (r1==0){ if (r1 == 0) {
nowDataMapper.saveNowData(data); nowDataMapper.saveNowData(data);
}else { } else {
if (deviceType.equals("压变")) { if (deviceType.equals("压变")) {
String seat=deviceInstallService.selectSeat(deviceType,deviceAddr,buildingId); String seat = deviceInstallService.selectSeat(deviceType, deviceAddr, buildingId);
log.info("-------楼栋:"+buildingName+",类型:"+deviceType+",地址:"+deviceAddr+",区位:"+seat+",数值:"+strData+"------"); log.info("-------楼栋:" + buildingName + ",类型:" + deviceType + ",地址:" + deviceAddr + ",区位:" + seat + ",数值:" + strData + "------");
if (!StringUtils.isBlank(seat)){ if (!StringUtils.isBlank(seat)) {
nowDataMapper.nowDataWaterLevel(strData,seat,buildingId); nowDataMapper.nowDataWaterLevel(strData, seat, buildingId);
}else{ } else {
nowDataMapper.updateNowData2(data); nowDataMapper.updateNowData2(data);
} }
}else if (deviceType.equals("水位开关")){ } else if (deviceType.equals("水位开关")) {
String seat=deviceInstallService.selectSeat(deviceType,deviceAddr,buildingId); String seat = deviceInstallService.selectSeat(deviceType, deviceAddr, buildingId);
log.info("-------楼栋:"+buildingName+",类型:"+deviceType+",地址:"+deviceAddr+",区位:"+seat+",数值:"+strData+"------"); log.info("-------楼栋:" + buildingName + ",类型:" + deviceType + ",地址:" + deviceAddr + ",区位:" + seat + ",数值:" + strData + "------");
if (seat!=null){ if (seat != null) {
nowDataMapper.nowDataLevelSet(strData,seat,buildingId); nowDataMapper.nowDataLevelSet(strData, seat, buildingId);
}else{ } else {
nowDataMapper.updateNowData2(data); nowDataMapper.updateNowData2(data);
} }
}else{ } else {
nowDataMapper.updateNowData2(data); nowDataMapper.updateNowData2(data);
} }
} }
//判断历史表是否有记录 //判断历史表是否有记录
int r2 = nowDataMapper.selectHistoryDataCount2(strDate,buildingId);//判断history_Data表是否存在记录 int r2 = nowDataMapper.selectHistoryDataCount2(strDate, buildingId);//判断history_Data表是否存在记录
if (r2==0){ if (r2 == 0) {
nowDataMapper.saveHistoryData(data); nowDataMapper.saveHistoryData(data);
}else { } else {
if (deviceType.equals("压变")) { if (deviceType.equals("压变")) {
String seat=deviceInstallService.selectSeat(deviceType,deviceAddr,buildingId); String seat = deviceInstallService.selectSeat(deviceType, deviceAddr, buildingId);
if (!StringUtils.isBlank(seat)){ if (!StringUtils.isBlank(seat)) {
nowDataMapper.historyDataWaterLevel(strData,seat,buildingId,strDate); nowDataMapper.historyDataWaterLevel(strData, seat, buildingId, strDate);
log.info("------楼栋:"+buildingName+",历史记录压变区位:"+seat+"------"); log.info("------楼栋:" + buildingName + ",历史记录压变区位:" + seat + "------");
}else{ } else {
nowDataMapper.updateHistoryData2(data); nowDataMapper.updateHistoryData2(data);
} }
}else if (deviceType.equals("水位开关")){ } else if (deviceType.equals("水位开关")) {
String seat=deviceInstallService.selectSeat(deviceType,deviceAddr,buildingId); String seat = deviceInstallService.selectSeat(deviceType, deviceAddr, buildingId);
if (!StringUtils.isBlank(seat)){ if (!StringUtils.isBlank(seat)) {
nowDataMapper.historyDataLevelSet(strData,seat,buildingId,strDate); nowDataMapper.historyDataLevelSet(strData, seat, buildingId, strDate);
log.info("------楼栋:"+buildingName+",历史记录水位开关区位:"+seat+"------"); log.info("------楼栋:" + buildingName + ",历史记录水位开关区位:" + seat + "------");
}else{ } else {
nowDataMapper.updateHistoryData2(data); nowDataMapper.updateHistoryData2(data);
} }
}else{ } else {
nowDataMapper.updateHistoryData2(data); nowDataMapper.updateHistoryData2(data);
} }
} }
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
//非热泵温度变送器、状态检测相关数据 //非热泵温度变送器、状态检测相关数据
@Override @Override
public void saveNowHistoryData3(String pumpId, String deviceType, String strData,String dataType,String buildingId) { public void saveNowHistoryData3(String pumpId, String deviceType, String strData, String dataType, String buildingId) {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date(); Date date = new Date();
String strDate=sdf1.format(date); String strDate = sdf1.format(date);
strDate=strDate.substring(0,13)+":00:00"; strDate = strDate.substring(0, 13) + ":00:00";
NowDataEntity data=new NowDataEntity(); NowDataEntity data = new NowDataEntity();
try{ try {
switch (dataType) { switch (dataType) {
case "tempSet": //温度设定 case "tempSet": //温度设定
data.setTempSet(strData); data.setTempSet(strData);
@ -348,48 +351,48 @@ public class NowDataServiceImpl implements NowDataService {
data.setIsFault(strData); data.setIsFault(strData);
break; break;
} }
String buildingName=buildingService.queryBuildingName(buildingId); String buildingName = buildingService.queryBuildingName(buildingId);
//判断实时表是否有记录 //判断实时表是否有记录
int r1 = nowDataMapper.selectNowDataCount(buildingId,pumpId);//判断now_data表是否存在记录 int r1 = nowDataMapper.selectNowDataCount(buildingId, pumpId);//判断now_data表是否存在记录
if(r1==0){ if (r1 == 0) {
data.setPumpId(pumpId); //热泵编号 data.setPumpId(pumpId); //热泵编号
String pumpName="热泵"+pumpId; String pumpName = "热泵" + pumpId;
data.setPumpName(pumpName); //热泵名称 data.setPumpName(pumpName); //热泵名称
data.setBuildingId(buildingId); data.setBuildingId(buildingId);
data.setBuildingName(buildingName); data.setBuildingName(buildingName);
nowDataMapper.saveNowData(data); nowDataMapper.saveNowData(data);
} else { } else {
NowDataEntity data1=nowDataMapper.selectNowData(buildingId,pumpId); NowDataEntity data1 = nowDataMapper.selectNowData(buildingId, pumpId);
if (data1!=null){ if (data1 != null) {
if (dataType.equals("tempSet")){ //温度设定 if (dataType.equals("tempSet")) { //温度设定
data1.setTempSet(strData); data1.setTempSet(strData);
} else if (dataType.equals("waterTemp")){ //水箱水温 } else if (dataType.equals("waterTemp")) { //水箱水温
BigDecimal bigDecimal = new BigDecimal(strData); BigDecimal bigDecimal = new BigDecimal(strData);
if (bigDecimal.compareTo(new BigDecimal(0)) >= 0 if (bigDecimal.compareTo(new BigDecimal(0)) >= 0
&& bigDecimal.compareTo(new BigDecimal(100)) <= 0) { && bigDecimal.compareTo(new BigDecimal(100)) <= 0) {
data1.setWaterTemp(strData); data1.setWaterTemp(strData);
} }
}else if (dataType.equals("runState")){ //运行状态 } else if (dataType.equals("runState")) { //运行状态
data1.setRunState(strData); data1.setRunState(strData);
}else if (dataType.equals("isFault")){ //是否故障 } else if (dataType.equals("isFault")) { //是否故障
data1.setIsFault(strData); data1.setIsFault(strData);
} }
nowDataMapper.updateNowData(data1); nowDataMapper.updateNowData(data1);
} }
} }
//判断历史表是否有记录 //判断历史表是否有记录
int r2 = nowDataMapper.selectHistoryDataCount(strDate,buildingId,pumpId);//判断now_data表是否存在记录 int r2 = nowDataMapper.selectHistoryDataCount(strDate, buildingId, pumpId);//判断now_data表是否存在记录
if (r2==0){ if (r2 == 0) {
data.setPumpId(pumpId); //热泵编号 data.setPumpId(pumpId); //热泵编号
String pumpName="热泵"+pumpId; String pumpName = "热泵" + pumpId;
data.setPumpName(pumpName); //热泵名称 data.setPumpName(pumpName); //热泵名称
data.setBuildingId(buildingId); data.setBuildingId(buildingId);
data.setBuildingName(buildingName); data.setBuildingName(buildingName);
data.setCurDate(strDate); data.setCurDate(strDate);
nowDataMapper.saveHistoryData(data); nowDataMapper.saveHistoryData(data);
}else { } else {
NowDataEntity data2=nowDataMapper.selectHistoryData(strDate,buildingId,pumpId); NowDataEntity data2 = nowDataMapper.selectHistoryData(strDate, buildingId, pumpId);
if (data2!=null){ if (data2 != null) {
switch (dataType) { switch (dataType) {
case "tempSet": //温度设定 case "tempSet": //温度设定
data2.setTempSet(strData); data2.setTempSet(strData);
@ -407,7 +410,7 @@ public class NowDataServiceImpl implements NowDataService {
nowDataMapper.updateHistoryData(data2); nowDataMapper.updateHistoryData(data2);
} }
} }
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -422,22 +425,138 @@ public class NowDataServiceImpl implements NowDataService {
nowDataMapper.updateTempSet(buildingId); nowDataMapper.updateTempSet(buildingId);
nowDataMapper.updateLevelSet(buildingId); nowDataMapper.updateLevelSet(buildingId);
List<NowDataEntity> nowDataEntities = nowDataMapper.queryNowData(buildingId); List<NowDataEntity> nowDataEntities = nowDataMapper.queryNowData(buildingId);
// 处理压变设备离线状态
handlePressureTransmitterOfflineStatus(buildingId, nowDataEntities);
// 处理循环泵状态
handlePumpStatus(buildingId, nowDataEntities, "循环泵",
new HashMap<String, String>() {{
put("循环泵1", "setCirculateState");
put("循环泵2", "setCirculateState2");
}});
// 处理回水泵状态
handlePumpStatus(buildingId, nowDataEntities, "回水泵",
new HashMap<String, String>() {{
put("回水泵1", "setBackWaterState");
put("回水泵2", "setBackWaterState2");
}});
// 处理压力值和网关
handlePressureAndGatewayStatus(buildingId, nowDataEntities, "系统", "5");
return nowDataEntities;
}
private void handlePressureAndGatewayStatus(String buildingId, List<NowDataEntity> nowDataEntities, String deviceType, String paramTypeId) {
List<DeviceInstallEntity> pumpList = deviceInstallMapper.selectOfflineDevice(buildingId, deviceType);
for (DeviceInstallEntity pump : pumpList) {
CollectionParamsManageEntity pressure = collectionParamsManageMapper.selectByDeviceIdAndParamTypeId(pump.getId(), paramTypeId);
if (pressure != null) {
String pressureValue = pressure.getCurValue().setScale(1, RoundingMode.HALF_UP).toString();
if (!StringUtils.isBlank(pressureValue)) {
nowDataEntities.stream()
.filter(nowDataEntity -> buildingId.equals(nowDataEntity.getBuildingId()))
.forEach(nowDataEntity -> nowDataEntity.setPressure(pressureValue));
String dataCom = pump.getDataCom();
if (!StringUtils.isBlank(dataCom)) {
int gwState = gatewayManageMapper.queryGatewayByDataCom(dataCom);
nowDataEntities.stream()
.filter(nowDataEntity -> buildingId.equals(nowDataEntity.getBuildingId()))
.forEach(nowDataEntity -> nowDataEntity.setGwState(gwState == 0 ? "在线" : "离线"));
}
break;
}
}
}
}
/**
* 处理压变设备离线状态
*/
private void handlePressureTransmitterOfflineStatus(String buildingId, List<NowDataEntity> nowDataEntities) {
List<DeviceInstallEntity> list = deviceInstallMapper.selectOfflineDevice(buildingId, "压变"); List<DeviceInstallEntity> list = deviceInstallMapper.selectOfflineDevice(buildingId, "压变");
if (list != null && list.size() > 0) { if (list != null && !list.isEmpty()) {
for (DeviceInstallEntity deviceInstallEntity : list) { for (DeviceInstallEntity deviceInstallEntity : list) {
if (!DateUtil.isToday(deviceInstallEntity.getLastDate())) { if (!DateUtil.isToday(deviceInstallEntity.getLastDate())) {
// 使用stream流nowDataEntities,批量更新waterLevel="离线"
nowDataEntities.stream() nowDataEntities.stream()
.filter(nowDataEntity -> buildingId.equals(nowDataEntity.getBuildingId())) .filter(nowDataEntity -> buildingId.equals(nowDataEntity.getBuildingId()))
.forEach(nowDataEntity -> nowDataEntity.setWaterLevel("离线")); .forEach(nowDataEntity -> nowDataEntity.setWaterLevel("离线"));
break;
}
}
}
}
/**
* 处理泵设备状态
*/
private void handlePumpStatus(String buildingId, List<NowDataEntity> nowDataEntities,
String deviceType, Map<String, String> pumpMethodMapping) {
List<DeviceInstallEntity> pumpList = deviceInstallMapper.selectOfflineDevice(buildingId, deviceType);
for (DeviceInstallEntity pump : pumpList) {
for (Map.Entry<String, String> entry : pumpMethodMapping.entrySet()) {
String pumpIdentifier = entry.getKey();
String methodName = entry.getValue();
if (pump.getDeviceName().contains(pumpIdentifier)) {
updatePumpStatus(nowDataEntities, buildingId, pump, methodName);
break;
} }
} }
} }
return nowDataEntities;
} }
/**
* 更新单个泵的状态
*/
private void updatePumpStatus(List<NowDataEntity> nowDataEntities, String buildingId,
DeviceInstallEntity pump, String setterMethodName) {
try {
// 查询对应collectionParamManage参数
CollectionParamsManageEntity runState = collectionParamsManageMapper
.selectByDeviceIdAndParamTypeId(pump.getId(), "2");
String status;
if (DateUtil.isToday(runState.getCurTime())) {
status = runState.getCurValue().intValue() == 1 ? "运行" : "不运行";
} else {
status = "离线";
}
// 使用反射调用对应setter方法
nowDataEntities.stream()
.filter(nowDataEntity -> buildingId.equals(nowDataEntity.getBuildingId()))
.forEach(nowDataEntity -> {
try {
nowDataEntity.getClass()
.getMethod(setterMethodName, String.class)
.invoke(nowDataEntity, status);
} catch (Exception e) {
// 记录日志或适当处理异常
}
});
} catch (Exception e) {
// 处理查询异常,设置为离线状态
nowDataEntities.stream()
.filter(nowDataEntity -> buildingId.equals(nowDataEntity.getBuildingId()))
.forEach(nowDataEntity -> {
try {
nowDataEntity.getClass()
.getMethod(setterMethodName, String.class)
.invoke(nowDataEntity, "离线");
} catch (Exception ex) {
// 记录日志或适当处理异常
}
});
}
}
@Override @Override
public NowDataEntity queryNowDataByPump(String buildingId,String pumpId) { public NowDataEntity queryNowDataByPump(String buildingId, String pumpId) {
// 查询当前楼栋离线的设备 // 查询当前楼栋离线的设备
List<DeviceInstallEntity> list = deviceInstallMapper.selectOfflineDevice(buildingId, "压变"); List<DeviceInstallEntity> list = deviceInstallMapper.selectOfflineDevice(buildingId, "压变");
NowDataEntity nowDataEntity = nowDataMapper.queryNowDataByPump(buildingId, pumpId); NowDataEntity nowDataEntity = nowDataMapper.queryNowDataByPump(buildingId, pumpId);
@ -462,28 +581,28 @@ public class NowDataServiceImpl implements NowDataService {
} }
@Override @Override
public List<NowDataEntity> queryHistoryData(String curDate, String buildingId,String pumpId,String tankId, int page, int limit) { public List<NowDataEntity> queryHistoryData(String curDate, String buildingId, String pumpId, String tankId, int page, int limit) {
return nowDataMapper.queryHistoryData(curDate,buildingId,pumpId,tankId,page,limit); return nowDataMapper.queryHistoryData(curDate, buildingId, pumpId, tankId, page, limit);
} }
@Override @Override
public int getHistoryDataCount(String curDate, String buildingId,String pumpId,String tankId, int page, int limit) { public int getHistoryDataCount(String curDate, String buildingId, String pumpId, String tankId, int page, int limit) {
return nowDataMapper.getHistoryDataCount(curDate,buildingId,pumpId,tankId,page,limit); return nowDataMapper.getHistoryDataCount(curDate, buildingId, pumpId, tankId, page, limit);
} }
@Override @Override
public List<WaterLevelEntity> queryWaterLevel(String curDate, String buildingID, int page, int limit) { public List<WaterLevelEntity> queryWaterLevel(String curDate, String buildingID, int page, int limit) {
return nowDataMapper.queryWaterLevel(curDate,buildingID,page,limit); return nowDataMapper.queryWaterLevel(curDate, buildingID, page, limit);
} }
@Override @Override
public int getWaterLevelCount(String curDate, String buildingID) { public int getWaterLevelCount(String curDate, String buildingID) {
return nowDataMapper.getWaterLevelCount(curDate,buildingID); return nowDataMapper.getWaterLevelCount(curDate, buildingID);
} }
@Override @Override
public List<WaterLevelModel> queryWaterLevelByTime(String curDate,int page,int limit) { public List<WaterLevelModel> queryWaterLevelByTime(String curDate, int page, int limit) {
return nowDataMapper.queryWaterLevelByTime(curDate,page,limit); return nowDataMapper.queryWaterLevelByTime(curDate, page, limit);
} }
@Override @Override
@ -508,36 +627,36 @@ public class NowDataServiceImpl implements NowDataService {
} }
@Override @Override
public String selectSingleTemp(String pumpId,String buildingId) { public String selectSingleTemp(String pumpId, String buildingId) {
return nowDataMapper.selectSingleTemp(pumpId,buildingId); return nowDataMapper.selectSingleTemp(pumpId, buildingId);
} }
//从监视表查询热泵运行状态 //从监视表查询热泵运行状态
@Override @Override
public String selectStateCount(String buildingId) { public String selectStateCount(String buildingId) {
int count=nowDataMapper.selectStateCount(buildingId); int count = nowDataMapper.selectStateCount(buildingId);
String state=""; String state = "";
if (count==0){ if (count == 0) {
state="不运行"; state = "不运行";
}else{ } else {
state="运行"; state = "运行";
} }
return state; return state;
} }
@Override @Override
public String selectState(String buildingId, String pumpId) { public String selectState(String buildingId, String pumpId) {
return nowDataMapper.selectState(buildingId,pumpId); return nowDataMapper.selectState(buildingId, pumpId);
} }
@Override @Override
public void upLevelSet(String buildingId, String levelSet) { public void upLevelSet(String buildingId, String levelSet) {
nowDataMapper.upLevelSet(buildingId,levelSet); nowDataMapper.upLevelSet(buildingId, levelSet);
} }
@Override @Override
public void upTempSet(String buildingId, String tempSet) { public void upTempSet(String buildingId, String tempSet) {
nowDataMapper.upTempSet(buildingId,tempSet); nowDataMapper.upTempSet(buildingId, tempSet);
} }
@Override @Override
@ -546,18 +665,18 @@ public class NowDataServiceImpl implements NowDataService {
} }
@Override @Override
public List<WaterTempEntity> queryWaterTemp(String buildingID, String curDate,int page,int limit) { public List<WaterTempEntity> queryWaterTemp(String buildingID, String curDate, int page, int limit) {
return nowDataMapper.queryWaterTemp(buildingID,curDate,page,limit); return nowDataMapper.queryWaterTemp(buildingID, curDate, page, limit);
} }
@Override @Override
public int queryWaterTempCount(String buildingID, String curDate) { public int queryWaterTempCount(String buildingID, String curDate) {
return nowDataMapper.queryWaterTempCount(buildingID,curDate); return nowDataMapper.queryWaterTempCount(buildingID, curDate);
} }
//查询所有楼栋每栋楼的平均温度 //查询所有楼栋每栋楼的平均温度
@Override @Override
public List<WaterTempEntity> queryWaterTemp2(String curDate,int page,int limit, int level, String buildingID) { public List<WaterTempEntity> queryWaterTemp2(String curDate, int page, int limit, int level, String buildingID) {
List<WaterTempEntity> waterTempEntityList = nowDataMapper.queryWaterTemp2(curDate, page, limit); List<WaterTempEntity> waterTempEntityList = nowDataMapper.queryWaterTemp2(curDate, page, limit);
// 根据level层级查询 // 根据level层级查询
if (level == 1) { if (level == 1) {
@ -568,6 +687,7 @@ public class NowDataServiceImpl implements NowDataService {
} }
return waterTempEntityList; return waterTempEntityList;
} }
//查询所有楼栋每栋楼的平均温度记录数 //查询所有楼栋每栋楼的平均温度记录数
@Override @Override
public int queryWaterTempCount2(String curDate, int level, String buildingID) { public int queryWaterTempCount2(String curDate, int level, String buildingID) {
@ -581,7 +701,7 @@ public class NowDataServiceImpl implements NowDataService {
try { try {
lockB.lock(); lockB.lock();
try { try {
nowDataMapper.proWaterTemp(curDate,buildingID,pumpID); nowDataMapper.proWaterTemp(curDate, buildingID, pumpID);
} finally { } finally {
lockB.unlock(); lockB.unlock();
} }
@ -613,11 +733,11 @@ public class NowDataServiceImpl implements NowDataService {
} }
@Override @Override
public void updateRunState(String buildingId, String pumpId,String strState, String buildingName) { public void updateRunState(String buildingId, String pumpId, String strState, String buildingName) {
DeviceInstallEntity deviceInstallEntity=deviceInstallMapper.selectDevice(pumpId,"热泵",buildingId); DeviceInstallEntity deviceInstallEntity = deviceInstallMapper.selectDevice(pumpId, "热泵", buildingId);
NowDataEntity data=new NowDataEntity(); NowDataEntity data = new NowDataEntity();
int r1 = nowDataMapper.selectNowDataCount(buildingId,pumpId);//判断now_data表是否存在记录 int r1 = nowDataMapper.selectNowDataCount(buildingId, pumpId);//判断now_data表是否存在记录
if(r1==0){ if (r1 == 0) {
data.setPumpId(pumpId); //通讯地址 data.setPumpId(pumpId); //通讯地址
data.setPumpName(deviceInstallEntity.getDeviceName()); //通讯地址 data.setPumpName(deviceInstallEntity.getDeviceName()); //通讯地址
data.setBuildingId(buildingId); data.setBuildingId(buildingId);
@ -625,22 +745,22 @@ public class NowDataServiceImpl implements NowDataService {
data.setRunState(strState); data.setRunState(strState);
nowDataMapper.saveNowData(data); nowDataMapper.saveNowData(data);
} }
nowDataMapper.updateRunState(buildingId,pumpId,strState); nowDataMapper.updateRunState(buildingId, pumpId, strState);
} }
@Override @Override
public void proPumpMinutes(String buildingId, String pumpId, String runState) { public void proPumpMinutes(String buildingId, String pumpId, String runState) {
nowDataMapper.proPumpMinutes(buildingId,pumpId,runState); nowDataMapper.proPumpMinutes(buildingId, pumpId, runState);
} }
@Override @Override
public List<PumpMinutesEntity> pumpMinutes(String startDate,String endDate, String buildingId, String pumpId, int page, int limit) { public List<PumpMinutesEntity> pumpMinutes(String startDate, String endDate, String buildingId, String pumpId, int page, int limit) {
return nowDataMapper.pumpMinutes(startDate,endDate,buildingId,pumpId,page,limit); return nowDataMapper.pumpMinutes(startDate, endDate, buildingId, pumpId, page, limit);
} }
@Override @Override
public int pumpMinutesCount(String startDate,String endDate, String buildingId, String pumpId) { public int pumpMinutesCount(String startDate, String endDate, String buildingId, String pumpId) {
return nowDataMapper.pumpMinutesCount(startDate,endDate,buildingId,pumpId); return nowDataMapper.pumpMinutesCount(startDate, endDate, buildingId, pumpId);
} }
@Override @Override

24
user-service/src/main/java/com/mh/user/service/impl/NowPublicDataServiceImpl.java

@ -1,11 +1,11 @@
package com.mh.user.service.impl; package com.mh.user.service.impl;
import com.mh.common.utils.StringUtils;
import com.mh.user.constants.Constant; import com.mh.user.constants.Constant;
import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.entity.NowPublicDataEntity; import com.mh.user.entity.NowPublicDataEntity;
import com.mh.user.mapper.BuildingMapper; import com.mh.user.mapper.*;
import com.mh.user.mapper.DeviceInstallMapper;
import com.mh.user.mapper.NowDataMapper;
import com.mh.user.mapper.NowPublicDataMapper;
import com.mh.user.model.TempModel; import com.mh.user.model.TempModel;
import com.mh.user.service.DealDataService; import com.mh.user.service.DealDataService;
import com.mh.user.service.NowPublicDataService; import com.mh.user.service.NowPublicDataService;
@ -14,6 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -39,6 +41,8 @@ public class NowPublicDataServiceImpl implements NowPublicDataService {
@Autowired @Autowired
private DealDataService dealDataService; private DealDataService dealDataService;
@Autowired
private CollectionParamsManageMapper collectionParamsManageMapper;
@Override @Override
public void saveNowPublicData(NowPublicDataEntity nowPublicDataEntity) { public void saveNowPublicData(NowPublicDataEntity nowPublicDataEntity) {
nowPublicDataMapper.saveNowPublicData(nowPublicDataEntity); nowPublicDataMapper.saveNowPublicData(nowPublicDataEntity);
@ -54,6 +58,18 @@ public class NowPublicDataServiceImpl implements NowPublicDataService {
NowPublicDataEntity nowPublicDataEntity = nowPublicDataMapper.queryNowPublicData(buildingId); NowPublicDataEntity nowPublicDataEntity = nowPublicDataMapper.queryNowPublicData(buildingId);
String maxTemp = nowDataMapper.selectMaxTemp(buildingId, null); String maxTemp = nowDataMapper.selectMaxTemp(buildingId, null);
nowPublicDataEntity.setUseWaterTemp(maxTemp); nowPublicDataEntity.setUseWaterTemp(maxTemp);
// 查询当前压力
List<DeviceInstallEntity> pumpList = deviceInstallMapper.selectOfflineDevice(buildingId, "系统");
for (DeviceInstallEntity pump : pumpList) {
CollectionParamsManageEntity pressure = collectionParamsManageMapper.selectByDeviceIdAndParamTypeId(pump.getId(), "5");
if (pressure != null) {
String pressureValue = pressure.getCurValue().setScale(1, RoundingMode.HALF_UP).toString();
if (!StringUtils.isBlank(pressureValue)) {
nowPublicDataEntity.setPressure(pressureValue);
break;
}
}
}
return nowPublicDataEntity; return nowPublicDataEntity;
} }

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

@ -5,6 +5,7 @@ import com.mh.user.constants.MqttProtocolEnum;
import com.mh.user.constants.MqttUseEnum; import com.mh.user.constants.MqttUseEnum;
import lombok.Data; import lombok.Data;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@ -28,10 +29,21 @@ public class MqttConfig {
private static Map<MqttUseEnum, MqttClientOptions> mqttSpring; private static Map<MqttUseEnum, MqttClientOptions> mqttSpring;
// 添加MQTT启用开关
private boolean mqttEnabled = false;
public void setMqttSpring(Map<MqttUseEnum, MqttClientOptions> mqtt) { public void setMqttSpring(Map<MqttUseEnum, MqttClientOptions> mqtt) {
MqttConfig.mqttSpring = mqtt; MqttConfig.mqttSpring = mqtt;
} }
public boolean isMqttEnabled() {
return mqttEnabled;
}
public void setMqttEnabled(boolean mqttEnabled) {
this.mqttEnabled = mqttEnabled;
}
/** /**
* 获取mqtt基本配置 * 获取mqtt基本配置
* @return * @return
@ -70,8 +82,8 @@ public class MqttConfig {
* @return * @return
*/ */
@Bean @Bean
@ConditionalOnProperty(name = "mqtt.enabled", havingValue = "true", matchIfMissing = false)
public MqttConnectOptions mqttConnectionOptions() { public MqttConnectOptions mqttConnectionOptions() {
MqttConnectOptions mqttConnectOptions = new MqttConnectOptions(); MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
MqttClientOptions customizeOptions = getBasicMqttClientOptions(); MqttClientOptions customizeOptions = getBasicMqttClientOptions();
@ -81,19 +93,19 @@ public class MqttConfig {
customizeOptions.getUsername() : ""); customizeOptions.getUsername() : "");
mqttConnectOptions.setPassword(StringUtils.hasText(customizeOptions.getPassword()) ? mqttConnectOptions.setPassword(StringUtils.hasText(customizeOptions.getPassword()) ?
customizeOptions.getPassword().toCharArray() : new char[0]); customizeOptions.getPassword().toCharArray() : new char[0]);
// 直接进行自动连接 // 设置为手动连接
mqttConnectOptions.setAutomaticReconnect(true); mqttConnectOptions.setAutomaticReconnect(true);
// 时间间隔时间10s mqttConnectOptions.setKeepAliveInterval(30); // 30秒保活
mqttConnectOptions.setKeepAliveInterval(1000);
return mqttConnectOptions; return mqttConnectOptions;
} }
@Bean @Bean
@ConditionalOnProperty(name = "mqtt.enabled", havingValue = "true", matchIfMissing = false)
public MqttPahoClientFactory mqttClientFactory() { public MqttPahoClientFactory mqttClientFactory() {
DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory(); DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
factory.setConnectionOptions(mqttConnectionOptions()); factory.setConnectionOptions(mqttConnectionOptions());
return factory; return factory;
} }
} }

57
user-service/src/main/java/com/mh/user/service/mqtt/config/MqttInboundConfig.java

@ -4,6 +4,7 @@ import com.mh.user.constants.ChannelName;
import com.mh.user.constants.MqttClientOptions; import com.mh.user.constants.MqttClientOptions;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.integration.annotation.IntegrationComponentScan; import org.springframework.integration.annotation.IntegrationComponentScan;
@ -28,6 +29,7 @@ import javax.annotation.Resource;
@Slf4j @Slf4j
@Configuration @Configuration
@IntegrationComponentScan @IntegrationComponentScan
@ConditionalOnProperty(name = "mqtt.enabled", havingValue = "true", matchIfMissing = false)
public class MqttInboundConfig { public class MqttInboundConfig {
@Autowired @Autowired
@ -38,6 +40,8 @@ public class MqttInboundConfig {
private String clientId; private String clientId;
private MqttPahoMessageDrivenChannelAdapter adapter;
/** /**
* 入站适配器 * 入站适配器
* @return * @return
@ -45,29 +49,48 @@ public class MqttInboundConfig {
@Bean(name = "adapter") @Bean(name = "adapter")
public MessageProducerSupport mqttInbound() { public MessageProducerSupport mqttInbound() {
MqttClientOptions options = MqttConfig.getBasicMqttClientOptions(); MqttClientOptions options = MqttConfig.getBasicMqttClientOptions();
// 此处初始化的时候,默认订阅了配置文件中已经写好的topic
// 如果需要订阅多个,可以自己手动订阅,会写一个addTopic()进行添加订阅
clientId = options.getClientId() + "_consumer_" + System.currentTimeMillis(); clientId = options.getClientId() + "_consumer_" + System.currentTimeMillis();
MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter( adapter = new MqttPahoMessageDrivenChannelAdapter(
clientId, clientId,
mqttClientFactory, mqttClientFactory,
options.getInboundTopic().split(",")); options.getInboundTopic().split(","));
// System.out.println("每一次都会入站适配器吗?"+clientId);
DefaultPahoMessageConverter converter = new DefaultPahoMessageConverter(); DefaultPahoMessageConverter converter = new DefaultPahoMessageConverter();
// 统一是字节处理
converter.setPayloadAsBytes(true); converter.setPayloadAsBytes(true);
// 设置消息转换器
adapter.setConverter(converter); adapter.setConverter(converter);
// 设置qos(quality of service)
// 0:最多一次传输(消息会丢失),
// 1:至少一次传输(消息会重复),
// 2:只有当消息发送成功时才确认(消息不回丢,但延迟高)。
adapter.setQos(0); adapter.setQos(0);
// 设置在接收已经订阅的主题信息后,发送给哪个通道,具体的发送方法需要翻上层的抽象类
adapter.setOutputChannel(inboundChannel); adapter.setOutputChannel(inboundChannel);
return adapter; return adapter;
} }
/**
* 手动启动MQTT连接
*/
public void startMqtt() {
if (adapter != null && !adapter.isRunning()) {
adapter.start();
log.info("MQTT入站适配器已启动");
}
}
/**
* 手动停止MQTT连接
*/
public void stopMqtt() {
if (adapter != null && adapter.isRunning()) {
adapter.stop();
log.info("MQTT入站适配器已停止");
}
}
/**
* 检查MQTT连接状态
* @return
*/
public boolean isMqttRunning() {
return adapter != null && adapter.isRunning();
}
/** /**
* 默认声明一个消息处理器用于处理无效的消息 * 默认声明一个消息处理器用于处理无效的消息
* @return * @return
@ -76,16 +99,16 @@ public class MqttInboundConfig {
@ServiceActivator(inputChannel = ChannelName.DEFAULT_BOUND) @ServiceActivator(inputChannel = ChannelName.DEFAULT_BOUND)
public MessageHandler handler() { public MessageHandler handler() {
return message -> { return message -> {
log.info("The default channel does not handle messages." + // log.info("The default channel does not handle messages." +
"\nTopic: {}" + // "\nTopic: {}" +
"\nPayload: {}", // "\nPayload: {}",
message.getHeaders().get(MqttHeaders.RECEIVED_TOPIC), // message.getHeaders().get(MqttHeaders.RECEIVED_TOPIC),
message.getPayload()); // message.getPayload());
}; };
} }
public String getClientId() { public String getClientId() {
return clientId; return clientId;
} }
} }

26
user-service/src/main/java/com/mh/user/service/mqtt/config/MqttOutboundConfig.java

@ -3,6 +3,7 @@ package com.mh.user.service.mqtt.config;
import com.mh.user.constants.ChannelName; import com.mh.user.constants.ChannelName;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.integration.annotation.IntegrationComponentScan; import org.springframework.integration.annotation.IntegrationComponentScan;
@ -22,11 +23,14 @@ import org.springframework.messaging.MessageHandler;
@Slf4j @Slf4j
@Configuration @Configuration
@IntegrationComponentScan @IntegrationComponentScan
@ConditionalOnProperty(name = "mqtt.enabled", havingValue = "true", matchIfMissing = false)
public class MqttOutboundConfig { public class MqttOutboundConfig {
@Autowired @Autowired
private MqttPahoClientFactory mqttClientFactory; private MqttPahoClientFactory mqttClientFactory;
private MqttPahoMessageHandler messageHandler;
/** /**
* 默认声明一个出站处理器用于处理无效的消息 * 默认声明一个出站处理器用于处理无效的消息
* @return * @return
@ -34,11 +38,10 @@ public class MqttOutboundConfig {
@Bean @Bean
@ServiceActivator(inputChannel = ChannelName.OUTBOUND) @ServiceActivator(inputChannel = ChannelName.OUTBOUND)
public MessageHandler mqttOutbound() { public MessageHandler mqttOutbound() {
MqttPahoMessageHandler messageHandler = new MqttPahoMessageHandler( messageHandler = new MqttPahoMessageHandler(
MqttConfig.getBasicMqttClientOptions().getClientId() + "_producer_" + System.currentTimeMillis(), MqttConfig.getBasicMqttClientOptions().getClientId() + "_producer_" + System.currentTimeMillis(),
mqttClientFactory); mqttClientFactory);
DefaultPahoMessageConverter converter = new DefaultPahoMessageConverter(); DefaultPahoMessageConverter converter = new DefaultPahoMessageConverter();
// use byte types uniformly
converter.setPayloadAsBytes(true); converter.setPayloadAsBytes(true);
messageHandler.setAsync(true); messageHandler.setAsync(true);
@ -47,5 +50,24 @@ public class MqttOutboundConfig {
return messageHandler; return messageHandler;
} }
/**
* 手动启动MQTT出站连接
*/
public void startMqtt() {
if (messageHandler != null) {
// 出站处理器通常不需要显式启动
log.info("MQTT出站处理器已准备就绪");
}
}
/**
* 手动停止MQTT出站连接
*/
public void stopMqtt() {
if (messageHandler != null) {
// 出站处理器通常不需要显式停止
log.info("MQTT出站处理器已停止");
}
}
} }

17
user-service/src/main/java/com/mh/user/service/mqtt/service/IMqttManagerService.java

@ -0,0 +1,17 @@
package com.mh.user.service.mqtt.service;
/**
* @author LJF
* @version 1.0
* @project CHWS
* @description mqtt启动停止管理接口
* @date 2025-12-19 13:59:13
*/
public interface IMqttManagerService {
void startMqtt();
void stopMqtt();
boolean isMqttRunning();
}

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

@ -2,6 +2,7 @@ package com.mh.user.service.mqtt.service.impl;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.mh.common.utils.StringUtils;
import com.mh.user.constants.ChannelName; import com.mh.user.constants.ChannelName;
import com.mh.user.constants.Constant; import com.mh.user.constants.Constant;
import com.mh.user.entity.CollectionParamsManageEntity; import com.mh.user.entity.CollectionParamsManageEntity;
@ -95,6 +96,12 @@ public class EventsServiceImpl implements IEventsService {
String time = datas.getTime(); String time = datas.getTime();
// 更新网关设备在线状态 // 更新网关设备在线状态
gatewayManageService.updateGatewayManageOnlineBySn(sn, 0); gatewayManageService.updateGatewayManageOnlineBySn(sn, 0);
// 获取网关对应的buildingId
String buildingId = gatewayManageService.queryBuildingIdBySn(sn);
if (StringUtils.isBlank(buildingId)) {
log.error("未找到对应的buildingId");
return;
}
// 修复类型转换问题 // 修复类型转换问题
List<?> rawDataList = datas.getDatas(); List<?> rawDataList = datas.getDatas();
for (Object rawData : rawDataList) { for (Object rawData : rawDataList) {
@ -110,7 +117,7 @@ public class EventsServiceImpl implements IEventsService {
} catch (Exception e) { } catch (Exception e) {
log.error("mqtt数据上报异常", e); log.error("mqtt数据上报异常", e);
data.setName(jsonObject.getString("name")); data.setName(jsonObject.getString("name"));
data.setValue(0); data.setValue("-1");
} }
} }
// 不使用消息队列,查询属于哪种设备类型,然后通过策略进行数据解析 // 不使用消息队列,查询属于哪种设备类型,然后通过策略进行数据解析
@ -125,9 +132,9 @@ public class EventsServiceImpl implements IEventsService {
value = BigDecimal.ZERO; value = BigDecimal.ZERO;
} }
// 直接更新collectionParamManage参数值 // 直接更新collectionParamManage参数值
collectionParamManageService.updateCPMByOtherName(name, value, time); collectionParamManageService.updateCPMByOtherName(name, value, time, buildingId);
// 查询device_install表,走之前的逻辑 // 查询device_install表,走之前的逻辑
CollectionParamsManageEntity collectionParamsManageEntity = collectionParamManageService.selectDeviceInstallByOtherName(name); CollectionParamsManageEntity collectionParamsManageEntity = collectionParamManageService.selectDeviceInstallByOtherName(name, buildingId);
if (null != collectionParamsManageEntity && collectionParamsManageEntity.getDeviceInstallId() != null) { if (null != collectionParamsManageEntity && collectionParamsManageEntity.getDeviceInstallId() != null) {
DeviceInstallEntity deviceInstallEntity = deviceInstallService.selectDeviceById(collectionParamsManageEntity.getDeviceInstallId()); DeviceInstallEntity deviceInstallEntity = deviceInstallService.selectDeviceById(collectionParamsManageEntity.getDeviceInstallId());
if (deviceInstallEntity != null) { if (deviceInstallEntity != null) {

64
user-service/src/main/java/com/mh/user/service/mqtt/service/impl/MqttManagerServiceImpl.java

@ -0,0 +1,64 @@
package com.mh.user.service.mqtt.service.impl;
import com.mh.user.service.mqtt.config.MqttInboundConfig;
import com.mh.user.service.mqtt.config.MqttOutboundConfig;
import com.mh.user.service.mqtt.service.IMqttManagerService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
/**
* @author LJF
* @version 1.0
* @project CHWS
* @description 管理mqtt启动和关闭
* @date 2025-12-19 13:57:41
*/
@Slf4j
@Service
@ConditionalOnProperty(name = "mqtt.enabled", havingValue = "true", matchIfMissing = false)
public class MqttManagerServiceImpl implements IMqttManagerService {
@Autowired
private MqttInboundConfig mqttInboundConfig;
@Autowired
private MqttOutboundConfig mqttOutboundConfig;
/**
* 启动MQTT连接
*/
@Override
public void startMqtt() {
try {
mqttInboundConfig.startMqtt();
mqttOutboundConfig.startMqtt();
} catch (Exception e) {
log.error("启动MQTT连接失败", e);
}
}
/**
* 停止MQTT连接
*/
@Override
public void stopMqtt() {
try {
mqttInboundConfig.stopMqtt();
mqttOutboundConfig.stopMqtt();
} catch (Exception e) {
log.error("停止MQTT连接失败", e);
}
}
/**
* 检查MQTT连接状态
* @return
*/
@Override
public boolean isMqttRunning() {
return mqttInboundConfig.isMqttRunning();
}
}

19
user-service/src/main/java/com/mh/user/service/mqtt/service/impl/MqttTopicServiceImpl.java

@ -1,6 +1,7 @@
package com.mh.user.service.mqtt.service.impl; package com.mh.user.service.mqtt.service.impl;
import com.mh.user.service.mqtt.service.IMqttTopicService; import com.mh.user.service.mqtt.service.IMqttTopicService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannelAdapter; import org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannelAdapter;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -17,25 +18,35 @@ import javax.annotation.Resource;
public class MqttTopicServiceImpl implements IMqttTopicService { public class MqttTopicServiceImpl implements IMqttTopicService {
@Resource @Resource
@Autowired(required = false)
private MqttPahoMessageDrivenChannelAdapter adapter; private MqttPahoMessageDrivenChannelAdapter adapter;
@Override @Override
public void subscribe(String topic) { public void subscribe(String topic) {
adapter.addTopic(topic); if (adapter != null) {
adapter.addTopic(topic);
}
} }
@Override @Override
public void subscribe(String topic, int qos) { public void subscribe(String topic, int qos) {
adapter.addTopic(topic, qos); if (adapter != null) {
adapter.addTopic(topic, qos);
}
} }
@Override @Override
public void unsubscribe(String topic) { public void unsubscribe(String topic) {
adapter.removeTopic(topic); if (adapter != null) {
adapter.removeTopic(topic);
}
} }
@Override @Override
public String[] getSubscribedTopics() { public String[] getSubscribedTopics() {
return adapter.getTopic(); if (adapter != null) {
return adapter.getTopic();
}
return new String[0];
} }
} }

21
user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java

@ -204,6 +204,7 @@ public class WaterLevelSwitchStrategy implements DeviceStrategy {
if ((customName.contains(Constant.CUSTOM_NAME_HUAXIA) if ((customName.contains(Constant.CUSTOM_NAME_HUAXIA)
|| customName.contains(Constant.CUSTOM_NAME_GUANGSHANG) || customName.contains(Constant.CUSTOM_NAME_GUANGSHANG)
|| customName.contains(Constant.CUSTOM_NAME_HUARUAN) || customName.contains(Constant.CUSTOM_NAME_HUARUAN)
|| customName.contains(Constant.CUSTOM_NAME_LIGONG)
) && !Constant.WEB_FLAG ) { ) && !Constant.WEB_FLAG ) {
analysisPumpStateOrder(dateStr, dataStr, registerAddr, brand, buildingId, buildingName); analysisPumpStateOrder(dateStr, dataStr, registerAddr, brand, buildingId, buildingName);
return analysisRelayOrder485(dateStr, dataStr,registerAddr,brand,buildingId, buildingName, customName); return analysisRelayOrder485(dateStr, dataStr,registerAddr,brand,buildingId, buildingName, customName);
@ -529,6 +530,26 @@ public class WaterLevelSwitchStrategy implements DeviceStrategy {
publicData.setUpWater("不运行"); publicData.setUpWater("不运行");
} }
log.info("-----------------补水状态:" + l1 + "-----------------"); log.info("-----------------补水状态:" + l1 + "-----------------");
} else if (customName.contains(Constant.CUSTOM_NAME_LIGONG)) {
if (l1.equals("0001")) { //1路,0000表示有输入,0001表示无输入
publicData.setUseWater("运行"); //供水
} else {
publicData.setUseWater("不运行");
}
log.info("-----------------供水状态:" + l1 + "-----------------");
// 回水
if (l3.equals("0001")) {
publicData.setBackWater("运行");//回水
} else {
publicData.setBackWater("不运行");
}
log.info("-----------------回水状态:" + l3 + "-----------------");
if (l2.equals("0001")) { //2路 //补水
publicData.setUpWater("运行");
} else {
publicData.setUpWater("不运行");
}
log.info("-----------------补水状态:" + l2 + "-----------------");
} else { } else {
if (l2.equals("0001") || l3.equals("0001")) { //2,3路,0000表示有输入,0001表示无输入 if (l2.equals("0001") || l3.equals("0001")) { //2,3路,0000表示有输入,0001表示无输入
publicData.setUseWater("运行"); //供水 publicData.setUseWater("运行"); //供水

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

@ -1,7 +1,7 @@
# 项目相关配置 # 项目相关配置
mh: mh:
# 名称 # 名称
name: nfxy name: nfxy_dev
# 版本 # 版本
version: 1.0.0 version: 1.0.0
# 版权年份 # 版权年份
@ -110,6 +110,9 @@ logging:
amap: amap:
key: 984603bf28ef94ac78765a3ea27a6c26 key: 984603bf28ef94ac78765a3ea27a6c26
mqtt:
enabled: true
# mqtt服务器地址
mqttSpring: mqttSpring:
# BASIC parameters are required. # BASIC parameters are required.
BASIC: BASIC:
@ -131,7 +134,7 @@ mqttSpring:
port: 8083 port: 8083
path: /mqtt path: /mqtt
control: control:
topic: chws_nfxy_mqtt_dev/control/events_upload/devices topic: mh_control/events_control/devices

23
user-service/src/main/resources/application-prod.yml

@ -14,10 +14,10 @@ spring:
# password: mh@803 # password: mh@803
## url: jdbc:sqlserver://120.25.220.177:32012;DatabaseName=M_CHWS;allowMultiQueries=true ## url: jdbc:sqlserver://120.25.220.177:32012;DatabaseName=M_CHWS;allowMultiQueries=true
#阿里云服务器-广州理工 #阿里云服务器-广州理工
# url: jdbc:sqlserver://111.230.50.186:32012;DatabaseName=CHWS;allowMultiQueries=true;encrypt=false url: jdbc:sqlserver://111.230.50.186:32012;DatabaseName=CHWS;allowMultiQueries=true;encrypt=false
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
# username: test username: test
# password: minghan123456@ password: minghan123456@
# #华厦云服务器 # #华厦云服务器
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=CHWS;allowMultiQueries=true # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=CHWS;allowMultiQueries=true
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
@ -29,10 +29,10 @@ spring:
# username: chws_gsh # username: chws_gsh
# password: Mhtech@803 # password: Mhtech@803
#广商服务器 #广商服务器
url: jdbc:sqlserver://175.178.153.91:8033;DatabaseName=chws_gsh;allowMultiQueries=true;encrypt=false # url: jdbc:sqlserver://175.178.153.91:8033;DatabaseName=chws_gsh;allowMultiQueries=true;encrypt=false
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: chws_gsh # username: chws_gsh
password: Mhtech@803gsh # password: Mhtech@803gsh
#本机 #本机
# url: jdbc:sqlserver://127.0.0.1:9956;DatabaseName=CHWS;allowMultiQueries=true # url: jdbc:sqlserver://127.0.0.1:9956;DatabaseName=CHWS;allowMultiQueries=true
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
@ -143,11 +143,14 @@ logging:
amap: amap:
key: 984603bf28ef94ac78765a3ea27a6c26 key: 984603bf28ef94ac78765a3ea27a6c26
mqtt:
enabled: true
mqttSpring: mqttSpring:
# BASIC parameters are required. # BASIC parameters are required.
BASIC: BASIC:
protocol: MQTT protocol: MQTT
host: 192.168.1.79 host: 192.168.1.179
port: 1883 port: 1883
username: test username: test
password: test123456 password: test123456
@ -160,7 +163,7 @@ mqttSpring:
# 无人机远程控制模式(drone remote control) # 无人机远程控制模式(drone remote control)
DRC: DRC:
protocol: WS protocol: WS
host: 192.168.1.79 host: 192.168.1.179
port: 8083 port: 8083
path: /mqtt path: /mqtt
control: control:

Loading…
Cancel
Save