diff --git a/pom.xml b/pom.xml
index 8706cff..fe2e390 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.2.5.RELEASE
+ 2.7.18
@@ -50,21 +50,33 @@
org.springframework
spring-messaging
- 6.2.1
+ 5.3.39
+
+ org.springframework.integration
+ spring-integration-core
+ 5.5.18
+
org.springframework.integration
spring-integration-mqtt
- 6.3.4
+ 5.5.18
+
+
+
+
+
+
+
org.springframework.boot
- spring-boot-starter-integration
- 3.4.2
+ spring-boot-starter-validation
+
diff --git a/user-service/pom.xml b/user-service/pom.xml
index c706553..9aa85c2 100644
--- a/user-service/pom.xml
+++ b/user-service/pom.xml
@@ -58,6 +58,11 @@
mybatis-spring-boot-starter
2.3.0
+
+ tk.mybatis
+ mapper
+ 4.2.3
+
com.alibaba
@@ -119,12 +124,6 @@
true
-
- tk.mybatis
- mapper
- 3.3.9
-
-
org.apache.commons
commons-pool2
diff --git a/user-service/src/main/java/com/mh/user/config/CorsConfig.java b/user-service/src/main/java/com/mh/user/config/CorsConfig.java
index d288e08..050c5ed 100644
--- a/user-service/src/main/java/com/mh/user/config/CorsConfig.java
+++ b/user-service/src/main/java/com/mh/user/config/CorsConfig.java
@@ -29,12 +29,12 @@ public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
- registry.addMapping("/**") // 允许跨域访问的路径
- .allowedOrigins("*") // 允许跨域访问的源
- .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE") // 允许请求方法
- .maxAge(168000) // 预检间隔时间
- .allowedHeaders("*") // 允许头部设置
- .allowCredentials(true); // 是否发送cookie
+ registry.addMapping("/**") // 允许跨域访问的路径
+ .allowedOriginPatterns("*") // 使用allowedOriginPatterns代替allowedOrigins
+ .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE") // 允许请求方法
+ .maxAge(168000) // 预检间隔时间
+ .allowedHeaders("*") // 允许头部设置
+ .allowCredentials(true); // 是否发送cookie
}
}
diff --git a/user-service/src/main/java/com/mh/user/config/mqtt/InboundMessageRouter.java b/user-service/src/main/java/com/mh/user/config/mqtt/InboundMessageRouter.java
deleted file mode 100644
index ccc4804..0000000
--- a/user-service/src/main/java/com/mh/user/config/mqtt/InboundMessageRouter.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.mh.user.config.mqtt;
-
-import com.mh.user.config.MHConfig;
-import com.mh.user.constants.ChannelName;
-import com.mh.user.constants.TopicEnum;
-import com.mh.user.utils.SpringBeanUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.integration.annotation.Router;
-import org.springframework.integration.mqtt.support.MqttHeaders;
-import org.springframework.integration.router.AbstractMessageRouter;
-import org.springframework.messaging.Message;
-import org.springframework.messaging.MessageChannel;
-import org.springframework.messaging.MessageHeaders;
-import org.springframework.stereotype.Component;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Objects;
-
-/**
- * @author LJF
- * @version 1.0
- * @project springboot-mqtt-demo
- * @description 入站消息路由分发中心
- * @date 2024-10-29 17:04:17
- */
-@Slf4j
-@Component
-public class InboundMessageRouter extends AbstractMessageRouter {
-
- /** 系统基础配置 */
- @Autowired
- private MHConfig mHConfig;
-
- /**
- * 目前只需要这个方式,后期在拓展使用IntegrationFlow方式
- * @param message
- * @return
- */
- @Router(inputChannel = ChannelName.INBOUND)
- @Override
- protected Collection determineTargetChannels(Message> message) {
- MessageHeaders headers = message.getHeaders();
- String topic = Objects.requireNonNull(headers.get(MqttHeaders.RECEIVED_TOPIC)).toString();
-// byte[] payload = (byte[]) message.getPayload();
-// log.info("从当前主题 topic: {}, 接收到的消息:{}", topic, new String(payload));
- // 判断当前主题是否是当前项目的,温湿度目前写死的
- if (!topic.startsWith(mHConfig.getName()) && !topic.contains("/temp")) {
- log.info("当前主题 topic: {} 不是当前项目的,直接丢弃", topic);
- return Collections.singleton((MessageChannel) SpringBeanUtil.getBean(ChannelName.DEFAULT_BOUND));
- }
- // 找到对应的主题消息通道
- if (topic.contains("/temp")) {
- return Collections.singleton((MessageChannel) SpringBeanUtil.getBean(ChannelName.EVENTS_UPLOAD_INBOUND));
- } else {
- TopicEnum topicEnum = TopicEnum.find(mHConfig.getName() + "/", topic);
- MessageChannel bean = (MessageChannel) SpringBeanUtil.getBean(topicEnum.getBeanName());
- return Collections.singleton(bean);
- }
- }
-}
diff --git a/user-service/src/main/java/com/mh/user/config/mqtt/MqttConfig.java b/user-service/src/main/java/com/mh/user/config/mqtt/MqttConfig.java
deleted file mode 100644
index 1595c23..0000000
--- a/user-service/src/main/java/com/mh/user/config/mqtt/MqttConfig.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.mh.user.config.mqtt;
-
-import com.mh.user.constants.MqttClientOptions;
-import com.mh.user.constants.MqttProtocolEnum;
-import com.mh.user.constants.MqttUseEnum;
-import lombok.Data;
-import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.integration.mqtt.core.DefaultMqttPahoClientFactory;
-import org.springframework.integration.mqtt.core.MqttPahoClientFactory;
-import org.springframework.util.StringUtils;
-
-import java.util.Map;
-
-/**
- * @author LJF
- * @version 1.0
- * @project springboot-mqtt-demo
- * @description mqtt连接配置
- * @date 2024-10-29 14:44:51
- */
-@Configuration
-@Data
-@ConfigurationProperties
-public class MqttConfig {
-
- private static Map mqttSpring;
-
- public void setMqttSpring(Map mqtt) {
- MqttConfig.mqttSpring = mqtt;
- }
-
- /**
- * 获取mqtt基本配置
- * @return
- */
- static MqttClientOptions getBasicMqttClientOptions() {
- if (!mqttSpring.containsKey(MqttUseEnum.BASIC)) {
- throw new Error("请先配置MQTT的基本连接参数,否则无法启动项目");
- }
- return mqttSpring.get(MqttUseEnum.BASIC);
- }
-
- /**
- * 拼接获取对应mqtt的连接地址
- * @param options
- * @return
- */
- public static String getMqttAddress(MqttClientOptions options) {
- StringBuilder addr = new StringBuilder();
- addr.append(options.getProtocol().getProtocolAddr())
- .append(options.getHost().trim())
- .append(":")
- .append(options.getPort());
- if ((options.getProtocol() == MqttProtocolEnum.WS || options.getProtocol() == MqttProtocolEnum.WSS)
- && StringUtils.hasText(options.getPath())) {
- addr.append(options.getPath());
- }
- return addr.toString();
- }
-
- public static String getBasicMqttAddress() {
- return getMqttAddress(getBasicMqttClientOptions());
- }
-
- /**
- * 获取连接参数,注入到spring中
- * @return
- */
- @Bean
- public MqttConnectOptions mqttConnectionOptions() {
-
- MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
-
- MqttClientOptions customizeOptions = getBasicMqttClientOptions();
- String basicMqttAddress = getBasicMqttAddress();
- mqttConnectOptions.setServerURIs(new String[]{basicMqttAddress});
- mqttConnectOptions.setUserName(StringUtils.hasText(customizeOptions.getUsername()) ?
- customizeOptions.getUsername() : "");
- mqttConnectOptions.setPassword(StringUtils.hasText(customizeOptions.getPassword()) ?
- customizeOptions.getPassword().toCharArray() : new char[0]);
- // 直接进行自动连接
- mqttConnectOptions.setAutomaticReconnect(true);
- // 时间间隔时间10s
- mqttConnectOptions.setKeepAliveInterval(10);
-
- return mqttConnectOptions;
- }
-
- @Bean
- public MqttPahoClientFactory mqttClientFactory() {
- DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
- factory.setConnectionOptions(mqttConnectionOptions());
- return factory;
- }
-
-}
diff --git a/user-service/src/main/java/com/mh/user/config/mqtt/MqttInboundConfig.java b/user-service/src/main/java/com/mh/user/config/mqtt/MqttInboundConfig.java
deleted file mode 100644
index 27dcf3e..0000000
--- a/user-service/src/main/java/com/mh/user/config/mqtt/MqttInboundConfig.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.mh.user.config.mqtt;
-
-import com.mh.user.constants.ChannelName;
-import com.mh.user.constants.MqttClientOptions;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.integration.annotation.IntegrationComponentScan;
-import org.springframework.integration.annotation.ServiceActivator;
-import org.springframework.integration.endpoint.MessageProducerSupport;
-import org.springframework.integration.mqtt.core.MqttPahoClientFactory;
-import org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannelAdapter;
-import org.springframework.integration.mqtt.support.DefaultPahoMessageConverter;
-import org.springframework.integration.mqtt.support.MqttHeaders;
-import org.springframework.messaging.MessageChannel;
-import org.springframework.messaging.MessageHandler;
-
-import javax.annotation.Resource;
-
-/**
- * @author LJF
- * @version 1.0
- * @project springboot-mqtt-demo
- * @description 入站配置
- * @date 2024-10-29 16:22:10
- */
-@Slf4j
-@Configuration
-@IntegrationComponentScan
-public class MqttInboundConfig {
-
- @Autowired
- private MqttPahoClientFactory mqttClientFactory;
-
- @Resource(name = ChannelName.INBOUND)
- private MessageChannel inboundChannel;
-
- private String clientId;
-
- /**
- * 入站适配器
- * @return
- */
- @Bean(name = "adapter")
- public MessageProducerSupport mqttInbound() {
- MqttClientOptions options = MqttConfig.getBasicMqttClientOptions();
- // 此处初始化的时候,默认订阅了配置文件中已经写好的topic
- // 如果需要订阅多个,可以自己手动订阅,会写一个addTopic()进行添加订阅
- clientId = options.getClientId() + "_consumer_" + System.currentTimeMillis();
- MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter(
- clientId,
- mqttClientFactory,
- options.getInboundTopic().split(","));
- // System.out.println("每一次都会入站适配器吗?"+clientId);
- DefaultPahoMessageConverter converter = new DefaultPahoMessageConverter();
- // 统一是字节处理
- converter.setPayloadAsBytes(true);
- // 设置消息转换器
- adapter.setConverter(converter);
- // 设置qos(quality of service)
- // 0:最多一次传输(消息会丢失),
- // 1:至少一次传输(消息会重复),
- // 2:只有当消息发送成功时才确认(消息不回丢,但延迟高)。
- adapter.setQos(0);
- // 设置在接收已经订阅的主题信息后,发送给哪个通道,具体的发送方法需要翻上层的抽象类
- adapter.setOutputChannel(inboundChannel);
- return adapter;
- }
-
- /**
- * 默认声明一个消息处理器,用于处理无效的消息
- * @return
- */
- @Bean
- @ServiceActivator(inputChannel = ChannelName.DEFAULT_BOUND)
- public MessageHandler handler() {
- return message -> {
- log.info("The default channel does not handle messages." +
- "\nTopic: {}" +
- "\nPayload: {}",
- message.getHeaders().get(MqttHeaders.RECEIVED_TOPIC),
- message.getPayload());
- };
- }
-
- public String getClientId() {
- return clientId;
- }
-
-}
diff --git a/user-service/src/main/java/com/mh/user/config/mqtt/MqttMessageChannel.java b/user-service/src/main/java/com/mh/user/config/mqtt/MqttMessageChannel.java
deleted file mode 100644
index 3a3c382..0000000
--- a/user-service/src/main/java/com/mh/user/config/mqtt/MqttMessageChannel.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.mh.user.config.mqtt;
-
-import com.mh.user.constants.ChannelName;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.integration.channel.DirectChannel;
-import org.springframework.messaging.MessageChannel;
-
-/**
- * @author LJF
- * @version 1.0
- * @project springboot-mqtt-demo
- * @description 声明所有通道的定义类
- * @date 2024-10-29 16:23:32
- */
-@Slf4j
-@Configuration
-public class MqttMessageChannel {
-
- @Bean(name = ChannelName.OUTBOUND)
- public MessageChannel outboundChannel() {
- return new DirectChannel();
- }
-
- @Bean(name = ChannelName.INBOUND)
- public MessageChannel inboundChannel() {
- return new DirectChannel();
- }
-
- /**
- * 事件主动上报通道
- * @return
- */
- @Bean(name = ChannelName.EVENTS_UPLOAD_INBOUND)
- public MessageChannel eventsUploadInbound() {
- return new DirectChannel();
- }
-
- @Bean(name = ChannelName.EVENTS_COLLECTION_INBOUND)
- public MessageChannel eventsCollectionInbound() {
- return new DirectChannel();
- }
-
- @Bean(name = ChannelName.EVENTS_CONTROL_INBOUND)
- public MessageChannel eventsControlInbound() {
- return new DirectChannel();
- }
-
- @Bean(name = ChannelName.EVENTS_SEND_INBOUND)
- public MessageChannel eventsSendInbound() {
- return new DirectChannel();
- }
-
-}
diff --git a/user-service/src/main/java/com/mh/user/config/mqtt/MqttOutboundConfig.java b/user-service/src/main/java/com/mh/user/config/mqtt/MqttOutboundConfig.java
deleted file mode 100644
index 6805a05..0000000
--- a/user-service/src/main/java/com/mh/user/config/mqtt/MqttOutboundConfig.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.mh.user.config.mqtt;
-
-import com.mh.user.constants.ChannelName;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.integration.annotation.IntegrationComponentScan;
-import org.springframework.integration.annotation.ServiceActivator;
-import org.springframework.integration.mqtt.core.MqttPahoClientFactory;
-import org.springframework.integration.mqtt.outbound.MqttPahoMessageHandler;
-import org.springframework.integration.mqtt.support.DefaultPahoMessageConverter;
-import org.springframework.messaging.MessageHandler;
-
-/**
- * @author LJF
- * @version 1.0
- * @project springboot-mqtt-demo
- * @description 入站配置
- * @date 2024-10-29 16:22:10
- */
-@Slf4j
-@Configuration
-@IntegrationComponentScan
-public class MqttOutboundConfig {
-
- @Autowired
- private MqttPahoClientFactory mqttClientFactory;
-
- /**
- * 默认声明一个出站处理器,用于处理无效的消息
- * @return
- */
- @Bean
- @ServiceActivator(inputChannel = ChannelName.OUTBOUND)
- public MessageHandler mqttOutbound() {
- MqttPahoMessageHandler messageHandler = new MqttPahoMessageHandler(
- MqttConfig.getBasicMqttClientOptions().getClientId() + "_producer_" + System.currentTimeMillis(),
- mqttClientFactory);
- DefaultPahoMessageConverter converter = new DefaultPahoMessageConverter();
- // use byte types uniformly
- converter.setPayloadAsBytes(true);
-
- messageHandler.setAsync(true);
- messageHandler.setDefaultQos(0);
- messageHandler.setConverter(converter);
- return messageHandler;
- }
-
-
-}
diff --git a/user-service/src/main/java/com/mh/user/constants/TopicEnum.java b/user-service/src/main/java/com/mh/user/constants/TopicEnum.java
index 8f41357..afbd397 100644
--- a/user-service/src/main/java/com/mh/user/constants/TopicEnum.java
+++ b/user-service/src/main/java/com/mh/user/constants/TopicEnum.java
@@ -14,7 +14,7 @@ import static com.mh.user.constants.TopicConst.*;
public enum TopicEnum {
/**
- * 冷水机组客户端主动上报数据
+ * 客户端主动上报数据
*/
CLIENT_UPLOAD_DATA(Pattern.compile("^" + MH_UPLOAD + EVENTS_UPLOAD + REGEX_SN + "$"), ChannelName.EVENTS_UPLOAD_INBOUND),
diff --git a/user-service/src/main/java/com/mh/user/controller/CodeTableController.java b/user-service/src/main/java/com/mh/user/controller/CodeTableController.java
index 2e4b60b..5a46b02 100644
--- a/user-service/src/main/java/com/mh/user/controller/CodeTableController.java
+++ b/user-service/src/main/java/com/mh/user/controller/CodeTableController.java
@@ -29,4 +29,11 @@ public class CodeTableController {
list=codeTableService.queryBrand();
return HttpResult.ok(list);
}
+
+ @PostMapping("/paramType")
+ public HttpResult queryParamType(){
+ List list;
+ list=codeTableService.queryDataByName("paramType");
+ return HttpResult.ok(list);
+ }
}
diff --git a/user-service/src/main/java/com/mh/user/controller/CollectionParamsManageController.java b/user-service/src/main/java/com/mh/user/controller/CollectionParamsManageController.java
new file mode 100644
index 0000000..300a4cd
--- /dev/null
+++ b/user-service/src/main/java/com/mh/user/controller/CollectionParamsManageController.java
@@ -0,0 +1,71 @@
+package com.mh.user.controller;
+
+import com.mh.common.http.HttpResult;
+import com.mh.common.utils.StringUtils;
+import com.mh.user.annotation.SysLogger;
+import com.mh.user.entity.CollectionParamsManageEntity;
+import com.mh.user.entity.DeviceInstallEntity;
+import com.mh.user.model.DeviceModel;
+import com.mh.user.service.*;
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.CellType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 基表参数信息管理
+ */
+@RestController
+@RequestMapping("cpm")
+public class CollectionParamsManageController {
+
+ @Autowired
+ private CollectionParamsManageService collectionParamsManageService;
+
+ //保存
+ @SysLogger(title="基表采集信息",optDesc = "保存基表采集参数信息")
+ @PostMapping(value="/save")
+ public HttpResult saveDevice(@RequestBody CollectionParamsManageEntity collectionParamsManageEntity) {
+ return HttpResult.ok(collectionParamsManageService.insertCPM(collectionParamsManageEntity));
+ }
+
+ //修改
+ @SysLogger(title="基表采集参数信息",optDesc = "修改基表采集参数信息")
+ @PostMapping(value="/update")
+ public HttpResult updateDevice(@RequestBody CollectionParamsManageEntity collectionParamsManageEntity) {
+ return HttpResult.ok(collectionParamsManageService.updateCPM(collectionParamsManageEntity));
+ }
+
+ // 删除多
+ @PostMapping(value="/deletes")
+ public HttpResult deleteDevices(@RequestBody String[] ids) {
+ return HttpResult.ok(collectionParamsManageService.deleteByIds(ids));
+ }
+
+ // 按条件查询
+ @SysLogger(title="基表采集信息",optDesc = "按条件查询基表采集参数信息")
+ @PostMapping(value="/query")
+ public HttpResult queryDevice( @RequestParam(value = "deviceInstallId", required = false)String deviceInstallId,
+ @RequestParam(value = "buildingId", required = false)String buildingId,
+ @RequestParam(value = "otherName", required = false)String otherName,
+ @RequestParam(value = "page", required=true)Integer page,
+ @RequestParam(value = "limit", required=true)Integer limit) {
+ try{
+ int count=collectionParamsManageService.selectCPMListCount(buildingId, deviceInstallId,otherName, page, limit);
+ List records=collectionParamsManageService.selectCPMList(buildingId, deviceInstallId,otherName, page, limit);
+ return HttpResult.ok(count,records);
+ }catch (Exception e){
+ return HttpResult.error(e.getMessage());
+ }
+ }
+
+}
diff --git a/user-service/src/main/java/com/mh/user/entity/CollectionParamsManageEntity.java b/user-service/src/main/java/com/mh/user/entity/CollectionParamsManageEntity.java
new file mode 100644
index 0000000..d785b62
--- /dev/null
+++ b/user-service/src/main/java/com/mh/user/entity/CollectionParamsManageEntity.java
@@ -0,0 +1,108 @@
+package com.mh.user.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.StringJoiner;
+
+/**
+ * @author LJF
+ * @version 1.0
+ * @project CHWS
+ * @description 采集参数实体类
+ * @date 2025-12-10 10:53:33
+ */
+@Getter
+@Setter
+public class CollectionParamsManageEntity implements Serializable {
+
+ static final long serialVersionUID = 42L;
+
+ private Long id;
+
+ /** 当前时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /** 当前时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+ private Long buildingId;
+ /** 设备id */
+ private Long deviceInstallId;
+ /** 寄存器地址 */
+ private String registerAddr;
+ /** 功能码 */
+ private String funcCode;
+ /** 倍率 */
+ private Integer mtRatio;
+ /** 初始值 */
+ private BigDecimal mtInitValue;
+ /** 小数点 */
+ private Integer digits;
+ /** 数据类型 */
+ private Integer dataType;
+ /** 当前值 */
+ private BigDecimal curValue;
+ /** 当前时间 */
+ /** 当前时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date curTime;
+ /** 是否是总表 (0: 是, 1: 否) */
+ private Integer mtIsSum;
+ /** 单位 */
+ private String unit;
+ /** 排序 */
+ private Long orderNum;
+ /** 备注 */
+ private String remark;
+ /** 读取的寄存器大小 */
+ private Integer registerSize;
+ /** 是否使用 */
+ private Integer isUse;
+ /** 别名:mqtt上传名,唯一值 */
+ private String otherName;
+ /** 40,累计值,140瞬时值 */
+ private Integer grade;
+ /** 参数id */
+ private Integer paramTypeId;
+ /** 遥测、遥信数据类型 */
+ private Integer collectionType;
+ /** 上报质量 */
+ private String quality;
+
+ @Override
+ public String toString() {
+ return new StringJoiner(", ", CollectionParamsManageEntity.class.getSimpleName() + "[", "]")
+ .add("deviceInstallId=" + deviceInstallId)
+ .add("registerAddr='" + registerAddr + "'")
+ .add("funcCode='" + funcCode + "'")
+ .add("mtRatio=" + mtRatio)
+ .add("mtInitValue=" + mtInitValue)
+ .add("digits=" + digits)
+ .add("dataType=" + dataType)
+ .add("curValue=" + curValue)
+ .add("curTime=" + curTime)
+ .add("mtIsSum=" + mtIsSum)
+ .add("unit='" + unit + "'")
+ .add("orderNum=" + orderNum)
+ .add("remark='" + remark + "'")
+ .add("registerSize=" + registerSize)
+ .add("isUse=" + isUse)
+ .add("otherName='" + otherName + "'")
+ .add("grade=" + grade)
+ .add("paramTypeId=" + paramTypeId)
+ .add("collectionType=" + collectionType)
+ .add("quality='" + quality + "'")
+ .toString();
+ }
+}
diff --git a/user-service/src/main/java/com/mh/user/factory/BackTempControl.java b/user-service/src/main/java/com/mh/user/factory/BackTempControl.java
index 4849b0c..2e9f65e 100644
--- a/user-service/src/main/java/com/mh/user/factory/BackTempControl.java
+++ b/user-service/src/main/java/com/mh/user/factory/BackTempControl.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
/**
@@ -40,4 +42,9 @@ public class BackTempControl implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return strategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity, collectionParamsManageEntity);
+ }
}
diff --git a/user-service/src/main/java/com/mh/user/factory/Device.java b/user-service/src/main/java/com/mh/user/factory/Device.java
index d48feaa..0a9f9d8 100644
--- a/user-service/src/main/java/com/mh/user/factory/Device.java
+++ b/user-service/src/main/java/com/mh/user/factory/Device.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
/**
@@ -17,4 +19,20 @@ public interface Device {
String createOrders(DeviceCodeParamEntity deviceCodeParamEntity);
String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity);
+
+ /**
+ * 解析MQTT报文
+ * @param dateStr
+ * @param registerAddr
+ * @param dataStr 已经是解析好的数据
+ * @param operateType 操作类型,读取/设置
+ * @param deviceInstallEntity
+ * @return
+ */
+ String analysisMQTTReceiveData(String dateStr,
+ String registerAddr,
+ String dataStr,
+ String operateType,
+ DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity);
}
diff --git a/user-service/src/main/java/com/mh/user/factory/EleMeter.java b/user-service/src/main/java/com/mh/user/factory/EleMeter.java
index 2adaec8..90ef785 100644
--- a/user-service/src/main/java/com/mh/user/factory/EleMeter.java
+++ b/user-service/src/main/java/com/mh/user/factory/EleMeter.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
import lombok.extern.slf4j.Slf4j;
@@ -43,4 +45,9 @@ public class EleMeter implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return eleMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return eleMeterStrategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity, collectionParamsManageEntity);
+ }
}
diff --git a/user-service/src/main/java/com/mh/user/factory/HeatPump.java b/user-service/src/main/java/com/mh/user/factory/HeatPump.java
index ed21aec..c5f3345 100644
--- a/user-service/src/main/java/com/mh/user/factory/HeatPump.java
+++ b/user-service/src/main/java/com/mh/user/factory/HeatPump.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
/**
@@ -40,4 +42,9 @@ public class HeatPump implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return strategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity, collectionParamsManageEntity);
+ }
}
diff --git a/user-service/src/main/java/com/mh/user/factory/HeatPumpStatus.java b/user-service/src/main/java/com/mh/user/factory/HeatPumpStatus.java
index 6a1633d..ca770fe 100644
--- a/user-service/src/main/java/com/mh/user/factory/HeatPumpStatus.java
+++ b/user-service/src/main/java/com/mh/user/factory/HeatPumpStatus.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
/**
@@ -40,4 +42,9 @@ public class HeatPumpStatus implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return strategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity, collectionParamsManageEntity);
+ }
}
diff --git a/user-service/src/main/java/com/mh/user/factory/MultiControl.java b/user-service/src/main/java/com/mh/user/factory/MultiControl.java
index 89959d5..10c2495 100644
--- a/user-service/src/main/java/com/mh/user/factory/MultiControl.java
+++ b/user-service/src/main/java/com/mh/user/factory/MultiControl.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
/**
@@ -40,4 +42,10 @@ public class MultiControl implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return strategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity, collectionParamsManageEntity);
+ }
+
}
diff --git a/user-service/src/main/java/com/mh/user/factory/PressureTrans.java b/user-service/src/main/java/com/mh/user/factory/PressureTrans.java
index 3289a3e..f9e1fe5 100644
--- a/user-service/src/main/java/com/mh/user/factory/PressureTrans.java
+++ b/user-service/src/main/java/com/mh/user/factory/PressureTrans.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
/**
@@ -40,4 +42,10 @@ public class PressureTrans implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return strategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity, collectionParamsManageEntity);
+ }
+
}
diff --git a/user-service/src/main/java/com/mh/user/factory/StatusCheck.java b/user-service/src/main/java/com/mh/user/factory/StatusCheck.java
index 8e8afca..644364f 100644
--- a/user-service/src/main/java/com/mh/user/factory/StatusCheck.java
+++ b/user-service/src/main/java/com/mh/user/factory/StatusCheck.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
import lombok.extern.slf4j.Slf4j;
@@ -44,4 +46,10 @@ public class StatusCheck implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return wtMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return wtMeterStrategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity, collectionParamsManageEntity);
+ }
+
}
diff --git a/user-service/src/main/java/com/mh/user/factory/TempControl.java b/user-service/src/main/java/com/mh/user/factory/TempControl.java
index 52b130b..d745d66 100644
--- a/user-service/src/main/java/com/mh/user/factory/TempControl.java
+++ b/user-service/src/main/java/com/mh/user/factory/TempControl.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
/**
@@ -40,4 +42,10 @@ public class TempControl implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return strategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity, collectionParamsManageEntity);
+ }
+
}
diff --git a/user-service/src/main/java/com/mh/user/factory/TempTrans.java b/user-service/src/main/java/com/mh/user/factory/TempTrans.java
index 90bef12..ed5ef0c 100644
--- a/user-service/src/main/java/com/mh/user/factory/TempTrans.java
+++ b/user-service/src/main/java/com/mh/user/factory/TempTrans.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
/**
@@ -40,4 +42,10 @@ public class TempTrans implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return strategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity, collectionParamsManageEntity);
+ }
+
}
diff --git a/user-service/src/main/java/com/mh/user/factory/TimeControl.java b/user-service/src/main/java/com/mh/user/factory/TimeControl.java
index f0c7cf8..ac8cfdc 100644
--- a/user-service/src/main/java/com/mh/user/factory/TimeControl.java
+++ b/user-service/src/main/java/com/mh/user/factory/TimeControl.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
/**
@@ -40,4 +42,10 @@ public class TimeControl implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return strategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity , collectionParamsManageEntity);
+ }
+
}
diff --git a/user-service/src/main/java/com/mh/user/factory/WaterLevelSwitch.java b/user-service/src/main/java/com/mh/user/factory/WaterLevelSwitch.java
index f3874b2..f2a3886 100644
--- a/user-service/src/main/java/com/mh/user/factory/WaterLevelSwitch.java
+++ b/user-service/src/main/java/com/mh/user/factory/WaterLevelSwitch.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
/**
@@ -40,4 +42,10 @@ public class WaterLevelSwitch implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return strategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity, collectionParamsManageEntity);
+ }
+
}
diff --git a/user-service/src/main/java/com/mh/user/factory/WtMeter.java b/user-service/src/main/java/com/mh/user/factory/WtMeter.java
index ab6bb4e..30fd58c 100644
--- a/user-service/src/main/java/com/mh/user/factory/WtMeter.java
+++ b/user-service/src/main/java/com/mh/user/factory/WtMeter.java
@@ -1,6 +1,8 @@
package com.mh.user.factory;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
+import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.strategy.DeviceStrategy;
import lombok.extern.slf4j.Slf4j;
@@ -44,4 +46,10 @@ public class WtMeter implements Device {
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
return wtMeterStrategy.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, buildingName, dataStr, deviceCodeParamEntity);
}
+
+ @Override
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity, CollectionParamsManageEntity collectionParamsManageEntity) {
+ return wtMeterStrategy.analysisMQTTReceiveData(dateStr, registerAddr, dataStr, operateType, deviceInstallEntity, collectionParamsManageEntity);
+ }
+
}
diff --git a/user-service/src/main/java/com/mh/user/job/CollectionLoopRunner.java b/user-service/src/main/java/com/mh/user/job/CollectionLoopRunner.java
index 144f81f..33c6cbc 100644
--- a/user-service/src/main/java/com/mh/user/job/CollectionLoopRunner.java
+++ b/user-service/src/main/java/com/mh/user/job/CollectionLoopRunner.java
@@ -67,7 +67,7 @@ public class CollectionLoopRunner implements ApplicationRunner {
// NettyEchoServer nettyEchoServer = new NettyEchoServer();
// nettyEchoServer.bind(8098);
// 初始化mqtt订阅记录
- initializeMqttSubscription();
+// initializeMqttSubscription();
}
/**
diff --git a/user-service/src/main/java/com/mh/user/job/GetWeatherInfoJob.java b/user-service/src/main/java/com/mh/user/job/GetWeatherInfoJob.java
index e609b74..6921041 100644
--- a/user-service/src/main/java/com/mh/user/job/GetWeatherInfoJob.java
+++ b/user-service/src/main/java/com/mh/user/job/GetWeatherInfoJob.java
@@ -42,7 +42,7 @@ public class GetWeatherInfoJob {
/**
* 定时获取每天天气
*/
- @Scheduled(cron = "0 0 0 0/1 * ? ")
+ @Scheduled(cron = "0 0 0 1/1 * ?")
public void getWeatherInfo() {
// 从系统参数中获取对应的项目区域
SysParamEntity sysParam = sysParamService.selectSysParam();
diff --git a/user-service/src/main/java/com/mh/user/mapper/CodeTableMapper.java b/user-service/src/main/java/com/mh/user/mapper/CodeTableMapper.java
index 86c1573..595db22 100644
--- a/user-service/src/main/java/com/mh/user/mapper/CodeTableMapper.java
+++ b/user-service/src/main/java/com/mh/user/mapper/CodeTableMapper.java
@@ -18,4 +18,7 @@ public interface CodeTableMapper {
//从code_table表查询品牌
@Select("select * from code_table where name='brand' ")
List queryBrand();
+
+ @Select("select * from code_table where name=#{name} ")
+ List queryDataByName(String name);
}
diff --git a/user-service/src/main/java/com/mh/user/mapper/CollectionParamsManageMapper.java b/user-service/src/main/java/com/mh/user/mapper/CollectionParamsManageMapper.java
new file mode 100644
index 0000000..4504a9a
--- /dev/null
+++ b/user-service/src/main/java/com/mh/user/mapper/CollectionParamsManageMapper.java
@@ -0,0 +1,128 @@
+package com.mh.user.mapper;
+
+import com.mh.user.entity.CollectionParamsManageEntity;
+import com.mh.user.entity.DeviceInstallEntity;
+import org.apache.ibatis.annotations.*;
+import tk.mybatis.mapper.common.BaseMapper;
+
+import java.util.List;
+
+/**
+ * @author LJF
+ * @version 1.0
+ * @project CHWS
+ * @description 采集参数设备mapper类
+ * @date 2025-12-10 11:31:42
+ */
+@Mapper
+public interface CollectionParamsManageMapper extends BaseMapper {
+
+ @Select("")
+ @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")
+ })
+ List selectCPMList(String buildingId,String deviceInstallId, String otherName, Integer pageNum, Integer pageSize);
+
+ @Select("")
+ int selectCPMListCount(String buildingId, String deviceInstallId, String otherName, Integer pageNum, Integer pageSize);
+
+ @Select("select count(1) from collection_params_manage where other_name = #{otherName} ")
+ int selectCountByOtherName(String otherName);
+
+ @Update("update collection_params_manage set cur_value = #{value}, cur_time = #{time} where other_name = #{name}")
+ void updateCPMByOtherName(String name, float value, String time);
+
+ @Select("select top 1 * from collection_params_manage where other_name = #{name}")
+ CollectionParamsManageEntity selectDeviceInstallByOtherName(String name);
+
+ @Insert("insert into collection_params_manage(" +
+ "device_install_id, register_addr, func_code, mt_ratio, mt_init_value, digits, data_type, " +
+ "mt_is_sum, unit, order_num, remark, register_size, is_use, " +
+ "other_name, grade, param_type_id, collection_type, quality, create_time, building_id, cur_value, cur_time) " +
+ "values(#{deviceInstallId}, #{registerAddr}, #{funcCode}, #{mtRatio}, #{mtInitValue}, " +
+ "#{digits}, #{dataType}, #{mtIsSum}, #{unit}, #{orderNum}, " +
+ "#{remark}, #{registerSize}, #{isUse}, #{otherName}, #{grade}, #{paramTypeId}, " +
+ "#{collectionType}, #{quality}, getdate(), #{buildingId}, #{curValue}, #{curTime})")
+ void insertCPM(CollectionParamsManageEntity cpmEntity);
+
+ @Update("")
+ void updateById(CollectionParamsManageEntity cpmEntity);
+
+ @Delete("delete from collection_params_manage where id = #{msId}")
+ void deleteById(String msId);
+}
diff --git a/user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java b/user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java
index 75df764..125d129 100644
--- a/user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java
+++ b/user-service/src/main/java/com/mh/user/mapper/GatewayManageMapper.java
@@ -115,4 +115,7 @@ public interface GatewayManageMapper {
@Select("select top 1 grade from gateway_manage where data_com = #{dataCom} ")
int queryGatewayByDataCom(@Param("dataCom") String dataCom);
+
+ @Update("update gateway_manage set grade = #{grade}, connect_date = getdate() where sn = #{sn}")
+ void updateGatewayManageOnlineBySn(String sn, int grade);
}
diff --git a/user-service/src/main/java/com/mh/user/mapper/MqttSubscriptionMapper.java b/user-service/src/main/java/com/mh/user/mapper/MqttSubscriptionMapper.java
index cccb641..1260d8b 100644
--- a/user-service/src/main/java/com/mh/user/mapper/MqttSubscriptionMapper.java
+++ b/user-service/src/main/java/com/mh/user/mapper/MqttSubscriptionMapper.java
@@ -22,7 +22,7 @@ public interface MqttSubscriptionMapper extends BaseMapperAND topic = #{topic}" +
"AND status = #{status}" +
- "ORDER BY crate_time DESC " +
+ "ORDER BY create_time DESC " +
"")
List selectListByTopic(@Param("topic") String topic,
@Param("status") String status);
diff --git a/user-service/src/main/java/com/mh/user/model/SanShiFengDatas.java b/user-service/src/main/java/com/mh/user/model/SanShiFengDatas.java
index cc9c63e..28e0772 100644
--- a/user-service/src/main/java/com/mh/user/model/SanShiFengDatas.java
+++ b/user-service/src/main/java/com/mh/user/model/SanShiFengDatas.java
@@ -15,16 +15,16 @@ public class SanShiFengDatas {
/**
* 对应研华的标签值
*/
- private String tag;
+ private String name;
/**
* 上报值
*/
private T value;
- /**
- * 质量值
- */
- private T quality;
+// /**
+// * 质量值
+// */
+// private T quality;
}
diff --git a/user-service/src/main/java/com/mh/user/model/SanShiFengReceiver.java b/user-service/src/main/java/com/mh/user/model/SanShiFengReceiver.java
index b76c17b..297f0b8 100644
--- a/user-service/src/main/java/com/mh/user/model/SanShiFengReceiver.java
+++ b/user-service/src/main/java/com/mh/user/model/SanShiFengReceiver.java
@@ -19,11 +19,17 @@ public class SanShiFengReceiver {
/**
* 数据集合
*/
- private List d;
+ private List datas;
/**
* 主动上报数据时间(带T类型)
*/
- private String ts;
+ private String sn;
+
+ private String plcName;
+
+ private String projectName;
+
+ private String time;
}
diff --git a/user-service/src/main/java/com/mh/user/service/CodeTableService.java b/user-service/src/main/java/com/mh/user/service/CodeTableService.java
index ce8850c..548ee6a 100644
--- a/user-service/src/main/java/com/mh/user/service/CodeTableService.java
+++ b/user-service/src/main/java/com/mh/user/service/CodeTableService.java
@@ -9,4 +9,6 @@ public interface CodeTableService {
List queryDeviceType();
List queryBrand();
+
+ List queryDataByName(String name);
}
diff --git a/user-service/src/main/java/com/mh/user/service/CollectionParamsManageService.java b/user-service/src/main/java/com/mh/user/service/CollectionParamsManageService.java
new file mode 100644
index 0000000..ffa0625
--- /dev/null
+++ b/user-service/src/main/java/com/mh/user/service/CollectionParamsManageService.java
@@ -0,0 +1,32 @@
+package com.mh.user.service;
+
+import com.mh.user.entity.CollectionParamsManageEntity;
+import com.mh.user.entity.DeviceInstallEntity;
+
+import java.util.List;
+
+/**
+ * @author LJF
+ * @version 1.0
+ * @project EEMCS
+ * @description 采集参数管理
+ * @date 2025-02-14 13:58:37
+ */
+public interface CollectionParamsManageService {
+
+ List selectCPMList(String buildingId, String deviceInstallId, String otherName, Integer pageNum, Integer pageSize);
+
+ int selectCPMListCount(String buildingId, String deviceInstallId, String otherName, Integer pageNum, Integer pageSize);
+
+ CollectionParamsManageEntity selectById(String msId);
+
+ String insertCPM(CollectionParamsManageEntity mqttSubscription);
+
+ String updateCPM(CollectionParamsManageEntity mqttSubscription);
+
+ int deleteByIds(String[] msIds);
+
+ void updateCPMByOtherName(String name, float value, String time);
+
+ CollectionParamsManageEntity selectDeviceInstallByOtherName(String name);
+}
diff --git a/user-service/src/main/java/com/mh/user/service/GatewayManageService.java b/user-service/src/main/java/com/mh/user/service/GatewayManageService.java
index 12bbf3a..e2924f7 100644
--- a/user-service/src/main/java/com/mh/user/service/GatewayManageService.java
+++ b/user-service/src/main/java/com/mh/user/service/GatewayManageService.java
@@ -53,4 +53,6 @@ public interface GatewayManageService {
void updateGatewayManageOnlineByHeartBeatCode(String heartBeat, int status);
void updateGatewayManageOnlineByImei(String imei, int status);
+
+ void updateGatewayManageOnlineBySn(String sn, int grade);
}
diff --git a/user-service/src/main/java/com/mh/user/service/impl/CodeTableServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/CodeTableServiceImpl.java
index 5978de9..97c3ce0 100644
--- a/user-service/src/main/java/com/mh/user/service/impl/CodeTableServiceImpl.java
+++ b/user-service/src/main/java/com/mh/user/service/impl/CodeTableServiceImpl.java
@@ -6,6 +6,7 @@ import com.mh.user.service.CodeTableService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.Collections;
import java.util.List;
@Service
@@ -23,4 +24,9 @@ public class CodeTableServiceImpl implements CodeTableService {
public List queryBrand() {
return codeTableMapper.queryBrand();
}
+
+ @Override
+ public List queryDataByName(String name) {
+ return codeTableMapper.queryDataByName(name);
+ }
}
diff --git a/user-service/src/main/java/com/mh/user/service/impl/CollectionParamsManageServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/CollectionParamsManageServiceImpl.java
new file mode 100644
index 0000000..1af7755
--- /dev/null
+++ b/user-service/src/main/java/com/mh/user/service/impl/CollectionParamsManageServiceImpl.java
@@ -0,0 +1,84 @@
+package com.mh.user.service.impl;
+
+import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
+import com.mh.user.entity.DeviceInstallEntity;
+import com.mh.user.mapper.CollectionParamsManageMapper;
+import com.mh.user.service.CollectionParamsManageService;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author LJF
+ * @version 1.0
+ * @project CHWS
+ * @description 采集参数设备实现类
+ * @date 2025-12-10 11:30:54
+ */
+@Service
+public class CollectionParamsManageServiceImpl implements CollectionParamsManageService {
+
+ private final CollectionParamsManageMapper collectionParamsManageMapper;
+
+ public CollectionParamsManageServiceImpl(CollectionParamsManageMapper collectionParamsManageMapper) {
+ this.collectionParamsManageMapper = collectionParamsManageMapper;
+ }
+
+ @Override
+ public CollectionParamsManageEntity selectDeviceInstallByOtherName(String name) {
+ return collectionParamsManageMapper.selectDeviceInstallByOtherName(name);
+ }
+
+ @Override
+ public void updateCPMByOtherName(String name, float value, String time) {
+ collectionParamsManageMapper.updateCPMByOtherName(name, value, time);
+ }
+
+ @Override
+ public List selectCPMList(String buildingId, String deviceInstallId, String otherName, Integer pageNum, Integer pageSize) {
+ return collectionParamsManageMapper.selectCPMList(buildingId, deviceInstallId, otherName, pageNum, pageSize);
+ }
+
+ @Override
+ public int selectCPMListCount(String buildingId, String deviceInstallId, String otherName, Integer pageNum, Integer pageSize) {
+ return collectionParamsManageMapper.selectCPMListCount(buildingId, deviceInstallId, otherName, pageNum, pageSize);
+ }
+
+ @Override
+ public CollectionParamsManageEntity selectById(String msId) {
+ return collectionParamsManageMapper.selectByPrimaryKey(msId);
+ }
+
+ @Override
+ public String insertCPM(CollectionParamsManageEntity cpmEntity) {
+ // 判断是否存在otherName
+ if (collectionParamsManageMapper.selectCountByOtherName(cpmEntity.getOtherName()) > 0) {
+ return "存在相同参数名称";
+ }
+ collectionParamsManageMapper.insertCPM(cpmEntity);
+ return Constant.SUCCESS;
+ }
+
+ @Override
+ public String updateCPM(CollectionParamsManageEntity cpmEntity) {
+ // 判断是否存在otherName
+// if (collectionParamsManageMapper.selectCountByOtherName(cpmEntity.getOtherName()) > 0) {
+// return "存在相同参数名称";
+// }
+ collectionParamsManageMapper.updateById(cpmEntity);
+ return Constant.SUCCESS;
+ }
+
+ @Override
+ public int deleteByIds(String[] msIds) {
+ if (msIds != null && msIds.length > 0) {
+ for (String msId : msIds) {
+ collectionParamsManageMapper.deleteById(msId);
+ }
+ return msIds.length;
+ }
+ return 0;
+ }
+}
diff --git a/user-service/src/main/java/com/mh/user/service/impl/GatewayManageServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/GatewayManageServiceImpl.java
index e8ef4ea..fefffc1 100644
--- a/user-service/src/main/java/com/mh/user/service/impl/GatewayManageServiceImpl.java
+++ b/user-service/src/main/java/com/mh/user/service/impl/GatewayManageServiceImpl.java
@@ -108,4 +108,9 @@ public class GatewayManageServiceImpl implements GatewayManageService {
public void updateGatewayManageOnlineByImei(String imei, int status) {
gatewayManageMapper.updateGatewayManageOnlineByImei(imei, status);
}
+
+ @Override
+ public void updateGatewayManageOnlineBySn(String sn, int grade) {
+ gatewayManageMapper.updateGatewayManageOnlineBySn(sn, grade);
+ }
}
diff --git a/user-service/src/main/java/com/mh/user/service/mqtt/config/MqttConfig.java b/user-service/src/main/java/com/mh/user/service/mqtt/config/MqttConfig.java
index a307097..afce38d 100644
--- a/user-service/src/main/java/com/mh/user/service/mqtt/config/MqttConfig.java
+++ b/user-service/src/main/java/com/mh/user/service/mqtt/config/MqttConfig.java
@@ -82,9 +82,9 @@ public class MqttConfig {
mqttConnectOptions.setPassword(StringUtils.hasText(customizeOptions.getPassword()) ?
customizeOptions.getPassword().toCharArray() : new char[0]);
// 直接进行自动连接
- mqttConnectOptions.setAutomaticReconnect(true);
+ mqttConnectOptions.setAutomaticReconnect(false);
// 时间间隔时间10s
- mqttConnectOptions.setKeepAliveInterval(10);
+ mqttConnectOptions.setKeepAliveInterval(1000);
return mqttConnectOptions;
}
diff --git a/user-service/src/main/java/com/mh/user/service/mqtt/service/impl/EventsServiceImpl.java b/user-service/src/main/java/com/mh/user/service/mqtt/service/impl/EventsServiceImpl.java
index 29f04ca..5765ed1 100644
--- a/user-service/src/main/java/com/mh/user/service/mqtt/service/impl/EventsServiceImpl.java
+++ b/user-service/src/main/java/com/mh/user/service/mqtt/service/impl/EventsServiceImpl.java
@@ -3,8 +3,18 @@ package com.mh.user.service.mqtt.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mh.user.constants.ChannelName;
+import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
+import com.mh.user.entity.DeviceInstallEntity;
+import com.mh.user.factory.Device;
+import com.mh.user.factory.DeviceFactory;
import com.mh.user.model.SanShiFengReceiver;
+import com.mh.user.service.CollectionParamsManageService;
+import com.mh.user.service.DeviceInstallService;
+import com.mh.user.service.GatewayManageService;
import com.mh.user.service.mqtt.service.IEventsService;
+import com.mh.user.strategy.DeviceStrategy;
+import com.mh.user.strategy.DeviceStrategyFactory;
import io.netty.util.CharsetUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -13,6 +23,7 @@ import org.springframework.messaging.MessageHeaders;
import org.springframework.stereotype.Service;
import java.io.IOException;
+import java.util.List;
import java.util.Objects;
/**
@@ -29,6 +40,15 @@ public class EventsServiceImpl implements IEventsService {
@Autowired
private ObjectMapper mapper;
+ @Autowired
+ private GatewayManageService gatewayManageService;
+
+ @Autowired
+ private CollectionParamsManageService collectionParamManageService;
+
+ @Autowired
+ private DeviceInstallService deviceInstallService;
+
@ServiceActivator(inputChannel = ChannelName.EVENTS_UPLOAD_INBOUND)
@Override
public void handleInboundUpload(byte[] receiver, MessageHeaders headers) {
@@ -62,10 +82,43 @@ public class EventsServiceImpl implements IEventsService {
private void handleInboundData(byte[] receiver,String topic, String logMessage) {
try {
- SanShiFengReceiver commonTopicReceiver = new SanShiFengReceiver();
- commonTopicReceiver = mapper.readValue(receiver, SanShiFengReceiver.class);
- log.info("主题:{},类型:{}: ,数据:{}", topic, logMessage, commonTopicReceiver.toString());
- // 不使用消息队列,查询属于哪种设备类型,然后通过策略进行数据解析
+ SanShiFengReceiver datas = new SanShiFengReceiver();
+ datas = mapper.readValue(receiver, SanShiFengReceiver.class);
+ log.info("主题:{},类型:{}: ,数据:{}", topic, logMessage, datas.toString());
+ // 开始遍历 数据
+ String sn = datas.getSn();
+ String plcName = datas.getPlcName();
+ String projectName = datas.getProjectName();
+ String time = datas.getTime();
+ // 更新网关设备在线状态
+ gatewayManageService.updateGatewayManageOnlineBySn(sn, 0);
+ List datasList = datas.getDatas();
+ for (JSONObject data : datasList) {
+ // 不使用消息队列,查询属于哪种设备类型,然后通过策略进行数据解析
+ log.info("设备SN:{},PLC名称:{},项目名称:{},时间:{},数据:{}", sn, plcName, projectName, time, data.toString());
+ // 获取点位参数名称
+ String name = data.getString("name");
+ // 获取点位值
+ float value = data.getFloatValue("value");
+ // 直接更新collectionParamManage参数值
+ collectionParamManageService.updateCPMByOtherName(name, value, time);
+ // 查询device_install表,走之前的逻辑
+ CollectionParamsManageEntity collectionParamsManageEntity = collectionParamManageService.selectDeviceInstallByOtherName(name);
+ if (collectionParamsManageEntity.getDeviceInstallId() != null) {
+ DeviceInstallEntity deviceInstallEntity = deviceInstallService.selectDeviceById(collectionParamsManageEntity.getDeviceInstallId());
+ if (deviceInstallEntity != null) {
+ // 开始走策略判断
+ String deviceType = deviceInstallEntity.getDeviceType();
+ Device device = DeviceFactory.createDevice(deviceType);
+ DeviceStrategy strategy = DeviceStrategyFactory.createStrategy(deviceType);
+ if (null == strategy) {
+ continue;
+ }
+ device.setStrategy(strategy);
+ device.analysisMQTTReceiveData(time, deviceInstallEntity.getDeviceAddr(), String.valueOf(value), Constant.READ, deviceInstallEntity, collectionParamsManageEntity);
+ }
+ }
+ }
} catch (IOException e) {
log.error("处理数据时发生错误: ", e);
}
diff --git a/user-service/src/main/java/com/mh/user/service/mqtt/service/impl/MqttTopicServiceImpl.java b/user-service/src/main/java/com/mh/user/service/mqtt/service/impl/MqttTopicServiceImpl.java
index 5eba529..f66f7b5 100644
--- a/user-service/src/main/java/com/mh/user/service/mqtt/service/impl/MqttTopicServiceImpl.java
+++ b/user-service/src/main/java/com/mh/user/service/mqtt/service/impl/MqttTopicServiceImpl.java
@@ -1,10 +1,11 @@
package com.mh.user.service.mqtt.service.impl;
-import com.mh.framework.mqtt.service.IMqttTopicService;
-import jakarta.annotation.Resource;
+import com.mh.user.service.mqtt.service.IMqttTopicService;
import org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannelAdapter;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+
/**
* @author LJF
* @version 1.0
diff --git a/user-service/src/main/java/com/mh/user/strategy/BackTempControlStrategy.java b/user-service/src/main/java/com/mh/user/strategy/BackTempControlStrategy.java
index 94df221..3b296eb 100644
--- a/user-service/src/main/java/com/mh/user/strategy/BackTempControlStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/BackTempControlStrategy.java
@@ -1,6 +1,7 @@
package com.mh.user.strategy;
import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.entity.NowPublicDataEntity;
@@ -107,7 +108,8 @@ public class BackTempControlStrategy implements DeviceStrategy {
String registerAddr,
String dataStr,
String operateType,
- DeviceInstallEntity deviceInstallEntity) {
+ DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
String result = Constant.FAIL;
if (Integer.parseInt(dataStr) < 0) {
log.info("回水温控报文检验失败: " + dataStr);
diff --git a/user-service/src/main/java/com/mh/user/strategy/DeviceStrategy.java b/user-service/src/main/java/com/mh/user/strategy/DeviceStrategy.java
index 1a848c2..173afcd 100644
--- a/user-service/src/main/java/com/mh/user/strategy/DeviceStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/DeviceStrategy.java
@@ -1,5 +1,6 @@
package com.mh.user.strategy;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
@@ -32,5 +33,6 @@ public interface DeviceStrategy {
String registerAddr,
String dataStr,
String operateType,
- DeviceInstallEntity deviceInstallEntity);
+ DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity);
}
diff --git a/user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java b/user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java
index d3feb43..498858e 100644
--- a/user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/EleMeterStrategy.java
@@ -2,6 +2,7 @@ package com.mh.user.strategy;
import com.mh.common.utils.StringUtils;
import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DataResultEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
@@ -46,22 +47,15 @@ public class EleMeterStrategy implements DeviceStrategy {
String deviceAddr = deviceCodeParamEntity.getDeviceAddr();
if (deviceAddr != null && deviceAddr.length() > 0) {
try {
- // 增加一个判断,判断是否是广仪电表modbus协议
- if ("广仪MODBUS协议".equals(deviceCodeParamEntity.getBrand())) {
+ // 增加一个判断,判断是否是广仪电表modbus协议 广仪MODBUS协议
+ if ("广仪MODBUS协议".equals(deviceCodeParamEntity.getBrand()) || deviceCodeParamEntity.getBrand().contains("广仪MODBUS")) {
str = ExchangeStringUtil.decToHex(deviceAddr);
str = ExchangeStringUtil.addZeroForNum(str, 2); //以0补位
-// if(registerAddr.equals("")){
-// str=str+"0300000002";
-// }else if(registerAddr.equals("")){
-// str=str+"0300000002";
-// }
-// String funCode = ExchangeStringUtil.addZeroForNum(deviceCodeParamEntity.getFunCode(), 2);
-// if ("04".equals(funCode)) {
- str = str + "04" + "00010002";
-// }
+ str = str + "04" + "00010002";
String checkWord = ExchangeStringUtil.getStrCRC16(str); //CRC16校验
str = str + checkWord;
- } if ("广仪07规约".equals(deviceCodeParamEntity.getBrand())) {
+ return str.toUpperCase();
+ } else if ("广仪07规约".equals(deviceCodeParamEntity.getBrand())) {
//0代表前面补充0,12代表长度为12,d代表参数为正数型,基表通讯号
str = String.format("%012d", Long.parseLong(deviceAddr));
//转换位置
@@ -74,6 +68,7 @@ public class EleMeterStrategy implements DeviceStrategy {
//检验和
String checkSum = ExchangeStringUtil.makeChecksum(str);
str = "FEFEFE" + str + checkSum + "16";
+ return str.toUpperCase();
} else {
//0代表前面补充0,12代表长度为12,d代表参数为正数型,基表通讯号
str = String.format("%012d", Long.parseLong(deviceAddr));
@@ -160,7 +155,8 @@ public class EleMeterStrategy implements DeviceStrategy {
}
@Override
- public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity) {
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
String data = Constant.FAIL;
if (Integer.parseInt(dataStr) < 0) {
return data;
diff --git a/user-service/src/main/java/com/mh/user/strategy/HeatPumpStatusStrategy.java b/user-service/src/main/java/com/mh/user/strategy/HeatPumpStatusStrategy.java
index e3a35d8..53a59ca 100644
--- a/user-service/src/main/java/com/mh/user/strategy/HeatPumpStatusStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/HeatPumpStatusStrategy.java
@@ -3,6 +3,7 @@ package com.mh.user.strategy;
import com.alibaba.fastjson2.JSON;
import com.mh.common.utils.StringUtils;
import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.service.BuildingService;
@@ -241,7 +242,8 @@ public class HeatPumpStatusStrategy implements DeviceStrategy {
}
@Override
- public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity) {
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
return "";
}
}
diff --git a/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java b/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java
index e5afbc3..35fd41b 100644
--- a/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java
@@ -2,6 +2,7 @@ package com.mh.user.strategy;
import com.mh.common.utils.StringUtils;
import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.entity.NowPublicDataEntity;
@@ -673,7 +674,69 @@ public class HeatPumpStrategy implements DeviceStrategy {
}
@Override
- public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity) {
- return "";
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
+ String dataType = "";
+ String sValue = "";
+ long paramTypeId = collectionParamsManageEntity.getParamTypeId();
+ if (paramTypeId == 0) {
+ return null;
+ }
+ if (paramTypeId == 2) { //运行状态
+ dataType = "runState";
+ if (dataStr.equalsIgnoreCase("2")) { //0
+ sValue = "运行"; //关机
+ } else {//2
+ sValue = "不运行"; //制冷
+ }
+ //计算热泵运行时间,按分钟
+ nowDataService.proPumpMinutes(deviceInstallEntity.getBuildingId(), deviceInstallEntity.getDeviceAddr(), sValue);
+ log.info("计算热泵运行时长,楼栋名称:" + deviceInstallEntity.getBuildingName() + ",热泵编号:" + deviceInstallEntity.getDeviceAddr() + ",状态:" + sValue);
+ } else if (paramTypeId == 7 || paramTypeId == 10) {
+ //7设定温度,10水箱水温
+ if (paramTypeId == 7) {
+ dataType = "tempSet";
+ } else {
+ dataType = "waterTemp";
+ }
+ //读数
+ sValue = dataStr;
+ if (dataType.equals("waterTemp")) {
+ String avgTemp = nowDataService.selectAve(deviceInstallEntity.getBuildingId());
+ NowPublicDataEntity publicData = new NowPublicDataEntity();
+ publicData.setBuildingId(deviceInstallEntity.getBuildingId());
+ publicData.setUseWaterTemp(avgTemp);
+ publicData.setBackWaterTemp(avgTemp);
+ String pumpId = nowDataService.selectMinPumpId(deviceInstallEntity.getBuildingId());
+ // 如果是华夏,则取新增得字段标识为热泵ID
+ String name = dealDataService.customName();
+ if (name.contains(Constant.CUSTOM_NAME_HUAXIA) || name.contains(Constant.CUSTOM_NAME_HUARUAN)) {
+ pumpId = deviceInstallService.selectSinglePumpId(deviceInstallEntity.getBuildingId(), deviceInstallEntity.getDeviceAddr());
+ }
+ log.info("---------------addr:" + deviceInstallEntity.getDeviceAddr() + ",pumpId:" + pumpId + " ---------------");
+ if (deviceInstallEntity.getDeviceAddr().equals(pumpId)) { //取ID最小的热泵为单箱温度
+ publicData.setSingleTemp(sValue);
+ log.info("---------------单箱温度:" + sValue + "---------------");
+ }
+ nowPublicDataService.saveNowHistoryPublicData(publicData);
+ log.info("楼栋名称:" + deviceInstallEntity.getBuildingName() + ",热泵编号:" + deviceInstallEntity.getDeviceAddr());
+ } else {
+ pumpSetService.updatePumpSetTemp(sValue, deviceInstallEntity.getBuildingId(), deviceInstallEntity.getDeviceAddr()); //更新设定温度
+ }
+ } else if (paramTypeId == 3) { //故障状态
+ dataType = "isFault";
+ if (dataStr.equals("0")) {
+ sValue = "无故障";
+ } else {
+ sValue = "有故障";
+ }
+ }
+ if (!StringUtils.isBlank(sValue)) {
+ nowDataService.saveNowHistoryData(deviceInstallEntity.getDeviceAddr(), "热泵", sValue, dataType.toString(), deviceInstallEntity.getBuildingId());
+ log.info("时间: " + dateStr + "热泵ID:" + deviceInstallEntity.getDeviceAddr() + ",数据: " + dataStr + ",保存数据库成功!楼栋名称:" + deviceInstallEntity.getBuildingName());
+ }
+ nowDataService.proWaterTemp(dateStr, deviceInstallEntity.getBuildingId(), deviceInstallEntity.getDeviceAddr()); //保存楼栋时间点温度变化
+ log.info("----------------保存楼栋时间点温度变化值!----------------");
+ return sValue;
}
}
diff --git a/user-service/src/main/java/com/mh/user/strategy/MultiControlStrategy.java b/user-service/src/main/java/com/mh/user/strategy/MultiControlStrategy.java
index b7f90b8..79dd462 100644
--- a/user-service/src/main/java/com/mh/user/strategy/MultiControlStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/MultiControlStrategy.java
@@ -392,7 +392,8 @@ public class MultiControlStrategy implements DeviceStrategy {
}
@Override
- public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity) {
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
return "";
}
}
diff --git a/user-service/src/main/java/com/mh/user/strategy/PressureTransStrategy.java b/user-service/src/main/java/com/mh/user/strategy/PressureTransStrategy.java
index 0a9a1d4..8ab87bb 100644
--- a/user-service/src/main/java/com/mh/user/strategy/PressureTransStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/PressureTransStrategy.java
@@ -2,6 +2,7 @@ package com.mh.user.strategy;
import com.mh.common.utils.StringUtils;
import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.service.*;
@@ -130,7 +131,8 @@ public class PressureTransStrategy implements DeviceStrategy {
}
@Override
- public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity) {
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
String result = "fail";
if (Integer.parseInt(dataStr) < 0) {
return result;
diff --git a/user-service/src/main/java/com/mh/user/strategy/StatusCheckStrategy.java b/user-service/src/main/java/com/mh/user/strategy/StatusCheckStrategy.java
index 7632bfd..deb8a86 100644
--- a/user-service/src/main/java/com/mh/user/strategy/StatusCheckStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/StatusCheckStrategy.java
@@ -1,6 +1,7 @@
package com.mh.user.strategy;
import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.entity.NowPublicDataEntity;
@@ -127,7 +128,8 @@ public class StatusCheckStrategy implements DeviceStrategy {
}
@Override
- public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity) {
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
return "";
}
}
diff --git a/user-service/src/main/java/com/mh/user/strategy/TempControlStrategy.java b/user-service/src/main/java/com/mh/user/strategy/TempControlStrategy.java
index 5572c2f..23517b7 100644
--- a/user-service/src/main/java/com/mh/user/strategy/TempControlStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/TempControlStrategy.java
@@ -1,6 +1,7 @@
package com.mh.user.strategy;
import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.entity.NowPublicDataEntity;
@@ -116,7 +117,8 @@ public class TempControlStrategy implements DeviceStrategy {
}
@Override
- public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity) {
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
String result = Constant.FAIL;
if (Integer.parseInt(dataStr) < 0) {
log.info("温控报文检验失败: " + dataStr);
diff --git a/user-service/src/main/java/com/mh/user/strategy/TempTransStrategy.java b/user-service/src/main/java/com/mh/user/strategy/TempTransStrategy.java
index e860274..8170333 100644
--- a/user-service/src/main/java/com/mh/user/strategy/TempTransStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/TempTransStrategy.java
@@ -2,6 +2,7 @@ package com.mh.user.strategy;
import com.alibaba.fastjson2.JSON;
import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.entity.NowPublicDataEntity;
@@ -120,7 +121,8 @@ public class TempTransStrategy implements DeviceStrategy {
}
@Override
- public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity) {
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
return "";
}
}
diff --git a/user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java b/user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java
index 61dcb05..cd0d13c 100644
--- a/user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/TimeControlStrategy.java
@@ -2,6 +2,7 @@ package com.mh.user.strategy;
import com.mh.common.utils.StringUtils;
import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.service.NowDataService;
@@ -182,14 +183,14 @@ public class TimeControlStrategy implements DeviceStrategy {
// 开关时间
// 发送:0603001E0001E5BB
// 返回:0603020041CDB4
- if (rec == 14 && (isExactlyDivisible("001E", registerAddr)
- || isExactlyDivisible("001F", registerAddr)
- || isExactlyDivisible("0020", registerAddr)
- || isExactlyDivisible("0021", registerAddr)
- || isExactlyDivisible("0022", registerAddr)
- || isExactlyDivisible("0023", registerAddr)
- || isExactlyDivisible("0024", registerAddr)
- || isExactlyDivisible("0025", registerAddr)
+ if (rec == 14 && (isExactlyDivisibleMH("001E", registerAddr)
+ || isExactlyDivisibleMH("001F", registerAddr)
+ || isExactlyDivisibleMH("0020", registerAddr)
+ || isExactlyDivisibleMH("0021", registerAddr)
+ || isExactlyDivisibleMH("0022", registerAddr)
+ || isExactlyDivisibleMH("0023", registerAddr)
+ || isExactlyDivisibleMH("0024", registerAddr)
+ || isExactlyDivisibleMH("0025", registerAddr)
)) {
// 开关时间
data = ExchangeStringUtil.hexToDec(checkStr.substring(6, 10));
@@ -198,12 +199,12 @@ public class TimeControlStrategy implements DeviceStrategy {
int hours = totalMinutes / 60;
int minutes = totalMinutes % 60;
data = String.format("%02d%02d", hours, minutes);
- } else if (rec == 14 && isExactlyDivisible("0018", registerAddr)) {
+ } else if (rec == 14 && (isExactlyDivisibleMH("0018", registerAddr))) {
// 星期掩码
// 截取时间
// 发送:06030018000105BA
// 返回:060302007F4C64
- data = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.hexString2binaryString(checkStr.substring(8, 10)), 8);
+ data = ExchangeStringUtil.addZeroForNum(new StringBuilder(ExchangeStringUtil.hexString2binaryString(checkStr.substring(8, 10))).reverse().toString(), 8);
// 截取七天
data = new StringBuilder(data).reverse().substring(0, 7);
} else if (rec == 38 && isExactlyDivisible("0000", registerAddr)) {
@@ -233,7 +234,7 @@ public class TimeControlStrategy implements DeviceStrategy {
} else if (rec == 14 && isExactlyDivisible("0043", registerAddr)) {
// 星期掩码
// 截取时间
- data = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.hexString2binaryString(checkStr.substring(8, 10)), 8);
+ data = ExchangeStringUtil.addZeroForNum(new StringBuilder(ExchangeStringUtil.hexString2binaryString(checkStr.substring(8, 10))).reverse().toString(), 8);
// 截取七天
data = new StringBuilder(data).reverse().substring(0, 7);
} else if (rec == 18 && isExactlyDivisible("0044", registerAddr)) {
@@ -278,7 +279,6 @@ public class TimeControlStrategy implements DeviceStrategy {
return result;
}
- // 判断是否可以整除
private static boolean isExactlyDivisible(String baseAddr, String registerAddr) {
// 16进制转十进制
int baseAddrInt = ExchangeStringUtil.hexToDecimal(baseAddr);
@@ -293,8 +293,34 @@ public class TimeControlStrategy implements DeviceStrategy {
return false;
}
+ // 判断是否可以整除
+ private static boolean isExactlyDivisibleMH(String baseAddr, String registerAddr) {
+ // 16进制转十进制
+ int baseAddrInt = ExchangeStringUtil.hexToDecimal(baseAddr);
+ int registerAddrInt = ExchangeStringUtil.hexToDecimal(registerAddr);
+
+ // 如果registerAddrInt等于baseAddrInt,直接返回true
+ if (registerAddrInt == baseAddrInt) {
+ return true;
+ }
+
+ // 如果registerAddrInt大于baseAddrInt,持续减18,看是否等于baseAddrInt
+ if (registerAddrInt > baseAddrInt) {
+ int temp = registerAddrInt;
+ while (temp > baseAddrInt) {
+ temp -= 18;
+ }
+ // 判断是否等于baseAddrInt
+ return temp == baseAddrInt;
+ }
+
+ return false;
+ }
+
+
@Override
- public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity) {
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
return "";
}
}
diff --git a/user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java b/user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java
index 1320dd4..a240211 100644
--- a/user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/WaterLevelSwitchStrategy.java
@@ -3,10 +3,7 @@ package com.mh.user.strategy;
import com.alibaba.fastjson2.JSON;
import com.mh.common.utils.StringUtils;
import com.mh.user.constants.Constant;
-import com.mh.user.entity.DeviceCodeParamEntity;
-import com.mh.user.entity.DeviceInstallEntity;
-import com.mh.user.entity.NowPublicDataEntity;
-import com.mh.user.entity.SysParamEntity;
+import com.mh.user.entity.*;
import com.mh.user.service.*;
import com.mh.user.utils.ExchangeStringUtil;
import com.mh.user.utils.SpringBeanUtil;
@@ -578,7 +575,8 @@ public class WaterLevelSwitchStrategy implements DeviceStrategy {
}
@Override
- public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity) {
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
return "";
}
}
diff --git a/user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java b/user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java
index 5f7d50b..5e6269a 100644
--- a/user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java
+++ b/user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java
@@ -2,6 +2,7 @@ package com.mh.user.strategy;
import com.mh.common.utils.StringUtils;
import com.mh.user.constants.Constant;
+import com.mh.user.entity.CollectionParamsManageEntity;
import com.mh.user.entity.DataResultEntity;
import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
@@ -22,7 +23,7 @@ import java.util.Date;
* @date 2024-03-18 09:51:17
*/
@Slf4j
-public class WtMeterStrategy implements DeviceStrategy {
+public class WtMeterStrategy implements DeviceStrategy {
ApplicationContext context = SpringBeanUtil.getApplicationContext();
@@ -136,7 +137,8 @@ public class WtMeterStrategy implements DeviceStrategy {
}
@Override
- public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity) {
+ public String analysisMQTTReceiveData(String dateStr, String registerAddr, String dataStr, String operateType, DeviceInstallEntity deviceInstallEntity,
+ CollectionParamsManageEntity collectionParamsManageEntity) {
String data = Constant.FAIL;
if (Integer.parseInt(dataStr) < 0) {
return data;
diff --git a/user-service/src/main/resources/application-dev.yml b/user-service/src/main/resources/application-dev.yml
index 90fa9f5..ea05b9a 100644
--- a/user-service/src/main/resources/application-dev.yml
+++ b/user-service/src/main/resources/application-dev.yml
@@ -8,7 +8,7 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource
druid:
#添加allowMultiQueries=true 在批量更新时才不会出错
- url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=chws_bsdz;allowMultiQueries=true
+ url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=chws_bsdz;allowMultiQueries=true;encrypt=false
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: mh@803
diff --git a/user-service/src/main/resources/application-prod.yml b/user-service/src/main/resources/application-prod.yml
index ff10893..eb33eba 100644
--- a/user-service/src/main/resources/application-prod.yml
+++ b/user-service/src/main/resources/application-prod.yml
@@ -14,10 +14,10 @@ spring:
# password: mh@803
## 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
- driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
- username: test
- password: minghan123456@
+# url: jdbc:sqlserver://111.230.50.186:32012;DatabaseName=CHWS;allowMultiQueries=true;encrypt=false
+# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+# username: test
+# password: minghan123456@
# #华厦云服务器
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=CHWS;allowMultiQueries=true
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
@@ -29,10 +29,10 @@ spring:
# username: chws_gsh
# password: Mhtech@803
#广商服务器
-# url: jdbc:sqlserver://175.178.153.91:8033;DatabaseName=chws_gsh;allowMultiQueries=true
-# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-# username: chws_gsh
-# password: Mhtech@803gsh
+ url: jdbc:sqlserver://175.178.153.91:8033;DatabaseName=chws_gsh;allowMultiQueries=true;encrypt=false
+ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+ username: chws_gsh
+ password: Mhtech@803gsh
#本机
# url: jdbc:sqlserver://127.0.0.1:9956;DatabaseName=CHWS;allowMultiQueries=true
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
@@ -143,4 +143,27 @@ logging:
amap:
key: 984603bf28ef94ac78765a3ea27a6c26
+mqttSpring:
+ # BASIC parameters are required.
+ BASIC:
+ protocol: MQTT
+ host: 192.168.1.79
+ port: 1883
+ username: test
+ password: test123456
+ client-id: chws_nfxy_mqtt_dev
+ # If the protocol is ws/wss, this value is required.
+ path:
+ # Topics that need to be subscribed when initially connecting to mqtt, multiple topics are divided by ",".
+ inbound-topic: chws_nfxy_mqtt_dev/read/events_upload/devices
+ # 此部分是提供给后端生成token返回给前端,让前端使用websocket方式去和MQTT实现交互的,笔者此文的案例中并没有去实现
+ # 无人机远程控制模式(drone remote control)
+ DRC:
+ protocol: WS
+ host: 192.168.1.79
+ port: 8083
+ path: /mqtt
+control:
+ topic: chws_nfxy_mqtt_dev/control/events_upload/devices
+
diff --git a/user-service/src/main/resources/application.yml b/user-service/src/main/resources/application.yml
index 3d7808a..081dc84 100644
--- a/user-service/src/main/resources/application.yml
+++ b/user-service/src/main/resources/application.yml
@@ -1,3 +1,6 @@
spring:
profiles:
- active: dev
+ active: prod
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher
diff --git a/user-service/src/test/java/com/mh/user/device/CRC16Test.java b/user-service/src/test/java/com/mh/user/device/CRC16Test.java
index a26eec9..77185c4 100644
--- a/user-service/src/test/java/com/mh/user/device/CRC16Test.java
+++ b/user-service/src/test/java/com/mh/user/device/CRC16Test.java
@@ -69,21 +69,45 @@ public class CRC16Test {
}
//测试
public static void main(String[] args) throws IOException {
- String lastHourTime = "2020-06-03 01:00:00";
- // lastHourTime转换成LocalDateTime
- LocalDateTime lastHour1 = null;
- if(lastHourTime != null && !"".equals(lastHourTime)){
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
- lastHour1 = LocalDateTime.parse(lastHourTime, formatter);
- System.out.println(lastHour1);
+// String lastHourTime = "2020-06-03 01:00:00";
+// // lastHourTime转换成LocalDateTime
+// LocalDateTime lastHour1 = null;
+// if(lastHourTime != null && !"".equals(lastHourTime)){
+// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+// lastHour1 = LocalDateTime.parse(lastHourTime, formatter);
+// System.out.println(lastHour1);
+// }
+//
+// LocalDateTime now = lastHour1;
+// LocalDateTime lastHour = now.minusHours(1);
+// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:00:00");
+// lastHourTime = lastHour.format(formatter);
+// System.out.println(lastHourTime);
+ System.out.println(isExactlyDivisible("0018", "002A"));
+
+ }
+
+ private static boolean isExactlyDivisible(String baseAddr, String registerAddr) {
+ // 16进制转十进制
+ int baseAddrInt = ExchangeStringUtil.hexToDecimal(baseAddr);
+ int registerAddrInt = ExchangeStringUtil.hexToDecimal(registerAddr);
+
+ // 如果registerAddrInt等于baseAddrInt,直接返回true
+ if (registerAddrInt == baseAddrInt) {
+ return true;
}
- LocalDateTime now = lastHour1;
- LocalDateTime lastHour = now.minusHours(1);
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:00:00");
- lastHourTime = lastHour.format(formatter);
- System.out.println(lastHourTime);
+ // 如果registerAddrInt大于baseAddrInt,持续减16,看是否等于baseAddrInt
+ if (registerAddrInt > baseAddrInt) {
+ int temp = registerAddrInt;
+ while (temp > baseAddrInt) {
+ temp -= 18;
+ }
+ // 判断是否等于baseAddrInt
+ return temp == baseAddrInt;
+ }
+ return false;
}
}