Forráskód Böngészése

报告仓库初始化

lixing 3 éve
commit
53998be206
100 módosított fájl, 5377 hozzáadás és 0 törlés
  1. 9 0
      .gitignore
  2. 0 0
      README.md
  3. 116 0
      pom.xml
  4. 58 0
      src/main/java/com/persagy/apm/report/config/function/constant/enums/EnergyTypeEnum.java
  5. 55 0
      src/main/java/com/persagy/apm/report/config/function/constant/enums/FunctionTypeEnum.java
  6. 101 0
      src/main/java/com/persagy/apm/report/config/function/controller/FunctionController.java
  7. 16 0
      src/main/java/com/persagy/apm/report/config/function/dao/FunctionMapper.java
  8. 78 0
      src/main/java/com/persagy/apm/report/config/function/model/ConvertFunctionTool.java
  9. 53 0
      src/main/java/com/persagy/apm/report/config/function/model/Function.java
  10. 43 0
      src/main/java/com/persagy/apm/report/config/function/model/dto/AddFunctionDTO.java
  11. 20 0
      src/main/java/com/persagy/apm/report/config/function/model/dto/DeleteFunctionDTO.java
  12. 41 0
      src/main/java/com/persagy/apm/report/config/function/model/dto/PageQueryFunctionDTO.java
  13. 38 0
      src/main/java/com/persagy/apm/report/config/function/model/dto/QueryFunctionDTO.java
  14. 20 0
      src/main/java/com/persagy/apm/report/config/function/model/dto/QueryFunctionDetailDTO.java
  15. 47 0
      src/main/java/com/persagy/apm/report/config/function/model/dto/UpdateFunctionDTO.java
  16. 53 0
      src/main/java/com/persagy/apm/report/config/function/model/vo/ResponseFunctionItemVO.java
  17. 52 0
      src/main/java/com/persagy/apm/report/config/function/model/vo/ResponseFunctionListItemVO.java
  18. 88 0
      src/main/java/com/persagy/apm/report/config/function/service/IFunctionService.java
  19. 288 0
      src/main/java/com/persagy/apm/report/config/function/service/impl/FunctionServiceImpl.java
  20. 101 0
      src/main/java/com/persagy/apm/report/config/functiongroup/controller/FunctionGroupController.java
  21. 16 0
      src/main/java/com/persagy/apm/report/config/functiongroup/dao/FunctionGroupMapper.java
  22. 78 0
      src/main/java/com/persagy/apm/report/config/functiongroup/model/ConvertFunctionGroupTool.java
  23. 37 0
      src/main/java/com/persagy/apm/report/config/functiongroup/model/FunctionGroup.java
  24. 35 0
      src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/AddFunctionGroupDTO.java
  25. 20 0
      src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/DeleteFunctionGroupDTO.java
  26. 35 0
      src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/PageQueryFunctionGroupDTO.java
  27. 28 0
      src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/QueryFunctionGroupDTO.java
  28. 20 0
      src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/QueryFunctionGroupDetailDTO.java
  29. 39 0
      src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/UpdateFunctionGroupDTO.java
  30. 46 0
      src/main/java/com/persagy/apm/report/config/functiongroup/model/vo/ResponseFunctionGroupItemVO.java
  31. 46 0
      src/main/java/com/persagy/apm/report/config/functiongroup/model/vo/ResponseFunctionGroupListItemVO.java
  32. 77 0
      src/main/java/com/persagy/apm/report/config/functiongroup/service/IFunctionGroupService.java
  33. 214 0
      src/main/java/com/persagy/apm/report/config/functiongroup/service/impl/FunctionGroupServiceImpl.java
  34. 101 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/controller/ReportDetailStatisticsItemRelController.java
  35. 16 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/dao/ReportDetailStatisticsItemRelMapper.java
  36. 78 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/ConvertReportDetailStatisticsItemRelTool.java
  37. 45 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/ReportDetailStatisticsItemRel.java
  38. 37 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/AddReportDetailStatisticsItemRelDTO.java
  39. 20 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/DeleteReportDetailStatisticsItemRelDTO.java
  40. 38 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/PageQueryReportDetailStatisticsItemRelDTO.java
  41. 31 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/QueryReportDetailStatisticsItemRelDTO.java
  42. 20 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/QueryReportDetailStatisticsItemRelDetailDTO.java
  43. 43 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/UpdateReportDetailStatisticsItemRelDTO.java
  44. 36 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/vo/ResponseReportDetailStatisticsItemRelItemVO.java
  45. 49 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/vo/ResponseReportDetailStatisticsItemRelListItemVO.java
  46. 77 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/service/IReportDetailStatisticsItemRelService.java
  47. 232 0
      src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/service/impl/ReportDetailStatisticsItemRelServiceImpl.java
  48. 16 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/dao/ReportTypeFunctionRelMapper.java
  49. 78 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/model/ConvertReportTypeFunctionRelTool.java
  50. 37 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/model/ReportTypeFunctionRel.java
  51. 31 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/AddReportTypeFunctionRelDTO.java
  52. 20 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/DeleteReportTypeFunctionRelDTO.java
  53. 32 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/PageQueryReportTypeFunctionRelDTO.java
  54. 25 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/QueryReportTypeFunctionRelDTO.java
  55. 20 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/QueryReportTypeFunctionRelDetailDTO.java
  56. 35 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/UpdateReportTypeFunctionRelDTO.java
  57. 43 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/model/vo/ResponseReportTypeFunctionRelItemVO.java
  58. 43 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/model/vo/ResponseReportTypeFunctionRelListItemVO.java
  59. 77 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/service/IReportTypeFunctionRelService.java
  60. 212 0
      src/main/java/com/persagy/apm/report/config/rel/typefunction/service/impl/ReportTypeFunctionRelServiceImpl.java
  61. 16 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/dao/ReportTypeFunctionGroupRelMapper.java
  62. 78 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/ConvertReportTypeFunctionGroupRelTool.java
  63. 37 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/ReportTypeFunctionGroupRel.java
  64. 31 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/AddReportTypeFunctionGroupRelDTO.java
  65. 20 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/DeleteReportTypeFunctionGroupRelDTO.java
  66. 32 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/PageQueryReportTypeFunctionGroupRelDTO.java
  67. 25 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/QueryReportTypeFunctionGroupRelDTO.java
  68. 20 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/QueryReportTypeFunctionGroupRelDetailDTO.java
  69. 35 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/UpdateReportTypeFunctionGroupRelDTO.java
  70. 43 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/vo/ResponseReportTypeFunctionGroupRelItemVO.java
  71. 43 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/vo/ResponseReportTypeFunctionGroupRelListItemVO.java
  72. 77 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/service/IReportTypeFunctionGroupRelService.java
  73. 209 0
      src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/service/impl/ReportTypeFunctionGroupRelServiceImpl.java
  74. 101 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/controller/ReportTypeStatisticsItemRelController.java
  75. 16 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/dao/ReportTypeStatisticsItemRelMapper.java
  76. 78 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/ConvertReportTypeStatisticsItemRelTool.java
  77. 33 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/ReportTypeStatisticsItemRel.java
  78. 27 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/AddReportTypeStatisticsItemRelDTO.java
  79. 20 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/DeleteReportTypeStatisticsItemRelDTO.java
  80. 29 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/PageQueryReportTypeStatisticsItemRelDTO.java
  81. 22 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/QueryReportTypeStatisticsItemRelDTO.java
  82. 20 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/QueryReportTypeStatisticsItemRelDetailDTO.java
  83. 31 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/UpdateReportTypeStatisticsItemRelDTO.java
  84. 40 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/vo/ResponseReportTypeStatisticsItemRelItemVO.java
  85. 40 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/vo/ResponseReportTypeStatisticsItemRelListItemVO.java
  86. 77 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/service/IReportTypeStatisticsItemRelService.java
  87. 202 0
      src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/service/impl/ReportTypeStatisticsItemRelServiceImpl.java
  88. 101 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/controller/StatisticItemsController.java
  89. 16 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/dao/StatisticItemsMapper.java
  90. 78 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/model/ConvertStatisticItemsTool.java
  91. 47 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/model/StatisticItems.java
  92. 35 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/AddStatisticItemsDTO.java
  93. 20 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/DeleteStatisticItemsDTO.java
  94. 35 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/PageQueryStatisticItemsDTO.java
  95. 32 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/QueryStatisticItemsDTO.java
  96. 20 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/QueryStatisticItemsDetailDTO.java
  97. 39 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/UpdateStatisticItemsDTO.java
  98. 46 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/model/vo/ResponseStatisticItemsItemVO.java
  99. 46 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/model/vo/ResponseStatisticItemsListItemVO.java
  100. 0 0
      src/main/java/com/persagy/apm/report/config/statisticsitems/service/IStatisticItemsService.java

+ 9 - 0
.gitignore

@@ -0,0 +1,9 @@
+target/
+.settings/
+.project
+.classpath
+*.iml
+*.log
+*.versionsBackup
+.idea/
+/bin/

+ 0 - 0
README.md


+ 116 - 0
pom.xml

@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.persagy</groupId>
+        <artifactId>apm-package</artifactId>
+        <version>3.0.0</version>
+    </parent>
+
+    <artifactId>energy-report</artifactId>
+    <version>1.0.0</version>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+    <repositories>
+        <repository>
+            <id>integrated</id>
+            <name>releases Repository</name>
+            <url>http://47.93.132.139:8081/nexus/content/repositories/integrated/</url>
+        </repository>
+        <repository>
+            <id>persagy</id>
+            <name>persagy Repository</name>
+            <url>http://47.93.132.139:8081/nexus/content/repositories/persagy/</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <!-- 项目启动 -->
+        <dependency>
+            <groupId>com.persagy</groupId>
+            <artifactId>apm-server</artifactId>
+        </dependency>
+        <!-- apm 工具包 -->
+        <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>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+        </dependency>
+
+        <!-- gson json,java对象互转 -->
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
+        <!-- 配置中心(包含注册中心) -->
+        <dependency>
+            <groupId>com.persagy</groupId>
+            <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>
+            <artifactId>integrated-ribbon-spring-boot-starter</artifactId>
+        </dependency>
+
+        <!-- swagger -->
+        <dependency>
+            <groupId>com.persagy</groupId>
+            <artifactId>integrated-swagger2-spring-boot-starter</artifactId>
+        </dependency>
+
+        <!--jep -->
+        <dependency>
+            <groupId>org.scijava</groupId>
+            <artifactId>jep</artifactId>
+            <version>2.4.2</version>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-elasticsearch -->
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-elasticsearch</artifactId>
+            <version>3.2.13.RELEASE</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.persagy</groupId>
+            <artifactId>apm-mybatis</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.baomidou</groupId>
+                    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+</project>

+ 58 - 0
src/main/java/com/persagy/apm/report/config/function/constant/enums/EnergyTypeEnum.java

