浏览代码

修改接口参数

lixing 3 年之前
父节点
当前提交
c6b22bf972
共有 100 个文件被更改,包括 4293 次插入292 次删除
  1. 12 0
      pom.xml
  2. 11 0
      src/main/java/com/persagy/apm/energy/report/common/FeignClientNameConstants.java
  3. 50 0
      src/main/java/com/persagy/apm/energy/report/common/FeignConfig.java
  4. 31 0
      src/main/java/com/persagy/apm/energy/report/common/PoemsWebConfigurer.java
  5. 16 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/dao/ItemGroupMapper.java
  6. 74 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/ConvertItemGroupTool.java
  7. 34 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/ItemGroup.java
  8. 27 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/AddItemGroupDTO.java
  9. 20 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/DeleteItemGroupDTO.java
  10. 29 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/PageQueryItemGroupDTO.java
  11. 22 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/QueryItemGroupDTO.java
  12. 20 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/QueryItemGroupDetailDTO.java
  13. 31 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/UpdateItemGroupDTO.java
  14. 27 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/vo/ResponseItemGroupItemVO.java
  15. 40 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/vo/ResponseItemGroupListItemVO.java
  16. 77 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/service/IItemGroupService.java
  17. 199 0
      src/main/java/com/persagy/apm/energy/report/config/itemgroup/service/impl/ItemGroupServiceImpl.java
  18. 16 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/dao/ReportDetailModelRelMapper.java
  19. 74 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/ConvertReportDetailModelRelTool.java
  20. 46 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/ReportDetailModelRel.java
  21. 37 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/AddReportDetailModelRelDTO.java
  22. 20 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/DeleteReportDetailModelRelDTO.java
  23. 38 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/PageQueryReportDetailModelRelDTO.java
  24. 31 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/QueryReportDetailModelRelDTO.java
  25. 20 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/QueryReportDetailModelRelDetailDTO.java
  26. 43 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/UpdateReportDetailModelRelDTO.java
  27. 36 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/vo/ResponseReportDetailModelRelItemVO.java
  28. 49 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/vo/ResponseReportDetailModelRelListItemVO.java
  29. 77 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/service/IReportDetailModelRelService.java
  30. 229 0
      src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/service/impl/ReportDetailModelRelServiceImpl.java
  31. 16 0
      src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/dao/ModelItemRelMapper.java
  32. 38 0
      src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/ModelItemRel.java
  33. 31 0
      src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/AddModelItemRelDTO.java
  34. 20 0
      src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/DeleteModelItemRelDTO.java
  35. 32 0
      src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/PageQueryModelItemRelDTO.java
  36. 25 0
      src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/QueryModelItemRelDTO.java
  37. 20 0
      src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/QueryModelItemRelDetailDTO.java
  38. 35 0
      src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/UpdateModelItemRelDTO.java
  39. 77 0
      src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/service/IModelItemRelService.java
  40. 209 0
      src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/service/impl/ModelItemRelServiceImpl.java
  41. 16 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/dao/ReportTypeModelRelMapper.java
  42. 74 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/ConvertReportTypeModelRelTool.java
  43. 50 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/ReportTypeModelRel.java
  44. 43 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/AddReportTypeModelRelDTO.java
  45. 20 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/DeleteReportTypeModelRelDTO.java
  46. 41 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/PageQueryReportTypeModelRelDTO.java
  47. 34 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/QueryReportTypeModelRelDTO.java
  48. 20 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/QueryReportTypeModelRelDetailDTO.java
  49. 47 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/UpdateReportTypeModelRelDTO.java
  50. 52 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/vo/ResponseReportTypeModelRelItemVO.java
  51. 52 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/vo/ResponseReportTypeModelRelListItemVO.java
  52. 77 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/service/IReportTypeModelRelService.java
  53. 240 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/service/impl/ReportTypeModelRelServiceImpl.java
  54. 16 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/dao/ReportTypeProjectTypeRelMapper.java
  55. 74 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/ConvertReportTypeProjectTypeRelTool.java
  56. 34 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/ReportTypeProjectTypeRel.java
  57. 27 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/AddReportTypeProjectTypeRelDTO.java
  58. 20 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/DeleteReportTypeProjectTypeRelDTO.java
  59. 29 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/PageQueryReportTypeProjectTypeRelDTO.java
  60. 22 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/QueryReportTypeProjectTypeRelDTO.java
  61. 20 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/QueryReportTypeProjectTypeRelDetailDTO.java
  62. 31 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/UpdateReportTypeProjectTypeRelDTO.java
  63. 40 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/vo/ResponseReportTypeProjectTypeRelItemVO.java
  64. 40 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/vo/ResponseReportTypeProjectTypeRelListItemVO.java
  65. 77 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/service/IReportTypeProjectTypeRelService.java
  66. 199 0
      src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/service/impl/ReportTypeProjectTypeRelServiceImpl.java
  67. 32 0
      src/main/java/com/persagy/apm/energy/report/config/type/constant/enums/BusinessTypeEnum.java
  68. 16 0
      src/main/java/com/persagy/apm/energy/report/config/type/dao/ReportTypeMapper.java
  69. 74 0
      src/main/java/com/persagy/apm/energy/report/config/type/model/ConvertReportTypeTool.java
  70. 38 0
      src/main/java/com/persagy/apm/energy/report/config/type/model/ReportType.java
  71. 31 0
      src/main/java/com/persagy/apm/energy/report/config/type/model/dto/AddReportTypeDTO.java
  72. 20 0
      src/main/java/com/persagy/apm/energy/report/config/type/model/dto/DeleteReportTypeDTO.java
  73. 32 0
      src/main/java/com/persagy/apm/energy/report/config/type/model/dto/PageQueryReportTypeDTO.java
  74. 25 0
      src/main/java/com/persagy/apm/energy/report/config/type/model/dto/QueryReportTypeDTO.java
  75. 20 0
      src/main/java/com/persagy/apm/energy/report/config/type/model/dto/QueryReportTypeDetailDTO.java
  76. 35 0
      src/main/java/com/persagy/apm/energy/report/config/type/model/dto/UpdateReportTypeDTO.java
  77. 30 0
      src/main/java/com/persagy/apm/energy/report/config/type/model/vo/ResponseReportTypeItemVO.java
  78. 30 0
      src/main/java/com/persagy/apm/energy/report/config/type/model/vo/ResponseReportTypeListItemVO.java
  79. 87 0
      src/main/java/com/persagy/apm/energy/report/config/type/service/IReportTypeService.java
  80. 212 0
      src/main/java/com/persagy/apm/energy/report/config/type/service/impl/ReportTypeServiceImpl.java
  81. 2 4
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/controller/ReportBusinessDetailController.java
  82. 4 44
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/CompareCost.java
  83. 4 45
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/ComparePower.java
  84. 4 44
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/OpenCost.java
  85. 4 45
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/OpenPower.java
  86. 22 6
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/Platform.java
  87. 4 4
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/ReportBusinessDetail.java
  88. 15 28
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/dto/AddReportBusinessDetailDTO.java
  89. 4 1
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/dto/QueryReportBusinessDetailDetailDTO.java
  90. 18 41
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/dto/UpdateReportBusinessDetailDTO.java
  91. 47 0
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/CostItemVO.java
  92. 22 0
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/CostVO.java
  93. 22 0
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/GroupInfo.java
  94. 49 0
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/PowerItemVO.java
  95. 22 0
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/PowerVO.java
  96. 15 18
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/ResponseReportBusinessDetailItemVO.java
  97. 3 3
      src/main/java/com/persagy/apm/energy/report/monthly/detail/business/service/impl/ReportBusinessDetailServiceImpl.java
  98. 0 7
      src/main/java/com/persagy/apm/energy/report/monthly/outline/controller/ReportOutLineEnumController.java
  99. 16 2
      src/main/java/com/persagy/apm/energy/report/monthly/outline/controller/ReportOutlineController.java
  100. 0 0
      src/main/java/com/persagy/apm/energy/report/monthly/outline/model/ReportOutline.java

+ 12 - 0
pom.xml

@@ -46,6 +46,12 @@
         <dependency>
             <groupId>com.persagy</groupId>
             <artifactId>apm-common</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.persagy</groupId>
+                    <artifactId>integrated-redis-spring-boot-starter</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <!-- lang -->
         <dependency>
@@ -64,6 +70,12 @@
             <artifactId>integrated-config-client</artifactId>
         </dependency>
 
+        <!-- 日志 -->
+        <dependency>
+            <groupId>com.persagy</groupId>
+            <artifactId>integrated-log-spring-boot-starter</artifactId>
+        </dependency>
+
         <!-- feign -->
         <dependency>
             <groupId>com.persagy</groupId>

+ 11 - 0
src/main/java/com/persagy/apm/energy/report/common/FeignClientNameConstants.java

@@ -0,0 +1,11 @@
+package com.persagy.apm.energy.report.common;
+
+/**
+ * feign client名称
+ *
+ * @author lixing
+ * @version V1.0 2021/5/19 2:23 下午
+ **/
+public class FeignClientNameConstants {
+    public static final String SAAS_WEB = "ems-saas-web";
+}

+ 50 - 0
src/main/java/com/persagy/apm/energy/report/common/FeignConfig.java

@@ -0,0 +1,50 @@
+package com.persagy.apm.energy.report.common;
+
+import com.persagy.apm.common.config.FeignExceptionHandler;
+import com.persagy.apm.common.config.PoemsFeignExceptionHandler;
+import feign.Logger;
+import feign.codec.Encoder;
+import feign.form.spring.SpringFormEncoder;
+import org.springframework.beans.factory.ObjectFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.cloud.openfeign.support.SpringEncoder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.context.annotation.Scope;
+
+import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE;
+
+/**
+ * feign配置类
+ *
+ * @author lixing
+ * @version V1.0 2021/3/29 8:11 下午
+ */
+@Configuration
+public class FeignConfig {
+
+
+    @Autowired
+    private ObjectFactory<HttpMessageConverters> messageConverters;
+
+
+    @Bean
+    @Primary
+    @Scope(SCOPE_PROTOTYPE)
+    Encoder feignFormEncoder() {
+        return new SpringFormEncoder(new SpringEncoder(this.messageConverters));
+    }
+
+
+    @Bean
+    Logger.Level feignLevel(){
+        return Logger.Level.FULL;
+    }
+
+    @Bean
+    public PoemsFeignExceptionHandler initFeignExceptionHandler() {
+        return new PoemsFeignExceptionHandler();
+    }
+}

+ 31 - 0
src/main/java/com/persagy/apm/energy/report/common/PoemsWebConfigurer.java

@@ -0,0 +1,31 @@
+package com.persagy.apm.energy.report.common;
+
+import com.persagy.apm.common.handler.PoemsContextHandler;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * web拦截器配置
+ *
+ * @author lixing
+ * @version V1.0 2021/5/19 7:42 下午
+ */
+@Configuration
+@Order(1)
+public class PoemsWebConfigurer implements WebMvcConfigurer {
+
+    @Bean
+    public PoemsContextHandler poemsContextHandler() {
+        return new PoemsContextHandler();
+    }
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        // 设置拦截的路径、不拦截的路径、优先级等等
+        registry.addInterceptor(poemsContextHandler()).order(10).addPathPatterns("/**");
+    }
+
+}

+ 16 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/dao/ItemGroupMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.energy.report.config.itemgroup.dao;
+
+import com.persagy.apm.energy.report.config.itemgroup.model.ItemGroup;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 分项分组(ItemGroup)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:46
+ */
+@Mapper
+public interface ItemGroupMapper extends BaseMapper<ItemGroup> {
+
+}

+ 74 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/ConvertItemGroupTool.java

@@ -0,0 +1,74 @@
+package com.persagy.apm.energy.report.config.itemgroup.model;
+
+import org.mapstruct.*;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.factory.Mappers;
+import com.persagy.apm.energy.report.config.itemgroup.model.vo.*;
+import com.persagy.apm.energy.report.config.itemgroup.model.dto.*;
+
+import java.util.List;
+
+/**
+ * 分项分组(ItemGroup) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:49 2021-05-19 11:17:49
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertItemGroupTool {
+
+    ConvertItemGroupTool INSTANCE = Mappers.getMapper(ConvertItemGroupTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param itemGroup do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:49
+     */
+    ResponseItemGroupItemVO convert2ResponseItemDTO(ItemGroup itemGroup);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param itemGroup do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:49
+     */
+    ResponseItemGroupListItemVO convert2ResponseListItemDTO(ItemGroup itemGroup);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param itemGroupList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:49
+     */
+    List<ResponseItemGroupListItemVO> convert2List(List<ItemGroup> itemGroupList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addItemGroupDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:49
+     */
+    ItemGroup convertAddDto2Entity(AddItemGroupDTO addItemGroupDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param itemGroup          更新前的do对象
+     * @param updateItemGroupDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:49
+     */
+    ItemGroup convertUpdateDto2Entity(@MappingTarget ItemGroup itemGroup, UpdateItemGroupDTO updateItemGroupDTO);
+}
+

+ 34 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/ItemGroup.java

@@ -0,0 +1,34 @@
+package com.persagy.apm.energy.report.config.itemgroup.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.persagy.apm.common.model.entity.AuditableEntity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 分项分组(ItemGroup)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:47
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "分项分组")
+public class ItemGroup extends AuditableEntity<ItemGroup> implements Serializable {
+    private static final long serialVersionUID = -43918210159682367L;
+
+    @ApiModelProperty("分项分组名称")
+    private String name;
+
+    @ApiModelProperty("包含的分项编码")
+    private String items;
+
+
+    public static String PROP_NAME = "name";
+    public static String PROP_ITEMS = "items";
+
+}

+ 27 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/AddItemGroupDTO.java

@@ -0,0 +1,27 @@
+package com.persagy.apm.energy.report.config.itemgroup.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:47
+ */
+@Data
+@ApiModel(value = "创建分项分组入参")
+public class AddItemGroupDTO {
+    @ApiModelProperty(value = "分项分组名称", required = true)
+    @NotNull(message = "分项分组名称不能为空") // todo 更新校验规则
+    private String name;
+
+    @ApiModelProperty(value = "包含的分项编码", required = true)
+    @NotNull(message = "包含的分项编码不能为空") // todo 更新校验规则
+    private String items;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/DeleteItemGroupDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.itemgroup.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:48
+ */
+@Data
+@ApiModel(value = "删除分项分组入参")
+public class DeleteItemGroupDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 29 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/PageQueryItemGroupDTO.java

@@ -0,0 +1,29 @@
+package com.persagy.apm.energy.report.config.itemgroup.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+import com.persagy.apm.common.model.dto.PageDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:48
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询分项分组入参")
+public class PageQueryItemGroupDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "分项分组名称", required = true)
+    private String name;
+
+    @ApiModelProperty(value = "包含的分项编码", required = true)
+    private String items;
+
+}

+ 22 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/QueryItemGroupDTO.java

@@ -0,0 +1,22 @@
+package com.persagy.apm.energy.report.config.itemgroup.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:48
+ */
+@Data
+@ApiModel(value = "查询分项分组入参")
+public class QueryItemGroupDTO {
+    @ApiModelProperty(value = "分项分组名称", required = true)
+    private String name;
+
+    @ApiModelProperty(value = "包含的分项编码", required = true)
+    private String items;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/QueryItemGroupDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.itemgroup.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:47
+ */
+@Data
+@ApiModel(value = "获取分项分组详情入参")
+public class QueryItemGroupDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 31 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/dto/UpdateItemGroupDTO.java

@@ -0,0 +1,31 @@
+package com.persagy.apm.energy.report.config.itemgroup.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:48
+ */
+@Data
+@ApiModel(value = "更新分项分组入参")
+public class UpdateItemGroupDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") // todo 更新校验规则
+    private String id;
+
+    @ApiModelProperty(value = "分项分组名称", required = true)
+    @NotNull(message = "分项分组名称不能为空") // todo 更新校验规则
+    private String name;
+
+    @ApiModelProperty(value = "包含的分项编码", required = true)
+    @NotNull(message = "包含的分项编码不能为空") // todo 更新校验规则
+    private String items;
+
+}

+ 27 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/vo/ResponseItemGroupItemVO.java

