瀏覽代碼

Merge remote-tracking branch 'origin/v1.0.0' into v1.0.0

xujiaheng 3 年之前
父節點
當前提交
fd4f916056
共有 17 個文件被更改,包括 640 次插入80 次删除
  1. 4 4
      pom.xml
  2. 1 0
      src/main/java/com/persagy/apm/alarmservice/common/constants/FeignClientNameConstants.java
  3. 35 0
      src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/client/EqDiagnoseClient.java
  4. 20 0
      src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/client/fallback/EqDiagnoseClientFallbackFactory.java
  5. 45 0
      src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/model/MonitorIndicatorRecordListItemVO.java
  6. 35 0
      src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/model/QueryMonitorIndicatorRecordDTO.java
  7. 63 0
      src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/service/EqDiagnoseServiceImpl.java
  8. 10 7
      src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/controller/AlarmRecordController.java
  9. 2 2
      src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/controller/MonitorIndicatorController.java
  10. 29 0
      src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/model/vo/MonitorIndicatorFormulaItem.java
  11. 5 0
      src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/model/vo/MonitorIndicatorRecordInfoItem.java
  12. 63 53
      src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/service/IMonitorIndicatorService.java
  13. 254 10
      src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/service/impl/MonitorIndicatorServiceImpl.java
  14. 9 0
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/controller/ProjectMonitorIndicatorConfigController.java
  15. 27 0
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/dto/QueryProjectMonitorIndicatorConfigByEquipDTO.java
  16. 11 0
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/service/IProjectMonitorIndicatorConfigService.java
  17. 27 4
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/service/impl/ProjectMonitorIndicatorConfigServiceImpl.java

+ 4 - 4
pom.xml

@@ -99,11 +99,11 @@
         <artifactId>integrated-swagger2-spring-boot-starter</artifactId>
         <artifactId>integrated-swagger2-spring-boot-starter</artifactId>
     </dependency>
     </dependency>
 
 
-    <!--jep 公式解析-->
+    <!-- 数学逻辑运算解析库-->
     <dependency>
     <dependency>
-        <groupId>org.scijava</groupId>
-        <artifactId>jep</artifactId>
-        <version>2.4.2</version>
+        <groupId>com.googlecode.aviator</groupId>
+        <artifactId>aviator</artifactId>
+        <version>5.2.5</version>
     </dependency>
     </dependency>
 
 
     <dependency>
     <dependency>

+ 1 - 0
src/main/java/com/persagy/apm/alarmservice/common/constants/FeignClientNameConstants.java

@@ -8,4 +8,5 @@ package com.persagy.apm.alarmservice.common.constants;
  **/
  **/
 public class FeignClientNameConstants {
 public class FeignClientNameConstants {
     public static final String SAAS_WEB = "ems-saas-web";
     public static final String SAAS_WEB = "ems-saas-web";
+    public static final String ENERGY_EQ_RUN_DIAGNOSE = "energy-eq-run-diagnose";
 }
 }

+ 35 - 0
src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/client/EqDiagnoseClient.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.alarmservice.dependency.eqdiagnose.client;
+
+import com.persagy.apm.alarmservice.common.constants.FeignClientNameConstants;
+import com.persagy.apm.alarmservice.dependency.eqdiagnose.client.fallback.EqDiagnoseClientFallbackFactory;
+import com.persagy.apm.alarmservice.dependency.eqdiagnose.model.MonitorIndicatorRecordListItemVO;
+import com.persagy.apm.alarmservice.dependency.eqdiagnose.model.QueryMonitorIndicatorRecordDTO;
+import com.persagy.apm.common.response.CommonResult;
+import com.persagy.apm.common.response.PageList;
+import feign.Headers;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * 设备运行诊断feign客户端
+ *
+ * @author lixing
+ * @version V1.0 2021/3/22 2:13 下午
+ **/
+@FeignClient(name = FeignClientNameConstants.ENERGY_EQ_RUN_DIAGNOSE, url = "http://192.168.17.57:8080", fallbackFactory = EqDiagnoseClientFallbackFactory.class)
+public interface EqDiagnoseClient {
+
+    /**
+     * 获取监测指标历史采集值
+     *
+     * @param queryMonitorIndicatorRecordDTO 查询条件
+     * @return 监测指标历史采集值列表
+     * @author lixing
+     * @version V1.0 2021/5/19 3:36 下午
+     */
+    @PostMapping("/monitorIndicatorRecords/query")
+    @Headers({"Content-Type: application/json"})
+    CommonResult<PageList<MonitorIndicatorRecordListItemVO>> queryMonitorIndicatorRecord(
+            QueryMonitorIndicatorRecordDTO queryMonitorIndicatorRecordDTO);
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/client/fallback/EqDiagnoseClientFallbackFactory.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.alarmservice.dependency.eqdiagnose.client.fallback;
+
+import com.persagy.apm.alarmservice.dependency.eqdiagnose.client.EqDiagnoseClient;
+import feign.hystrix.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * feign fallback处理
+ *
+ * @author lixing
+ * @version V1.0 2021/5/19 2:21 下午
+ */
+@Component
+public class EqDiagnoseClientFallbackFactory implements FallbackFactory<EqDiagnoseClient> {
+    @Override
+    public EqDiagnoseClient create(Throwable throwable) {
+        System.out.println("fall back");
+        return null;
+    }
+}

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

@@ -0,0 +1,45 @@
+package com.persagy.apm.alarmservice.dependency.eqdiagnose.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-09-10 00:13:27
+ */
+@Data
+@ApiModel(value = "监测指标历史记录列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class MonitorIndicatorRecordListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+    
+    @ApiModelProperty("对象id")
+    private String objId;
+    
+    @ApiModelProperty("监测指标id")
+    private String monitorIndicatorId;
+    
+    @ApiModelProperty("时间")
+    private Date date;
+    
+    @ApiModelProperty("值")
+    private String value;
+    
+    @ApiModelProperty("创建人")
+    private String creator;
+    
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+    
+    @ApiModelProperty("修改人")
+    private String modifier;
+    
+    @ApiModelProperty("修改时间")
+    private Date modifiedTime;
+    
+}

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

@@ -0,0 +1,35 @@
+package com.persagy.apm.alarmservice.dependency.eqdiagnose.model;
+
+import com.persagy.apm.common.model.dto.FeignBaseDTO;
+import com.persagy.apm.common.model.dto.PoemsFeignBaseDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-09-10 00:13:27
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "查询监测指标历史记录入参")
+public class QueryMonitorIndicatorRecordDTO extends FeignBaseDTO {
+    @ApiModelProperty(value = "对象id", required = true)
+    private String objId;
+    
+    @ApiModelProperty(value = "监测指标id", required = true)
+    private String monitorIndicatorId;
+
+    @ApiModelProperty(value = "开始时间", required = true)
+    private Long timeFrom;
+
+    @ApiModelProperty(value = "结束时间", required = true)
+    private Long timeTo;
+
+    public QueryMonitorIndicatorRecordDTO() {
+        super.setDefaultValue();
+    }
+}