@@ -0,0 +1,58 @@
+package com.persagy.apm.report.config.function.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 EnergyTypeEnum {
+    /**
+     * 能耗类型
+     */
+    ELECTRICITY(1, "电费"),
+    COLD(2, "冷"),
+    HOT(3, "供暖费"),
+    WATER(4, "水费"),
+    GAS(5, "燃气费"),
+    OIL(6,"燃油"),
+    STEAM(7,"蒸汽");
+
+    @Setter
+    @Getter
+    private Integer type;
+    @Setter
+    @Getter
+    private String desc;
+
+    EnergyTypeEnum(Integer type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+
+    /**
+     * 根据type获取到枚举对象
+     *
+     * @param type 报告状态编码
+     * @return 能耗类型枚举对象
+     * @author lixing
+     * @version V1.0 2021/5/31 4:06 下午
+     */
+    public static EnergyTypeEnum getByType(Integer type) {
+        if (type == null) {
+            return null;
+        }
+        EnergyTypeEnum[] energyTypeEnums = EnergyTypeEnum.values();
+        for (EnergyTypeEnum energyTypeEnum : energyTypeEnums) {
+            if (type.equals(energyTypeEnum.getType())) {
+                return energyTypeEnum;
+            }
+        }
+        return null;
+    }
+}

+ 55 - 0
src/main/java/com/persagy/apm/report/config/function/constant/enums/FunctionTypeEnum.java

@@ -0,0 +1,55 @@
+package com.persagy.apm.report.config.function.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 FunctionTypeEnum {
+    /**
+     * 信息点类型
+     */
+    ENERGY("0", "能耗"),
+    COST("1", "费用"),
+    ENERGY_BUDGET("2", "能耗预算"),
+    COST_BUDGET("3", "费用预算");
+
+    @Setter
+    @Getter
+    private String type;
+    @Setter
+    @Getter
+    private String desc;
+
+    FunctionTypeEnum(String type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+
+    /**
+     * 根据type获取到枚举对象
+     *
+     * @param type 报告状态编码
+     * @return 能耗类型枚举对象
+     * @author lixing
+     * @version V1.0 2021/5/31 4:06 下午
+     */
+    public static FunctionTypeEnum getByType(String type) {
+        if (type == null) {
+            return null;
+        }
+        FunctionTypeEnum[] energyTypeEnums = FunctionTypeEnum.values();
+        for (FunctionTypeEnum energyTypeEnum : energyTypeEnums) {
+            if (type.equals(energyTypeEnum.getType())) {
+                return energyTypeEnum;
+            }
+        }
+        return null;
+    }
+}

+ 101 - 0
src/main/java/com/persagy/apm/report/config/function/controller/FunctionController.java

@@ -0,0 +1,101 @@
+package com.persagy.apm.report.config.function.controller;
+
+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.report.config.function.model.ConvertFunctionTool;
+import com.persagy.apm.report.config.function.model.Function;
+import com.persagy.apm.report.config.function.model.dto.*;
+import com.persagy.apm.report.config.function.model.vo.ResponseFunctionItemVO;
+import com.persagy.apm.report.config.function.model.vo.ResponseFunctionListItemVO;
+import com.persagy.apm.report.config.function.service.IFunctionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 能耗报告信息点控制层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:05:33
+ */
+@ApiIgnore
+@Api(tags = "能耗报告信息点", hidden = true)
+@Validated
+@RestController
+@RequestMapping("functions")
+public class FunctionController {
+    @Autowired
+    private IFunctionService functionService;
+
+    @ApiOperation(value = "创建能耗报告信息点")
+    @PostMapping("/create")
+    public CommonResult<ApmResponseUpsertVO> createFunction(
+            @Valid @RequestBody AddFunctionDTO addFunctionDTO) {
+        String id = functionService.createFunction(addFunctionDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO(id));
+    }
+
+    @ApiOperation(value = "能耗报告信息点详情")
+    @PostMapping("/get")
+    public CommonResult<ResponseFunctionItemVO> queryFunctionDetail(
+            @Valid @RequestBody QueryFunctionDetailDTO queryFunctionDetailDTO) {
+        Function function = functionService.queryFunctionDetail(queryFunctionDetailDTO.getId());
+        ResponseFunctionItemVO responseFunctionItemVO = ConvertFunctionTool.INSTANCE.convert2ResponseItemDTO(function);
+        return ResultHelper.single(responseFunctionItemVO);
+    }
+
+
+    @ApiOperation(value = "更新能耗报告信息点")
+    @PostMapping("/update")
+    public CommonResult<ApmResponseUpsertVO> updateFunction(
+            @Valid @RequestBody UpdateFunctionDTO updateFunctionDTO) {
+        functionService.updateFunction(updateFunctionDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO(updateFunctionDTO.getId()));
+    }
+
+
+    @ApiOperation(value = "删除能耗报告信息点")
+    @PostMapping("/delete")
+    public CommonResult deleteFunction(
+            @RequestBody @Valid DeleteFunctionDTO deleteFunctionDTO) {
+        functionService.deleteFunction(deleteFunctionDTO.getId());
+        return ResultHelper.success();
+    }
+
+
+    @ApiOperation(value = "能耗报告信息点列表")
+    @PostMapping("/query")
+    public CommonResult<PageList<ResponseFunctionListItemVO>> queryFunction(
+            @Valid @RequestBody QueryFunctionDTO queryFunctionDTO) {
+        List<Function> functionList = functionService.queryFunctionList(queryFunctionDTO);
+        List<ResponseFunctionListItemVO> resultList = ConvertFunctionTool.INSTANCE.convert2List(functionList);
+        return ResultHelper.multi(resultList);
+    }
+
+    //@ApiOperation(value = "能耗报告信息点列表, 分页查询")
+    //@PostMapping("/query")
+    //public CommonResult<PageList<ResponseFunctionListItemVO>> queryFunction(
+    //        @Valid @RequestBody PageQueryFunctionDTO pageQueryFunctionDTO) {
+    //    IPage<Function> pagedList = functionService.pageQueryFunction(pageQueryFunctionDTO);
+    //    IPage<ResponseFunctionListItemVO> pagedResultList = pagedList.convert(item -> {
+    //        try {
+    //           return ConvertFunctionTool.INSTANCE.convert2ResponseListItemDTO(item);
+    //        } catch (Exception e) {
+    //            throw new IllegalArgumentException("分页查询,Function实体类转换为列表对象发生异常", e);
+    //        }
+    //    });
+    //    return ResultHelper.multi(pagedResultList);
+    //}
+}
+

+ 16 - 0
src/main/java/com/persagy/apm/report/config/function/dao/FunctionMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.report.config.function.dao;
+
+import com.persagy.apm.report.config.function.model.Function;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 能耗报告信息点(Function)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:05:35
+ */
+@Mapper
+public interface FunctionMapper extends BaseMapper<Function> {
+
+}

+ 78 - 0
src/main/java/com/persagy/apm/report/config/function/model/ConvertFunctionTool.java

@@ -0,0 +1,78 @@
+package com.persagy.apm.report.config.function.model;
+
+import com.persagy.apm.report.config.function.model.dto.AddFunctionDTO;
+import com.persagy.apm.report.config.function.model.dto.UpdateFunctionDTO;
+import com.persagy.apm.report.config.function.model.vo.ResponseFunctionItemVO;
+import com.persagy.apm.report.config.function.model.vo.ResponseFunctionListItemVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.NullValueMappingStrategy;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 能耗报告信息点(Function) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:05:36 2021-05-20 19:05:36
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertFunctionTool {
+
+    ConvertFunctionTool INSTANCE = Mappers.getMapper(ConvertFunctionTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param function do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:36
+     */
+    ResponseFunctionItemVO convert2ResponseItemDTO(Function function);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param function do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:36
+     */
+    ResponseFunctionListItemVO convert2ResponseListItemDTO(Function function);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param functionList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:36
+     */
+    List<ResponseFunctionListItemVO> convert2List(List<Function> functionList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addFunctionDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:36
+     */
+    Function convertAddDto2Entity(AddFunctionDTO addFunctionDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param function          更新前的do对象
+     * @param updateFunctionDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:36
+     */
+    Function convertUpdateDto2Entity(@MappingTarget Function function, UpdateFunctionDTO updateFunctionDTO);
+}
+

+ 53 - 0
src/main/java/com/persagy/apm/report/config/function/model/Function.java

@@ -0,0 +1,53 @@
+package com.persagy.apm.report.config.function.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;
+
+/**
+ * 能耗报告信息点(Function)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:05:35
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "能耗报告信息点")
+public class Function extends AuditableEntity<Function> implements Serializable {
+    private static final long serialVersionUID = 108688063917803317L;
+
+    @ApiModelProperty("集团编码")
+    private String groupCode;
+
+    @ApiModelProperty("能耗类型")
+    private String energyType;
+
+    @ApiModelProperty("建筑类型(业态)")
+    private String buildingType;
+
+    @ApiModelProperty("信息点类型(0-能耗,1-费用 ,2-能耗预算,3-费用预算)")
+    private String functionType;
+
+    @ApiModelProperty("能耗模型编码")
+    private String modelCode;
+
+    @ApiModelProperty("分项id")
+    private String itemId;
+
+    @ApiModelProperty("function名称")
+    private String name;
+
+
+    public static String PROP_GROUP_CODE = "group_code";
+    public static String PROP_ENERGY_TYPE = "energy_type";
+    public static String PROP_BUILDING_TYPE = "building_type";
+    public static String PROP_FUNCTION_TYPE = "function_type";
+    public static String PROP_MODEL_CODE = "model_code";
+    public static String PROP_ITEM_ID = "item_id";
+    public static String PROP_NAME = "name";
+
+}

+ 43 - 0
src/main/java/com/persagy/apm/report/config/function/model/dto/AddFunctionDTO.java

@@ -0,0 +1,43 @@
+package com.persagy.apm.report.config.function.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-20 19:05:35
+ */
+@Data
+@ApiModel(value = "创建能耗报告信息点入参")
+public class AddFunctionDTO {
+    @ApiModelProperty(value = "集团编码", required = true)
+    @NotNull(message = "集团编码不能为空")
+    private String groupCode;
+
+    @ApiModelProperty(value = "能耗类型", required = true)
+    @NotNull(message = "能耗类型不能为空")
+    private String energyType;
+
+    @ApiModelProperty(value = "建筑类型(业态)", required = true)
+    @NotNull(message = "建筑类型(业态)不能为空")
+    private String buildingType;
+
+    @ApiModelProperty(value = "信息点类型(0-能耗,1-费用 ,2-能耗预算,3-费用预算)", required = true)
+    @NotNull(message = "信息点类型(0-能耗,1-费用 ,2-能耗预算,3-费用预算)不能为空")
+    private String functionType;
+
+    @ApiModelProperty(value = "能耗模型编码", required = true)
+    @NotNull(message = "能耗模型编码不能为空")
+    private String modelCode;
+
+    @ApiModelProperty(value = "分项id", required = true)
+    @NotNull(message = "分项id不能为空")
+    private String itemId;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/function/model/dto/DeleteFunctionDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.function.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-20 19:05:36
+ */
+@Data
+@ApiModel(value = "删除能耗报告信息点入参")
+public class DeleteFunctionDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 41 - 0
src/main/java/com/persagy/apm/report/config/function/model/dto/PageQueryFunctionDTO.java

@@ -0,0 +1,41 @@
+package com.persagy.apm.report.config.function.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-20 19:05:36
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询能耗报告信息点入参")
+public class PageQueryFunctionDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "集团编码", required = true)
+    private String groupCode;
+
+    @ApiModelProperty(value = "能耗类型", required = true)
+    private String energyType;
+
+    @ApiModelProperty(value = "建筑类型(业态)", required = true)
+    private String buildingType;
+
+    @ApiModelProperty(value = "信息点类型(0-能耗,1-费用 ,2-能耗预算,3-费用预算)", required = true)
+    private String functionType;
+
+    @ApiModelProperty(value = "能耗模型编码", required = true)
+    private String modelCode;
+
+    @ApiModelProperty(value = "分项id", required = true)
+    private String itemId;
+
+}

+ 38 - 0
src/main/java/com/persagy/apm/report/config/function/model/dto/QueryFunctionDTO.java

@@ -0,0 +1,38 @@
+package com.persagy.apm.report.config.function.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-20 19:05:36
+ */
+@Data
+@ApiModel(value = "查询能耗报告信息点入参")
+public class QueryFunctionDTO {
+    @ApiModelProperty(value = "功能点id列表")
+    private List<String> functionIdList;
+    
+    @ApiModelProperty(value = "集团编码")
+    private String groupCode;
+
+    @ApiModelProperty(value = "能耗类型")
+    private String energyType;
+
+    @ApiModelProperty(value = "建筑类型(业态)")
+    private String buildingType;
+
+    @ApiModelProperty(value = "信息点类型(0-能耗,1-费用 ,2-能耗预算,3-费用预算)")
+    private String functionType;
+
+    @ApiModelProperty(value = "能耗模型编码")
+    private String modelCode;
+
+    @ApiModelProperty(value = "分项id")
+    private String itemId;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/function/model/dto/QueryFunctionDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.function.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-20 19:05:36
+ */
+@Data
+@ApiModel(value = "获取能耗报告信息点详情入参")
+public class QueryFunctionDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 47 - 0
src/main/java/com/persagy/apm/report/config/function/model/dto/UpdateFunctionDTO.java

@@ -0,0 +1,47 @@
+package com.persagy.apm.report.config.function.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-20 19:05:36
+ */
+@Data
+@ApiModel(value = "更新能耗报告信息点入参")
+public class UpdateFunctionDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空")
+    private String id;
+
+    @ApiModelProperty(value = "集团编码", required = true)
+    @NotNull(message = "集团编码不能为空")
+    private String groupCode;
+
+    @ApiModelProperty(value = "能耗类型", required = true)
+    @NotNull(message = "能耗类型不能为空")
+    private String energyType;
+
+    @ApiModelProperty(value = "建筑类型(业态)", required = true)
+    @NotNull(message = "建筑类型(业态)不能为空")
+    private String buildingType;
+
+    @ApiModelProperty(value = "信息点类型(0-能耗,1-费用 ,2-能耗预算,3-费用预算)", required = true)
+    @NotNull(message = "信息点类型(0-能耗,1-费用 ,2-能耗预算,3-费用预算)不能为空")
+    private String functionType;
+
+    @ApiModelProperty(value = "能耗模型编码", required = true)
+    @NotNull(message = "能耗模型编码不能为空")
+    private String modelCode;
+
+    @ApiModelProperty(value = "分项id", required = true)
+    @NotNull(message = "分项id不能为空")
+    private String itemId;
+
+}

+ 53 - 0
src/main/java/com/persagy/apm/report/config/function/model/vo/ResponseFunctionItemVO.java

@@ -0,0 +1,53 @@
+package com.persagy.apm.report.config.function.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-20 19:05:36
+ */
+@Data
+@ApiModel(value = "能耗报告信息点返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseFunctionItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("集团编码")
+    private String groupCode;
+
+    @ApiModelProperty(value = "能耗类型",
+            notes = "com.persagy.apm.energy.report.monthly.config.function.constant.enums.EnergyTypeEnum")
+    private String energyType;
+
+    @ApiModelProperty("建筑类型(业态)")
+    private String buildingType;
+
+    @ApiModelProperty(value = "信息点类型",
+            notes = "com.persagy.apm.energy.report.monthly.config.function.constant.enums.FunctionTypeEnum")
+    private String functionType;
+
+    @ApiModelProperty("能耗模型编码")
+    private String modelCode;
+
+    @ApiModelProperty("分项id")
+    private String itemId;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 52 - 0
src/main/java/com/persagy/apm/report/config/function/model/vo/ResponseFunctionListItemVO.java

@@ -0,0 +1,52 @@
+package com.persagy.apm.report.config.function.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-20 19:05:36
+ */
+@Data
+@ApiModel(value = "能耗报告信息点列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseFunctionListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("集团编码")
+    private String groupCode;
+
+    @ApiModelProperty("能耗类型")
+    private String energyType;
+
+    @ApiModelProperty("建筑类型(业态)")
+    private String buildingType;
+
+    @ApiModelProperty("信息点类型(0-能耗,1-费用 ,2-能耗预算,3-费用预算)")
+    private String functionType;
+
+    @ApiModelProperty("能耗模型编码")
+    private String modelCode;
+
+    @ApiModelProperty("分项id")
+    private String itemId;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 88 - 0
src/main/java/com/persagy/apm/report/config/function/service/IFunctionService.java

@@ -0,0 +1,88 @@
+package com.persagy.apm.report.config.function.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.report.config.function.model.Function;
+import com.persagy.apm.report.config.function.model.dto.AddFunctionDTO;
+import com.persagy.apm.report.config.function.model.dto.PageQueryFunctionDTO;
+import com.persagy.apm.report.config.function.model.dto.QueryFunctionDTO;
+import com.persagy.apm.report.config.function.model.dto.UpdateFunctionDTO;
+
+import java.util.List;
+
+/**
+ * 能耗报告信息点(Function) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:05:33
+ */
+public interface IFunctionService {
+
+    /**
+     * 创建能耗报告信息点
+     *
+     * @param addFunctionDTO addDTO
+     * @return 能耗报告信息点主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:33
+     */
+    String createFunction(AddFunctionDTO addFunctionDTO);
+
+    /**
+     * 能耗报告信息点详情
+     *
+     * @param id 主键
+     * @return 能耗报告信息点do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:33
+     */
+    Function queryFunctionDetail(String id);
+
+    /**
+     * 更新能耗报告信息点
+     *
+     * @param updateFunctionDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:33
+     */
+    void updateFunction(UpdateFunctionDTO updateFunctionDTO);
+
+    /**
+     * 删除能耗报告信息点
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:33
+     */
+    void deleteFunction(String id);
+
+    /**
+     * 查询能耗报告信息点
+     *
+     * @param queryFunctionDTO queryDTO
+     * @return List<Function>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:33
+     */
+    List<Function> queryFunctionList(QueryFunctionDTO queryFunctionDTO);
+
+    /**
+     * 分页查询能耗报告信息点
+     *
+     * @param pageQueryFunctionDTO pageQueryDTO
+     * @return IPage<Function>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:33
+     */
+    IPage<Function> pageQueryFunction(PageQueryFunctionDTO pageQueryFunctionDTO);
+
+    /**
+     * 获取条目名称
+     *
+     * @param function  功能点信息
+     * @param projectId 项目id
+     * @return 条目名称
+     * @author lixing
+     * @version V1.0 2021/5/28 7:22 下午
+     */
+    String getItemName(Function function, String projectId);
+}

+ 288 - 0
src/main/java/com/persagy/apm/report/config/function/service/impl/FunctionServiceImpl.java

@@ -0,0 +1,288 @@
+package com.persagy.apm.report.config.function.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.base.CaseFormat;
+import com.persagy.apm.common.constant.enums.ValidEnum;
+import com.persagy.apm.common.context.AppContext;
+import com.persagy.apm.common.model.dto.Sort;
+import com.persagy.apm.report.config.function.constant.enums.EnergyTypeEnum;
+import com.persagy.apm.report.config.function.constant.enums.FunctionTypeEnum;
+import com.persagy.apm.report.config.function.dao.FunctionMapper;
+import com.persagy.apm.report.config.function.model.ConvertFunctionTool;
+import com.persagy.apm.report.config.function.model.Function;
+import com.persagy.apm.report.config.function.model.dto.AddFunctionDTO;
+import com.persagy.apm.report.config.function.model.dto.PageQueryFunctionDTO;
+import com.persagy.apm.report.config.function.model.dto.QueryFunctionDTO;
+import com.persagy.apm.report.config.function.model.dto.UpdateFunctionDTO;
+import com.persagy.apm.report.config.function.service.IFunctionService;
+import com.persagy.apm.report.dependencies.centermiddleware.model.dto.QueryItemInfoDTO;
+import com.persagy.apm.report.dependencies.centermiddleware.service.ICenterMiddlewareWebService;
+import com.persagy.apm.report.dependencies.saasweb.model.vo.SimpleProjectVO;
+import com.persagy.apm.report.dependencies.saasweb.service.ISaasWebService;
+import org.apache.commons.lang.StringUtils;
+import org.assertj.core.util.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 能耗报告信息点(Function) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:05:34
+ */
+@Service
+public class FunctionServiceImpl extends ServiceImpl<FunctionMapper, Function>
+        implements IFunctionService {
+    @Autowired
+    private ICenterMiddlewareWebService centerMiddlewareWebService;
+    @Autowired
+    private ISaasWebService saasWebService;
+
+    /**
+     * 创建能耗报告信息点
+     *
+     * @return 能耗报告信息点主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:34
+     */
+    @Override
+    public String createFunction(AddFunctionDTO addFunctionDTO) {
+        Function function = ConvertFunctionTool.INSTANCE.convertAddDto2Entity(addFunctionDTO);
+        // 设置默认值
+        setDefaultValue(function);
+        save(function);
+        return function.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param function 能耗报告信息点实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(Function function) {
+        function.setCreator(AppContext.getContext().getAccountId());
+        
+
+    }
+
+    /**
+     * 能耗报告信息点详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:34
+     */
+    @Override
+    public Function queryFunctionDetail(String id) {
+        Function function = getById(id);
+        if (function == null) {
+            throw new IllegalArgumentException("查看Function详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return function;
+    }
+
+    /**
+     * 更新能耗报告信息点
+     *
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:34
+     */
+    @Override
+    public void updateFunction(UpdateFunctionDTO updateFunctionDTO) {
+        Function function = getById(updateFunctionDTO.getId());
+        function = ConvertFunctionTool.INSTANCE.convertUpdateDto2Entity(function, updateFunctionDTO);
+        function.setModifier(AppContext.getContext().getAccountId());
+        updateById(function);
+    }
+
+    /**
+     * 校验能耗报告信息点是否可删除
+     *
+     * @param id 能耗报告信息点主键
+     * @return 能耗报告信息点do类
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:34
+     */
+    public Function checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除Function时发生异常,主键为空");
+        }
+
+        Function function = getById(id);
+
+        if (function == null) {
+            throw new IllegalArgumentException("删除Function时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return function;
+    }
+
+    /**
+     * 删除能耗报告信息点
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:34
+     */
+    @Override
+    public void deleteFunction(String id) {
+        // 校验是否可删除
+        Function function = checkDeletable(id);
+
+        function.setValid(ValidEnum.FALSE.getType());
+        updateById(function);
+    }
+
+    /**
+     * 查询能耗报告信息点
+     *
+     * @return List<Function>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:34
+     */
+    @Override
+    public List<Function> queryFunctionList(QueryFunctionDTO queryFunctionDTO) {
+        QueryWrapper<Function> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(Function.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, Function.PROP_CREATIONTIME);
+
+        if (queryFunctionDTO != null) {
+
+            if (!CollectionUtils.isEmpty(queryFunctionDTO.getFunctionIdList())) {
+                queryWrapper.in(Function.PROP_ID, queryFunctionDTO.getFunctionIdList());
+            }
+            if (StringUtils.isNotEmpty(queryFunctionDTO.getGroupCode())) {
+                queryWrapper.eq(Function.PROP_GROUP_CODE, queryFunctionDTO.getGroupCode());
+            }
+            if (StringUtils.isNotEmpty(queryFunctionDTO.getEnergyType())) {
+                queryWrapper.eq(Function.PROP_ENERGY_TYPE, queryFunctionDTO.getEnergyType());
+            }
+
+            if (StringUtils.isNotEmpty(queryFunctionDTO.getBuildingType())) {
+                queryWrapper.eq(Function.PROP_BUILDING_TYPE, queryFunctionDTO.getBuildingType());
+            }
+
+            if (StringUtils.isNotEmpty(queryFunctionDTO.getFunctionType())) {
+                queryWrapper.eq(Function.PROP_FUNCTION_TYPE, queryFunctionDTO.getFunctionType());
+            }
+
+            if (StringUtils.isNotEmpty(queryFunctionDTO.getModelCode())) {
+                queryWrapper.eq(Function.PROP_MODEL_CODE, queryFunctionDTO.getModelCode());
+            }
+
+            if (StringUtils.isNotEmpty(queryFunctionDTO.getItemId())) {
+                queryWrapper.eq(Function.PROP_ITEM_ID, queryFunctionDTO.getItemId());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询能耗报告信息点
+     *
+     * @return IPage<Function>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:05:34
+     */
+    @Override
+    public IPage<Function> pageQueryFunction(PageQueryFunctionDTO pageQueryFunctionDTO) {
+        QueryWrapper<Function> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(Function.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<Function> pageParam = new Page<>(pageQueryFunctionDTO.getPage(), pageQueryFunctionDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryFunctionDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, Function.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryFunctionDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryFunctionDTO.getGroupCode())) {
+            queryWrapper.like(Function.PROP_GROUP_CODE, pageQueryFunctionDTO.getGroupCode());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryFunctionDTO.getEnergyType())) {
+            queryWrapper.like(Function.PROP_ENERGY_TYPE, pageQueryFunctionDTO.getEnergyType());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryFunctionDTO.getBuildingType())) {
+            queryWrapper.like(Function.PROP_BUILDING_TYPE, pageQueryFunctionDTO.getBuildingType());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryFunctionDTO.getFunctionType())) {
+            queryWrapper.like(Function.PROP_FUNCTION_TYPE, pageQueryFunctionDTO.getFunctionType());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryFunctionDTO.getModelCode())) {
+            queryWrapper.like(Function.PROP_MODEL_CODE, pageQueryFunctionDTO.getModelCode());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryFunctionDTO.getItemId())) {
+            queryWrapper.like(Function.PROP_ITEM_ID, pageQueryFunctionDTO.getItemId());
+        }
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+
+    @Override
+    public String getItemName(Function function, String projectId) {
+        // 获取项目信息
+        SimpleProjectVO simpleProjectInfo = saasWebService.getSimpleProjectInfo(projectId);
+
+        if (simpleProjectInfo == null) {
+            return "";
+        }
+        QueryItemInfoDTO queryItemInfoDTO = new QueryItemInfoDTO();
+        // 注意这里应该传入项目本地编码
+        queryItemInfoDTO.setProjectId(simpleProjectInfo.getProjectLocalID());
+        queryItemInfoDTO.setBuildingId(simpleProjectInfo.getProjectLocalID());
+        // 是否是用电条目
+        boolean isEnergyItem = EnergyTypeEnum.ELECTRICITY.getType().toString().equals(function.getEnergyType());
+        // 是否是能耗类型
+        boolean isEnergyType = FunctionTypeEnum.ENERGY.getType().equals(function.getFunctionType());
+        // 是否是费用类型
+        boolean isCostType = FunctionTypeEnum.COST.getType().equals(function.getFunctionType());
+        // 统计条目
+        String sumItem = "sumItem";
+        // 是否从调研获取条目名称
+        boolean getNameFromResearch = isEnergyItem &&
+                (isEnergyType || (isCostType && !sumItem.equals(function.getItemId())));
+        if (getNameFromResearch) {
+            queryItemInfoDTO.setModelCode(function.getModelCode());
+            queryItemInfoDTO.setItemIdList(Lists.newArrayList(function.getItemId()));
+            Map<String, String> itemNameMap = centerMiddlewareWebService.getItemNameMap(queryItemInfoDTO);
+            if (itemNameMap != null) {
+                return itemNameMap.get(function.getItemId());
+            }
+        } else {
+            return function.getName();
+        }
+
+        return "";
+    }
+}

+ 101 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/controller/FunctionGroupController.java

@@ -0,0 +1,101 @@
+package com.persagy.apm.report.config.functiongroup.controller;
+
+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.report.config.functiongroup.model.ConvertFunctionGroupTool;
+import com.persagy.apm.report.config.functiongroup.model.FunctionGroup;
+import com.persagy.apm.report.config.functiongroup.model.dto.*;
+import com.persagy.apm.report.config.functiongroup.model.vo.ResponseFunctionGroupItemVO;
+import com.persagy.apm.report.config.functiongroup.model.vo.ResponseFunctionGroupListItemVO;
+import com.persagy.apm.report.config.functiongroup.service.IFunctionGroupService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 信息点分组控制层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:06:28
+ */
+@ApiIgnore
+@Api(tags = "信息点分组", hidden = true)
+@Validated
+@RestController
+@RequestMapping("functionGroups")
+public class FunctionGroupController {
+    @Autowired
+    private IFunctionGroupService functionGroupService;
+
+    @ApiOperation(value = "创建信息点分组")
+    @PostMapping("/create")
+    public CommonResult<ApmResponseUpsertVO> createFunctionGroup(
+            @Valid @RequestBody AddFunctionGroupDTO addFunctionGroupDTO) {
+        String id = functionGroupService.createFunctionGroup(addFunctionGroupDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO(id));
+    }
+
+    @ApiOperation(value = "信息点分组详情")
+    @PostMapping("/get")
+    public CommonResult<ResponseFunctionGroupItemVO> queryFunctionGroupDetail(
+            @Valid @RequestBody QueryFunctionGroupDetailDTO queryFunctionGroupDetailDTO) {
+        FunctionGroup functionGroup = functionGroupService.queryFunctionGroupDetail(queryFunctionGroupDetailDTO.getId());
+        ResponseFunctionGroupItemVO responseFunctionGroupItemVO = ConvertFunctionGroupTool.INSTANCE.convert2ResponseItemDTO(functionGroup);
+        return ResultHelper.single(responseFunctionGroupItemVO);
+    }
+
+
+    @ApiOperation(value = "更新信息点分组")
+    @PostMapping("/update")
+    public CommonResult<ApmResponseUpsertVO> updateFunctionGroup(
+            @Valid @RequestBody UpdateFunctionGroupDTO updateFunctionGroupDTO) {
+        functionGroupService.updateFunctionGroup(updateFunctionGroupDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO(updateFunctionGroupDTO.getId()));
+    }
+
+
+    @ApiOperation(value = "删除信息点分组")
+    @PostMapping("/delete")
+    public CommonResult deleteFunctionGroup(
+            @RequestBody @Valid DeleteFunctionGroupDTO deleteFunctionGroupDTO) {
+        functionGroupService.deleteFunctionGroup(deleteFunctionGroupDTO.getId());
+        return ResultHelper.success();
+    }
+
+
+    @ApiOperation(value = "信息点分组列表")
+    @PostMapping("/query")
+    public CommonResult<PageList<ResponseFunctionGroupListItemVO>> queryFunctionGroup(
+            @Valid @RequestBody QueryFunctionGroupDTO queryFunctionGroupDTO) {
+        List<FunctionGroup> functionGroupList = functionGroupService.queryFunctionGroupList(queryFunctionGroupDTO);
+        List<ResponseFunctionGroupListItemVO> resultList = ConvertFunctionGroupTool.INSTANCE.convert2List(functionGroupList);
+        return ResultHelper.multi(resultList);
+    }
+
+    //@ApiOperation(value = "信息点分组列表, 分页查询")
+    //@PostMapping("/query")
+    //public CommonResult<PageList<ResponseFunctionGroupListItemVO>> queryFunctionGroup(
+    //        @Valid @RequestBody PageQueryFunctionGroupDTO pageQueryFunctionGroupDTO) {
+    //    IPage<FunctionGroup> pagedList = functionGroupService.pageQueryFunctionGroup(pageQueryFunctionGroupDTO);
+    //    IPage<ResponseFunctionGroupListItemVO> pagedResultList = pagedList.convert(item -> {
+    //        try {
+    //           return ConvertFunctionGroupTool.INSTANCE.convert2ResponseListItemDTO(item);
+    //        } catch (Exception e) {
+    //            throw new IllegalArgumentException("分页查询,FunctionGroup实体类转换为列表对象发生异常", e);
+    //        }
+    //    });
+    //    return ResultHelper.multi(pagedResultList);
+    //}
+}
+

+ 16 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/dao/FunctionGroupMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.report.config.functiongroup.dao;
+
+import com.persagy.apm.report.config.functiongroup.model.FunctionGroup;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 信息点分组(FunctionGroup)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:06:29
+ */
+@Mapper
+public interface FunctionGroupMapper extends BaseMapper<FunctionGroup> {
+
+}

+ 78 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/model/ConvertFunctionGroupTool.java

@@ -0,0 +1,78 @@
+package com.persagy.apm.report.config.functiongroup.model;
+
+import com.persagy.apm.report.config.functiongroup.model.dto.AddFunctionGroupDTO;
+import com.persagy.apm.report.config.functiongroup.model.dto.UpdateFunctionGroupDTO;
+import com.persagy.apm.report.config.functiongroup.model.vo.ResponseFunctionGroupItemVO;
+import com.persagy.apm.report.config.functiongroup.model.vo.ResponseFunctionGroupListItemVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.NullValueMappingStrategy;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 信息点分组(FunctionGroup) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:06:31 2021-05-20 19:06:31
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertFunctionGroupTool {
+
+    ConvertFunctionGroupTool INSTANCE = Mappers.getMapper(ConvertFunctionGroupTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param functionGroup do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:31
+     */
+    ResponseFunctionGroupItemVO convert2ResponseItemDTO(FunctionGroup functionGroup);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param functionGroup do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:31
+     */
+    ResponseFunctionGroupListItemVO convert2ResponseListItemDTO(FunctionGroup functionGroup);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param functionGroupList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:31
+     */
+    List<ResponseFunctionGroupListItemVO> convert2List(List<FunctionGroup> functionGroupList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addFunctionGroupDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:31
+     */
+    FunctionGroup convertAddDto2Entity(AddFunctionGroupDTO addFunctionGroupDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param functionGroup          更新前的do对象
+     * @param updateFunctionGroupDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:31
+     */
+    FunctionGroup convertUpdateDto2Entity(@MappingTarget FunctionGroup functionGroup, UpdateFunctionGroupDTO updateFunctionGroupDTO);
+}
+

+ 37 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/model/FunctionGroup.java

@@ -0,0 +1,37 @@
+package com.persagy.apm.report.config.functiongroup.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;
+
+/**
+ * 信息点分组(FunctionGroup)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:06:29
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "信息点分组")
+public class FunctionGroup extends AuditableEntity<FunctionGroup> implements Serializable {
+    private static final long serialVersionUID = 104212607171794817L;
+
+    @ApiModelProperty("分组名称")
+    private String name;
+
+    @ApiModelProperty("包含的分组id(预留字段)")
+    private String groupIds;
+
+    @ApiModelProperty("包含的信息点id")
+    private String functionIds;
+
+
+    public static String PROP_NAME = "name";
+    public static String PROP_GROUP_IDS = "group_ids";
+    public static String PROP_FUNCTION_IDS = "function_ids";
+
+}

+ 35 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/AddFunctionGroupDTO.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.report.config.functiongroup.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-20 19:06:29
+ */
+@Data
+@ApiModel(value = "创建信息点分组入参")
+public class AddFunctionGroupDTO {
+    @ApiModelProperty(value = "分组名称", required = true)
+    @NotNull(message = "分组名称不能为空") 
+    private String name;
+
+    @ApiModelProperty(value = "包含的分组id(预留字段)", required = true)
+    @NotNull(message = "包含的分组id(预留字段)不能为空") 
+    private String groupIds;
+
+    @ApiModelProperty(value = "包含的信息点id", required = true)
+    @NotNull(message = "包含的信息点id不能为空") 
+    private String functionIds;
+
+    @ApiModelProperty(value = "所属段落(如果不直属段落,这里不填)", required = true)
+    @NotNull(message = "所属段落(如果不直属段落,这里不填)不能为空") 
+    private String belongParagraph;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/DeleteFunctionGroupDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.functiongroup.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-20 19:06:30
+ */
+@Data
+@ApiModel(value = "删除信息点分组入参")
+public class DeleteFunctionGroupDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 35 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/PageQueryFunctionGroupDTO.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.report.config.functiongroup.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-20 19:06:30
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询信息点分组入参")
+public class PageQueryFunctionGroupDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "分组名称", required = true)
+    private String name;
+
+    @ApiModelProperty(value = "包含的分组id(预留字段)", required = true)
+    private String groupIds;
+
+    @ApiModelProperty(value = "包含的信息点id", required = true)
+    private String functionIds;
+
+    @ApiModelProperty(value = "所属段落(如果不直属段落,这里不填)", required = true)
+    private String belongParagraph;
+
+}

+ 28 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/QueryFunctionGroupDTO.java

@@ -0,0 +1,28 @@
+package com.persagy.apm.report.config.functiongroup.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-20 19:06:30
+ */
+@Data
+@ApiModel(value = "查询信息点分组入参")
+public class QueryFunctionGroupDTO {
+    @ApiModelProperty(value = "分组名称", required = true)
+    private String name;
+
+    @ApiModelProperty(value = "包含的分组id(预留字段)", required = true)
+    private String groupIds;
+
+    @ApiModelProperty(value = "包含的信息点id", required = true)
+    private String functionIds;
+
+    @ApiModelProperty(value = "所属段落(如果不直属段落,这里不填)", required = true)
+    private String belongParagraph;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/QueryFunctionGroupDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.functiongroup.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-20 19:06:30
+ */
+@Data
+@ApiModel(value = "获取信息点分组详情入参")
+public class QueryFunctionGroupDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 39 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/model/dto/UpdateFunctionGroupDTO.java

@@ -0,0 +1,39 @@
+package com.persagy.apm.report.config.functiongroup.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-20 19:06:30
+ */
+@Data
+@ApiModel(value = "更新信息点分组入参")
+public class UpdateFunctionGroupDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") 
+    private String id;
+
+    @ApiModelProperty(value = "分组名称", required = true)
+    @NotNull(message = "分组名称不能为空") 
+    private String name;
+
+    @ApiModelProperty(value = "包含的分组id(预留字段)", required = true)
+    @NotNull(message = "包含的分组id(预留字段)不能为空") 
+    private String groupIds;
+
+    @ApiModelProperty(value = "包含的信息点id", required = true)
+    @NotNull(message = "包含的信息点id不能为空") 
+    private String functionIds;
+
+    @ApiModelProperty(value = "所属段落(如果不直属段落,这里不填)", required = true)
+    @NotNull(message = "所属段落(如果不直属段落,这里不填)不能为空") 
+    private String belongParagraph;
+
+}

+ 46 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/model/vo/ResponseFunctionGroupItemVO.java

@@ -0,0 +1,46 @@
+package com.persagy.apm.report.config.functiongroup.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-20 19:06:30
+ */
+@Data
+@ApiModel(value = "信息点分组返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseFunctionGroupItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("分组名称")
+    private String name;
+
+    @ApiModelProperty("包含的分组id(预留字段)")
+    private String groupIds;
+
+    @ApiModelProperty("包含的信息点id")
+    private String functionIds;
+
+    @ApiModelProperty("所属段落(如果不直属段落,这里不填)")
+    private String belongParagraph;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 46 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/model/vo/ResponseFunctionGroupListItemVO.java

@@ -0,0 +1,46 @@
+package com.persagy.apm.report.config.functiongroup.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-20 19:06:31
+ */
+@Data
+@ApiModel(value = "信息点分组列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseFunctionGroupListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("分组名称")
+    private String name;
+
+    @ApiModelProperty("包含的分组id(预留字段)")
+    private String groupIds;
+
+    @ApiModelProperty("包含的信息点id")
+    private String functionIds;
+
+    @ApiModelProperty("所属段落(如果不直属段落,这里不填)")
+    private String belongParagraph;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 77 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/service/IFunctionGroupService.java

@@ -0,0 +1,77 @@
+package com.persagy.apm.report.config.functiongroup.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.report.config.functiongroup.model.FunctionGroup;
+import com.persagy.apm.report.config.functiongroup.model.dto.AddFunctionGroupDTO;
+import com.persagy.apm.report.config.functiongroup.model.dto.PageQueryFunctionGroupDTO;
+import com.persagy.apm.report.config.functiongroup.model.dto.QueryFunctionGroupDTO;
+import com.persagy.apm.report.config.functiongroup.model.dto.UpdateFunctionGroupDTO;
+
+import java.util.List;
+
+/**
+ * 信息点分组(FunctionGroup) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:06:28
+ */
+public interface IFunctionGroupService {
+
+    /**
+     * 创建信息点分组
+     *
+     * @param addFunctionGroupDTO addDTO
+     * @return 信息点分组主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:28
+     */
+    String createFunctionGroup(AddFunctionGroupDTO addFunctionGroupDTO);
+
+    /**
+     * 信息点分组详情
+     *
+     * @param id 主键
+     * @return 信息点分组do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:28
+     */
+    FunctionGroup queryFunctionGroupDetail(String id);
+
+    /**
+     * 更新信息点分组
+     *
+     * @param updateFunctionGroupDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:28
+     */
+    void updateFunctionGroup(UpdateFunctionGroupDTO updateFunctionGroupDTO);
+
+    /**
+     * 删除信息点分组
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:28
+     */
+    void deleteFunctionGroup(String id);
+
+    /**
+     * 查询信息点分组
+     *
+     * @param queryFunctionGroupDTO queryDTO
+     * @return List<FunctionGroup>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:28
+     */
+    List<FunctionGroup> queryFunctionGroupList(QueryFunctionGroupDTO queryFunctionGroupDTO);
+
+    /**
+     * 分页查询信息点分组
+     *
+     * @param pageQueryFunctionGroupDTO pageQueryDTO
+     * @return IPage<FunctionGroup>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:28
+     */
+    IPage<FunctionGroup> pageQueryFunctionGroup(PageQueryFunctionGroupDTO pageQueryFunctionGroupDTO);
+}

+ 214 - 0
src/main/java/com/persagy/apm/report/config/functiongroup/service/impl/FunctionGroupServiceImpl.java

@@ -0,0 +1,214 @@
+package com.persagy.apm.report.config.functiongroup.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.base.CaseFormat;
+import com.persagy.apm.common.constant.enums.ValidEnum;
+import com.persagy.apm.common.context.AppContext;
+import com.persagy.apm.common.model.dto.Sort;
+import com.persagy.apm.report.config.functiongroup.dao.FunctionGroupMapper;
+import com.persagy.apm.report.config.functiongroup.model.ConvertFunctionGroupTool;
+import com.persagy.apm.report.config.functiongroup.model.FunctionGroup;
+import com.persagy.apm.report.config.functiongroup.model.dto.AddFunctionGroupDTO;
+import com.persagy.apm.report.config.functiongroup.model.dto.PageQueryFunctionGroupDTO;
+import com.persagy.apm.report.config.functiongroup.model.dto.QueryFunctionGroupDTO;
+import com.persagy.apm.report.config.functiongroup.model.dto.UpdateFunctionGroupDTO;
+import com.persagy.apm.report.config.functiongroup.service.IFunctionGroupService;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 信息点分组(FunctionGroup) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:06:29
+ */
+@Service
+public class FunctionGroupServiceImpl extends ServiceImpl<FunctionGroupMapper, FunctionGroup>
+        implements IFunctionGroupService {
+
+    /**
+     * 创建信息点分组
+     *
+     * @return 信息点分组主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:29
+     */
+    @Override
+    public String createFunctionGroup(AddFunctionGroupDTO addFunctionGroupDTO) {
+        FunctionGroup functionGroup = ConvertFunctionGroupTool.INSTANCE.convertAddDto2Entity(addFunctionGroupDTO);
+        // 设置默认值
+        setDefaultValue(functionGroup);
+        save(functionGroup);
+        return functionGroup.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param functionGroup 信息点分组实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(FunctionGroup functionGroup) {
+        functionGroup.setCreator(AppContext.getContext().getAccountId());
+        
+
+    }
+
+    /**
+     * 信息点分组详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:29
+     */
+    @Override
+    public FunctionGroup queryFunctionGroupDetail(String id) {
+        FunctionGroup functionGroup = getById(id);
+        if (functionGroup == null) {
+            throw new IllegalArgumentException("查看FunctionGroup详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return functionGroup;
+    }
+
+    /**
+     * 更新信息点分组
+     *
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:29
+     */
+    @Override
+    public void updateFunctionGroup(UpdateFunctionGroupDTO updateFunctionGroupDTO) {
+        FunctionGroup functionGroup = getById(updateFunctionGroupDTO.getId());
+        functionGroup = ConvertFunctionGroupTool.INSTANCE.convertUpdateDto2Entity(functionGroup, updateFunctionGroupDTO);
+        functionGroup.setModifier(AppContext.getContext().getAccountId());
+        updateById(functionGroup);
+    }
+
+    /**
+     * 校验信息点分组是否可删除
+     *
+     * @param id 信息点分组主键
+     * @return 信息点分组do类
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:29
+     */
+    public FunctionGroup checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除FunctionGroup时发生异常,主键为空");
+        }
+
+        FunctionGroup functionGroup = getById(id);
+
+        if (functionGroup == null) {
+            throw new IllegalArgumentException("删除FunctionGroup时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return functionGroup;
+    }
+
+    /**
+     * 删除信息点分组
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:29
+     */
+    @Override
+    public void deleteFunctionGroup(String id) {
+        // 校验是否可删除
+        FunctionGroup functionGroup = checkDeletable(id);
+
+        functionGroup.setValid(ValidEnum.FALSE.getType());
+        updateById(functionGroup);
+    }
+
+    /**
+     * 查询信息点分组
+     *
+     * @return List<FunctionGroup>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:29
+     */
+    @Override
+    public List<FunctionGroup> queryFunctionGroupList(QueryFunctionGroupDTO queryFunctionGroupDTO) {
+        QueryWrapper<FunctionGroup> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(FunctionGroup.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, FunctionGroup.PROP_CREATIONTIME);
+
+        if (queryFunctionGroupDTO != null) {
+
+            
+            if (StringUtils.isNotEmpty(queryFunctionGroupDTO.getName())) {
+                queryWrapper.like(FunctionGroup.PROP_NAME, queryFunctionGroupDTO.getName());
+            }
+
+            
+            if (StringUtils.isNotEmpty(queryFunctionGroupDTO.getGroupIds())) {
+                queryWrapper.like(FunctionGroup.PROP_GROUP_IDS, queryFunctionGroupDTO.getGroupIds());
+            }
+
+            
+            if (StringUtils.isNotEmpty(queryFunctionGroupDTO.getFunctionIds())) {
+                queryWrapper.like(FunctionGroup.PROP_FUNCTION_IDS, queryFunctionGroupDTO.getFunctionIds());
+            }
+
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询信息点分组
+     *
+     * @return IPage<FunctionGroup>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:06:29
+     */
+    @Override
+    public IPage<FunctionGroup> pageQueryFunctionGroup(PageQueryFunctionGroupDTO pageQueryFunctionGroupDTO) {
+        QueryWrapper<FunctionGroup> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(FunctionGroup.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<FunctionGroup> pageParam = new Page<>(pageQueryFunctionGroupDTO.getPage(), pageQueryFunctionGroupDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryFunctionGroupDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, FunctionGroup.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryFunctionGroupDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryFunctionGroupDTO.getName())) {
+            queryWrapper.like(FunctionGroup.PROP_NAME, pageQueryFunctionGroupDTO.getName());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryFunctionGroupDTO.getGroupIds())) {
+            queryWrapper.like(FunctionGroup.PROP_GROUP_IDS, pageQueryFunctionGroupDTO.getGroupIds());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryFunctionGroupDTO.getFunctionIds())) {
+            queryWrapper.like(FunctionGroup.PROP_FUNCTION_IDS, pageQueryFunctionGroupDTO.getFunctionIds());
+        }
+
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+}

+ 101 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/controller/ReportDetailStatisticsItemRelController.java

@@ -0,0 +1,101 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.controller;
+
+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.report.config.rel.detailstatisticsitem.model.ConvertReportDetailStatisticsItemRelTool;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.ReportDetailStatisticsItemRel;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.dto.*;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.vo.ResponseReportDetailStatisticsItemRelItemVO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.vo.ResponseReportDetailStatisticsItemRelListItemVO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.service.IReportDetailStatisticsItemRelService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 报告详情与统计条目的关联控制层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:19:38
+ */
+@ApiIgnore
+@Api(tags = "报告详情与统计条目的关联", hidden = true)
+@Validated
+@RestController
+@RequestMapping("reportDetailStatisticsItemRels")
+public class ReportDetailStatisticsItemRelController {
+    @Autowired
+    private IReportDetailStatisticsItemRelService reportDetailStatisticsItemRelService;
+
+    @ApiOperation(value = "创建报告详情与统计条目的关联")
+    @PostMapping("/create")
+    public CommonResult<ApmResponseUpsertVO> createReportDetailStatisticsItemRel(
+            @Valid @RequestBody AddReportDetailStatisticsItemRelDTO addReportDetailStatisticsItemRelDTO) {
+        String id = reportDetailStatisticsItemRelService.createReportDetailStatisticsItemRel(addReportDetailStatisticsItemRelDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO(id));
+    }
+
+    @ApiOperation(value = "报告详情与统计条目的关联详情")
+    @PostMapping("/get")
+    public CommonResult<ResponseReportDetailStatisticsItemRelItemVO> queryReportDetailStatisticsItemRelDetail(
+            @Valid @RequestBody QueryReportDetailStatisticsItemRelDetailDTO queryReportDetailStatisticsItemRelDetailDTO) {
+        ReportDetailStatisticsItemRel reportDetailStatisticsItemRel = reportDetailStatisticsItemRelService.queryReportDetailStatisticsItemRelDetail(queryReportDetailStatisticsItemRelDetailDTO.getId());
+        ResponseReportDetailStatisticsItemRelItemVO responseReportDetailStatisticsItemRelItemVO = ConvertReportDetailStatisticsItemRelTool.INSTANCE.convert2ResponseItemDTO(reportDetailStatisticsItemRel);
+        return ResultHelper.single(responseReportDetailStatisticsItemRelItemVO);
+    }
+
+
+    @ApiOperation(value = "更新报告详情与统计条目的关联")
+    @PostMapping("/update")
+    public CommonResult<ApmResponseUpsertVO> updateReportDetailStatisticsItemRel(
+            @Valid @RequestBody UpdateReportDetailStatisticsItemRelDTO updateReportDetailStatisticsItemRelDTO) {
+        reportDetailStatisticsItemRelService.updateReportDetailStatisticsItemRel(updateReportDetailStatisticsItemRelDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO(updateReportDetailStatisticsItemRelDTO.getId()));
+    }
+
+
+    @ApiOperation(value = "删除报告详情与统计条目的关联")
+    @PostMapping("/delete")
+    public CommonResult deleteReportDetailStatisticsItemRel(
+            @RequestBody @Valid DeleteReportDetailStatisticsItemRelDTO deleteReportDetailStatisticsItemRelDTO) {
+        reportDetailStatisticsItemRelService.deleteReportDetailStatisticsItemRel(deleteReportDetailStatisticsItemRelDTO.getId());
+        return ResultHelper.success();
+    }
+
+
+    @ApiOperation(value = "报告详情与统计条目的关联列表")
+    @PostMapping("/query")
+    public CommonResult<PageList<ResponseReportDetailStatisticsItemRelListItemVO>> queryReportDetailStatisticsItemRel(
+            @Valid @RequestBody QueryReportDetailStatisticsItemRelDTO queryReportDetailStatisticsItemRelDTO) {
+        List<ReportDetailStatisticsItemRel> reportDetailStatisticsItemRelList = reportDetailStatisticsItemRelService.queryReportDetailStatisticsItemRelList(queryReportDetailStatisticsItemRelDTO);
+        List<ResponseReportDetailStatisticsItemRelListItemVO> resultList = ConvertReportDetailStatisticsItemRelTool.INSTANCE.convert2List(reportDetailStatisticsItemRelList);
+        return ResultHelper.multi(resultList);
+    }
+
+    //@ApiOperation(value = "报告详情与统计条目的关联列表, 分页查询")
+    //@PostMapping("/query")
+    //public CommonResult<PageList<ResponseReportDetailStatisticsItemRelListItemVO>> queryReportDetailStatisticsItemRel(
+    //        @Valid @RequestBody PageQueryReportDetailStatisticsItemRelDTO pageQueryReportDetailStatisticsItemRelDTO) {
+    //    IPage<ReportDetailStatisticsItemRel> pagedList = reportDetailStatisticsItemRelService.pageQueryReportDetailStatisticsItemRel(pageQueryReportDetailStatisticsItemRelDTO);
+    //    IPage<ResponseReportDetailStatisticsItemRelListItemVO> pagedResultList = pagedList.convert(item -> {
+    //        try {
+    //           return ConvertReportDetailStatisticsItemRelTool.INSTANCE.convert2ResponseListItemDTO(item);
+    //        } catch (Exception e) {
+    //            throw new IllegalArgumentException("分页查询,ReportDetailStatisticsItemRel实体类转换为列表对象发生异常", e);
+    //        }
+    //    });
+    //    return ResultHelper.multi(pagedResultList);
+    //}
+}
+

+ 16 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/dao/ReportDetailStatisticsItemRelMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.dao;
+
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.ReportDetailStatisticsItemRel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 报告详情与统计条目的关联(ReportDetailStatisticsItemRel)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:19:39
+ */
+@Mapper
+public interface ReportDetailStatisticsItemRelMapper extends BaseMapper<ReportDetailStatisticsItemRel> {
+
+}

+ 78 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/ConvertReportDetailStatisticsItemRelTool.java

@@ -0,0 +1,78 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.model;
+
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.dto.AddReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.dto.UpdateReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.vo.ResponseReportDetailStatisticsItemRelItemVO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.vo.ResponseReportDetailStatisticsItemRelListItemVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.NullValueMappingStrategy;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 报告详情与统计条目的关联(ReportDetailStatisticsItemRel) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:19:41 2021-05-20 19:19:41
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertReportDetailStatisticsItemRelTool {
+
+    ConvertReportDetailStatisticsItemRelTool INSTANCE = Mappers.getMapper(ConvertReportDetailStatisticsItemRelTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param reportDetailStatisticsItemRel do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:41
+     */
+    ResponseReportDetailStatisticsItemRelItemVO convert2ResponseItemDTO(ReportDetailStatisticsItemRel reportDetailStatisticsItemRel);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param reportDetailStatisticsItemRel do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:41
+     */
+    ResponseReportDetailStatisticsItemRelListItemVO convert2ResponseListItemDTO(ReportDetailStatisticsItemRel reportDetailStatisticsItemRel);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param reportDetailStatisticsItemRelList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:41
+     */
+    List<ResponseReportDetailStatisticsItemRelListItemVO> convert2List(List<ReportDetailStatisticsItemRel> reportDetailStatisticsItemRelList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addReportDetailStatisticsItemRelDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:41
+     */
+    ReportDetailStatisticsItemRel convertAddDto2Entity(AddReportDetailStatisticsItemRelDTO addReportDetailStatisticsItemRelDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param reportDetailStatisticsItemRel          更新前的do对象
+     * @param updateReportDetailStatisticsItemRelDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:41
+     */
+    ReportDetailStatisticsItemRel convertUpdateDto2Entity(@MappingTarget ReportDetailStatisticsItemRel reportDetailStatisticsItemRel, UpdateReportDetailStatisticsItemRelDTO updateReportDetailStatisticsItemRelDTO);
+}
+

+ 45 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/ReportDetailStatisticsItemRel.java

@@ -0,0 +1,45 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.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;
+
+/**
+ * 报告详情与统计条目的关联(ReportDetailStatisticsItemRel)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:19:40
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "报告详情与统计条目的关联")
+public class ReportDetailStatisticsItemRel extends AuditableEntity<ReportDetailStatisticsItemRel> implements Serializable {
+    private static final long serialVersionUID = -23777287365374831L;
+
+    @ApiModelProperty("报告详情主键")
+    private String reportDetailId;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("统计条目id")
+    private String statisticsItemId;
+
+    @ApiModelProperty("不合格原因")
+    private String unqualifiedReason;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+    public static String PROP_REPORT_DETAIL_ID = "report_detail_id";
+    public static String PROP_REPORT_TYPE_ID = "report_type_id";
+    public static String PROP_STATISTICS_ITEM_ID = "statistics_item_id";
+    public static String PROP_UNQUALIFIED_REASON = "unqualified_reason";
+    public static String PROP_REMARK = "remark";
+
+}

+ 37 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/AddReportDetailStatisticsItemRelDTO.java

@@ -0,0 +1,37 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.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-20 19:19:40
+ */
+@Data
+@ApiModel(value = "创建报告详情与统计条目的关联入参")
+public class AddReportDetailStatisticsItemRelDTO {
+    @ApiModelProperty(value = "报告详情主键", required = true)
+    @NotNull(message = "报告详情主键不能为空")
+    private String reportDetailId;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空")
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "统计条目id", required = true)
+    @NotNull(message = "统计条目id不能为空")
+    private String statisticsItemId;
+
+    @ApiModelProperty(value = "不合格原因")
+    private String unqualifiedReason;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/DeleteReportDetailStatisticsItemRelDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.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-20 19:19:40
+ */
+@Data
+@ApiModel(value = "删除报告详情与统计条目的关联入参")
+public class DeleteReportDetailStatisticsItemRelDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 38 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/PageQueryReportDetailStatisticsItemRelDTO.java

@@ -0,0 +1,38 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.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-20 19:19:40
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询报告详情与统计条目的关联入参")
+public class PageQueryReportDetailStatisticsItemRelDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "报告详情主键", required = true)
+    private String reportDetailId;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "统计条目id", required = true)
+    private String statisticsItemId;
+
+    @ApiModelProperty(value = "不合格原因", required = true)
+    private String unqualifiedReason;
+
+    @ApiModelProperty(value = "备注", required = true)
+    private String remark;
+
+}

+ 31 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/QueryReportDetailStatisticsItemRelDTO.java

@@ -0,0 +1,31 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.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-20 19:19:40
+ */
+@Data
+@ApiModel(value = "查询报告详情与统计条目的关联入参")
+public class QueryReportDetailStatisticsItemRelDTO {
+    @ApiModelProperty(value = "报告详情主键", required = true)
+    private String reportDetailId;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "统计条目id", required = true)
+    private String statisticsItemId;
+
+    @ApiModelProperty(value = "不合格原因", required = true)
+    private String unqualifiedReason;
+
+    @ApiModelProperty(value = "备注", required = true)
+    private String remark;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/QueryReportDetailStatisticsItemRelDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.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-20 19:19:40
+ */
+@Data
+@ApiModel(value = "获取报告详情与统计条目的关联详情入参")
+public class QueryReportDetailStatisticsItemRelDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 43 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/dto/UpdateReportDetailStatisticsItemRelDTO.java

@@ -0,0 +1,43 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.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-20 19:19:40
+ */
+@Data
+@ApiModel(value = "更新报告详情与统计条目的关联入参")
+public class UpdateReportDetailStatisticsItemRelDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") 
+    private String id;
+
+    @ApiModelProperty(value = "报告详情主键", required = true)
+    @NotNull(message = "报告详情主键不能为空") 
+    private String reportDetailId;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") 
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "统计条目id", required = true)
+    @NotNull(message = "统计条目id不能为空") 
+    private String statisticsItemId;
+
+    @ApiModelProperty(value = "不合格原因", required = true)
+    @NotNull(message = "不合格原因不能为空") 
+    private String unqualifiedReason;
+
+    @ApiModelProperty(value = "备注", required = true)
+    @NotNull(message = "备注不能为空") 
+    private String remark;
+
+}

+ 36 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/vo/ResponseReportDetailStatisticsItemRelItemVO.java

@@ -0,0 +1,36 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.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-20 19:19:40
+ */
+@Data
+@ApiModel(value = "报告详情与统计条目的关联返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportDetailStatisticsItemRelItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告详情主键")
+    private String reportDetailId;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("统计条目id")
+    private String statisticsItemId;
+
+    @ApiModelProperty("不合格原因")
+    private String unqualifiedReason;
+
+    @ApiModelProperty("备注")
+    private String remark;
+}

+ 49 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/model/vo/ResponseReportDetailStatisticsItemRelListItemVO.java

@@ -0,0 +1,49 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.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-20 19:19:41
+ */
+@Data
+@ApiModel(value = "报告详情与统计条目的关联列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportDetailStatisticsItemRelListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告详情主键")
+    private String reportDetailId;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("统计条目id")
+    private String statisticsItemId;
+
+    @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/report/config/rel/detailstatisticsitem/service/IReportDetailStatisticsItemRelService.java

@@ -0,0 +1,77 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.ReportDetailStatisticsItemRel;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.dto.AddReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.dto.PageQueryReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.dto.QueryReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.dto.UpdateReportDetailStatisticsItemRelDTO;
+
+import java.util.List;
+
+/**
+ * 报告详情与统计条目的关联(ReportDetailStatisticsItemRel) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:19:39
+ */
+public interface IReportDetailStatisticsItemRelService {
+
+    /**
+     * 创建报告详情与统计条目的关联
+     *
+     * @param addReportDetailStatisticsItemRelDTO addDTO
+     * @return 报告详情与统计条目的关联主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    String createReportDetailStatisticsItemRel(AddReportDetailStatisticsItemRelDTO addReportDetailStatisticsItemRelDTO);
+
+    /**
+     * 报告详情与统计条目的关联详情
+     *
+     * @param id 主键
+     * @return 报告详情与统计条目的关联do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    ReportDetailStatisticsItemRel queryReportDetailStatisticsItemRelDetail(String id);
+
+    /**
+     * 更新报告详情与统计条目的关联
+     *
+     * @param updateReportDetailStatisticsItemRelDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    void updateReportDetailStatisticsItemRel(UpdateReportDetailStatisticsItemRelDTO updateReportDetailStatisticsItemRelDTO);
+
+    /**
+     * 删除报告详情与统计条目的关联
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    void deleteReportDetailStatisticsItemRel(String id);
+
+    /**
+     * 查询报告详情与统计条目的关联
+     *
+     * @param queryReportDetailStatisticsItemRelDTO queryDTO
+     * @return List<ReportDetailStatisticsItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    List<ReportDetailStatisticsItemRel> queryReportDetailStatisticsItemRelList(QueryReportDetailStatisticsItemRelDTO queryReportDetailStatisticsItemRelDTO);
+
+    /**
+     * 分页查询报告详情与统计条目的关联
+     *
+     * @param pageQueryReportDetailStatisticsItemRelDTO pageQueryDTO
+     * @return IPage<ReportDetailStatisticsItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    IPage<ReportDetailStatisticsItemRel> pageQueryReportDetailStatisticsItemRel(PageQueryReportDetailStatisticsItemRelDTO pageQueryReportDetailStatisticsItemRelDTO);
+}

+ 232 - 0
src/main/java/com/persagy/apm/report/config/rel/detailstatisticsitem/service/impl/ReportDetailStatisticsItemRelServiceImpl.java

@@ -0,0 +1,232 @@
+package com.persagy.apm.report.config.rel.detailstatisticsitem.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.base.CaseFormat;
+import com.persagy.apm.common.constant.enums.ValidEnum;
+import com.persagy.apm.common.context.AppContext;
+import com.persagy.apm.common.model.dto.Sort;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.dao.ReportDetailStatisticsItemRelMapper;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.ConvertReportDetailStatisticsItemRelTool;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.ReportDetailStatisticsItemRel;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.dto.AddReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.dto.PageQueryReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.dto.QueryReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.model.dto.UpdateReportDetailStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.detailstatisticsitem.service.IReportDetailStatisticsItemRelService;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 报告详情与统计条目的关联(ReportDetailStatisticsItemRel) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:19:39
+ */
+@Service
+public class ReportDetailStatisticsItemRelServiceImpl extends ServiceImpl<ReportDetailStatisticsItemRelMapper, ReportDetailStatisticsItemRel>
+        implements IReportDetailStatisticsItemRelService {
+
+    /**
+     * 创建报告详情与统计条目的关联
+     *
+     * @return 报告详情与统计条目的关联主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    @Override
+    public String createReportDetailStatisticsItemRel(AddReportDetailStatisticsItemRelDTO addReportDetailStatisticsItemRelDTO) {
+        ReportDetailStatisticsItemRel reportDetailStatisticsItemRel = ConvertReportDetailStatisticsItemRelTool.INSTANCE.convertAddDto2Entity(addReportDetailStatisticsItemRelDTO);
+        // 设置默认值
+        setDefaultValue(reportDetailStatisticsItemRel);
+        save(reportDetailStatisticsItemRel);
+        return reportDetailStatisticsItemRel.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param reportDetailStatisticsItemRel 报告详情与统计条目的关联实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(ReportDetailStatisticsItemRel reportDetailStatisticsItemRel) {
+        reportDetailStatisticsItemRel.setCreator(AppContext.getContext().getAccountId());
+        
+
+    }
+
+    /**
+     * 报告详情与统计条目的关联详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    @Override
+    public ReportDetailStatisticsItemRel queryReportDetailStatisticsItemRelDetail(String id) {
+        ReportDetailStatisticsItemRel reportDetailStatisticsItemRel = getById(id);
+        if (reportDetailStatisticsItemRel == null) {
+            throw new IllegalArgumentException("查看ReportDetailStatisticsItemRel详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return reportDetailStatisticsItemRel;
+    }
+
+    /**
+     * 更新报告详情与统计条目的关联
+     *
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    @Override
+    public void updateReportDetailStatisticsItemRel(UpdateReportDetailStatisticsItemRelDTO updateReportDetailStatisticsItemRelDTO) {
+        ReportDetailStatisticsItemRel reportDetailStatisticsItemRel = getById(updateReportDetailStatisticsItemRelDTO.getId());
+        reportDetailStatisticsItemRel = ConvertReportDetailStatisticsItemRelTool.INSTANCE.convertUpdateDto2Entity(reportDetailStatisticsItemRel, updateReportDetailStatisticsItemRelDTO);
+        reportDetailStatisticsItemRel.setModifier(AppContext.getContext().getAccountId());
+        updateById(reportDetailStatisticsItemRel);
+    }
+
+    /**
+     * 校验报告详情与统计条目的关联是否可删除
+     *
+     * @param id 报告详情与统计条目的关联主键
+     * @return 报告详情与统计条目的关联do类
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    public ReportDetailStatisticsItemRel checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除ReportDetailStatisticsItemRel时发生异常,主键为空");
+        }
+
+        ReportDetailStatisticsItemRel reportDetailStatisticsItemRel = getById(id);
+
+        if (reportDetailStatisticsItemRel == null) {
+            throw new IllegalArgumentException("删除ReportDetailStatisticsItemRel时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return reportDetailStatisticsItemRel;
+    }
+
+    /**
+     * 删除报告详情与统计条目的关联
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    @Override
+    public void deleteReportDetailStatisticsItemRel(String id) {
+        // 校验是否可删除
+        ReportDetailStatisticsItemRel reportDetailStatisticsItemRel = checkDeletable(id);
+
+        reportDetailStatisticsItemRel.setValid(ValidEnum.FALSE.getType());
+        updateById(reportDetailStatisticsItemRel);
+    }
+
+    /**
+     * 查询报告详情与统计条目的关联
+     *
+     * @return List<ReportDetailStatisticsItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    @Override
+    public List<ReportDetailStatisticsItemRel> queryReportDetailStatisticsItemRelList(QueryReportDetailStatisticsItemRelDTO queryReportDetailStatisticsItemRelDTO) {
+        QueryWrapper<ReportDetailStatisticsItemRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportDetailStatisticsItemRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, ReportDetailStatisticsItemRel.PROP_CREATIONTIME);
+
+        if (queryReportDetailStatisticsItemRelDTO != null) {
+
+            
+            if (StringUtils.isNotEmpty(queryReportDetailStatisticsItemRelDTO.getReportDetailId())) {
+                queryWrapper.like(ReportDetailStatisticsItemRel.PROP_REPORT_DETAIL_ID, queryReportDetailStatisticsItemRelDTO.getReportDetailId());
+            }
+
+            
+            if (StringUtils.isNotEmpty(queryReportDetailStatisticsItemRelDTO.getReportTypeId())) {
+                queryWrapper.like(ReportDetailStatisticsItemRel.PROP_REPORT_TYPE_ID, queryReportDetailStatisticsItemRelDTO.getReportTypeId());
+            }
+
+            
+            if (StringUtils.isNotEmpty(queryReportDetailStatisticsItemRelDTO.getStatisticsItemId())) {
+                queryWrapper.like(ReportDetailStatisticsItemRel.PROP_STATISTICS_ITEM_ID, queryReportDetailStatisticsItemRelDTO.getStatisticsItemId());
+            }
+
+            
+            if (StringUtils.isNotEmpty(queryReportDetailStatisticsItemRelDTO.getUnqualifiedReason())) {
+                queryWrapper.like(ReportDetailStatisticsItemRel.PROP_UNQUALIFIED_REASON, queryReportDetailStatisticsItemRelDTO.getUnqualifiedReason());
+            }
+
+            
+            if (StringUtils.isNotEmpty(queryReportDetailStatisticsItemRelDTO.getRemark())) {
+                queryWrapper.like(ReportDetailStatisticsItemRel.PROP_REMARK, queryReportDetailStatisticsItemRelDTO.getRemark());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询报告详情与统计条目的关联
+     *
+     * @return IPage<ReportDetailStatisticsItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:19:39
+     */
+    @Override
+    public IPage<ReportDetailStatisticsItemRel> pageQueryReportDetailStatisticsItemRel(PageQueryReportDetailStatisticsItemRelDTO pageQueryReportDetailStatisticsItemRelDTO) {
+        QueryWrapper<ReportDetailStatisticsItemRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportDetailStatisticsItemRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<ReportDetailStatisticsItemRel> pageParam = new Page<>(pageQueryReportDetailStatisticsItemRelDTO.getPage(), pageQueryReportDetailStatisticsItemRelDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryReportDetailStatisticsItemRelDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, ReportDetailStatisticsItemRel.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryReportDetailStatisticsItemRelDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportDetailStatisticsItemRelDTO.getReportDetailId())) {
+            queryWrapper.like(ReportDetailStatisticsItemRel.PROP_REPORT_DETAIL_ID, pageQueryReportDetailStatisticsItemRelDTO.getReportDetailId());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportDetailStatisticsItemRelDTO.getReportTypeId())) {
+            queryWrapper.like(ReportDetailStatisticsItemRel.PROP_REPORT_TYPE_ID, pageQueryReportDetailStatisticsItemRelDTO.getReportTypeId());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportDetailStatisticsItemRelDTO.getStatisticsItemId())) {
+            queryWrapper.like(ReportDetailStatisticsItemRel.PROP_STATISTICS_ITEM_ID, pageQueryReportDetailStatisticsItemRelDTO.getStatisticsItemId());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportDetailStatisticsItemRelDTO.getUnqualifiedReason())) {
+            queryWrapper.like(ReportDetailStatisticsItemRel.PROP_UNQUALIFIED_REASON, pageQueryReportDetailStatisticsItemRelDTO.getUnqualifiedReason());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportDetailStatisticsItemRelDTO.getRemark())) {
+            queryWrapper.like(ReportDetailStatisticsItemRel.PROP_REMARK, pageQueryReportDetailStatisticsItemRelDTO.getRemark());
+        }
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+}

+ 16 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/dao/ReportTypeFunctionRelMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.report.config.rel.typefunction.dao;
+
+import com.persagy.apm.report.config.rel.typefunction.model.ReportTypeFunctionRel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 报告类型(ReportTypeFunctionRel)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-24 16:02:41
+ */
+@Mapper
+public interface ReportTypeFunctionRelMapper extends BaseMapper<ReportTypeFunctionRel> {
+
+}

+ 78 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/model/ConvertReportTypeFunctionRelTool.java

@@ -0,0 +1,78 @@
+package com.persagy.apm.report.config.rel.typefunction.model;
+
+import com.persagy.apm.report.config.rel.typefunction.model.dto.AddReportTypeFunctionRelDTO;
+import com.persagy.apm.report.config.rel.typefunction.model.dto.UpdateReportTypeFunctionRelDTO;
+import com.persagy.apm.report.config.rel.typefunction.model.vo.ResponseReportTypeFunctionRelItemVO;
+import com.persagy.apm.report.config.rel.typefunction.model.vo.ResponseReportTypeFunctionRelListItemVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.NullValueMappingStrategy;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 报告类型(ReportTypeFunctionRel) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-24 16:02:45 2021-05-24 16:02:45
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertReportTypeFunctionRelTool {
+
+    ConvertReportTypeFunctionRelTool INSTANCE = Mappers.getMapper(ConvertReportTypeFunctionRelTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param reportTypeFunctionRel do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:45
+     */
+    ResponseReportTypeFunctionRelItemVO convert2ResponseItemDTO(ReportTypeFunctionRel reportTypeFunctionRel);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param reportTypeFunctionRel do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:45
+     */
+    ResponseReportTypeFunctionRelListItemVO convert2ResponseListItemDTO(ReportTypeFunctionRel reportTypeFunctionRel);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param reportTypeFunctionRelList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:45
+     */
+    List<ResponseReportTypeFunctionRelListItemVO> convert2List(List<ReportTypeFunctionRel> reportTypeFunctionRelList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addReportTypeFunctionRelDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:45
+     */
+    ReportTypeFunctionRel convertAddDto2Entity(AddReportTypeFunctionRelDTO addReportTypeFunctionRelDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param reportTypeFunctionRel          更新前的do对象
+     * @param updateReportTypeFunctionRelDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:45
+     */
+    ReportTypeFunctionRel convertUpdateDto2Entity(@MappingTarget ReportTypeFunctionRel reportTypeFunctionRel, UpdateReportTypeFunctionRelDTO updateReportTypeFunctionRelDTO);
+}
+

+ 37 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/model/ReportTypeFunctionRel.java

@@ -0,0 +1,37 @@
+package com.persagy.apm.report.config.rel.typefunction.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;
+
+/**
+ * 报告类型(ReportTypeFunctionRel)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-24 16:02:42
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "报告类型")
+public class ReportTypeFunctionRel extends AuditableEntity<ReportTypeFunctionRel> implements Serializable {
+    private static final long serialVersionUID = 496688571929587378L;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("信息点id")
+    private String functionId;
+
+    @ApiModelProperty("所属段落")
+    private String belongParagraph;
+
+
+    public static String PROP_REPORT_TYPE_ID = "report_type_id";
+    public static String PROP_FUNCTION_ID = "function_id";
+    public static String PROP_BELONG_PARAGRAPH = "belong_paragraph";
+
+}

+ 31 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/AddReportTypeFunctionRelDTO.java

@@ -0,0 +1,31 @@
+package com.persagy.apm.report.config.rel.typefunction.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-24 16:02:42
+ */
+@Data
+@ApiModel(value = "创建报告类型入参")
+public class AddReportTypeFunctionRelDTO {
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") 
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "信息点id", required = true)
+    @NotNull(message = "信息点id不能为空") 
+    private String functionId;
+
+    @ApiModelProperty(value = "所属段落", required = true)
+    @NotNull(message = "所属段落不能为空") 
+    private String belongParagraph;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/DeleteReportTypeFunctionRelDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.rel.typefunction.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-24 16:02:44
+ */
+@Data
+@ApiModel(value = "删除报告类型入参")
+public class DeleteReportTypeFunctionRelDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 32 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/PageQueryReportTypeFunctionRelDTO.java

@@ -0,0 +1,32 @@
+package com.persagy.apm.report.config.rel.typefunction.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-24 16:02:45
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询报告类型入参")
+public class PageQueryReportTypeFunctionRelDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "信息点id", required = true)
+    private String functionId;
+
+    @ApiModelProperty(value = "所属段落", required = true)
+    private String belongParagraph;
+
+}

+ 25 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/QueryReportTypeFunctionRelDTO.java

@@ -0,0 +1,25 @@
+package com.persagy.apm.report.config.rel.typefunction.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-24 16:02:44
+ */
+@Data
+@ApiModel(value = "查询报告类型入参")
+public class QueryReportTypeFunctionRelDTO {
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "信息点id", required = true)
+    private String functionId;
+
+    @ApiModelProperty(value = "所属段落", required = true)
+    private String belongParagraph;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/QueryReportTypeFunctionRelDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.rel.typefunction.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-24 16:02:43
+ */
+@Data
+@ApiModel(value = "获取报告类型详情入参")
+public class QueryReportTypeFunctionRelDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 35 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/model/dto/UpdateReportTypeFunctionRelDTO.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.report.config.rel.typefunction.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-24 16:02:43
+ */
+@Data
+@ApiModel(value = "更新报告类型入参")
+public class UpdateReportTypeFunctionRelDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") 
+    private String id;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") 
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "信息点id", required = true)
+    @NotNull(message = "信息点id不能为空") 
+    private String functionId;
+
+    @ApiModelProperty(value = "所属段落", required = true)
+    @NotNull(message = "所属段落不能为空") 
+    private String belongParagraph;
+
+}

+ 43 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/model/vo/ResponseReportTypeFunctionRelItemVO.java

@@ -0,0 +1,43 @@
+package com.persagy.apm.report.config.rel.typefunction.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-24 16:02:45
+ */
+@Data
+@ApiModel(value = "报告类型返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeFunctionRelItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("信息点id")
+    private String functionId;
+
+    @ApiModelProperty("所属段落")
+    private String belongParagraph;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 43 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/model/vo/ResponseReportTypeFunctionRelListItemVO.java

@@ -0,0 +1,43 @@
+package com.persagy.apm.report.config.rel.typefunction.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-24 16:02:45
+ */
+@Data
+@ApiModel(value = "报告类型列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeFunctionRelListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("信息点id")
+    private String functionId;
+
+    @ApiModelProperty("所属段落")
+    private String belongParagraph;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 77 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/service/IReportTypeFunctionRelService.java

@@ -0,0 +1,77 @@
+package com.persagy.apm.report.config.rel.typefunction.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.report.config.rel.typefunction.model.ReportTypeFunctionRel;
+import com.persagy.apm.report.config.rel.typefunction.model.dto.AddReportTypeFunctionRelDTO;
+import com.persagy.apm.report.config.rel.typefunction.model.dto.PageQueryReportTypeFunctionRelDTO;
+import com.persagy.apm.report.config.rel.typefunction.model.dto.QueryReportTypeFunctionRelDTO;
+import com.persagy.apm.report.config.rel.typefunction.model.dto.UpdateReportTypeFunctionRelDTO;
+
+import java.util.List;
+
+/**
+ * 报告类型(ReportTypeFunctionRel) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-24 16:02:40
+ */
+public interface IReportTypeFunctionRelService {
+
+    /**
+     * 创建报告类型
+     *
+     * @param addReportTypeFunctionRelDTO addDTO
+     * @return 报告类型主键
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:40
+     */
+    String createReportTypeFunctionRel(AddReportTypeFunctionRelDTO addReportTypeFunctionRelDTO);
+
+    /**
+     * 报告类型详情
+     *
+     * @param id 主键
+     * @return 报告类型do对象
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:40
+     */
+    ReportTypeFunctionRel queryReportTypeFunctionRelDetail(String id);
+
+    /**
+     * 更新报告类型
+     *
+     * @param updateReportTypeFunctionRelDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:40
+     */
+    void updateReportTypeFunctionRel(UpdateReportTypeFunctionRelDTO updateReportTypeFunctionRelDTO);
+
+    /**
+     * 删除报告类型
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:40
+     */
+    void deleteReportTypeFunctionRel(String id);
+
+    /**
+     * 查询报告类型
+     *
+     * @param queryReportTypeFunctionRelDTO queryDTO
+     * @return List<ReportTypeFunctionRel>
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:40
+     */
+    List<ReportTypeFunctionRel> queryReportTypeFunctionRelList(QueryReportTypeFunctionRelDTO queryReportTypeFunctionRelDTO);
+
+    /**
+     * 分页查询报告类型
+     *
+     * @param pageQueryReportTypeFunctionRelDTO pageQueryDTO
+     * @return IPage<ReportTypeFunctionRel>
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:40
+     */
+    IPage<ReportTypeFunctionRel> pageQueryReportTypeFunctionRel(PageQueryReportTypeFunctionRelDTO pageQueryReportTypeFunctionRelDTO);
+}

+ 212 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunction/service/impl/ReportTypeFunctionRelServiceImpl.java

@@ -0,0 +1,212 @@
+package com.persagy.apm.report.config.rel.typefunction.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.base.CaseFormat;
+import com.persagy.apm.common.constant.enums.ValidEnum;
+import com.persagy.apm.common.context.AppContext;
+import com.persagy.apm.common.model.dto.Sort;
+import com.persagy.apm.report.config.rel.typefunction.dao.ReportTypeFunctionRelMapper;
+import com.persagy.apm.report.config.rel.typefunction.model.ConvertReportTypeFunctionRelTool;
+import com.persagy.apm.report.config.rel.typefunction.model.ReportTypeFunctionRel;
+import com.persagy.apm.report.config.rel.typefunction.model.dto.AddReportTypeFunctionRelDTO;
+import com.persagy.apm.report.config.rel.typefunction.model.dto.PageQueryReportTypeFunctionRelDTO;
+import com.persagy.apm.report.config.rel.typefunction.model.dto.QueryReportTypeFunctionRelDTO;
+import com.persagy.apm.report.config.rel.typefunction.model.dto.UpdateReportTypeFunctionRelDTO;
+import com.persagy.apm.report.config.rel.typefunction.service.IReportTypeFunctionRelService;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 报告类型(ReportTypeFunctionRel) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-24 16:02:41
+ */
+@Service
+public class ReportTypeFunctionRelServiceImpl extends ServiceImpl<ReportTypeFunctionRelMapper, ReportTypeFunctionRel>
+        implements IReportTypeFunctionRelService {
+
+    /**
+     * 创建报告类型
+     *
+     * @return 报告类型主键
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:41
+     */
+    @Override
+    public String createReportTypeFunctionRel(AddReportTypeFunctionRelDTO addReportTypeFunctionRelDTO) {
+        ReportTypeFunctionRel reportTypeFunctionRel = ConvertReportTypeFunctionRelTool.INSTANCE.convertAddDto2Entity(addReportTypeFunctionRelDTO);
+        // 设置默认值
+        setDefaultValue(reportTypeFunctionRel);
+        save(reportTypeFunctionRel);
+        return reportTypeFunctionRel.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param reportTypeFunctionRel 报告类型实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(ReportTypeFunctionRel reportTypeFunctionRel) {
+        reportTypeFunctionRel.setCreator(AppContext.getContext().getAccountId());
+        
+
+    }
+
+    /**
+     * 报告类型详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:41
+     */
+    @Override
+    public ReportTypeFunctionRel queryReportTypeFunctionRelDetail(String id) {
+        ReportTypeFunctionRel reportTypeFunctionRel = getById(id);
+        if (reportTypeFunctionRel == null) {
+            throw new IllegalArgumentException("查看ReportTypeFunctionRel详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return reportTypeFunctionRel;
+    }
+
+    /**
+     * 更新报告类型
+     *
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:41
+     */
+    @Override
+    public void updateReportTypeFunctionRel(UpdateReportTypeFunctionRelDTO updateReportTypeFunctionRelDTO) {
+        ReportTypeFunctionRel reportTypeFunctionRel = getById(updateReportTypeFunctionRelDTO.getId());
+        reportTypeFunctionRel = ConvertReportTypeFunctionRelTool.INSTANCE.convertUpdateDto2Entity(reportTypeFunctionRel, updateReportTypeFunctionRelDTO);
+        reportTypeFunctionRel.setModifier(AppContext.getContext().getAccountId());
+        updateById(reportTypeFunctionRel);
+    }
+
+    /**
+     * 校验报告类型是否可删除
+     *
+     * @param id 报告类型主键
+     * @return 报告类型do类
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:41
+     */
+    public ReportTypeFunctionRel checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除ReportTypeFunctionRel时发生异常,主键为空");
+        }
+
+        ReportTypeFunctionRel reportTypeFunctionRel = getById(id);
+
+        if (reportTypeFunctionRel == null) {
+            throw new IllegalArgumentException("删除ReportTypeFunctionRel时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return reportTypeFunctionRel;
+    }
+
+    /**
+     * 删除报告类型
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:41
+     */
+    @Override
+    public void deleteReportTypeFunctionRel(String id) {
+        // 校验是否可删除
+        ReportTypeFunctionRel reportTypeFunctionRel = checkDeletable(id);
+
+        reportTypeFunctionRel.setValid(ValidEnum.FALSE.getType());
+        updateById(reportTypeFunctionRel);
+    }
+
+    /**
+     * 查询报告类型
+     *
+     * @return List<ReportTypeFunctionRel>
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:41
+     */
+    @Override
+    public List<ReportTypeFunctionRel> queryReportTypeFunctionRelList(QueryReportTypeFunctionRelDTO queryReportTypeFunctionRelDTO) {
+        QueryWrapper<ReportTypeFunctionRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportTypeFunctionRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, ReportTypeFunctionRel.PROP_CREATIONTIME);
+
+        if (queryReportTypeFunctionRelDTO != null) {
+
+            
+            if (StringUtils.isNotEmpty(queryReportTypeFunctionRelDTO.getReportTypeId())) {
+                queryWrapper.like(ReportTypeFunctionRel.PROP_REPORT_TYPE_ID, queryReportTypeFunctionRelDTO.getReportTypeId());
+            }
+
+            
+            if (StringUtils.isNotEmpty(queryReportTypeFunctionRelDTO.getFunctionId())) {
+                queryWrapper.like(ReportTypeFunctionRel.PROP_FUNCTION_ID, queryReportTypeFunctionRelDTO.getFunctionId());
+            }
+
+            
+            if (StringUtils.isNotEmpty(queryReportTypeFunctionRelDTO.getBelongParagraph())) {
+                queryWrapper.like(ReportTypeFunctionRel.PROP_BELONG_PARAGRAPH, queryReportTypeFunctionRelDTO.getBelongParagraph());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询报告类型
+     *
+     * @return IPage<ReportTypeFunctionRel>
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:41
+     */
+    @Override
+    public IPage<ReportTypeFunctionRel> pageQueryReportTypeFunctionRel(PageQueryReportTypeFunctionRelDTO pageQueryReportTypeFunctionRelDTO) {
+        QueryWrapper<ReportTypeFunctionRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportTypeFunctionRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<ReportTypeFunctionRel> pageParam = new Page<>(pageQueryReportTypeFunctionRelDTO.getPage(), pageQueryReportTypeFunctionRelDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryReportTypeFunctionRelDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, ReportTypeFunctionRel.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryReportTypeFunctionRelDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportTypeFunctionRelDTO.getReportTypeId())) {
+            queryWrapper.like(ReportTypeFunctionRel.PROP_REPORT_TYPE_ID, pageQueryReportTypeFunctionRelDTO.getReportTypeId());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportTypeFunctionRelDTO.getFunctionId())) {
+            queryWrapper.like(ReportTypeFunctionRel.PROP_FUNCTION_ID, pageQueryReportTypeFunctionRelDTO.getFunctionId());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportTypeFunctionRelDTO.getBelongParagraph())) {
+            queryWrapper.like(ReportTypeFunctionRel.PROP_BELONG_PARAGRAPH, pageQueryReportTypeFunctionRelDTO.getBelongParagraph());
+        }
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+}

+ 16 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/dao/ReportTypeFunctionGroupRelMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.dao;
+
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.ReportTypeFunctionGroupRel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 报告类型(ReportTypeFunctionGroupRel)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-24 16:02:15
+ */
+@Mapper
+public interface ReportTypeFunctionGroupRelMapper extends BaseMapper<ReportTypeFunctionGroupRel> {
+
+}

+ 78 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/ConvertReportTypeFunctionGroupRelTool.java

@@ -0,0 +1,78 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.model;
+
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.dto.AddReportTypeFunctionGroupRelDTO;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.dto.UpdateReportTypeFunctionGroupRelDTO;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.vo.ResponseReportTypeFunctionGroupRelItemVO;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.vo.ResponseReportTypeFunctionGroupRelListItemVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.NullValueMappingStrategy;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 报告类型(ReportTypeFunctionGroupRel) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-24 16:02:18 2021-05-24 16:02:18
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertReportTypeFunctionGroupRelTool {
+
+    ConvertReportTypeFunctionGroupRelTool INSTANCE = Mappers.getMapper(ConvertReportTypeFunctionGroupRelTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param reportTypeFunctionGroupRel do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:18
+     */
+    ResponseReportTypeFunctionGroupRelItemVO convert2ResponseItemDTO(ReportTypeFunctionGroupRel reportTypeFunctionGroupRel);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param reportTypeFunctionGroupRel do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:18
+     */
+    ResponseReportTypeFunctionGroupRelListItemVO convert2ResponseListItemDTO(ReportTypeFunctionGroupRel reportTypeFunctionGroupRel);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param reportTypeFunctionGroupRelList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:18
+     */
+    List<ResponseReportTypeFunctionGroupRelListItemVO> convert2List(List<ReportTypeFunctionGroupRel> reportTypeFunctionGroupRelList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addReportTypeFunctionGroupRelDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:18
+     */
+    ReportTypeFunctionGroupRel convertAddDto2Entity(AddReportTypeFunctionGroupRelDTO addReportTypeFunctionGroupRelDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param reportTypeFunctionGroupRel          更新前的do对象
+     * @param updateReportTypeFunctionGroupRelDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:18
+     */
+    ReportTypeFunctionGroupRel convertUpdateDto2Entity(@MappingTarget ReportTypeFunctionGroupRel reportTypeFunctionGroupRel, UpdateReportTypeFunctionGroupRelDTO updateReportTypeFunctionGroupRelDTO);
+}
+

+ 37 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/ReportTypeFunctionGroupRel.java

@@ -0,0 +1,37 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.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;
+
+/**
+ * 报告类型(ReportTypeFunctionGroupRel)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-24 16:02:15
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "报告类型")
+public class ReportTypeFunctionGroupRel extends AuditableEntity<ReportTypeFunctionGroupRel> implements Serializable {
+    private static final long serialVersionUID = 279475542066816931L;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("信息点分组id")
+    private String functionGroupId;
+
+    @ApiModelProperty("所属段落")
+    private String belongParagraph;
+
+
+    public static String PROP_REPORT_TYPE_ID = "report_type_id";
+    public static String PROP_FUNCTION_GROUP_ID = "function_group_id";
+    public static String PROP_BELONG_PARAGRAPH = "belong_paragraph";
+
+}

+ 31 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/AddReportTypeFunctionGroupRelDTO.java

@@ -0,0 +1,31 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.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-24 16:02:16
+ */
+@Data
+@ApiModel(value = "创建报告类型入参")
+public class AddReportTypeFunctionGroupRelDTO {
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") 
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "信息点分组id", required = true)
+    @NotNull(message = "信息点分组id不能为空") 
+    private String functionGroupId;
+
+    @ApiModelProperty(value = "所属段落", required = true)
+    @NotNull(message = "所属段落不能为空") 
+    private String belongParagraph;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/DeleteReportTypeFunctionGroupRelDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.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-24 16:02:17
+ */
+@Data
+@ApiModel(value = "删除报告类型入参")
+public class DeleteReportTypeFunctionGroupRelDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 32 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/PageQueryReportTypeFunctionGroupRelDTO.java

@@ -0,0 +1,32 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.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-24 16:02:17
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询报告类型入参")
+public class PageQueryReportTypeFunctionGroupRelDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "信息点分组id", required = true)
+    private String functionGroupId;
+
+    @ApiModelProperty(value = "所属段落", required = true)
+    private String belongParagraph;
+
+}

+ 25 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/QueryReportTypeFunctionGroupRelDTO.java

@@ -0,0 +1,25 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.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-24 16:02:17
+ */
+@Data
+@ApiModel(value = "查询报告类型入参")
+public class QueryReportTypeFunctionGroupRelDTO {
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "信息点分组id", required = true)
+    private String functionGroupId;
+
+    @ApiModelProperty(value = "所属段落", required = true)
+    private String belongParagraph;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/QueryReportTypeFunctionGroupRelDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.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-24 16:02:16
+ */
+@Data
+@ApiModel(value = "获取报告类型详情入参")
+public class QueryReportTypeFunctionGroupRelDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 35 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/dto/UpdateReportTypeFunctionGroupRelDTO.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.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-24 16:02:16
+ */
+@Data
+@ApiModel(value = "更新报告类型入参")
+public class UpdateReportTypeFunctionGroupRelDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") 
+    private String id;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") 
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "信息点分组id", required = true)
+    @NotNull(message = "信息点分组id不能为空") 
+    private String functionGroupId;
+
+    @ApiModelProperty(value = "所属段落", required = true)
+    @NotNull(message = "所属段落不能为空") 
+    private String belongParagraph;
+
+}

+ 43 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/vo/ResponseReportTypeFunctionGroupRelItemVO.java

@@ -0,0 +1,43 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.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-24 16:02:18
+ */
+@Data
+@ApiModel(value = "报告类型返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeFunctionGroupRelItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("信息点分组id")
+    private String functionGroupId;
+
+    @ApiModelProperty("所属段落")
+    private String belongParagraph;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 43 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/model/vo/ResponseReportTypeFunctionGroupRelListItemVO.java

@@ -0,0 +1,43 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.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-24 16:02:18
+ */
+@Data
+@ApiModel(value = "报告类型列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeFunctionGroupRelListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("信息点分组id")
+    private String functionGroupId;
+
+    @ApiModelProperty("所属段落")
+    private String belongParagraph;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 77 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/service/IReportTypeFunctionGroupRelService.java

@@ -0,0 +1,77 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.ReportTypeFunctionGroupRel;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.dto.AddReportTypeFunctionGroupRelDTO;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.dto.PageQueryReportTypeFunctionGroupRelDTO;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.dto.QueryReportTypeFunctionGroupRelDTO;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.dto.UpdateReportTypeFunctionGroupRelDTO;
+
+import java.util.List;
+
+/**
+ * 报告类型(ReportTypeFunctionGroupRel) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-24 16:02:14
+ */
+public interface IReportTypeFunctionGroupRelService {
+
+    /**
+     * 创建报告类型
+     *
+     * @param addReportTypeFunctionGroupRelDTO addDTO
+     * @return 报告类型主键
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    String createReportTypeFunctionGroupRel(AddReportTypeFunctionGroupRelDTO addReportTypeFunctionGroupRelDTO);
+
+    /**
+     * 报告类型详情
+     *
+     * @param id 主键
+     * @return 报告类型do对象
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    ReportTypeFunctionGroupRel queryReportTypeFunctionGroupRelDetail(String id);
+
+    /**
+     * 更新报告类型
+     *
+     * @param updateReportTypeFunctionGroupRelDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    void updateReportTypeFunctionGroupRel(UpdateReportTypeFunctionGroupRelDTO updateReportTypeFunctionGroupRelDTO);
+
+    /**
+     * 删除报告类型
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    void deleteReportTypeFunctionGroupRel(String id);
+
+    /**
+     * 查询报告类型
+     *
+     * @param queryReportTypeFunctionGroupRelDTO queryDTO
+     * @return List<ReportTypeFunctionGroupRel>
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    List<ReportTypeFunctionGroupRel> queryReportTypeFunctionGroupRelList(QueryReportTypeFunctionGroupRelDTO queryReportTypeFunctionGroupRelDTO);
+
+    /**
+     * 分页查询报告类型
+     *
+     * @param pageQueryReportTypeFunctionGroupRelDTO pageQueryDTO
+     * @return IPage<ReportTypeFunctionGroupRel>
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    IPage<ReportTypeFunctionGroupRel> pageQueryReportTypeFunctionGroupRel(PageQueryReportTypeFunctionGroupRelDTO pageQueryReportTypeFunctionGroupRelDTO);
+}

+ 209 - 0
src/main/java/com/persagy/apm/report/config/rel/typefunctiongroup/service/impl/ReportTypeFunctionGroupRelServiceImpl.java

@@ -0,0 +1,209 @@
+package com.persagy.apm.report.config.rel.typefunctiongroup.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.base.CaseFormat;
+import com.persagy.apm.common.constant.enums.ValidEnum;
+import com.persagy.apm.common.context.AppContext;
+import com.persagy.apm.common.model.dto.Sort;
+import com.persagy.apm.report.config.rel.typefunctiongroup.dao.ReportTypeFunctionGroupRelMapper;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.ConvertReportTypeFunctionGroupRelTool;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.ReportTypeFunctionGroupRel;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.dto.AddReportTypeFunctionGroupRelDTO;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.dto.PageQueryReportTypeFunctionGroupRelDTO;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.dto.QueryReportTypeFunctionGroupRelDTO;
+import com.persagy.apm.report.config.rel.typefunctiongroup.model.dto.UpdateReportTypeFunctionGroupRelDTO;
+import com.persagy.apm.report.config.rel.typefunctiongroup.service.IReportTypeFunctionGroupRelService;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 报告类型(ReportTypeFunctionGroupRel) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-24 16:02:14
+ */
+@Service
+public class ReportTypeFunctionGroupRelServiceImpl extends ServiceImpl<ReportTypeFunctionGroupRelMapper, ReportTypeFunctionGroupRel>
+        implements IReportTypeFunctionGroupRelService {
+
+    /**
+     * 创建报告类型
+     *
+     * @return 报告类型主键
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    @Override
+    public String createReportTypeFunctionGroupRel(AddReportTypeFunctionGroupRelDTO addReportTypeFunctionGroupRelDTO) {
+        ReportTypeFunctionGroupRel reportTypeFunctionGroupRel = ConvertReportTypeFunctionGroupRelTool.INSTANCE.convertAddDto2Entity(addReportTypeFunctionGroupRelDTO);
+        // 设置默认值
+        setDefaultValue(reportTypeFunctionGroupRel);
+        save(reportTypeFunctionGroupRel);
+        return reportTypeFunctionGroupRel.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param reportTypeFunctionGroupRel 报告类型实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(ReportTypeFunctionGroupRel reportTypeFunctionGroupRel) {
+        reportTypeFunctionGroupRel.setCreator(AppContext.getContext().getAccountId());
+        
+
+    }
+
+    /**
+     * 报告类型详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    @Override
+    public ReportTypeFunctionGroupRel queryReportTypeFunctionGroupRelDetail(String id) {
+        ReportTypeFunctionGroupRel reportTypeFunctionGroupRel = getById(id);
+        if (reportTypeFunctionGroupRel == null) {
+            throw new IllegalArgumentException("查看ReportTypeFunctionGroupRel详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return reportTypeFunctionGroupRel;
+    }
+
+    /**
+     * 更新报告类型
+     *
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    @Override
+    public void updateReportTypeFunctionGroupRel(UpdateReportTypeFunctionGroupRelDTO updateReportTypeFunctionGroupRelDTO) {
+        ReportTypeFunctionGroupRel reportTypeFunctionGroupRel = getById(updateReportTypeFunctionGroupRelDTO.getId());
+        reportTypeFunctionGroupRel = ConvertReportTypeFunctionGroupRelTool.INSTANCE.convertUpdateDto2Entity(reportTypeFunctionGroupRel, updateReportTypeFunctionGroupRelDTO);
+        reportTypeFunctionGroupRel.setModifier(AppContext.getContext().getAccountId());
+        updateById(reportTypeFunctionGroupRel);
+    }
+
+    /**
+     * 校验报告类型是否可删除
+     *
+     * @param id 报告类型主键
+     * @return 报告类型do类
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    public ReportTypeFunctionGroupRel checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除ReportTypeFunctionGroupRel时发生异常,主键为空");
+        }
+
+        ReportTypeFunctionGroupRel reportTypeFunctionGroupRel = getById(id);
+
+        if (reportTypeFunctionGroupRel == null) {
+            throw new IllegalArgumentException("删除ReportTypeFunctionGroupRel时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return reportTypeFunctionGroupRel;
+    }
+
+    /**
+     * 删除报告类型
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    @Override
+    public void deleteReportTypeFunctionGroupRel(String id) {
+        // 校验是否可删除
+        ReportTypeFunctionGroupRel reportTypeFunctionGroupRel = checkDeletable(id);
+
+        reportTypeFunctionGroupRel.setValid(ValidEnum.FALSE.getType());
+        updateById(reportTypeFunctionGroupRel);
+    }
+
+    /**
+     * 查询报告类型
+     *
+     * @return List<ReportTypeFunctionGroupRel>
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    @Override
+    public List<ReportTypeFunctionGroupRel> queryReportTypeFunctionGroupRelList(QueryReportTypeFunctionGroupRelDTO queryReportTypeFunctionGroupRelDTO) {
+        QueryWrapper<ReportTypeFunctionGroupRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportTypeFunctionGroupRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, true, ReportTypeFunctionGroupRel.PROP_CREATIONTIME);
+
+        if (queryReportTypeFunctionGroupRelDTO != null) {
+
+            if (StringUtils.isNotEmpty(queryReportTypeFunctionGroupRelDTO.getReportTypeId())) {
+                queryWrapper.eq(ReportTypeFunctionGroupRel.PROP_REPORT_TYPE_ID, queryReportTypeFunctionGroupRelDTO.getReportTypeId());
+            }
+
+            if (StringUtils.isNotEmpty(queryReportTypeFunctionGroupRelDTO.getFunctionGroupId())) {
+                queryWrapper.eq(ReportTypeFunctionGroupRel.PROP_FUNCTION_GROUP_ID, queryReportTypeFunctionGroupRelDTO.getFunctionGroupId());
+            }
+
+            if (StringUtils.isNotEmpty(queryReportTypeFunctionGroupRelDTO.getBelongParagraph())) {
+                queryWrapper.eq(ReportTypeFunctionGroupRel.PROP_BELONG_PARAGRAPH, queryReportTypeFunctionGroupRelDTO.getBelongParagraph());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询报告类型
+     *
+     * @return IPage<ReportTypeFunctionGroupRel>
+     * @author lixing
+     * @version V1.0 2021-05-24 16:02:14
+     */
+    @Override
+    public IPage<ReportTypeFunctionGroupRel> pageQueryReportTypeFunctionGroupRel(PageQueryReportTypeFunctionGroupRelDTO pageQueryReportTypeFunctionGroupRelDTO) {
+        QueryWrapper<ReportTypeFunctionGroupRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportTypeFunctionGroupRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<ReportTypeFunctionGroupRel> pageParam = new Page<>(pageQueryReportTypeFunctionGroupRelDTO.getPage(), pageQueryReportTypeFunctionGroupRelDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryReportTypeFunctionGroupRelDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, ReportTypeFunctionGroupRel.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryReportTypeFunctionGroupRelDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportTypeFunctionGroupRelDTO.getReportTypeId())) {
+            queryWrapper.like(ReportTypeFunctionGroupRel.PROP_REPORT_TYPE_ID, pageQueryReportTypeFunctionGroupRelDTO.getReportTypeId());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportTypeFunctionGroupRelDTO.getFunctionGroupId())) {
+            queryWrapper.like(ReportTypeFunctionGroupRel.PROP_FUNCTION_GROUP_ID, pageQueryReportTypeFunctionGroupRelDTO.getFunctionGroupId());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportTypeFunctionGroupRelDTO.getBelongParagraph())) {
+            queryWrapper.like(ReportTypeFunctionGroupRel.PROP_BELONG_PARAGRAPH, pageQueryReportTypeFunctionGroupRelDTO.getBelongParagraph());
+        }
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+}

+ 101 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/controller/ReportTypeStatisticsItemRelController.java

@@ -0,0 +1,101 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.controller;
+
+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.report.config.rel.typestatisticsitem.model.ConvertReportTypeStatisticsItemRelTool;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.ReportTypeStatisticsItemRel;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.dto.*;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.vo.ResponseReportTypeStatisticsItemRelItemVO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.vo.ResponseReportTypeStatisticsItemRelListItemVO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.service.IReportTypeStatisticsItemRelService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 报告类型和统计条目关联关系控制层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:20:19
+ */
+@ApiIgnore
+@Api(tags = "报告类型和统计条目关联关系", hidden = true)
+@Validated
+@RestController
+@RequestMapping("reportTypeStatisticsItemRels")
+public class ReportTypeStatisticsItemRelController {
+    @Autowired
+    private IReportTypeStatisticsItemRelService reportTypeStatisticsItemRelService;
+
+    @ApiOperation(value = "创建报告类型和统计条目关联关系")
+    @PostMapping("/create")
+    public CommonResult<ApmResponseUpsertVO> createReportTypeStatisticsItemRel(
+            @Valid @RequestBody AddReportTypeStatisticsItemRelDTO addReportTypeStatisticsItemRelDTO) {
+        String id = reportTypeStatisticsItemRelService.createReportTypeStatisticsItemRel(addReportTypeStatisticsItemRelDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO(id));
+    }
+
+    @ApiOperation(value = "报告类型和统计条目关联关系详情")
+    @PostMapping("/get")
+    public CommonResult<ResponseReportTypeStatisticsItemRelItemVO> queryReportTypeStatisticsItemRelDetail(
+            @Valid @RequestBody QueryReportTypeStatisticsItemRelDetailDTO queryReportTypeStatisticsItemRelDetailDTO) {
+        ReportTypeStatisticsItemRel reportTypeStatisticsItemRel = reportTypeStatisticsItemRelService.queryReportTypeStatisticsItemRelDetail(queryReportTypeStatisticsItemRelDetailDTO.getId());
+        ResponseReportTypeStatisticsItemRelItemVO responseReportTypeStatisticsItemRelItemVO = ConvertReportTypeStatisticsItemRelTool.INSTANCE.convert2ResponseItemDTO(reportTypeStatisticsItemRel);
+        return ResultHelper.single(responseReportTypeStatisticsItemRelItemVO);
+    }
+
+
+    @ApiOperation(value = "更新报告类型和统计条目关联关系")
+    @PostMapping("/update")
+    public CommonResult<ApmResponseUpsertVO> updateReportTypeStatisticsItemRel(
+            @Valid @RequestBody UpdateReportTypeStatisticsItemRelDTO updateReportTypeStatisticsItemRelDTO) {
+        reportTypeStatisticsItemRelService.updateReportTypeStatisticsItemRel(updateReportTypeStatisticsItemRelDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO(updateReportTypeStatisticsItemRelDTO.getId()));
+    }
+
+
+    @ApiOperation(value = "删除报告类型和统计条目关联关系")
+    @PostMapping("/delete")
+    public CommonResult deleteReportTypeStatisticsItemRel(
+            @RequestBody @Valid DeleteReportTypeStatisticsItemRelDTO deleteReportTypeStatisticsItemRelDTO) {
+        reportTypeStatisticsItemRelService.deleteReportTypeStatisticsItemRel(deleteReportTypeStatisticsItemRelDTO.getId());
+        return ResultHelper.success();
+    }
+
+
+    @ApiOperation(value = "报告类型和统计条目关联关系列表")
+    @PostMapping("/query")
+    public CommonResult<PageList<ResponseReportTypeStatisticsItemRelListItemVO>> queryReportTypeStatisticsItemRel(
+            @Valid @RequestBody QueryReportTypeStatisticsItemRelDTO queryReportTypeStatisticsItemRelDTO) {
+        List<ReportTypeStatisticsItemRel> reportTypeStatisticsItemRelList = reportTypeStatisticsItemRelService.queryReportTypeStatisticsItemRelList(queryReportTypeStatisticsItemRelDTO);
+        List<ResponseReportTypeStatisticsItemRelListItemVO> resultList = ConvertReportTypeStatisticsItemRelTool.INSTANCE.convert2List(reportTypeStatisticsItemRelList);
+        return ResultHelper.multi(resultList);
+    }
+
+    //@ApiOperation(value = "报告类型和统计条目关联关系列表, 分页查询")
+    //@PostMapping("/query")
+    //public CommonResult<PageList<ResponseReportTypeStatisticsItemRelListItemVO>> queryReportTypeStatisticsItemRel(
+    //        @Valid @RequestBody PageQueryReportTypeStatisticsItemRelDTO pageQueryReportTypeStatisticsItemRelDTO) {
+    //    IPage<ReportTypeStatisticsItemRel> pagedList = reportTypeStatisticsItemRelService.pageQueryReportTypeStatisticsItemRel(pageQueryReportTypeStatisticsItemRelDTO);
+    //    IPage<ResponseReportTypeStatisticsItemRelListItemVO> pagedResultList = pagedList.convert(item -> {
+    //        try {
+    //           return ConvertReportTypeStatisticsItemRelTool.INSTANCE.convert2ResponseListItemDTO(item);
+    //        } catch (Exception e) {
+    //            throw new IllegalArgumentException("分页查询,ReportTypeStatisticsItemRel实体类转换为列表对象发生异常", e);
+    //        }
+    //    });
+    //    return ResultHelper.multi(pagedResultList);
+    //}
+}
+

+ 16 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/dao/ReportTypeStatisticsItemRelMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.dao;
+
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.ReportTypeStatisticsItemRel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 报告类型和统计条目关联关系(ReportTypeStatisticsItemRel)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:20:21
+ */
+@Mapper
+public interface ReportTypeStatisticsItemRelMapper extends BaseMapper<ReportTypeStatisticsItemRel> {
+
+}

+ 78 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/ConvertReportTypeStatisticsItemRelTool.java

@@ -0,0 +1,78 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.model;
+
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.dto.AddReportTypeStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.dto.UpdateReportTypeStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.vo.ResponseReportTypeStatisticsItemRelItemVO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.vo.ResponseReportTypeStatisticsItemRelListItemVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.NullValueMappingStrategy;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 报告类型和统计条目关联关系(ReportTypeStatisticsItemRel) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:20:23 2021-05-20 19:20:23
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertReportTypeStatisticsItemRelTool {
+
+    ConvertReportTypeStatisticsItemRelTool INSTANCE = Mappers.getMapper(ConvertReportTypeStatisticsItemRelTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param reportTypeStatisticsItemRel do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:23
+     */
+    ResponseReportTypeStatisticsItemRelItemVO convert2ResponseItemDTO(ReportTypeStatisticsItemRel reportTypeStatisticsItemRel);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param reportTypeStatisticsItemRel do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:23
+     */
+    ResponseReportTypeStatisticsItemRelListItemVO convert2ResponseListItemDTO(ReportTypeStatisticsItemRel reportTypeStatisticsItemRel);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param reportTypeStatisticsItemRelList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:23
+     */
+    List<ResponseReportTypeStatisticsItemRelListItemVO> convert2List(List<ReportTypeStatisticsItemRel> reportTypeStatisticsItemRelList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addReportTypeStatisticsItemRelDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:23
+     */
+    ReportTypeStatisticsItemRel convertAddDto2Entity(AddReportTypeStatisticsItemRelDTO addReportTypeStatisticsItemRelDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param reportTypeStatisticsItemRel          更新前的do对象
+     * @param updateReportTypeStatisticsItemRelDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:23
+     */
+    ReportTypeStatisticsItemRel convertUpdateDto2Entity(@MappingTarget ReportTypeStatisticsItemRel reportTypeStatisticsItemRel, UpdateReportTypeStatisticsItemRelDTO updateReportTypeStatisticsItemRelDTO);
+}
+

+ 33 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/ReportTypeStatisticsItemRel.java

@@ -0,0 +1,33 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.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;
+
+/**
+ * 报告类型和统计条目关联关系(ReportTypeStatisticsItemRel)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:20:21
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "报告类型和统计条目关联关系")
+public class ReportTypeStatisticsItemRel extends AuditableEntity<ReportTypeStatisticsItemRel> implements Serializable {
+    private static final long serialVersionUID = -21196831096124914L;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("统计条目id")
+    private String statisticsItemId;
+
+
+    public static String PROP_REPORT_TYPE_ID = "report_type_id";
+    public static String PROP_STATISTICS_ITEM_ID = "statistics_item_id";
+
+}

+ 27 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/AddReportTypeStatisticsItemRelDTO.java

@@ -0,0 +1,27 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.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-20 19:20:21
+ */
+@Data
+@ApiModel(value = "创建报告类型和统计条目关联关系入参")
+public class AddReportTypeStatisticsItemRelDTO {
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") 
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "统计条目id", required = true)
+    @NotNull(message = "统计条目id不能为空") 
+    private String statisticsItemId;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/DeleteReportTypeStatisticsItemRelDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.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-20 19:20:23
+ */
+@Data
+@ApiModel(value = "删除报告类型和统计条目关联关系入参")
+public class DeleteReportTypeStatisticsItemRelDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 29 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/PageQueryReportTypeStatisticsItemRelDTO.java

@@ -0,0 +1,29 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.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-20 19:20:23
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询报告类型和统计条目关联关系入参")
+public class PageQueryReportTypeStatisticsItemRelDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "统计条目id", required = true)
+    private String statisticsItemId;
+
+}

+ 22 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/QueryReportTypeStatisticsItemRelDTO.java

@@ -0,0 +1,22 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.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-20 19:20:23
+ */
+@Data
+@ApiModel(value = "查询报告类型和统计条目关联关系入参")
+public class QueryReportTypeStatisticsItemRelDTO {
+    @ApiModelProperty(value = "报告类型id", required = true)
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "统计条目id", required = true)
+    private String statisticsItemId;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/QueryReportTypeStatisticsItemRelDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.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-20 19:20:22
+ */
+@Data
+@ApiModel(value = "获取报告类型和统计条目关联关系详情入参")
+public class QueryReportTypeStatisticsItemRelDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 31 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/dto/UpdateReportTypeStatisticsItemRelDTO.java

@@ -0,0 +1,31 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.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-20 19:20:22
+ */
+@Data
+@ApiModel(value = "更新报告类型和统计条目关联关系入参")
+public class UpdateReportTypeStatisticsItemRelDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") 
+    private String id;
+
+    @ApiModelProperty(value = "报告类型id", required = true)
+    @NotNull(message = "报告类型id不能为空") 
+    private String reportTypeId;
+
+    @ApiModelProperty(value = "统计条目id", required = true)
+    @NotNull(message = "统计条目id不能为空") 
+    private String statisticsItemId;
+
+}

+ 40 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/vo/ResponseReportTypeStatisticsItemRelItemVO.java

@@ -0,0 +1,40 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.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-20 19:20:23
+ */
+@Data
+@ApiModel(value = "报告类型和统计条目关联关系返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeStatisticsItemRelItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("统计条目id")
+    private String statisticsItemId;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 40 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/model/vo/ResponseReportTypeStatisticsItemRelListItemVO.java

@@ -0,0 +1,40 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.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-20 19:20:23
+ */
+@Data
+@ApiModel(value = "报告类型和统计条目关联关系列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseReportTypeStatisticsItemRelListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("报告类型id")
+    private String reportTypeId;
+
+    @ApiModelProperty("统计条目id")
+    private String statisticsItemId;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 77 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/service/IReportTypeStatisticsItemRelService.java

@@ -0,0 +1,77 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.ReportTypeStatisticsItemRel;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.dto.AddReportTypeStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.dto.PageQueryReportTypeStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.dto.QueryReportTypeStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.dto.UpdateReportTypeStatisticsItemRelDTO;
+
+import java.util.List;
+
+/**
+ * 报告类型和统计条目关联关系(ReportTypeStatisticsItemRel) service接口
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:20:20
+ */
+public interface IReportTypeStatisticsItemRelService {
+
+    /**
+     * 创建报告类型和统计条目关联关系
+     *
+     * @param addReportTypeStatisticsItemRelDTO addDTO
+     * @return 报告类型和统计条目关联关系主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    String createReportTypeStatisticsItemRel(AddReportTypeStatisticsItemRelDTO addReportTypeStatisticsItemRelDTO);
+
+    /**
+     * 报告类型和统计条目关联关系详情
+     *
+     * @param id 主键
+     * @return 报告类型和统计条目关联关系do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    ReportTypeStatisticsItemRel queryReportTypeStatisticsItemRelDetail(String id);
+
+    /**
+     * 更新报告类型和统计条目关联关系
+     *
+     * @param updateReportTypeStatisticsItemRelDTO updateDTO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    void updateReportTypeStatisticsItemRel(UpdateReportTypeStatisticsItemRelDTO updateReportTypeStatisticsItemRelDTO);
+
+    /**
+     * 删除报告类型和统计条目关联关系
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    void deleteReportTypeStatisticsItemRel(String id);
+
+    /**
+     * 查询报告类型和统计条目关联关系
+     *
+     * @param queryReportTypeStatisticsItemRelDTO queryDTO
+     * @return List<ReportTypeStatisticsItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    List<ReportTypeStatisticsItemRel> queryReportTypeStatisticsItemRelList(QueryReportTypeStatisticsItemRelDTO queryReportTypeStatisticsItemRelDTO);
+
+    /**
+     * 分页查询报告类型和统计条目关联关系
+     *
+     * @param pageQueryReportTypeStatisticsItemRelDTO pageQueryDTO
+     * @return IPage<ReportTypeStatisticsItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    IPage<ReportTypeStatisticsItemRel> pageQueryReportTypeStatisticsItemRel(PageQueryReportTypeStatisticsItemRelDTO pageQueryReportTypeStatisticsItemRelDTO);
+}

+ 202 - 0
src/main/java/com/persagy/apm/report/config/rel/typestatisticsitem/service/impl/ReportTypeStatisticsItemRelServiceImpl.java

@@ -0,0 +1,202 @@
+package com.persagy.apm.report.config.rel.typestatisticsitem.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.base.CaseFormat;
+import com.persagy.apm.common.constant.enums.ValidEnum;
+import com.persagy.apm.common.context.AppContext;
+import com.persagy.apm.common.model.dto.Sort;
+import com.persagy.apm.report.config.rel.typestatisticsitem.dao.ReportTypeStatisticsItemRelMapper;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.ConvertReportTypeStatisticsItemRelTool;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.ReportTypeStatisticsItemRel;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.dto.AddReportTypeStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.dto.PageQueryReportTypeStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.dto.QueryReportTypeStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.model.dto.UpdateReportTypeStatisticsItemRelDTO;
+import com.persagy.apm.report.config.rel.typestatisticsitem.service.IReportTypeStatisticsItemRelService;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 报告类型和统计条目关联关系(ReportTypeStatisticsItemRel) service层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:20:20
+ */
+@Service
+public class ReportTypeStatisticsItemRelServiceImpl extends ServiceImpl<ReportTypeStatisticsItemRelMapper, ReportTypeStatisticsItemRel>
+        implements IReportTypeStatisticsItemRelService {
+
+    /**
+     * 创建报告类型和统计条目关联关系
+     *
+     * @return 报告类型和统计条目关联关系主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    @Override
+    public String createReportTypeStatisticsItemRel(AddReportTypeStatisticsItemRelDTO addReportTypeStatisticsItemRelDTO) {
+        ReportTypeStatisticsItemRel reportTypeStatisticsItemRel = ConvertReportTypeStatisticsItemRelTool.INSTANCE.convertAddDto2Entity(addReportTypeStatisticsItemRelDTO);
+        // 设置默认值
+        setDefaultValue(reportTypeStatisticsItemRel);
+        save(reportTypeStatisticsItemRel);
+        return reportTypeStatisticsItemRel.getId();
+    }
+
+    /**
+     * 如果某些字段没有赋值,使用默认的值
+     *
+     * @param reportTypeStatisticsItemRel 报告类型和统计条目关联关系实体
+     * @author lixing
+     * @version V1.0 2021/3/12 12:29 下午
+     */
+    private void setDefaultValue(ReportTypeStatisticsItemRel reportTypeStatisticsItemRel) {
+        reportTypeStatisticsItemRel.setCreator(AppContext.getContext().getAccountId());
+        
+
+    }
+
+    /**
+     * 报告类型和统计条目关联关系详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    @Override
+    public ReportTypeStatisticsItemRel queryReportTypeStatisticsItemRelDetail(String id) {
+        ReportTypeStatisticsItemRel reportTypeStatisticsItemRel = getById(id);
+        if (reportTypeStatisticsItemRel == null) {
+            throw new IllegalArgumentException("查看ReportTypeStatisticsItemRel详情时发生异常,找不到要查看的记录,id=" + id);
+        }
+        return reportTypeStatisticsItemRel;
+    }
+
+    /**
+     * 更新报告类型和统计条目关联关系
+     *
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    @Override
+    public void updateReportTypeStatisticsItemRel(UpdateReportTypeStatisticsItemRelDTO updateReportTypeStatisticsItemRelDTO) {
+        ReportTypeStatisticsItemRel reportTypeStatisticsItemRel = getById(updateReportTypeStatisticsItemRelDTO.getId());
+        reportTypeStatisticsItemRel = ConvertReportTypeStatisticsItemRelTool.INSTANCE.convertUpdateDto2Entity(reportTypeStatisticsItemRel, updateReportTypeStatisticsItemRelDTO);
+        reportTypeStatisticsItemRel.setModifier(AppContext.getContext().getAccountId());
+        updateById(reportTypeStatisticsItemRel);
+    }
+
+    /**
+     * 校验报告类型和统计条目关联关系是否可删除
+     *
+     * @param id 报告类型和统计条目关联关系主键
+     * @return 报告类型和统计条目关联关系do类
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    public ReportTypeStatisticsItemRel checkDeletable(String id) {
+        if (id == null) {
+            throw new IllegalArgumentException("删除ReportTypeStatisticsItemRel时发生异常,主键为空");
+        }
+
+        ReportTypeStatisticsItemRel reportTypeStatisticsItemRel = getById(id);
+
+        if (reportTypeStatisticsItemRel == null) {
+            throw new IllegalArgumentException("删除ReportTypeStatisticsItemRel时发生异常,找不到要删除的数据,id:" + id);
+        }
+
+        return reportTypeStatisticsItemRel;
+    }
+
+    /**
+     * 删除报告类型和统计条目关联关系
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    @Override
+    public void deleteReportTypeStatisticsItemRel(String id) {
+        // 校验是否可删除
+        ReportTypeStatisticsItemRel reportTypeStatisticsItemRel = checkDeletable(id);
+
+        reportTypeStatisticsItemRel.setValid(ValidEnum.FALSE.getType());
+        updateById(reportTypeStatisticsItemRel);
+    }
+
+    /**
+     * 查询报告类型和统计条目关联关系
+     *
+     * @return List<ReportTypeStatisticsItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    @Override
+    public List<ReportTypeStatisticsItemRel> queryReportTypeStatisticsItemRelList(QueryReportTypeStatisticsItemRelDTO queryReportTypeStatisticsItemRelDTO) {
+        QueryWrapper<ReportTypeStatisticsItemRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportTypeStatisticsItemRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, ReportTypeStatisticsItemRel.PROP_CREATIONTIME);
+
+        if (queryReportTypeStatisticsItemRelDTO != null) {
+
+            
+            if (StringUtils.isNotEmpty(queryReportTypeStatisticsItemRelDTO.getReportTypeId())) {
+                queryWrapper.like(ReportTypeStatisticsItemRel.PROP_REPORT_TYPE_ID, queryReportTypeStatisticsItemRelDTO.getReportTypeId());
+            }
+
+            
+            if (StringUtils.isNotEmpty(queryReportTypeStatisticsItemRelDTO.getStatisticsItemId())) {
+                queryWrapper.like(ReportTypeStatisticsItemRel.PROP_STATISTICS_ITEM_ID, queryReportTypeStatisticsItemRelDTO.getStatisticsItemId());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
+
+    /**
+     * 分页查询报告类型和统计条目关联关系
+     *
+     * @return IPage<ReportTypeStatisticsItemRel>
+     * @author lixing
+     * @version V1.0 2021-05-20 19:20:20
+     */
+    @Override
+    public IPage<ReportTypeStatisticsItemRel> pageQueryReportTypeStatisticsItemRel(PageQueryReportTypeStatisticsItemRelDTO pageQueryReportTypeStatisticsItemRelDTO) {
+        QueryWrapper<ReportTypeStatisticsItemRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ReportTypeStatisticsItemRel.PROP_VALID, ValidEnum.TRUE.getType());
+        // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
+        IPage<ReportTypeStatisticsItemRel> pageParam = new Page<>(pageQueryReportTypeStatisticsItemRelDTO.getPage(), pageQueryReportTypeStatisticsItemRelDTO.getSize(), true);
+        // 排序信息
+        if (CollectionUtils.isEmpty(pageQueryReportTypeStatisticsItemRelDTO.getOrders())) {
+            // 默认按创建时间倒序排序
+            queryWrapper.orderBy(true, false, ReportTypeStatisticsItemRel.PROP_CREATIONTIME);
+        } else {
+            List<Sort> orders = pageQueryReportTypeStatisticsItemRelDTO.getOrders();
+            for (Sort sort : orders) {
+                // 将驼峰转换为下划线格式
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
+                queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
+            }
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportTypeStatisticsItemRelDTO.getReportTypeId())) {
+            queryWrapper.like(ReportTypeStatisticsItemRel.PROP_REPORT_TYPE_ID, pageQueryReportTypeStatisticsItemRelDTO.getReportTypeId());
+        }
+
+        
+        if (StringUtils.isNotEmpty(pageQueryReportTypeStatisticsItemRelDTO.getStatisticsItemId())) {
+            queryWrapper.like(ReportTypeStatisticsItemRel.PROP_STATISTICS_ITEM_ID, pageQueryReportTypeStatisticsItemRelDTO.getStatisticsItemId());
+        }
+
+        return getBaseMapper().selectPage(pageParam, queryWrapper);
+    }
+}

+ 101 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/controller/StatisticItemsController.java

@@ -0,0 +1,101 @@
+package com.persagy.apm.report.config.statisticsitems.controller;
+
+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.report.config.statisticsitems.model.ConvertStatisticItemsTool;
+import com.persagy.apm.report.config.statisticsitems.model.StatisticItems;
+import com.persagy.apm.report.config.statisticsitems.model.dto.*;
+import com.persagy.apm.report.config.statisticsitems.model.vo.ResponseStatisticItemsItemVO;
+import com.persagy.apm.report.config.statisticsitems.model.vo.ResponseStatisticItemsListItemVO;
+import com.persagy.apm.report.config.statisticsitems.service.IStatisticItemsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 统计条目控制层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:21:08
+ */
+@ApiIgnore
+@Api(tags = "统计条目", hidden = true)
+@Validated
+@RestController
+@RequestMapping("statisticItemss")
+public class StatisticItemsController {
+    @Autowired
+    private IStatisticItemsService statisticItemsService;
+
+    @ApiOperation(value = "创建统计条目")
+    @PostMapping("/create")
+    public CommonResult<ApmResponseUpsertVO> createStatisticItems(
+            @Valid @RequestBody AddStatisticItemsDTO addStatisticItemsDTO) {
+        String id = statisticItemsService.createStatisticItems(addStatisticItemsDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO(id));
+    }
+
+    @ApiOperation(value = "统计条目详情")
+    @PostMapping("/get")
+    public CommonResult<ResponseStatisticItemsItemVO> queryStatisticItemsDetail(
+            @Valid @RequestBody QueryStatisticItemsDetailDTO queryStatisticItemsDetailDTO) {
+        StatisticItems statisticItems = statisticItemsService.queryStatisticItemsDetail(queryStatisticItemsDetailDTO.getId());
+        ResponseStatisticItemsItemVO responseStatisticItemsItemVO = ConvertStatisticItemsTool.INSTANCE.convert2ResponseItemDTO(statisticItems);
+        return ResultHelper.single(responseStatisticItemsItemVO);
+    }
+
+
+    @ApiOperation(value = "更新统计条目")
+    @PostMapping("/update")
+    public CommonResult<ApmResponseUpsertVO> updateStatisticItems(
+            @Valid @RequestBody UpdateStatisticItemsDTO updateStatisticItemsDTO) {
+        statisticItemsService.updateStatisticItems(updateStatisticItemsDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO(updateStatisticItemsDTO.getId()));
+    }
+
+
+    @ApiOperation(value = "删除统计条目")
+    @PostMapping("/delete")
+    public CommonResult deleteStatisticItems(
+            @RequestBody @Valid DeleteStatisticItemsDTO deleteStatisticItemsDTO) {
+        statisticItemsService.deleteStatisticItems(deleteStatisticItemsDTO.getId());
+        return ResultHelper.success();
+    }
+
+
+    @ApiOperation(value = "统计条目列表")
+    @PostMapping("/query")
+    public CommonResult<PageList<ResponseStatisticItemsListItemVO>> queryStatisticItems(
+            @Valid @RequestBody QueryStatisticItemsDTO queryStatisticItemsDTO) {
+        List<StatisticItems> statisticItemsList = statisticItemsService.queryStatisticItemsList(queryStatisticItemsDTO);
+        List<ResponseStatisticItemsListItemVO> resultList = ConvertStatisticItemsTool.INSTANCE.convert2List(statisticItemsList);
+        return ResultHelper.multi(resultList);
+    }
+
+    //@ApiOperation(value = "统计条目列表, 分页查询")
+    //@PostMapping("/query")
+    //public CommonResult<PageList<ResponseStatisticItemsListItemVO>> queryStatisticItems(
+    //        @Valid @RequestBody PageQueryStatisticItemsDTO pageQueryStatisticItemsDTO) {
+    //    IPage<StatisticItems> pagedList = statisticItemsService.pageQueryStatisticItems(pageQueryStatisticItemsDTO);
+    //    IPage<ResponseStatisticItemsListItemVO> pagedResultList = pagedList.convert(item -> {
+    //        try {
+    //           return ConvertStatisticItemsTool.INSTANCE.convert2ResponseListItemDTO(item);
+    //        } catch (Exception e) {
+    //            throw new IllegalArgumentException("分页查询,StatisticItems实体类转换为列表对象发生异常", e);
+    //        }
+    //    });
+    //    return ResultHelper.multi(pagedResultList);
+    //}
+}
+

+ 16 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/dao/StatisticItemsMapper.java

@@ -0,0 +1,16 @@
+package com.persagy.apm.report.config.statisticsitems.dao;
+
+import com.persagy.apm.report.config.statisticsitems.model.StatisticItems;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 统计条目(StatisticItems)dao层
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:21:09
+ */
+@Mapper
+public interface StatisticItemsMapper extends BaseMapper<StatisticItems> {
+
+}

+ 78 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/model/ConvertStatisticItemsTool.java

@@ -0,0 +1,78 @@
+package com.persagy.apm.report.config.statisticsitems.model;
+
+import com.persagy.apm.report.config.statisticsitems.model.dto.AddStatisticItemsDTO;
+import com.persagy.apm.report.config.statisticsitems.model.dto.UpdateStatisticItemsDTO;
+import com.persagy.apm.report.config.statisticsitems.model.vo.ResponseStatisticItemsItemVO;
+import com.persagy.apm.report.config.statisticsitems.model.vo.ResponseStatisticItemsListItemVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.NullValueCheckStrategy;
+import org.mapstruct.NullValueMappingStrategy;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 统计条目(StatisticItems) dto、vo、do转换工具类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:21:12 2021-05-20 19:21:12
+ */
+@Mapper(nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
+        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+public interface ConvertStatisticItemsTool {
+
+    ConvertStatisticItemsTool INSTANCE = Mappers.getMapper(ConvertStatisticItemsTool.class);
+
+    /**
+     * do转换为ResponseItemVO
+     *
+     * @param statisticItems do对象
+     * @return ResponseItemVO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:21:12
+     */
+    ResponseStatisticItemsItemVO convert2ResponseItemDTO(StatisticItems statisticItems);
+
+    /**
+     * do转换为ResponseListItemVO
+     *
+     * @param statisticItems do对象
+     * @return ResponseListItemVO
+     * @author lixing
+     * @version V1.0 2021-05-20 19:21:12
+     */
+    ResponseStatisticItemsListItemVO convert2ResponseListItemDTO(StatisticItems statisticItems);
+
+    /**
+     * do列表转换为ResponseListItemVO列表
+     *
+     * @param statisticItemsList do列表
+     * @return ResponseListItemVO列表
+     * @author lixing
+     * @version V1.0 2021-05-20 19:21:12
+     */
+    List<ResponseStatisticItemsListItemVO> convert2List(List<StatisticItems> statisticItemsList);
+
+    /**
+     * addDTO转换为do
+     *
+     * @param addStatisticItemsDTO addDTO
+     * @return 要创建的do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:21:12
+     */
+    StatisticItems convertAddDto2Entity(AddStatisticItemsDTO addStatisticItemsDTO);
+
+    /**
+     * updateDTO转换为实体
+     *
+     * @param statisticItems          更新前的do对象
+     * @param updateStatisticItemsDTO updateDTO
+     * @return 更新后的do对象
+     * @author lixing
+     * @version V1.0 2021-05-20 19:21:12
+     */
+    StatisticItems convertUpdateDto2Entity(@MappingTarget StatisticItems statisticItems, UpdateStatisticItemsDTO updateStatisticItemsDTO);
+}
+

+ 47 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/model/StatisticItems.java

@@ -0,0 +1,47 @@
+package com.persagy.apm.report.config.statisticsitems.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;
+
+/**
+ * 统计条目(StatisticItems)实体类
+ *
+ * @author lixing
+ * @version V1.0 2021-05-20 19:21:10
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(description = "统计条目")
+public class StatisticItems extends AuditableEntity<StatisticItems> implements Serializable {
+    private static final long serialVersionUID = -97538698360555468L;
+
+    @ApiModelProperty("条目编码")
+    private String itemCode;
+
+    @ApiModelProperty("条目名称")
+    private String itemName;
+
+    @ApiModelProperty("条目来源")
+    private String itemSource;
+
+    @ApiModelProperty("合格的标准")
+    private String standardValue;
+
+    @ApiModelProperty("合格的判断公式")
+    private String qualifyFormula;
+
+    @ApiModelProperty("合格的判断公式")
+    private String standardFlag;
+
+
+    public static String PROP_ITEM_CODE = "item_code";
+    public static String PROP_ITEM_SOURCE = "item_source";
+    public static String PROP_STANDARD_VALUE = "standard_value";
+    public static String PROP_QUALIFY_FORMULA = "qualify_formula";
+
+}

+ 35 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/AddStatisticItemsDTO.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.report.config.statisticsitems.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-20 19:21:10
+ */
+@Data
+@ApiModel(value = "创建统计条目入参")
+public class AddStatisticItemsDTO {
+    @ApiModelProperty(value = "条目编码", required = true)
+    @NotNull(message = "条目编码不能为空") 
+    private String itemCode;
+
+    @ApiModelProperty(value = "条目来源", required = true)
+    @NotNull(message = "条目来源不能为空") 
+    private String itemSource;
+
+    @ApiModelProperty(value = "合格的标准", required = true)
+    @NotNull(message = "合格的标准不能为空") 
+    private String standardValue;
+
+    @ApiModelProperty(value = "合格的判断公式", required = true)
+    @NotNull(message = "合格的判断公式不能为空") 
+    private String qualifyFormula;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/DeleteStatisticItemsDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.statisticsitems.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-20 19:21:11
+ */
+@Data
+@ApiModel(value = "删除统计条目入参")
+public class DeleteStatisticItemsDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 35 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/PageQueryStatisticItemsDTO.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.report.config.statisticsitems.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-20 19:21:12
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "分页查询统计条目入参")
+public class PageQueryStatisticItemsDTO extends PageDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "条目编码", required = true)
+    private String itemCode;
+
+    @ApiModelProperty(value = "条目来源", required = true)
+    private String itemSource;
+
+    @ApiModelProperty(value = "合格的标准", required = true)
+    private String standardValue;
+
+    @ApiModelProperty(value = "合格的判断公式", required = true)
+    private String qualifyFormula;
+
+}

+ 32 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/QueryStatisticItemsDTO.java

@@ -0,0 +1,32 @@
+package com.persagy.apm.report.config.statisticsitems.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-05-20 19:21:11
+ */
+@Data
+@ApiModel(value = "查询统计条目入参")
+public class QueryStatisticItemsDTO {
+    @ApiModelProperty(value = "统计条目id列表")
+    private List<String> statisticItemIdList;
+    
+    @ApiModelProperty(value = "条目编码")
+    private String itemCode;
+
+    @ApiModelProperty(value = "条目来源")
+    private String itemSource;
+
+    @ApiModelProperty(value = "合格的标准")
+    private String standardValue;
+
+    @ApiModelProperty(value = "合格的判断公式")
+    private String qualifyFormula;
+
+}

+ 20 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/QueryStatisticItemsDetailDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.report.config.statisticsitems.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-20 19:21:10
+ */
+@Data
+@ApiModel(value = "获取统计条目详情入参")
+public class QueryStatisticItemsDetailDTO {
+    @NotNull(message = "主键不能为空")
+    @ApiModelProperty(value = "主键", required = true)
+    private String id;
+
+}

+ 39 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/model/dto/UpdateStatisticItemsDTO.java

@@ -0,0 +1,39 @@
+package com.persagy.apm.report.config.statisticsitems.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-20 19:21:11
+ */
+@Data
+@ApiModel(value = "更新统计条目入参")
+public class UpdateStatisticItemsDTO {
+    @ApiModelProperty(value = "主键", required = true)
+    @NotNull(message = "主键不能为空") 
+    private String id;
+
+    @ApiModelProperty(value = "条目编码", required = true)
+    @NotNull(message = "条目编码不能为空") 
+    private String itemCode;
+
+    @ApiModelProperty(value = "条目来源", required = true)
+    @NotNull(message = "条目来源不能为空") 
+    private String itemSource;
+
+    @ApiModelProperty(value = "合格的标准", required = true)
+    @NotNull(message = "合格的标准不能为空") 
+    private String standardValue;
+
+    @ApiModelProperty(value = "合格的判断公式", required = true)
+    @NotNull(message = "合格的判断公式不能为空") 
+    private String qualifyFormula;
+
+}

+ 46 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/model/vo/ResponseStatisticItemsItemVO.java

@@ -0,0 +1,46 @@
+package com.persagy.apm.report.config.statisticsitems.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-20 19:21:12
+ */
+@Data
+@ApiModel(value = "统计条目返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseStatisticItemsItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("条目编码")
+    private String itemCode;
+
+    @ApiModelProperty("条目来源")
+    private String itemSource;
+
+    @ApiModelProperty("合格的标准")
+    private String standardValue;
+
+    @ApiModelProperty("合格的判断公式")
+    private String qualifyFormula;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 46 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/model/vo/ResponseStatisticItemsListItemVO.java

@@ -0,0 +1,46 @@
+package com.persagy.apm.report.config.statisticsitems.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-20 19:21:12
+ */
+@Data
+@ApiModel(value = "统计条目列表返回结果参数")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseStatisticItemsListItemVO {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("条目编码")
+    private String itemCode;
+
+    @ApiModelProperty("条目来源")
+    private String itemSource;
+
+    @ApiModelProperty("合格的标准")
+    private String standardValue;
+
+    @ApiModelProperty("合格的判断公式")
+    private String qualifyFormula;
+
+    @ApiModelProperty("创建人")
+    private String creator;
+
+    @ApiModelProperty("创建时间")
+    private Date creationTime;
+
+    @ApiModelProperty("最后修改人")
+    private String modifier;
+
+    @ApiModelProperty("最后修改时间")
+    private Date modifiedTime;
+
+}

+ 0 - 0
src/main/java/com/persagy/apm/report/config/statisticsitems/service/IStatisticItemsService.java


Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott