Browse Source

1、增加压力变化数据接口以及存储过程写入;

dev
25604 3 weeks ago
parent
commit
2ffd4b6ec9
  1. 3
      user-service/src/main/java/com/mh/user/constants/DeviceEnum.java
  2. 3
      user-service/src/main/java/com/mh/user/constants/DeviceStrategyEnum.java
  3. 24
      user-service/src/main/java/com/mh/user/controller/NowDataController.java
  4. 38
      user-service/src/main/java/com/mh/user/entity/WaterPressureEntity.java
  5. 51
      user-service/src/main/java/com/mh/user/factory/SystemParams.java
  6. 47
      user-service/src/main/java/com/mh/user/mapper/NowDataMapper.java
  7. 62
      user-service/src/main/java/com/mh/user/mapper/provider/NowDataProvider.java
  8. 8
      user-service/src/main/java/com/mh/user/service/NowDataService.java
  9. 29
      user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java
  10. 86
      user-service/src/main/java/com/mh/user/strategy/SystemParamsStrategy.java

3
user-service/src/main/java/com/mh/user/constants/DeviceEnum.java

@ -24,7 +24,8 @@ public enum DeviceEnum {
StatusCheckEnum("状态检测", StatusCheck.getInstance()),
TempTransEnum("温度变送器", TempTrans.getInstance()),
HeatPumpStatusEnum("热泵状态", HeatPumpStatus.getInstance()),
MultiControlEnum("多路控制", MultiControl.getInstance());
MultiControlEnum("多路控制", MultiControl.getInstance()),
SystemParamsEnum("系统", SystemParams.getInstance());
private String deviceType;

3
user-service/src/main/java/com/mh/user/constants/DeviceStrategyEnum.java

@ -24,7 +24,8 @@ public enum DeviceStrategyEnum {
StatusCheckEnum("状态检测", StatusCheckStrategy.getInstance()),
TempTransEnum("温度变送器", TempTransStrategy.getInstance()),
HeatPumpStatusEnum("热泵状态", HeatPumpStatusStrategy.getInstance()),
MultiControlEnum("多路控制", MultiControlStrategy.getInstance());
MultiControlEnum("多路控制", MultiControlStrategy.getInstance()),
SystemParamsEnum("系统", SystemParamsStrategy.getInstance());
private String deviceType;

24
user-service/src/main/java/com/mh/user/controller/NowDataController.java

@ -303,6 +303,30 @@ public class NowDataController {
}
}
@SysLogger(title = "压力变化表", optDesc = "压力变化查询")
@PostMapping("/waterPressure")
public HttpResult queryWaterPressure(@RequestParam(value = "buildingID") String buildingID,
@RequestParam(value = "curDate") String curDate,
@RequestParam(value = "level", defaultValue = "0") int level,
@RequestParam(value = "page") int page,
@RequestParam(value = "limit") int limit) {
try {
List<WaterPressureEntity> list;
int count;
// 校区或者区域
if (buildingID == null || buildingID.equals("") || buildingID.equals("所有楼栋") || level == 0 || level == 1) {
list = nowDataService.queryWaterPressure2(curDate, page, limit, level, buildingID);
count = list.size();
} else {
list = nowDataService.queryWaterPressure(buildingID, curDate, page, limit);
count = nowDataService.queryWaterPressureCount(buildingID, curDate);
}
return HttpResult.ok(count, list);
} catch (Exception e) {
return HttpResult.error("查询出错!"+e.getMessage());
}
}
//查询运行时长
@SysLogger(title = "运行时长", optDesc = "热泵运行时长查询")
@PostMapping("/minutes")

38
user-service/src/main/java/com/mh/user/entity/WaterPressureEntity.java

@ -0,0 +1,38 @@
package com.mh.user.entity;
import lombok.Data;
import java.util.Date;
/**
* @Author: ljf
* @Date: 2018/10/15 14:30
* @Version 1.0
* 水压数据
*/
@Data
public class WaterPressureEntity {
private Date curDate;
private String buildingID;
private String buildingName;
private String deviceAddr;
private String deviceName;
private String pressure00;
private String pressure02;
private String pressure06;
private String pressure08;
private String pressure11;
private String pressure13;
private String pressure14;
private String pressure15;
private String pressure16;
private String pressure17;
private String pressure18;
private String pressure19;
private String pressure20;
private String pressure21;
private String pressure22;
private String pressure23;
}

51
user-service/src/main/java/com/mh/user/factory/SystemParams.java

@ -0,0 +1,51 @@
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;
/**
* @author LJF
* @version 1.0
* @project CHWS
* @description 系统参数
* @date 2024-03-18 16:53:35
*/
public class SystemParams implements Device {
private DeviceStrategy strategy;
private static class SingletonHolder {
private static final SystemParams INSTANCE = new SystemParams();
}
private SystemParams() {
// 防止外部直接实例化
}
public static SystemParams getInstance() {
return SystemParams.SingletonHolder.INSTANCE;
}
@Override
public void setStrategy(DeviceStrategy strategy) {
this.strategy = strategy;
}
@Override
public String createOrders(DeviceCodeParamEntity deviceCodeParamEntity) {
return strategy.createOrders(deviceCodeParamEntity);
}
@Override
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);
}
}

