Просмотр исходного кода

给报警消息加锁增加锁的前缀

lixing 3 лет назад
Родитель
Сommit
bf7d115bec

+ 14 - 0
src/main/java/com/persagy/apm/diagnose/constant/AlarmConstants.java

@@ -0,0 +1,14 @@
+package com.persagy.apm.diagnose.constant;
+
+/**
+ * 报警的常量
+ *
+ * @author lixing
+ * @version V1.0 2021/11/20 4:36 下午
+ **/
+public class AlarmConstants {
+    /**
+     * 报警记录锁前缀
+     */
+    public static final String alarmDataLockPrefix = "ALARM_DATA_LOCK:";
+}

+ 28 - 29
src/main/java/com/persagy/apm/diagnose/indicatorrecord/service/impl/MonitorIndicatorRecordServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.persagy.apm.diagnose.config.ComputePropertiesConfig;
 import com.persagy.apm.diagnose.config.RabbitConfig;
+import com.persagy.apm.diagnose.constant.AlarmConstants;
 import com.persagy.apm.diagnose.constant.DiAgnoseConst;
 import com.persagy.apm.diagnose.constant.EnumDataTimeType;
 import com.persagy.apm.diagnose.constant.EnumTimeType;
@@ -78,7 +79,7 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
     public final static String alarmSlipt = "_";
 
 
-//    private final static Long SendDataTimeKeyTime = 24 * 60 * 60 * 1000L;
+    //    private final static Long SendDataTimeKeyTime = 24 * 60 * 60 * 1000L;
 
 
     @Autowired
