Ver código fonte

实现监测指标管理和配置

lixing 3 anos atrás
pai
commit
1848421b07
19 arquivos alterados com 336 adições e 231 exclusões
  1. 1 1
      src/main/java/com/persagy/apm/alarmservice/calculatemethod/model/CalculateMethod.java
  2. 1 1
      src/main/java/com/persagy/apm/alarmservice/calculatemethod/model/dto/QueryCalculateMethodDTO.java
  3. 4 0
      src/main/java/com/persagy/apm/alarmservice/monitorindicator/controller/MonitorIndicatorController.java
  4. 8 0
      src/main/java/com/persagy/apm/alarmservice/monitorindicator/model/MonitorIndicator.java
  5. 6 3
      src/main/java/com/persagy/apm/alarmservice/monitorindicator/model/dto/QueryMonitorIndicatorDTO.java
  6. 6 12
      src/main/java/com/persagy/apm/alarmservice/monitorindicator/model/vo/MonitorIndicatorItemVO.java
  7. 3 13
      src/main/java/com/persagy/apm/alarmservice/monitorindicator/model/vo/MonitorIndicatorListItemVO.java
  8. 11 0
      src/main/java/com/persagy/apm/alarmservice/monitorindicator/service/IMonitorIndicatorService.java
  9. 21 4
      src/main/java/com/persagy/apm/alarmservice/monitorindicator/service/impl/MonitorIndicatorServiceImpl.java
  10. 35 24
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/controller/ProjectMonitorIndicatorConfigController.java
  11. 5 0
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/ProjectMonitorIndicatorConfig.java
  12. 15 13
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/dto/PageQueryProjectMonitorIndicatorConfigDTO.java
  13. 7 4
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/dto/QueryProjectMonitorIndicatorConfigDetailDTO.java
  14. 4 13
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/dto/UpdateProjectMonitorIndicatorConfigDTO.java
  15. 7 22
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/vo/ProjectMonitorIndicatorConfigItemVO.java
  16. 7 22
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/vo/ProjectMonitorIndicatorConfigListItemVO.java
  17. 12 1
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/service/IProjectMonitorIndicatorConfigService.java
  18. 181 98
      src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/service/impl/ProjectMonitorIndicatorConfigServiceImpl.java
  19. 2 0
      src/main/resources/mapper/MonitorIndicatorMapper.xml

+ 1 - 1
src/main/java/com/persagy/apm/alarmservice/calculatemethod/model/CalculateMethod.java

@@ -29,7 +29,7 @@ public class CalculateMethod extends AuditableEntity<CalculateMethod> implements
     private String monitorIndicatorId;
     
     @ApiModelProperty("是否是指标默认计算方式")
-    private Integer isDefault;
+    private String isDefault;
     
 
     public static String PROP_NAME = "name";

+ 1 - 1
src/main/java/com/persagy/apm/alarmservice/calculatemethod/model/dto/QueryCalculateMethodDTO.java

@@ -22,6 +22,6 @@ public class QueryCalculateMethodDTO {
     private String monitorIndicatorId;
     
     @ApiModelProperty(value = "是否是指标默认计算方式", required = true)
-    private Integer isDefault;
+    private String isDefault;
     
 }

+ 4 - 0
src/main/java/com/persagy/apm/alarmservice/monitorindicator/controller/MonitorIndicatorController.java

@@ -13,6 +13,8 @@ import com.persagy.apm.common.response.*;
 import com.persagy.apm.common.utils.ResultHelper;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
 import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.List;