+ 63 - 0
src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/service/EqDiagnoseServiceImpl.java

@@ -0,0 +1,63 @@
+package com.persagy.apm.alarmservice.dependency.eqdiagnose.service;
+
+import com.persagy.apm.alarmservice.dependency.eqdiagnose.client.EqDiagnoseClient;
+import com.persagy.apm.alarmservice.dependency.eqdiagnose.model.MonitorIndicatorRecordListItemVO;
+import com.persagy.apm.alarmservice.dependency.eqdiagnose.model.QueryMonitorIndicatorRecordDTO;
+import com.persagy.apm.common.response.CommonResult;
+import com.persagy.apm.common.response.PageList;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 设备运行诊断服务层
+ *
+ * @author lixing
+ * @version V1.0 2021/9/27 3:03 下午
+ **/
+@Service
+public class EqDiagnoseServiceImpl {
+    @Autowired
+    private EqDiagnoseClient eqDiagnoseClient;
+
+    /**
+     * 获取监测指标历史采集值
+     *
+     * @param queryMonitorIndicatorRecordDTO 查询条件
+     * @return 监测指标历史采集值 date -> value
+     * @author lixing
+     * @version V1.0 2021/5/19 3:36 下午
+     */
+    public Map<Date, String> queryMonitorIndicatorRecord(
+            QueryMonitorIndicatorRecordDTO queryMonitorIndicatorRecordDTO) {
+        // feign查询
+        CommonResult<PageList<MonitorIndicatorRecordListItemVO>> pageListCommonResult =
+                eqDiagnoseClient.queryMonitorIndicatorRecord(queryMonitorIndicatorRecordDTO);
+
+        // 处理查询结果
+        if (pageListCommonResult == null) {
+            return new HashMap<>(0);
+        }
+        PageList<MonitorIndicatorRecordListItemVO> content = pageListCommonResult.getContent();
+        if (content == null) {
+            return new HashMap<>(0);
+        }
+        List<MonitorIndicatorRecordListItemVO> records = content.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            return new HashMap<>(0);
+        }
+        return records.stream().collect(
+                Collectors.toMap(
+                        MonitorIndicatorRecordListItemVO::getDate,
+                        MonitorIndicatorRecordListItemVO::getValue
+                )
+        );
+
+    }
+}

+ 10 - 7
src/main/java/com/persagy/apm/alarmservice/group/alarmrecord/controller/AlarmRecordController.java

@@ -78,11 +78,14 @@ public class AlarmRecordController {
     @PostMapping("/current_list")
     @PostMapping("/current_list")
     public CommonResult<PageList<AlarmRecordListItem>> queryCurrentAlarmRecord(
     public CommonResult<PageList<AlarmRecordListItem>> queryCurrentAlarmRecord(
             @Valid @RequestBody PageQueryAlarmRecordDTO pageQueryAlarmRecordDTO) throws Exception {
             @Valid @RequestBody PageQueryAlarmRecordDTO pageQueryAlarmRecordDTO) throws Exception {
-        // 当前报警的默认查询条件为:报警处理状态为未处理和处理中
-        pageQueryAlarmRecordDTO.setAlarmTreatState(Lists.newArrayList(
-                EnumAlarmTreatState.UN_HANDLE.getType(),
-                EnumAlarmTreatState.HANDLING.getType()
-        ));
+        if (pageQueryAlarmRecordDTO.getAlarmTreatState() == null) {
+            // 当前报警的默认查询条件为:报警处理状态为未处理和处理中
+            pageQueryAlarmRecordDTO.setAlarmTreatState(Lists.newArrayList(
+                    EnumAlarmTreatState.UN_HANDLE.getType(),
+                    EnumAlarmTreatState.HANDLING.getType()
+            ));
+        }
+
         return queryAlarmRecord(pageQueryAlarmRecordDTO);
         return queryAlarmRecord(pageQueryAlarmRecordDTO);
     }
     }
 
 
@@ -115,7 +118,7 @@ public class AlarmRecordController {
             orders = Lists.newArrayList(sort);
             orders = Lists.newArrayList(sort);
             pageQueryAlarmRecordDTO.setOrders(orders);
             pageQueryAlarmRecordDTO.setOrders(orders);
         }
         }
-        DmpResult<List<AlarmRecordItem>> query = alarmRecordService.query(queryAlarmRecordDTO);
+        DmpResult<List<AlarmRecordItem>> query = alarmRecordService.query(queryDTO);
         // 报警数据中台查询结果转换为报警业务中台报警记录
         // 报警数据中台查询结果转换为报警业务中台报警记录
         List<AlarmRecordListItem> resultList = alarmRecordWrapper.getAlarmRecordListItems(query);
         List<AlarmRecordListItem> resultList = alarmRecordWrapper.getAlarmRecordListItems(query);
         // 封装分页结果
         // 封装分页结果