47
user-service/src/main/java/com/mh/user/mapper/NowDataMapper.java

@ -1,9 +1,6 @@
package com.mh.user.mapper;
import com.mh.user.entity.NowDataEntity;
import com.mh.user.entity.WaterLevelEntity;
import com.mh.user.entity.WaterTempEntity;
import com.mh.user.entity.PumpMinutesEntity;
import com.mh.user.entity.*;
import com.mh.user.mapper.provider.NowDataProvider;
import com.mh.user.model.WaterLevelModel;
import org.apache.ibatis.annotations.*;
@ -292,6 +289,22 @@ public interface NowDataMapper {
int queryWaterTempCount(@Param("buildingID") String buildingID,
@Param("curDate") String curDate);
@Results({@Result(property="curDate",column="cur_date"),
@Result(property="buildingID",column="building_id"),
@Result(property="buildingName",column="building_name"),
@Result(property="deviceAddr",column="device_addr"),
@Result(property="deviceName",column="device_name")
})
@SelectProvider(type = NowDataProvider.class,method = "queryWaterPressure")
List<WaterPressureEntity> queryWaterPressure(@Param("buildingID") String buildingID,
@Param("curDate") String curDate,
@Param("page") int page,
@Param("limit") int limit);
@SelectProvider(type = NowDataProvider.class,method = "queryWaterPressureCount")
int queryWaterPressureCount(@Param("buildingID") String buildingID,
@Param("curDate") String curDate);
//查询每天24小时每个热泵温度变化情况2
@Results({@Result(property="curDate",column="cur_date"),
@Result(property="buildingID",column="building_id"),
@ -302,6 +315,17 @@ public interface NowDataMapper {
@Param("page") int page,
@Param("limit") int limit);
@Results({@Result(property="curDate",column="cur_date"),
@Result(property="buildingID",column="building_id"),
@Result(property="buildingName",column="building_name"),
@Result(property="deviceAddr",column="device_addr"),
@Result(property="deviceName",column="device_name")
})
@SelectProvider(type = NowDataProvider.class,method = "queryWaterPressure2")
List<WaterPressureEntity> queryWaterPressure2(@Param("curDate") String curDate,
@Param("page") int page,
@Param("limit") int limit);
@SelectProvider(type = NowDataProvider.class,method = "queryWaterTempCount2")
int queryWaterTempCount2(@Param("curDate") String curDate);
@ -315,6 +339,21 @@ public interface NowDataMapper {
@Options(statementType = StatementType.CALLABLE)
void proWaterLevel(@Param("curDate") String curDate,@Param("buildingID") String buildingID, @Param("deviceAddr") String deviceAddr);
//生成楼栋压力
@Select("exec pro_water_pressure #{curDate,jdbcType=VARCHAR,mode=IN}," +
"#{buildingID,jdbcType=VARCHAR,mode=IN}, " +
"#{buildingName,jdbcType=VARCHAR,mode=IN}, " +
"#{deviceAddr,jdbcType=VARCHAR,mode=IN}, " +
"#{deviceName,jdbcType=VARCHAR,mode=IN}, " +
"#{dataStr,jdbcType=VARCHAR,mode=IN}")
@Options(statementType = StatementType.CALLABLE)
void proWaterPressure(@Param("curDate") String curDate,
@Param("buildingID") String buildingID,
@Param("buildingName") String buildingName,
@Param("deviceAddr") String deviceAddr,
@Param("deviceName") String deviceName,
@Param("dataStr") String dataStr);
//在没有接收到返回值前设置监控界面热泵是否离线
@Update("update now_data set run_state=#{strState} where building_id=#{buildingId} and pump_id=#{pumpId}")
void updateRunState(@Param("buildingId") String buildingId,@Param("pumpId") String pumpId,@Param("strState") String strState);

62
user-service/src/main/java/com/mh/user/mapper/provider/NowDataProvider.java

@ -169,6 +169,42 @@ public class NowDataProvider {
return sql.toString();
}
//从history_data查询水温
public String queryWaterPressure(String buildingID,String curDate, int page, int limit){
StringBuffer sql = new StringBuffer("");
sql.append("select * from (select *,ROW_NUMBER() over(order by cur_date) as rn from (" +
"select t1.* from water_pressure t1 join building t2 on t1.building_id=t2.id "+
" where 1=1 ");
if (buildingID != null && !buildingID.equals("")){
sql.append(" AND t1.building_id= #{buildingID} ");
}
if (curDate!= null && !curDate.equals("")) {
sql.append(" AND convert(varchar(10),t1.cur_date,121)=#{curDate} ");
}
if ((page != 0) && (limit != 0)){
sql.append(" )T )TT where TT.rn>(#{page}-1)*#{limit} and TT.rn<=#{page}*#{limit} order by TT.device_addr ");
} else if (page == 0){
sql.append(" )T )TT order by TT.device_addr ");
}
return sql.toString();
}
//从history_data查询水温记录数
public String queryWaterPressureCount(String buildingID,String curDate){
StringBuffer sql = new StringBuffer("");
sql.append("select count(*) from (select *,ROW_NUMBER() over(order by cur_date) as rn from (" +
"select t1.* from water_pressure t1 join building t2 on t1.building_id=t2.id "+
" where 1=1 ");
if (buildingID != null && !buildingID.equals("")){
sql.append(" AND t1.building_id= #{buildingID} ");
}
if (curDate!= null && !curDate.equals("")) {
sql.append(" AND convert(varchar(10),t1.cur_date,121)=#{curDate} ");
}
sql.append(" ) T )TT ");
return sql.toString();
}
public String queryWaterTemp2(String curDate, int page, int limit){
StringBuffer sql = new StringBuffer("");
sql.append("select top 1000 * from (select *,ROW_NUMBER() over(order by cur_date) as rn from (" +
@ -218,6 +254,32 @@ public class NowDataProvider {
return sql.toString();
}
public String queryWaterPressure2(String curDate, int page, int limit){
StringBuffer sql = new StringBuffer("");
sql.append("select top 1000 * from (select *,ROW_NUMBER() over(order by cur_date) as rn from (" +
"select top 1000 t1.cur_date,t1.building_id,t2.building_name,t2.sort,convert(decimal(8,1),AVG(convert(float,t1.pressure00)))as pressure00," +
"convert(decimal(8,1),AVG(convert(float,t1.pressure02)))as pressure02," +
"convert(decimal(8,1),AVG(convert(float,t1.pressure06)))as pressure06," +
"convert(decimal(8,1),AVG(convert(float,t1.pressure08)))as pressure08,convert(decimal(8,1),AVG(convert(float,t1.pressure11)))as pressure11," +
"convert(decimal(8,1),AVG(convert(float,t1.pressure13)))as pressure13," +
"convert(decimal(8,1),AVG(convert(float,t1.pressure14)))as pressure14," +
"convert(decimal(8,1),AVG(convert(float,t1.pressure15)))as pressure15," +
"convert(decimal(8,1),AVG(convert(float,t1.pressure16)))as pressure16,convert(decimal(8,1),AVG(convert(float,t1.pressure17)))as pressure17," +
"convert(decimal(8,1),AVG(convert(float,t1.pressure18)))as pressure18,convert(decimal(8,1),AVG(convert(float,t1.pressure19)))as pressure19," +
"convert(decimal(8,1),AVG(convert(float,t1.pressure20)))as pressure20,convert(decimal(8,1),AVG(convert(float,t1.pressure21)))as pressure21," +
"convert(decimal(8,1),AVG(convert(float,t1.pressure22)))as pressure22,convert(decimal(8,1),AVG(convert(float,t1.pressure23)))as pressure23 " +
" from water_pressure t1 join building t2 on t1.building_id=t2.id where 1=1 ");
if (curDate!= null && !curDate.equals("")) {
sql.append(" AND convert(varchar(10),t1.cur_date,121)=#{curDate} group by t1.building_id,t2.building_name,t2.sort,t1.cur_date order by t2.sort ");
}
if ((page != 0) && (limit != 0)){
sql.append(" )T )TT where TT.rn>(#{page}-1)*#{limit} and TT.rn<=#{page}*#{limit} order by TT.cur_date desc ");
} else if (page == 0){
sql.append(" )T )TT order by TT.cur_date desc ");
}
return sql.toString();
}
//从history_data表按时间点查询水位
public String queryWaterLevelByTime(String curDate, int page, int limit){
// StringBuffer sql = new StringBuffer("");

8
user-service/src/main/java/com/mh/user/service/NowDataService.java

@ -97,9 +97,15 @@ public interface NowDataService {
int queryWaterTempCount(String buildingID,String curDate);
List<WaterPressureEntity> queryWaterPressure(String buildingID,String curDate,int page,int limit);
int queryWaterPressureCount(String buildingID,String curDate);
//查询每天24小时每个热泵温度变化情况2
List<WaterTempEntity> queryWaterTemp2(String curDate,int page,int limit, int level, String buildingID);
List<WaterPressureEntity> queryWaterPressure2(String curDate,int page,int limit, int level, String buildingID);
int queryWaterTempCount2(String curDate, int level, String buildingID);
//生成楼栋温度
@ -154,5 +160,7 @@ public interface NowDataService {
List<MultiControlModel> queryMultiControlNowData(String buildingId);
void updateMultiNowData(NowDataEntity nowDataEntity);
void proWaterPressure(String dateStr, String buildingId, String buildingName, String registerAddr, String otherName, String dataStr);
}

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

@ -52,6 +52,7 @@ public class NowDataServiceImpl implements NowDataService {
ReentrantLock lockA = new ReentrantLock();
ReentrantLock lockB = new ReentrantLock();
@Autowired
private AreaMapper areaMapper;
@Qualifier("gatewayManageMapper")
@ -60,6 +61,11 @@ public class NowDataServiceImpl implements NowDataService {
@Autowired
private CollectionParamsManageMapper collectionParamsManageMapper;
@Override
public void proWaterPressure(String dateStr, String buildingId, String buildingName, String registerAddr, String otherName, String dataStr) {
nowDataMapper.proWaterPressure(dateStr, buildingId, buildingName, registerAddr, otherName, dataStr);
}
@Override
public void updateMultiNowData(NowDataEntity nowDataEntity) {
nowDataMapper.updateMultiNowData(nowDataEntity);
@ -674,6 +680,16 @@ public class NowDataServiceImpl implements NowDataService {
return nowDataMapper.queryWaterTempCount(buildingID, curDate);
}
@Override
public List<WaterPressureEntity> queryWaterPressure(String buildingID, String curDate, int page, int limit) {
return nowDataMapper.queryWaterPressure(buildingID, curDate, page, limit);
}
@Override
public int queryWaterPressureCount(String buildingID, String curDate) {
return nowDataMapper.queryWaterPressureCount(buildingID, curDate);
}
//查询所有楼栋每栋楼的平均温度
@Override
public List<WaterTempEntity> queryWaterTemp2(String curDate, int page, int limit, int level, String buildingID) {
@ -688,6 +704,19 @@ public class NowDataServiceImpl implements NowDataService {
return waterTempEntityList;
}
@Override
public List<WaterPressureEntity> queryWaterPressure2(String curDate, int page, int limit, int level, String buildingID) {
List<WaterPressureEntity> waterPressureEntityList = nowDataMapper.queryWaterPressure2(curDate, page, limit);
// 根据level层级查询
if (level == 1) {
// 根据区域id获取对应的楼栋id
List<String> buildingIdList = buildingService.queryBuildingIdListByAreaId(buildingID);
// waterTempEntityList过滤掉非该区域的楼栋
waterPressureEntityList.removeIf(waterPressureEntity -> !buildingIdList.contains(waterPressureEntity.getBuildingID()));
}
return waterPressureEntityList;
}
//查询所有楼栋每栋楼的平均温度记录数
@Override
public int queryWaterTempCount2(String curDate, int level, String buildingID) {

86
user-service/src/main/java/com/mh/user/strategy/SystemParamsStrategy.java

@ -0,0 +1,86 @@
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;
import com.mh.user.service.BuildingService;
import com.mh.user.service.NowDataService;
import com.mh.user.service.NowPublicDataService;
import com.mh.user.utils.ExchangeStringUtil;
import com.mh.user.utils.SpringBeanUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationContext;
/**
* @author LJF
* @version 1.0
* @project CHWS
* @description 系统参数策略
* @date 2024-03-18 09:51:17
*/
@Slf4j
public class SystemParamsStrategy implements DeviceStrategy {
// 调用service
ApplicationContext context = SpringBeanUtil.getApplicationContext();
NowDataService nowDataService = context.getBean(NowDataService.class);
NowPublicDataService nowPublicDataService = context.getBean(NowPublicDataService.class);
BuildingService buildingService = context.getBean(BuildingService.class);
private static class SingletonHolder {
private static final SystemParamsStrategy INSTANCE = new SystemParamsStrategy();
}
private SystemParamsStrategy() {
// 防止外部直接实例化
}
public static SystemParamsStrategy getInstance() {
return SystemParamsStrategy.SingletonHolder.INSTANCE;
}
@Override
public String createOrders(DeviceCodeParamEntity deviceCodeParamEntity) {
return "";
}
@Override
public String analysisReceiveData(String dateStr, String deviceType, String registerAddr, String brand, String buildingId, String buildingName, String dataStr, DeviceCodeParamEntity deviceCodeParamEntity) {
String result = Constant.FAIL;
return result;
}
@Override
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);
return result;
}
String data = "";
if (operateType.equalsIgnoreCase(Constant.READ)) {// 读
// 水压存储过程
if (collectionParamsManageEntity.getParamTypeId() == 5) {
nowDataService.proWaterPressure(dateStr,
deviceInstallEntity.getBuildingId(),
deviceInstallEntity.getBuildingName(),
collectionParamsManageEntity.getRegisterAddr(),
collectionParamsManageEntity.getOtherName(),
dataStr);//保存时间点温度
log.info("系统参数id:" + deviceInstallEntity.getDeviceAddr() + ",压力值:" + dataStr + ",保存数据库成功!楼栋名称:" + deviceInstallEntity.getBuildingName());
}
return dataStr;
} else {// 写
result = Constant.SUCCESS;
}
return result;
}
}
Loading…
Cancel
Save