@@ -32,6 +34,7 @@ public class MonitorIndicatorController {
 
 	@ApiOperation(value = "创建监测指标")
 	@PostMapping("/create")
+    @ApiIgnore
 	public CommonResult<ApmResponseUpsertVO> createMonitorIndicator(
 	        @Valid @RequestBody AddMonitorIndicatorDTO addMonitorIndicatorDTO) {
         String id = monitorIndicatorService.createMonitorIndicator(addMonitorIndicatorDTO);
@@ -72,6 +75,7 @@ public class MonitorIndicatorController {
             @Valid @RequestBody QueryMonitorIndicatorDTO queryMonitorIndicatorDTO) {
         List<MonitorIndicator> monitorIndicatorList = monitorIndicatorService.queryMonitorIndicatorList(queryMonitorIndicatorDTO);
         List<MonitorIndicatorListItemVO> resultList = ConvertMonitorIndicatorTool.INSTANCE.convert2List(monitorIndicatorList);
+        monitorIndicatorService.setIndicatorMethodCount(resultList);
         return ResultHelper.multi(resultList);
     }
 

+ 8 - 0
src/main/java/com/persagy/apm/alarmservice/monitorindicator/model/MonitorIndicator.java

@@ -1,5 +1,8 @@
 package com.persagy.apm.alarmservice.monitorindicator.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import com.persagy.apm.common.model.vo.EnumVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -7,6 +10,7 @@ import lombok.EqualsAndHashCode;
 import com.persagy.apm.common.model.entity.AuditableEntity;
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 监测指标(MonitorIndicator)实体类
@@ -28,6 +32,10 @@ public class MonitorIndicator extends AuditableEntity<MonitorIndicator> implemen
     @ApiModelProperty("单位")
     private String unit;
 
+    @ApiModelProperty("可选值字典")
+    @TableField(typeHandler = FastjsonTypeHandler.class)
+    private List<EnumVO> dic;
+
     public static String PROP_NAME = "name";
     public static String PROP_CLASS_CODE = "class_code";
     public static String PROP_CLASS_UNIT = "unit";

+ 6 - 3
src/main/java/com/persagy/apm/alarmservice/monitorindicator/model/dto/QueryMonitorIndicatorDTO.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author lixing
@@ -12,10 +13,12 @@ import java.util.Date;
 @Data
 @ApiModel(value = "查询监测指标入参")
 public class QueryMonitorIndicatorDTO {
-    @ApiModelProperty(value = "指标名称", required = true)
+    @ApiModelProperty(value = "监测指标id列表")
+    private List<String> ids;
+
+    @ApiModelProperty(value = "指标名称")
     private String name;
     
-    @ApiModelProperty(value = "设备类", required = true)
+    @ApiModelProperty(value = "设备类")
     private String classCode;
-    
 }

+ 6 - 12
src/main/java/com/persagy/apm/alarmservice/monitorindicator/model/vo/MonitorIndicatorItemVO.java

@@ -1,9 +1,12 @@
 package com.persagy.apm.alarmservice.monitorindicator.model.vo;
 
+import com.persagy.apm.common.model.vo.EnumVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.util.Date;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonInclude;
 
 /**
@@ -25,17 +28,8 @@ public class MonitorIndicatorItemVO {
 
     @ApiModelProperty("单位")
     private String unit;
-    
-    @ApiModelProperty("创建人")
-    private String creator;
-    
-    @ApiModelProperty("创建时间")
-    private Date creationTime;
-    
-    @ApiModelProperty("修改人")
-    private String modifier;
-    
-    @ApiModelProperty("修改时间")
-    private Date modifiedTime;
+
+    @ApiModelProperty("可选值")
+    private List<EnumVO> dic;
     
 }

+ 3 - 13
src/main/java/com/persagy/apm/alarmservice/monitorindicator/model/vo/MonitorIndicatorListItemVO.java

@@ -25,17 +25,7 @@ public class MonitorIndicatorListItemVO {
 
     @ApiModelProperty("单位")
     private String unit;
-    
-    @ApiModelProperty("创建人")
-    private String creator;
-    
-    @ApiModelProperty("创建时间")
-    private Date creationTime;
-    
-    @ApiModelProperty("修改人")
-    private String modifier;
-    
-    @ApiModelProperty("修改时间")
-    private Date modifiedTime;
-    
+
+    @ApiModelProperty("包含的计算方式梳理")
+    private Integer methodCount;
 }

+ 11 - 0
src/main/java/com/persagy/apm/alarmservice/monitorindicator/service/IMonitorIndicatorService.java

@@ -4,6 +4,7 @@ import com.persagy.apm.alarmservice.monitorindicator.model.*;
 import com.persagy.apm.alarmservice.monitorindicator.model.dto.*;
 import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.alarmservice.monitorindicator.model.vo.MonitorIndicatorListItemVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -72,4 +73,14 @@ public interface IMonitorIndicatorService  {
     * @version V1.0 2021-09-08 22:44:37
     */
     public IPage<MonitorIndicator> pageQueryMonitorIndicator(PageQueryMonitorIndicatorDTO pageQueryMonitorIndicatorDTO);
+
+    /**
+     * 为监测指标包含的计算方式数量赋值
+     *
+     * @param indicators 监测指标列表
+     * @return 计算方式数量赋值后的监测指标列表
+     * @author lixing
+     * @version V1.0 2021-09-08 22:44:37
+     */
+    public void setIndicatorMethodCount(List<MonitorIndicatorListItemVO> indicators);
 }

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

@@ -1,9 +1,14 @@
 package com.persagy.apm.alarmservice.monitorindicator.service.impl;
 
+import com.persagy.apm.alarmservice.calculatemethod.model.CalculateMethod;
+import com.persagy.apm.alarmservice.calculatemethod.model.dto.QueryCalculateMethodDTO;
+import com.persagy.apm.alarmservice.calculatemethod.service.ICalculateMethodService;
+import com.persagy.apm.alarmservice.monitorindicator.model.vo.MonitorIndicatorListItemVO;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.alarmservice.monitorindicator.dao.MonitorIndicatorMapper;
 import com.persagy.apm.alarmservice.monitorindicator.service.IMonitorIndicatorService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.apache.commons.lang.StringUtils;
 import com.persagy.apm.common.constant.enums.ValidEnum;
@@ -26,7 +31,9 @@ import org.springframework.util.CollectionUtils;
 @Service
 public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMapper, MonitorIndicator> 
     implements IMonitorIndicatorService {
-    
+    @Autowired
+    ICalculateMethodService calculateMethodService;
+
     /**
     * 创建监测指标
     * @return 监测指标主键
@@ -136,14 +143,12 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
         
         if (queryMonitorIndicatorDTO != null) {
                                 
-            // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryMonitorIndicatorDTO.getName())) {
                 queryWrapper.like(MonitorIndicator.PROP_NAME, queryMonitorIndicatorDTO.getName());
             }
                                         
-            // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryMonitorIndicatorDTO.getClassCode())) {
-                queryWrapper.like(MonitorIndicator.PROP_CLASS_CODE, queryMonitorIndicatorDTO.getClassCode());
+                queryWrapper.eq(MonitorIndicator.PROP_CLASS_CODE, queryMonitorIndicatorDTO.getClassCode());
             }
                                             
         }
@@ -188,4 +193,16 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
                                     
         return getBaseMapper().selectPage(pageParam, queryWrapper);
     }
+
+    @Override
+    public void setIndicatorMethodCount(List<MonitorIndicatorListItemVO> indicators) {
+        indicators.forEach(indicator -> {
+            QueryCalculateMethodDTO queryCalculateMethodDTO = new QueryCalculateMethodDTO();
+            queryCalculateMethodDTO.setMonitorIndicatorId(indicator.getId());
+            List<CalculateMethod> calculateMethods = calculateMethodService.
+                    queryCalculateMethodList(queryCalculateMethodDTO);
+            int methodCount = calculateMethods == null ? 0 : calculateMethods.size();
+            indicator.setMethodCount(methodCount);
+        });
+    }
 }

+ 35 - 24
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/controller/ProjectMonitorIndicatorConfigController.java

@@ -1,5 +1,6 @@
 package com.persagy.apm.alarmservice.project.monitorindicatorconfig.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.persagy.apm.alarmservice.project.monitorindicatorconfig.service.IProjectMonitorIndicatorConfigService;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,6 +14,8 @@ import com.persagy.apm.common.response.*;
 import com.persagy.apm.common.utils.ResultHelper;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
 import javax.validation.Valid;
 import java.util.List;
 
@@ -31,6 +34,7 @@ public class ProjectMonitorIndicatorConfigController {
 
 	@ApiOperation(value = "创建项目监测指标配置")
 	@PostMapping("/create")
+    @ApiIgnore
 	public CommonResult<ApmResponseUpsertVO> createProjectMonitorIndicatorConfig(
 	        @Valid @RequestBody AddProjectMonitorIndicatorConfigDTO addProjectMonitorIndicatorConfigDTO) {
         String id = projectMonitorIndicatorConfigService.createProjectMonitorIndicatorConfig(addProjectMonitorIndicatorConfigDTO);
@@ -41,8 +45,12 @@ public class ProjectMonitorIndicatorConfigController {
     @PostMapping("/get")
     public CommonResult<ProjectMonitorIndicatorConfigItemVO> queryProjectMonitorIndicatorConfigDetail(
             @Valid @RequestBody QueryProjectMonitorIndicatorConfigDetailDTO queryProjectMonitorIndicatorConfigDetailDTO) {
-        ProjectMonitorIndicatorConfig projectMonitorIndicatorConfig = projectMonitorIndicatorConfigService.queryProjectMonitorIndicatorConfigDetail(queryProjectMonitorIndicatorConfigDetailDTO.getId());
-        ProjectMonitorIndicatorConfigItemVO projectMonitorIndicatorConfigItemVO = ConvertProjectMonitorIndicatorConfigTool.INSTANCE.convert2ResponseItemDTO(projectMonitorIndicatorConfig);
+        ProjectMonitorIndicatorConfig projectMonitorIndicatorConfig =
+                projectMonitorIndicatorConfigService.getConfigByObjAndIndicator(
+                        queryProjectMonitorIndicatorConfigDetailDTO.getObjId(),
+                        queryProjectMonitorIndicatorConfigDetailDTO.getMonitorIndicatorId());
+        ProjectMonitorIndicatorConfigItemVO projectMonitorIndicatorConfigItemVO =
+                ConvertProjectMonitorIndicatorConfigTool.INSTANCE.convert2ResponseItemDTO(projectMonitorIndicatorConfig);
         return ResultHelper.single(projectMonitorIndicatorConfigItemVO);
     }
 
@@ -51,13 +59,15 @@ public class ProjectMonitorIndicatorConfigController {
     @PostMapping("/update")
     public CommonResult<ApmResponseUpsertVO> updateProjectMonitorIndicatorConfig(
             @Valid @RequestBody UpdateProjectMonitorIndicatorConfigDTO updateProjectMonitorIndicatorConfigDTO) {
-        projectMonitorIndicatorConfigService.updateProjectMonitorIndicatorConfig(updateProjectMonitorIndicatorConfigDTO);
-        return ResultHelper.single(new ApmResponseUpsertVO(updateProjectMonitorIndicatorConfigDTO.getId()));
+        String id = projectMonitorIndicatorConfigService.
+                updateProjectMonitorIndicatorConfig(updateProjectMonitorIndicatorConfigDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO(id));
     }
 
 
     @ApiOperation(value = "删除项目监测指标配置")
     @PostMapping("/delete")
+    @ApiIgnore
     public CommonResult deleteProjectMonitorIndicatorConfig(
             @RequestBody @Valid DeleteProjectMonitorIndicatorConfigDTO deleteProjectMonitorIndicatorConfigDTO) {
         projectMonitorIndicatorConfigService.deleteProjectMonitorIndicatorConfig(deleteProjectMonitorIndicatorConfigDTO.getId());
@@ -65,28 +75,29 @@ public class ProjectMonitorIndicatorConfigController {
     }
 
 
-    @ApiOperation(value = "项目监测指标配置列表")
+//    @ApiOperation(value = "项目监测指标配置列表")
+//    @PostMapping("/query")
+//    public CommonResult<PageList<ProjectMonitorIndicatorConfigListItemVO>> queryProjectMonitorIndicatorConfig(
+//            @Valid @RequestBody QueryProjectMonitorIndicatorConfigDTO queryProjectMonitorIndicatorConfigDTO) {
+//        List<ProjectMonitorIndicatorConfig> projectMonitorIndicatorConfigList = projectMonitorIndicatorConfigService.queryProjectMonitorIndicatorConfigList(queryProjectMonitorIndicatorConfigDTO);
+//        List<ProjectMonitorIndicatorConfigListItemVO> resultList = ConvertProjectMonitorIndicatorConfigTool.INSTANCE.convert2List(projectMonitorIndicatorConfigList);
+//        return ResultHelper.multi(resultList);
+//    }
+    
+    @ApiOperation(value = "项目监测指标配置列表, 分页查询")
     @PostMapping("/query")
     public CommonResult<PageList<ProjectMonitorIndicatorConfigListItemVO>> queryProjectMonitorIndicatorConfig(
-            @Valid @RequestBody QueryProjectMonitorIndicatorConfigDTO queryProjectMonitorIndicatorConfigDTO) {
-        List<ProjectMonitorIndicatorConfig> projectMonitorIndicatorConfigList = projectMonitorIndicatorConfigService.queryProjectMonitorIndicatorConfigList(queryProjectMonitorIndicatorConfigDTO);
-        List<ProjectMonitorIndicatorConfigListItemVO> resultList = ConvertProjectMonitorIndicatorConfigTool.INSTANCE.convert2List(projectMonitorIndicatorConfigList);
-        return ResultHelper.multi(resultList);
+            @Valid @RequestBody PageQueryProjectMonitorIndicatorConfigDTO pageQueryProjectMonitorIndicatorConfigDTO) {
+        IPage<ProjectMonitorIndicatorConfig> pagedList = projectMonitorIndicatorConfigService.
+                pageQueryProjectMonitorIndicatorConfig(pageQueryProjectMonitorIndicatorConfigDTO);
+        IPage<ProjectMonitorIndicatorConfigListItemVO> pagedResultList = pagedList.convert(item -> {
+            try {
+               return ConvertProjectMonitorIndicatorConfigTool.INSTANCE.convert2ResponseListItemDTO(item);
+            } catch (Exception e) {
+                throw new IllegalArgumentException("分页查询,ProjectMonitorIndicatorConfig实体类转换为列表对象发生异常", e);
+            }
+        });
+        return ResultHelper.multi(pagedResultList);
     }
-    
-    //@ApiOperation(value = "项目监测指标配置列表, 分页查询")
-    //@PostMapping("/query")
-    //public CommonResult<PageList<ProjectMonitorIndicatorConfigListItemVO>> queryProjectMonitorIndicatorConfig(
-    //        @Valid @RequestBody PageQueryProjectMonitorIndicatorConfigDTO pageQueryProjectMonitorIndicatorConfigDTO) {
-    //    IPage<ProjectMonitorIndicatorConfig> pagedList = projectMonitorIndicatorConfigService.pageQueryProjectMonitorIndicatorConfig(pageQueryProjectMonitorIndicatorConfigDTO);
-    //    IPage<ProjectMonitorIndicatorConfigListItemVO> pagedResultList = pagedList.convert(item -> {
-    //        try {
-    //           return ConvertProjectMonitorIndicatorConfigTool.INSTANCE.convert2ResponseListItemDTO(item);
-    //        } catch (Exception e) {
-    //            throw new IllegalArgumentException("分页查询,ProjectMonitorIndicatorConfig实体类转换为列表对象发生异常", e);
-    //        }
-    //    });
-    //    return ResultHelper.multi(pagedResultList);
-    //}
 }
 

+ 5 - 0
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/ProjectMonitorIndicatorConfig.java

@@ -2,9 +2,12 @@ package com.persagy.apm.alarmservice.project.monitorindicatorconfig.model;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import com.persagy.apm.common.model.entity.AuditableEntity;
+import lombok.NoArgsConstructor;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -14,6 +17,8 @@ import java.util.Date;
  * @version V1.0 2021-09-08 22:46:56
  */
 @EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
 @Data
 @ApiModel(description = "项目监测指标配置")
 public class ProjectMonitorIndicatorConfig extends AuditableEntity<ProjectMonitorIndicatorConfig> implements Serializable {

+ 15 - 13
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/dto/PageQueryProjectMonitorIndicatorConfigDTO.java

@@ -3,10 +3,14 @@ package com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.dto;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.util.Date;
+import java.util.List;
+
 import com.persagy.apm.common.model.dto.PageDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import javax.validation.constraints.NotBlank;
+
 /**
  * @author lixing
  * @version V1.0 2021-09-08 22:46:56
@@ -15,19 +19,17 @@ import lombok.EqualsAndHashCode;
 @Data
 @ApiModel(value = "分页查询项目监测指标配置入参")
 public class PageQueryProjectMonitorIndicatorConfigDTO extends PageDTO {
-    @ApiModelProperty(value = "主键", required = true)
-    private String id;
-    
-    @ApiModelProperty(value = "监测对象id", required = true)
-    private String objId;
+    @ApiModelProperty(value = "监测对象名称(模糊查询)")
+    private String objName;
     
-    @ApiModelProperty(value = "监测指标id", required = true)
-    private String monitorIndicatorId;
-    
-    @ApiModelProperty(value = "计算方式id", required = true)
-    private String caculateMethodId;
-    
-    @ApiModelProperty(value = "项目id", required = true)
-    private String projectId;
+    @ApiModelProperty(value = "监测指标id列表")
+    private List<String> monitorIndicatorId;
     
+    @ApiModelProperty(value = "分组id", required = true)
+    @NotBlank(message = "查询条件缺少分组id")
+    private String groupId;
+
+    @ApiModelProperty(value = "设备类编码", required = true)
+    @NotBlank(message = "查询条件缺少设备类编码")
+    private String classCode;
 }

+ 7 - 4
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/dto/QueryProjectMonitorIndicatorConfigDetailDTO.java

@@ -12,8 +12,11 @@ import javax.validation.constraints.NotNull;
 @Data
 @ApiModel(value = "获取项目监测指标配置详情入参")
 public class QueryProjectMonitorIndicatorConfigDetailDTO {
-    @NotNull(message = "主键不能为空")
-    @ApiModelProperty(value = "主键", required = true)
-    private String id;
-    
+    @NotNull(message = "监测对象id不能为空")
+    @ApiModelProperty(value = "监测对象id", required = true)
+    private String objId;
+
+    @NotNull(message = "监测指标id不能为空")
+    @ApiModelProperty(value = "监测指标id", required = true)
+    private String monitorIndicatorId;
 }

+ 4 - 13
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/dto/UpdateProjectMonitorIndicatorConfigDTO.java

@@ -13,24 +13,15 @@ import java.util.Date;
 @Data
 @ApiModel(value = "更新项目监测指标配置入参")
 public class UpdateProjectMonitorIndicatorConfigDTO {
-    @ApiModelProperty(value = "主键", required = true)
-    @NotNull(message = "主键不能为空") // todo 更新校验规则
-    private String id;
-    
     @ApiModelProperty(value = "监测对象id", required = true)
-    @NotNull(message = "监测对象id不能为空") // todo 更新校验规则
+    @NotNull(message = "监测对象id不能为空")
     private String objId;
     
     @ApiModelProperty(value = "监测指标id", required = true)
-    @NotNull(message = "监测指标id不能为空") // todo 更新校验规则
+    @NotNull(message = "监测指标id不能为空")
     private String monitorIndicatorId;
     
     @ApiModelProperty(value = "计算方式id", required = true)
-    @NotNull(message = "计算方式id不能为空") // todo 更新校验规则
-    private String caculateMethodId;
-    
-    @ApiModelProperty(value = "项目id", required = true)
-    @NotNull(message = "项目id不能为空") // todo 更新校验规则
-    private String projectId;
-    
+    @NotNull(message = "计算方式id不能为空")
+    private String calculateMethodId;
 }

+ 7 - 22
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/vo/ProjectMonitorIndicatorConfigItemVO.java

@@ -1,5 +1,6 @@
 package com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.vo;
 
+import com.persagy.apm.common.model.vo.SimpleObjVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -14,31 +15,15 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @ApiModel(value = "项目监测指标配置返回结果参数")
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ProjectMonitorIndicatorConfigItemVO {
-    @ApiModelProperty("主键")
-    private String id;
+    @ApiModelProperty("监测对象")
+    private SimpleObjVO obj;
     
-    @ApiModelProperty("监测对象id")
-    private String objId;
+    @ApiModelProperty("监测指标")
+    private SimpleObjVO monitorIndicator;
     
-    @ApiModelProperty("监测指标id")
-    private String monitorIndicatorId;
-    
-    @ApiModelProperty("计算方式id")
-    private String caculateMethodId;
+    @ApiModelProperty("计算方式")
+    private SimpleObjVO calculateMethod;
     
     @ApiModelProperty("项目id")
     private String projectId;
-    
-    @ApiModelProperty("创建人")
-    private String creator;
-    
-    @ApiModelProperty("创建时间")
-    private Date creationTime;
-    
-    @ApiModelProperty("修改人")
-    private String modifier;
-    
-    @ApiModelProperty("修改时间")
-    private Date modifiedTime;
-    
 }

+ 7 - 22
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/model/vo/ProjectMonitorIndicatorConfigListItemVO.java

@@ -1,5 +1,6 @@
 package com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.vo;
 
+import com.persagy.apm.common.model.vo.SimpleObjVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -17,28 +18,12 @@ public class ProjectMonitorIndicatorConfigListItemVO {
     @ApiModelProperty("主键")
     private String id;
     
-    @ApiModelProperty("监测对象id")
-    private String objId;
+    @ApiModelProperty("监测对象")
+    private SimpleObjVO obj;
     
-    @ApiModelProperty("监测指标id")
-    private String monitorIndicatorId;
-    
-    @ApiModelProperty("计算方式id")
-    private String caculateMethodId;
-    
-    @ApiModelProperty("项目id")
-    private String projectId;
-    
-    @ApiModelProperty("创建人")
-    private String creator;
-    
-    @ApiModelProperty("创建时间")
-    private Date creationTime;
-    
-    @ApiModelProperty("修改人")
-    private String modifier;
-    
-    @ApiModelProperty("修改时间")
-    private Date modifiedTime;
+    @ApiModelProperty("监测指标")
+    private SimpleObjVO monitorIndicator;
     
+    @ApiModelProperty("计算方式")
+    private SimpleObjVO calculateMethod;
 }

+ 12 - 1
src/main/java/com/persagy/apm/alarmservice/project/monitorindicatorconfig/service/IProjectMonitorIndicatorConfigService.java

@@ -42,7 +42,7 @@ public interface IProjectMonitorIndicatorConfigService  {
     * @author lixing
     * @version V1.0 2021-09-08 22:46:56
     */
-    public void updateProjectMonitorIndicatorConfig(UpdateProjectMonitorIndicatorConfigDTO updateProjectMonitorIndicatorConfigDTO);
+    public String updateProjectMonitorIndicatorConfig(UpdateProjectMonitorIndicatorConfigDTO updateProjectMonitorIndicatorConfigDTO);
     
     /**
     * 删除项目监测指标配置
@@ -72,4 +72,15 @@ public interface IProjectMonitorIndicatorConfigService  {
     * @version V1.0 2021-09-08 22:46:56
     */
     public IPage<ProjectMonitorIndicatorConfig> pageQueryProjectMonitorIndicatorConfig(PageQueryProjectMonitorIndicatorConfigDTO pageQueryProjectMonitorIndicatorConfigDTO);
+
+    /**
+     * 根据监测对象id和监测指标id,获取设备监测指标的配置信息
+     *
+     * @param objId 监测对象id
+     * @param monitorIndicatorId 监测指标id
+     * @return 设备监测指标的配置信息
+     * @author lixing
+     * @version V1.0 2021/9/17 2:43 下午
+     */
+    public ProjectMonitorIndicatorConfig getConfigByObjAndIndicator(String objId, String monitorIndicatorId);
 }

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

@@ -1,22 +1,35 @@
 package com.persagy.apm.alarmservice.project.monitorindicatorconfig.service.impl;
 
-import com.persagy.apm.common.context.AppContext;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.persagy.apm.alarmservice.calculatemethod.model.CalculateMethod;
+import com.persagy.apm.alarmservice.calculatemethod.model.dto.QueryCalculateMethodDTO;
+import com.persagy.apm.alarmservice.calculatemethod.service.ICalculateMethodService;
+import com.persagy.apm.alarmservice.group.management.service.GroupManagementService;
+import com.persagy.apm.alarmservice.monitorindicator.model.MonitorIndicator;
+import com.persagy.apm.alarmservice.monitorindicator.model.dto.QueryMonitorIndicatorDTO;
+import com.persagy.apm.alarmservice.monitorindicator.service.IMonitorIndicatorService;
 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.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.service.IProjectMonitorIndicatorConfigService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import org.apache.commons.lang.StringUtils;
+import com.persagy.apm.common.constant.enums.BoolEnum;
 import com.persagy.apm.common.constant.enums.ValidEnum;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.*;
-import com.persagy.apm.alarmservice.project.monitorindicatorconfig.model.dto.*;
-import java.util.List;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.base.CaseFormat;
-import com.persagy.apm.common.model.dto.Sort;
+import com.persagy.apm.common.context.AppContext;
+import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.model.dto.GroupManagementDTO;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.util.List;
+
 /**
  * 项目监测指标配置(ProjectMonitorIndicatorConfig) service层
  *
@@ -24,15 +37,23 @@ import org.springframework.util.CollectionUtils;
  * @version V1.0 2021-09-08 22:46:56
  */
 @Service
-public class ProjectMonitorIndicatorConfigServiceImpl extends ServiceImpl<ProjectMonitorIndicatorConfigMapper, ProjectMonitorIndicatorConfig> 
-    implements IProjectMonitorIndicatorConfigService {
-    
+public class ProjectMonitorIndicatorConfigServiceImpl extends ServiceImpl<ProjectMonitorIndicatorConfigMapper, ProjectMonitorIndicatorConfig>
+        implements IProjectMonitorIndicatorConfigService {
+
+    @Autowired
+    IMonitorIndicatorService monitorIndicatorService;
+    @Autowired
+    ICalculateMethodService calculateMethodService;
+    @Autowired
+    GroupManagementService groupManagementService;
+
     /**
-    * 创建项目监测指标配置
-    * @return 项目监测指标配置主键
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:56
-    */
+     * 创建项目监测指标配置
+     *
+     * @return 项目监测指标配置主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:56
+     */
     @Override
     public String createProjectMonitorIndicatorConfig(AddProjectMonitorIndicatorConfigDTO addProjectMonitorIndicatorConfigDTO) {
         ProjectMonitorIndicatorConfig projectMonitorIndicatorConfig = ConvertProjectMonitorIndicatorConfigTool.INSTANCE.convertAddDto2Entity(addProjectMonitorIndicatorConfigDTO);
@@ -41,7 +62,7 @@ public class ProjectMonitorIndicatorConfigServiceImpl extends ServiceImpl<Projec
         save(projectMonitorIndicatorConfig);
         return projectMonitorIndicatorConfig.getId();
     }
-    
+
     /**
      * 如果某些字段没有赋值,使用默认的值
      *
@@ -52,16 +73,17 @@ public class ProjectMonitorIndicatorConfigServiceImpl extends ServiceImpl<Projec
     private void setDefaultValue(ProjectMonitorIndicatorConfig projectMonitorIndicatorConfig) {
         projectMonitorIndicatorConfig.setCreator(AppContext.getContext().getAccountId());
         // todo 其他默认的属性
-        
+
     }
-    
+
     /**
-    * 项目监测指标配置详情
-    * @param id 主键
-    * @return 部门do类
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:56
-    */
+     * 项目监测指标配置详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:56
+     */
     @Override
     public ProjectMonitorIndicatorConfig queryProjectMonitorIndicatorConfigDetail(String id) {
         ProjectMonitorIndicatorConfig projectMonitorIndicatorConfig = getById(id);
@@ -70,20 +92,25 @@ public class ProjectMonitorIndicatorConfigServiceImpl extends ServiceImpl<Projec
         }
         return projectMonitorIndicatorConfig;
     }
-    
+
     /**
-    * 更新项目监测指标配置
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:56
-    */
+     * 更新项目监测指标配置
+     *
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:56
+     */
     @Override
-    public void updateProjectMonitorIndicatorConfig(UpdateProjectMonitorIndicatorConfigDTO updateProjectMonitorIndicatorConfigDTO) {
-        ProjectMonitorIndicatorConfig projectMonitorIndicatorConfig = getById(updateProjectMonitorIndicatorConfigDTO.getId());
-        projectMonitorIndicatorConfig = ConvertProjectMonitorIndicatorConfigTool.INSTANCE.convertUpdateDto2Entity(projectMonitorIndicatorConfig, updateProjectMonitorIndicatorConfigDTO);
+    public String updateProjectMonitorIndicatorConfig(UpdateProjectMonitorIndicatorConfigDTO updateProjectMonitorIndicatorConfigDTO) {
+        ProjectMonitorIndicatorConfig projectMonitorIndicatorConfig =
+                getConfigByObjAndIndicator(
+                        updateProjectMonitorIndicatorConfigDTO.getObjId(),
+                        updateProjectMonitorIndicatorConfigDTO.getMonitorIndicatorId());
+        projectMonitorIndicatorConfig.setCaculateMethodId(updateProjectMonitorIndicatorConfigDTO.getCalculateMethodId());
         projectMonitorIndicatorConfig.setModifier(AppContext.getContext().getAccountId());
         updateById(projectMonitorIndicatorConfig);
+        return projectMonitorIndicatorConfig.getId();
     }
-    
+
     /**
      * 校验项目监测指标配置是否可删除
      *
@@ -105,13 +132,14 @@ public class ProjectMonitorIndicatorConfigServiceImpl extends ServiceImpl<Projec
 
         return projectMonitorIndicatorConfig;
     }
-    
+
     /**
-    * 删除项目监测指标配置
-    * @param id 主键
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:56
-    */
+     * 删除项目监测指标配置
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:56
+     */
     @Override
     public void deleteProjectMonitorIndicatorConfig(String id) {
         // 校验是否可删除
@@ -120,92 +148,147 @@ public class ProjectMonitorIndicatorConfigServiceImpl extends ServiceImpl<Projec
         projectMonitorIndicatorConfig.setValid(ValidEnum.FALSE.getType());
         updateById(projectMonitorIndicatorConfig);
     }
-    
+
     /**
-    * 查询项目监测指标配置
-    * @return List<ProjectMonitorIndicatorConfig>
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:56
-    */
+     * 查询项目监测指标配置
+     *
+     * @return List<ProjectMonitorIndicatorConfig>
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:56
+     */
     @Override
-    public List<ProjectMonitorIndicatorConfig> queryProjectMonitorIndicatorConfigList(QueryProjectMonitorIndicatorConfigDTO queryProjectMonitorIndicatorConfigDTO) {
+    public List<ProjectMonitorIndicatorConfig> queryProjectMonitorIndicatorConfigList(
+            QueryProjectMonitorIndicatorConfigDTO queryProjectMonitorIndicatorConfigDTO) {
         QueryWrapper<ProjectMonitorIndicatorConfig> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(ProjectMonitorIndicatorConfig.PROP_VALID, ValidEnum.TRUE.getType());
         // 默认按创建时间倒序排序
         queryWrapper.orderBy(true, false, ProjectMonitorIndicatorConfig.PROP_CREATIONTIME);
-        
+
         if (queryProjectMonitorIndicatorConfigDTO != null) {
-                                
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryProjectMonitorIndicatorConfigDTO.getObjId())) {
                 queryWrapper.like(ProjectMonitorIndicatorConfig.PROP_OBJ_ID, queryProjectMonitorIndicatorConfigDTO.getObjId());
             }
-                                        
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryProjectMonitorIndicatorConfigDTO.getMonitorIndicatorId())) {
                 queryWrapper.like(ProjectMonitorIndicatorConfig.PROP_MONITOR_INDICATOR_ID, queryProjectMonitorIndicatorConfigDTO.getMonitorIndicatorId());
             }
-                                        
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryProjectMonitorIndicatorConfigDTO.getCaculateMethodId())) {
                 queryWrapper.like(ProjectMonitorIndicatorConfig.PROP_CACULATE_METHOD_ID, queryProjectMonitorIndicatorConfigDTO.getCaculateMethodId());
             }
-                                        
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryProjectMonitorIndicatorConfigDTO.getProjectId())) {
                 queryWrapper.like(ProjectMonitorIndicatorConfig.PROP_PROJECT_ID, queryProjectMonitorIndicatorConfigDTO.getProjectId());
             }
