diff --git a/user-service/pom.xml b/user-service/pom.xml
index aaefc8a..76b5093 100644
--- a/user-service/pom.xml
+++ b/user-service/pom.xml
@@ -36,11 +36,11 @@
spring-boot-starter-quartz
-
- org.springframework.cloud
- spring-cloud-starter-config
- 2.2.2.RELEASE
-
+
+
+
+
+
org.springframework.boot
spring-boot-starter-test
@@ -142,6 +142,12 @@
2.8.8
+
+ org.apache.commons
+ commons-collections4
+ 4.4
+
+
diff --git a/user-service/src/main/java/com/mh/user/UserServiceApplication.java b/user-service/src/main/java/com/mh/user/UserServiceApplication.java
index 711235b..3c4b759 100644
--- a/user-service/src/main/java/com/mh/user/UserServiceApplication.java
+++ b/user-service/src/main/java/com/mh/user/UserServiceApplication.java
@@ -3,7 +3,6 @@ package com.mh.user;
import com.mh.user.job.CollectionLoopRunner;
import com.mh.user.serialport.SerialPortListener;
import com.mh.user.serialport.SerialPortUtil;
-import com.mh.user.utils.TimedTask2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
diff --git a/user-service/src/main/java/com/mh/user/aspect/DaoAspect.java b/user-service/src/main/java/com/mh/user/aspect/DaoAspect.java
index cb54017..7732dd7 100644
--- a/user-service/src/main/java/com/mh/user/aspect/DaoAspect.java
+++ b/user-service/src/main/java/com/mh/user/aspect/DaoAspect.java
@@ -1,91 +1,91 @@
-package com.mh.user.aspect;
-
-import java.util.Date;
-
-import javax.servlet.http.HttpServletRequest;
-
-import com.mh.common.utils.StringUtils;
-import com.mh.user.utils.SecurityUtils;
-import org.apache.commons.beanutils.BeanUtils;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Pointcut;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-/**
- * DAO切面,插入创建人,创建时间,修改人,修改时间
- * @author Louis
- * @date Oct 29, 2018
- */
-@Aspect
-@Component
-@Configuration
-public class DaoAspect {
- private static final String createBy = "createBy";
- private static final String createTime = "createTime";
- private static final String lastUpdateBy = "lastUpdateBy";
- private static final String lastUpdateTime = "lastUpdateTime";
-
- @Pointcut("execution(* com.mh.*.mapper.*.update*(..))")
- public void daoUpdate() {
- }
-
- @Pointcut("execution(* com.mh.*.mapper.*.insert*(..))")
- public void daoCreate() {
- }
-
- @Around("daoUpdate()")
- public Object doAroundUpdate(ProceedingJoinPoint pjp) throws Throwable {
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- if (attributes == null) {
- return pjp.proceed();
- }
- HttpServletRequest request = attributes.getRequest();
- String token = request.getHeader("token");
- String username = getUserName();
- if (token != null && username != null) {
- Object[] objects = pjp.getArgs();
- if (objects != null && objects.length > 0) {
- for (Object arg : objects) {
- BeanUtils.setProperty(arg, lastUpdateBy, username);
- BeanUtils.setProperty(arg, lastUpdateTime, new Date());
- }
- }
- }
- Object object = pjp.proceed();
- return object;
-
- }
-
- @Around("daoCreate()")
- public Object doAroundCreate(ProceedingJoinPoint pjp) throws Throwable {
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- if (attributes == null) {
- return pjp.proceed();
- }
- Object[] objects = pjp.getArgs();
- if (objects != null && objects.length > 0) {
- for (Object arg : objects) {
- String username = getUserName();
- if (username != null) {
- if (StringUtils.isBlank(BeanUtils.getProperty(arg, createBy))) {
- BeanUtils.setProperty(arg, createBy, username);
- }
- if (StringUtils.isBlank(BeanUtils.getProperty(arg, createTime))) {
- BeanUtils.setProperty(arg, createTime, new Date());
- }
- }
- }
- }
- Object object = pjp.proceed();
- return object;
- }
-
- private String getUserName() {
- return SecurityUtils.getUsername();
- }
-}
+//package com.mh.user.aspect;
+//
+//import java.util.Date;
+//
+//import javax.servlet.http.HttpServletRequest;
+//
+//import com.mh.common.utils.StringUtils;
+//import com.mh.user.utils.SecurityUtils;
+//import org.apache.commons.beanutils.BeanUtils;
+//import org.aspectj.lang.ProceedingJoinPoint;
+//import org.aspectj.lang.annotation.Around;
+//import org.aspectj.lang.annotation.Aspect;
+//import org.aspectj.lang.annotation.Pointcut;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.stereotype.Component;
+//import org.springframework.web.context.request.RequestContextHolder;
+//import org.springframework.web.context.request.ServletRequestAttributes;
+//
+///**
+// * DAO切面,插入创建人,创建时间,修改人,修改时间
+// * @author Louis
+// * @date Oct 29, 2018
+// */
+//@Aspect
+//@Component
+//@Configuration
+//public class DaoAspect {
+// private static final String createBy = "createBy";
+// private static final String createTime = "createTime";
+// private static final String lastUpdateBy = "lastUpdateBy";
+// private static final String lastUpdateTime = "lastUpdateTime";
+//
+// @Pointcut("execution(* com.mh.*.mapper.*.update*(..))")
+// public void daoUpdate() {
+// }
+//
+// @Pointcut("execution(* com.mh.*.mapper.*.insert*(..))")
+// public void daoCreate() {
+// }
+//
+// @Around("daoUpdate()")
+// public Object doAroundUpdate(ProceedingJoinPoint pjp) throws Throwable {
+// ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+// if (attributes == null) {
+// return pjp.proceed();
+// }
+// HttpServletRequest request = attributes.getRequest();
+// String token = request.getHeader("token");
+// String username = getUserName();
+// if (token != null && username != null) {
+// Object[] objects = pjp.getArgs();
+// if (objects != null && objects.length > 0) {
+// for (Object arg : objects) {
+// BeanUtils.setProperty(arg, lastUpdateBy, username);
+// BeanUtils.setProperty(arg, lastUpdateTime, new Date());
+// }
+// }
+// }
+// Object object = pjp.proceed();
+// return object;
+//
+// }
+//
+// @Around("daoCreate()")
+// public Object doAroundCreate(ProceedingJoinPoint pjp) throws Throwable {
+// ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+// if (attributes == null) {
+// return pjp.proceed();
+// }
+// Object[] objects = pjp.getArgs();
+// if (objects != null && objects.length > 0) {
+// for (Object arg : objects) {
+// String username = getUserName();
+// if (username != null) {
+// if (StringUtils.isBlank(BeanUtils.getProperty(arg, createBy))) {
+// BeanUtils.setProperty(arg, createBy, username);
+// }
+// if (StringUtils.isBlank(BeanUtils.getProperty(arg, createTime))) {
+// BeanUtils.setProperty(arg, createTime, new Date());
+// }
+// }
+// }
+// }
+// Object object = pjp.proceed();
+// return object;
+// }
+//
+// private String getUserName() {
+// return SecurityUtils.getUsername();
+// }
+//}
diff --git a/user-service/src/main/java/com/mh/user/config/QuartzConfig.java b/user-service/src/main/java/com/mh/user/config/QuartzConfig.java
index 81e381f..609c1b0 100644
--- a/user-service/src/main/java/com/mh/user/config/QuartzConfig.java
+++ b/user-service/src/main/java/com/mh/user/config/QuartzConfig.java
@@ -1,7 +1,6 @@
package com.mh.user.config;
import com.mh.user.job.JobFactory;
-import com.mh.user.utils.TimedTask2;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Scheduler;
import org.springframework.context.annotation.Bean;
diff --git a/user-service/src/main/java/com/mh/user/controller/DeviceInstallController.java b/user-service/src/main/java/com/mh/user/controller/DeviceInstallController.java
index 41874ff..4da6bb3 100644
--- a/user-service/src/main/java/com/mh/user/controller/DeviceInstallController.java
+++ b/user-service/src/main/java/com/mh/user/controller/DeviceInstallController.java
@@ -1,6 +1,7 @@
package com.mh.user.controller;
import com.mh.common.http.HttpResult;
+import com.mh.common.utils.StringUtils;
import com.mh.user.annotation.BusinessType;
import com.mh.user.annotation.SysLogger;
import com.mh.user.entity.BuildingEntity;
@@ -55,6 +56,10 @@ public class DeviceInstallController {
DeviceInstallEntity oldEntity = deviceInstallService.selectDeviceById(deviceInstallEntity.getId());
// 删除全部的device_code_param值
deviceInstallService.deleteParamCode(oldEntity);
+ // 设置校验位
+ if (StringUtils.isBlank(deviceInstallEntity.getParity())) {
+ deviceInstallEntity.setParity(oldEntity.getParity());
+ }
// 在创建新的device_code_param值
deviceInstallService.createParamCode(deviceInstallEntity);
// 更新device_install
diff --git a/user-service/src/main/java/com/mh/user/controller/SerialPortController.java b/user-service/src/main/java/com/mh/user/controller/SerialPortController.java
index cea853a..8e2b0f0 100644
--- a/user-service/src/main/java/com/mh/user/controller/SerialPortController.java
+++ b/user-service/src/main/java/com/mh/user/controller/SerialPortController.java
@@ -11,8 +11,6 @@ import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.entity.PumpSetEntity;
import com.mh.user.model.DeviceModel;
import com.mh.user.model.SerialPortModel;
-import com.mh.user.serialport.SerialPortSendReceive;
-import com.mh.user.serialport.SerialPortSingle;
import com.mh.user.serialport.SerialPortSingle2;
import com.mh.user.service.ControlSetService;
import com.mh.user.service.DeviceInstallService;
diff --git a/user-service/src/main/java/com/mh/user/entity/DeviceInstallEntity.java b/user-service/src/main/java/com/mh/user/entity/DeviceInstallEntity.java
index 1cba23f..8bdd5c5 100644
--- a/user-service/src/main/java/com/mh/user/entity/DeviceInstallEntity.java
+++ b/user-service/src/main/java/com/mh/user/entity/DeviceInstallEntity.java
@@ -32,5 +32,10 @@ public class DeviceInstallEntity {
private String remarks;
private double dayValue;
private double deviationValue;
+ private int isUse;
+
+ private int isFault;
+
+ private String seat;
}
diff --git a/user-service/src/main/java/com/mh/user/entity/WaterLevelEntity.java b/user-service/src/main/java/com/mh/user/entity/WaterLevelEntity.java
index ee9b7d2..7488a20 100644
--- a/user-service/src/main/java/com/mh/user/entity/WaterLevelEntity.java
+++ b/user-service/src/main/java/com/mh/user/entity/WaterLevelEntity.java
@@ -10,6 +10,7 @@ public class WaterLevelEntity {
private Date curDate;
private String buildingID;
private String buildingName;
+ private String deviceName;
private String level00;
private String level02;
private String level08;
diff --git a/user-service/src/main/java/com/mh/user/job/DealDataJob.java b/user-service/src/main/java/com/mh/user/job/DealDataJob.java
index 5d8bbba..0a398e4 100644
--- a/user-service/src/main/java/com/mh/user/job/DealDataJob.java
+++ b/user-service/src/main/java/com/mh/user/job/DealDataJob.java
@@ -1,13 +1,10 @@
package com.mh.user.job;
import com.mh.user.constants.Constant;
-import com.mh.user.serialport.SerialPortSendReceive;
import com.mh.user.serialport.SerialPortThread;
import com.mh.user.service.DeviceCodeParamService;
import com.mh.user.service.DealDataService;
-import com.mh.user.utils.AnalysisReceiveOrder485;
import com.mh.user.utils.ComThreadPoolService;
-import com.mh.user.utils.GetReadOrder485;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
diff --git a/user-service/src/main/java/com/mh/user/mapper/DeviceCodeParamMapper.java b/user-service/src/main/java/com/mh/user/mapper/DeviceCodeParamMapper.java
index 3c47cb3..6e8c8cc 100644
--- a/user-service/src/main/java/com/mh/user/mapper/DeviceCodeParamMapper.java
+++ b/user-service/src/main/java/com/mh/user/mapper/DeviceCodeParamMapper.java
@@ -101,11 +101,12 @@ public interface DeviceCodeParamMapper {
"register_addr," +
"create_time," +
"building_id," +
- "parity" +
+ "parity," +
+ "thread" +
")" +
"values " +
"" +
- "(#{item.deviceAddr},#{item.deviceName},#{item.deviceType},#{item.dataCom},#{item.baudrate},#{item.brand},#{item.funCode},#{item.registerAddr},getDate(),#{item.buildingId},#{item.parity})" +
+ "(#{item.deviceAddr},#{item.deviceName},#{item.deviceType},#{item.dataCom},#{item.baudrate},#{item.brand},#{item.funCode},#{item.registerAddr},getDate(),#{item.buildingId},#{item.parity},#{item.thread})" +
"" +
"")
void insertDeviceCodeParamList(@Param("deviceCodeParamEntityList") List deviceCodeParamEntityList);
@@ -123,11 +124,12 @@ public interface DeviceCodeParamMapper {
"register_addr," +
"create_time," +
"building_id," +
- "parity" +
+ "parity," +
+ "thread" +
")" +
"values " +
"" +
- "(#{item.deviceAddr},#{item.deviceName},#{item.deviceType},#{item.dataCom},#{item.baudrate},#{item.brand},#{item.funCode},#{item.registerAddr},getDate(),#{item.buildingId},#{item.parity})" +
+ "(#{item.deviceAddr},#{item.deviceName},#{item.deviceType},#{item.dataCom},#{item.baudrate},#{item.brand},#{item.funCode},#{item.registerAddr},getDate(),#{item.buildingId},#{item.parity},#{item.thread})" +
"" +
"")
void insertDeviceCodeParamList2(@Param("deviceCodeParamEntityList") List deviceCodeParamEntityList);
@@ -145,11 +147,12 @@ public interface DeviceCodeParamMapper {
"register_addr," +
"create_time," +
"building_id," +
- "parity" +
+ "parity," +
+ "thread" +
")" +
"values " +
"" +
- "(#{item.deviceAddr},#{item.deviceName},#{item.deviceType},#{item.dataCom},#{item.baudrate},#{item.brand},#{item.funCode},#{item.registerAddr},getDate(),#{item.buildingId},#{item.parity})" +
+ "(#{item.deviceAddr},#{item.deviceName},#{item.deviceType},#{item.dataCom},#{item.baudrate},#{item.brand},#{item.funCode},#{item.registerAddr},getDate(),#{item.buildingId},#{item.parity},#{item.thread})" +
"" +
"")
void insertDeviceCodeParamList3(@Param("deviceCodeParamEntityList") List deviceCodeParamEntityList);
diff --git a/user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java b/user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java
index 1d209e7..ea8215b 100644
--- a/user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java
+++ b/user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java
@@ -6,11 +6,13 @@ import com.mh.user.mapper.provider.DeviceInstallProvider;
import com.mh.user.model.DeviceModel;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.mapping.StatementType;
+import tk.mybatis.mapper.common.BaseMapper;
+
import java.util.Date;
import java.util.List;
@Mapper
-public interface DeviceInstallMapper {
+public interface DeviceInstallMapper extends BaseMapper {
/**
* 设备安装模块
@@ -41,6 +43,7 @@ public interface DeviceInstallMapper {
" , installer = #{installer} " +
" , building_id = #{buildingId} " +
" , remarks = #{remarks} " +
+ " , parity = #{parity} " +
" where id = #{id} " +
"")
int updateDevice(DeviceInstallEntity deviceInstallEntity);
@@ -320,6 +323,13 @@ public interface DeviceInstallMapper {
@Param("deviceType") String deviceType,
@Param("buildingId") String buildingId);
+ @ResultMap("rs")
@Select("select * from device_install where id = #{id} ")
DeviceInstallEntity selectDeviceById(@Param("id") Long id);
+
+ @Update("update device_install set last_value = #{lastValue}, last_date = getdate() where device_addr = #{deviceAddr} and building_id = #{buildingId} and device_type = #{deviceType} ")
+ void updateLastValueByOther(@Param("deviceAddr") String addr,
+ @Param("lastValue") String strWtLevel,
+ @Param("deviceType") String deviceType,
+ @Param("buildingId") String buildingId);
}
diff --git a/user-service/src/main/java/com/mh/user/mapper/NowDataMapper.java b/user-service/src/main/java/com/mh/user/mapper/NowDataMapper.java
index f763403..bacacfd 100644
--- a/user-service/src/main/java/com/mh/user/mapper/NowDataMapper.java
+++ b/user-service/src/main/java/com/mh/user/mapper/NowDataMapper.java
@@ -176,7 +176,8 @@ public interface NowDataMapper {
@Results({
@Result(property="curDate",column="cur_date"),
@Result(property="buildingID",column="building_id"),
- @Result(property="buildingName",column="building_name")
+ @Result(property="buildingName",column="building_name"),
+ @Result(property="deviceName",column="device_name")
})
@SelectProvider(type = NowDataProvider.class,method = "queryBuildWaterLevel")
List queryBuildWaterLevel(@Param("curDate") String curDate,
@@ -305,9 +306,9 @@ public interface NowDataMapper {
void proWaterTemp(@Param("curDate") String curDate,@Param("buildingID") String buildingID,@Param("pumpID") String pumpID);
//生成楼栋水位
- @Select("exec pro_waterLevel #{curDate,jdbcType=VARCHAR,mode=IN},#{buildingID,jdbcType=VARCHAR,mode=IN} ")
+ @Select("exec pro_waterLevel #{curDate,jdbcType=VARCHAR,mode=IN},#{buildingID,jdbcType=VARCHAR,mode=IN}, #{deviceAddr,jdbcType=VARCHAR,mode=IN} ")
@Options(statementType = StatementType.CALLABLE)
- void proWaterLevel(@Param("curDate") String curDate,@Param("buildingID") String buildingID);
+ void proWaterLevel(@Param("curDate") String curDate,@Param("buildingID") String buildingID, @Param("deviceAddr") String deviceAddr);
//在没有接收到返回值前设置监控界面热泵是否离线
@Update("update now_data set run_state=#{strState} where building_id=#{buildingId} and pump_id=#{pumpId}")
diff --git a/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive.java b/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive.java
index 1bb1db6..8032496 100644
--- a/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive.java
+++ b/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive.java
@@ -1,281 +1,281 @@
-package com.mh.user.serialport;
-
-import com.mh.user.constants.Constant;
-import com.mh.user.entity.DeviceCodeParamEntity;
-import com.mh.user.service.BuildingService;
-import com.mh.user.service.DeviceCodeParamService;
-import com.mh.user.service.DeviceInstallService;
-import com.mh.user.service.NowDataService;
-import com.mh.user.utils.*;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.ApplicationContext;
-import gnu.io.SerialPort;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @author nxr
- * @title :
- * @description : 串口发送和接收处理,采集类
- * @updateTime 2022-08-10
- * @throws :
- */
-@Slf4j
-public class SerialPortSendReceive {
-
- private String receiveStr = null;
- public SerialPort serialPort = null;
- private int size = 0;
- private int baudrate=9600;
- private String parity=null;
- List deviceManageEntityList;
- // 调用service
- ApplicationContext context = SpringBeanUtil.getApplicationContext();
- DeviceCodeParamService deviceCodeParamService = context.getBean(DeviceCodeParamService.class);
- DeviceInstallService deviceInstallService = context.getBean(DeviceInstallService.class);
- NowDataService nowDataService = context.getBean(NowDataService.class);
- BuildingService buildingService = context.getBean(BuildingService.class);
- AnalysisReceiveOrder485 analysisReceiveOrder485 = new AnalysisReceiveOrder485();
-
- public void serialPortSend(String sort,String thread) {
- //查看所有串口
- SerialPortUtil serialPortUtil = SerialPortUtil.getSerialPortUtil();
- ArrayList port = serialPortUtil.findPort();
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date date = new Date();
- String dateStr = df.format(date);
-
-// SerialTool serialPortUtil = SerialTool.getSerialPortUtil();
+//package com.mh.user.serialport;
+//
+//import com.mh.user.constants.Constant;
+//import com.mh.user.entity.DeviceCodeParamEntity;
+//import com.mh.user.service.BuildingService;
+//import com.mh.user.service.DeviceCodeParamService;
+//import com.mh.user.service.DeviceInstallService;
+//import com.mh.user.service.NowDataService;
+//import com.mh.user.utils.*;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.context.ApplicationContext;
+//import gnu.io.SerialPort;
+//import java.nio.ByteBuffer;
+//import java.nio.charset.StandardCharsets;
+//import java.text.SimpleDateFormat;
+//import java.util.ArrayList;
+//import java.util.Date;
+//import java.util.List;
+//
+///**
+// * @author nxr
+// * @title :
+// * @description : 串口发送和接收处理,采集类
+// * @updateTime 2022-08-10
+// * @throws :
+// */
+//@Slf4j
+//public class SerialPortSendReceive {
+//
+// private String receiveStr = null;
+// public SerialPort serialPort = null;
+// private int size = 0;
+// private int baudrate=9600;
+// private String parity=null;
+// List deviceManageEntityList;
+// // 调用service
+// ApplicationContext context = SpringBeanUtil.getApplicationContext();
+// DeviceCodeParamService deviceCodeParamService = context.getBean(DeviceCodeParamService.class);
+// DeviceInstallService deviceInstallService = context.getBean(DeviceInstallService.class);
+// NowDataService nowDataService = context.getBean(NowDataService.class);
+// BuildingService buildingService = context.getBean(BuildingService.class);
+// AnalysisReceiveOrder485 analysisReceiveOrder485 = new AnalysisReceiveOrder485();
+//
+// public void serialPortSend(String sort,String thread) {
+// //查看所有串口
+// SerialPortUtil serialPortUtil = SerialPortUtil.getSerialPortUtil();
// ArrayList port = serialPortUtil.findPort();
-// comName=comName.toUpperCase(); //转为大写
-// if (port.contains(comName)){
- try{
- //生成对应的采集指令
- if (sort.equals("1")){ //水温、水位
- deviceManageEntityList = deviceCodeParamService.queryCodeParam3(thread);
- }else if (sort.equals("2")){ //采集水、电、运行状态!
- deviceManageEntityList = deviceCodeParamService.queryCodeParam4(thread);
- }else if (sort.equals("3")){ //采集设定温度、设定水位、故障状态!
- deviceManageEntityList = deviceCodeParamService.queryCodeParam5(thread);
- }else{
- deviceManageEntityList = deviceCodeParamService.queryCodeParam3(thread);
- }
- size = deviceManageEntityList.size();
- for (int i=0;i", e);
- }
- receiveStr="";
- //从串口读取数据
- byte[] bytes= serialPortUtil.readFromPort(serialPort);
- try {
- String byteStr = new String(bytes, 0, bytes.length).trim();
- } catch (NullPointerException e) {
- serialPortUtil.closePort(serialPort);
- Thread.sleep(2000);
- log.info("串口"+serialPort+"没有数据返回!"+i);
- log.info("----------------"+deviceType+"离线,设备号:"+deviceAddr+",所属楼栋:"+buildingName+"----------------");
- Constant.WEB_FLAG=false;//可以采集的状态
- if(i==size-1){
- Constant.FLAG=false;
- }
- String time1=deviceInstallService.selectLastDate(deviceType,deviceAddr,buildingId);
- Date date1=new Date();
- String time2=df.format(date1);
- if (time1==null){
- time1=df.format(date1);
- }
- int d= ExchangeStringUtil.compareCopyTime(time1,time2);
- if (d==1){
- deviceInstallService.updateNotOnline(deviceAddr,deviceType,buildingId,"离线"); //所有设备离线
- if (deviceType.equals("热泵")){
- nowDataService.updateRunState(buildingId,deviceAddr,"离线", buildingName); //监控界面状态表热泵在线状态
- }
- }
- continue;
- }
- receiveStr = receiveStr + printHexString(bytes);
- //去掉空格和null
- receiveStr = receiveStr.replace("null", "");
- receiveStr = receiveStr.replace(" ", "");
- log.info("串口"+serialPort+"接受第"+i+"数据:" + receiveStr + ",大小: " + receiveStr.length());
- try{
- serialPortUtil.closePort(serialPort);
- log.info("关闭"+serialPort);
- }catch (Exception e){
-// e.printStackTrace();
- Constant.WEB_FLAG=false;//可以采集的状态
- if(i==size-1){
- Constant.FLAG=false;
- }
- log.error("关闭"+serialPort+"失败!");
- }
- //返回值全部变成大写
- String receiveData = receiveStr.toUpperCase();
- //截取去掉FE
- String dataStr;
- if (receiveData.length()>8){
- String str1=receiveData.substring(0,8);
- String str2=receiveData.substring(8);
- dataStr=str1.replace("FE", "")+str2;
- }else{
- dataStr = receiveData.replace("FE", "");
- }
- deviceInstallService.updateOnline(deviceAddr,deviceType,buildingId,"在线"); //设备在线
- log.info("----------------"+deviceType+"在线,设备号:"+deviceAddr+",所属楼栋:"+buildingName+"----------------");
- if (deviceType.equals("热泵")){
- String strState=nowDataService.selectState(buildingId,deviceAddr);
- if (strState!=null && strState.equals("离线")){ //采集到数据
- nowDataService.updateRunState(buildingId,deviceAddr,"不运行", buildingName); //监控界面状态表热泵在线状态
- }
- }
- try{
- SerialPortSendReceive2.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, dataStr, analysisReceiveOrder485, nowDataService, buildingName);
- }catch (Exception e){
-// e.printStackTrace();
- Constant.WEB_FLAG=false;//可以采集的状态
- if(i==size-1){
- Constant.FLAG=false;
- }
- log.error(deviceManageEntityList.get(i).getDeviceType()+"保存数据库失败!"+i);
- }
- Thread.sleep(1000);
- }else{
- Constant.WEB_FLAG=false;//可以采集的状态
- if(i==size-1){
- Constant.FLAG=false;
- }
- log.info("-------------串口:"+comName+"不存在!-------------");
- }
- if(i==size-1){
- Constant.FLAG=false;
- log.info("-------------一轮采集完,采集标志Constant.Flag="+Constant.FLAG+"-------------");
- }
- }
- }catch (Exception e){
- e.printStackTrace();
- Constant.WEB_FLAG=false;//可以采集的状态
- Constant.FLAG=false;
- log.error("-------------串口采集异常!-------------");
- }
-// }else {
-// log.info("串口:"+comName+"不存在!");
+// SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+// Date date = new Date();
+// String dateStr = df.format(date);
+//
+//// SerialTool serialPortUtil = SerialTool.getSerialPortUtil();
+//// ArrayList port = serialPortUtil.findPort();
+//// comName=comName.toUpperCase(); //转为大写
+//// if (port.contains(comName)){
+// try{
+// //生成对应的采集指令
+// if (sort.equals("1")){ //水温、水位
+// deviceManageEntityList = deviceCodeParamService.queryCodeParam3(thread);
+// }else if (sort.equals("2")){ //采集水、电、运行状态!
+// deviceManageEntityList = deviceCodeParamService.queryCodeParam4(thread);
+// }else if (sort.equals("3")){ //采集设定温度、设定水位、故障状态!
+// deviceManageEntityList = deviceCodeParamService.queryCodeParam5(thread);
+// }else{
+// deviceManageEntityList = deviceCodeParamService.queryCodeParam3(thread);
+// }
+// size = deviceManageEntityList.size();
+// for (int i=0;i", e);
+// }
+// receiveStr="";
+// //从串口读取数据
+// byte[] bytes= serialPortUtil.readFromPort(serialPort);
+// try {
+// String byteStr = new String(bytes, 0, bytes.length).trim();
+// } catch (NullPointerException e) {
+// serialPortUtil.closePort(serialPort);
+// Thread.sleep(2000);
+// log.info("串口"+serialPort+"没有数据返回!"+i);
+// log.info("----------------"+deviceType+"离线,设备号:"+deviceAddr+",所属楼栋:"+buildingName+"----------------");
+// Constant.WEB_FLAG=false;//可以采集的状态
+// if(i==size-1){
+// Constant.FLAG=false;
+// }
+// String time1=deviceInstallService.selectLastDate(deviceType,deviceAddr,buildingId);
+// Date date1=new Date();
+// String time2=df.format(date1);
+// if (time1==null){
+// time1=df.format(date1);
+// }
+// int d= ExchangeStringUtil.compareCopyTime(time1,time2);
+// if (d==1){
+// deviceInstallService.updateNotOnline(deviceAddr,deviceType,buildingId,"离线"); //所有设备离线
+// if (deviceType.equals("热泵")){
+// nowDataService.updateRunState(buildingId,deviceAddr,"离线", buildingName); //监控界面状态表热泵在线状态
+// }
+// }
+// continue;
+// }
+// receiveStr = receiveStr + printHexString(bytes);
+// //去掉空格和null
+// receiveStr = receiveStr.replace("null", "");
+// receiveStr = receiveStr.replace(" ", "");
+// log.info("串口"+serialPort+"接受第"+i+"数据:" + receiveStr + ",大小: " + receiveStr.length());
+// try{
+// serialPortUtil.closePort(serialPort);
+// log.info("关闭"+serialPort);
+// }catch (Exception e){
+//// e.printStackTrace();
+// Constant.WEB_FLAG=false;//可以采集的状态
+// if(i==size-1){
+// Constant.FLAG=false;
+// }
+// log.error("关闭"+serialPort+"失败!");
+// }
+// //返回值全部变成大写
+// String receiveData = receiveStr.toUpperCase();
+// //截取去掉FE
+// String dataStr;
+// if (receiveData.length()>8){
+// String str1=receiveData.substring(0,8);
+// String str2=receiveData.substring(8);
+// dataStr=str1.replace("FE", "")+str2;
+// }else{
+// dataStr = receiveData.replace("FE", "");
+// }
+// deviceInstallService.updateOnline(deviceAddr,deviceType,buildingId,"在线"); //设备在线
+// log.info("----------------"+deviceType+"在线,设备号:"+deviceAddr+",所属楼栋:"+buildingName+"----------------");
+// if (deviceType.equals("热泵")){
+// String strState=nowDataService.selectState(buildingId,deviceAddr);
+// if (strState!=null && strState.equals("离线")){ //采集到数据
+// nowDataService.updateRunState(buildingId,deviceAddr,"不运行", buildingName); //监控界面状态表热泵在线状态
+// }
+// }
+// try{
+// SerialPortSendReceive2.analysisReceiveData(dateStr, deviceType, registerAddr, brand, buildingId, dataStr, analysisReceiveOrder485, nowDataService, buildingName);
+// }catch (Exception e){
+//// e.printStackTrace();
+// Constant.WEB_FLAG=false;//可以采集的状态
+// if(i==size-1){
+// Constant.FLAG=false;
+// }
+// log.error(deviceManageEntityList.get(i).getDeviceType()+"保存数据库失败!"+i);
+// }
+// Thread.sleep(1000);
+// }else{
+// Constant.WEB_FLAG=false;//可以采集的状态
+// if(i==size-1){
+// Constant.FLAG=false;
+// }
+// log.info("-------------串口:"+comName+"不存在!-------------");
+// }
+// if(i==size-1){
+// Constant.FLAG=false;
+// log.info("-------------一轮采集完,采集标志Constant.Flag="+Constant.FLAG+"-------------");
+// }
+// }
+// }catch (Exception e){
+// e.printStackTrace();
+// Constant.WEB_FLAG=false;//可以采集的状态
+// Constant.FLAG=false;
+// log.error("-------------串口采集异常!-------------");
+// }
+//// }else {
+//// log.info("串口:"+comName+"不存在!");
+//// }
+// }
+// /**
+// * 字节数组转16进制字符串
+// * @param b 字节数组
+// * @return 16进制字符串
+// */
+// public static String printHexString(byte[] b) {
+// StringBuilder sbf = new StringBuilder();
+// for (byte value : b) {
+// String hex = Integer.toHexString(value & 0xFF);
+// if (hex.length() == 1) {
+// hex = '0' + hex;
+// }
+// sbf.append(hex.toUpperCase()).append(" ");
// }
- }
- /**
- * 字节数组转16进制字符串
- * @param b 字节数组
- * @return 16进制字符串
- */
- public static String printHexString(byte[] b) {
- StringBuilder sbf = new StringBuilder();
- for (byte value : b) {
- String hex = Integer.toHexString(value & 0xFF);
- if (hex.length() == 1) {
- hex = '0' + hex;
- }
- sbf.append(hex.toUpperCase()).append(" ");
- }
- return sbf.toString().trim();
- }
-
- /**
- * 十六进制字符串转byte[]
- * @param hex 十六进制字符串
- * @return byte[]
- */
- public static byte[] hexStr2Byte(String hex) {
- if (hex == null) {
- return new byte[] {};
- }
-
- // 奇数位补0
- if (hex.length() % 2 != 0) {
- hex = "0" + hex;
- }
-
- int length = hex.length();
- ByteBuffer buffer = ByteBuffer.allocate(length / 2);
- for (int i = 0; i < length; i++) {
- String hexStr = hex.charAt(i) + "";
- i++;
- hexStr += hex.charAt(i);
- byte b = (byte) Integer.parseInt(hexStr, 16);
- buffer.put(b);
- }
- return buffer.array();
- }
-
- /**
- * 16进制转换成为string类型字符串
- * @param s 待转换字符串
- */
- public static String hexStringToString(String s) {
- if (s == null || "".equals(s)) {
- return null;
- }
- s = s.replace(" ", "");
- byte[] baKeyword = new byte[s.length() / 2];
- for (int i = 0; i < baKeyword.length; i++) {
- try {
- baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- try {
- s = new String(baKeyword, StandardCharsets.UTF_8);
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- return s;
- }
-}
+// return sbf.toString().trim();
+// }
+//
+// /**
+// * 十六进制字符串转byte[]
+// * @param hex 十六进制字符串
+// * @return byte[]
+// */
+// public static byte[] hexStr2Byte(String hex) {
+// if (hex == null) {
+// return new byte[] {};
+// }
+//
+// // 奇数位补0
+// if (hex.length() % 2 != 0) {
+// hex = "0" + hex;
+// }
+//
+// int length = hex.length();
+// ByteBuffer buffer = ByteBuffer.allocate(length / 2);
+// for (int i = 0; i < length; i++) {
+// String hexStr = hex.charAt(i) + "";
+// i++;
+// hexStr += hex.charAt(i);
+// byte b = (byte) Integer.parseInt(hexStr, 16);
+// buffer.put(b);
+// }
+// return buffer.array();
+// }
+//
+// /**
+// * 16进制转换成为string类型字符串
+// * @param s 待转换字符串
+// */
+// public static String hexStringToString(String s) {
+// if (s == null || "".equals(s)) {
+// return null;
+// }
+// s = s.replace(" ", "");
+// byte[] baKeyword = new byte[s.length() / 2];
+// for (int i = 0; i < baKeyword.length; i++) {
+// try {
+// baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16));
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+// try {
+// s = new String(baKeyword, StandardCharsets.UTF_8);
+// } catch (Exception e1) {
+// e1.printStackTrace();
+// }
+// return s;
+// }
+//}
diff --git a/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive2.java b/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive2.java
index a351e23..a589425 100644
--- a/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive2.java
+++ b/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive2.java
@@ -212,7 +212,7 @@ public class SerialPortSendReceive2 {
String buildingName) {
if ((dataStr.length() == 36 || dataStr.length() == 44 || dataStr.length() == 40 || dataStr.length() == 50) && deviceType.equals("电表")) {
analysisReceiveOrder485.analysisMeterOrder485(dataStr, registerAddr, brand, buildingId, buildingName);
- nowDataService.proWaterLevel(dateStr, buildingId); //保存时间点楼栋水位
+ nowDataService.proWaterLevel(dateStr, buildingId, ""); //保存时间点楼栋水位
} else if ((dataStr.length() == 18 || dataStr.length() == 70 || dataStr.length() == 44) && deviceType.equals("水表")) {
analysisReceiveOrder485.analysisWtMeterOrder485(dataStr, registerAddr, brand, buildingId, buildingName);
} else if (deviceType.equals("压变")) {
@@ -230,7 +230,7 @@ public class SerialPortSendReceive2 {
} else if (deviceType.equals("水位开关") && registerAddr.equals("0010")) {
analysisReceiveOrder485.analysisPumpStateOrder(dataStr, registerAddr, brand, buildingId, buildingName); //创新,热泵状态与水位共用一个8路设备
// analysisReceiveOrder485.analysisRelayOrder485(dataStr,registerAddr,brand,buildingId); //华厦
- nowDataService.proWaterLevel(dateStr, buildingId); //保存时间点楼栋水位
+ nowDataService.proWaterLevel(dateStr, buildingId, ""); //保存时间点楼栋水位
} else if (deviceType.equals("温度变送器")) {
analysisReceiveOrder485.analysisMulTempOrder485(dataStr, registerAddr, brand, buildingId, buildingName);
} else if (deviceType.equals("热泵状态")) {
diff --git a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle.java b/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle.java
index 93b38ce..15c80e9 100644
--- a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle.java
+++ b/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle.java
@@ -1,219 +1,219 @@
-package com.mh.user.serialport;
-
-import com.mh.user.constants.Constant;
-import com.mh.user.entity.DeviceCodeParamEntity;
-import com.mh.user.service.BuildingService;
-import com.mh.user.service.DeviceCodeParamService;
-import com.mh.user.service.DeviceInstallService;
-import com.mh.user.service.NowDataService;
-import com.mh.user.utils.AnalysisReceiveOrder485;
-import com.mh.user.utils.SendOrderUtils;
-import com.mh.user.utils.SpringBeanUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.ApplicationContext;
-import org.springframework.stereotype.Component;
-//import purejavacomm.SerialPort;
-import gnu.io.SerialPort;
-
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author nxr
- * @title :
- * @description : 串口发送和接收处理,操作类
- * @updateTime 2022-08-10
- * @throws :
- */
-@Slf4j
-public class SerialPortSingle {
-
- public SerialPort serialPort = null;
- private String receiveStr = null;
- private int baudrate = 9600;
- private String parity = null;
-
- // 调用service
- ApplicationContext context = SpringBeanUtil.getApplicationContext();
- //DeviceCodeParamService deviceCodeParamService = context.getBean(DeviceCodeParamService.class);
- AnalysisReceiveOrder485 analysisReceiveOrder485 = new AnalysisReceiveOrder485();
- DeviceInstallService deviceInstallService = context.getBean(DeviceInstallService.class);
- NowDataService nowDataService = context.getBean(NowDataService.class);
- BuildingService buildingService = context.getBean(BuildingService.class);
-
- public String serialPortSend(DeviceCodeParamEntity deviceCodeParamEntity) {
-
- //查看所有串口
- SerialPortUtil serialPortUtil = SerialPortUtil.getSerialPortUtil();
- ArrayList port = serialPortUtil.findPort();
-// SerialTool serialPortUtil = SerialTool.getSerialPortUtil();
+//package com.mh.user.serialport;
+//
+//import com.mh.user.constants.Constant;
+//import com.mh.user.entity.DeviceCodeParamEntity;
+//import com.mh.user.service.BuildingService;
+//import com.mh.user.service.DeviceCodeParamService;
+//import com.mh.user.service.DeviceInstallService;
+//import com.mh.user.service.NowDataService;
+//import com.mh.user.utils.AnalysisReceiveOrder485;
+//import com.mh.user.utils.SendOrderUtils;
+//import com.mh.user.utils.SpringBeanUtil;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.context.ApplicationContext;
+//import org.springframework.stereotype.Component;
+////import purejavacomm.SerialPort;
+//import gnu.io.SerialPort;
+//
+//import java.nio.ByteBuffer;
+//import java.nio.charset.StandardCharsets;
+//import java.util.ArrayList;
+//import java.util.List;
+//
+///**
+// * @author nxr
+// * @title :
+// * @description : 串口发送和接收处理,操作类
+// * @updateTime 2022-08-10
+// * @throws :
+// */
+//@Slf4j
+//public class SerialPortSingle {
+//
+// public SerialPort serialPort = null;
+// private String receiveStr = null;
+// private int baudrate = 9600;
+// private String parity = null;
+//
+// // 调用service
+// ApplicationContext context = SpringBeanUtil.getApplicationContext();
+// //DeviceCodeParamService deviceCodeParamService = context.getBean(DeviceCodeParamService.class);
+// AnalysisReceiveOrder485 analysisReceiveOrder485 = new AnalysisReceiveOrder485();
+// DeviceInstallService deviceInstallService = context.getBean(DeviceInstallService.class);
+// NowDataService nowDataService = context.getBean(NowDataService.class);
+// BuildingService buildingService = context.getBean(BuildingService.class);
+//
+// public String serialPortSend(DeviceCodeParamEntity deviceCodeParamEntity) {
+//
+// //查看所有串口
+// SerialPortUtil serialPortUtil = SerialPortUtil.getSerialPortUtil();
// ArrayList port = serialPortUtil.findPort();
- String rtData = "";
-// System.out.println("发现全部串口:" + port);
- String comName = deviceCodeParamEntity.getDataCom().toUpperCase();
- if (!port.contains(comName)) {
- log.info("串口:" + comName + "不存在!");
- return "fail";
- }
- try {
- try {
- baudrate = deviceCodeParamEntity.getBaudrate();
- parity = deviceCodeParamEntity.getParity();
- if (parity == null || parity.equals("") || parity.equalsIgnoreCase("none")) {
- serialPort = serialPortUtil.openPort(comName, baudrate, SerialPort.DATABITS_8, SerialPort.PARITY_NONE, SerialPort.PARITY_ODD);
- } else {
- serialPort = serialPortUtil.openPort(comName, baudrate, SerialPort.DATABITS_8, SerialPort.PARITY_EVEN, SerialPort.PARITY_ODD);
- }
- //向串口发送指令
- log.info("-----------------------------单抄向串口" + serialPort + "发送指令!-----------------------------");
- SendOrderUtils.sendSerialPort(deviceCodeParamEntity, serialPort);
- Thread.sleep(1500);
- } catch (Exception e) {
- log.error("前端设置出现异常==>", e);
- return "fail";
- }
- //对返回数据进行相关解析处理
- receiveStr = null;
- byte[] bytes = serialPortUtil.readFromPort(serialPort); //读取串口数据
- if (null == bytes) {
- serialPortUtil.closePort(serialPort);
- log.info("单抄串口" + serialPort + "异常,没有数据返回!关闭串口");
- return "fail";
- }
- receiveStr = receiveStr + printHexString(bytes);
- //去掉空格和null
- receiveStr = receiveStr.replace("null", "");
- receiveStr = receiveStr.replace(" ", "");
- log.info("串口" + serialPort + "接收数据:" + receiveStr + ",大小: " + receiveStr.length());
- //返回值全部变成大写
- String receiveData = receiveStr.toUpperCase();
- //截取去掉FE
- String dataStr = receiveData.replace("FE", "");
- String deviceType = deviceCodeParamEntity.getDeviceType();
- String deviceAddr = deviceCodeParamEntity.getDeviceAddr();
- String registerAddr = deviceCodeParamEntity.getRegisterAddr();
- String brand = deviceCodeParamEntity.getBrand();
- String buildingId = deviceCodeParamEntity.getBuildingId();
- String buildingName = buildingService.queryBuildingName(buildingId); //查询楼栋名称
-
- deviceInstallService.updateOnline(deviceAddr, deviceType, buildingId, "在线"); //设备在线
- log.info(deviceType + "在线,设备号:" + deviceAddr + ",所属楼栋:" + buildingName);
- if (deviceType.equals("热泵")) {
- String strState = nowDataService.selectState(buildingId, deviceAddr);
- if (strState != null && strState.equals("离线")) { //采集到数据
- nowDataService.updateRunState(buildingId, deviceAddr, "不运行", buildingName); //监控界面状态表热泵在线状态
- }
- }
- try {
- if ((dataStr.length() == 18 || dataStr.length() == 70 || dataStr.length() == 44) && deviceType.equals("水表")) {
- rtData = analysisReceiveOrder485.analysisWtMeterOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
- } else if ((dataStr.length() == 36 || dataStr.length() == 44 || dataStr.length() == 40 || dataStr.length() == 50) && deviceType.equals("电表")) {
- rtData = analysisReceiveOrder485.analysisMeterOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
- } else if (deviceType.equals("压变")) {
- rtData = analysisReceiveOrder485.analysisPressureOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
- } else if ((dataStr.length() == 30) && deviceType.equals("状态检测")) {//五路状态读取,兼容旧版系统
- analysisReceiveOrder485.analysisStateOrder485(dataStr, registerAddr, brand, buildingId, buildingName);
- } else if (deviceType.equals("水位开关") && (registerAddr.equals("0018") || registerAddr.equals("0017"))) {
- rtData = analysisReceiveOrder485.analysisRelayOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
- } else if (deviceType.equals("热泵")) {
- rtData = analysisReceiveOrder485.analysisPumpOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
- } else if (deviceType.equals("时控")) {
- rtData = analysisReceiveOrder485.analysisTimeSetOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
- } else if (deviceType.equals("水位开关") && registerAddr.equals("0010")) { //热泵状态
- rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId, buildingName);
- } else if (deviceType.equals("温度变送器")) {
- rtData = analysisReceiveOrder485.analysisMulTempOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
- } else if (deviceType.equals("热泵状态")) {
- rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId, buildingName);
- }
- } catch (Exception e) {
- log.error(deviceCodeParamEntity.getDeviceType() + "单抄保存数据库失败!");
- return "fail";
- }
- Thread.sleep(500);
- log.info("-----------------------------" + serialPort + "单抄结束!-----------------------------");
- return rtData;
- } catch (Exception e) {
- log.error("前端设置出现异常==>", e);
- return "fail";
- } finally {
- if (null != serialPort) {
- serialPortUtil.closePort(serialPort);
- }
- }
- }
-
- /**
- * 字节数组转16进制字符串
- *
- * @param b 字节数组
- * @return 16进制字符串
- */
- public static String printHexString(byte[] b) {
- StringBuilder sbf = new StringBuilder();
- for (byte value : b) {
- String hex = Integer.toHexString(value & 0xFF);
- if (hex.length() == 1) {
- hex = '0' + hex;
- }
- sbf.append(hex.toUpperCase()).append(" ");
- }
- return sbf.toString().trim();
- }
-
- /**
- * 十六进制字符串转byte[]
- *
- * @param hex 十六进制字符串
- * @return byte[]
- */
- public static byte[] hexStr2Byte(String hex) {
- if (hex == null) {
- return new byte[]{};
- }
-
- // 奇数位补0
- if (hex.length() % 2 != 0) {
- hex = "0" + hex;
- }
-
- int length = hex.length();
- ByteBuffer buffer = ByteBuffer.allocate(length / 2);
- for (int i = 0; i < length; i++) {
- String hexStr = hex.charAt(i) + "";
- i++;
- hexStr += hex.charAt(i);
- byte b = (byte) Integer.parseInt(hexStr, 16);
- buffer.put(b);
- }
- return buffer.array();
- }
-
- /**
- * 16进制转换成为string类型字符串
- *
- * @param s 待转换字符串
- */
- public static String hexStringToString(String s) {
- if (s == null || "".equals(s)) {
- return null;
- }
- s = s.replace(" ", "");
- byte[] baKeyword = new byte[s.length() / 2];
- for (int i = 0; i < baKeyword.length; i++) {
- try {
- baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- try {
- s = new String(baKeyword, StandardCharsets.UTF_8);
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- return s;
- }
-}
+//// SerialTool serialPortUtil = SerialTool.getSerialPortUtil();
+//// ArrayList port = serialPortUtil.findPort();
+// String rtData = "";
+//// System.out.println("发现全部串口:" + port);
+// String comName = deviceCodeParamEntity.getDataCom().toUpperCase();
+// if (!port.contains(comName)) {
+// log.info("串口:" + comName + "不存在!");
+// return "fail";
+// }
+// try {
+// try {
+// baudrate = deviceCodeParamEntity.getBaudrate();
+// parity = deviceCodeParamEntity.getParity();
+// if (parity == null || parity.equals("") || parity.equalsIgnoreCase("none")) {
+// serialPort = serialPortUtil.openPort(comName, baudrate, SerialPort.DATABITS_8, SerialPort.PARITY_NONE, SerialPort.PARITY_ODD);
+// } else {
+// serialPort = serialPortUtil.openPort(comName, baudrate, SerialPort.DATABITS_8, SerialPort.PARITY_EVEN, SerialPort.PARITY_ODD);
+// }
+// //向串口发送指令
+// log.info("-----------------------------单抄向串口" + serialPort + "发送指令!-----------------------------");
+// SendOrderUtils.sendSerialPort(deviceCodeParamEntity, serialPort);
+// Thread.sleep(1500);
+// } catch (Exception e) {
+// log.error("前端设置出现异常==>", e);
+// return "fail";
+// }
+// //对返回数据进行相关解析处理
+// receiveStr = null;
+// byte[] bytes = serialPortUtil.readFromPort(serialPort); //读取串口数据
+// if (null == bytes) {
+// serialPortUtil.closePort(serialPort);
+// log.info("单抄串口" + serialPort + "异常,没有数据返回!关闭串口");
+// return "fail";
+// }
+// receiveStr = receiveStr + printHexString(bytes);
+// //去掉空格和null
+// receiveStr = receiveStr.replace("null", "");
+// receiveStr = receiveStr.replace(" ", "");
+// log.info("串口" + serialPort + "接收数据:" + receiveStr + ",大小: " + receiveStr.length());
+// //返回值全部变成大写
+// String receiveData = receiveStr.toUpperCase();
+// //截取去掉FE
+// String dataStr = receiveData.replace("FE", "");
+// String deviceType = deviceCodeParamEntity.getDeviceType();
+// String deviceAddr = deviceCodeParamEntity.getDeviceAddr();
+// String registerAddr = deviceCodeParamEntity.getRegisterAddr();
+// String brand = deviceCodeParamEntity.getBrand();
+// String buildingId = deviceCodeParamEntity.getBuildingId();
+// String buildingName = buildingService.queryBuildingName(buildingId); //查询楼栋名称
+//
+// deviceInstallService.updateOnline(deviceAddr, deviceType, buildingId, "在线"); //设备在线
+// log.info(deviceType + "在线,设备号:" + deviceAddr + ",所属楼栋:" + buildingName);
+// if (deviceType.equals("热泵")) {
+// String strState = nowDataService.selectState(buildingId, deviceAddr);
+// if (strState != null && strState.equals("离线")) { //采集到数据
+// nowDataService.updateRunState(buildingId, deviceAddr, "不运行", buildingName); //监控界面状态表热泵在线状态
+// }
+// }
+// try {
+// if ((dataStr.length() == 18 || dataStr.length() == 70 || dataStr.length() == 44) && deviceType.equals("水表")) {
+// rtData = analysisReceiveOrder485.analysisWtMeterOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
+// } else if ((dataStr.length() == 36 || dataStr.length() == 44 || dataStr.length() == 40 || dataStr.length() == 50) && deviceType.equals("电表")) {
+// rtData = analysisReceiveOrder485.analysisMeterOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
+// } else if (deviceType.equals("压变")) {
+// rtData = analysisReceiveOrder485.analysisPressureOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
+// } else if ((dataStr.length() == 30) && deviceType.equals("状态检测")) {//五路状态读取,兼容旧版系统
+// analysisReceiveOrder485.analysisStateOrder485(dataStr, registerAddr, brand, buildingId, buildingName);
+// } else if (deviceType.equals("水位开关") && (registerAddr.equals("0018") || registerAddr.equals("0017"))) {
+// rtData = analysisReceiveOrder485.analysisRelayOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
+// } else if (deviceType.equals("热泵")) {
+// rtData = analysisReceiveOrder485.analysisPumpOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
+// } else if (deviceType.equals("时控")) {
+// rtData = analysisReceiveOrder485.analysisTimeSetOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
+// } else if (deviceType.equals("水位开关") && registerAddr.equals("0010")) { //热泵状态
+// rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId, buildingName);
+// } else if (deviceType.equals("温度变送器")) {
+// rtData = analysisReceiveOrder485.analysisMulTempOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
+// } else if (deviceType.equals("热泵状态")) {
+// rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId, buildingName);
+// }
+// } catch (Exception e) {
+// log.error(deviceCodeParamEntity.getDeviceType() + "单抄保存数据库失败!");
+// return "fail";
+// }
+// Thread.sleep(500);
+// log.info("-----------------------------" + serialPort + "单抄结束!-----------------------------");
+// return rtData;
+// } catch (Exception e) {
+// log.error("前端设置出现异常==>", e);
+// return "fail";
+// } finally {
+// if (null != serialPort) {
+// serialPortUtil.closePort(serialPort);
+// }
+// }
+// }
+//
+// /**
+// * 字节数组转16进制字符串
+// *
+// * @param b 字节数组
+// * @return 16进制字符串
+// */
+// public static String printHexString(byte[] b) {
+// StringBuilder sbf = new StringBuilder();
+// for (byte value : b) {
+// String hex = Integer.toHexString(value & 0xFF);
+// if (hex.length() == 1) {
+// hex = '0' + hex;
+// }
+// sbf.append(hex.toUpperCase()).append(" ");
+// }
+// return sbf.toString().trim();
+// }
+//
+// /**
+// * 十六进制字符串转byte[]
+// *
+// * @param hex 十六进制字符串
+// * @return byte[]
+// */
+// public static byte[] hexStr2Byte(String hex) {
+// if (hex == null) {
+// return new byte[]{};
+// }
+//
+// // 奇数位补0
+// if (hex.length() % 2 != 0) {
+// hex = "0" + hex;
+// }
+//
+// int length = hex.length();
+// ByteBuffer buffer = ByteBuffer.allocate(length / 2);
+// for (int i = 0; i < length; i++) {
+// String hexStr = hex.charAt(i) + "";
+// i++;
+// hexStr += hex.charAt(i);
+// byte b = (byte) Integer.parseInt(hexStr, 16);
+// buffer.put(b);
+// }
+// return buffer.array();
+// }
+//
+// /**
+// * 16进制转换成为string类型字符串
+// *
+// * @param s 待转换字符串
+// */
+// public static String hexStringToString(String s) {
+// if (s == null || "".equals(s)) {
+// return null;
+// }
+// s = s.replace(" ", "");
+// byte[] baKeyword = new byte[s.length() / 2];
+// for (int i = 0; i < baKeyword.length; i++) {
+// try {
+// baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16));
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+// try {
+// s = new String(baKeyword, StandardCharsets.UTF_8);
+// } catch (Exception e1) {
+// e1.printStackTrace();
+// }
+// return s;
+// }
+//}
diff --git a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java b/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java
index e2dac04..257af2c 100644
--- a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java
+++ b/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java
@@ -46,9 +46,9 @@ public class SerialPortSingle2 {
} else {
serialPort = SerialTool.openPort(comName, baudrate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_EVEN);
}
- //向串口发送指令
- log.info("-----------------------------单抄向串口" + serialPort + "发送指令!-----------------------------");
if (serialPort != null) {
+ //向串口发送指令
+ log.info("-----------------------------单抄向串口" + serialPort.getName() + "发送指令!-----------------------------");
String sendStr = SendOrderUtils.getSendStr(deviceCodeParamEntity);
SerialTool.sendToPort(SerialTool.HexString2Bytes(sendStr), serialPort, sendStr, deviceCodeParamEntity.getDeviceType());
CacheTools.initReceiveMsg(serialPort.getName());
@@ -92,7 +92,7 @@ public class SerialPortSingle2 {
return "fail";
}
receiveStr = receiveStr.replace("null", "").replace(" ", "");
- log.info("串口" + serialPort + "接收数据:" + receiveStr + ",大小: " + receiveStr.length());
+ log.info("串口" + serialPort.getName() + "接收数据:" + receiveStr + ",大小: " + receiveStr.length());
//返回值全部变成大写
String receiveData = receiveStr.toUpperCase();
//截取去掉FE
@@ -127,6 +127,7 @@ public class SerialPortSingle2 {
rtData = analysisReceiveOrder485.analysisPumpOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
} else if (deviceType.equals("时控")) {
rtData = analysisReceiveOrder485.analysisTimeSetOrder4852(dataStr, registerAddr, brand, buildingId, buildingName);
+ log.info("时控读取或者设置返回值==>{}", rtData);
} else if (deviceType.equals("水位开关") && !StringUtils.isBlank(registerAddr) && registerAddr.equals("0010")) { //热泵状态
rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId, buildingName);
} else if (deviceType.equals("温度变送器")) {
@@ -140,22 +141,22 @@ public class SerialPortSingle2 {
return "fail";
}
} else {
+ log.info("串口为空,无法进行采集控制");
return "fail";
}
SerialTool.closePort(serialPort);
- System.out.println("关闭" + serialPort);
Thread.sleep(200);
- log.info("-----------------------------" + serialPort + "单抄结束!-----------------------------");
+ log.info("-----------------------------" + serialPort.getName() + "单抄结束!-----------------------------");
return rtData;
} catch (Exception e) {
- log.info("单抄串口" + serialPort + "异常,没有数据返回!关闭串口", e);
+ log.info("单抄串口" + serialPort.getName() + "异常,没有数据返回!关闭串口", e);
} finally {
try {
if (null != serialPort) {
SerialTool.closePort(serialPort);
}
} catch (IOException e) {
- throw new RuntimeException(e);
+ log.error("关闭串口异常!", e);
}
}
return "fail";
diff --git a/user-service/src/main/java/com/mh/user/service/DeviceInstallService.java b/user-service/src/main/java/com/mh/user/service/DeviceInstallService.java
index cc5dbba..d837c92 100644
--- a/user-service/src/main/java/com/mh/user/service/DeviceInstallService.java
+++ b/user-service/src/main/java/com/mh/user/service/DeviceInstallService.java
@@ -181,4 +181,6 @@ public interface DeviceInstallService {
DeviceInstallEntity selectDeviceById(Long id);
void deleteParamCode(DeviceInstallEntity oldEntity);
+
+ void updateLastValueByOther(String addr, String strWtLevel, String deviceType, String buildingId);
}
diff --git a/user-service/src/main/java/com/mh/user/service/NowDataService.java b/user-service/src/main/java/com/mh/user/service/NowDataService.java
index d3f8a9d..796fa47 100644
--- a/user-service/src/main/java/com/mh/user/service/NowDataService.java
+++ b/user-service/src/main/java/com/mh/user/service/NowDataService.java
@@ -100,7 +100,7 @@ public interface NowDataService {
void proWaterTemp(String curDate,String buildingID,String pumpID);
//生成楼栋水位
- void proWaterLevel(String curDate,String buildingID);
+ void proWaterLevel(String curDate,String buildingID, String deviceAddr);
//在没有接收到返回值前设置监控界面热泵是否离线
void updateRunState(String buildingId,String pumpId,String strState, String buildingName);
diff --git a/user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java
index 2a51123..b7410e8 100644
--- a/user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java
+++ b/user-service/src/main/java/com/mh/user/service/impl/DeviceControlServiceImpl.java
@@ -87,6 +87,7 @@ public class DeviceControlServiceImpl implements DeviceControlService {
switch (deviceType) {
case "时控":
rtData = handleTimeControl(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle);
+ log.info("设备类型为时控==>{}", rtData);
break;
case "水位开关":
rtData = handleWaterLevelSwitch(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle);
@@ -110,6 +111,20 @@ public class DeviceControlServiceImpl implements DeviceControlService {
}
if (Constant.WRITE.equals(type)) {
rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
+ log.info("写入设备返回值==>{}", rtData);
+ // 如果是瑞星泵,需要在发送启动指令
+ if (!StringUtils.isBlank(brand) && brand.equals("瑞星")
+ && (deviceCodeParam.getParam().equals("时段1") || deviceCodeParam.getParam().equals("时段2"))
+ && !rtData.equals(Constant.FAIL)) {
+ deviceCodeParam.setFunCode("06");
+ // 开启热泵定时
+ if ("0028".equals(deviceCodeParam.getRegisterAddr())) {
+ deviceCodeParam.setRegisterAddr("00230001");
+ } if ("002A".equals(deviceCodeParam.getRegisterAddr())) {
+ deviceCodeParam.setRegisterAddr("00240001");
+ }
+ rtData = serialPortSingle.serialPortSend(deviceCodeParam);
+ }
}
}
return rtData;
@@ -202,16 +217,27 @@ public class DeviceControlServiceImpl implements DeviceControlService {
String time = serialPortModel.getDataValue();
if (Constant.READ.equals(type)) {
deviceCodeParam.setFunCode("03"); //功能码读数据
- if (deviceCodeParam.getParam().equals("L1")) {
- deviceCodeParam.setRegisterAddr("0009"); //寄存器地址,L3路,L1(0009),L2(000D)
- } else if (deviceCodeParam.getParam().equals("L2")) {
- deviceCodeParam.setRegisterAddr("000D");
- } else {
- deviceCodeParam.setRegisterAddr("0011");
+ switch (deviceCodeParam.getParam()) {
+ case "L1":
+ deviceCodeParam.setRegisterAddr("0009"); //寄存器地址,L3路,L1(0009),L2(000D)
+ break;
+ case "L2":
+ deviceCodeParam.setRegisterAddr("000D");
+ break;
+ case "L3":
+ deviceCodeParam.setRegisterAddr("0011");
+ break;
+ case "checkTime":
+ // 时控校准时间读取
+ deviceCodeParam.setRegisterAddr("0000");
+ break;
}
rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
time = rtData;
} else {
+ if ("checkTime".equals(deviceCodeParam.getParam())) {
+ deviceCodeParam.setRegisterAddr("0000");
+ }
deviceCodeParam.setFunCode("10"); //功能码写数据
}
if (time.length() == 16) {
@@ -285,17 +311,21 @@ public class DeviceControlServiceImpl implements DeviceControlService {
nowDataService.upTempSet2(deviceCodeParam.getBuildingId(), serialPortModel.getDataValue(), deviceCodeParam.getDeviceAddr());//更新实时状态表
log.info("楼栋编号:" + deviceCodeParam.getBuildingId() + ",设定温度:" + serialPortModel.getDataValue() + ",热泵编号:" + deviceCodeParam.getDeviceAddr());
} else if (deviceCodeParam.getParam().equals("时段1") || deviceCodeParam.getParam().equals("时段2")) {
- if (deviceCodeParam.getBrand().equals("美的")) {
+ if (deviceCodeParam.getBrand().equals("美的") || deviceCodeParam.getBrand().equals("瑞星")) {
//发送指令
if (Constant.READ.equals(type)) {
deviceCodeParam.setFunCode("03"); //功能码读数据
} else {
deviceCodeParam.setFunCode("10"); //功能码写数据
}
- if ("时段1".equals(deviceCodeParam.getParam())) {
+ if ("时段1".equals(deviceCodeParam.getParam()) && "美的".equals(deviceCodeParam.getBrand())) {
deviceCodeParam.setRegisterAddr("0656"); //寄存器地址
- } else {
+ } else if ("时段2".equals(deviceCodeParam.getParam()) && "美的".equals(deviceCodeParam.getBrand())) {
deviceCodeParam.setRegisterAddr("065A"); //寄存器地址
+ } else if ("时段1".equals(deviceCodeParam.getParam()) && "瑞星".equals(deviceCodeParam.getBrand())) {
+ deviceCodeParam.setRegisterAddr("0028"); //寄存器地址
+ } else if ("时段2".equals(deviceCodeParam.getParam()) && "瑞星".equals(deviceCodeParam.getBrand())) {
+ deviceCodeParam.setRegisterAddr("002C"); //寄存器地址
}
if (Constant.READ.equals(type)) {
@@ -345,6 +375,14 @@ public class DeviceControlServiceImpl implements DeviceControlService {
}
rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
return rtData;
+ } else if ("closeTime".equals(deviceCodeParam.getParam())) {
+ // 关闭热泵
+ deviceCodeParam.setFunCode("06"); //功能码读数据
+ if ("瑞星".equals(deviceCodeParam.getBrand()) && "1".equals(deviceCodeParam.getDataValue())) {
+ deviceCodeParam.setRegisterAddr("00230000");
+ } else {
+ deviceCodeParam.setRegisterAddr("00240000"); //寄存器地址
+ }
}
return rtData;
}
diff --git a/user-service/src/main/java/com/mh/user/service/impl/DeviceInstallServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/DeviceInstallServiceImpl.java
index 923bff0..dce1a1e 100644
--- a/user-service/src/main/java/com/mh/user/service/impl/DeviceInstallServiceImpl.java
+++ b/user-service/src/main/java/com/mh/user/service/impl/DeviceInstallServiceImpl.java
@@ -4,19 +4,13 @@ import com.mh.user.entity.DeviceCodeParamEntity;
import com.mh.user.entity.DeviceInstallEntity;
import com.mh.user.entity.DeviceInstallTempEntity;
import com.mh.user.entity.UploadDeviceInstallEntity;
-import com.mh.user.exception.CommonNum;
-import com.mh.user.exception.ServiceRuntimeException;
import com.mh.user.mapper.DeviceCodeParamMapper;
import com.mh.user.mapper.DeviceInstallMapper;
-import com.mh.user.mapper.provider.DeviceInstallProvider;
import com.mh.user.model.DeviceModel;
-import com.mh.user.serialport.SerialPortSendReceive;
import com.mh.user.service.BuildingService;
import com.mh.user.service.DeviceInstallService;
+import com.mh.user.utils.CacheUtil;
import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.SelectProvider;
-import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -165,6 +159,8 @@ public class DeviceInstallServiceImpl implements DeviceInstallService {
default:
break;
}
+ // 删除之前的缓存
+ CacheUtil.getInstance().deleteCache();
}
@Override
@@ -256,6 +252,10 @@ public class DeviceInstallServiceImpl implements DeviceInstallService {
@Override
public int deleteDevice(String id) {
+ // 根据id查询对应的deviceInstall
+ DeviceInstallEntity oldEntity = deviceInstallMapper.selectDeviceById(Long.valueOf(id));
+ // 删除全部的device_code_param值
+ this.deleteParamCode(oldEntity);
return deviceInstallMapper.deleteDevice(id);
}
@@ -412,5 +412,10 @@ public class DeviceInstallServiceImpl implements DeviceInstallService {
deviceCodeParamMapper.deleteParamCode2(oldEntity);
deviceCodeParamMapper.deleteParamCode3(oldEntity);
}
+
+ @Override
+ public void updateLastValueByOther(String addr, String strWtLevel, String deviceType, String buildingId) {
+ deviceInstallMapper.updateLastValueByOther(addr, strWtLevel, deviceType, buildingId);
+ }
}
diff --git a/user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java
index 6b835a3..b54c88b 100644
--- a/user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java
+++ b/user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java
@@ -453,8 +453,8 @@ public class NowDataServiceImpl implements NowDataService {
}
@Override
- public void proWaterLevel(String curDate, String buildingID) {
- nowDataMapper.proWaterLevel(curDate, buildingID);
+ public void proWaterLevel(String curDate, String buildingID, String deviceAddr) {
+ nowDataMapper.proWaterLevel(curDate, buildingID, deviceAddr);
}
@Override
diff --git a/user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java b/user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java
index 9758026..a33b03e 100644
--- a/user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java
+++ b/user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java
@@ -581,8 +581,8 @@ public class AnalysisReceiveOrder485 {
} else if (registerAddr.equalsIgnoreCase("0656")
|| registerAddr.equalsIgnoreCase("065A")
|| registerAddr.equalsIgnoreCase("065E")) { //定时设置值
- String startTime = checkStr.substring(8, 10) + checkStr.substring(12, 14);
- String closetTime = checkStr.substring(16, 18) + checkStr.substring(20, 22);
+ String startTime = ExchangeStringUtil.hexToDec(checkStr.substring(8, 10)) + ExchangeStringUtil.hexToDec(checkStr.substring(12, 14));
+ String closetTime = ExchangeStringUtil.hexToDec(checkStr.substring(16, 18)) + ExchangeStringUtil.hexToDec(checkStr.substring(20, 22));
sValue = startTime + closetTime;
}
rtData = sValue;
@@ -642,8 +642,11 @@ public class AnalysisReceiveOrder485 {
} else if (registerAddr.equalsIgnoreCase("0028")
|| registerAddr.equalsIgnoreCase("002C")
|| registerAddr.equalsIgnoreCase("0030")) { //读定时设置值
- String startTime = checkStr.substring(8, 10) + checkStr.substring(12, 14);
- String closetTime = checkStr.substring(16, 18) + checkStr.substring(20, 22);
+ // 01 03 08 0003 0000 0016 0000 4713
+ String startTime = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.hexToDec(checkStr.substring(6, 10)), 2)
+ + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.hexToDec(checkStr.substring(10, 14)), 2);
+ String closetTime = ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.hexToDec(checkStr.substring(14, 18)), 2)
+ + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.hexToDec(checkStr.substring(18, 22)), 2);
sValue = startTime + closetTime;
}
} else if (checkStr.substring(2, 4).equalsIgnoreCase("10")) {
@@ -851,9 +854,12 @@ public class AnalysisReceiveOrder485 {
}
DecimalFormat df = new DecimalFormat("0.0");
String strWtLevel = df.format(wtLevel);
+ // 更新device_install数据
+ deviceInstallService.updateLastValueByOther(addr, strWtLevel, "压变", buildingId);
+
nowDataService.saveNowHistoryData2(addr, "压变", strWtLevel, "waterLevel", buildingId);
log.info("压变号:" + addr + ",保存数据库成功!楼栋名称:" + buildingName);
- nowDataService.proWaterLevel(dateStr, buildingId); //楼栋水位
+ nowDataService.proWaterLevel(dateStr, buildingId, addr); //楼栋水位
log.info("------保存每栋楼小时水位情况" + dateStr + "------");
}
// });
@@ -896,9 +902,12 @@ public class AnalysisReceiveOrder485 {
DecimalFormat df = new DecimalFormat("0.0");
String strWtLevel = df.format(wtLevel);
result = strWtLevel;
+ // 更新device_install数据
+ deviceInstallService.updateLastValueByOther(addr, strWtLevel, "压变", buildingId);
+
nowDataService.saveNowHistoryData2(addr, "压变", strWtLevel, "waterLevel", buildingId);
log.info("压变号:" + addr + ",保存数据库成功!楼栋名称:" + buildingName);
- nowDataService.proWaterLevel(dateStr, buildingId); //楼栋水位
+ nowDataService.proWaterLevel(dateStr, buildingId, addr); //楼栋水位
log.info("------保存每栋楼小时水位情况------" + dateStr);
}
} else {
diff --git a/user-service/src/main/java/com/mh/user/utils/CacheUtil.java b/user-service/src/main/java/com/mh/user/utils/CacheUtil.java
index d10f522..5c07f23 100644
--- a/user-service/src/main/java/com/mh/user/utils/CacheUtil.java
+++ b/user-service/src/main/java/com/mh/user/utils/CacheUtil.java
@@ -75,5 +75,12 @@ public class CacheUtil {
return JSONArray.parseArray(JSONObject.toJSONString(cacheObject), DeviceCodeParamEntity.class);
}
+ /**
+ * 删除缓存
+ */
+ public void deleteCache() {
+ caffeineCache.invalidateAll();
+ }
+
}
diff --git a/user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java b/user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java
index d4874c7..a604c55 100644
--- a/user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java
+++ b/user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java
@@ -180,18 +180,23 @@ public class GetReadOrder485 {
str = str + "03002C0004";
param = "时段2";
}
+ } else if ("06".equals(funCode)) {
+ str = str + funCode + registerAddr;// 定时开机开关机
+ if ("0023".equals(registerAddr)) {
+ param = "时段1";
+ } else {
+ param = "时段2";
+ }
} else {//10
if (registerAddr == null || registerAddr.equals("") || registerAddr.equalsIgnoreCase("000A")) {//温度设定,写
str = str + "10000A000102" + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.decToHex(String.valueOf(dataValue)), 4); //写,待测试
- } else if (registerAddr.equalsIgnoreCase("0028")) {//时段1
+ } else if (registerAddr.equalsIgnoreCase("0028") || registerAddr.equalsIgnoreCase("002C")) {//时段1
if (dataValue.length() == 8) {
- String strData = "00" + dataValue.substring(0, 2) + "00" + dataValue.substring(2, 4) + "00" + dataValue.substring(4, 6) + "00" + dataValue.substring(6, 8);
- str = str + "100028000408" + strData; //写
- }
- } else if (registerAddr.equalsIgnoreCase("002C")) {//时段2
- if (dataValue.length() == 8) {
- String strData = "00" + dataValue.substring(0, 2) + "00" + dataValue.substring(2, 4) + "00" + dataValue.substring(4, 6) + "00" + dataValue.substring(6, 8);
- str = str + "10002C000408" + strData; //写
+ String strData = "00" + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(0, 2))),2)
+ + "00" + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(2, 4))),2)
+ + "00" + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(4, 6))),2)
+ + "00" + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(6, 8))),2);
+ str = str + "10"+registerAddr+"000408" + strData; //写
}
}
}
@@ -517,10 +522,19 @@ public class GetReadOrder485 {
funCode = ExchangeStringUtil.addZeroForNum(funCode, 2); // 功能码
if (funCode.equals("03")) { //功能码,读
- str = str + "03" + registerAddr + "0004";
+ if (orderParamModel.getParam().equals("checkTime")) {
+ // 读取时间:0A 03 00 00 00 03 04 B0
+ str = str + "03" + registerAddr + "0003";
+ } else {
+ str = str + "03" + registerAddr + "0004";
+ }
} else if (funCode.equals("10")) {//写
- if (!dataValue.equals("")) {
+ if (!dataValue.equals("") && !orderParamModel.getParam().equals("checkTime")) {
str = str + "10" + registerAddr + "000408" + dataValue;
+ } else {
+ // 校验时间:0A 10 00 00 00 03 06 00 24 01 10 08 59 48 CF
+ // 0A 10 00 00 00 03 06 00 24 01 10 09 40 8B 95
+ str = str + "10" + registerAddr + "00030600" + dataValue.substring(2);
}
}
}
diff --git a/user-service/src/main/java/com/mh/user/utils/TimedTask2.java b/user-service/src/main/java/com/mh/user/utils/TimedTask2.java
index fe30c44..e372fcf 100644
--- a/user-service/src/main/java/com/mh/user/utils/TimedTask2.java
+++ b/user-service/src/main/java/com/mh/user/utils/TimedTask2.java
@@ -1,75 +1,39 @@
-package com.mh.user.utils;
-
-import com.mh.user.entity.DeviceCodeParamEntity;
-import com.mh.user.entity.DeviceInstallEntity;
-import com.mh.user.entity.PumpSetEntity;
-import com.mh.user.model.SerialPortModel;
-import com.mh.user.serialport.SerialPortSingle;
-import com.mh.user.service.DeviceInstallService;
-import com.mh.user.service.PumpSetService;
-import io.swagger.models.auth.In;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-public class TimedTask2 {
-
- ApplicationContext context = SpringBeanUtil.getApplicationContext();
- PumpSetService pumpSetService=context.getBean(PumpSetService.class);
- DeviceInstallService deviceInstallService=context.getBean(DeviceInstallService.class);
-
- public void cronJobClose(int shi, int fen, int miao) { //定时关机
- Calendar cal = Calendar.getInstance();
- // 每天定点执行
- cal.set(Calendar.HOUR_OF_DAY, shi);
- cal.set(Calendar.MINUTE, fen);
- cal.set(Calendar.SECOND, miao);
-
- Timer timer = new Timer();
- timer.schedule(new TimerTask() {
-
- public void run() {
- // 把run方法里的内容换成你要执行的内容
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- System.out.println("当前的系统时间为:" + sdf.format(new Date()));
- SerialPortSingle serialPortSingle = new SerialPortSingle(); //发送接收类
- DeviceCodeParamEntity deviceCodeParam=new DeviceCodeParamEntity();//参数实体类
- List deviceList=deviceInstallService.selectDevicePump();
- if (deviceList.size()>0){
- for (DeviceInstallEntity deviceInstall :deviceList){
- deviceCodeParam.setDeviceAddr(deviceInstall.getDeviceAddr()); //传入通讯编号
- deviceCodeParam.setDeviceType(deviceInstall.getDeviceType());
- deviceCodeParam.setDataCom(deviceInstall.getDataCom());
- deviceCodeParam.setBaudrate(deviceInstall.getBaudRate());
- deviceCodeParam.setParity(deviceInstall.getParity());
- deviceCodeParam.setDataValue("0000");//传入相关参数值,关机
- deviceCodeParam.setBuildingId(deviceInstall.getBuildingId());
- deviceCodeParam.setBrand(deviceInstall.getBrand());
- deviceCodeParam.setRegisterAddr("0000"); //寄存器地址
- deviceCodeParam.setFunCode("06");
- serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
- }
- }
- }
- }, cal.getTime(), 24 * 60 * 60 * 1000);
- }
-
- public void cronJobStart(int shi, int fen, int miao) { //定时开机
- Calendar cal = Calendar.getInstance();
- // 每天定点执行
- cal.set(Calendar.HOUR_OF_DAY, shi);
- cal.set(Calendar.MINUTE, fen);
- cal.set(Calendar.SECOND, miao);
-
- Timer timer = new Timer();
- timer.schedule(new TimerTask() {
-
- public void run() {
- // 把run方法里的内容换成你要执行的内容
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- System.out.println("当前的系统时间为:" + sdf.format(new Date()));
+//package com.mh.user.utils;
+//
+//import com.mh.user.entity.DeviceCodeParamEntity;
+//import com.mh.user.entity.DeviceInstallEntity;
+//import com.mh.user.entity.PumpSetEntity;
+//import com.mh.user.model.SerialPortModel;
+//import com.mh.user.serialport.SerialPortSingle;
+//import com.mh.user.service.DeviceInstallService;
+//import com.mh.user.service.PumpSetService;
+//import io.swagger.models.auth.In;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.ApplicationContext;
+//
+//import java.text.SimpleDateFormat;
+//import java.util.*;
+//
+//public class TimedTask2 {
+//
+// ApplicationContext context = SpringBeanUtil.getApplicationContext();
+// PumpSetService pumpSetService=context.getBean(PumpSetService.class);
+// DeviceInstallService deviceInstallService=context.getBean(DeviceInstallService.class);
+//
+// public void cronJobClose(int shi, int fen, int miao) { //定时关机
+// Calendar cal = Calendar.getInstance();
+// // 每天定点执行
+// cal.set(Calendar.HOUR_OF_DAY, shi);
+// cal.set(Calendar.MINUTE, fen);
+// cal.set(Calendar.SECOND, miao);
+//
+// Timer timer = new Timer();
+// timer.schedule(new TimerTask() {
+//
+// public void run() {
+// // 把run方法里的内容换成你要执行的内容
+// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+// System.out.println("当前的系统时间为:" + sdf.format(new Date()));
// SerialPortSingle serialPortSingle = new SerialPortSingle(); //发送接收类
// DeviceCodeParamEntity deviceCodeParam=new DeviceCodeParamEntity();//参数实体类
// List deviceList=deviceInstallService.selectDevicePump();
@@ -80,7 +44,7 @@ public class TimedTask2 {
// deviceCodeParam.setDataCom(deviceInstall.getDataCom());
// deviceCodeParam.setBaudrate(deviceInstall.getBaudRate());
// deviceCodeParam.setParity(deviceInstall.getParity());
-// deviceCodeParam.setDataValue("0003");//传入相关参数值,制热
+// deviceCodeParam.setDataValue("0000");//传入相关参数值,关机
// deviceCodeParam.setBuildingId(deviceInstall.getBuildingId());
// deviceCodeParam.setBrand(deviceInstall.getBrand());
// deviceCodeParam.setRegisterAddr("0000"); //寄存器地址
@@ -88,33 +52,69 @@ public class TimedTask2 {
// serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
// }
// }
-
- }
- }, cal.getTime(), 24 * 60 * 60 * 1000);
- }
-
- public void cronJob(){
- PumpSetEntity pumpSet=pumpSetService.queryHandTime();
- if (pumpSet!=null){
- String HH="";
- String mm="";
- String startTime=pumpSet.getStartTime1();
- HH=startTime.substring(0,2);
- mm=startTime.substring(3,5);
-// cronJobStart(Integer.valueOf(HH), Integer.valueOf(mm), 00);
- cronJobStart(16, 13, 00);
- System.out.println("-----------小时:"+HH+",分钟:"+mm+"-----------");
-// String closeTime=pumpSet.getCloseTime1();
-// HH=closeTime.substring(0,2);
-// mm=closeTime.substring(3,5);
-// cronJobClose(Integer.valueOf(HH), Integer.valueOf(mm), 00);
- System.out.println("-----------小时:"+HH+",分钟:"+mm+"-----------");
- }
- }
+// }
+// }, cal.getTime(), 24 * 60 * 60 * 1000);
+// }
+//
+// public void cronJobStart(int shi, int fen, int miao) { //定时开机
+// Calendar cal = Calendar.getInstance();
+// // 每天定点执行
+// cal.set(Calendar.HOUR_OF_DAY, shi);
+// cal.set(Calendar.MINUTE, fen);
+// cal.set(Calendar.SECOND, miao);
+//
+// Timer timer = new Timer();
+// timer.schedule(new TimerTask() {
+//
+// public void run() {
+// // 把run方法里的内容换成你要执行的内容
+// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+// System.out.println("当前的系统时间为:" + sdf.format(new Date()));
+//// SerialPortSingle serialPortSingle = new SerialPortSingle(); //发送接收类
+//// DeviceCodeParamEntity deviceCodeParam=new DeviceCodeParamEntity();//参数实体类
+//// List deviceList=deviceInstallService.selectDevicePump();
+//// if (deviceList.size()>0){
+//// for (DeviceInstallEntity deviceInstall :deviceList){
+//// deviceCodeParam.setDeviceAddr(deviceInstall.getDeviceAddr()); //传入通讯编号
+//// deviceCodeParam.setDeviceType(deviceInstall.getDeviceType());
+//// deviceCodeParam.setDataCom(deviceInstall.getDataCom());
+//// deviceCodeParam.setBaudrate(deviceInstall.getBaudRate());
+//// deviceCodeParam.setParity(deviceInstall.getParity());
+//// deviceCodeParam.setDataValue("0003");//传入相关参数值,制热
+//// deviceCodeParam.setBuildingId(deviceInstall.getBuildingId());
+//// deviceCodeParam.setBrand(deviceInstall.getBrand());
+//// deviceCodeParam.setRegisterAddr("0000"); //寄存器地址
+//// deviceCodeParam.setFunCode("06");
+//// serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
+//// }
+//// }
+//
+// }
+// }, cal.getTime(), 24 * 60 * 60 * 1000);
+// }
+//
+// public void cronJob(){
+// PumpSetEntity pumpSet=pumpSetService.queryHandTime();
+// if (pumpSet!=null){
+// String HH="";
+// String mm="";
+// String startTime=pumpSet.getStartTime1();
+// HH=startTime.substring(0,2);
+// mm=startTime.substring(3,5);
+//// cronJobStart(Integer.valueOf(HH), Integer.valueOf(mm), 00);
+// cronJobStart(16, 13, 00);
+// System.out.println("-----------小时:"+HH+",分钟:"+mm+"-----------");
+//// String closeTime=pumpSet.getCloseTime1();
+//// HH=closeTime.substring(0,2);
+//// mm=closeTime.substring(3,5);
+//// cronJobClose(Integer.valueOf(HH), Integer.valueOf(mm), 00);
+// System.out.println("-----------小时:"+HH+",分钟:"+mm+"-----------");
+// }
+// }
+////
+//// public static void main(String[] args) {
+//// cronJob(11, 46, 0); //24小时制 时分秒
+//// }
+//
//
-// public static void main(String[] args) {
-// cronJob(11, 46, 0); //24小时制 时分秒
-// }
-
-
-}
+//}
diff --git a/user-service/src/main/resources/application-dev.yml b/user-service/src/main/resources/application-dev.yml
index 76591e9..bd40c48 100644
--- a/user-service/src/main/resources/application-dev.yml
+++ b/user-service/src/main/resources/application-dev.yml
@@ -1,5 +1,5 @@
server:
- port: 8761 #8761创新、8762广商、8763华厦、广州理工
+ port: 8762 #8761创新、8762广商、8763华厦、广州理工
spring:
application:
name: user-service
@@ -12,6 +12,10 @@ spring:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: mh@803
+# url: jdbc:sqlserver://119.29.33.133:2008;DatabaseName=chws_gsh;allowMultiQueries=true
+# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+# username: chws
+# password: mh@803
filters: stat,wall,config
max-active: 100
diff --git a/user-service/src/main/resources/application-prod.yml b/user-service/src/main/resources/application-prod.yml
index e37e54e..16512cb 100644
--- a/user-service/src/main/resources/application-prod.yml
+++ b/user-service/src/main/resources/application-prod.yml
@@ -1,5 +1,5 @@
server:
- port: 8763 #8761创新、8762广商、8763华厦、广州理工
+ port: 8762 #8761创新、8762广商、8763华厦、广州理工
spring:
application:
name: user-service
@@ -14,10 +14,10 @@ spring:
# 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=CHWS;allowMultiQueries=true
- driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
- username: test
- password: minghan123456@
+# url: jdbc:sqlserver://120.25.220.177:32012;DatabaseName=CHWS;allowMultiQueries=true
+# 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
# password: mh@803
#广商服务器
- # url: jdbc:sqlserver://119.29.33.133:2008;DatabaseName=chws_gsh;allowMultiQueries=true
- # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
- # username: chws
- # password: mh@803
+ url: jdbc:sqlserver://119.29.33.133:2008;DatabaseName=chws_gsh;allowMultiQueries=true
+ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+ username: chws
+ password: mh@803
#本机
# url: jdbc:sqlserver://127.0.0.1:9956;DatabaseName=CHWS;allowMultiQueries=true
# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
diff --git a/user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java b/user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java
index fa5edbd..cf46173 100644
--- a/user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java
+++ b/user-service/src/test/java/com/mh/user/UserServiceApplicationTests.java
@@ -57,7 +57,7 @@ class UserServiceApplicationTests {
//0203020008FD82
// analysis.analysisPumpOrder485("0203020008FD82","0641");
// getReadOrder485.createOrderParam();
-// analysis.analysisRelayOrder485("220611000000013A220611000000023B220611000000033C220611000000043D220611000000053E220611000000063F22061100000007402206110000000841","0017","中凯");
+ analysis.analysisTimeSetOrder4852("0B10000900041162",null, null, null, null);
}
@Test
public void testHotWater() throws InterruptedException {
@@ -92,4 +92,17 @@ class UserServiceApplicationTests {
}
}
+ @Test
+ public void testGetPump() {
+ String dataValue = "03002200";
+ System.out.println(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(0, 2))));
+ System.out.println(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(2, 4))));
+ System.out.println(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(4, 6))));
+ System.out.println(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(6, 8))));
+ String strData = "00" + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(0, 2))),2)
+ + "00" + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(2, 4))),2)
+ + "00" + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(4, 6))),2)
+ + "00" + ExchangeStringUtil.addZeroForNum(ExchangeStringUtil.IntToHex(Integer.parseInt(dataValue.substring(6, 8))),2);
+ System.out.println(strData);
+ }
}
diff --git a/热水新增脚本.sql b/热水新增脚本.sql
index 48cf469..829c418 100644
--- a/热水新增脚本.sql
+++ b/热水新增脚本.sql
@@ -3,3 +3,10 @@ create index pump_set_pump_id_building_id on pump_set(pump_id, building_id);
create index now_data_building_id on pump_set(building_id);
create index now_data_pump_id on pump_set(pump_id);
+
+-- 2024-01-08 新增字段,waterLevel表
+alter table waterLevel add device_addr varchar(32) not null default '';
+exec sp_addextendedproperty N'MS_Description', N'设备地址', N'schema', N'dbo',N'table', N'waterLevel', N'column', N'device_addr';
+alter table waterLevel add device_name varchar(50) not null default '';
+exec sp_addextendedproperty N'MS_Description', N'设备名称', N'schema', N'dbo',N'table', N'waterLevel', N'column', N'device_name';
+