@@ -0,0 +1,27 @@
+package com.persagy.apm.energy.report.config.itemgroup.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:49
+ */
+@Data
+@ApiModel(value = "分项分组返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseItemGroupItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("分项分组名称")
+    private String name;
+
+    @ApiModelProperty("包含的分项编码")
+    private String items;
+}

+ 40 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/model/vo/ResponseItemGroupListItemVO.java

@@ -0,0 +1,40 @@
+package com.persagy.apm.energy.report.config.itemgroup.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:49
+ */
+@Data
+@ApiModel(value = "分项分组列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseItemGroupListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("分项分组名称")
+    private String name;
+
+    @ApiModelProperty("包含的分项编码")
+    private String items;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 77 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/service/IItemGroupService.java

@@ -0,0 +1,77 @@
+package com.persagy.apm.energy.report.config.itemgroup.service;
+
+import com.persagy.apm.energy.report.config.itemgroup.model.*;
+import com.persagy.apm.energy.report.config.itemgroup.model.dto.*;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 分项分组(ItemGroup) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:45
+ */
+public interface IItemGroupService {
+
+    /**
+     * 创建分项分组
+     *
+     * @param addItemGroupDTO addDTO
+     * @return 分项分组主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:45
+     */
+    String createItemGroup(AddItemGroupDTO addItemGroupDTO);
+
+    /**
+     * 分项分组详情
+     *
+     * @param id 主键
+     * @return 分项分组do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:45
+     */
+    ItemGroup queryItemGroupDetail(String id);
+
+    /**
+     * 更新分项分组
+     *
+     * @param updateItemGroupDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:45
+     */
+    void updateItemGroup(UpdateItemGroupDTO updateItemGroupDTO);
+
+    /**
+     * 删除分项分组
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:45
+     */
+    void deleteItemGroup(String id);
+
+    /**
+     * 查询分项分组
+     *
+     * @param queryItemGroupDTO queryDTO
+     * @return List<ItemGroup>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:45
+     */
+    List<ItemGroup> queryItemGroupList(QueryItemGroupDTO queryItemGroupDTO);
+
+    /**
+     * 分页查询分项分组
+     *
+     * @param pageQueryItemGroupDTO pageQueryDTO
+     * @return IPage<ItemGroup>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:45
+     */
+    IPage<ItemGroup> pageQueryItemGroup(PageQueryItemGroupDTO pageQueryItemGroupDTO);
+}

+ 199 - 0
src/main/java/com/persagy/apm/energy/report/config/itemgroup/service/impl/ItemGroupServiceImpl.java

@@ -0,0 +1,199 @@
+package com.persagy.apm.energy.report.config.itemgroup.service.impl;
+
+import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.energy.report.config.itemgroup.dao.ItemGroupMapper;
+import com.persagy.apm.energy.report.config.itemgroup.service.IItemGroupService;
+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.ValidEnum;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.persagy.apm.energy.report.config.itemgroup.model.*;
+import com.persagy.apm.energy.report.config.itemgroup.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 org.springframework.util.CollectionUtils;
+
+/**
+ * 分项分组(ItemGroup) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:46
+ */
+@Service
+public class ItemGroupServiceImpl extends ServiceImpl<ItemGroupMapper, ItemGroup>
+        implements IItemGroupService {
+
+    /**
+     * 创建分项分组
+     *
+     * @return 分项分组主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:46
+     */
+    @Override
+    public String createItemGroup(AddItemGroupDTO addItemGroupDTO) {
+        ItemGroup itemGroup = ConvertItemGroupTool.INSTANCE.convertAddDto2Entity(addItemGroupDTO);
+        // 设置默认值
+        setDefaultValue(itemGroup);
+        save(itemGroup);
+        return itemGroup.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param itemGroup 分项分组实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(ItemGroup itemGroup) {
+        itemGroup.setCreator(PoemsContext.getContext().getUserId());
+        // todo 其他默认的属性
+
+    }
+
+    /**
+     * 分项分组详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:46
+     */
+    @Override
+    public ItemGroup queryItemGroupDetail(String id) {
+        ItemGroup itemGroup = getById(id);
+        if (itemGroup == null) {
+            throw new IllegalArgumentException("查看ItemGroup详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return itemGroup;
+    }
+
+    /**
+     * 更新分项分组
+     *
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:46
+     */
+    @Override
+    public void updateItemGroup(UpdateItemGroupDTO updateItemGroupDTO) {
+        ItemGroup itemGroup = getById(updateItemGroupDTO.getId());
+        itemGroup = ConvertItemGroupTool.INSTANCE.convertUpdateDto2Entity(itemGroup, updateItemGroupDTO);
+        itemGroup.setModifier(PoemsContext.getContext().getUserId());
+        updateById(itemGroup);
+    }
+
+    /**
+     * 校验分项分组是否可删除
+     *
+     * @param id 分项分组主键
+     * @return 分项分组do类
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:46
+     */
+    public ItemGroup checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除ItemGroup时发生异常,主键为空");
+        }
+
+        ItemGroup itemGroup = getById(id);
+
+        if (itemGroup == null) {
+            throw new IllegalArgumentException("删除ItemGroup时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return itemGroup;
+    }
+
+    /**
+     * 删除分项分组
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:46
+     */
+    @Override
+    public void deleteItemGroup(String id) {
+        // 校验是否可删除
+        ItemGroup itemGroup = checkDeletable(id);
+
+        itemGroup.setValid(ValidEnum.FALSE.getType());
+        updateById(itemGroup);
+    }
+
+    /**
+     * 查询分项分组
+     *
+     * @return List<ItemGroup>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:46
+     */
+    @Override
+    public List<ItemGroup> queryItemGroupList(QueryItemGroupDTO queryItemGroupDTO) {
+        QueryWrapper<ItemGroup> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ItemGroup.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, ItemGroup.PROP_CREATIONTIME);
+
+        if (queryItemGroupDTO != null) {
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryItemGroupDTO.getName())) {
+                queryWrapper.like(ItemGroup.PROP_NAME, queryItemGroupDTO.getName());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryItemGroupDTO.getItems())) {
+                queryWrapper.like(ItemGroup.PROP_ITEMS, queryItemGroupDTO.getItems());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询分项分组
+     *
+     * @return IPage<ItemGroup>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:17:46
+     */
+    @Override
+    public IPage<ItemGroup> pageQueryItemGroup(PageQueryItemGroupDTO pageQueryItemGroupDTO) {
+        QueryWrapper<ItemGroup> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ItemGroup.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<ItemGroup> pageParam = new Page<>(pageQueryItemGroupDTO.getPage(), pageQueryItemGroupDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryItemGroupDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, ItemGroup.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryItemGroupDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryItemGroupDTO.getName())) {
+            queryWrapper.like(ItemGroup.PROP_NAME, pageQueryItemGroupDTO.getName());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryItemGroupDTO.getItems())) {
+            queryWrapper.like(ItemGroup.PROP_ITEMS, pageQueryItemGroupDTO.getItems());
+        }
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+}

+ 16 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/dao/ReportDetailModelRelMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.dao;
+
+import com.persagy.apm.energy.report.config.rel.detailmodel.model.ReportDetailModelRel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 报告模型关联关系(ReportDetailModelRel)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:10
+ */
+@Mapper
+public interface ReportDetailModelRelMapper extends BaseMapper<ReportDetailModelRel> {
+
+}

+ 74 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/ConvertReportDetailModelRelTool.java

@@ -0,0 +1,74 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.model;
+
+import org.mapstruct.*;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.factory.Mappers;
+import com.persagy.apm.energy.report.config.rel.detailmodel.model.vo.*;
+import com.persagy.apm.energy.report.config.rel.detailmodel.model.dto.*;
+
+import java.util.List;
+
+/**
+ * 报告模型关联关系(ReportDetailModelRel) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:11 2021-05-19 11:19:11
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertReportDetailModelRelTool {
+
+    ConvertReportDetailModelRelTool INSTANCE = Mappers.getMapper(ConvertReportDetailModelRelTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param reportDetailModelRel do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:11
+     */
+    ResponseReportDetailModelRelItemVO convert2ResponseItemDTO(ReportDetailModelRel reportDetailModelRel);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param reportDetailModelRel do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:11
+     */
+    ResponseReportDetailModelRelListItemVO convert2ResponseListItemDTO(ReportDetailModelRel reportDetailModelRel);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param reportDetailModelRelList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:11
+     */
+    List<ResponseReportDetailModelRelListItemVO> convert2List(List<ReportDetailModelRel> reportDetailModelRelList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addReportDetailModelRelDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:11
+     */
+    ReportDetailModelRel convertAddDto2Entity(AddReportDetailModelRelDTO addReportDetailModelRelDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param reportDetailModelRel          更新前的do对象
+     * @param updateReportDetailModelRelDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:11
+     */
+    ReportDetailModelRel convertUpdateDto2Entity(@MappingTarget ReportDetailModelRel reportDetailModelRel, UpdateReportDetailModelRelDTO updateReportDetailModelRelDTO);
+}
+

+ 46 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/ReportDetailModelRel.java

@@ -0,0 +1,46 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.persagy.apm.common.model.entity.AuditableEntity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 报告模型关联关系(ReportDetailModelRel)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:10
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "报告模型关联关系")
+public class ReportDetailModelRel extends AuditableEntity<ReportDetailModelRel> implements Serializable {
+    private static final long serialVersionUID = -32859202038112682L;
+
+    @ApiModelProperty("报告详情主键")
+    private String reportDetailId;
+
+    @ApiModelProperty("模型编码")
+    private String modelCode;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("不合格原因")
+    private String unqualifiedReason;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+    public static String PROP_REPORT_DETAIL_ID = "report_detail_id";
+    public static String PROP_MODEL_CODE = "model_code";
+    public static String PROP_REPORT_TYPE_ID = "report_type_id";
+    public static String PROP_UNQUALIFIED_REASON = "unqualified_reason";
+    public static String PROP_REMARK = "remark";
+
+}

+ 37 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/AddReportDetailModelRelDTO.java

@@ -0,0 +1,37 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:10
+ */
+@Data
+@ApiModel(value = "创建报告模型关联关系入参")
+public class AddReportDetailModelRelDTO {
+    @ApiModelProperty(value = "报告详情主键", required = true)
+    @NotNull(message = "报告详情主键不能为空")
+    private String reportDetailId;
+
+    @ApiModelProperty(value = "模型编码", required = true)
+    @NotNull(message = "模型编码不能为空")
+    private String modelCode;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空")
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "不合格原因")
+    private String unqualifiedReason;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/DeleteReportDetailModelRelDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:11
+ */
+@Data
+@ApiModel(value = "删除报告模型关联关系入参")
+public class DeleteReportDetailModelRelDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 38 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/PageQueryReportDetailModelRelDTO.java

@@ -0,0 +1,38 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+import com.persagy.apm.common.model.dto.PageDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:11
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询报告模型关联关系入参")
+public class PageQueryReportDetailModelRelDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "报告详情主键", required = true)
+    private String reportDetailId;
+
+    @ApiModelProperty(value = "模型编码", required = true)
+    private String modelCode;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "不合格原因", required = true)
+    private String unqualifiedReason;
+
+    @ApiModelProperty(value = "备注", required = true)
+    private String remark;
+
+}

+ 31 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/QueryReportDetailModelRelDTO.java

@@ -0,0 +1,31 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:11
+ */
+@Data
+@ApiModel(value = "查询报告模型关联关系入参")
+public class QueryReportDetailModelRelDTO {
+    @ApiModelProperty(value = "报告详情主键", required = true)
+    private String reportDetailId;
+
+    @ApiModelProperty(value = "模型编码", required = true)
+    private String modelCode;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "不合格原因", required = true)
+    private String unqualifiedReason;
+
+    @ApiModelProperty(value = "备注", required = true)
+    private String remark;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/QueryReportDetailModelRelDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:11
+ */
+@Data
+@ApiModel(value = "获取报告模型关联关系详情入参")
+public class QueryReportDetailModelRelDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 43 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/dto/UpdateReportDetailModelRelDTO.java

@@ -0,0 +1,43 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:11
+ */
+@Data
+@ApiModel(value = "更新报告模型关联关系入参")
+public class UpdateReportDetailModelRelDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") // todo 更新校验规则
+    private String id;
+
+    @ApiModelProperty(value = "报告详情主键", required = true)
+    @NotNull(message = "报告详情主键不能为空") // todo 更新校验规则
+    private String reportDetailId;
+
+    @ApiModelProperty(value = "模型编码", required = true)
+    @NotNull(message = "模型编码不能为空") // todo 更新校验规则
+    private String modelCode;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") // todo 更新校验规则
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "不合格原因", required = true)
+    @NotNull(message = "不合格原因不能为空") // todo 更新校验规则
+    private String unqualifiedReason;
+
+    @ApiModelProperty(value = "备注", required = true)
+    @NotNull(message = "备注不能为空") // todo 更新校验规则
+    private String remark;
+
+}

+ 36 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/vo/ResponseReportDetailModelRelItemVO.java

@@ -0,0 +1,36 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:11
+ */
+@Data
+@ApiModel(value = "报告模型关联关系返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportDetailModelRelItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告详情主键")
+    private String reportDetailId;
+
+    @ApiModelProperty("模型编码")
+    private String modelCode;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("不合格原因")
+    private String unqualifiedReason;
+
+    @ApiModelProperty("备注")
+    private String remark;
+}

+ 49 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/model/vo/ResponseReportDetailModelRelListItemVO.java

@@ -0,0 +1,49 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:11
+ */
+@Data
+@ApiModel(value = "报告模型关联关系列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportDetailModelRelListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告详情主键")
+    private String reportDetailId;
+
+    @ApiModelProperty("模型编码")
+    private String modelCode;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("不合格原因")
+    private String unqualifiedReason;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 77 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/service/IReportDetailModelRelService.java

