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; import java.math.BigDecimal; /** * @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 ((new BigDecimal(dataStr)).compareTo(new BigDecimal(0)) < 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; } }