Browse Source

Merge branch 'v2.2.0' of http://39.106.8.246:3003/apm/energy-alarm-service.git into v2.2.0

gaoyu 3 years ago
parent
commit
c207bdb50b
24 changed files with 705 additions and 149 deletions
  1. 12 5
      src/main/java/com/persagy/apm/alarmservice/common/jms/JmsSender.java
  2. 1 1
      src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/model/MonitorIndicatorRecordListItemVO.java
  3. 2 2
      src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/model/QueryMonitorIndicatorRecordDTO.java
  4. 13 8
      src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/service/EqDiagnoseServiceImpl.java
  5. 12 0
      src/main/java/com/persagy/apm/alarmservice/dependency/saasweb/client/SaasWebClient.java
  6. 43 0
      src/main/java/com/persagy/apm/alarmservice/dependency/saasweb/service/SaasWebClientWrapper.java
  7. 6 4
      src/main/java/com/persagy/apm/alarmservice/group/alarmdic/service/AlarmDicServiceImpl.java
  8. 1 1
      src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/controller/AlarmCommnetController.java
  9. 1 15
      src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/controller/AlarmRecordController.java
  10. 3 3
      src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/enums/EnumAlarmTreatState.java
  11. 1 2
      src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/model/dto/DownloadAllAlarmRecordDTO.java
  12. 90 0
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/controller/PressureMeasurementController.java
  13. 22 0
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/QueryAlarmProjectDTO.java
  14. 14 0
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/IGroupAlarmRuleService.java
  15. 100 4
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/impl/GroupAlarmRuleServiceImpl.java
  16. 4 4
      src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/service/impl/MonitorIndicatorServiceImpl.java
  17. 1 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/service/impl/AlarmConditionServiceImpl.java
  18. 7 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/IProjectAlarmRuleService.java
  19. 67 5
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/impl/ProjectAlarmRuleServiceImpl.java
  20. 2 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/vo/ProjectVO.java
  21. 150 92
      src/main/resources/db/init/data.sql
  22. 151 1
      src/main/resources/db/init/table.sql
  23. 1 1
      src/main/resources/mapper/GroupAlarmRuleMapper.xml
  24. 1 1
      src/main/resources/mapper/ProjectAlarmRuleMapper.xml

+ 12 - 5
src/main/java/com/persagy/apm/alarmservice/common/jms/JmsSender.java

@@ -2,6 +2,7 @@ package com.persagy.apm.alarmservice.common.jms;
 
 import cn.hutool.core.lang.generator.UUIDGenerator;
 import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.Lists;
 import com.persagy.apm.alarmservice.common.configuration.rabbitmq.JacksonMapper;
 import com.persagy.apm.alarmservice.common.enums.JmsTypeEnum;
 import com.persagy.apm.alarmservice.common.model.DmpMessage;
@@ -171,12 +172,18 @@ public class JmsSender {
         if (CollectionUtils.isEmpty(relList)) {
             return;
         }
-        UUIDGenerator uuidGenerator = new UUIDGenerator();
-        dmpMessage.setMid(uuidGenerator.next());
-        dmpMessage.setStr1(JSONObject.toJSONString(relList));
-        dmpMessage.setType(JmsTypeEnum.NEW_OBJ_CONDITION_REL.getType());
 
-        sendObjConditionRelMsg(dmpMessage);
+        // 因为阿里云mq单个消息限制大小为64k。将关联关系消息分批放入mq,每次发送200条数据
+        int onceSendCount = 200;
+        List<List<ObjConditionRel>> partition = Lists.partition(relList, onceSendCount);
+
+        for (List<ObjConditionRel> objConditionRels : partition) {
+            UUIDGenerator uuidGenerator = new UUIDGenerator();
+            dmpMessage.setMid(uuidGenerator.next());
+            dmpMessage.setStr1(JSONObject.toJSONString(objConditionRels));
+            dmpMessage.setType(JmsTypeEnum.NEW_OBJ_CONDITION_REL.getType());
+            sendObjConditionRelMsg(dmpMessage);
+        }
     }
 
     /**

+ 1 - 1
src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/model/MonitorIndicatorRecordListItemVO.java

@@ -22,7 +22,7 @@ public class MonitorIndicatorRecordListItemVO {
     private String monitorIndicatorId;
     
     @ApiModelProperty("时间")
-    private Date date;
+    private String date;
     
     @ApiModelProperty("值")
     private String value;

+ 2 - 2
src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/model/QueryMonitorIndicatorRecordDTO.java

@@ -24,10 +24,10 @@ public class QueryMonitorIndicatorRecordDTO extends FeignBaseDTO {
     private String monitorIndicatorId;
 
     @ApiModelProperty(value = "开始时间", required = true)
-    private Long timeFrom;
+    private Date timeFrom;
 
     @ApiModelProperty(value = "结束时间", required = true)
-    private Long timeTo;
+    private Date timeTo;
 
     public QueryMonitorIndicatorRecordDTO() {
         super.setDefaultValue();

+ 13 - 8
src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/service/EqDiagnoseServiceImpl.java

@@ -5,10 +5,13 @@ import com.persagy.apm.alarmservice.dependency.eqdiagnose.model.MonitorIndicator
 import com.persagy.apm.alarmservice.dependency.eqdiagnose.model.QueryMonitorIndicatorRecordDTO;
 import com.persagy.apm.common.response.CommonResult;
 import com.persagy.apm.common.response.PageList;
+import com.persagy.apm.energyalarmstarter.alarmdata.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -35,7 +38,7 @@ public class EqDiagnoseServiceImpl {
      * @version V1.0 2021/5/19 3:36 下午
      */
     public Map<Date, String> queryMonitorIndicatorRecord(
-            QueryMonitorIndicatorRecordDTO queryMonitorIndicatorRecordDTO) {
+            QueryMonitorIndicatorRecordDTO queryMonitorIndicatorRecordDTO) throws ParseException {
         // feign查询
         CommonResult<PageList<MonitorIndicatorRecordListItemVO>> pageListCommonResult =
                 eqDiagnoseClient.queryMonitorIndicatorRecord(queryMonitorIndicatorRecordDTO);
@@ -52,12 +55,14 @@ public class EqDiagnoseServiceImpl {
         if (CollectionUtils.isEmpty(records)) {
             return new HashMap<>(0);
         }
-        return records.stream().filter(record -> record.getDate() != null).collect(
-                Collectors.toMap(
-                        MonitorIndicatorRecordListItemVO::getDate,
-                        MonitorIndicatorRecordListItemVO::getValue
-                )
-        );
-
+        Map<Date, String> result = new HashMap<>();
+        SimpleDateFormat ft = new SimpleDateFormat(DateUtils.SDF_SECOND);
+        for (MonitorIndicatorRecordListItemVO record : records) {
+            if(record.getDate() != null){
+                Date date = ft.parse(record.getDate());
+                result.put(date,record.getValue());
+            }
+        }
+        return result;
     }
 }

+ 12 - 0
src/main/java/com/persagy/apm/alarmservice/dependency/saasweb/client/SaasWebClient.java

@@ -30,4 +30,16 @@ public interface SaasWebClient {
     @Headers({"Content-Type: application/x-www-form-urlencoded"})
     PoemsFeignResponse<UserProjectsInfoVO> getCurrentUserProjectsInfo(@RequestParam("jsonString") String poemsFeignBaseDTO);
 
+    /**
+     *
+     * Description:查询项目列表
+     *
+     * @param jsonString
+     * @return String
+     * @author shaohongbo
+     * @since 2021年02月6日: 下午2:30:19 Update By shaohongbo 2021年02月6日: 下午2:30:19
+     */
+    @PostMapping("/Spring/MVC/entrance/unifier/queryInUseProjectsByIds")
+    @Headers({ "Content-Type: application/x-www-form-urlencoded" })
+    String queryInUseProjectsByIds(@RequestParam("jsonString") String jsonString);
 }

+ 43 - 0
src/main/java/com/persagy/apm/alarmservice/dependency/saasweb/service/SaasWebClientWrapper.java

@@ -1,14 +1,19 @@
 package com.persagy.apm.alarmservice.dependency.saasweb.service;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.persagy.apm.alarmservice.dependency.saasweb.client.SaasWebClient;
 import com.persagy.apm.alarmservice.dependency.saasweb.model.vo.UserProjectsInfoVO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
 import com.persagy.apm.common.model.dto.PoemsFeignBaseDTO;
 import com.persagy.apm.common.model.vo.SimpleObjVO;
 import com.persagy.apm.common.response.PoemsFeignResponse;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -64,4 +69,42 @@ public class SaasWebClientWrapper {
         return result;
     }
 
+    /**
+     * 查询运维平台所有项目列表
+     *
+     * @author lixing
+     * @version V1.0 2021/12/18 4:21 下午
+     */
+    public List<ProjectVO> queryProjectList(String groupCode) throws Exception {
+        String USERID = "systemId";
+        String LOGINDEVICE = "PC";
+        JSONObject param = new JSONObject();
+        JSONObject puser = new JSONObject();
+        puser.put("userId", USERID);
+        puser.put("loginDevice", LOGINDEVICE);
+        param.put("puser", puser);
+        param.put("groupCode",groupCode);
+        String resultStr = saasWebClient.queryInUseProjectsByIds(param.toJSONString());
+        JSONObject parseObject = JSONObject.parseObject(resultStr);
+        if ("failure".equals(parseObject.getString("result"))) {
+            throw new Exception("查询分区失败:" + parseObject.getString("reson"));
+        }
+        List<ProjectVO> result = new ArrayList<>();
+        JSONArray jsonArray = parseObject.getJSONArray("content");
+        if (jsonArray == null || jsonArray.isEmpty()) {
+            return result;
+        }
+
+        for (Object object : jsonArray) {
+            JSONObject obj = (JSONObject) object;
+            ProjectVO projectVO = ProjectVO.builder().
+                    groupCode(groupCode).
+                    projectId(obj.getString("projectId")).
+                    projectName(obj.getString("projectLocalName"))
+                    .build();
+            result.add(projectVO);
+        }
+        return result;
+    }
+
 }

+ 6 - 4
src/main/java/com/persagy/apm/alarmservice/group/alarmdic/service/AlarmDicServiceImpl.java