@@ -237,7 +240,7 @@ public class AlarmRecordController {
             alarmRecordIdsItem.setIds(recordIds);
             alarmRecordIdsItem.setIds(recordIds);
         }
         }
         BatchUpdateAlarmRecordDTO batchUpdateAlarmRecordDTO = new BatchUpdateAlarmRecordDTO();
         BatchUpdateAlarmRecordDTO batchUpdateAlarmRecordDTO = new BatchUpdateAlarmRecordDTO();
-        batchUpdateAlarmRecordDTO.setAlarmRecords(updateAlarmRecordDTOList);
+        batchUpdateAlarmRecordDTO.setAlarmRecordModels(updateAlarmRecordDTOList);
 
 
         alarmRecordService.batchUpdate(batchUpdateAlarmRecordDTO);
         alarmRecordService.batchUpdate(batchUpdateAlarmRecordDTO);
         return ResultHelper.single(alarmRecordIdsItem);
         return ResultHelper.single(alarmRecordIdsItem);

+ 2 - 2
src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/controller/MonitorIndicatorController.java

@@ -84,8 +84,8 @@ public class MonitorIndicatorController {
     @ApiOperation(value = "监测指标数据信息")
     @ApiOperation(value = "监测指标数据信息")
     @PostMapping("/record_info")
     @PostMapping("/record_info")
     public CommonResult<PageList<MonitorIndicatorRecordInfoItem>> monitorIndicatorRecordInfo(
     public CommonResult<PageList<MonitorIndicatorRecordInfoItem>> monitorIndicatorRecordInfo(
-            @Valid @RequestBody QueryMonitorIndicatorRecordInfoDTO queryMonitorIndicatorRecordInfoDTO) {
-        List<MonitorIndicatorRecordInfoItem> list = new ArrayList<>();
+            @Valid @RequestBody QueryMonitorIndicatorRecordInfoDTO queryMonitorIndicatorRecordInfoDTO) throws Exception{
+        List<MonitorIndicatorRecordInfoItem> list = monitorIndicatorService.monitorIndicatorRecordInfo(queryMonitorIndicatorRecordInfoDTO);
         return ResultHelper.multi(list);
         return ResultHelper.multi(list);
     }
     }
 }
 }

+ 29 - 0
src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/model/vo/MonitorIndicatorFormulaItem.java

@@ -0,0 +1,29 @@
+package com.persagy.apm.alarmservice.group.monitorindicator.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.persagy.apm.common.model.vo.GraphItemVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 监测指标公式
+ *
+ * @author lixing
+ * @version V1.0 2021-09-08 22:44:38
+ */
+@Data
+@ApiModel()
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class MonitorIndicatorFormulaItem {
+    @ApiModelProperty(value = "操作符")
+    private String operator;
+    @ApiModelProperty(value = "公式")
+    private String formula;
+}

+ 5 - 0
src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/model/vo/MonitorIndicatorRecordInfoItem.java

@@ -1,6 +1,7 @@
 package com.persagy.apm.alarmservice.group.monitorindicator.model.vo;
 package com.persagy.apm.alarmservice.group.monitorindicator.model.vo;
 
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonInclude;
+import com.persagy.apm.common.model.vo.EnumVO;
 import com.persagy.apm.common.model.vo.GraphItemVO;
 import com.persagy.apm.common.model.vo.GraphItemVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
@@ -20,8 +21,12 @@ import java.util.List;
 public class MonitorIndicatorRecordInfoItem {
 public class MonitorIndicatorRecordInfoItem {
     @ApiModelProperty(value = "监测指标名称")
     @ApiModelProperty(value = "监测指标名称")
     private String monitorIndicatorName;
     private String monitorIndicatorName;
+    @ApiModelProperty(value = "单位")
+    private String unit;
     @ApiModelProperty(value = "监测指标数据记录")
     @ApiModelProperty(value = "监测指标数据记录")
     private List<GraphItemVO> value;
     private List<GraphItemVO> value;
     @ApiModelProperty(value = "监测指标参照值")
     @ApiModelProperty(value = "监测指标参照值")
     private List<MonitorIndicatorReferenceItem> reference;
     private List<MonitorIndicatorReferenceItem> reference;
+    @ApiModelProperty(value = "监测指标可选字典")
+    private List<EnumVO> dic;
 }
 }

+ 63 - 53
src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/service/IMonitorIndicatorService.java

@@ -1,13 +1,12 @@
 package com.persagy.apm.alarmservice.group.monitorindicator.service;
 package com.persagy.apm.alarmservice.group.monitorindicator.service;
 
 
-import com.persagy.apm.alarmservice.group.monitorindicator.model.MonitorIndicator;
-import com.persagy.apm.alarmservice.group.monitorindicator.model.dto.AddMonitorIndicatorDTO;
-import com.persagy.apm.alarmservice.group.monitorindicator.model.dto.PageQueryMonitorIndicatorDTO;
-import com.persagy.apm.alarmservice.group.monitorindicator.model.dto.QueryMonitorIndicatorDTO;
-import com.persagy.apm.alarmservice.group.monitorindicator.model.dto.UpdateMonitorIndicatorDTO;
-import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.alarmservice.group.monitorindicator.model.MonitorIndicator;
+import com.persagy.apm.alarmservice.group.monitorindicator.model.dto.*;
 import com.persagy.apm.alarmservice.group.monitorindicator.model.vo.MonitorIndicatorListItemVO;
 import com.persagy.apm.alarmservice.group.monitorindicator.model.vo.MonitorIndicatorListItemVO;
+import com.persagy.apm.alarmservice.group.monitorindicator.model.vo.MonitorIndicatorRecordInfoItem;
+
+import java.util.List;
 
 
 /**
 /**
  * 监测指标(MonitorIndicator) service接口
  * 监测指标(MonitorIndicator) service接口
@@ -15,64 +14,64 @@ import com.persagy.apm.alarmservice.group.monitorindicator.model.vo.MonitorIndic
  * @author lixing
  * @author lixing
  * @version V1.0 2021-09-08 22:44:37
  * @version V1.0 2021-09-08 22:44:37
  */
  */
-public interface IMonitorIndicatorService  {
-    
+public interface IMonitorIndicatorService {
+
     /**
     /**
-    * 创建监测指标
-    *
-    * @param addMonitorIndicatorDTO addDTO
-    * @return 监测指标主键
-    * @author lixing
-    * @version V1.0 2021-09-08 22:44:37
-    */
+     * 创建监测指标
+     *
+     * @param addMonitorIndicatorDTO addDTO
+     * @return 监测指标主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:44:37
+     */
     public String createMonitorIndicator(AddMonitorIndicatorDTO addMonitorIndicatorDTO);
     public String createMonitorIndicator(AddMonitorIndicatorDTO addMonitorIndicatorDTO);
-    
+
     /**
     /**
-    * 监测指标详情
-    *
-    * @param id 主键
-    * @return 监测指标do对象
-    * @author lixing
-    * @version V1.0 2021-09-08 22:44:37
-    */
+     * 监测指标详情
+     *
+     * @param id 主键
+     * @return 监测指标do对象
+     * @author lixing
+     * @version V1.0 2021-09-08 22:44:37
+     */
     public MonitorIndicator queryMonitorIndicatorDetail(String id);
     public MonitorIndicator queryMonitorIndicatorDetail(String id);
-    
+
     /**
     /**
-    * 更新监测指标
-    *
-    * @param updateMonitorIndicatorDTO updateDTO
-    * @author lixing
-    * @version V1.0 2021-09-08 22:44:37
-    */
+     * 更新监测指标
+     *
+     * @param updateMonitorIndicatorDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-09-08 22:44:37
+     */
     public void updateMonitorIndicator(UpdateMonitorIndicatorDTO updateMonitorIndicatorDTO);
     public void updateMonitorIndicator(UpdateMonitorIndicatorDTO updateMonitorIndicatorDTO);
-    
+
     /**
     /**
-    * 删除监测指标
-    *
-    * @param id 主键
-    * @author lixing
-    * @version V1.0 2021-09-08 22:44:37
-    */
+     * 删除监测指标
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:44:37
+     */
     public void deleteMonitorIndicator(String id);
     public void deleteMonitorIndicator(String id);
-    
+
     /**
     /**
-    * 查询监测指标
-    *
-    * @param queryMonitorIndicatorDTO queryDTO
-    * @return List<MonitorIndicator>
-    * @author lixing
-    * @version V1.0 2021-09-08 22:44:37
-    */
+     * 查询监测指标
+     *
+     * @param queryMonitorIndicatorDTO queryDTO
+     * @return List<MonitorIndicator>
+     * @author lixing
+     * @version V1.0 2021-09-08 22:44:37
+     */
     public List<MonitorIndicator> queryMonitorIndicatorList(QueryMonitorIndicatorDTO queryMonitorIndicatorDTO);
     public List<MonitorIndicator> queryMonitorIndicatorList(QueryMonitorIndicatorDTO queryMonitorIndicatorDTO);
-    
+
     /**
     /**
-    * 分页查询监测指标
-    * 
-    * @param pageQueryMonitorIndicatorDTO pageQueryDTO
-    * @return IPage<MonitorIndicator>
-    * @author lixing
-    * @version V1.0 2021-09-08 22:44:37
-    */
+     * 分页查询监测指标
+     *
+     * @param pageQueryMonitorIndicatorDTO pageQueryDTO
+     * @return IPage<MonitorIndicator>
+     * @author lixing
+     * @version V1.0 2021-09-08 22:44:37
+     */
     public IPage<MonitorIndicator> pageQueryMonitorIndicator(PageQueryMonitorIndicatorDTO pageQueryMonitorIndicatorDTO);
     public IPage<MonitorIndicator> pageQueryMonitorIndicator(PageQueryMonitorIndicatorDTO pageQueryMonitorIndicatorDTO);
 
 
     /**
     /**
@@ -84,4 +83,15 @@ public interface IMonitorIndicatorService  {
      * @version V1.0 2021-09-08 22:44:37
      * @version V1.0 2021-09-08 22:44:37
      */
      */
     public void setIndicatorMethodCount(List<MonitorIndicatorListItemVO> indicators);
     public void setIndicatorMethodCount(List<MonitorIndicatorListItemVO> indicators);
+
+    /**
+     * 查询报警记录相关的监测指标取值
+     *
+     * @param queryMonitorIndicatorRecordInfoDTO 查询条件
+     * @return 报警记录相关的监测指标取值
+     * @author lixing
+     * @version V1.0 2021/9/27 10:47 上午
+     */
+    List<MonitorIndicatorRecordInfoItem> monitorIndicatorRecordInfo(
+            QueryMonitorIndicatorRecordInfoDTO queryMonitorIndicatorRecordInfoDTO) throws Exception;
 }
 }

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

@@ -1,32 +1,42 @@
 package com.persagy.apm.alarmservice.group.monitorindicator.service.impl;
 package com.persagy.apm.alarmservice.group.monitorindicator.service.impl;
 
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.base.CaseFormat;
 import com.google.common.base.CaseFormat;
+import com.googlecode.aviator.AviatorEvaluator;
+import com.googlecode.aviator.Expression;
+import com.persagy.apm.alarmservice.dependency.eqdiagnose.model.QueryMonitorIndicatorRecordDTO;
+import com.persagy.apm.alarmservice.dependency.eqdiagnose.service.EqDiagnoseServiceImpl;
+import com.persagy.apm.alarmservice.group.alarmrecord.service.AlarmRecordWrapper;
 import com.persagy.apm.alarmservice.group.calculatemethod.model.CalculateMethod;
 import com.persagy.apm.alarmservice.group.calculatemethod.model.CalculateMethod;
 import com.persagy.apm.alarmservice.group.calculatemethod.model.dto.QueryCalculateMethodDTO;
 import com.persagy.apm.alarmservice.group.calculatemethod.model.dto.QueryCalculateMethodDTO;
 import com.persagy.apm.alarmservice.group.calculatemethod.service.ICalculateMethodService;
 import com.persagy.apm.alarmservice.group.calculatemethod.service.ICalculateMethodService;
-import com.persagy.apm.alarmservice.group.monitorindicator.model.MonitorIndicator;
-import com.persagy.apm.alarmservice.group.monitorindicator.model.dto.AddMonitorIndicatorDTO;
-import com.persagy.apm.alarmservice.group.monitorindicator.model.dto.PageQueryMonitorIndicatorDTO;
-import com.persagy.apm.alarmservice.group.monitorindicator.model.dto.QueryMonitorIndicatorDTO;
-import com.persagy.apm.alarmservice.group.monitorindicator.model.dto.UpdateMonitorIndicatorDTO;
 import com.persagy.apm.alarmservice.group.monitorindicator.dao.MonitorIndicatorMapper;
 import com.persagy.apm.alarmservice.group.monitorindicator.dao.MonitorIndicatorMapper;
 import com.persagy.apm.alarmservice.group.monitorindicator.model.ConvertMonitorIndicatorTool;
 import com.persagy.apm.alarmservice.group.monitorindicator.model.ConvertMonitorIndicatorTool;
+import com.persagy.apm.alarmservice.group.monitorindicator.model.MonitorIndicator;
+import com.persagy.apm.alarmservice.group.monitorindicator.model.dto.*;
+import com.persagy.apm.alarmservice.group.monitorindicator.model.vo.MonitorIndicatorFormulaItem;
 import com.persagy.apm.alarmservice.group.monitorindicator.model.vo.MonitorIndicatorListItemVO;
 import com.persagy.apm.alarmservice.group.monitorindicator.model.vo.MonitorIndicatorListItemVO;
+import com.persagy.apm.alarmservice.group.monitorindicator.model.vo.MonitorIndicatorRecordInfoItem;
+import com.persagy.apm.alarmservice.group.monitorindicator.model.vo.MonitorIndicatorReferenceItem;
 import com.persagy.apm.alarmservice.group.monitorindicator.service.IMonitorIndicatorService;
 import com.persagy.apm.alarmservice.group.monitorindicator.service.IMonitorIndicatorService;
+import com.persagy.apm.common.constant.enums.AttrValueTypeEnum;
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.common.model.dto.Sort;
 import com.persagy.apm.common.model.dto.Sort;
+import com.persagy.apm.common.model.vo.GraphItemVO;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmRecordItem;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
+import org.assertj.core.util.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
 
 /**
 /**
  * 监测指标(MonitorIndicator) service层
  * 监测指标(MonitorIndicator) service层
@@ -39,6 +49,12 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
         implements IMonitorIndicatorService {
         implements IMonitorIndicatorService {
     @Autowired
     @Autowired
     ICalculateMethodService calculateMethodService;
     ICalculateMethodService calculateMethodService;
+    @Autowired
+    AlarmRecordWrapper alarmRecordWrapper;
+    @Autowired
+    EqDiagnoseServiceImpl eqDiagnoseService;
+    @Autowired
+    MonitorIndicatorServiceImpl monitorIndicatorService;
 
 
     /**
     /**
      * 创建监测指标
      * 创建监测指标
@@ -65,8 +81,6 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
      */
      */
     private void setDefaultValue(MonitorIndicator monitorIndicator) {
     private void setDefaultValue(MonitorIndicator monitorIndicator) {
         monitorIndicator.setCreator(AppContext.getContext().getAccountId());
         monitorIndicator.setCreator(AppContext.getContext().getAccountId());
-        // todo 其他默认的属性
-
     }
     }
 
 
     /**
     /**
@@ -162,7 +176,6 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
             }
             }
 
 
 
 
-
             if (StringUtils.isNotEmpty(queryMonitorIndicatorDTO.getName())) {
             if (StringUtils.isNotEmpty(queryMonitorIndicatorDTO.getName())) {
                 queryWrapper.like(MonitorIndicator.PROP_NAME, queryMonitorIndicatorDTO.getName());
                 queryWrapper.like(MonitorIndicator.PROP_NAME, queryMonitorIndicatorDTO.getName());
             }
             }
@@ -226,4 +239,235 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
             indicator.setMethodCount(methodCount);
             indicator.setMethodCount(methodCount);
         });
         });
     }
     }
+
+    @Override
+    public List<MonitorIndicatorRecordInfoItem> monitorIndicatorRecordInfo(
+            QueryMonitorIndicatorRecordInfoDTO queryMonitorIndicatorRecordInfoDTO) throws Exception {
+        // 获取报警记录关联的指标和指标关联的公式
+        String alarmRecordId = queryMonitorIndicatorRecordInfoDTO.getAlarmRecordId();
+        AlarmRecordItem alarmRecord = alarmRecordWrapper.getAlarmRecord(alarmRecordId);
+        JSONObject condition = alarmRecord.getCondition();
+        JSONArray infoCodeArray = condition.getJSONArray("infoCode");
+        JSONArray conditionArray = condition.getJSONArray("configs");
+        if (CollectionUtils.isEmpty(infoCodeArray) || CollectionUtils.isEmpty(conditionArray)) {
+            return new ArrayList<>();
+        }
+
+        // 获取监测指标的历史采集值 monitorId -> (time -> value)
+        List<String> infoCodeList = infoCodeArray.toJavaList(String.class);
+        Map<String, Map<Date, String>> monitorValuesMap = getIndicatorHistoryValues(
+                infoCodeList, queryMonitorIndicatorRecordInfoDTO.getStartTime(),
+                queryMonitorIndicatorRecordInfoDTO.getEndTime());
+
+        // indicatorId -> list<formula> 监测指标和与监测指标关联的公式的映射
+        Map<String, List<MonitorIndicatorFormulaItem>> indicatorFormulaMap = getIndicatorFormulaMap(conditionArray);
+
+        // 遍历监测指标和与监测指标关联的公式的映射,获取监测指标和公式的取值,转换为返回结果
+        List<MonitorIndicatorRecordInfoItem> result = new ArrayList<>();
+        for (String indicatorId : indicatorFormulaMap.keySet()) {
+            MonitorIndicatorRecordInfoItem monitorIndicatorRecordInfoItem = new MonitorIndicatorRecordInfoItem();
+            // 查询监测指标基本信息
+            MonitorIndicator monitorIndicator = monitorIndicatorService.queryMonitorIndicatorDetail(indicatorId);
+            monitorIndicatorRecordInfoItem.setMonitorIndicatorName(monitorIndicator.getName());
+            monitorIndicatorRecordInfoItem.setUnit(monitorIndicator.getUnit());
+            // 获取监测指标历史采集值
+            Map<Date, String> indicatorRecordMap = monitorValuesMap.get(indicatorId);
+            List<GraphItemVO> values = getIndicatorRecordGraphData(monitorIndicator, indicatorRecordMap);
+            monitorIndicatorRecordInfoItem.setValue(values);
+            // 如果监测指标的取值不是枚举数据,获取监测指标参照值
+            if (monitorIndicator.getDic() != null) {
+                monitorIndicatorRecordInfoItem.setDic(monitorIndicator.getDic());
+            } else {
+                List<MonitorIndicatorReferenceItem> reference = getMonitorIndicatorReferenceItems(
+                        monitorValuesMap, indicatorFormulaMap, monitorIndicator);
+                monitorIndicatorRecordInfoItem.setReference(reference);
+            }
+            result.add(monitorIndicatorRecordInfoItem);
+        }
+        return result;
+    }
+
+    /**
+     * 获取监测指标的参照值列表
+     *
+     * @param monitorValuesMap    所有相关监测指标的历史采集值 indicatorId -> (date -> value)
+     * @param indicatorFormulaMap 所有监测指标关联的公式 indicatorId -> 公式列表
+     * @param monitorIndicator    监测指标对象
+     * @return 监测指标的参照值列表
+     * @author lixing
+     * @version V1.0 2021/9/27 4:23 下午
+     */
+    private List<MonitorIndicatorReferenceItem> getMonitorIndicatorReferenceItems(
+            Map<String, Map<Date, String>> monitorValuesMap,
+            Map<String, List<MonitorIndicatorFormulaItem>> indicatorFormulaMap, MonitorIndicator monitorIndicator) {
+        List<MonitorIndicatorReferenceItem> reference = new ArrayList<>();
+        List<MonitorIndicatorFormulaItem> monitorIndicatorFormulaItems = indicatorFormulaMap.get(monitorIndicator.getId());
+        for (MonitorIndicatorFormulaItem monitorIndicatorFormulaItem : monitorIndicatorFormulaItems) {
+            MonitorIndicatorReferenceItem monitorIndicatorReferenceItem = new MonitorIndicatorReferenceItem();
+            monitorIndicatorReferenceItem.setUnit(monitorIndicator.getUnit());
+            monitorIndicatorReferenceItem.setOperator(monitorIndicatorFormulaItem.getOperator());
+            // 解析公式,得到公式计算结果
+            String formula = monitorIndicatorFormulaItem.getFormula();
+            List<GraphItemVO> referenceValueList = new ArrayList<>();
+            Map<Date, String> indicatorRecordMap = monitorValuesMap.get(monitorIndicator.getId());
+            for (Date date : indicatorRecordMap.keySet()) {
+                HashMap<String, Object> paramMap = getParamMap(monitorValuesMap, date);
+                Double formulaResult = calculateFormula(formula, paramMap);
+                GraphItemVO graphItemVO = new GraphItemVO(
+                        String.valueOf(date.getTime()), formulaResult,
+                        AttrValueTypeEnum.number_2, monitorIndicator.getUnit());
+                referenceValueList.add(graphItemVO);
+            }
+            monitorIndicatorReferenceItem.setValue(referenceValueList);
+            reference.add(monitorIndicatorReferenceItem);
+        }
+        return reference;
+    }
+
+    /**
+     * 获取监测指标历史采集值图表数据
+     *
+     * @param monitorIndicator   监测指标对象
+     * @param indicatorRecordMap 监测指标历史采集值 date->value
+     * @return 监测指标历史采集值图表数据
+     * @author lixing
+     * @version V1.0 2021/9/27 4:20 下午
+     */
+    private List<GraphItemVO> getIndicatorRecordGraphData(
+            MonitorIndicator monitorIndicator, Map<Date, String> indicatorRecordMap) {
+        List<GraphItemVO> values = new ArrayList<>();
+        for (Date date : indicatorRecordMap.keySet()) {
+            if (date == null) {
+                continue;
+            }
+            String valueStr = indicatorRecordMap.get(date);
+            Double value = StringUtils.isBlank(valueStr) ? null : Double.valueOf(valueStr);
+            GraphItemVO graphItemVO = new GraphItemVO(
+                    String.valueOf(date.getTime()), value, AttrValueTypeEnum.number, monitorIndicator.getUnit());
+            values.add(graphItemVO);
+        }
+        return values;
+    }
+
+    /**
+     * 将给定时间各个指标的取值转换为公式参数map
+     *
+     * @param monitorValuesMap 监测指标的历史采集值 monitorId -> (time -> value)
+     * @param date             给定时间
+     * @return 公式参数map
+     * @author lixing
+     * @version V1.0 2021/9/27 4:00 下午
+     */
+    private HashMap<String, Object> getParamMap(Map<String, Map<Date, String>> monitorValuesMap, Date date) {
+        if (CollectionUtils.isEmpty(monitorValuesMap)) {
+            return new HashMap<>();
+        }
+
+        HashMap<String, Object> paramMap = new HashMap<>();
+        for (String indicatorId : monitorValuesMap.keySet()) {
+            Map<Date, String> recordMap = monitorValuesMap.get(indicatorId);
+            if (CollectionUtils.isEmpty(recordMap)) {
+                continue;
+            }
+            if (recordMap.get(date) != null) {
+                paramMap.put(indicatorId, Double.valueOf(recordMap.get(date)));
+            }
+        }
+        return paramMap;
+    }
+
+    /**
+     * 计算公式,获取计算结果
+     *
+     * @param formula  公式
+     * @param paramMap 参数
+     * @return 结果
+     * @author lixing
+     * @version V1.0 2021/9/27 3:59 下午
+     */
+    private Double calculateFormula(String formula, HashMap<String, Object> paramMap) {
+        Expression triggerExp = AviatorEvaluator.compile(formula, true);
+        Object resultObj = triggerExp.execute(paramMap);
+        if (resultObj == null) {
+            return null;
+        }
+        return Double.valueOf(resultObj.toString());
+    }
+
+    /**
+     * 获取监测指标和与监测指标关联的公式的映射
+     *
+     * @param conditionArray 报警条件数组
+     * @return 监测指标和与监测指标关联的公式的映射
+     * @author lixing
+     * @version V1.0 2021/9/27 2:42 下午
+     */
+    private Map<String, List<MonitorIndicatorFormulaItem>> getIndicatorFormulaMap(JSONArray conditionArray) {
+        Map<String, List<MonitorIndicatorFormulaItem>> indicatorFormulaMap = new HashMap<>();
+        // conditionArray: [condition], condition: [rule], rule: indicator, formula, operator
+        for (Object conditionObj : conditionArray) {
+            JSONArray ruleArray = (JSONArray) conditionObj;
+            if (CollectionUtils.isEmpty(ruleArray)) {
+                continue;
+            }
+            for (Object ruleObj : ruleArray) {
+                JSONObject rule = (JSONObject) ruleObj;
+                String monitorIndicatorId = rule.getString("monitorIndicatorId");
+                if (StringUtils.isBlank(monitorIndicatorId)) {
+                    continue;
+                }
+                String tempFormula = rule.getString("tempFormula");
+                String operator = rule.getString("operator");
+                if (indicatorFormulaMap.containsKey(monitorIndicatorId)) {
+                    List<MonitorIndicatorFormulaItem> monitorIndicatorFormulaItems = indicatorFormulaMap.get(monitorIndicatorId);
+                    monitorIndicatorFormulaItems.add(new MonitorIndicatorFormulaItem(operator, tempFormula));
+                } else {
+                    indicatorFormulaMap.put(monitorIndicatorId,
+                            Lists.newArrayList(new MonitorIndicatorFormulaItem(operator, tempFormula)));
+                }
+            }
+        }
+        return indicatorFormulaMap;
+    }
+
+    /**
+     * 获取监测指标的历史采集值
+     *
+     * @param infoCodeList [equipId-monitorId]
+     * @param startTime    开始时间
+     * @param endTime      结束时间
+     * @return 监测指标的历史采集值 monitorId -> (time -> value)
+     * @author lixing
+     * @version V1.0 2021/9/27 2:35 下午
+     */
+    private Map<String, Map<Date, String>> getIndicatorHistoryValues(
+            List<String> infoCodeList, Date startTime, Date endTime) {
+        // monitorId -> (time -> value)
+        Map<String, Map<Date, String>> monitorValuesMap = new HashMap<>();
+        // infoCodeList:[equipId-monitorId]
+        for (String infoCode : infoCodeList) {
+            String objId;
+            String indicatorId;
+            try {
+                objId = infoCode.substring(0, infoCode.indexOf("_"));
+                indicatorId = infoCode.substring(infoCode.indexOf("_") + 1);
+            } catch (Exception e) {
+                throw new IllegalArgumentException("报警记录数据有误,无法正确获取到报警条件中的信息点");
+            }
+            if (StringUtils.isBlank(objId) || StringUtils.isBlank(indicatorId)) {
+                throw new IllegalArgumentException("报警记录数据有误,无法正确获取到报警条件中的信息点");
+            }
+            // 查询设备监测指标取值
+            QueryMonitorIndicatorRecordDTO queryMonitorIndicatorRecordDTO = new QueryMonitorIndicatorRecordDTO();
+            queryMonitorIndicatorRecordDTO.setObjId(objId);
+            queryMonitorIndicatorRecordDTO.setMonitorIndicatorId(indicatorId);
+            queryMonitorIndicatorRecordDTO.setTimeFrom(startTime == null ? null : startTime.getTime());
+            queryMonitorIndicatorRecordDTO.setTimeTo(endTime == null ? null : endTime.getTime());
+            Map<Date, String> indicatorRecordMap = eqDiagnoseService.
+                    queryMonitorIndicatorRecord(queryMonitorIndicatorRecordDTO);
+            monitorValuesMap.put(indicatorId, indicatorRecordMap);
+        }
+
+        return monitorValuesMap;
+    }
 }
 }

+ 9 - 0
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/controller/ProjectMonitorIndicatorConfigController.java

@@ -99,5 +99,14 @@ public class ProjectMonitorIndicatorConfigController {
                 pageQueryProjectMonitorIndicatorConfig(pageQueryProjectMonitorIndicatorConfigDTO);
                 pageQueryProjectMonitorIndicatorConfig(pageQueryProjectMonitorIndicatorConfigDTO);
         return ResultHelper.multi(pagedList);
         return ResultHelper.multi(pagedList);
     }
     }
+
+    @ApiOperation(value = "设备监测指标配置")
+    @PostMapping("/query_by_equip")
+    public CommonResult<PageList<ProjectMonitorIndicatorConfigListItemVO>> queryProjectMonitorIndicatorConfigByEquip(
+            @Valid @RequestBody QueryProjectMonitorIndicatorConfigByEquipDTO queryProjectMonitorIndicatorConfigByEquipDTO) {
+        IPage<ProjectMonitorIndicatorConfigListItemVO> pagedList = projectMonitorIndicatorConfigService.
+                queryProjectMonitorIndicatorConfigByEquip(queryProjectMonitorIndicatorConfigByEquipDTO);
+        return ResultHelper.multi(pagedList);
+    }
 }
 }
 
 

+ 27 - 0
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/dto/QueryProjectMonitorIndicatorConfigByEquipDTO.java