-                                            
+
         }
-        
+
         return list(queryWrapper);
     }
-    
+
     /**
-    * 分页查询项目监测指标配置
-    * @return IPage<ProjectMonitorIndicatorConfig>
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:56
-    */
+     * 分页查询项目监测指标配置
+     *
+     * @return IPage<ProjectMonitorIndicatorConfig>
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:56
+     */
     @Override
-    public IPage<ProjectMonitorIndicatorConfig> pageQueryProjectMonitorIndicatorConfig(PageQueryProjectMonitorIndicatorConfigDTO pageQueryProjectMonitorIndicatorConfigDTO) {
-        QueryWrapper<ProjectMonitorIndicatorConfig> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq(ProjectMonitorIndicatorConfig.PROP_VALID, ValidEnum.TRUE.getType());
-        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
-        IPage<ProjectMonitorIndicatorConfig> pageParam = new Page<>(pageQueryProjectMonitorIndicatorConfigDTO.getPage(), pageQueryProjectMonitorIndicatorConfigDTO.getSize(),true);
-        // 排序信息
-        if(CollectionUtils.isEmpty(pageQueryProjectMonitorIndicatorConfigDTO.getOrders())){
-            // 默认按创建时间倒序排序
-            queryWrapper.orderBy(true, false, ProjectMonitorIndicatorConfig.PROP_CREATIONTIME);
-        }else {
-            List<Sort> orders = pageQueryProjectMonitorIndicatorConfigDTO.getOrders();
-            for(Sort sort: orders) {
-                // 将驼峰转换为下划线格式
-                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE,sort.getColumn()));
-                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
-            }
+    public IPage<ProjectMonitorIndicatorConfig> pageQueryProjectMonitorIndicatorConfig(
+            PageQueryProjectMonitorIndicatorConfigDTO pageQueryProjectMonitorIndicatorConfigDTO) {
+        // TODO: 2021/9/17
+        // 获取分组下的监测指标,查询条件:设备类+监测指标id列表
+        List<MonitorIndicator> monitorIndicators =  queryGroupIndicators(
+                pageQueryProjectMonitorIndicatorConfigDTO.getClassCode(),
+                pageQueryProjectMonitorIndicatorConfigDTO.getMonitorIndicatorId());
+        // 查询分组下的设备, 查询条件:分组id+项目id+设备名称(模糊)
+        String groupId = pageQueryProjectMonitorIndicatorConfigDTO.getGroupId();
+        if (StringUtils.isBlank(groupId)) {
+            throw new IllegalArgumentException("分组id不能为空");
         }
-                
-        // todo 需判断使用like还是eq
-        if (StringUtils.isNotEmpty(pageQueryProjectMonitorIndicatorConfigDTO.getObjId())) {
-            queryWrapper.like(ProjectMonitorIndicatorConfig.PROP_OBJ_ID, pageQueryProjectMonitorIndicatorConfigDTO.getObjId());
+        String projectId = PoemsContext.getContext().getProjectId();
+        GroupManagementDTO groupManagementDTO = new GroupManagementDTO();
+        groupManagementService.equipsQuery(managementDTO);
+        return null;
+    }
+
+    /**
+     * 获取分组下的监测指标
+     *
+     * @param classCode 分组设备编码
+     * @param indicatorIds 监测指标id列表
+     * @return 分组下的监测指标
+     * @author lixing
+     * @version V1.0 2021/9/17 7:49 下午
+     */
+    private List<MonitorIndicator> queryGroupIndicators(String classCode, List<String> indicatorIds) {
+        QueryMonitorIndicatorDTO queryMonitorIndicatorDTO = new QueryMonitorIndicatorDTO();
+        queryMonitorIndicatorDTO.setClassCode(classCode);
+        queryMonitorIndicatorDTO.setIds(indicatorIds);
+        return monitorIndicatorService.queryMonitorIndicatorList(queryMonitorIndicatorDTO);
+    }
+
+    @Override
+    public ProjectMonitorIndicatorConfig getConfigByObjAndIndicator(String objId, String monitorIndicatorId) {
+        String projectId = PoemsContext.getContext().getProjectId();
+        if (StringUtils.isBlank(objId) || StringUtils.isBlank(monitorIndicatorId)
+                || StringUtils.isBlank(projectId)) {
+            throw new IllegalArgumentException("" +
+                    "ProjectMonitorIndicatorConfigServiceImpl.getConfigByObjAndIndicator:监测对象id、监测指标id、项目id不能为空");
         }
-                            
-        // todo 需判断使用like还是eq
-        if (StringUtils.isNotEmpty(pageQueryProjectMonitorIndicatorConfigDTO.getMonitorIndicatorId())) {
-            queryWrapper.like(ProjectMonitorIndicatorConfig.PROP_MONITOR_INDICATOR_ID, pageQueryProjectMonitorIndicatorConfigDTO.getMonitorIndicatorId());
+
+
+        // 根据监测对象id和监测指标id,获取设备监测指标的配置信息
+        QueryProjectMonitorIndicatorConfigDTO queryProjectMonitorIndicatorConfigDTO =
+                new QueryProjectMonitorIndicatorConfigDTO();
+        queryProjectMonitorIndicatorConfigDTO.setObjId(objId);
+        queryProjectMonitorIndicatorConfigDTO.setMonitorIndicatorId(monitorIndicatorId);
+
+        queryProjectMonitorIndicatorConfigDTO.setProjectId(projectId);
+        List<ProjectMonitorIndicatorConfig> projectMonitorIndicatorConfigs =
+                queryProjectMonitorIndicatorConfigList(queryProjectMonitorIndicatorConfigDTO);
+
+        if (!CollectionUtils.isEmpty(projectMonitorIndicatorConfigs)) {
+            return projectMonitorIndicatorConfigs.get(0);
         }
-                            
-        // todo 需判断使用like还是eq
-        if (StringUtils.isNotEmpty(pageQueryProjectMonitorIndicatorConfigDTO.getCaculateMethodId())) {
-            queryWrapper.like(ProjectMonitorIndicatorConfig.PROP_CACULATE_METHOD_ID, pageQueryProjectMonitorIndicatorConfigDTO.getCaculateMethodId());
+
+        // 如果配置表中未查询到配置信息,获取监测指标的默认计算方式并返回
+        return getDefaultConfig(objId, monitorIndicatorId, projectId);
+    }
+
+    /**
+     * 获取设备监测指标的默认取值
+     *
+     * @param objId 监测对象id
+     * @param monitorIndicatorId 监测指标id
+     * @param projectId 项目id
+     * @return 设备监测指标的默认取值
+     * @author lixing
+     * @version V1.0 2021/9/17 2:57 下午
+     */
+    private ProjectMonitorIndicatorConfig getDefaultConfig(String objId, String monitorIndicatorId, String projectId) {
+        if (StringUtils.isBlank(objId) || StringUtils.isBlank(monitorIndicatorId) ||
+                StringUtils.isBlank(projectId)) {
+            throw new IllegalArgumentException("" +
+                    "ProjectMonitorIndicatorConfigServiceImpl.getDefaultConfig:监测对象id、监测指标id、项目id不能为空");
         }
-                            
-        // todo 需判断使用like还是eq
-        if (StringUtils.isNotEmpty(pageQueryProjectMonitorIndicatorConfigDTO.getProjectId())) {
-            queryWrapper.like(ProjectMonitorIndicatorConfig.PROP_PROJECT_ID, pageQueryProjectMonitorIndicatorConfigDTO.getProjectId());
+
+        // 获取监测指标的默认计算方式
+        QueryCalculateMethodDTO queryCalculateMethodDTO = new QueryCalculateMethodDTO();
+        queryCalculateMethodDTO.setMonitorIndicatorId(monitorIndicatorId);
+        queryCalculateMethodDTO.setIsDefault(BoolEnum.TRUE.getType());
+        List<CalculateMethod> calculateMethods = calculateMethodService.queryCalculateMethodList(queryCalculateMethodDTO);
+        String calculateMethodId = null;
+        if (!CollectionUtils.isEmpty(calculateMethods)) {
+            calculateMethodId = calculateMethods.get(0).getId();
         }
-                                    
-        return getBaseMapper().selectPage(pageParam, queryWrapper);
+
+        return new ProjectMonitorIndicatorConfig(
+                objId, monitorIndicatorId, calculateMethodId, projectId);
     }
 }

+ 2 - 0
src/main/resources/mapper/MonitorIndicatorMapper.xml

@@ -5,6 +5,8 @@
 		<result column="id" property="id" />
 		<result column="name" property="name" />
 		<result column="class_code" property="classCode" />
+		<result column="unit" property="unit" />
+		<result column="dic" property="dic" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
 		<result column="ts" property="ts" />
 		<result column="creator" property="creator" />
 		<result column="creation_time" property="creationTime" />