@@ -116,10 +116,12 @@ public class AlarmDicServiceImpl {
     public List<EnumVO> queryStateEnum() {
         List<EnumVO> resultList = new ArrayList<>(EnumAlarmState.values().length);
         Arrays.asList(EnumAlarmState.values()).forEach(item -> {
-            EnumVO enumVO = new EnumVO();
-            enumVO.setKey(item.getType());
-            enumVO.setValue(item.getDesc());
-            resultList.add(enumVO);
+            if (EnumAlarmState.EXPIRE.getType() != item.getType()){
+                EnumVO enumVO = new EnumVO();
+                enumVO.setKey(item.getType());
+                enumVO.setValue(item.getDesc());
+                resultList.add(enumVO);
+            }
         });
         return resultList;
     }

+ 1 - 1
src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/controller/AlarmCommnetController.java

@@ -41,7 +41,7 @@ import java.util.stream.Collectors;
 @Validated
 @RestController
 @RequestMapping("alarm_comments")
-public class AlarmCommnetController {
+public class AlarmCommentController {
     @Autowired
     AlarmCommentServiceImpl alarmCommentService;
     @Autowired

+ 1 - 15
src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/controller/AlarmRecordController.java

@@ -185,17 +185,6 @@ public class AlarmRecordController {
         return queryAlarmRecord(pageQueryAlarmRecordDTO);
     }
 
-    @ApiOperation(value = "已忽略报警列表")
-    @PostMapping("/ignored_list")
-    public CommonResult<PageList<AlarmRecordListItem>> queryIgnoredAlarmRecord(
-            @Valid @RequestBody PageQueryAlarmRecordDTO pageQueryAlarmRecordDTO) throws Exception {
-        // 历史报警的默认查询条件为:报警处理状态为已忽略
-        pageQueryAlarmRecordDTO.setAlarmTreatState(Lists.newArrayList(
-                EnumAlarmTreatState.IGNORE.getType()
-        ));
-        return queryAlarmRecord(pageQueryAlarmRecordDTO);
-    }
-
     @ApiOperation(value = "关闭报警")
     @PostMapping("/close")
     public CommonResult<AlarmRecordIdsItem> closeAlarmRecord(
@@ -267,7 +256,7 @@ public class AlarmRecordController {
             @Valid @RequestBody IgnoreAlarmRecordDTO ignoreAlarmRecordDTO) throws Exception {
         // 报警处理方式更新为忽略,报警状态更新为已忽略
         String treatMode = EnumAlarmTreatMode.IGNORE.getType();
-        String treatState = EnumAlarmTreatState.IGNORE.getType();
+        String treatState = EnumAlarmTreatState.DONE.getType();
         List<String> recordIds = ignoreAlarmRecordDTO.getIds();
 
         return updateAlarmRecordTreatState(treatMode, treatState,null,null, recordIds);
@@ -299,9 +288,6 @@ public class AlarmRecordController {
         if (listType.equals(EnumDownloadAlarmListType.HISTORY.getType())) {
             result = queryHistoryAlarmRecord(pageQueryAlarmRecordDTO);
         }
-        if (listType.equals(EnumDownloadAlarmListType.IGNORE.getType())) {
-            result = queryIgnoredAlarmRecord(pageQueryAlarmRecordDTO);
-        }
 
         List<AlarmRecordListItem> alarmRecordItemList = new ArrayList<>();
         if (result != null) {

+ 3 - 3
src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/enums/EnumAlarmTreatState.java

@@ -18,9 +18,9 @@ public enum EnumAlarmTreatState {
      */
     UN_HANDLE("1", "未处理"),
     HANDLING("2", "处理中"),
-    DONE("3", "处理完成"),
-    // 用于兼容子系统业务,后期会移除该状态
-    IGNORE("4", "已忽略");
+    DONE("3", "处理完成");
+//    // 用于兼容子系统业务,后期会移除该状态
+//    IGNORE("4", "已忽略");
 
     @Setter
     @Getter

+ 1 - 2
src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/model/dto/DownloadAllAlarmRecordDTO.java

@@ -16,8 +16,7 @@ import java.util.List;
 @Data
 @ApiModel
 public class DownloadAllAlarmRecordDTO {
-    @ApiModelProperty(value = "列表类型", required = true,
-            notes = "com.persagy.apm.alarmservice.group.alarmrecord.enums.EnumAlarmListType")
+    @ApiModelProperty(value = "列表类型CURRENT,HISTORY", required = true)
     private String listType;
     @ApiModelProperty(value = "报警开始时间")
     private Date triggerStartTime;

+ 90 - 0
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/controller/PressureMeasurementController.java

@@ -0,0 +1,90 @@
+package com.persagy.apm.alarmservice.group.alarmrule.controller;
+
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.AddGroupAlarmRuleDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.QueryAlarmProjectDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
+import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
+import com.persagy.apm.common.response.ApmResponseUpsertVO;
+import com.persagy.apm.common.response.CommonResult;
+import com.persagy.apm.common.utils.ResultHelper;
+import com.persagy.common.enums.ResponseCode;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "压力测试接口")
+@Validated
+@RestController
+@RequestMapping("pressure_measurement")
+public class PressureMeasurementController {
+
+    @Autowired
+    private IGroupAlarmRuleService groupAlarmRuleService;
+    @Autowired
+    private IProjectAlarmRuleService projectAlarmRuleService;
+
+    @ApiOperation(value = "创建同步项目")
+    @PostMapping("/create_alarm_project")
+    public void createAlarmProject() {
+        try {
+            List<ProjectVO> projects = projectAlarmRuleService.getProject();
+            // 压测需要的项目总数
+            int projectCount = 400;
+            if (projects.size() < projectCount){
+                StringBuffer sb = new StringBuffer();
+                for (int i = projects.size(); i < projectCount; i++) {
+                   int num = 1000+i;
+                   String projectId = "Pm202112"+num;
+                   String projectName = projectId+"广场";
+                    sb.append("(");
+                    sb.append("'"+num+"',");
+                    sb.append("'"+projectId+"',");
+                    sb.append("'"+projectName+"',");
+                    sb.append("'YL'");
+                    sb.append("),");
+                }
+                String substring = sb.substring(0, sb.length() - 1);
+                projectAlarmRuleService.insertProject(substring);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @ApiOperation(value = "创建集团报警规则")
+    @PostMapping("/create")
+    public CommonResult<ApmResponseUpsertVO> createGroupAlarmRule(
+            @Valid @RequestBody AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
+        String id = null;
+        try {
+            id = groupAlarmRuleService.createGroupAlarmRulePM(addGroupAlarmRuleDTO);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResultHelper.failure(ResponseCode.B0001.getCode(), e.getMessage());
+        }
+        return ResultHelper.single(new ApmResponseUpsertVO(id));
+    }
+
+    @ApiOperation(value = "查询同步项目列表")
+    @PostMapping("/query_project")
+    public CommonResult<List<ProjectVO>> queryProject(@Valid @RequestBody QueryAlarmProjectDTO queryAlarmProjectDTO) {
+        List<ProjectVO> projects = null;
+        try {
+            projects = projectAlarmRuleService.getProject();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResultHelper.failure(ResponseCode.B0001.getCode(), e.getMessage());
+        }
+        return ResultHelper.single(projects);
+    }
+
+}

+ 22 - 0
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/QueryAlarmProjectDTO.java

@@ -0,0 +1,22 @@
+package com.persagy.apm.alarmservice.group.alarmrule.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@Builder(toBuilder=true)
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class QueryAlarmProjectDTO {
+    private String groupCode;
+    private String userId;
+    private String pd;
+}

+ 14 - 0
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/IGroupAlarmRuleService.java

@@ -85,4 +85,18 @@ public interface IGroupAlarmRuleService  {
     List<GroupAlarmRule> getExistAlarmItem(String groupId);
 
     void deleteEquipCondition(String condition, String classCode, String alarmItemCode) throws Exception;
+
+
+    /**
+     * TODO 压力测试
+     * 创建集团报警规则
+     *
+     * @param addGroupAlarmRuleDTO addDTO
+     * @return 集团报警规则主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:35:45
+     */
+    public String createGroupAlarmRulePM(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) throws Exception;
+
+
 }

+ 100 - 4
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/impl/GroupAlarmRuleServiceImpl.java

@@ -23,6 +23,7 @@ import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlar
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.common.context.poems.PoemsContextContent;
 import com.persagy.apm.common.model.dto.Sort;
 import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.BatchDeleteAlarmConfigDTO;
@@ -388,10 +389,19 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
         GroupAlarmRule groupAlarmRule = getById(groupRuleId);
         this.deleteGroupAlarmRule(groupRuleId);
         alarmConditionService.deleteAlarmCondition(deleteGroupAlarmRuleDTO.getAlarmConditionId());
-        projectAlarmRuleService.deleteBatchByGroupRule(groupAlarmRule);
-        String condition = deleteGroupAlarmRuleDTO.getCondition();
-        String classCode = deleteGroupAlarmRuleDTO.getClassCode();
-        deleteEquipCondition(condition, classCode, groupAlarmRule.getAlarmItemCode());
+        // 异步删除项目上的报警规则
+        PoemsContextContent context = PoemsContext.getContext();
+        executor.execute(() -> {
+            PoemsContext.setContext(context);
+            try {
+                projectAlarmRuleService.deleteBatchByGroupRule(groupAlarmRule);
+                String condition = deleteGroupAlarmRuleDTO.getCondition();
+                String classCode = deleteGroupAlarmRuleDTO.getClassCode();
+                deleteEquipCondition(condition, classCode, groupAlarmRule.getAlarmItemCode());
+            } catch (Exception e) {
+                log.error("删除项目报警规则失败", e);
+            }
+        });
     }
 
     @Override
@@ -474,4 +484,90 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
         queryWrapper.eq(GroupAlarmRule.PROP_VALID, ValidEnum.TRUE.getType());
         return list(queryWrapper);
     }
+
+    /**
+     * 创建集团报警规则
+     *
+     * @return 集团报警规则主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:35:45
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String createGroupAlarmRulePM(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) throws Exception {
+        //1、给某个设备分组创建集团报警
+        GroupAlarmRule groupAlarmRule = ConvertGroupAlarmRuleTool.INSTANCE.convertAddDto2Entity(addGroupAlarmRuleDTO);
+        AddAlarmConditionDTO alarmCondition = addGroupAlarmRuleDTO.getAlarmCondition();
+        Map<String, Object> conditionMap = alarmConditionService.createAlarmCondition(alarmCondition);
+        //创建集团报警
+        groupAlarmRule.setAlarmConditionId((String) conditionMap.get("id"));
+        setDefaultValue(groupAlarmRule);
+        save(groupAlarmRule);
+        //2、异步创建项目报警
+        String userId = PoemsContext.getContext().getUserId();
+        String groupCode = PoemsContext.getContext().getGroupCode();
+        String projectId = PoemsContext.getContext().getProjectId();
+        String pd = PoemsContext.getContext().getPd();
+        String loginDevice = PoemsContext.getContext().getLoginDevice();
+        executor.execute(() -> {
+            // 切换线程需要重新设置线程中的通用变量
+            PoemsContext.setContext(userId, loginDevice, pd, groupCode, projectId);
+            projectAlarmRuleService.addProjectAlarmRulesPM(addGroupAlarmRuleDTO);
+        });
+
+        // 勿删,后续有可能恢复 lixing
+//        List<ProjectVO> projects = projectAlarmRuleService.getProject();
+//        if (projects.size() == 0) {
+//            throw new Exception("获取项目为空");
+//        }
+//        //3、同步创建设备报警条件
+//        List<AddAlarmConfigDTO> alarmConfigs = new ArrayList<>();
+//        String condition = addGroupAlarmRuleDTO.getCondition();
+//        String classCode = addGroupAlarmRuleDTO.getClassCode();
+//        for (ProjectVO project : projects) {
+//            QueryEquipDTO queryEquipDTO = new QueryEquipDTO();
+//            queryEquipDTO.setProjectId(projectId);
+//            queryEquipDTO.setClassCode(classCode);
+//            queryEquipDTO.setCondition(condition);
+//            List<EquipItem> record = groupManagementService.getEquipList(queryEquipDTO);
+//            for (EquipItem rec : record) {
+//                AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
+//                String equipId = rec.getId();
+//                addAlarmConfigDTO.setObjId(equipId);
+//                addAlarmConfigDTO.setItemCode(addGroupAlarmRuleDTO.getAlarmItemCode());
+//                addAlarmConfigDTO.setClassCode(addGroupAlarmRuleDTO.getClassCode());
+//                addAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
+//                addAlarmConfigDTO.setCategory("Eqdx");
+//                addAlarmConfigDTO.setOpen(1);
+//                AlarmCondition cond = new AlarmCondition();
+//                List<String> infoCodeList = (List<String>) conditionMap.get("infoCode");
+//                List<String> infoCodeNew = new ArrayList<>();
+//                for (String infoCode : infoCodeList) {
+//                    String replacement = equipId + "_" + infoCode;
+//                    infoCodeNew.add(infoCode.replaceAll(infoCode, replacement));
+//                }
+//                cond.setInfoCode(infoCodeNew);
+//                String backend = (String) conditionMap.get("backend");
+//                for (String infoCode : infoCodeList) {
+//                    String replacement = equipId + "_" + infoCode;
+//                    backend = backend.replaceAll(infoCode, replacement);
+//                }
+//                cond.setEnd("!" + backend);
+//                cond.setEndUphold(0);
+//                cond.setTrigger(backend);
+//                cond.setTriggerUphold(alarmCondition.getTriggerUphold() * 60);
+//                cond.setRules((List<String>) conditionMap.get("displayFormula"));
+//                JSONArray configs = JSONArray.parseArray(JSON.toJSONString(alarmCondition.getFrontend()));
+//                cond.setConfigs(configs);
+//                AlarmEffectTime effectTime = new AlarmEffectTime();
+//                effectTime.setType("always");
+//                cond.setEffectTime(effectTime);
+//                addAlarmConfigDTO.setCondition(cond);
+//                alarmConfigs.add(addAlarmConfigDTO);
+//            }
+//            projectAlarmRuleService.sendBatchCreateAlarmConfigMsg(alarmConfigs, projectId);
+//        }
+        return groupAlarmRule.getId();
+    }
+
 }

+ 4 - 4
src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/service/impl/MonitorIndicatorServiceImpl.java

@@ -37,6 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.text.ParseException;
 import java.util.*;
 
 /**
@@ -453,7 +454,7 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
      * @version V1.0 2021/9/27 2:35 下午
      */
     private Map<String, Map<Date, String>> getIndicatorHistoryValues(
-            String objId, List<String> infoCodeList, Date startTime, Date endTime) {
+            String objId, List<String> infoCodeList, Date startTime, Date endTime) throws ParseException {
         // monitorId -> (time -> value)
         Map<String, Map<Date, String>> monitorValuesMap = new HashMap<>();
         // infoCodeList:[indicatorId]
@@ -463,13 +464,12 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
             queryMonitorIndicatorRecordDTO.setObjId(objId);
             queryMonitorIndicatorRecordDTO.setProjectId(PoemsContext.getContext().getProjectId());
             queryMonitorIndicatorRecordDTO.setMonitorIndicatorId(indicatorId);
-            queryMonitorIndicatorRecordDTO.setTimeFrom(startTime == null ? null : startTime.getTime());
-            queryMonitorIndicatorRecordDTO.setTimeTo(endTime == null ? null : endTime.getTime());
+            queryMonitorIndicatorRecordDTO.setTimeFrom(startTime);
+            queryMonitorIndicatorRecordDTO.setTimeTo(endTime);
             Map<Date, String> indicatorRecordMap = eqDiagnoseService.
                     queryMonitorIndicatorRecord(queryMonitorIndicatorRecordDTO);
             monitorValuesMap.put(indicatorId, indicatorRecordMap);
         }
-
         return monitorValuesMap;
     }
 }

+ 1 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/service/impl/AlarmConditionServiceImpl.java

@@ -1,5 +1,6 @@
 package com.persagy.apm.alarmservice.project.alarmcondition.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

+ 7 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/IProjectAlarmRuleService.java

@@ -104,4 +104,11 @@ public interface IProjectAlarmRuleService  {
 //    void sendBatchCreateAlarmConfigMsg(List<AddAlarmConfigDTO> alarmConfigs, String projectId);
 
     void deleteBatchByGroupRule(GroupAlarmRule groupAlarmRule) throws Exception;
+
+    /**
+     * TODO 压测  新增项目规则
+     * @param addGroupAlarmRuleDTO
+     */
+    void addProjectAlarmRulesPM(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO);
+
 }

+ 67 - 5
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/impl/ProjectAlarmRuleServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.persagy.apm.alarmservice.common.jms.JmsSender;
 import com.persagy.apm.alarmservice.common.util.DataUtils;
+import com.persagy.apm.alarmservice.dependency.saasweb.service.SaasWebClientWrapper;
 import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
 import com.persagy.apm.alarmservice.group.alarmrule.model.dto.AddGroupAlarmRuleDTO;
 import com.persagy.apm.alarmservice.group.alarmrule.model.dto.GetGroupAlarmRuleDTO;
@@ -40,6 +41,7 @@ import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.common.context.poems.PoemsContext;
 import com.persagy.apm.energyalarmstarter.alarmdata.service.AlarmConfigServiceImpl;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,10 +49,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static org.apache.commons.lang3.math.NumberUtils.INTEGER_ONE;
@@ -82,6 +81,8 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
     private JmsSender jmsSender;
     @Autowired
     private ProjectAlarmRuleObjRelMapper projectAlarmRuleObjRelMapper;
+    @Autowired
+    private SaasWebClientWrapper saasWebClientWrapper;
 
     /**
      * 创建项目报警规则
@@ -504,8 +505,14 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
     }
 
     @Override
+    @SneakyThrows
     public List<ProjectVO> getProject() {
-        return mapper.getProject();
+        // 先从业务中台自己的项目表中拿数据,如果表中没有数据,使用运维平台的项目
+        List<ProjectVO> projects = mapper.getProject();
+        if (CollectionUtils.isEmpty(projects)) {
+            projects = saasWebClientWrapper.queryProjectList(PoemsContext.getContext().getGroupCode());
+        }
+        return projects;
     }
 
     @Override
@@ -561,4 +568,59 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         }
         return list.subList((currentPage - 1) * pagesize, Math.min(currentPage * pagesize, list.size()));
     }
+
+    @Override
+    public void addProjectAlarmRulesPM(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
+        String condition = addGroupAlarmRuleDTO.getCondition();
+        String classCode = addGroupAlarmRuleDTO.getClassCode();
+        //查询所有项目
+        List<ProjectVO> projects = this.getProject();
+        //遍历项目,组好对象进行插入
+        List<ProjectAlarmRule> projectAlarmRuleList;
+        String alarmItemCode = addGroupAlarmRuleDTO.getAlarmItemCode();
+        String alarmItemName = addGroupAlarmRuleDTO.getAlarmItemName();
+        List<AddProjectAlarmRuleObjRelDTO> addRelationList;
+        log.info("开始创建项目报警规则,并添加项目规则与设备的关联关系");
+        log.info("共有{}个项目需要创建报警规则", projects.size());
+        int count = 0;
+        for (ProjectVO project : projects) {
+            projectAlarmRuleList = new ArrayList<>();
+            addRelationList = new ArrayList<>();
+
+            ProjectAlarmRule projectAlarmRule = new ProjectAlarmRule();
+            projectAlarmRule.setProjectId(project.getProjectId());
+            projectAlarmRule.setAlarmItemCode(alarmItemCode);
+            projectAlarmRule.setAlarmItemName(alarmItemName);
+            projectAlarmRule.setBelong(INTEGER_ONE);
+            projectAlarmRule.setGroupId(addGroupAlarmRuleDTO.getGroupId());
+            projectAlarmRule.setId(DataUtils.getUUID());
+            String conditionId = getConditionId(alarmItemCode);
+            projectAlarmRule.setAlarmConditionId(conditionId);
+            setDefaultValue(projectAlarmRule);
+            projectAlarmRuleList.add(projectAlarmRule);
+            //新增关联关系
+            QueryEquipDTO queryEquipDTO = new QueryEquipDTO();
+            queryEquipDTO.setProjectId(project.getProjectId());
+            queryEquipDTO.setClassCode(classCode);
+            queryEquipDTO.setCondition(condition);
+            List<EquipItem> records = groupManagementService.getEquipList(queryEquipDTO);
+            // 压测模拟的设备数量
+            int equipCount = 2000;
+            for (int i = 100; i < equipCount; i++) {
+                String objId = project.getProjectId()+"-"+i;
+                AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO = new AddProjectAlarmRuleObjRelDTO();
+                addProjectAlarmRuleObjRelDTO.setProjectAlarmRuleId(projectAlarmRule.getId());
+                addProjectAlarmRuleObjRelDTO.setProjectId(project.getProjectId());
+                addProjectAlarmRuleObjRelDTO.setObjId(objId);
+                addProjectAlarmRuleObjRelDTO.setObjName("设备名称" + objId);
+                addProjectAlarmRuleObjRelDTO.setOpen(INTEGER_ONE);
+                addRelationList.add(addProjectAlarmRuleObjRelDTO);
+            }
+            // 按项目批量保存
+            saveBatch(projectAlarmRuleList);
+            projectAlarmRuleObjRelService.createBatchRelationAndSendMsg(addRelationList);
+            count++;
+            log.info("已完成{}个项目的报警规则创建, 剩余{}个项目的报警规则待创建", count, projects.size() - count);
+        }
+    }
 }

+ 2 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/vo/ProjectVO.java

@@ -2,6 +2,7 @@ package com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
 import lombok.Data;
 
 import java.util.List;
@@ -13,6 +14,7 @@ import java.util.List;
  */
 @ApiModel(value = "项目")
 @Data
+@Builder
 public class ProjectVO {
 
     @ApiModelProperty("集团编码")

+ 150 - 92
src/main/resources/db/init/data.sql

@@ -1,15 +1,16 @@
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_ChillWaterOutTemp', '冷水出口温度', 'ACATAH', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_ChillWaterOutTemp', '冷水出口温度', 'ACATAH', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_ChillWaterOutTempdifference', '连续时刻出水温度差', 'ACATAH', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_ChillWaterOutTempdifference', '连续时刻出水温度差', 'ACATAH', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL,
+        1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_ChillWaterValveOpening', '冷水阀开度', 'ACATAH', '%', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_ChillWaterValveOpening', '冷水阀开度', 'ACATAH', '%', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_FreshAirH', '新风焓值', 'ACATAH', 'kJ/kgda', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_FreshAirH', '新风焓值', 'ACATAH', 'kJ/kgda', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_FreshAirHdifference', '连续时刻室外焓值差', 'ACATAH', 'kJ/kgda', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_FreshAirHdifference', '连续时刻室外焓值差', 'ACATAH', 'kJ/kgda', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_FreshAirValveOpening', '新风阀开度', 'ACATAH', '%', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_FreshAirValveOpening', '新风阀开度', 'ACATAH', '%', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
 VALUES ('ACATAH_ManualAutoStatus', '手自动状态', 'ACATAH', NULL, '[
   {
@@ -20,23 +21,23 @@ VALUES ('ACATAH_ManualAutoStatus', '手自动状态', 'ACATAH', NULL, '[
     \"key\": \"1\",
     \"value\": \"自动\"
   }
-]', NULL, NULL, NULL, NULL, NULL, 1);
+]', 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_ReturnAirCO2', '回风CO2浓度', 'ACATAH', 'ppm', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_ReturnAirCO2', '回风CO2浓度', 'ACATAH', 'ppm', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_ReturnAirCO2difference', '连续时刻CO2浓度差', 'ACATAH', 'ppm', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_ReturnAirCO2difference', '连续时刻CO2浓度差', 'ACATAH', 'ppm', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_ReturnAirH', '回风焓值', 'ACATAH', 'kJ/kgda', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_ReturnAirH', '回风焓值', 'ACATAH', 'kJ/kgda', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_ReturnAirHdifference', '连续时刻室内焓值差', 'ACATAH', 'kJ/kgda', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_ReturnAirHdifference', '连续时刻室内焓值差', 'ACATAH', 'kJ/kgda', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_ReturnAirTemp', '回风温度', 'ACATAH', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_ReturnAirTemp', '回风温度', 'ACATAH', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_ReturnAirTempdifference', '连续时刻回风温度差', 'ACATAH', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_ReturnAirTempdifference', '连续时刻回风温度差', 'ACATAH', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_ReturnAirTempSet', '回风温度设定', 'ACATAH', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_ReturnAirTempSet', '回风温度设定', 'ACATAH', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_ReturnAirValveOpening', '回风阀开度', 'ACATAH', '%', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_ReturnAirValveOpening', '回风阀开度', 'ACATAH', '%', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
 VALUES ('ACATAH_RunStatus', '运行状态', 'ACATAH', NULL, '[
   {
@@ -47,7 +48,7 @@ VALUES ('ACATAH_RunStatus', '运行状态', 'ACATAH', NULL, '[
     \"key\": \"1\",
     \"value\": \"运行\"
   }
-]', NULL, NULL, NULL, NULL, NULL, 1);
+]', 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
 VALUES ('ACATAH_SeasonChangeSet', '季节转换设定', 'ACATAH', NULL, '[
   {
@@ -66,21 +67,22 @@ VALUES ('ACATAH_SeasonChangeSet', '季节转换设定', 'ACATAH', NULL, '[
     \"key\": \"99\",
     \"value\": \"其他\"
   }
-]', NULL, NULL, NULL, NULL, NULL, 1);
+]', 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_SupplyAirTemp', '送风温度', 'ACATAH', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_SupplyAirTemp', '送风温度', 'ACATAH', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_SupplyAirTempdifference', '连续时刻送风温度差', 'ACATAH', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_SupplyAirTempdifference', '连续时刻送风温度差', 'ACATAH', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_SupplyAirTempSet', '送风温度设定', 'ACATAH', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_SupplyAirTempSet', '送风温度设定', 'ACATAH', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATAH_SupplyFanFreq', '送风机频率', 'ACATAH', 'Hz', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATAH_SupplyFanFreq', '送风机频率', 'ACATAH', 'Hz', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATFU_ChillWaterOutTemp', '冷水出口温度', 'ACATFU', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATFU_ChillWaterOutTemp', '冷水出口温度', 'ACATFU', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATFU_ChillWaterOutTempdifference', '连续时刻出水温度差', 'ACATFU', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATFU_ChillWaterOutTempdifference', '连续时刻出水温度差', 'ACATFU', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL,
+        1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATFU_ChillWaterValveOpening', '冷水阀开度', 'ACATFU', '%', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATFU_ChillWaterValveOpening', '冷水阀开度', 'ACATFU', '%', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
 VALUES ('ACATFU_ManualAutoStatus', '手自动状态', 'ACATFU', NULL, '[
   {
@@ -91,7 +93,7 @@ VALUES ('ACATFU_ManualAutoStatus', '手自动状态', 'ACATFU', NULL, '[
     \"key\": \"1\",
     \"value\": \"自动\"
   }
-]', NULL, NULL, NULL, NULL, NULL, 1);
+]', 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
 VALUES ('ACATFU_RunStatus', '运行状态', 'ACATFU', NULL, '[
   {
@@ -102,7 +104,7 @@ VALUES ('ACATFU_RunStatus', '运行状态', 'ACATFU', NULL, '[
     \"key\": \"1\",
     \"value\": \"运行\"
   }
-]', NULL, NULL, NULL, NULL, NULL, 1);
+]', 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
 VALUES ('ACATFU_SeasonChangeSet', '季节转换设定', 'ACATFU', NULL, '[
   {
@@ -121,204 +123,260 @@ VALUES ('ACATFU_SeasonChangeSet', '季节转换设定', 'ACATFU', NULL, '[
     \"key\": \"99\",
     \"value\": \"其他\"
   }
-]', NULL, NULL, NULL, NULL, NULL, 1);
+]', 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATFU_SupplyAirTemp', '送风温度', 'ACATFU', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATFU_SupplyAirTemp', '送风温度', 'ACATFU', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATFU_SupplyAirTempdifference', '连续时刻送风温度差', 'ACATFU', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATFU_SupplyAirTempdifference', '连续时刻送风温度差', 'ACATFU', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACATFU_SupplyAirTempSet', '送风温度设定', 'ACATFU', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACATFU_SupplyAirTempSet', '送风温度设定', 'ACATFU', '℃', NULL, 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCAC_CondContinuousOperation', '冷凝器运行持续时间', 'ACCCAC', '天', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCAC_CondContinuousOperation', '冷凝器运行持续时间', 'ACCCAC', '天', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCAC_CondHeatTransferDayAvg', '冷凝器换热端差日维度平均值阈值', 'ACCCAC', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCAC_CondHeatTransferDayAvg', '冷凝器换热端差日维度平均值阈值', 'ACCCAC', '℃', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL,
+        1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCAC_EvapContinuousOperation', '蒸发器运行持续时间', 'ACCCAC', '天', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCAC_EvapContinuousOperation', '蒸发器运行持续时间', 'ACCCAC', '天', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCAC_EvapHeatTransferDayAvg', '蒸发器换热端差日维度平均值阈值', 'ACCCAC', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCAC_EvapHeatTransferDayAvg', '蒸发器换热端差日维度平均值阈值', 'ACCCAC', '℃', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL,
+        1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCCC_CondContinuousOperation', '冷凝器运行持续时间', 'ACCCCC', '天', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCCC_CondContinuousOperation', '冷凝器运行持续时间', 'ACCCCC', '天', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCCC_CondHeatTransferDayAvg', '冷凝器换热端差日维度平均值阈值', 'ACCCCC', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCCC_CondHeatTransferDayAvg', '冷凝器换热端差日维度平均值阈值', 'ACCCCC', '℃', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL,
+        1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCCC_EvapContinuousOperation', '蒸发器运行持续时间', 'ACCCCC', '天', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCCC_EvapContinuousOperation', '蒸发器运行持续时间', 'ACCCCC', '天', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCCC_EvapHeatTransferDayAvg', '蒸发器换热端差日维度平均值阈值', 'ACCCCC', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCCC_EvapHeatTransferDayAvg', '蒸发器换热端差日维度平均值阈值', 'ACCCCC', '℃', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL,
+        1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCPC_CondContinuousOperation', '冷凝器运行持续时间', 'ACCCPC', '天', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCPC_CondContinuousOperation', '冷凝器运行持续时间', 'ACCCPC', '天', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCPC_CondHeatTransferDayAvg', '冷凝器换热端差日维度平均值阈值', 'ACCCPC', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCPC_CondHeatTransferDayAvg', '冷凝器换热端差日维度平均值阈值', 'ACCCPC', '℃', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL,
+        1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCPC_EvapContinuousOperation', '蒸发器运行持续时间', 'ACCCPC', '天', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCPC_EvapContinuousOperation', '蒸发器运行持续时间', 'ACCCPC', '天', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCPC_EvapHeatTransferDayAvg', '蒸发器换热端差日维度平均值阈值', 'ACCCPC', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCPC_EvapHeatTransferDayAvg', '蒸发器换热端差日维度平均值阈值', 'ACCCPC', '℃', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL,
+        1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCSC_CondContinuousOperation', '冷凝器运行持续时间', 'ACCCSC', '天', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCSC_CondContinuousOperation', '冷凝器运行持续时间', 'ACCCSC', '天', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCSC_CondHeatTransferDayAvg', '冷凝器换热端差日维度平均值阈值', 'ACCCSC', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCSC_CondHeatTransferDayAvg', '冷凝器换热端差日维度平均值阈值', 'ACCCSC', '℃', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL,
+        1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCSC_EvapContinuousOperation', '蒸发器运行持续时间', 'ACCCSC', '天', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCSC_EvapContinuousOperation', '蒸发器运行持续时间', 'ACCCSC', '天', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCSC_EvapHeatTransferDayAvg', '蒸发器换热端差日维度平均值阈值', 'ACCCSC', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCSC_EvapHeatTransferDayAvg', '蒸发器换热端差日维度平均值阈值', 'ACCCSC', '℃', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL,
+        1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCOT_ApproachTempContinuousOperation', '逼近温度运行持续时间', 'ACCCOT', '天', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCOT_ApproachTempContinuousOperation', '逼近温度运行持续时间', 'ACCCOT', '天', NULL, 'Eqwb', NULL, NULL, NULL, NULL,
+        NULL, 1);
 REPLACE INTO `monitor_indicator`
-VALUES ('ACCCOT_ApproachTempDayAvg', '逼近温度日维度平均值阈值', 'ACCCOT', '℃', NULL, NULL, NULL, NULL, NULL, NULL, 1);
+VALUES ('ACCCOT_ApproachTempDayAvg', '逼近温度日维度平均值阈值', 'ACCCOT', '℃', NULL, 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
 REPLACE INTO `calculate_method`
-VALUES ('1', '冷水出口温度', '${obj;CurrentTime;15min;InfoCode;chillWaterOutTemp}', 'ACATAH_ChillWaterOutTemp', 1, NULL,
+VALUES ('1', '冷水出口温度', '${obj;CurrentTime;15min;InfoCode;chillWaterOutTemp}', 'ACATAH_ChillWaterOutTemp', 1, 'Eqdx',
+        NULL,
         'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('10', '回风焓值', '${obj;CurrentTime;15min;InfoCode;returnAirH}', 'ACATAH_ReturnAirH', 1, NULL, 'systemId',
+VALUES ('10', '回风焓值', '${obj;CurrentTime;15min;InfoCode;returnAirH}', 'ACATAH_ReturnAirH', 1, 'Eqdx', NULL, 'systemId',
         '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
 VALUES ('11', '(当前时刻室内焓值-上一时刻室内焓值)的绝对值',
         '${obj;CurrentTime;1h;InfoCode;returnAirHdifference}-${obj;LastTime;1h;InfoCode;returnAirHdifference}',
-        'ACATAH_ReturnAirHdifference', 1, NULL, 'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18',
+        'ACATAH_ReturnAirHdifference', 1, 'Eqdx', NULL, 'systemId', '2021-09-20 17:13:56', 'systemId',
+        '2021-09-20 17:14:18',
         1);
 REPLACE INTO `calculate_method`
-VALUES ('12', '回风温度', '${obj;CurrentTime;15min;InfoCode;returnAirTemp}', 'ACATAH_ReturnAirTemp', 1, NULL, 'systemId',
+VALUES ('12', '回风温度', '${obj;CurrentTime;15min;InfoCode;returnAirTemp}', 'ACATAH_ReturnAirTemp', 1, 'Eqdx', NULL,
+        'systemId',
         '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
 VALUES ('13', '(当前时刻回风温度-上一时刻回风温度)的绝对值',
         '${obj;CurrentTime;1h;InfoCode;returnAirTempdifference}-${obj;LastTime;1h;InfoCode;returnAirTempdifference}',
-        'ACATAH_ReturnAirTempdifference', 1, NULL, 'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18',
+        'ACATAH_ReturnAirTempdifference', 1, 'Eqdx', NULL, 'systemId', '2021-09-20 17:13:56', 'systemId',
+        '2021-09-20 17:14:18',
         1);
 REPLACE INTO `calculate_method`
-VALUES ('14', '回风温度设定', '${obj;CurrentTime;15min;InfoCode;returnAirTempSet}', 'ACATAH_ReturnAirTempSet', 1, NULL,
+VALUES ('14', '回风温度设定', '${obj;CurrentTime;15min;InfoCode;returnAirTempSet}', 'ACATAH_ReturnAirTempSet', 1, 'Eqdx',
+        NULL,
         'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
 VALUES ('15', '回风阀开度', '${obj;CurrentTime;15min;InfoCode;returnAirValveOpening}', 'ACATAH_ReturnAirValveOpening', 1,
+        'Eqdx',
         NULL, 'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('16', '运行状态', '${obj;CurrentTime;15min;InfoCode;runStatus}', 'ACATAH_RunStatus', 1, NULL, 'systemId',
+VALUES ('16', '运行状态', '${obj;CurrentTime;15min;InfoCode;runStatus}', 'ACATAH_RunStatus', 1, 'Eqdx', NULL, 'systemId',
         '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('17', '季节转换设定', '${obj;CurrentTime;15min;InfoCode;seasonChangeSet}', 'ACATAH_SeasonChangeSet', 1, NULL,
+VALUES ('17', '季节转换设定', '${obj;CurrentTime;15min;InfoCode;seasonChangeSet}', 'ACATAH_SeasonChangeSet', 1, 'Eqdx', NULL,
         'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('18', '送风温度', '${obj;CurrentTime;15min;InfoCode;supplyAirTemp}', 'ACATAH_SupplyAirTemp', 1, NULL, 'systemId',
+VALUES ('18', '送风温度', '${obj;CurrentTime;15min;InfoCode;supplyAirTemp}', 'ACATAH_SupplyAirTemp', 1, 'Eqdx', NULL,
+        'systemId',
         '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
 VALUES ('19', '(当前时刻送风温度-上一时刻送风温度)的绝对值',
         '${obj;CurrentTime;1h;InfoCode;supplyAirTempdifference}-${obj;LastTime;1h;InfoCode;supplyAirTempdifference}',
-        'ACATAH_SupplyAirTempdifference', 1, NULL, 'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18',
+        'ACATAH_SupplyAirTempdifference', 1, 'Eqdx', NULL, 'systemId', '2021-09-20 17:13:56', 'systemId',
+        '2021-09-20 17:14:18',
         1);
 REPLACE INTO `calculate_method`
 VALUES ('2', '(当前时刻出水温度-上一时刻出水温度)的绝对值',
         '${obj;CurrentTime;1h;InfoCode;chillWaterOutTempdifference}-${obj;LastTime;1h;InfoCode;chillWaterOutTempdifference}',
-        'ACATAH_ChillWaterOutTempdifference', 1, NULL, 'systemId', '2021-09-20 17:13:56', 'systemId',
+        'ACATAH_ChillWaterOutTempdifference', 1, 'Eqdx', NULL, 'systemId', '2021-09-20 17:13:56', 'systemId',
         '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('20', '送风温度设定', '${obj;CurrentTime;15min;InfoCode;supplyAirTempSet}', 'ACATAH_SupplyAirTempSet', 1, NULL,
+VALUES ('20', '送风温度设定', '${obj;CurrentTime;15min;InfoCode;supplyAirTempSet}', 'ACATAH_SupplyAirTempSet', 1, 'Eqdx',
+        NULL,
         'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('21', '送风机频率', '${obj;CurrentTime;15min;InfoCode;supplyFanFreq}', 'ACATAH_SupplyFanFreq', 1, NULL, 'systemId',
+VALUES ('21', '送风机频率', '${obj;CurrentTime;15min;InfoCode;supplyFanFreq}', 'ACATAH_SupplyFanFreq', 1, 'Eqdx', NULL,
+        'systemId',
         '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('22', '冷水出口温度', '${obj;CurrentTime;15min;InfoCode;chillWaterOutTemp}', 'ACATFU_ChillWaterOutTemp', 1, NULL,
+VALUES ('22', '冷水出口温度', '${obj;CurrentTime;15min;InfoCode;chillWaterOutTemp}', 'ACATFU_ChillWaterOutTemp', 1, 'Eqdx',
+        NULL,
         'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
 VALUES ('23', '(当前时刻出水温度-上一时刻出水温度)的绝对值',
         '${obj;CurrentTime;1h;InfoCode;chillWaterOutTempdifference}-${obj;LastTime;1h;InfoCode;chillWaterOutTempdifference}',
-        'ACATFU_ChillWaterOutTempdifference', 1, NULL, 'systemId', '2021-09-20 17:13:56', 'systemId',
+        'ACATFU_ChillWaterOutTempdifference', 1, 'Eqdx', NULL, 'systemId', '2021-09-20 17:13:56', 'systemId',
         '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
 VALUES ('24', '冷水阀开度', '${obj;CurrentTime;15min;InfoCode;chillWaterValveOpening}', 'ACATFU_ChillWaterValveOpening', 1,
+        'Eqdx',
         NULL, 'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('25', '手自动状态', '${obj;CurrentTime;15min;InfoCode;manualAutoStatus}', 'ACATFU_ManualAutoStatus', 1, NULL,
+VALUES ('25', '手自动状态', '${obj;CurrentTime;15min;InfoCode;manualAutoStatus}', 'ACATFU_ManualAutoStatus', 1, 'Eqdx', NULL,
         'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('26', '运行状态', '${obj;CurrentTime;15min;InfoCode;runStatus}', 'ACATFU_RunStatus', 1, NULL, 'systemId',
+VALUES ('26', '运行状态', '${obj;CurrentTime;15min;InfoCode;runStatus}', 'ACATFU_RunStatus', 1, 'Eqdx', NULL, 'systemId',
         '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('27', '季节转换设定', '${obj;CurrentTime;15min;InfoCode;seasonChangeSet}', 'ACATFU_SeasonChangeSet', 1, NULL,
+VALUES ('27', '季节转换设定', '${obj;CurrentTime;15min;InfoCode;seasonChangeSet}', 'ACATFU_SeasonChangeSet', 1, 'Eqdx', NULL,
         'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('28', '送风温度', '${obj;CurrentTime;15min;InfoCode;supplyAirTemp}', 'ACATFU_SupplyAirTemp', 1, NULL, 'systemId',
+VALUES ('28', '送风温度', '${obj;CurrentTime;15min;InfoCode;supplyAirTemp}', 'ACATFU_SupplyAirTemp', 1, 'Eqdx', NULL,
+        'systemId',
         '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
 VALUES ('29', '(当前时刻送风温度-上一时刻送风温度)的绝对值',
         '${obj;CurrentTime;1h;InfoCode;supplyAirTempdifference}-${obj;LastTime;1h;InfoCode;supplyAirTempdifference}',
-        'ACATFU_SupplyAirTempdifference', 1, NULL, 'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18',
+        'ACATFU_SupplyAirTempdifference', 1, 'Eqdx', NULL, 'systemId', '2021-09-20 17:13:56', 'systemId',
+        '2021-09-20 17:14:18',
         1);
 REPLACE INTO `calculate_method`
 VALUES ('3', '冷水阀开度', '${obj;CurrentTime;15min;InfoCode;chillWaterValveOpening}', 'ACATAH_ChillWaterValveOpening', 1,
+        'Eqdx',
         NULL, 'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('30', '送风温度设定', '${obj;CurrentTime;15min;InfoCode;supplyAirTempSet}', 'ACATFU_SupplyAirTempSet', 1, NULL,
+VALUES ('30', '送风温度设定', '${obj;CurrentTime;15min;InfoCode;supplyAirTempSet}', 'ACATFU_SupplyAirTempSet', 1, 'Eqdx',
+        NULL,
         'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('4', '新风焓值', '${obj;CurrentTime;15min;InfoCode;freshAirH}', 'ACATAH_FreshAirH', 1, NULL, 'systemId',
+VALUES ('4', '新风焓值', '${obj;CurrentTime;15min;InfoCode;freshAirH}', 'ACATAH_FreshAirH', 1, 'Eqdx', NULL, 'systemId',
         '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
 VALUES ('5', '连续时刻室外焓值差', '${obj;CurrentTime;15min;InfoCode;freshAirHdifference}', 'ACATAH_FreshAirHdifference', 1,
+        'Eqdx',
         NULL, 'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('6', '新风阀开度', '${obj;CurrentTime;15min;InfoCode;freshAirValveOpening}', 'ACATAH_FreshAirValveOpening', 1, NULL,
+VALUES ('6', '新风阀开度', '${obj;CurrentTime;15min;InfoCode;freshAirValveOpening}', 'ACATAH_FreshAirValveOpening', 1,
+        'Eqdx', NULL,
         'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('7', '手自动状态', '${obj;CurrentTime;15min;InfoCode;manualAutoStatus}', 'ACATAH_ManualAutoStatus', 1, NULL,
+VALUES ('7', '手自动状态', '${obj;CurrentTime;15min;InfoCode;manualAutoStatus}', 'ACATAH_ManualAutoStatus', 1, 'Eqdx', NULL,
         'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
-VALUES ('8', '回风CO2浓度', '${obj;CurrentTime;15min;InfoCode;returnAirCO2}', 'ACATAH_ReturnAirCO2', 1, NULL, 'systemId',
+VALUES ('8', '回风CO2浓度', '${obj;CurrentTime;15min;InfoCode;returnAirCO2}', 'ACATAH_ReturnAirCO2', 1, 'Eqdx', NULL,
+        'systemId',
         '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18', 1);
 REPLACE INTO `calculate_method`
 VALUES ('9', '(当前时刻CO2浓度-上一时刻CO2浓度)的绝对值',
         '${obj;CurrentTime;1h;InfoCode;returnAirCO2difference}-${obj;LastTime;1h;InfoCode;returnAirCO2difference}',
-        'ACATAH_ReturnAirCO2difference', 1, NULL, 'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18',
+        'ACATAH_ReturnAirCO2difference', 1, 'Eqdx', NULL, 'systemId', '2021-09-20 17:13:56', 'systemId',
+        '2021-09-20 17:14:18',
         1);
 REPLACE INTO `calculate_method`
-VALUES ('31', '冷凝器换热端差日维度平均值阈值', NULL, 'ACCCAC_CondHeatTransferDayAvg', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('31', '冷凝器换热端差日维度平均值阈值', NULL, 'ACCCAC_CondHeatTransferDayAvg', 1, 'Eqwb', NULL, 'systemId',
+        '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('32', '冷凝器运行持续时间', NULL, 'ACCCAC_CondContinuousOperation', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('32', '冷凝器运行持续时间', NULL, 'ACCCAC_CondContinuousOperation', 1, 'Eqwb', NULL, 'systemId', '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('33', '蒸发器换热端差日维度平均值阈值', NULL, 'ACCCAC_EvapHeatTransferDayAvg', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('33', '蒸发器换热端差日维度平均值阈值', NULL, 'ACCCAC_EvapHeatTransferDayAvg', 1, 'Eqwb', NULL, 'systemId',
+        '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('34', '蒸发器运行持续时间', NULL, 'ACCCAC_EvapContinuousOperation', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('34', '蒸发器运行持续时间', NULL, 'ACCCAC_EvapContinuousOperation', 1, 'Eqwb', NULL, 'systemId', '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('36', '冷凝器运行持续时间', NULL, 'ACCCCC_CondContinuousOperation', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('36', '冷凝器运行持续时间', NULL, 'ACCCCC_CondContinuousOperation', 1, 'Eqwb', NULL, 'systemId', '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('35', '冷凝器换热端差日维度平均值阈值', NULL, 'ACCCCC_CondHeatTransferDayAvg', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('35', '冷凝器换热端差日维度平均值阈值', NULL, 'ACCCCC_CondHeatTransferDayAvg', 1, 'Eqwb', NULL, 'systemId',
+        '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('38', '蒸发器运行持续时间', NULL, 'ACCCCC_EvapContinuousOperation', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('38', '蒸发器运行持续时间', NULL, 'ACCCCC_EvapContinuousOperation', 1, 'Eqwb', NULL, 'systemId', '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('37', '蒸发器换热端差日维度平均值阈值', NULL, 'ACCCCC_EvapHeatTransferDayAvg', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('37', '蒸发器换热端差日维度平均值阈值', NULL, 'ACCCCC_EvapHeatTransferDayAvg', 1, 'Eqwb', NULL, 'systemId',
+        '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('48', '逼近温度运行持续时间', NULL, 'ACCCOT_ApproachTempContinuousOperation', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('48', '逼近温度运行持续时间', NULL, 'ACCCOT_ApproachTempContinuousOperation', 1, 'Eqwb', NULL, 'systemId',
+        '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('47', '逼近温度日维度平均值阈值', NULL, 'ACCCOT_ApproachTempDayAvg', 1, NULL, 'systemId', '2021-11-02 15:10:00', 'systemId',
+VALUES ('47', '逼近温度日维度平均值阈值', NULL, 'ACCCOT_ApproachTempDayAvg', 1, 'Eqwb', NULL, 'systemId', '2021-11-02 15:10:00',
+        'systemId',
         '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('40', '冷凝器运行持续时间', NULL, 'ACCCPC_CondContinuousOperation', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('40', '冷凝器运行持续时间', NULL, 'ACCCPC_CondContinuousOperation', 1, 'Eqwb', NULL, 'systemId', '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('39', '冷凝器换热端差日维度平均值阈值', NULL, 'ACCCPC_CondHeatTransferDayAvg', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('39', '冷凝器换热端差日维度平均值阈值', NULL, 'ACCCPC_CondHeatTransferDayAvg', 1, 'Eqwb', NULL, 'systemId',
+        '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('42', '蒸发器运行持续时间', NULL, 'ACCCPC_EvapContinuousOperation', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('42', '蒸发器运行持续时间', NULL, 'ACCCPC_EvapContinuousOperation', 1, 'Eqwb', NULL, 'systemId', '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('41', '蒸发器换热端差日维度平均值阈值', NULL, 'ACCCPC_EvapHeatTransferDayAvg', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('41', '蒸发器换热端差日维度平均值阈值', NULL, 'ACCCPC_EvapHeatTransferDayAvg', 1, 'Eqwb', NULL, 'systemId',
+        '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('44', '冷凝器运行持续时间', NULL, 'ACCCSC_CondContinuousOperation', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('44', '冷凝器运行持续时间', NULL, 'ACCCSC_CondContinuousOperation', 1, 'Eqwb', NULL, 'systemId', '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('43', '冷凝器换热端差日维度平均值阈值', NULL, 'ACCCSC_CondHeatTransferDayAvg', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('43', '冷凝器换热端差日维度平均值阈值', NULL, 'ACCCSC_CondHeatTransferDayAvg', 1, 'Eqwb', NULL, 'systemId',
+        '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('46', '蒸发器运行持续时间', NULL, 'ACCCSC_EvapContinuousOperation', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('46', '蒸发器运行持续时间', NULL, 'ACCCSC_EvapContinuousOperation', 1, 'Eqwb', NULL, 'systemId', '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
 REPLACE INTO `calculate_method`
-VALUES ('45', '蒸发器换热端差日维度平均值阈值', NULL, 'ACCCSC_EvapHeatTransferDayAvg', 1, NULL, 'systemId', '2021-11-02 15:10:00',
+VALUES ('45', '蒸发器换热端差日维度平均值阈值', NULL, 'ACCCSC_EvapHeatTransferDayAvg', 1, 'Eqwb', NULL, 'systemId',
+        '2021-11-02 15:10:00',
         'systemId', '2021-11-02 15:10:00', 1);
+
+REPLACE INTO `obj_group`
+VALUES ('1', '组合式空调机组', 'ACATAH', 'installType: "1"', '0', 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
+REPLACE INTO `obj_group`
+VALUES ('2', '吊装空调', 'ACATAH', 'installType: "2"', '0', 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
+REPLACE INTO `obj_group`
+VALUES ('3', '新风机组', 'ACATFU', '', '0', 'Eqdx', NULL, NULL, NULL, NULL, NULL, 1);
+REPLACE INTO `obj_group`
+VALUES ('4', '离心式冷水机组', 'ACCCCC', '', '0', 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
+REPLACE INTO `obj_group`
+VALUES ('5', '螺杆式冷水机组', 'ACCCSC', '', '0', 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
+REPLACE INTO `obj_group`
+VALUES ('6', '活塞式冷水机组', 'ACCCPC', '', '0', 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
+REPLACE INTO `obj_group`
+VALUES ('7', '吸收式冷水机组', 'ACCCAC', '', '0', 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);
+REPLACE INTO `obj_group`
+VALUES ('8', '冷却塔组', 'ACCCOT', '', '0', 'Eqwb', NULL, NULL, NULL, NULL, NULL, 1);

File diff suppressed because it is too large
+ 151 - 1
src/main/resources/db/init/table.sql


+ 1 - 1
src/main/resources/mapper/GroupAlarmRuleMapper.xml

@@ -50,7 +50,7 @@
     <select id="queryCount" resultType="java.lang.Integer">
         select count(*)
         from group_alarm_rule a
-        left join alarm_condition b on a.alarm_condition_id = b.id
+        left join alarm_condition_v2 b on a.alarm_condition_id = b.id
         where a.group_id = #{groupId} and a.valid = 1
         <if test="alarmItemName != null and alarmItemName != ''">
             and a.alarm_item_name like '%${alarmItemName}%'

+ 1 - 1
src/main/resources/mapper/ProjectAlarmRuleMapper.xml

@@ -33,7 +33,7 @@
     <select id="queryCount" resultType="java.lang.Integer">
         select count(*)
         from project_alarm_rule a
-        left join alarm_condition c on a.alarm_condition_id = c.id
+        left join alarm_condition_v2 c on a.alarm_condition_id = c.id
         where a.group_id = #{groupId} and a.valid = 1 and a.project_id = #{projectId}
         <if test="alarmItemCode != null and alarmItemCode != ''">
             and a.alarm_item_code = #{alarmItemCode}