@@ -186,23 +187,23 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
     }
 
     /**
+     * @throws
      * @title getObjIdAndInfoCodeFromRules
-     * @description 通过报警条件获取所有对象及其监控点位,objId_infoCode
+     * @description 通过报警条件获取所有对象及其监控点位, objId_infoCode
      * @author leifeng
      * @param: projectAlarmRules
      * @updateTime 2021/10/26 21:24
      * @return: java.util.Set<java.lang.String>
-     * @throws
      */
     private Set<String> getObjIdAndInfoCodeFromRules(List<AlarmRuleDTO> projectAlarmRules) {
         Set<String> objIdAndInfoCode = new HashSet<>();
         for (AlarmRuleDTO projectAlarmRule : projectAlarmRules) {
             List<String> objIds = projectAlarmRule.getObjIds();
-            if(CollectionUtils.isEmpty(objIds)){
+            if (CollectionUtils.isEmpty(objIds)) {
                 continue;
             }
             List<String> infoCodes = projectAlarmRule.getInfoCodes();
-            if (CollectionUtils.isEmpty(infoCodes)){
+            if (CollectionUtils.isEmpty(infoCodes)) {
                 continue;
             }
             for (String infoCode : infoCodes) {
@@ -216,7 +217,7 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
 
     /**
      * @title computeIndicatorData
-     * @description 计算指标数据,返回最后计算时间
+     * @description 计算指标数据, 返回最后计算时间
      * @author leifeng
      * @param: projectDTO
      * @param: objId
@@ -284,7 +285,6 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
     }
 
 
-
     @Override
     @Async("asyncSendDataExecutor")
     public Future<String> sendIndicatorData(ProjectDTO projectDTO, CountDownLatch latch) throws Exception {
@@ -311,7 +311,7 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
         query.setProject(monitorIndicatorRecord.getProject());
         query.setObjId(monitorIndicatorRecord.getObjId());
         query.setDataTime(monitorIndicatorRecord.getDataTime());
-//        query.setSplitTimeType(EnumTimeType.MIN15.getCode());
+        //        query.setSplitTimeType(EnumTimeType.MIN15.getCode());
         query.setMonitorIndicatorId(monitorIndicatorRecord.getMonitorIndicatorId());
         List<MonitorIndicatorRecord> queryList = coredao.query(query);
         if (CollectionUtils.isEmpty(queryList)) {//新增
@@ -354,7 +354,7 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
         }
         //根据报警规则,获取对象id_报警类型及设备监控点位list
         Map<String, List<String>> objIdAlarmItemCodeAndInfoCodes = getObjIdAlarmItemCodeAndInfoCodes(projectAlarmRules);
-        if (CollectionUtils.isEmpty(objIdAlarmItemCodeAndInfoCodes) || objIdAlarmItemCodeAndInfoCodes.size() == 0){
+        if (CollectionUtils.isEmpty(objIdAlarmItemCodeAndInfoCodes) || objIdAlarmItemCodeAndInfoCodes.size() == 0) {
             return;
         }
         for (Map.Entry<String, List<String>> entry : objIdAlarmItemCodeAndInfoCodes.entrySet()) {
@@ -362,9 +362,9 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
             int indexOf = objIdAndAlarmItemCode.indexOf("_");
             String objId = objIdAndAlarmItemCode.substring(0, indexOf);
             String alarmItemCode = objIdAndAlarmItemCode.substring(indexOf + 1);
-            String lockKey = objId+"-"+alarmItemCode;
+            String lockKey = AlarmConstants.alarmDataLockPrefix + objId + "-" + alarmItemCode;
             Object isLock = redisUtil.get(lockKey);
-            if (null == isLock){
+            if (null == isLock) {
                 continue;
             }
             long time = System.currentTimeMillis() + (10 * 1000);
@@ -382,20 +382,20 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
             if (timeKeyAndRecordList == null) {
                 continue;
             }
-           Map<String, List<MonitorIndicatorRecord>> sendTimeKeyAndDataList = new LinkedHashMap<>();
+            Map<String, List<MonitorIndicatorRecord>> sendTimeKeyAndDataList = new LinkedHashMap<>();
             for (Map.Entry<String, List<MonitorIndicatorRecord>> dateListEntry : timeKeyAndRecordList.entrySet()) {
                 List<MonitorIndicatorRecord> value = dateListEntry.getValue();
                 if (CollectionUtils.isEmpty(value) || value.size() != infCodeList.size()) {
                     continue;
                 }
-                sendTimeKeyAndDataList.put(dateListEntry.getKey(),value);
+                sendTimeKeyAndDataList.put(dateListEntry.getKey(), value);
                 endTime = DateUtils.str2Date(dateListEntry.getKey(), DateUtils.SDFSECOND);
             }
-            JSONArray sendArray = CollectDataUtil.batchBuildSendJsonParam(sendTimeKeyAndDataList,alarmItemCode);
+            JSONArray sendArray = CollectDataUtil.batchBuildSendJsonParam(sendTimeKeyAndDataList, alarmItemCode);
             rabbitConfig.sendMsg(sendArray);
-//          String sentValue = CollectDataUtil.batchBuildSendParam(sendTimeKeyAndDataList,alarmItemCode);
+            //          String sentValue = CollectDataUtil.batchBuildSendParam(sendTimeKeyAndDataList,alarmItemCode);
             //AlarmWebSocketServer.sendMsgToClients(projectDTO.getProjectId(), sentValue);
-            log.error("指标发送报表服务数据:" + projectDTO.getProjectId()+";"+ sendArray);
+            log.error("指标发送报表服务数据:" + projectDTO.getProjectId() + ";" + sendArray);
             configItemSendTimeDTO.setLastSendTime(endTime);
             configItemSendTimeDTO.setUpdateTime(new Date());
             updateRedisConfigItemSendTimeDTO(projectDTO.getProjectId(), objIdAndAlarmItemCode, configItemSendTimeDTO);
@@ -403,8 +403,9 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
     }
 
     /**
+     * @throws
      * @title getTimekeyAndRecordListGteLt
-     * @description 查询该时间段的需要发送的指标数据,key为时间字符串
+     * @description 查询该时间段的需要发送的指标数据, key为时间字符串
      * @author leifeng
      * @param: projectDTO
      * @param: objId
@@ -412,8 +413,7 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
      * @param: lastSendTime
      * @param: endTime
      * @updateTime 2021/11/5 10:59
-     * @return: java.util.Map<java.lang.String,java.util.List<com.persagy.framework.ems.data.pojo.hbase.MonitorIndicatorRecord>>
-     * @throws
+     * @return: java.util.Map<java.lang.String, java.util.List < com.persagy.framework.ems.data.pojo.hbase.MonitorIndicatorRecord>>
      */
     private Map<String, List<MonitorIndicatorRecord>> getTimekeyAndRecordListGteLt(ProjectDTO projectDTO, String objId, List<String> infCodeList, Date lastSendTime, Date endTime) throws Exception {
         List<MonitorIndicatorRecord> list = getMonitorIndicatorRecordsGtLte(projectDTO.getProjectId(), objId, lastSendTime, infCodeList, endTime);
@@ -432,13 +432,13 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
     }
 
     /**
+     * @throws
      * @title getObjIdAlarmItemCodeAndInfoCodes
-     * @description 获取对象报警类型及监控指标list,key为objId_itemCode
+     * @description 获取对象报警类型及监控指标list, key为objId_itemCode
      * @author leifeng
      * @param: projectAlarmRules
      * @updateTime 2021/10/26 21:35
-     * @return: java.util.Map<java.lang.String,java.util.List<java.lang.String>>
-     * @throws
+     * @return: java.util.Map<java.lang.String, java.util.List < java.lang.String>>
      */
     private Map<String, List<String>> getObjIdAlarmItemCodeAndInfoCodes(List<AlarmRuleDTO> projectAlarmRules) {
         Map<String, List<String>> objIdAlarmItemCodeAndInfoCodes = new HashMap<>();
@@ -446,7 +446,7 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
             String alarmItemCode = projectAlarmRule.getAlarmItemCode();
             List<String> objIds = projectAlarmRule.getObjIds();
             List<String> infoCodes = projectAlarmRule.getInfoCodes();
-            if (!CollectionUtils.isEmpty(infoCodes) && !CollectionUtils.isEmpty(objIds)){
+            if (!CollectionUtils.isEmpty(infoCodes) && !CollectionUtils.isEmpty(objIds)) {
                 for (String infoCode : infoCodes) {
                     for (String objId : objIds) {
                         String key = objId + "_" + alarmItemCode;
@@ -485,7 +485,7 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
         MonitorIndicatorRecord monitorIndicatorRecord = new MonitorIndicatorRecord();
         monitorIndicatorRecord.setProject(projectId);
         monitorIndicatorRecord.setObjId(objId);
-//        monitorIndicatorRecord.setSplitTimeType(EnumTimeType.MIN15.getCode());
+        //        monitorIndicatorRecord.setSplitTimeType(EnumTimeType.MIN15.getCode());
         monitorIndicatorRecord.setSpecialOperation("monitorIndicatorId", SpecialOperator.$in, infoCodes);
         monitorIndicatorRecord.setSpecialOperation("dataTime", SpecialOperator.$gt, lastSendTime);
         monitorIndicatorRecord.setSpecialOperation("dataTime", SpecialOperator.$lte, endTime);
@@ -579,11 +579,10 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
     }
 
 
-
     /**
      * @ClassName MonitorIndicatorRecordServiceImpl
      * @author leifeng
-     * @Description 查询项目下对象指标计算时间,key为objId_indicator
+     * @Description 查询项目下对象指标计算时间, key为objId_indicator
      * @createTime 2021/9/24 11:22
      */
     private Map<String, Date> getObjId_IndicatorIdAndComputeTIme(ProjectDTO projectDTO) {
@@ -592,7 +591,6 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
     }
 
 
-
     private Double computeObjTargetDataByCalculate(ComputeCalculateDTO computeCalculateDTO, String calculateStr)
             throws Exception {
         List<String> variables = CalculateUtil.getVariablesFromFormula(calculateStr);
@@ -754,8 +752,9 @@ public class MonitorIndicatorRecordServiceImpl implements IMonitorIndicatorRecor
         return arrayList;
     }
 
-    private List<Double> getServiceDataFromCenterDataService(String projectId, String objId, String computeCode,
-                                                             String timeType, Date startTime, Date startTime2) throws Exception {
+    private List<Double> getServiceDataFromCenterDataService(
+            String projectId, String objId, String computeCode,
+            String timeType, Date startTime, Date startTime2) throws Exception {
         List<TimeDataDTO> dataList = centerDataService.queryObjTimeDataList(projectId, objId, computeCode, startTime,
                 startTime2, EnumDataTimeType.getEnumDataTimeType(timeType));
         List<Double> result = new ArrayList<>();

+ 19 - 17
src/main/java/com/persagy/apm/diagnose/maintenance/controller/MaintenanceController.java

@@ -3,6 +3,7 @@ package com.persagy.apm.diagnose.maintenance.controller;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.persagy.apm.diagnose.config.RabbitConfig;
+import com.persagy.apm.diagnose.constant.AlarmConstants;
 import com.persagy.apm.diagnose.maintenance.constant.EnumAlarmItem;
 import com.persagy.apm.diagnose.maintenance.constant.EnumMaintenanceIndicatorType;
 import com.persagy.apm.diagnose.utils.RedisLock;
@@ -43,18 +44,18 @@ public class MaintenanceController {
         iotDataMap.put("17", false);
         iotDataMap.put("18", true);
 
-        String objId = "Eq1101060001f00f2ed121f9407783ac0f0a520a9616", alarmItemCode=EnumAlarmItem.EvapAbnormal.getCode();
-        String lockKey = objId+"-"+alarmItemCode;
+        String objId = "Eq1101060001f00f2ed121f9407783ac0f0a520a9616", alarmItemCode = EnumAlarmItem.EvapAbnormal.getCode();
+        String lockKey = AlarmConstants.alarmDataLockPrefix + objId + "-" + alarmItemCode;
         for (String time : iotDataMap.keySet()) {
             Object isLock = redisUtil.get(lockKey);
-            if (null == isLock){
+            if (null == isLock) {
                 long timeLong = System.currentTimeMillis() + (10 * 1000);
                 lockUtil.sendDataLock(lockKey, String.valueOf(timeLong));
                 JSONArray array = new JSONArray();
                 if (iotDataMap.get(time)) {
-                    array.add(getTriggerData(time,objId,alarmItemCode));
+                    array.add(getTriggerData(time, objId, alarmItemCode));
                 } else {
-                    array.add(getNormalData(time,objId,alarmItemCode));
+                    array.add(getNormalData(time, objId, alarmItemCode));
                 }
                 //推送
                 rabbitConfig.sendMsg(array);
@@ -62,43 +63,44 @@ public class MaintenanceController {
         }
     }
 
-    public JSONArray getSendArray(Map<String, Boolean> iotDataMap,String objId,String alarmItemCode) {
+    public JSONArray getSendArray(Map<String, Boolean> iotDataMap, String objId, String alarmItemCode) {
         if (iotDataMap == null) {
             return null;
         }
         JSONArray array = new JSONArray();
         for (String time : iotDataMap.keySet()) {
             if (iotDataMap.get(time)) {
-                array.add(getTriggerData(time,objId,alarmItemCode));
+                array.add(getTriggerData(time, objId, alarmItemCode));
             } else {
-                array.add(getNormalData(time,objId,alarmItemCode));
+                array.add(getNormalData(time, objId, alarmItemCode));
             }
         }
         return array;
     }
 
     //触发报警
-    public JSONObject getTriggerData(String time,String objId,String alarmItemCode) {
-        return initJSONObject("202111"+time+"000000",objId,alarmItemCode,5.0,2.0);
+    public JSONObject getTriggerData(String time, String objId, String alarmItemCode) {
+        return initJSONObject("202111" + time + "000000", objId, alarmItemCode, 5.0, 2.0);
     }
+
     //恢复
-    public JSONObject getNormalData(String time,String objId,String alarmItemCode) {
-        return initJSONObject("202111"+time+"000000",objId,alarmItemCode,1.0,0.0);
+    public JSONObject getNormalData(String time, String objId, String alarmItemCode) {
+        return initJSONObject("202111" + time + "000000", objId, alarmItemCode, 1.0, 0.0);
     }
 
-    public JSONObject initJSONObject(String dataTime,String objId,String alarmItemCode,Double value1,Double value2){
+    public JSONObject initJSONObject(String dataTime, String objId, String alarmItemCode, Double value1, Double value2) {
         JSONObject jsonObject = new JSONObject();
-        jsonObject.put("dataTime",dataTime);
+        jsonObject.put("dataTime", dataTime);
         jsonObject.put("itemCode", alarmItemCode);
-        jsonObject.put("meterId",objId);
+        jsonObject.put("meterId", objId);
         JSONArray funcIdArray = new JSONArray();
         funcIdArray.add(EnumMaintenanceIndicatorType.ACCCCC_EvapHeatTransferDayAvg.getCode());//换热端差日维度平均值阈值
         funcIdArray.add(EnumMaintenanceIndicatorType.ACCCCC_EvapContinuousOperation.getCode());//运行持续时间
         JSONArray valueArray = new JSONArray();
         valueArray.add(value1);
         valueArray.add(value2);
-        jsonObject.put("funcId",funcIdArray);
-        jsonObject.put("value",valueArray);
+        jsonObject.put("funcId", funcIdArray);
+        jsonObject.put("value", valueArray);
         return jsonObject;
     }
 

+ 132 - 127
src/main/java/com/persagy/apm/diagnose/maintenance/service/impl/ProjectDataRecordServiceImpl.java

@@ -5,16 +5,21 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.persagy.apm.diagnose.config.ComputePropertiesConfig;
 import com.persagy.apm.diagnose.config.RabbitConfig;
+import com.persagy.apm.diagnose.constant.AlarmConstants;
 import com.persagy.apm.diagnose.constant.DiAgnoseConst;
 import com.persagy.apm.diagnose.constant.EnumDataTimeType;
 import com.persagy.apm.diagnose.indicatorrecord.model.dto.ConfigItemDataSendTimeDTO;
 import com.persagy.apm.diagnose.indicatorrecord.model.dto.QueryMonitorIndicatorRecordDTO;
 import com.persagy.apm.diagnose.indicatorrecord.service.IMonitorIndicatorRecordService;
 import com.persagy.apm.diagnose.maintenance.constant.*;
+import com.persagy.apm.diagnose.maintenance.model.dto.AlarmCondition;
 import com.persagy.apm.diagnose.maintenance.model.dto.CalculateMethodDTO;
 import com.persagy.apm.diagnose.maintenance.model.dto.WeatherDTO;
 import com.persagy.apm.diagnose.maintenance.service.IProjectDataRecordService;
-import com.persagy.apm.diagnose.service.*;
+import com.persagy.apm.diagnose.service.CenterDataService;
+import com.persagy.apm.diagnose.service.EnergyAlarmServiceImpl;
+import com.persagy.apm.diagnose.service.SaasService;
+import com.persagy.apm.diagnose.service.WeatherServiceImpl;
 import com.persagy.apm.diagnose.service.dto.AlarmRuleDTO;
 import com.persagy.apm.diagnose.service.dto.ProjectDTO;
 import com.persagy.apm.diagnose.service.dto.TimeDataDTO;
@@ -22,7 +27,6 @@ import com.persagy.apm.diagnose.timerecord.model.CalculateTimeRecord;
 import com.persagy.apm.diagnose.timerecord.service.ICalculateTimeRecordService;
 import com.persagy.apm.diagnose.utils.*;
 import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
-import com.persagy.apm.diagnose.maintenance.model.dto.AlarmCondition;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmrecord.AddAlarmRecordDTO;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmrecord.BatchUpdateAlarmRecordDTO;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmrecord.QueryAlarmRecordDTO;
@@ -98,7 +102,7 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
 
     @Override
     @Async("asyncComputeMaintenanceDataExecutor")
-    public Future<String> computeMaintenanceData(Date todayDate,ProjectDTO projectDTO, CountDownLatch latch)throws Exception {
+    public Future<String> computeMaintenanceData(Date todayDate, ProjectDTO projectDTO, CountDownLatch latch) throws Exception {
         long time = System.currentTimeMillis() + (20 * 1000);
         try {
             if (!lockUtil.lock(projectDTO.getProjectId() + "_computeMaintenance", String.valueOf(time))) {
@@ -152,7 +156,7 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
             long start = System.currentTimeMillis();
             syncProjectGoingDestroyEquip(projectId);
             long end = System.currentTimeMillis();
-            return new AsyncResult<>("【监测同步即将报废设备线程】同步项目即将报废设备用时:" +projectId + ";" + (end - start));
+            return new AsyncResult<>("【监测同步即将报废设备线程】同步项目即将报废设备用时:" + projectId + ";" + (end - start));
         } finally {
             lockUtil.unlock(projectId + "_syncEquip", String.valueOf(time));
             latch.countDown();
@@ -245,18 +249,18 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
         alarmRecordItem.setTriggerTime(new Date());//报警触发时间
         alarmRecordItem.setSupplement(supplementObject);//补充说明
         alarmRecordItem.setTreatState(EnumAlarmTreatState.UN_HANDLE.getCode());//处理状态
-//        alarmRecordItem.setEffectStartTime();//有效期开始时间
-//        alarmRecordItem.setEffectEndTime();//有效期结束时间
-//        alarmRecordItem.setNature();//报警性质
-//        alarmRecordItem.setTreatMode();//处理方式
-//        alarmRecordItem.setCondition();//触发和恢复条件
-//        alarmRecordItem.setTriggerInfo();//触发值信息
-//        alarmRecordItem.setEndInfo();//恢复值信息
-//        alarmRecordItem.setEndTime();//恢复时间
-//        alarmRecordItem.setOrderId();//工单id
-//        alarmRecordItem.setOrderState();//工单状态
-//        alarmRecordItem.setIgnoreTime();//忽略时间
-//        alarmRecordItem.setTreatEndTime();//处理时间
+        //        alarmRecordItem.setEffectStartTime();//有效期开始时间
+        //        alarmRecordItem.setEffectEndTime();//有效期结束时间
+        //        alarmRecordItem.setNature();//报警性质
+        //        alarmRecordItem.setTreatMode();//处理方式
+        //        alarmRecordItem.setCondition();//触发和恢复条件
+        //        alarmRecordItem.setTriggerInfo();//触发值信息
+        //        alarmRecordItem.setEndInfo();//恢复值信息
+        //        alarmRecordItem.setEndTime();//恢复时间
+        //        alarmRecordItem.setOrderId();//工单id
+        //        alarmRecordItem.setOrderState();//工单状态
+        //        alarmRecordItem.setIgnoreTime();//忽略时间
+        //        alarmRecordItem.setTreatEndTime();//处理时间
         return alarmRecordItem;
     }
 
@@ -269,13 +273,13 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
         itemCodeList.add(EnumAlarmItem.EvapAbnormal.getCode());
         itemCodeList.add(EnumAlarmItem.CoolTowerApproachTempAbnormal.getCode());
         //通过报警服务查询报警规则
-        List<AlarmRuleDTO> projectAlarmRules = energyAlarmService.getProjectAlarmRules(projectId,itemCodeList);
+        List<AlarmRuleDTO> projectAlarmRules = energyAlarmService.getProjectAlarmRules(projectId, itemCodeList);
         if (CollectionUtils.isEmpty(projectAlarmRules)) {
             return;
         }
         //根据报警规则,获取对象id_报警类型及设备监控点位list
         Map<String, List<String>> objIdAlarmItemCodeAndInfoCodes = getObjIdAlarmItemCodeAndInfoCodes(projectAlarmRules);
-        if (CollectionUtils.isEmpty(objIdAlarmItemCodeAndInfoCodes) || objIdAlarmItemCodeAndInfoCodes.size() == 0){
+        if (CollectionUtils.isEmpty(objIdAlarmItemCodeAndInfoCodes) || objIdAlarmItemCodeAndInfoCodes.size() == 0) {
             return;
         }
         for (Map.Entry<String, List<String>> entry : objIdAlarmItemCodeAndInfoCodes.entrySet()) {
@@ -283,9 +287,9 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
             int indexOf = objIdAndAlarmItemCode.indexOf("_");
             String objId = objIdAndAlarmItemCode.substring(0, indexOf);
             String alarmItemCode = objIdAndAlarmItemCode.substring(indexOf + 1);
-            String lockKey = objId+"-"+alarmItemCode;
+            String lockKey = AlarmConstants.alarmDataLockPrefix + objId + "-" + alarmItemCode;
             Object isLock = redisUtil.get(lockKey);
-            if (null == isLock){
+            if (null == isLock) {
                 continue;
             }
             long time = System.currentTimeMillis() + (10 * 1000);
@@ -315,14 +319,14 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
                 if (CollectionUtils.isEmpty(value) || value.size() != infCodeList.size()) {
                     continue;
                 }
-                sendTimeKeyAndDataList.put(dateListEntry.getKey(),value);
+                sendTimeKeyAndDataList.put(dateListEntry.getKey(), value);
                 endTime = com.persagy.apm.diagnose.utils.DateUtils.str2Date(dateListEntry.getKey(), com.persagy.apm.diagnose.utils.DateUtils.SDFSECOND);
             }
-            JSONArray sendArray = CollectDataUtil.batchBuildSendJsonParam(sendTimeKeyAndDataList,alarmItemCode);
+            JSONArray sendArray = CollectDataUtil.batchBuildSendJsonParam(sendTimeKeyAndDataList, alarmItemCode);
             rabbitConfig.sendMsg(sendArray);
-//            String sentValue = CollectDataUtil.batchBuildSendParam(sendTimeKeyAndDataList,alarmItemCode);
-         //   AlarmWebSocketServer.sendMsgToClients(projectId, sentValue);
-            log.info("设备维保发送数据服务数据:" + projectId+";"+ sendArray);
+            //            String sentValue = CollectDataUtil.batchBuildSendParam(sendTimeKeyAndDataList,alarmItemCode);
+            //   AlarmWebSocketServer.sendMsgToClients(projectId, sentValue);
+            log.info("设备维保发送数据服务数据:" + projectId + ";" + sendArray);
             configItemSendTimeDTO.setLastSendTime(endTime);
             configItemSendTimeDTO.setUpdateTime(new Date());
             updateRedisConfigItemSendTimeDTO(projectId, objIdAndAlarmItemCode, configItemSendTimeDTO);
@@ -337,7 +341,7 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
         MonitorIndicatorRecord monitorIndicatorRecord = new MonitorIndicatorRecord();
         monitorIndicatorRecord.setProject(projectId);
         monitorIndicatorRecord.setObjId(objId);
-//        monitorIndicatorRecord.setSplitTimeType(EnumTimeType.MIN15.getCode());
+        //        monitorIndicatorRecord.setSplitTimeType(EnumTimeType.MIN15.getCode());
         monitorIndicatorRecord.setSpecialOperation("monitorIndicatorId", SpecialOperator.$in, infoCodes);
         monitorIndicatorRecord.setSpecialOperation("dataTime", SpecialOperator.$gte, lastSendTime);
         monitorIndicatorRecord.setSpecialOperation("dataTime", SpecialOperator.$lt, endTime);
@@ -351,7 +355,7 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
             String alarmItemCode = projectAlarmRule.getAlarmItemCode();
             List<String> objIds = projectAlarmRule.getObjIds();
             List<String> infoCodes = projectAlarmRule.getInfoCodes();
-            if (!CollectionUtils.isEmpty(infoCodes) && !CollectionUtils.isEmpty(objIds)){
+            if (!CollectionUtils.isEmpty(infoCodes) && !CollectionUtils.isEmpty(objIds)) {
                 for (String infoCode : infoCodes) {
                     for (String objId : objIds) {
                         String key = objId + "_" + alarmItemCode;
@@ -398,7 +402,7 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
             itemCodeList.add(EnumAlarmItem.CondAbnormal.getCode());
             itemCodeList.add(EnumAlarmItem.EvapAbnormal.getCode());
             itemCodeList.add(EnumAlarmItem.CoolTowerApproachTempAbnormal.getCode());
-            List<AlarmRuleDTO> projectAlarmRules = energyAlarmService.getProjectAlarmRules(projectDTO.getProjectId(),itemCodeList);
+            List<AlarmRuleDTO> projectAlarmRules = energyAlarmService.getProjectAlarmRules(projectDTO.getProjectId(), itemCodeList);
             if (CollectionUtils.isEmpty(projectAlarmRules)) {
                 return new AsyncResult<>("【监测维保数据计算线程】当前项目:" + projectDTO.getProjectId() + "未设置设备维保报警规则");
             }
@@ -409,34 +413,34 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
             //Map<objId_monitorIndicatorId, Date>
             Map<String, Date> objId_indicatorIdAndComputeTime = getObjId_IndicatorIdAndComputeTIme(projectDTO.getProjectId());
             //循环计算
-            for (AlarmRuleDTO alarmRuleDTO:projectAlarmRules) {
+            for (AlarmRuleDTO alarmRuleDTO : projectAlarmRules) {
                 String itemCode = alarmRuleDTO.getAlarmItemCode();
                 EnumAlarmItem enumAlarmItem = EnumAlarmItem.getEnumAlarmLevel(itemCode);
-                if (enumAlarmItem == null){
+                if (enumAlarmItem == null) {
                     continue;
                 }
                 List<String> objIdList = alarmRuleDTO.getObjIds();
                 List<String> infoCodeList = alarmRuleDTO.getInfoCodes();
-                if (CollectionUtils.isEmpty(objIdList) || CollectionUtils.isEmpty(infoCodeList)){
+                if (CollectionUtils.isEmpty(objIdList) || CollectionUtils.isEmpty(infoCodeList)) {
                     continue;
                 }
-                for (String objId:objIdList) {
-                    List<AlarmCondition> alarmConditionList = energyAlarmService.getProjectAlarmCondition(projectDTO.getProjectId(),objId,enumAlarmItem.getCode());
-                    if (CollectionUtils.isEmpty(alarmConditionList)){
+                for (String objId : objIdList) {
+                    List<AlarmCondition> alarmConditionList = energyAlarmService.getProjectAlarmCondition(projectDTO.getProjectId(), objId, enumAlarmItem.getCode());
+                    if (CollectionUtils.isEmpty(alarmConditionList)) {
                         continue;
                     }
-                    Map<String,CalculateMethodDTO> monitorIndicatorMap = new HashMap<>();
+                    Map<String, CalculateMethodDTO> monitorIndicatorMap = new HashMap<>();
                     AlarmCondition condition = alarmConditionList.get(0);
                     List<List<CalculateMethodDTO>> calculateMethodDTOLists = condition.getTriggerFrontend();
-                    if (!CollectionUtils.isEmpty(calculateMethodDTOLists)){
-                        for (List<CalculateMethodDTO> dtoList:calculateMethodDTOLists) {
-                            for (CalculateMethodDTO dto:dtoList) {
-                                monitorIndicatorMap.put(dto.getMonitorIndicatorId(),dto);
+                    if (!CollectionUtils.isEmpty(calculateMethodDTOLists)) {
+                        for (List<CalculateMethodDTO> dtoList : calculateMethodDTOLists) {
+                            for (CalculateMethodDTO dto : dtoList) {
+                                monitorIndicatorMap.put(dto.getMonitorIndicatorId(), dto);
                             }
                         }
                     }
 
-                    for (String infoCode:infoCodeList) {
+                    for (String infoCode : infoCodeList) {
                         EnumMaintenanceIndicatorType indicatorType = EnumMaintenanceIndicatorType.getEnumMaintenanceDataType(infoCode);
                         if (indicatorType == null) {
                             continue;
@@ -453,7 +457,7 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
                                 EnumMaintenanceIndicatorType.ACCCOT_ContinuousOperation == indicatorType) {
                             continue;
                         }
-                        String objIdIndicatorId = objId+alarmSplit+infoCode;
+                        String objIdIndicatorId = objId + alarmSplit + infoCode;
                         //获取上次计算日期
                         Date lastComputeTime = objId_indicatorIdAndComputeTime.get(objIdIndicatorId);
                         if (lastComputeTime == null) {
@@ -468,7 +472,7 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
                             computeTime = computeCoolWaterData(lastComputeTime, todayDate, projectDTO.getProjectId(), objId, indicatorType);
                         }
                         //计算 运行持续时长
-                        computeAlarmDay(projectDTO.getProjectId(), objId, infoCode, indicatorType, lastComputeTime, todayDate,monitorIndicatorMap);
+                        computeAlarmDay(projectDTO.getProjectId(), objId, infoCode, indicatorType, lastComputeTime, todayDate, monitorIndicatorMap);
                         //更新计算 时间记录
                         saveOrUpdateComputeTime(projectDTO.getProjectId(), objId, infoCode, computeTime);
                     }
@@ -483,7 +487,7 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
     /**
      * 计算报警持续时长
      */
-    public void computeAlarmDay(String projectId, String objId, String indicatorId, EnumMaintenanceIndicatorType indicatorType, Date lastComputeTime, Date todayDate, Map<String,CalculateMethodDTO> configMap) throws Exception {
+    public void computeAlarmDay(String projectId, String objId, String indicatorId, EnumMaintenanceIndicatorType indicatorType, Date lastComputeTime, Date todayDate, Map<String, CalculateMethodDTO> configMap) throws Exception {
         //计算 运行持续时长
         CalculateMethodDTO thresholdConfig = null, timeConfig = null;
         EnumMaintenanceIndicatorType saveIndicatorType = null;
@@ -632,11 +636,11 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
      * 冷却塔 日均计算
      */
     Date computeCoolTowerData(Date startDate, Date endDate, ProjectDTO projectDTO, String cTObjId, EnumMaintenanceIndicatorType indicatorType) throws Exception {
-//        Date runDate = null;
-//        //获取冷却塔下所有风机运行时时间列表(所有风机运行时间合并为一组时间列表)
-//        Map<Date, List<Date>> allDateRunDataMap = getCoolTowerRunDateMap(projectId, startDate, endDate);
-//        //获取持续运行2小时之后的  时间点集合
-//        Map<Date, List<Date>> dateRunDataMap = getCoolTowerContinuedRunDateMap(allDateRunDataMap);
+        //        Date runDate = null;
+        //        //获取冷却塔下所有风机运行时时间列表(所有风机运行时间合并为一组时间列表)
+        //        Map<Date, List<Date>> allDateRunDataMap = getCoolTowerRunDateMap(projectId, startDate, endDate);
+        //        //获取持续运行2小时之后的  时间点集合
+        //        Map<Date, List<Date>> dateRunDataMap = getCoolTowerContinuedRunDateMap(allDateRunDataMap);
 
         Date runDate = null;
         Map<Date, List<TimeDataDTO>> dayTimeDataMap = getServiceDataFromCenterDataService(projectDTO.getProjectId(), cTObjId, EnumCoolWaterPointNameType.RunStatus.getCode(), startDate, endDate);
@@ -656,14 +660,14 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
                 dayCoolWaterMainReturnTempMap = getServiceDataFromCenterDataService(projectDTO.getProjectId(), objId, EnumCoolTowerPointNameType.CoolWaterMainReturnTemp.getCode(), startDate, endDate);
             }
             //计算出 湿球温度数据集合
-            dayTwdTempMap = computerWetBallTempMap(projectDTO,startDate,endDate);
+            dayTwdTempMap = computerWetBallTempMap(projectDTO, startDate, endDate);
             //获取中央供冷系统对象
-//            List<JSONObject> object3List = getEqObjectList(projectDTO.getProjectId(), "WEMMMS");
-//            if (!CollectionUtils.isEmpty(object3List)) {
-//                JSONObject object = object3List.get(0);
-//                String objId = object.getString("id");
-//                dayTwdTempMap = getServiceDataFromCenterDataService(projectDTO.getProjectId(), objId, EnumCoolTowerPointNameType.Twb.getCode(), startDate, endDate);
-//            }
+            //            List<JSONObject> object3List = getEqObjectList(projectDTO.getProjectId(), "WEMMMS");
+            //            if (!CollectionUtils.isEmpty(object3List)) {
+            //                JSONObject object = object3List.get(0);
+            //                String objId = object.getString("id");
+            //                dayTwdTempMap = getServiceDataFromCenterDataService(projectDTO.getProjectId(), objId, EnumCoolTowerPointNameType.Twb.getCode(), startDate, endDate);
+            //            }
         }
         //循环计算日均
         for (Date dayDate = startDate; dayDate.before(endDate); dayDate = DateUtils.addDays(dayDate, 1)) {
@@ -692,7 +696,7 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
         Map<Date, List<Date>> dateRunDataMap = getContinuedRunDateMap(dayTimeDataMap);
         Map<Date, List<TimeDataDTO>> firstDayTempDataMap = new HashMap<>();
         Map<Date, List<TimeDataDTO>> secondDayTempDataMap = new HashMap<>();
-        if (null != dateRunDataMap && dateRunDataMap.size() > 0){
+        if (null != dateRunDataMap && dateRunDataMap.size() > 0) {
             //计算换热端差日维度平均值
             if (EnumMaintenanceIndicatorType.ACCCAC_CondHeatTransferDayAvg == indicatorType ||
                     EnumMaintenanceIndicatorType.ACCCCC_CondHeatTransferDayAvg == indicatorType ||
@@ -732,13 +736,14 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
     /**
      * 计算日均构造实体对象 存储更新数据库表记录
      */
-    public Double computeDayAvg(Date dayDate, Map<Date, List<Date>> dateRunDataMap, Map<Date, List<TimeDataDTO>> firstDataMap,
-                              Map<Date, List<TimeDataDTO>> secondDataMap) {
+    public Double computeDayAvg(
+            Date dayDate, Map<Date, List<Date>> dateRunDataMap, Map<Date, List<TimeDataDTO>> firstDataMap,
+            Map<Date, List<TimeDataDTO>> secondDataMap) {
         Double avg = null;
         try {
-            if (null != dateRunDataMap && dateRunDataMap.containsKey(dayDate)){
+            if (null != dateRunDataMap && dateRunDataMap.containsKey(dayDate)) {
                 List<Date> runDateList = dateRunDataMap.get(dayDate);
-                if (!CollectionUtils.isEmpty(runDateList)){
+                if (!CollectionUtils.isEmpty(runDateList)) {
                     Map<Date, Double> firstDateDataMap = getTimePointDataMap(dayDate, firstDataMap);
                     Map<Date, Double> secondDateDataMap = getTimePointDataMap(dayDate, secondDataMap);
                     //累加计算该日数据
@@ -814,15 +819,15 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
                     }
                     List<Date> dateList = new ArrayList<>();
                     for (TimeDataDTO dto : dataDTOList) {
-                        if (null == dto.getData()){
+                        if (null == dto.getData()) {
                             continue;
                         }
                         String time = dto.getTime();
                         Date getDate = com.persagy.apm.diagnose.utils.DateUtils.str2Date(time, com.persagy.apm.diagnose.utils.DateUtils.SDFSECOND);
                         if (getDate.compareTo(twoHourDate) > 0) {
-//                            if (Objects.equals(EnumRunStatusType.Open.getCode(), dto.getData())) {
-//                                dateList.add(getDate);
-//                            }
+                            //                            if (Objects.equals(EnumRunStatusType.Open.getCode(), dto.getData())) {
+                            //                                dateList.add(getDate);
+                            //                            }
                             //TODO 测试 运行状态
                             if (dto.getData() > runStateDownLimit && dto.getData() < runStateUpLimit) {
                                 dateList.add(getDate);
@@ -894,13 +899,13 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
                         dateList = dateRunDataMap.get(dayDate);
                     }
                     for (TimeDataDTO dto : dataDTOList) {
-                        if (null == dto.getData()){
+                        if (null == dto.getData()) {
                             continue;
                         }
                         Date getDate = com.persagy.apm.diagnose.utils.DateUtils.str2Date(dto.getTime(), com.persagy.apm.diagnose.utils.DateUtils.SDFSECOND);
-//                        if (Objects.equals(EnumRunStatusType.Open.getCode(), dto.getData())) {
-//                            dateList.add(getDate);
-//                        }
+                        //                        if (Objects.equals(EnumRunStatusType.Open.getCode(), dto.getData())) {
+                        //                            dateList.add(getDate);
+                        //                        }
                         if (dto.getData() > runStateDownLimit && dto.getData() < runStateUpLimit) {
                             dateList.add(getDate);
                         }
@@ -926,16 +931,16 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
                 String time = dto.getTime();
                 Date getDate = com.persagy.apm.diagnose.utils.DateUtils.str2Date(time, com.persagy.apm.diagnose.utils.DateUtils.SDFSECOND);
                 if (getDate.compareTo(firstDate) >= 0 && getDate.compareTo(twoHourDate) <= 0) {
-                    if (null == dto.getData()){
+                    if (null == dto.getData()) {
                         continue;
                     }
                     //TODO 测试 运行状态
                     if (dto.getData() < runStateDownLimit || dto.getData() > runStateUpLimit) {
                         return false;
                     }
-//                    if (Objects.equals(EnumRunStatusType.Close.getCode(), dto.getData())) {
-//                        return false;
-//                    }
+                    //                    if (Objects.equals(EnumRunStatusType.Close.getCode(), dto.getData())) {
+                    //                        return false;
+                    //                    }
                 }
             }
         } catch (Exception e) {
@@ -950,12 +955,12 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
     public String getFirstRunDate(List<TimeDataDTO> dataDTOList) {
         try {
             for (TimeDataDTO dto : dataDTOList) {
-                if (null == dto.getData()){
+                if (null == dto.getData()) {
                     continue;
                 }
-//                if (Objects.equals(EnumRunStatusType.Open.getCode(), dto.getData())) {
-//                    return dto.getTime();
-//                }
+                //                if (Objects.equals(EnumRunStatusType.Open.getCode(), dto.getData())) {
+                //                    return dto.getTime();
+                //                }
                 if (dto.getData() > runStateDownLimit && dto.getData() < runStateUpLimit) {
                     return dto.getTime();
                 }
@@ -970,8 +975,9 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
     /**
      * 获取数据
      */
-    private Map<Date, List<TimeDataDTO>> getServiceDataFromCenterDataService(String projectId, String objId, String computeCode,
-                                                                             Date startTime, Date endTime) throws Exception {
+    private Map<Date, List<TimeDataDTO>> getServiceDataFromCenterDataService(
+            String projectId, String objId, String computeCode,
+            Date startTime, Date endTime) throws Exception {
         List<TimeDataDTO> dataList = centerDataService.queryObjTimeDataList(projectId, objId, computeCode, startTime, endTime, EnumDataTimeType.MIN15);
         if (CollectionUtils.isEmpty(dataList)) {
             log.error("【维保计算线程】:查询数据中台对象历史数据为空,projectId:" + projectId + ";objId:" + objId + ";信息点:" + computeCode
@@ -1022,7 +1028,7 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
         queryAlarmRecordDTO.setCategory(cateGoryList);
         DmpResult<List<AlarmRecordItem>> configItemResultList = alarmRecordService.query(queryAlarmRecordDTO);
         List<AlarmRecordItem> alarmRecordItemList = DmpResultUtil.getData(configItemResultList);
-        if (!CollectionUtils.isEmpty(alarmRecordItemList)){
+        if (!CollectionUtils.isEmpty(alarmRecordItemList)) {
             return alarmRecordItemList.stream().collect(Collectors.toMap(AlarmRecordItem::getObjId, Function.identity(), (a, b) -> b));
         }
         return new HashMap<>();
@@ -1056,10 +1062,9 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
     /**
      * 更新缓存中报警配置发数时间
      */
-//    private void updateRedisConfigItemSendTimeDTO(String projectId, ConfigItemDataSendTimeDTO sendTimeDTO) {
-//        redisUtil.hset(RedisUtil.PROJECT_ITEM_SEND_TIME + ":" + projectId, sendTimeDTO.getConfigItemid(), sendTimeDTO, SendDataTimeKeyTime);
-//    }
-
+    //    private void updateRedisConfigItemSendTimeDTO(String projectId, ConfigItemDataSendTimeDTO sendTimeDTO) {
+    //        redisUtil.hset(RedisUtil.PROJECT_ITEM_SEND_TIME + ":" + projectId, sendTimeDTO.getConfigItemid(), sendTimeDTO, SendDataTimeKeyTime);
+    //    }
     private void saveOrUpdateComputeTime(String projectId, String objId, String indicatorId, Date computeTime) {
         if (computeTime == null) {
             return;
@@ -1079,11 +1084,11 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
         Set<String> objIdAndInfoCode = new HashSet<>();
         for (AlarmRuleDTO projectAlarmRule : projectAlarmRules) {
             List<String> objIds = projectAlarmRule.getObjIds();
-            if(CollectionUtils.isEmpty(objIds)){
+            if (CollectionUtils.isEmpty(objIds)) {
                 continue;
             }
             List<String> infoCodes = projectAlarmRule.getInfoCodes();
-            if (CollectionUtils.isEmpty(infoCodes)){
+            if (CollectionUtils.isEmpty(infoCodes)) {
                 continue;
             }
             for (String infoCode : infoCodes) {
@@ -1095,35 +1100,35 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
         return objIdAndInfoCode;
     }
 
-    public Map<Date, List<TimeDataDTO>> computerWetBallTempMap(ProjectDTO projectDTO,Date startDate,Date endDate){
+    public Map<Date, List<TimeDataDTO>> computerWetBallTempMap(ProjectDTO projectDTO, Date startDate, Date endDate) {
         try {
             //根据室外天气数据计算出湿球温度数据
-            Map<Date, List<WeatherDTO>> dayWeatherDataMap = getWeatherTemp(projectDTO,startDate,endDate);
-            if (null != dayWeatherDataMap && dayWeatherDataMap.size() > 0){
+            Map<Date, List<WeatherDTO>> dayWeatherDataMap = getWeatherTemp(projectDTO, startDate, endDate);
+            if (null != dayWeatherDataMap && dayWeatherDataMap.size() > 0) {
                 Map<Date, List<TimeDataDTO>> dayTwdTempMap = new HashMap<>();
-                for (Date dayDate:dayWeatherDataMap.keySet()) {
+                for (Date dayDate : dayWeatherDataMap.keySet()) {
                     List<WeatherDTO> dtoList = dayWeatherDataMap.get(dayDate);
-                    if (CollectionUtils.isEmpty(dtoList)){
+                    if (CollectionUtils.isEmpty(dtoList)) {
                         continue;
                     }
                     List<TimeDataDTO> timeDataDTOList = new ArrayList<>();
-                    for (WeatherDTO dto:dtoList) {
+                    for (WeatherDTO dto : dtoList) {
                         //根据温度和湿度 计算出湿空气焓值
-                        Double hVal = getHVal(dto.getTemperature(),dto.getHumidity());
+                        Double hVal = getHVal(dto.getTemperature(), dto.getHumidity());
                         //根据允许范围推出Tw值
-                        Double Tw = getTw(dto.getTemperature(),hVal,TwdTemp_Limit);
-                        log.info("项目编号为:"+projectDTO.getProjectId()+"日期为:"+dto.getHourTime()+"温度:"+dto.getTemperature()+"湿度:"+dto.getHumidity()+"湿球温度:"+Tw);
+                        Double Tw = getTw(dto.getTemperature(), hVal, TwdTemp_Limit);
+                        log.info("项目编号为:" + projectDTO.getProjectId() + "日期为:" + dto.getHourTime() + "温度:" + dto.getTemperature() + "湿度:" + dto.getHumidity() + "湿球温度:" + Tw);
                         //小时时间
                         Date hour = dto.getHourTime();
-                        Date nextHour = com.persagy.apm.diagnose.utils.DateUtils.addHours(hour,1);
-                        for (Date startHour = hour; startHour.before(nextHour) ; startHour = com.persagy.apm.diagnose.utils.DateUtils.addMinutes(startHour,15)) {
+                        Date nextHour = com.persagy.apm.diagnose.utils.DateUtils.addHours(hour, 1);
+                        for (Date startHour = hour; startHour.before(nextHour); startHour = com.persagy.apm.diagnose.utils.DateUtils.addMinutes(startHour, 15)) {
                             TimeDataDTO timeDataDTO = new TimeDataDTO();
                             timeDataDTO.setTime(com.persagy.apm.diagnose.utils.DateUtils.date2Str(startHour, com.persagy.apm.diagnose.utils.DateUtils.SDFSECOND));
                             timeDataDTO.setData(Tw);
                             timeDataDTOList.add(timeDataDTO);
                         }
                     }
-                    dayTwdTempMap.put(dayDate,timeDataDTOList);
+                    dayTwdTempMap.put(dayDate, timeDataDTOList);
                 }
                 return dayTwdTempMap;
             }
@@ -1136,16 +1141,16 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
     /**
      * 获取项目 天气数据
      */
-    public Map<Date, List<WeatherDTO>> getWeatherTemp(ProjectDTO projectDTO,Date startDate,Date endDate){
+    public Map<Date, List<WeatherDTO>> getWeatherTemp(ProjectDTO projectDTO, Date startDate, Date endDate) {
         try {
             String startTime = com.persagy.apm.diagnose.utils.DateUtils.date2Str(startDate, com.persagy.apm.diagnose.utils.DateUtils.SDF_SECOND);
             String endTime = com.persagy.apm.diagnose.utils.DateUtils.date2Str(endDate, com.persagy.apm.diagnose.utils.DateUtils.SDF_SECOND);
-            List<WeatherDTO> weatherDTOList = weatherService.hourHistoryData(projectDTO.getCity(),startTime,endTime,true,2);
-            if (!CollectionUtils.isEmpty(weatherDTOList)){
+            List<WeatherDTO> weatherDTOList = weatherService.hourHistoryData(projectDTO.getCity(), startTime, endTime, true, 2);
+            if (!CollectionUtils.isEmpty(weatherDTOList)) {
                 Map<Date, List<WeatherDTO>> dayTimeWeatherDataMap = new HashMap<>();
                 for (WeatherDTO dto : weatherDTOList) {
-//                    String time = dto.getHourTime();
-//                    Date timeDate = com.persagy.apm.diagnose.utils.DateUtils.str2Date(time, com.persagy.apm.diagnose.utils.DateUtils.SDF_SECOND);
+                    //                    String time = dto.getHourTime();
+                    //                    Date timeDate = com.persagy.apm.diagnose.utils.DateUtils.str2Date(time, com.persagy.apm.diagnose.utils.DateUtils.SDF_SECOND);
                     Date dayDate = DateUtils.truncate(dto.getHourTime(), Calendar.DATE);
                     if (dayTimeWeatherDataMap.containsKey(dayDate)) {
                         dayTimeWeatherDataMap.get(dayDate).add(dto);
@@ -1167,39 +1172,39 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
      * 根据允许范围推出Tw值
      */
     public Double getTw(Double Td, Double hVal, Double limit) throws InterruptedException {
-        Double Tw = Td-3;
+        Double Tw = Td - 3;
         Double num = 0.0;
         Boolean isOk = false;
         Boolean isTrueVal = false;
-        Integer zNum = 0,jNum = 0;
-        while (!isOk){
+        Integer zNum = 0, jNum = 0;
+        while (!isOk) {
             //湿空气焓值
             Double hwVal = getHwVal(Tw);
             //两种湿空气焓值  差值
-            Double hc = DataUtils.subtract(hVal,hwVal);
+            Double hc = DataUtils.subtract(hVal, hwVal);
             //判断范围
-            if (hc<limit && hc > 0.0){
+            if (hc < limit && hc > 0.0) {
                 isOk = true;
                 isTrueVal = true;
-            }else if (hc > 0){//hw 小于 h  增加湿球温度数据值
+            } else if (hc > 0) {//hw 小于 h  增加湿球温度数据值
                 Tw = Tw + 0.25;
                 zNum++;
-            }else if (hc < 0){//hw 大于 h  减小湿球温度数据值
+            } else if (hc < 0) {//hw 大于 h  减小湿球温度数据值
                 Tw = Tw - 0.25;
                 jNum++;
             }
             num++;
-            if (num > 10){
+            if (num > 10) {
                 isOk = true;
             }
         }
-        if (isTrueVal){
+        if (isTrueVal) {
             return Tw;
-        }else {
-            if (zNum > 0 && jNum > 0){
+        } else {
+            if (zNum > 0 && jNum > 0) {
                 return Tw;
-            }else{
-                return getTw(Tw,hVal,limit+0.5);
+            } else {
+                return getTw(Tw, hVal, limit + 0.5);
             }
         }
     }
@@ -1207,29 +1212,29 @@ public class ProjectDataRecordServiceImpl implements IProjectDataRecordService {
     /**
      * 根据湿球温度计算出湿空气焓值
      */
-    public double getHwVal(Double Tw){
-        Double eVal = (18.678-Tw/234.5)*Tw/(Tw+257.14);
-        Double ev= Math.exp(eVal);
+    public double getHwVal(Double Tw) {
+        Double eVal = (18.678 - Tw / 234.5) * Tw / (Tw + 257.14);
+        Double ev = Math.exp(eVal);
         Double Pv = 611.2 * ev; //Td时的水蒸汽饱和压力
         //含湿量
-        Double dw = 0.6219*(Pv/(101326-Pv));
+        Double dw = 0.6219 * (Pv / (101326 - Pv));
         //湿空气焓值
-        Double hw = 1.01*Tw + (2500+1.84*Tw)*dw;
+        Double hw = 1.01 * Tw + (2500 + 1.84 * Tw) * dw;
         return hw;
     }
 
     /**
      * 根据温度和湿度 计算出湿空气焓值
      */
-    public double getHVal(Double Td,Double Hr){
-        Double eVal = (18.678-Td/234.5)*Td/(Td+257.14);
-        Double ev= Math.exp(eVal);
-        Double Pv = 611.2*ev; //Td时的水蒸汽饱和压力
-        Double hrPv = 0.01*Hr*Pv;
+    public double getHVal(Double Td, Double Hr) {
+        Double eVal = (18.678 - Td / 234.5) * Td / (Td + 257.14);
+        Double ev = Math.exp(eVal);
+        Double Pv = 611.2 * ev; //Td时的水蒸汽饱和压力
+        Double hrPv = 0.01 * Hr * Pv;
         //含湿量
-        Double d = 0.6219*(hrPv/(101326-hrPv));
+        Double d = 0.6219 * (hrPv / (101326 - hrPv));
         //湿空气焓值
-        Double h = 1.01*Td + (2500+1.84*Td)*d;
+        Double h = 1.01 * Td + (2500 + 1.84 * Td) * d;
         return h;
     }
 

+ 0 - 8
src/main/resources/bootstrap.yml

@@ -19,14 +19,6 @@ spring:
           separator: ";"
           schema: classpath*:db/init/table.sql
 
-  data:
-    elasticsearch:
-      repositories:
-        enabled: true
-      client:
-        reactive:
-          connection-timeout: 5000
-
 # 日志管理方式使用集成框架的logback
 logging:
   config: classpath:logback-spring.xml