@@ -0,0 +1,27 @@
+package com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.dto;
+
+import com.persagy.apm.common.model.dto.PageDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-09-08 22:46:56
+ */
+@Data
+@ApiModel("查询设备的监测指标配置")
+public class QueryProjectMonitorIndicatorConfigByEquipDTO {
+    @ApiModelProperty(value = "监测对象id", required = true)
+    @NotBlank(message = "监测对象id不可为空")
+    private String objId;
+    
+    @ApiModelProperty(value = "监测指标id列表", required = true)
+    @NotNull(message = "监测指标id列表不可为空")
+    private List<String> monitorIndicatorId;
+}

+ 11 - 0
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/service/IProjectMonitorIndicatorConfigService.java

@@ -84,4 +84,15 @@ public interface IProjectMonitorIndicatorConfigService  {
      * @version V1.0 2021/9/17 2:43 下午
      * @version V1.0 2021/9/17 2:43 下午
      */
      */
     public ProjectMonitorIndicatorConfig getConfigByObjAndIndicator(String objId, String monitorIndicatorId);
     public ProjectMonitorIndicatorConfig getConfigByObjAndIndicator(String objId, String monitorIndicatorId);
+
+    /**
+     * 查询设备监测指标配置
+     *
+     * @param queryProjectMonitorIndicatorConfigByEquipDTO 查询条件
+     * @return 设备监测指标配置列表
+     * @author lixing
+     * @version V1.0 2021/9/27 11:28 上午
+     */
+    IPage<ProjectMonitorIndicatorConfigListItemVO> queryProjectMonitorIndicatorConfigByEquip(
+            QueryProjectMonitorIndicatorConfigByEquipDTO queryProjectMonitorIndicatorConfigByEquipDTO);
 }
 }

+ 27 - 4
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/service/impl/ProjectMonitorIndicatorConfigServiceImpl.java

@@ -17,10 +17,7 @@ import com.persagy.apm.alarmservice.group.monitorindicator.service.IMonitorIndic
 import com.persagy.apm.alarmservice.project.monitorindicatorconfig.dao.ProjectMonitorIndicatorConfigMapper;
 import com.persagy.apm.alarmservice.project.monitorindicatorconfig.dao.ProjectMonitorIndicatorConfigMapper;
 import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.ConvertProjectMonitorIndicatorConfigTool;
 import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.ConvertProjectMonitorIndicatorConfigTool;
 import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.ProjectMonitorIndicatorConfig;
 import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.ProjectMonitorIndicatorConfig;
-import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.dto.AddProjectMonitorIndicatorConfigDTO;
-import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.dto.PageQueryProjectMonitorIndicatorConfigDTO;
-import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.dto.QueryProjectMonitorIndicatorConfigDTO;
-import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.dto.UpdateProjectMonitorIndicatorConfigDTO;
+import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.dto.*;
 import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.vo.ProjectMonitorIndicatorConfigListItemVO;
 import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.vo.ProjectMonitorIndicatorConfigListItemVO;
 import com.persagy.apm.alarmservice.project.monitorindicatorconfig.service.IProjectMonitorIndicatorConfigService;
 import com.persagy.apm.alarmservice.project.monitorindicatorconfig.service.IProjectMonitorIndicatorConfigService;
 import com.persagy.apm.common.constant.enums.BoolEnum;
 import com.persagy.apm.common.constant.enums.BoolEnum;
@@ -417,4 +414,30 @@ public class ProjectMonitorIndicatorConfigServiceImpl extends ServiceImpl<Projec
         return new ProjectMonitorIndicatorConfig(
         return new ProjectMonitorIndicatorConfig(
                 objId, monitorIndicatorId, calculateMethodId, projectId);
                 objId, monitorIndicatorId, calculateMethodId, projectId);
     }
     }
+
+    @Override
+    public IPage<ProjectMonitorIndicatorConfigListItemVO> queryProjectMonitorIndicatorConfigByEquip(
+            QueryProjectMonitorIndicatorConfigByEquipDTO queryProjectMonitorIndicatorConfigByEquipDTO) {
+        IPage<ProjectMonitorIndicatorConfigListItemVO> result = new Page<>();
+        result.setTotal(0);
+        result.setRecords(new ArrayList<>());
+
+        String objId = queryProjectMonitorIndicatorConfigByEquipDTO.getObjId();
+        List<String> monitorIndicatorIdList = queryProjectMonitorIndicatorConfigByEquipDTO.getMonitorIndicatorId();
+        if (StringUtils.isBlank(objId) || CollectionUtils.isEmpty(monitorIndicatorIdList)) {
+            return result;
+        }
+        EquipItem equipItem = groupManagementService.equipGet(objId);
+        QueryMonitorIndicatorDTO queryMonitorIndicatorDTO = new QueryMonitorIndicatorDTO();
+        queryMonitorIndicatorDTO.setIds(monitorIndicatorIdList);
+        List<MonitorIndicator> monitorIndicators = monitorIndicatorService.queryMonitorIndicatorList(queryMonitorIndicatorDTO);
+        List<ProjectMonitorIndicatorConfigListItemVO> recordList =
+                combineResult(monitorIndicators, Lists.newArrayList(equipItem));
+        // 项目监测指标初始化计算方式
+        recordList.forEach(this::addCalculateMethodInfo);
+
+        result.setRecords(recordList);
+        result.setTotal(recordList.size());
+        return result;
+    }
 }
 }