@@ -0,0 +1,77 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.service;
+
+import com.persagy.apm.energy.report.config.rel.detailmodel.model.*;
+import com.persagy.apm.energy.report.config.rel.detailmodel.model.dto.*;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 报告模型关联关系(ReportDetailModelRel) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:09
+ */
+public interface IReportDetailModelRelService {
+
+    /**
+     * 创建报告模型关联关系
+     *
+     * @param addReportDetailModelRelDTO addDTO
+     * @return 报告模型关联关系主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    String createReportDetailModelRel(AddReportDetailModelRelDTO addReportDetailModelRelDTO);
+
+    /**
+     * 报告模型关联关系详情
+     *
+     * @param id 主键
+     * @return 报告模型关联关系do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    ReportDetailModelRel queryReportDetailModelRelDetail(String id);
+
+    /**
+     * 更新报告模型关联关系
+     *
+     * @param updateReportDetailModelRelDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    void updateReportDetailModelRel(UpdateReportDetailModelRelDTO updateReportDetailModelRelDTO);
+
+    /**
+     * 删除报告模型关联关系
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    void deleteReportDetailModelRel(String id);
+
+    /**
+     * 查询报告模型关联关系
+     *
+     * @param queryReportDetailModelRelDTO queryDTO
+     * @return List<ReportDetailModelRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    List<ReportDetailModelRel> queryReportDetailModelRelList(QueryReportDetailModelRelDTO queryReportDetailModelRelDTO);
+
+    /**
+     * 分页查询报告模型关联关系
+     *
+     * @param pageQueryReportDetailModelRelDTO pageQueryDTO
+     * @return IPage<ReportDetailModelRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    IPage<ReportDetailModelRel> pageQueryReportDetailModelRel(PageQueryReportDetailModelRelDTO pageQueryReportDetailModelRelDTO);
+}

+ 229 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/detailmodel/service/impl/ReportDetailModelRelServiceImpl.java

@@ -0,0 +1,229 @@
+package com.persagy.apm.energy.report.config.rel.detailmodel.service.impl;
+
+import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.energy.report.config.rel.detailmodel.dao.ReportDetailModelRelMapper;
+import com.persagy.apm.energy.report.config.rel.detailmodel.service.IReportDetailModelRelService;
+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.ValidEnum;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.persagy.apm.energy.report.config.rel.detailmodel.model.*;
+import com.persagy.apm.energy.report.config.rel.detailmodel.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 org.springframework.util.CollectionUtils;
+
+/**
+ * 报告模型关联关系(ReportDetailModelRel) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:09
+ */
+@Service
+public class ReportDetailModelRelServiceImpl extends ServiceImpl<ReportDetailModelRelMapper, ReportDetailModelRel>
+        implements IReportDetailModelRelService {
+
+    /**
+     * 创建报告模型关联关系
+     *
+     * @return 报告模型关联关系主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    @Override
+    public String createReportDetailModelRel(AddReportDetailModelRelDTO addReportDetailModelRelDTO) {
+        ReportDetailModelRel reportDetailModelRel = ConvertReportDetailModelRelTool.INSTANCE.convertAddDto2Entity(addReportDetailModelRelDTO);
+        // 设置默认值
+        setDefaultValue(reportDetailModelRel);
+        save(reportDetailModelRel);
+        return reportDetailModelRel.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param reportDetailModelRel 报告模型关联关系实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(ReportDetailModelRel reportDetailModelRel) {
+        reportDetailModelRel.setCreator(PoemsContext.getContext().getUserId());
+        // todo 其他默认的属性
+
+    }
+
+    /**
+     * 报告模型关联关系详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    @Override
+    public ReportDetailModelRel queryReportDetailModelRelDetail(String id) {
+        ReportDetailModelRel reportDetailModelRel = getById(id);
+        if (reportDetailModelRel == null) {
+            throw new IllegalArgumentException("查看ReportDetailModelRel详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return reportDetailModelRel;
+    }
+
+    /**
+     * 更新报告模型关联关系
+     *
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    @Override
+    public void updateReportDetailModelRel(UpdateReportDetailModelRelDTO updateReportDetailModelRelDTO) {
+        ReportDetailModelRel reportDetailModelRel = getById(updateReportDetailModelRelDTO.getId());
+        reportDetailModelRel = ConvertReportDetailModelRelTool.INSTANCE.convertUpdateDto2Entity(reportDetailModelRel, updateReportDetailModelRelDTO);
+        reportDetailModelRel.setModifier(PoemsContext.getContext().getUserId());
+        updateById(reportDetailModelRel);
+    }
+
+    /**
+     * 校验报告模型关联关系是否可删除
+     *
+     * @param id 报告模型关联关系主键
+     * @return 报告模型关联关系do类
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    public ReportDetailModelRel checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除ReportDetailModelRel时发生异常,主键为空");
+        }
+
+        ReportDetailModelRel reportDetailModelRel = getById(id);
+
+        if (reportDetailModelRel == null) {
+            throw new IllegalArgumentException("删除ReportDetailModelRel时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return reportDetailModelRel;
+    }
+
+    /**
+     * 删除报告模型关联关系
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    @Override
+    public void deleteReportDetailModelRel(String id) {
+        // 校验是否可删除
+        ReportDetailModelRel reportDetailModelRel = checkDeletable(id);
+
+        reportDetailModelRel.setValid(ValidEnum.FALSE.getType());
+        updateById(reportDetailModelRel);
+    }
+
+    /**
+     * 查询报告模型关联关系
+     *
+     * @return List<ReportDetailModelRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    @Override
+    public List<ReportDetailModelRel> queryReportDetailModelRelList(QueryReportDetailModelRelDTO queryReportDetailModelRelDTO) {
+        QueryWrapper<ReportDetailModelRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportDetailModelRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, ReportDetailModelRel.PROP_CREATIONTIME);
+
+        if (queryReportDetailModelRelDTO != null) {
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportDetailModelRelDTO.getReportDetailId())) {
+                queryWrapper.like(ReportDetailModelRel.PROP_REPORT_DETAIL_ID, queryReportDetailModelRelDTO.getReportDetailId());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportDetailModelRelDTO.getModelCode())) {
+                queryWrapper.like(ReportDetailModelRel.PROP_MODEL_CODE, queryReportDetailModelRelDTO.getModelCode());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportDetailModelRelDTO.getReportTypeId())) {
+                queryWrapper.like(ReportDetailModelRel.PROP_REPORT_TYPE_ID, queryReportDetailModelRelDTO.getReportTypeId());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportDetailModelRelDTO.getUnqualifiedReason())) {
+                queryWrapper.like(ReportDetailModelRel.PROP_UNQUALIFIED_REASON, queryReportDetailModelRelDTO.getUnqualifiedReason());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportDetailModelRelDTO.getRemark())) {
+                queryWrapper.like(ReportDetailModelRel.PROP_REMARK, queryReportDetailModelRelDTO.getRemark());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询报告模型关联关系
+     *
+     * @return IPage<ReportDetailModelRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:09
+     */
+    @Override
+    public IPage<ReportDetailModelRel> pageQueryReportDetailModelRel(PageQueryReportDetailModelRelDTO pageQueryReportDetailModelRelDTO) {
+        QueryWrapper<ReportDetailModelRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportDetailModelRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<ReportDetailModelRel> pageParam = new Page<>(pageQueryReportDetailModelRelDTO.getPage(), pageQueryReportDetailModelRelDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryReportDetailModelRelDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, ReportDetailModelRel.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryReportDetailModelRelDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportDetailModelRelDTO.getReportDetailId())) {
+            queryWrapper.like(ReportDetailModelRel.PROP_REPORT_DETAIL_ID, pageQueryReportDetailModelRelDTO.getReportDetailId());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportDetailModelRelDTO.getModelCode())) {
+            queryWrapper.like(ReportDetailModelRel.PROP_MODEL_CODE, pageQueryReportDetailModelRelDTO.getModelCode());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportDetailModelRelDTO.getReportTypeId())) {
+            queryWrapper.like(ReportDetailModelRel.PROP_REPORT_TYPE_ID, pageQueryReportDetailModelRelDTO.getReportTypeId());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportDetailModelRelDTO.getUnqualifiedReason())) {
+            queryWrapper.like(ReportDetailModelRel.PROP_UNQUALIFIED_REASON, pageQueryReportDetailModelRelDTO.getUnqualifiedReason());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportDetailModelRelDTO.getRemark())) {
+            queryWrapper.like(ReportDetailModelRel.PROP_REMARK, pageQueryReportDetailModelRelDTO.getRemark());
+        }
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+}

+ 16 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/dao/ModelItemRelMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.energy.report.config.rel.modelitem.dao;
+
+import com.persagy.apm.energy.report.config.rel.modelitem.model.ModelItemRel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 能耗模型与分项关联关系(ModelItemRel)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:16:52
+ */
+@Mapper
+public interface ModelItemRelMapper extends BaseMapper<ModelItemRel> {
+
+}

+ 38 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/ModelItemRel.java

@@ -0,0 +1,38 @@
+package com.persagy.apm.energy.report.config.rel.modelitem.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.persagy.apm.common.model.entity.AuditableEntity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 能耗模型与分项关联关系(ModelItemRel)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:16:54
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "能耗模型与分项关联关系")
+public class ModelItemRel extends AuditableEntity<ModelItemRel> implements Serializable {
+    private static final long serialVersionUID = -72765023965462621L;
+
+    @ApiModelProperty("能耗模型编码")
+    private String modelCode;
+
+    @ApiModelProperty("分项分组id")
+    private String itemGroupId;
+
+    @ApiModelProperty("分项编码")
+    private String itemCode;
+
+
+    public static String PROP_MODEL_CODE = "model_code";
+    public static String PROP_ITEM_GROUP_ID = "item_group_id";
+    public static String PROP_ITEM_CODE = "item_code";
+
+}

+ 31 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/AddModelItemRelDTO.java

@@ -0,0 +1,31 @@
+package com.persagy.apm.energy.report.config.rel.modelitem.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:16:55
+ */
+@Data
+@ApiModel(value = "创建能耗模型与分项关联关系入参")
+public class AddModelItemRelDTO {
+    @ApiModelProperty(value = "能耗模型编码", required = true)
+    @NotNull(message = "能耗模型编码不能为空") // todo 更新校验规则
+    private String modelCode;
+
+    @ApiModelProperty(value = "分项分组id", required = true)
+    @NotNull(message = "分项分组id不能为空") // todo 更新校验规则
+    private String itemGroupId;
+
+    @ApiModelProperty(value = "分项编码", required = true)
+    @NotNull(message = "分项编码不能为空") // todo 更新校验规则
+    private String itemCode;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/DeleteModelItemRelDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.rel.modelitem.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:16:58
+ */
+@Data
+@ApiModel(value = "删除能耗模型与分项关联关系入参")
+public class DeleteModelItemRelDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 32 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/PageQueryModelItemRelDTO.java

@@ -0,0 +1,32 @@
+package com.persagy.apm.energy.report.config.rel.modelitem.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+import com.persagy.apm.common.model.dto.PageDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:17:00
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询能耗模型与分项关联关系入参")
+public class PageQueryModelItemRelDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "能耗模型编码", required = true)
+    private String modelCode;
+
+    @ApiModelProperty(value = "分项分组id", required = true)
+    private String itemGroupId;
+
+    @ApiModelProperty(value = "分项编码", required = true)
+    private String itemCode;
+
+}

+ 25 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/QueryModelItemRelDTO.java

@@ -0,0 +1,25 @@
+package com.persagy.apm.energy.report.config.rel.modelitem.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:16:59
+ */
+@Data
+@ApiModel(value = "查询能耗模型与分项关联关系入参")
+public class QueryModelItemRelDTO {
+    @ApiModelProperty(value = "能耗模型编码", required = true)
+    private String modelCode;
+
+    @ApiModelProperty(value = "分项分组id", required = true)
+    private String itemGroupId;
+
+    @ApiModelProperty(value = "分项编码", required = true)
+    private String itemCode;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/QueryModelItemRelDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.rel.modelitem.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:16:56
+ */
+@Data
+@ApiModel(value = "获取能耗模型与分项关联关系详情入参")
+public class QueryModelItemRelDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 35 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/model/dto/UpdateModelItemRelDTO.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.energy.report.config.rel.modelitem.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:16:57
+ */
+@Data
+@ApiModel(value = "更新能耗模型与分项关联关系入参")
+public class UpdateModelItemRelDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") // todo 更新校验规则
+    private String id;
+
+    @ApiModelProperty(value = "能耗模型编码", required = true)
+    @NotNull(message = "能耗模型编码不能为空") // todo 更新校验规则
+    private String modelCode;
+
+    @ApiModelProperty(value = "分项分组id", required = true)
+    @NotNull(message = "分项分组id不能为空") // todo 更新校验规则
+    private String itemGroupId;
+
+    @ApiModelProperty(value = "分项编码", required = true)
+    @NotNull(message = "分项编码不能为空") // todo 更新校验规则
+    private String itemCode;
+
+}

+ 77 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/service/IModelItemRelService.java

@@ -0,0 +1,77 @@
+package com.persagy.apm.energy.report.config.rel.modelitem.service;
+
+import com.persagy.apm.energy.report.config.rel.modelitem.model.*;
+import com.persagy.apm.energy.report.config.rel.modelitem.model.dto.*;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 能耗模型与分项关联关系(ModelItemRel) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:16:45
+ */
+public interface IModelItemRelService {
+
+    /**
+     * 创建能耗模型与分项关联关系
+     *
+     * @param addModelItemRelDTO addDTO
+     * @return 能耗模型与分项关联关系主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:45
+     */
+    String createModelItemRel(AddModelItemRelDTO addModelItemRelDTO);
+
+    /**
+     * 能耗模型与分项关联关系详情
+     *
+     * @param id 主键
+     * @return 能耗模型与分项关联关系do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:45
+     */
+    ModelItemRel queryModelItemRelDetail(String id);
+
+    /**
+     * 更新能耗模型与分项关联关系
+     *
+     * @param updateModelItemRelDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:45
+     */
+    void updateModelItemRel(UpdateModelItemRelDTO updateModelItemRelDTO);
+
+    /**
+     * 删除能耗模型与分项关联关系
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:45
+     */
+    void deleteModelItemRel(String id);
+
+    /**
+     * 查询能耗模型与分项关联关系
+     *
+     * @param queryModelItemRelDTO queryDTO
+     * @return List<ModelItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:45
+     */
+    List<ModelItemRel> queryModelItemRelList(QueryModelItemRelDTO queryModelItemRelDTO);
+
+    /**
+     * 分页查询能耗模型与分项关联关系
+     *
+     * @param pageQueryModelItemRelDTO pageQueryDTO
+     * @return IPage<ModelItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:45
+     */
+    IPage<ModelItemRel> pageQueryModelItemRel(PageQueryModelItemRelDTO pageQueryModelItemRelDTO);
+}

+ 209 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/modelitem/service/impl/ModelItemRelServiceImpl.java

@@ -0,0 +1,209 @@
+package com.persagy.apm.energy.report.config.rel.modelitem.service.impl;
+
+import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.energy.report.config.rel.modelitem.dao.ModelItemRelMapper;
+import com.persagy.apm.energy.report.config.rel.modelitem.service.IModelItemRelService;
+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.ValidEnum;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.persagy.apm.energy.report.config.rel.modelitem.model.*;
+import com.persagy.apm.energy.report.config.rel.modelitem.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 org.springframework.util.CollectionUtils;
+
+/**
+ * 能耗模型与分项关联关系(ModelItemRel) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:16:51
+ */
+@Service
+public class ModelItemRelServiceImpl extends ServiceImpl<ModelItemRelMapper, ModelItemRel>
+        implements IModelItemRelService {
+
+    /**
+     * 创建能耗模型与分项关联关系
+     *
+     * @return 能耗模型与分项关联关系主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:51
+     */
+    @Override
+    public String createModelItemRel(AddModelItemRelDTO addModelItemRelDTO) {
+        ModelItemRel modelItemRel = ConvertModelItemRelTool.INSTANCE.convertAddDto2Entity(addModelItemRelDTO);
+        // 设置默认值
+        setDefaultValue(modelItemRel);
+        save(modelItemRel);
+        return modelItemRel.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param modelItemRel 能耗模型与分项关联关系实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(ModelItemRel modelItemRel) {
+        modelItemRel.setCreator(PoemsContext.getContext().getUserId());
+        // todo 其他默认的属性
+
+    }
+
+    /**
+     * 能耗模型与分项关联关系详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:51
+     */
+    @Override
+    public ModelItemRel queryModelItemRelDetail(String id) {
+        ModelItemRel modelItemRel = getById(id);
+        if (modelItemRel == null) {
+            throw new IllegalArgumentException("查看ModelItemRel详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return modelItemRel;
+    }
+
+    /**
+     * 更新能耗模型与分项关联关系
+     *
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:51
+     */
+    @Override
+    public void updateModelItemRel(UpdateModelItemRelDTO updateModelItemRelDTO) {
+        ModelItemRel modelItemRel = getById(updateModelItemRelDTO.getId());
+        modelItemRel = ConvertModelItemRelTool.INSTANCE.convertUpdateDto2Entity(modelItemRel, updateModelItemRelDTO);
+        modelItemRel.setModifier(PoemsContext.getContext().getUserId());
+        updateById(modelItemRel);
+    }
+
+    /**
+     * 校验能耗模型与分项关联关系是否可删除
+     *
+     * @param id 能耗模型与分项关联关系主键
+     * @return 能耗模型与分项关联关系do类
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:51
+     */
+    public ModelItemRel checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除ModelItemRel时发生异常,主键为空");
+        }
+
+        ModelItemRel modelItemRel = getById(id);
+
+        if (modelItemRel == null) {
+            throw new IllegalArgumentException("删除ModelItemRel时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return modelItemRel;
+    }
+
+    /**
+     * 删除能耗模型与分项关联关系
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:51
+     */
+    @Override
+    public void deleteModelItemRel(String id) {
+        // 校验是否可删除
+        ModelItemRel modelItemRel = checkDeletable(id);
+
+        modelItemRel.setValid(ValidEnum.FALSE.getType());
+        updateById(modelItemRel);
+    }
+
+    /**
+     * 查询能耗模型与分项关联关系
+     *
+     * @return List<ModelItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:51
+     */
+    @Override
+    public List<ModelItemRel> queryModelItemRelList(QueryModelItemRelDTO queryModelItemRelDTO) {
+        QueryWrapper<ModelItemRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ModelItemRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, ModelItemRel.PROP_CREATIONTIME);
+
+        if (queryModelItemRelDTO != null) {
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryModelItemRelDTO.getModelCode())) {
+                queryWrapper.like(ModelItemRel.PROP_MODEL_CODE, queryModelItemRelDTO.getModelCode());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryModelItemRelDTO.getItemGroupId())) {
+                queryWrapper.like(ModelItemRel.PROP_ITEM_GROUP_ID, queryModelItemRelDTO.getItemGroupId());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryModelItemRelDTO.getItemCode())) {
+                queryWrapper.like(ModelItemRel.PROP_ITEM_CODE, queryModelItemRelDTO.getItemCode());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询能耗模型与分项关联关系
+     *
+     * @return IPage<ModelItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:16:51
+     */
+    @Override
+    public IPage<ModelItemRel> pageQueryModelItemRel(PageQueryModelItemRelDTO pageQueryModelItemRelDTO) {
+        QueryWrapper<ModelItemRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ModelItemRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<ModelItemRel> pageParam = new Page<>(pageQueryModelItemRelDTO.getPage(), pageQueryModelItemRelDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryModelItemRelDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, ModelItemRel.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryModelItemRelDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryModelItemRelDTO.getModelCode())) {
+            queryWrapper.like(ModelItemRel.PROP_MODEL_CODE, pageQueryModelItemRelDTO.getModelCode());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryModelItemRelDTO.getItemGroupId())) {
+            queryWrapper.like(ModelItemRel.PROP_ITEM_GROUP_ID, pageQueryModelItemRelDTO.getItemGroupId());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryModelItemRelDTO.getItemCode())) {
+            queryWrapper.like(ModelItemRel.PROP_ITEM_CODE, pageQueryModelItemRelDTO.getItemCode());
+        }
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+}

+ 16 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/dao/ReportTypeModelRelMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.dao;
+
+import com.persagy.apm.energy.report.config.rel.typemodel.model.ReportTypeModelRel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 报告类型和模型关联关系(ReportTypeModelRel)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:57
+ */
+@Mapper
+public interface ReportTypeModelRelMapper extends BaseMapper<ReportTypeModelRel> {
+
+}

+ 74 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/ConvertReportTypeModelRelTool.java

@@ -0,0 +1,74 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.model;
+
+import org.mapstruct.*;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.factory.Mappers;
+import com.persagy.apm.energy.report.config.rel.typemodel.model.vo.*;
+import com.persagy.apm.energy.report.config.rel.typemodel.model.dto.*;
+
+import java.util.List;
+
+/**
+ * 报告类型和模型关联关系(ReportTypeModelRel) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:58 2021-05-19 11:19:58
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertReportTypeModelRelTool {
+
+    ConvertReportTypeModelRelTool INSTANCE = Mappers.getMapper(ConvertReportTypeModelRelTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param reportTypeModelRel do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:58
+     */
+    ResponseReportTypeModelRelItemVO convert2ResponseItemDTO(ReportTypeModelRel reportTypeModelRel);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param reportTypeModelRel do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:58
+     */
+    ResponseReportTypeModelRelListItemVO convert2ResponseListItemDTO(ReportTypeModelRel reportTypeModelRel);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param reportTypeModelRelList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:58
+     */
+    List<ResponseReportTypeModelRelListItemVO> convert2List(List<ReportTypeModelRel> reportTypeModelRelList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addReportTypeModelRelDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:58
+     */
+    ReportTypeModelRel convertAddDto2Entity(AddReportTypeModelRelDTO addReportTypeModelRelDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param reportTypeModelRel          更新前的do对象
+     * @param updateReportTypeModelRelDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:58
+     */
+    ReportTypeModelRel convertUpdateDto2Entity(@MappingTarget ReportTypeModelRel reportTypeModelRel, UpdateReportTypeModelRelDTO updateReportTypeModelRelDTO);
+}
+

+ 50 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/ReportTypeModelRel.java

@@ -0,0 +1,50 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.persagy.apm.common.model.entity.AuditableEntity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 报告类型和模型关联关系(ReportTypeModelRel)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:57
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "报告类型和模型关联关系")
+public class ReportTypeModelRel extends AuditableEntity<ReportTypeModelRel> implements Serializable {
+    private static final long serialVersionUID = -83806086985843326L;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("模型编码")
+    private String modelCode;
+
+    @ApiModelProperty("模型来源")
+    private String modelSource;
+
+    @ApiModelProperty("关联类型, 1: 费用,2:用电量")
+    private String relType;
+
+    @ApiModelProperty("模型合格的标准")
+    private String modelStandardValue;
+
+    @ApiModelProperty("模型合格的判断公式")
+    private String modelQualifyFormula;
+
+
+    public static String PROP_REPORT_TYPE_ID = "report_type_id";
+    public static String PROP_MODEL_CODE = "model_code";
+    public static String PROP_MODEL_SOURCE = "model_source";
+    public static String PROP_REL_TYPE = "rel_type";
+    public static String PROP_MODEL_STANDARD_VALUE = "model_standard_value";
+    public static String PROP_MODEL_QUALIFY_FORMULA = "model_qualify_formula";
+
+}

+ 43 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/AddReportTypeModelRelDTO.java

@@ -0,0 +1,43 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:58
+ */
+@Data
+@ApiModel(value = "创建报告类型和模型关联关系入参")
+public class AddReportTypeModelRelDTO {
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") // todo 更新校验规则
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "模型编码", required = true)
+    @NotNull(message = "模型编码不能为空") // todo 更新校验规则
+    private String modelCode;
+
+    @ApiModelProperty(value = "模型来源", required = true)
+    @NotNull(message = "模型来源不能为空") // todo 更新校验规则
+    private String modelSource;
+
+    @ApiModelProperty(value = "关联类型, 1: 费用,2:用电量", required = true)
+    @NotNull(message = "关联类型, 1: 费用,2:用电量不能为空") // todo 更新校验规则
+    private String relType;
+
+    @ApiModelProperty(value = "模型合格的标准", required = true)
+    @NotNull(message = "模型合格的标准不能为空") // todo 更新校验规则
+    private String modelStandardValue;
+
+    @ApiModelProperty(value = "模型合格的判断公式", required = true)
+    @NotNull(message = "模型合格的判断公式不能为空") // todo 更新校验规则
+    private String modelQualifyFormula;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/DeleteReportTypeModelRelDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:58
+ */
+@Data
+@ApiModel(value = "删除报告类型和模型关联关系入参")
+public class DeleteReportTypeModelRelDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 41 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/PageQueryReportTypeModelRelDTO.java

@@ -0,0 +1,41 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+import com.persagy.apm.common.model.dto.PageDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:58
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询报告类型和模型关联关系入参")
+public class PageQueryReportTypeModelRelDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "模型编码", required = true)
+    private String modelCode;
+
+    @ApiModelProperty(value = "模型来源", required = true)
+    private String modelSource;
+
+    @ApiModelProperty(value = "关联类型, 1: 费用,2:用电量", required = true)
+    private String relType;
+
+    @ApiModelProperty(value = "模型合格的标准", required = true)
+    private String modelStandardValue;
+
+    @ApiModelProperty(value = "模型合格的判断公式", required = true)
+    private String modelQualifyFormula;
+
+}

+ 34 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/QueryReportTypeModelRelDTO.java

@@ -0,0 +1,34 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:58
+ */
+@Data
+@ApiModel(value = "查询报告类型和模型关联关系入参")
+public class QueryReportTypeModelRelDTO {
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "模型编码", required = true)
+    private String modelCode;
+
+    @ApiModelProperty(value = "模型来源", required = true)
+    private String modelSource;
+
+    @ApiModelProperty(value = "关联类型, 1: 费用,2:用电量", required = true)
+    private String relType;
+
+    @ApiModelProperty(value = "模型合格的标准", required = true)
+    private String modelStandardValue;
+
+    @ApiModelProperty(value = "模型合格的判断公式", required = true)
+    private String modelQualifyFormula;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/QueryReportTypeModelRelDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:58
+ */
+@Data
+@ApiModel(value = "获取报告类型和模型关联关系详情入参")
+public class QueryReportTypeModelRelDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 47 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/dto/UpdateReportTypeModelRelDTO.java

@@ -0,0 +1,47 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:58
+ */
+@Data
+@ApiModel(value = "更新报告类型和模型关联关系入参")
+public class UpdateReportTypeModelRelDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") // todo 更新校验规则
+    private String id;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") // todo 更新校验规则
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "模型编码", required = true)
+    @NotNull(message = "模型编码不能为空") // todo 更新校验规则
+    private String modelCode;
+
+    @ApiModelProperty(value = "模型来源", required = true)
+    @NotNull(message = "模型来源不能为空") // todo 更新校验规则
+    private String modelSource;
+
+    @ApiModelProperty(value = "关联类型, 1: 费用,2:用电量", required = true)
+    @NotNull(message = "关联类型, 1: 费用,2:用电量不能为空") // todo 更新校验规则
+    private String relType;
+
+    @ApiModelProperty(value = "模型合格的标准", required = true)
+    @NotNull(message = "模型合格的标准不能为空") // todo 更新校验规则
+    private String modelStandardValue;
+
+    @ApiModelProperty(value = "模型合格的判断公式", required = true)
+    @NotNull(message = "模型合格的判断公式不能为空") // todo 更新校验规则
+    private String modelQualifyFormula;
+
+}

+ 52 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/vo/ResponseReportTypeModelRelItemVO.java

@@ -0,0 +1,52 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:58
+ */
+@Data
+@ApiModel(value = "报告类型和模型关联关系返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeModelRelItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("模型编码")
+    private String modelCode;
+
+    @ApiModelProperty("模型来源")
+    private String modelSource;
+
+    @ApiModelProperty("关联类型, 1: 费用,2:用电量")
+    private String relType;
+
+    @ApiModelProperty("模型合格的标准")
+    private String modelStandardValue;
+
+    @ApiModelProperty("模型合格的判断公式")
+    private String modelQualifyFormula;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 52 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/model/vo/ResponseReportTypeModelRelListItemVO.java

@@ -0,0 +1,52 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:58
+ */
+@Data
+@ApiModel(value = "报告类型和模型关联关系列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeModelRelListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("模型编码")
+    private String modelCode;
+
+    @ApiModelProperty("模型来源")
+    private String modelSource;
+
+    @ApiModelProperty("关联类型, 1: 费用,2:用电量")
+    private String relType;
+
+    @ApiModelProperty("模型合格的标准")
+    private String modelStandardValue;
+
+    @ApiModelProperty("模型合格的判断公式")
+    private String modelQualifyFormula;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 77 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/service/IReportTypeModelRelService.java

@@ -0,0 +1,77 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.service;
+
+import com.persagy.apm.energy.report.config.rel.typemodel.model.*;
+import com.persagy.apm.energy.report.config.rel.typemodel.model.dto.*;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 报告类型和模型关联关系(ReportTypeModelRel) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:56
+ */
+public interface IReportTypeModelRelService {
+
+    /**
+     * 创建报告类型和模型关联关系
+     *
+     * @param addReportTypeModelRelDTO addDTO
+     * @return 报告类型和模型关联关系主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    String createReportTypeModelRel(AddReportTypeModelRelDTO addReportTypeModelRelDTO);
+
+    /**
+     * 报告类型和模型关联关系详情
+     *
+     * @param id 主键
+     * @return 报告类型和模型关联关系do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    ReportTypeModelRel queryReportTypeModelRelDetail(String id);
+
+    /**
+     * 更新报告类型和模型关联关系
+     *
+     * @param updateReportTypeModelRelDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    void updateReportTypeModelRel(UpdateReportTypeModelRelDTO updateReportTypeModelRelDTO);
+
+    /**
+     * 删除报告类型和模型关联关系
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    void deleteReportTypeModelRel(String id);
+
+    /**
+     * 查询报告类型和模型关联关系
+     *
+     * @param queryReportTypeModelRelDTO queryDTO
+     * @return List<ReportTypeModelRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    List<ReportTypeModelRel> queryReportTypeModelRelList(QueryReportTypeModelRelDTO queryReportTypeModelRelDTO);
+
+    /**
+     * 分页查询报告类型和模型关联关系
+     *
+     * @param pageQueryReportTypeModelRelDTO pageQueryDTO
+     * @return IPage<ReportTypeModelRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    IPage<ReportTypeModelRel> pageQueryReportTypeModelRel(PageQueryReportTypeModelRelDTO pageQueryReportTypeModelRelDTO);
+}

+ 240 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typemodel/service/impl/ReportTypeModelRelServiceImpl.java

@@ -0,0 +1,240 @@
+package com.persagy.apm.energy.report.config.rel.typemodel.service.impl;
+
+import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.energy.report.config.rel.typemodel.dao.ReportTypeModelRelMapper;
+import com.persagy.apm.energy.report.config.rel.typemodel.service.IReportTypeModelRelService;
+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.ValidEnum;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.persagy.apm.energy.report.config.rel.typemodel.model.*;
+import com.persagy.apm.energy.report.config.rel.typemodel.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 org.springframework.util.CollectionUtils;
+
+/**
+ * 报告类型和模型关联关系(ReportTypeModelRel) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:19:56
+ */
+@Service
+public class ReportTypeModelRelServiceImpl extends ServiceImpl<ReportTypeModelRelMapper, ReportTypeModelRel>
+        implements IReportTypeModelRelService {
+
+    /**
+     * 创建报告类型和模型关联关系
+     *
+     * @return 报告类型和模型关联关系主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    @Override
+    public String createReportTypeModelRel(AddReportTypeModelRelDTO addReportTypeModelRelDTO) {
+        ReportTypeModelRel reportTypeModelRel = ConvertReportTypeModelRelTool.INSTANCE.convertAddDto2Entity(addReportTypeModelRelDTO);
+        // 设置默认值
+        setDefaultValue(reportTypeModelRel);
+        save(reportTypeModelRel);
+        return reportTypeModelRel.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param reportTypeModelRel 报告类型和模型关联关系实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(ReportTypeModelRel reportTypeModelRel) {
+        reportTypeModelRel.setCreator(PoemsContext.getContext().getUserId());
+        // todo 其他默认的属性
+
+    }
+
+    /**
+     * 报告类型和模型关联关系详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    @Override
+    public ReportTypeModelRel queryReportTypeModelRelDetail(String id) {
+        ReportTypeModelRel reportTypeModelRel = getById(id);
+        if (reportTypeModelRel == null) {
+            throw new IllegalArgumentException("查看ReportTypeModelRel详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return reportTypeModelRel;
+    }
+
+    /**
+     * 更新报告类型和模型关联关系
+     *
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    @Override
+    public void updateReportTypeModelRel(UpdateReportTypeModelRelDTO updateReportTypeModelRelDTO) {
+        ReportTypeModelRel reportTypeModelRel = getById(updateReportTypeModelRelDTO.getId());
+        reportTypeModelRel = ConvertReportTypeModelRelTool.INSTANCE.convertUpdateDto2Entity(reportTypeModelRel, updateReportTypeModelRelDTO);
+        reportTypeModelRel.setModifier(PoemsContext.getContext().getUserId());
+        updateById(reportTypeModelRel);
+    }
+
+    /**
+     * 校验报告类型和模型关联关系是否可删除
+     *
+     * @param id 报告类型和模型关联关系主键
+     * @return 报告类型和模型关联关系do类
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    public ReportTypeModelRel checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除ReportTypeModelRel时发生异常,主键为空");
+        }
+
+        ReportTypeModelRel reportTypeModelRel = getById(id);
+
+        if (reportTypeModelRel == null) {
+            throw new IllegalArgumentException("删除ReportTypeModelRel时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return reportTypeModelRel;
+    }
+
+    /**
+     * 删除报告类型和模型关联关系
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    @Override
+    public void deleteReportTypeModelRel(String id) {
+        // 校验是否可删除
+        ReportTypeModelRel reportTypeModelRel = checkDeletable(id);
+
+        reportTypeModelRel.setValid(ValidEnum.FALSE.getType());
+        updateById(reportTypeModelRel);
+    }
+
+    /**
+     * 查询报告类型和模型关联关系
+     *
+     * @return List<ReportTypeModelRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    @Override
+    public List<ReportTypeModelRel> queryReportTypeModelRelList(QueryReportTypeModelRelDTO queryReportTypeModelRelDTO) {
+        QueryWrapper<ReportTypeModelRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportTypeModelRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, ReportTypeModelRel.PROP_CREATIONTIME);
+
+        if (queryReportTypeModelRelDTO != null) {
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportTypeModelRelDTO.getReportTypeId())) {
+                queryWrapper.like(ReportTypeModelRel.PROP_REPORT_TYPE_ID, queryReportTypeModelRelDTO.getReportTypeId());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportTypeModelRelDTO.getModelCode())) {
+                queryWrapper.like(ReportTypeModelRel.PROP_MODEL_CODE, queryReportTypeModelRelDTO.getModelCode());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportTypeModelRelDTO.getModelSource())) {
+                queryWrapper.like(ReportTypeModelRel.PROP_MODEL_SOURCE, queryReportTypeModelRelDTO.getModelSource());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportTypeModelRelDTO.getRelType())) {
+                queryWrapper.like(ReportTypeModelRel.PROP_REL_TYPE, queryReportTypeModelRelDTO.getRelType());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportTypeModelRelDTO.getModelStandardValue())) {
+                queryWrapper.like(ReportTypeModelRel.PROP_MODEL_STANDARD_VALUE, queryReportTypeModelRelDTO.getModelStandardValue());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportTypeModelRelDTO.getModelQualifyFormula())) {
+                queryWrapper.like(ReportTypeModelRel.PROP_MODEL_QUALIFY_FORMULA, queryReportTypeModelRelDTO.getModelQualifyFormula());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询报告类型和模型关联关系
+     *
+     * @return IPage<ReportTypeModelRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:19:56
+     */
+    @Override
+    public IPage<ReportTypeModelRel> pageQueryReportTypeModelRel(PageQueryReportTypeModelRelDTO pageQueryReportTypeModelRelDTO) {
+        QueryWrapper<ReportTypeModelRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportTypeModelRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<ReportTypeModelRel> pageParam = new Page<>(pageQueryReportTypeModelRelDTO.getPage(), pageQueryReportTypeModelRelDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryReportTypeModelRelDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, ReportTypeModelRel.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryReportTypeModelRelDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportTypeModelRelDTO.getReportTypeId())) {
+            queryWrapper.like(ReportTypeModelRel.PROP_REPORT_TYPE_ID, pageQueryReportTypeModelRelDTO.getReportTypeId());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportTypeModelRelDTO.getModelCode())) {
+            queryWrapper.like(ReportTypeModelRel.PROP_MODEL_CODE, pageQueryReportTypeModelRelDTO.getModelCode());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportTypeModelRelDTO.getModelSource())) {
+            queryWrapper.like(ReportTypeModelRel.PROP_MODEL_SOURCE, pageQueryReportTypeModelRelDTO.getModelSource());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportTypeModelRelDTO.getRelType())) {
+            queryWrapper.like(ReportTypeModelRel.PROP_REL_TYPE, pageQueryReportTypeModelRelDTO.getRelType());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportTypeModelRelDTO.getModelStandardValue())) {
+            queryWrapper.like(ReportTypeModelRel.PROP_MODEL_STANDARD_VALUE, pageQueryReportTypeModelRelDTO.getModelStandardValue());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportTypeModelRelDTO.getModelQualifyFormula())) {
+            queryWrapper.like(ReportTypeModelRel.PROP_MODEL_QUALIFY_FORMULA, pageQueryReportTypeModelRelDTO.getModelQualifyFormula());
+        }
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+}

+ 16 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/dao/ReportTypeProjectTypeRelMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.dao;
+
+import com.persagy.apm.energy.report.config.rel.typeprojecttype.model.ReportTypeProjectTypeRel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 报告类型和项目所属功能类型关联关系(ReportTypeProjectTypeRel)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:23
+ */
+@Mapper
+public interface ReportTypeProjectTypeRelMapper extends BaseMapper<ReportTypeProjectTypeRel> {
+
+}

+ 74 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/ConvertReportTypeProjectTypeRelTool.java

@@ -0,0 +1,74 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.model;
+
+import org.mapstruct.*;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.factory.Mappers;
+import com.persagy.apm.energy.report.config.rel.typeprojecttype.model.vo.*;
+import com.persagy.apm.energy.report.config.rel.typeprojecttype.model.dto.*;
+
+import java.util.List;
+
+/**
+ * 报告类型和项目所属功能类型关联关系(ReportTypeProjectTypeRel) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:24 2021-05-19 11:20:24
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertReportTypeProjectTypeRelTool {
+
+    ConvertReportTypeProjectTypeRelTool INSTANCE = Mappers.getMapper(ConvertReportTypeProjectTypeRelTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param reportTypeProjectTypeRel do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:24
+     */
+    ResponseReportTypeProjectTypeRelItemVO convert2ResponseItemDTO(ReportTypeProjectTypeRel reportTypeProjectTypeRel);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param reportTypeProjectTypeRel do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:24
+     */
+    ResponseReportTypeProjectTypeRelListItemVO convert2ResponseListItemDTO(ReportTypeProjectTypeRel reportTypeProjectTypeRel);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param reportTypeProjectTypeRelList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:24
+     */
+    List<ResponseReportTypeProjectTypeRelListItemVO> convert2List(List<ReportTypeProjectTypeRel> reportTypeProjectTypeRelList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addReportTypeProjectTypeRelDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:24
+     */
+    ReportTypeProjectTypeRel convertAddDto2Entity(AddReportTypeProjectTypeRelDTO addReportTypeProjectTypeRelDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param reportTypeProjectTypeRel          更新前的do对象
+     * @param updateReportTypeProjectTypeRelDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:24
+     */
+    ReportTypeProjectTypeRel convertUpdateDto2Entity(@MappingTarget ReportTypeProjectTypeRel reportTypeProjectTypeRel, UpdateReportTypeProjectTypeRelDTO updateReportTypeProjectTypeRelDTO);
+}
+

+ 34 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/ReportTypeProjectTypeRel.java

@@ -0,0 +1,34 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.persagy.apm.common.model.entity.AuditableEntity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 报告类型和项目所属功能类型关联关系(ReportTypeProjectTypeRel)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:23
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "报告类型和项目所属功能类型关联关系")
+public class ReportTypeProjectTypeRel extends AuditableEntity<ReportTypeProjectTypeRel> implements Serializable {
+    private static final long serialVersionUID = -98816657597977651L;
+
+    @ApiModelProperty("报告类型id")
+    private String configId;
+
+    @ApiModelProperty("项目所属功能类型")
+    private String functionType;
+
+
+    public static String PROP_CONFIG_ID = "config_id";
+    public static String PROP_FUNCTION_TYPE = "function_type";
+
+}

+ 27 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/AddReportTypeProjectTypeRelDTO.java

@@ -0,0 +1,27 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:24
+ */
+@Data
+@ApiModel(value = "创建报告类型和项目所属功能类型关联关系入参")
+public class AddReportTypeProjectTypeRelDTO {
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") // todo 更新校验规则
+    private String configId;
+
+    @ApiModelProperty(value = "项目所属功能类型", required = true)
+    @NotNull(message = "项目所属功能类型不能为空") // todo 更新校验规则
+    private String functionType;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/DeleteReportTypeProjectTypeRelDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:24
+ */
+@Data
+@ApiModel(value = "删除报告类型和项目所属功能类型关联关系入参")
+public class DeleteReportTypeProjectTypeRelDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 29 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/PageQueryReportTypeProjectTypeRelDTO.java

@@ -0,0 +1,29 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+import com.persagy.apm.common.model.dto.PageDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:24
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询报告类型和项目所属功能类型关联关系入参")
+public class PageQueryReportTypeProjectTypeRelDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String configId;
+
+    @ApiModelProperty(value = "项目所属功能类型", required = true)
+    private String functionType;
+
+}

+ 22 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/QueryReportTypeProjectTypeRelDTO.java

@@ -0,0 +1,22 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:24
+ */
+@Data
+@ApiModel(value = "查询报告类型和项目所属功能类型关联关系入参")
+public class QueryReportTypeProjectTypeRelDTO {
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String configId;
+
+    @ApiModelProperty(value = "项目所属功能类型", required = true)
+    private String functionType;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/QueryReportTypeProjectTypeRelDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:24
+ */
+@Data
+@ApiModel(value = "获取报告类型和项目所属功能类型关联关系详情入参")
+public class QueryReportTypeProjectTypeRelDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 31 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/dto/UpdateReportTypeProjectTypeRelDTO.java

@@ -0,0 +1,31 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:24
+ */
+@Data
+@ApiModel(value = "更新报告类型和项目所属功能类型关联关系入参")
+public class UpdateReportTypeProjectTypeRelDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") // todo 更新校验规则
+    private String id;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") // todo 更新校验规则
+    private String configId;
+
+    @ApiModelProperty(value = "项目所属功能类型", required = true)
+    @NotNull(message = "项目所属功能类型不能为空") // todo 更新校验规则
+    private String functionType;
+
+}

+ 40 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/vo/ResponseReportTypeProjectTypeRelItemVO.java

@@ -0,0 +1,40 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:24
+ */
+@Data
+@ApiModel(value = "报告类型和项目所属功能类型关联关系返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeProjectTypeRelItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型id")
+    private String configId;
+
+    @ApiModelProperty("项目所属功能类型")
+    private String functionType;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 40 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/model/vo/ResponseReportTypeProjectTypeRelListItemVO.java

@@ -0,0 +1,40 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:24
+ */
+@Data
+@ApiModel(value = "报告类型和项目所属功能类型关联关系列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeProjectTypeRelListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型id")
+    private String configId;
+
+    @ApiModelProperty("项目所属功能类型")
+    private String functionType;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 77 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/service/IReportTypeProjectTypeRelService.java

@@ -0,0 +1,77 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.service;
+
+import com.persagy.apm.energy.report.config.rel.typeprojecttype.model.*;
+import com.persagy.apm.energy.report.config.rel.typeprojecttype.model.dto.*;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 报告类型和项目所属功能类型关联关系(ReportTypeProjectTypeRel) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:22
+ */
+public interface IReportTypeProjectTypeRelService {
+
+    /**
+     * 创建报告类型和项目所属功能类型关联关系
+     *
+     * @param addReportTypeProjectTypeRelDTO addDTO
+     * @return 报告类型和项目所属功能类型关联关系主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:22
+     */
+    String createReportTypeProjectTypeRel(AddReportTypeProjectTypeRelDTO addReportTypeProjectTypeRelDTO);
+
+    /**
+     * 报告类型和项目所属功能类型关联关系详情
+     *
+     * @param id 主键
+     * @return 报告类型和项目所属功能类型关联关系do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:22
+     */
+    ReportTypeProjectTypeRel queryReportTypeProjectTypeRelDetail(String id);
+
+    /**
+     * 更新报告类型和项目所属功能类型关联关系
+     *
+     * @param updateReportTypeProjectTypeRelDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:22
+     */
+    void updateReportTypeProjectTypeRel(UpdateReportTypeProjectTypeRelDTO updateReportTypeProjectTypeRelDTO);
+
+    /**
+     * 删除报告类型和项目所属功能类型关联关系
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:22
+     */
+    void deleteReportTypeProjectTypeRel(String id);
+
+    /**
+     * 查询报告类型和项目所属功能类型关联关系
+     *
+     * @param queryReportTypeProjectTypeRelDTO queryDTO
+     * @return List<ReportTypeProjectTypeRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:22
+     */
+    List<ReportTypeProjectTypeRel> queryReportTypeProjectTypeRelList(QueryReportTypeProjectTypeRelDTO queryReportTypeProjectTypeRelDTO);
+
+    /**
+     * 分页查询报告类型和项目所属功能类型关联关系
+     *
+     * @param pageQueryReportTypeProjectTypeRelDTO pageQueryDTO
+     * @return IPage<ReportTypeProjectTypeRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:22
+     */
+    IPage<ReportTypeProjectTypeRel> pageQueryReportTypeProjectTypeRel(PageQueryReportTypeProjectTypeRelDTO pageQueryReportTypeProjectTypeRelDTO);
+}

+ 199 - 0
src/main/java/com/persagy/apm/energy/report/config/rel/typeprojecttype/service/impl/ReportTypeProjectTypeRelServiceImpl.java

@@ -0,0 +1,199 @@
+package com.persagy.apm.energy.report.config.rel.typeprojecttype.service.impl;
+
+import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.energy.report.config.rel.typeprojecttype.dao.ReportTypeProjectTypeRelMapper;
+import com.persagy.apm.energy.report.config.rel.typeprojecttype.service.IReportTypeProjectTypeRelService;
+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.ValidEnum;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.persagy.apm.energy.report.config.rel.typeprojecttype.model.*;
+import com.persagy.apm.energy.report.config.rel.typeprojecttype.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 org.springframework.util.CollectionUtils;
+
+/**
+ * 报告类型和项目所属功能类型关联关系(ReportTypeProjectTypeRel) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 11:20:23
+ */
+@Service
+public class ReportTypeProjectTypeRelServiceImpl extends ServiceImpl<ReportTypeProjectTypeRelMapper, ReportTypeProjectTypeRel>
+        implements IReportTypeProjectTypeRelService {
+
+    /**
+     * 创建报告类型和项目所属功能类型关联关系
+     *
+     * @return 报告类型和项目所属功能类型关联关系主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:23
+     */
+    @Override
+    public String createReportTypeProjectTypeRel(AddReportTypeProjectTypeRelDTO addReportTypeProjectTypeRelDTO) {
+        ReportTypeProjectTypeRel reportTypeProjectTypeRel = ConvertReportTypeProjectTypeRelTool.INSTANCE.convertAddDto2Entity(addReportTypeProjectTypeRelDTO);
+        // 设置默认值
+        setDefaultValue(reportTypeProjectTypeRel);
+        save(reportTypeProjectTypeRel);
+        return reportTypeProjectTypeRel.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param reportTypeProjectTypeRel 报告类型和项目所属功能类型关联关系实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(ReportTypeProjectTypeRel reportTypeProjectTypeRel) {
+        reportTypeProjectTypeRel.setCreator(PoemsContext.getContext().getUserId());
+        // todo 其他默认的属性
+
+    }
+
+    /**
+     * 报告类型和项目所属功能类型关联关系详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:23
+     */
+    @Override
+    public ReportTypeProjectTypeRel queryReportTypeProjectTypeRelDetail(String id) {
+        ReportTypeProjectTypeRel reportTypeProjectTypeRel = getById(id);
+        if (reportTypeProjectTypeRel == null) {
+            throw new IllegalArgumentException("查看ReportTypeProjectTypeRel详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return reportTypeProjectTypeRel;
+    }
+
+    /**
+     * 更新报告类型和项目所属功能类型关联关系
+     *
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:23
+     */
+    @Override
+    public void updateReportTypeProjectTypeRel(UpdateReportTypeProjectTypeRelDTO updateReportTypeProjectTypeRelDTO) {
+        ReportTypeProjectTypeRel reportTypeProjectTypeRel = getById(updateReportTypeProjectTypeRelDTO.getId());
+        reportTypeProjectTypeRel = ConvertReportTypeProjectTypeRelTool.INSTANCE.convertUpdateDto2Entity(reportTypeProjectTypeRel, updateReportTypeProjectTypeRelDTO);
+        reportTypeProjectTypeRel.setModifier(PoemsContext.getContext().getUserId());
+        updateById(reportTypeProjectTypeRel);
+    }
+
+    /**
+     * 校验报告类型和项目所属功能类型关联关系是否可删除
+     *
+     * @param id 报告类型和项目所属功能类型关联关系主键
+     * @return 报告类型和项目所属功能类型关联关系do类
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:23
+     */
+    public ReportTypeProjectTypeRel checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除ReportTypeProjectTypeRel时发生异常,主键为空");
+        }
+
+        ReportTypeProjectTypeRel reportTypeProjectTypeRel = getById(id);
+
+        if (reportTypeProjectTypeRel == null) {
+            throw new IllegalArgumentException("删除ReportTypeProjectTypeRel时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return reportTypeProjectTypeRel;
+    }
+
+    /**
+     * 删除报告类型和项目所属功能类型关联关系
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:23
+     */
+    @Override
+    public void deleteReportTypeProjectTypeRel(String id) {
+        // 校验是否可删除
+        ReportTypeProjectTypeRel reportTypeProjectTypeRel = checkDeletable(id);
+
+        reportTypeProjectTypeRel.setValid(ValidEnum.FALSE.getType());
+        updateById(reportTypeProjectTypeRel);
+    }
+
+    /**
+     * 查询报告类型和项目所属功能类型关联关系
+     *
+     * @return List<ReportTypeProjectTypeRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:23
+     */
+    @Override
+    public List<ReportTypeProjectTypeRel> queryReportTypeProjectTypeRelList(QueryReportTypeProjectTypeRelDTO queryReportTypeProjectTypeRelDTO) {
+        QueryWrapper<ReportTypeProjectTypeRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportTypeProjectTypeRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, ReportTypeProjectTypeRel.PROP_CREATIONTIME);
+
+        if (queryReportTypeProjectTypeRelDTO != null) {
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportTypeProjectTypeRelDTO.getConfigId())) {
+                queryWrapper.like(ReportTypeProjectTypeRel.PROP_CONFIG_ID, queryReportTypeProjectTypeRelDTO.getConfigId());
+            }
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportTypeProjectTypeRelDTO.getFunctionType())) {
+                queryWrapper.like(ReportTypeProjectTypeRel.PROP_FUNCTION_TYPE, queryReportTypeProjectTypeRelDTO.getFunctionType());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询报告类型和项目所属功能类型关联关系
+     *
+     * @return IPage<ReportTypeProjectTypeRel>
+     * @author lixing
+     * @version V1.0 2021-05-19 11:20:23
+     */
+    @Override
+    public IPage<ReportTypeProjectTypeRel> pageQueryReportTypeProjectTypeRel(PageQueryReportTypeProjectTypeRelDTO pageQueryReportTypeProjectTypeRelDTO) {
+        QueryWrapper<ReportTypeProjectTypeRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportTypeProjectTypeRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<ReportTypeProjectTypeRel> pageParam = new Page<>(pageQueryReportTypeProjectTypeRelDTO.getPage(), pageQueryReportTypeProjectTypeRelDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryReportTypeProjectTypeRelDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, ReportTypeProjectTypeRel.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryReportTypeProjectTypeRelDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportTypeProjectTypeRelDTO.getConfigId())) {
+            queryWrapper.like(ReportTypeProjectTypeRel.PROP_CONFIG_ID, pageQueryReportTypeProjectTypeRelDTO.getConfigId());
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportTypeProjectTypeRelDTO.getFunctionType())) {
+            queryWrapper.like(ReportTypeProjectTypeRel.PROP_FUNCTION_TYPE, pageQueryReportTypeProjectTypeRelDTO.getFunctionType());
+        }
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+}

+ 32 - 0
src/main/java/com/persagy/apm/energy/report/config/type/constant/enums/BusinessTypeEnum.java

@@ -0,0 +1,32 @@
+package com.persagy.apm.energy.report.config.type.constant.enums;
+
+import com.persagy.apm.common.model.annotation.SwaggerDisplayEnum;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 业态
+ *
+ * @author lixing
+ * @version V1.0 2021/5/17 10:51 上午
+ */
+@SwaggerDisplayEnum
+public enum BusinessTypeEnum {
+    /**
+     * 业态
+     */
+    BUSINESS("1", "商业"),
+    HOTEL("2", "酒店");
+
+    @Setter
+    @Getter
+    private String type;
+    @Setter
+    @Getter
+    private String desc;
+
+    BusinessTypeEnum(String type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+}

+ 16 - 0
src/main/java/com/persagy/apm/energy/report/config/type/dao/ReportTypeMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.energy.report.config.type.dao;
+
+import com.persagy.apm.energy.report.config.type.model.ReportType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 报告类型(ReportType)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:16
+ */
+@Mapper
+public interface ReportTypeMapper extends BaseMapper<ReportType> {
+
+}

+ 74 - 0
src/main/java/com/persagy/apm/energy/report/config/type/model/ConvertReportTypeTool.java

@@ -0,0 +1,74 @@
+package com.persagy.apm.energy.report.config.type.model;
+
+import org.mapstruct.*;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.factory.Mappers;
+import com.persagy.apm.energy.report.config.type.model.vo.*;
+import com.persagy.apm.energy.report.config.type.model.dto.*;
+
+import java.util.List;
+
+/**
+ * 报告类型(ReportType) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:18 2021-05-19 10:39:18
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertReportTypeTool {
+
+    ConvertReportTypeTool INSTANCE = Mappers.getMapper(ConvertReportTypeTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param reportType do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:18
+     */
+    ResponseReportTypeItemVO convert2ResponseItemDTO(ReportType reportType);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param reportType do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:18
+     */
+    ResponseReportTypeListItemVO convert2ResponseListItemDTO(ReportType reportType);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param reportTypeList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:18
+     */
+    List<ResponseReportTypeListItemVO> convert2List(List<ReportType> reportTypeList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addReportTypeDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:18
+     */
+    ReportType convertAddDto2Entity(AddReportTypeDTO addReportTypeDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param reportType          更新前的do对象
+     * @param updateReportTypeDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:18
+     */
+    ReportType convertUpdateDto2Entity(@MappingTarget ReportType reportType, UpdateReportTypeDTO updateReportTypeDTO);
+}
+

+ 38 - 0
src/main/java/com/persagy/apm/energy/report/config/type/model/ReportType.java

@@ -0,0 +1,38 @@
+package com.persagy.apm.energy.report.config.type.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.persagy.apm.common.model.entity.AuditableEntity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 报告类型(ReportType)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:17
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "报告类型")
+public class ReportType extends AuditableEntity<ReportType> implements Serializable {
+    private static final long serialVersionUID = 102317093417294815L;
+
+    @ApiModelProperty("报告类型名称")
+    private String name;
+
+    @ApiModelProperty("业态 enum 0-商业;1-酒店")
+    private String businessType;
+
+    @ApiModelProperty("报告所属类型 enum 0-项目;1-大区")
+    private String belongType;
+
+
+    public static String PROP_NAME = "name";
+    public static String PROP_BUSINESS_TYPE = "business_type";
+    public static String PROP_BELONG_TYPE = "belong_type";
+
+}

+ 31 - 0
src/main/java/com/persagy/apm/energy/report/config/type/model/dto/AddReportTypeDTO.java

@@ -0,0 +1,31 @@
+package com.persagy.apm.energy.report.config.type.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:17
+ */
+@Data
+@ApiModel(value = "创建报告类型入参")
+public class AddReportTypeDTO {
+    @ApiModelProperty(value = "报告类型名称", required = true)
+    @NotNull(message = "报告类型名称不能为空") // todo 更新校验规则
+    private String name;
+
+    @ApiModelProperty(value = "业态 enum 0-商业;1-酒店", required = true)
+    @NotNull(message = "业态 enum 0-商业;1-酒店不能为空") // todo 更新校验规则
+    private Integer businessType;
+
+    @ApiModelProperty(value = "报告所属类型 enum 0-项目;1-大区", required = true)
+    @NotNull(message = "报告所属类型 enum 0-项目;1-大区不能为空") // todo 更新校验规则
+    private Integer belongType;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/type/model/dto/DeleteReportTypeDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.type.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:18
+ */
+@Data
+@ApiModel(value = "删除报告类型入参")
+public class DeleteReportTypeDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 32 - 0
src/main/java/com/persagy/apm/energy/report/config/type/model/dto/PageQueryReportTypeDTO.java

@@ -0,0 +1,32 @@
+package com.persagy.apm.energy.report.config.type.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+import com.persagy.apm.common.model.dto.PageDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:18
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询报告类型入参")
+public class PageQueryReportTypeDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "报告类型名称", required = true)
+    private String name;
+
+    @ApiModelProperty(value = "业态 enum 0-商业;1-酒店", required = true)
+    private Integer businessType;
+
+    @ApiModelProperty(value = "报告所属类型 enum 0-项目;1-大区", required = true)
+    private Integer belongType;
+
+}

+ 25 - 0
src/main/java/com/persagy/apm/energy/report/config/type/model/dto/QueryReportTypeDTO.java

@@ -0,0 +1,25 @@
+package com.persagy.apm.energy.report.config.type.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:18
+ */
+@Data
+@ApiModel(value = "查询报告类型入参")
+public class QueryReportTypeDTO {
+    @ApiModelProperty(value = "报告类型名称", required = true)
+    private String name;
+
+    @ApiModelProperty(value = "业态 enum 0-商业;1-酒店", required = true)
+    private Integer businessType;
+
+    @ApiModelProperty(value = "报告所属类型 enum 0-项目;1-大区", required = true)
+    private Integer belongType;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/energy/report/config/type/model/dto/QueryReportTypeDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.energy.report.config.type.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:17
+ */
+@Data
+@ApiModel(value = "获取报告类型详情入参")
+public class QueryReportTypeDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 35 - 0
src/main/java/com/persagy/apm/energy/report/config/type/model/dto/UpdateReportTypeDTO.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.energy.report.config.type.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:18
+ */
+@Data
+@ApiModel(value = "更新报告类型入参")
+public class UpdateReportTypeDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") // todo 更新校验规则
+    private String id;
+
+    @ApiModelProperty(value = "报告类型名称", required = true)
+    @NotNull(message = "报告类型名称不能为空") // todo 更新校验规则
+    private String name;
+
+    @ApiModelProperty(value = "业态 enum 0-商业;1-酒店", required = true)
+    @NotNull(message = "业态 enum 0-商业;1-酒店不能为空") // todo 更新校验规则
+    private Integer businessType;
+
+    @ApiModelProperty(value = "报告所属类型 enum 0-项目;1-大区", required = true)
+    @NotNull(message = "报告所属类型 enum 0-项目;1-大区不能为空") // todo 更新校验规则
+    private Integer belongType;
+
+}

+ 30 - 0
src/main/java/com/persagy/apm/energy/report/config/type/model/vo/ResponseReportTypeItemVO.java

@@ -0,0 +1,30 @@
+package com.persagy.apm.energy.report.config.type.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:18
+ */
+@Data
+@ApiModel(value = "报告类型返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型名称")
+    private String name;
+
+    @ApiModelProperty("业态 enum 0-商业;1-酒店")
+    private String businessType;
+
+    @ApiModelProperty("报告所属类型 enum 0-项目;1-大区")
+    private String belongType;
+}

+ 30 - 0
src/main/java/com/persagy/apm/energy/report/config/type/model/vo/ResponseReportTypeListItemVO.java

@@ -0,0 +1,30 @@
+package com.persagy.apm.energy.report.config.type.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:18
+ */
+@Data
+@ApiModel(value = "报告类型列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型名称")
+    private String name;
+
+    @ApiModelProperty("业态 enum 0-商业;1-酒店")
+    private String businessType;
+
+    @ApiModelProperty("报告所属类型 enum 0-项目;1-大区")
+    private String belongType;
+}

+ 87 - 0
src/main/java/com/persagy/apm/energy/report/config/type/service/IReportTypeService.java

@@ -0,0 +1,87 @@
+package com.persagy.apm.energy.report.config.type.service;
+
+import com.persagy.apm.energy.report.config.type.model.*;
+import com.persagy.apm.energy.report.config.type.model.dto.*;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.energy.report.config.type.model.vo.ResponseReportTypeListItemVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 报告类型(ReportType) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:15
+ */
+public interface IReportTypeService {
+
+    /**
+     * 创建报告类型
+     *
+     * @param addReportTypeDTO addDTO
+     * @return 报告类型主键
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    String createReportType(AddReportTypeDTO addReportTypeDTO);
+
+    /**
+     * 报告类型详情
+     *
+     * @param id 主键
+     * @return 报告类型do对象
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    ReportType queryReportTypeDetail(String id);
+
+    /**
+     * 更新报告类型
+     *
+     * @param updateReportTypeDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    void updateReportType(UpdateReportTypeDTO updateReportTypeDTO);
+
+    /**
+     * 删除报告类型
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    void deleteReportType(String id);
+
+    /**
+     * 查询报告类型
+     *
+     * @param queryReportTypeDTO queryDTO
+     * @return List<ReportType>
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    List<ReportType> queryReportTypeList(QueryReportTypeDTO queryReportTypeDTO);
+
+    /**
+     * 分页查询报告类型
+     *
+     * @param pageQueryReportTypeDTO pageQueryDTO
+     * @return IPage<ReportType>
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    IPage<ReportType> pageQueryReportType(PageQueryReportTypeDTO pageQueryReportTypeDTO);
+
+    /**
+     * 查询当前用户可用的报告类型
+     *
+     * @return 当前用户可用的报告类型
+     * @author lixing
+     * @version V1.0 2021/5/19 4:39 下午
+     */
+    IPage<ResponseReportTypeListItemVO> queryAvailableReportTypes();
+}

+ 212 - 0
src/main/java/com/persagy/apm/energy/report/config/type/service/impl/ReportTypeServiceImpl.java

@@ -0,0 +1,212 @@
+package com.persagy.apm.energy.report.config.type.service.impl;
+
+import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.energy.report.config.type.dao.ReportTypeMapper;
+import com.persagy.apm.energy.report.config.type.model.vo.ResponseReportTypeListItemVO;
+import com.persagy.apm.energy.report.config.type.service.IReportTypeService;
+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.ValidEnum;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.persagy.apm.energy.report.config.type.model.*;
+import com.persagy.apm.energy.report.config.type.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 org.springframework.util.CollectionUtils;
+
+/**
+ * 报告类型(ReportType) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-19 10:39:15
+ */
+@Service
+public class ReportTypeServiceImpl extends ServiceImpl<ReportTypeMapper, ReportType>
+        implements IReportTypeService {
+
+    /**
+     * 创建报告类型
+     *
+     * @return 报告类型主键
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    @Override
+    public String createReportType(AddReportTypeDTO addReportTypeDTO) {
+        ReportType reportType = ConvertReportTypeTool.INSTANCE.convertAddDto2Entity(addReportTypeDTO);
+        // 设置默认值
+        setDefaultValue(reportType);
+        save(reportType);
+        return reportType.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param reportType 报告类型实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(ReportType reportType) {
+        reportType.setCreator(PoemsContext.getContext().getUserId());
+        // todo 其他默认的属性
+
+    }
+
+    /**
+     * 报告类型详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    @Override
+    public ReportType queryReportTypeDetail(String id) {
+        ReportType reportType = getById(id);
+        if (reportType == null) {
+            throw new IllegalArgumentException("查看ReportType详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return reportType;
+    }
+
+    /**
+     * 更新报告类型
+     *
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    @Override
+    public void updateReportType(UpdateReportTypeDTO updateReportTypeDTO) {
+        ReportType reportType = getById(updateReportTypeDTO.getId());
+        reportType = ConvertReportTypeTool.INSTANCE.convertUpdateDto2Entity(reportType, updateReportTypeDTO);
+        reportType.setModifier(PoemsContext.getContext().getUserId());
+        updateById(reportType);
+    }
+
+    /**
+     * 校验报告类型是否可删除
+     *
+     * @param id 报告类型主键
+     * @return 报告类型do类
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    public ReportType checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除ReportType时发生异常,主键为空");
+        }
+
+        ReportType reportType = getById(id);
+
+        if (reportType == null) {
+            throw new IllegalArgumentException("删除ReportType时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return reportType;
+    }
+
+    /**
+     * 删除报告类型
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    @Override
+    public void deleteReportType(String id) {
+        // 校验是否可删除
+        ReportType reportType = checkDeletable(id);
+
+        reportType.setValid(ValidEnum.FALSE.getType());
+        updateById(reportType);
+    }
+
+    /**
+     * 查询报告类型
+     *
+     * @return List<ReportType>
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    @Override
+    public List<ReportType> queryReportTypeList(QueryReportTypeDTO queryReportTypeDTO) {
+        QueryWrapper<ReportType> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportType.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, ReportType.PROP_CREATIONTIME);
+
+        if (queryReportTypeDTO != null) {
+
+            // todo 需判断使用like还是eq
+            if (StringUtils.isNotEmpty(queryReportTypeDTO.getName())) {
+                queryWrapper.like(ReportType.PROP_NAME, queryReportTypeDTO.getName());
+            }
+
+            if (queryReportTypeDTO.getBusinessType() != null) {
+                queryWrapper.eq(ReportType.PROP_BUSINESS_TYPE, queryReportTypeDTO.getBusinessType());
+            }
+
+            if (queryReportTypeDTO.getBelongType() != null) {
+                queryWrapper.eq(ReportType.PROP_BELONG_TYPE, queryReportTypeDTO.getBelongType());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询报告类型
+     *
+     * @return IPage<ReportType>
+     * @author lixing
+     * @version V1.0 2021-05-19 10:39:15
+     */
+    @Override
+    public IPage<ReportType> pageQueryReportType(PageQueryReportTypeDTO pageQueryReportTypeDTO) {
+        QueryWrapper<ReportType> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportType.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<ReportType> pageParam = new Page<>(pageQueryReportTypeDTO.getPage(), pageQueryReportTypeDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryReportTypeDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, ReportType.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryReportTypeDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        // todo 需判断使用like还是eq
+        if (StringUtils.isNotEmpty(pageQueryReportTypeDTO.getName())) {
+            queryWrapper.like(ReportType.PROP_NAME, pageQueryReportTypeDTO.getName());
+        }
+
+        if (pageQueryReportTypeDTO.getBusinessType() != null) {
+            queryWrapper.eq(ReportType.PROP_BUSINESS_TYPE, pageQueryReportTypeDTO.getBusinessType());
+        }
+
+        if (pageQueryReportTypeDTO.getBelongType() != null) {
+            queryWrapper.eq(ReportType.PROP_BELONG_TYPE, pageQueryReportTypeDTO.getBelongType());
+        }
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+
+    @Override
+    public IPage<ResponseReportTypeListItemVO> queryAvailableReportTypes() {
+        // TODO: 2021/5/19 根据用户关联的项目,查询用户可选的报告类型
+        return null;
+    }
+}

+ 2 - 4
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/controller/ReportBusinessDetailController.java

@@ -5,7 +5,6 @@ import com.persagy.apm.energy.report.monthly.detail.business.service.IReportBusi
 import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
 import com.persagy.apm.energy.report.monthly.detail.business.model.*;
 import com.persagy.apm.energy.report.monthly.detail.business.model.vo.*;
 import com.persagy.apm.energy.report.monthly.detail.business.model.dto.*;
@@ -15,7 +14,6 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import java.util.List;
 
 /**
  * 报告详情控制层
@@ -42,8 +40,8 @@ public class ReportBusinessDetailController {
     @ApiOperation(value = "查看报告详情")
     @PostMapping("/get")
     public CommonResult<ResponseReportBusinessDetailItemVO> queryReportBusinessDetailDetail(
-            @Valid @RequestBody QueryReportBusinessDetailDetailDTO queryReportBusinessDetailDetailDTO) {
-        ReportBusinessDetail reportBusinessDetail = reportBusinessDetailService.queryReportBusinessDetailDetail(queryReportBusinessDetailDetailDTO.getId());
+            @Valid @RequestBody GetReportBusinessDetailDTO getReportBusinessDetailDTO) {
+        ReportBusinessDetail reportBusinessDetail = reportBusinessDetailService.queryReportBusinessDetailDetail(getReportBusinessDetailDTO.getId());
         ResponseReportBusinessDetailItemVO responseReportBusinessDetailItemVO = ConvertReportBusinessDetailTool.INSTANCE.convert2ResponseItemDTO(reportBusinessDetail);
         return ResultHelper.single(responseReportBusinessDetailItemVO);
     }

+ 4 - 44
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/CompareCost.java

@@ -1,57 +1,17 @@
 package com.persagy.apm.energy.report.monthly.detail.business.model;
 
+import com.persagy.apm.energy.report.monthly.detail.business.model.vo.CostVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
  * @author lixing
  * @version V1.0 2021/5/17 3:15 下午
  **/
+@EqualsAndHashCode(callSuper = true)
 @Data
 @ApiModel(value = "可同比项目能源费")
-public class CompareCost {
-
-    @ApiModelProperty("当前能耗类型编码")
-    private String code;
-
-    @ApiModelProperty("当前能耗类型名称")
-    private String name;
-
-    @ApiModelProperty("父级能耗类型编码")
-    private String parentCode;
-
-    @ApiModelProperty("父级能耗类型名称")
-    private String parentName;
-
-    @ApiModelProperty("本月费用")
-    private Double currentMonth;
-
-    @ApiModelProperty("上月费用")
-    private Double lastMonth;
-
-    @ApiModelProperty("本年度累计费用")
-    private Double yearCount;
-
-    @ApiModelProperty("去年同期累计费用")
-    private Double lastYearCount;
-
-    @ApiModelProperty("环比增量")
-    private Double linkCount;
-
-    @ApiModelProperty("环比增幅")
-    private Double linkRange;
-
-    @ApiModelProperty("同比增量")
-    private Double sameCount;
-
-    @ApiModelProperty("同比增幅")
-    private Double sameRange;
-
-    @ApiModelProperty("本年单方能源费")
-    private Double yearPerCount;
-
-    @ApiModelProperty("去年单方能源费")
-    private Double lastYearPerCount;
-
+public class CompareCost extends CostVO {
 }

+ 4 - 45
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/ComparePower.java

@@ -1,57 +1,16 @@
 package com.persagy.apm.energy.report.monthly.detail.business.model;
 
+import com.persagy.apm.energy.report.monthly.detail.business.model.vo.PowerVO;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
  * @author lixing
  * @version V1.0 2021/5/17 3:15 下午
  **/
+@EqualsAndHashCode(callSuper = true)
 @Data
 @ApiModel(value = "可同比项目用电量")
-public class ComparePower {
-
-    @ApiModelProperty("当前能耗类型编码")
-    private String code;
-
-    @ApiModelProperty("当前能耗类型名称")
-    private String name;
-
-    @ApiModelProperty("父级能耗类型编码")
-    private String parentCode;
-
-    @ApiModelProperty("父级能耗类型名称")
-    private String parentName;
-
-    @ApiModelProperty("本月用电量")
-    private Double currentMonth;
-
-    @ApiModelProperty("上月用电量")
-    private Double lastMonth;
-
-    @ApiModelProperty("本年度累计用电量")
-    private Double yearCount;
-
-    @ApiModelProperty("去年同期累计用电量")
-    private Double lastYearCount;
-
-    @ApiModelProperty("环比增量")
-    private Double linkCount;
-
-    @ApiModelProperty("环比增幅")
-    private Double linkRange;
-
-    @ApiModelProperty("同比增量")
-    private Double sameCount;
-
-    @ApiModelProperty("同比增幅")
-    private Double sameRange;
-
-    @ApiModelProperty("本年单方用电量")
-    private Double yearPerCount;
-
-    @ApiModelProperty("去年单方用电量")
-    private Double lastYearPerCount;
-
+public class ComparePower extends PowerVO {
 }

+ 4 - 44
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/OpenCost.java

@@ -1,57 +1,17 @@
 package com.persagy.apm.energy.report.monthly.detail.business.model;
 
+import com.persagy.apm.energy.report.monthly.detail.business.model.vo.CostVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
  * @author lixing
  * @version V1.0 2021/5/17 3:15 下午
  **/
+@EqualsAndHashCode(callSuper = true)
 @Data
 @ApiModel(value = "在营项目能源费")
-public class OpenCost {
-
-    @ApiModelProperty("当前能耗类型编码")
-    private String code;
-
-    @ApiModelProperty("当前能耗类型名称")
-    private String name;
-
-    @ApiModelProperty("父级能耗类型编码")
-    private String parentCode;
-
-    @ApiModelProperty("父级能耗类型名称")
-    private String parentName;
-
-    @ApiModelProperty("本月费用")
-    private Double currentMonth;
-
-    @ApiModelProperty("上月费用")
-    private Double lastMonth;
-
-    @ApiModelProperty("本年度累计费用")
-    private Double yearCount;
-
-    @ApiModelProperty("去年同期累计费用")
-    private Double lastYearCount;
-
-    @ApiModelProperty("环比增量")
-    private Double linkCount;
-
-    @ApiModelProperty("环比增幅")
-    private Double linkRange;
-
-    @ApiModelProperty("同比增量")
-    private Double sameCount;
-
-    @ApiModelProperty("同比增幅")
-    private Double sameRange;
-
-    @ApiModelProperty("本年单方能源费")
-    private Double yearPerCount;
-
-    @ApiModelProperty("去年单方能源费")
-    private Double lastYearPerCount;
-
+public class OpenCost extends CostVO {
 }

+ 4 - 45
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/OpenPower.java

@@ -1,57 +1,16 @@
 package com.persagy.apm.energy.report.monthly.detail.business.model;
 
+import com.persagy.apm.energy.report.monthly.detail.business.model.vo.PowerVO;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
  * @author lixing
  * @version V1.0 2021/5/17 3:15 下午
  **/
+@EqualsAndHashCode(callSuper = true)
 @Data
 @ApiModel(value = "在营项目用电量")
-public class OpenPower {
-
-    @ApiModelProperty("当前能耗类型编码")
-    private String code;
-
-    @ApiModelProperty("当前能耗类型名称")
-    private String name;
-
-    @ApiModelProperty("父级能耗类型编码")
-    private String parentCode;
-
-    @ApiModelProperty("父级能耗类型名称")
-    private String parentName;
-
-    @ApiModelProperty("本月用电量")
-    private Double currentMonth;
-
-    @ApiModelProperty("上月用电量")
-    private Double lastMonth;
-
-    @ApiModelProperty("本年度累计用电量")
-    private Double yearCount;
-
-    @ApiModelProperty("去年同期累计用电量")
-    private Double lastYearCount;
-
-    @ApiModelProperty("环比增量")
-    private Double linkCount;
-
-    @ApiModelProperty("环比增幅")
-    private Double linkRange;
-
-    @ApiModelProperty("同比增量")
-    private Double sameCount;
-
-    @ApiModelProperty("同比增幅")
-    private Double sameRange;
-
-    @ApiModelProperty("本年单方用电量")
-    private Double yearPerCount;
-
-    @ApiModelProperty("去年单方用电量")
-    private Double lastYearPerCount;
-
+public class OpenPower extends PowerVO {
 }

+ 22 - 6
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/Platform.java

@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * @author lixing
  * @version V1.0 2021/5/17 3:15 下午
@@ -12,13 +14,27 @@ import lombok.Data;
 @ApiModel(value = "能耗管理平台运维")
 public class Platform {
 
-    @ApiModelProperty("编码")
-    private String code;
+    @ApiModelProperty("模型编码")
+    private String modelCode;
+
+    @ApiModelProperty("模型名称")
+    private String modelName;
+
+    @ApiModelProperty("每月结果")
+    private List<Double> monthlySummaries;
+
+    @ApiModelProperty("合格标准")
+    private String standardValue;
+
+    @ApiModelProperty("校验规则")
+    private String qualifyFormula;
 
-    @ApiModelProperty("名称")
-    private String name;
+    @ApiModelProperty("达标数量")
+    private Integer satisfiedCount;
 
-    @ApiModelProperty("数据")
-    private String data;
+    @ApiModelProperty("未达标数量")
+    private Integer unsatisfiedCount;
 
+    @ApiModelProperty("未达标项目名称")
+    private List<String> unsatisfiedProjects;
 }

+ 4 - 4
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/ReportBusinessDetail.java

@@ -28,28 +28,28 @@ public class ReportBusinessDetail extends AuditableEntity<ReportBusinessDetail>
 
     @ApiModelProperty("在营项目用电量数据对象信息,项目月报使用此字段")
     @TableField(typeHandler = FastjsonTypeHandler.class)
-    private List<OpenPower> openPower;
+    private OpenPower openPower;
 
     @ApiModelProperty("在营项目用电情况说明")
     private String openPowerExplain;
 
     @ApiModelProperty("可同比项目用电量数据对象信息")
     @TableField(typeHandler = FastjsonTypeHandler.class)
-    private List<ComparePower> comparePower;
+    private ComparePower comparePower;
 
     @ApiModelProperty("可同比项目用电情况说明")
     private String comparePowerExplain;
 
     @ApiModelProperty("在营项目能源费数据对象信息,项目月报使用此字段")
     @TableField(typeHandler = FastjsonTypeHandler.class)
-    private List<OpenCost> openCost;
+    private OpenCost openCost;
 
     @ApiModelProperty("在营项目费用说明")
     private String openCostExplain;
 
     @ApiModelProperty("可同比项目能源费数据对象信息")
     @TableField(typeHandler = FastjsonTypeHandler.class)
-    private List<CompareCost> compareCost;
+    private CompareCost compareCost;
 
     @ApiModelProperty("可同比项目费用说明")
     private String compareCostExplain;

+ 15 - 28
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/dto/AddReportBusinessDetailDTO.java

@@ -1,5 +1,6 @@
 package com.persagy.apm.energy.report.monthly.detail.business.model.dto;
 
+import com.persagy.apm.energy.report.config.rel.detailmodel.model.dto.AddReportDetailModelRelDTO;
 import com.persagy.apm.energy.report.monthly.detail.business.model.*;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -18,56 +19,42 @@ import java.util.List;
 @Data
 @ApiModel(value = "创建报告详情入参")
 public class AddReportBusinessDetailDTO {
-    @ApiModelProperty(value = "在营项目用电量数据对象信息,项目月报使用此字段", required = true)
-    @NotNull(message = "在营项目用电量数据对象信息,项目月报使用此字段不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "在营项目用电量数据对象信息,项目月报使用此字段")
     private List<OpenPower> openPower;
 
-    @ApiModelProperty(value = "在营项目用电情况说明", required = true)
-    @NotNull(message = "在营项目用电情况说明不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "在营项目用电情况说明")
     private String openPowerExplain;
 
-    @ApiModelProperty(value = "可同比项目用电量数据对象信息", required = true)
-    @NotNull(message = "可同比项目用电量数据对象信息不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "可同比项目用电量数据对象信息")
     private List<ComparePower> comparePower;
 
-    @ApiModelProperty(value = "可同比项目用电情况说明", required = true)
-    @NotNull(message = "可同比项目用电情况说明不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "可同比项目用电情况说明")
     private String comparePowerExplain;
 
-    @ApiModelProperty(value = "在营项目能源费数据对象信息,项目月报使用此字段", required = true)
-    @NotNull(message = "在营项目能源费数据对象信息,项目月报使用此字段不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "在营项目能源费数据对象信息,项目月报使用此字段")
     private List<OpenCost> openCost;
 
-    @ApiModelProperty(value = "在营项目费用说明", required = true)
-    @NotNull(message = "在营项目费用说明不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "在营项目费用说明")
     private String openCostExplain;
 
-    @ApiModelProperty(value = "可同比项目能源费数据对象信息", required = true)
-    @NotNull(message = "可同比项目能源费数据对象信息不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "可同比项目能源费数据对象信息")
     private List<CompareCost> compareCost;
 
-    @ApiModelProperty(value = "可同比项目费用说明", required = true)
-    @NotNull(message = "可同比项目费用说明不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "可同比项目费用说明")
     private String compareCostExplain;
 
-    @ApiModelProperty(value = "能耗管理工作开展对象信息", required = true)
-    @NotNull(message = "能耗管理工作开展对象信息不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "能耗管理工作开展对象信息")
     private List<Job> job;
 
-    @ApiModelProperty(value = "备注说明", required = true)
-    @NotNull(message = "备注说明不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "备注说明")
     private String remark;
 
-    @ApiModelProperty(value = "能耗管理平台运维对象信息", required = true)
-    @NotNull(message = "能耗管理平台运维对象信息不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "能耗管理平台运维对象信息")
     private List<Platform> platform;
 
-    @ApiModelProperty(value = "事项说明", required = true)
-    @NotNull(message = "事项说明不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "事项说明")
     private String itemExplain;
 
-    @ApiModelProperty(value = "关联的项目", required = true)
-    @NotNull(message = "关联的项目不能为空") // todo 更新校验规则
-    private Object projectIds;
-
+    @ApiModelProperty(value = "模型补充说明")
+    private List<AddReportDetailModelRelDTO> modelSupplements;
 }

+ 4 - 1
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/dto/QueryReportBusinessDetailDetailDTO.java

@@ -12,9 +12,12 @@ import javax.validation.constraints.NotNull;
  */
 @Data
 @ApiModel(value = "获取报告详情详情入参")
-public class QueryReportBusinessDetailDetailDTO {
+public class GetReportBusinessDetailDTO {
     @NotNull(message = "主键不能为空")
     @ApiModelProperty(value = "主键", required = true)
     private String id;
 
+    @NotNull(message = "报告类型id不能为空")
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
 }

+ 18 - 41
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/dto/UpdateReportBusinessDetailDTO.java

@@ -1,9 +1,11 @@
 package com.persagy.apm.energy.report.monthly.detail.business.model.dto;
 
+import com.persagy.apm.energy.report.config.rel.detailmodel.model.dto.AddReportDetailModelRelDTO;
 import com.persagy.apm.energy.report.monthly.detail.business.model.*;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 import lombok.Data;
@@ -19,59 +21,34 @@ import java.util.List;
 @ApiModel(value = "更新报告详情入参")
 public class UpdateReportBusinessDetailDTO {
     @ApiModelProperty(value = "主键", required = true)
-    @NotNull(message = "主键不能为空") // todo 更新校验规则
+    @NotBlank(message = "主键不能为空")
     private String id;
 
-    @ApiModelProperty(value = "在营项目用电量数据对象信息,项目月报使用此字段", required = true)
-    @NotNull(message = "在营项目用电量数据对象信息,项目月报使用此字段不能为空") // todo 更新校验规则
-    private List<OpenPower> openPower;
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空")
+    private String reportTypeId;
 
-    @ApiModelProperty(value = "在营项目用电情况说明", required = true)
-    @NotNull(message = "在营项目用电情况说明不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "在营项目用电情况说明")
     private String openPowerExplain;
 
-    @ApiModelProperty(value = "可同比项目用电量数据对象信息", required = true)
-    @NotNull(message = "可同比项目用电量数据对象信息不能为空") // todo 更新校验规则
-    private List<ComparePower> comparePower;
-
-    @ApiModelProperty(value = "可同比项目用电情况说明", required = true)
-    @NotNull(message = "可同比项目用电情况说明不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "可同比项目用电情况说明")
     private String comparePowerExplain;
 
-    @ApiModelProperty(value = "在营项目能源费数据对象信息,项目月报使用此字段", required = true)
-    @NotNull(message = "在营项目能源费数据对象信息,项目月报使用此字段不能为空") // todo 更新校验规则
-    private List<OpenCost> openCost;
-
-    @ApiModelProperty(value = "在营项目费用说明", required = true)
-    @NotNull(message = "在营项目费用说明不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "在营项目费用说明")
     private String openCostExplain;
 
-    @ApiModelProperty(value = "可同比项目能源费数据对象信息", required = true)
-    @NotNull(message = "可同比项目能源费数据对象信息不能为空") // todo 更新校验规则
-    private List<CompareCost> compareCost;
-
-    @ApiModelProperty(value = "可同比项目费用说明", required = true)
-    @NotNull(message = "可同比项目费用说明不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "可同比项目费用说明")
     private String compareCostExplain;
 
-    @ApiModelProperty(value = "能耗管理工作开展对象信息", required = true)
-    @NotNull(message = "能耗管理工作开展对象信息不能为空") // todo 更新校验规则
-    private List<Job> job;
-
-    @ApiModelProperty(value = "备注说明", required = true)
-    @NotNull(message = "备注说明不能为空") // todo 更新校验规则
-    private String remark;
-
-    @ApiModelProperty(value = "能耗管理平台运维对象信息", required = true)
-    @NotNull(message = "能耗管理平台运维对象信息不能为空") // todo 更新校验规则
-    private List<Platform> platform;
+    @ApiModelProperty(value = "能耗管理工作开展对象信息")
+    private List<Job> jobs;
 
-    @ApiModelProperty(value = "事项说明", required = true)
-    @NotNull(message = "事项说明不能为空") // todo 更新校验规则
-    private String itemExplain;
+    @ApiModelProperty(value = "能耗管理工作备注")
+    private String jobRemark;
 
-    @ApiModelProperty(value = "关联的项目", required = true)
-    @NotNull(message = "关联的项目不能为空") // todo 更新校验规则
-    private Object projectIds;
+    @ApiModelProperty(value = "平台其他事项说明")
+    private String platformSupplement;
 
+    @ApiModelProperty(value = "模型补充说明")
+    private List<AddReportDetailModelRelDTO> modelSupplements;
 }

+ 47 - 0
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/CostItemVO.java

@@ -0,0 +1,47 @@
+package com.persagy.apm.energy.report.monthly.detail.business.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author lixing
+ * @version V1.0 2021/5/17 3:15 下午
+ **/
+@Data
+@ApiModel(value = "费用条目")
+public class CostItemVO {
+    @ApiModelProperty("条目名称")
+    private String name;
+
+    @ApiModelProperty("本月费用")
+    private Double currentMonth;
+
+    @ApiModelProperty("上月费用")
+    private Double lastMonth;
+
+    @ApiModelProperty("本年度累计费用")
+    private Double yearCount;
+
+    @ApiModelProperty("去年同期累计费用")
+    private Double lastYearCount;
+
+    @ApiModelProperty("环比增量")
+    private Double linkCount;
+
+    @ApiModelProperty("环比增幅")
+    private Double linkRange;
+
+    @ApiModelProperty("同比增量")
+    private Double sameCount;
+
+    @ApiModelProperty("同比增幅")
+    private Double sameRange;
+
+    @ApiModelProperty("本年单方能源费")
+    private Double yearPerCount;
+
+    @ApiModelProperty("去年单方能源费")
+    private Double lastYearPerCount;
+
+}

+ 22 - 0
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/CostVO.java

@@ -0,0 +1,22 @@
+package com.persagy.apm.energy.report.monthly.detail.business.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author lixing
+ * @version V1.0 2021/5/17 3:15 下午
+ **/
+@Data
+@ApiModel(value = "费用")
+public class CostVO {
+    @ApiModelProperty(value = "分组信息")
+    private List<GroupInfo<CostItemVO>> groups;
+    @ApiModelProperty(value = "条目信息")
+    private List<CostItemVO> items;
+    @ApiModelProperty(value = "统计信息")
+    private CostItemVO summary;
+}

+ 22 - 0
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/GroupInfo.java

@@ -0,0 +1,22 @@
+package com.persagy.apm.energy.report.monthly.detail.business.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author lixing
+ * @version V1.0 2021/5/20 11:15 上午
+ **/
+@ApiModel
+@Data
+public class GroupInfo<T> {
+    @ApiModelProperty("分组名称")
+    private String groupName;
+    @ApiModelProperty("包含的分项")
+    private List<T> items;
+    @ApiModelProperty("统计信息")
+    private T summary;
+}

+ 49 - 0
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/PowerItemVO.java

@@ -0,0 +1,49 @@
+package com.persagy.apm.energy.report.monthly.detail.business.model.vo;
+
+import com.persagy.apm.energy.report.config.itemgroup.model.vo.ResponseItemGroupItemVO;
+import com.persagy.apm.energy.report.monthly.detail.business.model.vo.GroupInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author lixing
+ * @version V1.0 2021/5/17 3:15 下午
+ **/
+@Data
+@ApiModel(value = "用电量条目信息")
+public class PowerItemVO {
+    @ApiModelProperty("条目名称")
+    private String name;
+
+    @ApiModelProperty("本月用电量")
+    private Double currentMonth;
+
+    @ApiModelProperty("上月用电量")
+    private Double lastMonth;
+
+    @ApiModelProperty("本年度累计用电量")
+    private Double yearCount;
+
+    @ApiModelProperty("去年同期累计用电量")
+    private Double lastYearCount;
+
+    @ApiModelProperty("环比增量")
+    private Double linkCount;
+
+    @ApiModelProperty("环比增幅")
+    private Double linkRange;
+
+    @ApiModelProperty("同比增量")
+    private Double sameCount;
+
+    @ApiModelProperty("同比增幅")
+    private Double sameRange;
+
+    @ApiModelProperty("本年单方用电量")
+    private Double yearPerCount;
+
+    @ApiModelProperty("去年单方用电量")
+    private Double lastYearPerCount;
+
+}

+ 22 - 0
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/PowerVO.java

@@ -0,0 +1,22 @@
+package com.persagy.apm.energy.report.monthly.detail.business.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author lixing
+ * @version V1.0 2021/5/17 3:15 下午
+ **/
+@Data
+@ApiModel(value = "用电量")
+public class PowerVO {
+    @ApiModelProperty(value = "分组信息")
+    private List<GroupInfo<PowerItemVO>> groups;
+    @ApiModelProperty(value = "条目信息")
+    private List<PowerItemVO> items;
+    @ApiModelProperty(value = "统计信息")
+    private PowerItemVO summary;
+}

+ 15 - 18
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/model/vo/ResponseReportBusinessDetailItemVO.java

@@ -1,15 +1,16 @@
 package com.persagy.apm.energy.report.monthly.detail.business.model.vo;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.persagy.apm.energy.report.config.rel.detailmodel.model.vo.ResponseReportDetailModelRelItemVO;
 import com.persagy.apm.energy.report.monthly.detail.business.model.*;
+import com.persagy.apm.energy.report.saasweb.model.vo.ReportAreaVO;
+import com.persagy.apm.energy.report.saasweb.model.vo.ReportProjectVO;
 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;
-
 /**
  * @author lixing
  * @version V1.0 2021-05-17 11:08:35
@@ -21,6 +22,15 @@ public class ResponseReportBusinessDetailItemVO {
     @ApiModelProperty("主键")
     private String id;
 
+    @ApiModelProperty("项目信息")
+    private ReportProjectVO projectInfo;
+
+    @ApiModelProperty("在营分区信息")
+    private ReportAreaVO openAreaInfo;
+
+    @ApiModelProperty("可同比分区信息")
+    private ReportAreaVO compareAreaInfo;
+
     @ApiModelProperty("在营项目用电量数据对象信息,项目月报使用此字段")
     private List<OpenPower> openPower;
 
@@ -57,19 +67,6 @@ public class ResponseReportBusinessDetailItemVO {
     @ApiModelProperty("事项说明")
     private String itemExplain;
 
-    @ApiModelProperty("关联的项目")
-    private Object projectIds;
-
-    @ApiModelProperty("创建人")
-    private String creator;
-
-    @ApiModelProperty("创建时间")
-    private Date creationTime;
-
-    @ApiModelProperty("最后修改人")
-    private String modifier;
-
-    @ApiModelProperty("最后修改时间")
-    private Date modifiedTime;
-
+    @ApiModelProperty(value = "模型补充说明")
+    private List<ResponseReportDetailModelRelItemVO> modelSupplements;
 }

+ 3 - 3
src/main/java/com/persagy/apm/energy/report/monthly/detail/business/service/impl/ReportBusinessDetailServiceImpl.java

@@ -1,6 +1,6 @@
 package com.persagy.apm.energy.report.monthly.detail.business.service.impl;
 
-import com.persagy.apm.common.context.AppContext;
+import com.persagy.apm.common.context.poems.PoemsContext;
 import com.persagy.apm.energy.report.monthly.detail.business.dao.ReportBusinessDetailMapper;
 import com.persagy.apm.energy.report.monthly.detail.business.service.IReportBusinessDetailService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -53,7 +53,7 @@ public class ReportBusinessDetailServiceImpl extends ServiceImpl<ReportBusinessD
      * @version V1.0 2021/3/12 12:29 下午
      */
     private void setDefaultValue(ReportBusinessDetail reportBusinessDetail) {
-        reportBusinessDetail.setCreator(AppContext.getContext().getAccountId());
+        reportBusinessDetail.setCreator(PoemsContext.getContext().getUserId());
         // todo 其他默认的属性
 
     }
@@ -85,7 +85,7 @@ public class ReportBusinessDetailServiceImpl extends ServiceImpl<ReportBusinessD
     public void updateReportBusinessDetail(UpdateReportBusinessDetailDTO updateReportBusinessDetailDTO) {
         ReportBusinessDetail reportBusinessDetail = getById(updateReportBusinessDetailDTO.getId());
         reportBusinessDetail = ConvertReportBusinessDetailTool.INSTANCE.convertUpdateDto2Entity(reportBusinessDetail, updateReportBusinessDetailDTO);
-        reportBusinessDetail.setModifier(AppContext.getContext().getAccountId());
+        reportBusinessDetail.setModifier(PoemsContext.getContext().getUserId());
         updateById(reportBusinessDetail);
     }
 

+ 0 - 7
src/main/java/com/persagy/apm/energy/report/monthly/outline/controller/ReportOutLineEnumController.java

@@ -42,11 +42,4 @@ public class ReportOutLineEnumController {
         List<EnumVO> resultList = reportOutLineEnumService.queryReportStateEnum();
         return ResultHelper.multi(resultList);
     }
-
-    @ApiOperation(value = "当前用户可用的报告类型")
-    @PostMapping("/reportType")
-    public CommonResult<PageList<EnumVO>> queryReportTypeEnum() {
-        IPage<EnumVO> resultList = reportOutLineEnumService.queryReportTypeEnum();
-        return ResultHelper.multi(resultList);
-    }
 }

+ 16 - 2
src/main/java/com/persagy/apm/energy/report/monthly/outline/controller/ReportOutlineController.java

@@ -1,10 +1,13 @@
 package com.persagy.apm.energy.report.monthly.outline.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.common.model.vo.EnumVO;
 import com.persagy.apm.common.response.ApmResponseUpsertVO;
 import com.persagy.apm.common.response.CommonResult;
 import com.persagy.apm.common.response.PageList;
 import com.persagy.apm.common.utils.ResultHelper;
+import com.persagy.apm.energy.report.config.type.model.vo.ResponseReportTypeListItemVO;
+import com.persagy.apm.energy.report.config.type.service.IReportTypeService;
 import com.persagy.apm.energy.report.monthly.outline.model.ConvertReportOutlineTool;
 import com.persagy.apm.energy.report.monthly.outline.model.ReportOutline;
 import com.persagy.apm.energy.report.monthly.outline.model.dto.AddReportOutlineDTO;
@@ -12,6 +15,8 @@ import com.persagy.apm.energy.report.monthly.outline.model.dto.PageQueryReportOu
 import com.persagy.apm.energy.report.monthly.outline.model.dto.QueryReportOutlineDTO;
 import com.persagy.apm.energy.report.monthly.outline.model.vo.ResponseReportOutlineListItemVO;
 import com.persagy.apm.energy.report.monthly.outline.service.IReportOutlineService;
+import com.persagy.apm.energy.report.saasweb.model.vo.PartitionVO;
+import com.persagy.apm.energy.report.saasweb.model.vo.SimpleProjectVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
@@ -39,6 +44,8 @@ import java.util.List;
 public class ReportOutlineController {
     @Autowired
     private IReportOutlineService reportOutlineService;
+    @Autowired
+    private IReportTypeService reportTypeService;
 
     @ApiOperation(value = "创建报告概要")
     @PostMapping("/create")
@@ -102,16 +109,23 @@ public class ReportOutlineController {
 
     @ApiOperation(value = "查询用户可选项目范围")
     @PostMapping("/queryAvailableProjects")
-    public CommonResult<PageList<ResponseReportOutlineListItemVO>> queryAvailableProjects() {
+    public CommonResult<PageList<SimpleProjectVO>> queryAvailableProjects() {
         // TODO: 2021/5/17 查询用户可选项目范围
         return ResultHelper.multi(Lists.newArrayList());
     }
 
     @ApiOperation(value = "查询用户可选分区范围")
     @PostMapping("/queryAvailableAreas")
-    public CommonResult<PageList<ResponseReportOutlineListItemVO>> queryAvailableAreas() {
+    public CommonResult<PageList<PartitionVO>> queryAvailableAreas() {
         // TODO: 2021/5/17 查询用户可选分区范围
         return ResultHelper.multi(Lists.newArrayList());
     }
+
+    @ApiOperation(value = "当前用户可用的报告类型")
+    @PostMapping("/availableReportTypes")
+    public CommonResult<PageList<ResponseReportTypeListItemVO>> queryAvaliableReportTypes() {
+        IPage<ResponseReportTypeListItemVO> resultList = reportTypeService.queryAvailableReportTypes();
+        return ResultHelper.multi(resultList);
+    }
 }
 

+ 0 - 0
src/main/java/com/persagy/apm/energy/report/monthly/outline/model/ReportOutline.java


部分文件因为文件数量过多而无法显示