소스 검색

分析管理、异常描述管理

chenhongyan1989 1 년 전
부모
커밋
20a47ef7cd
81개의 변경된 파일3868개의 추가작업 그리고 527개의 파일을 삭제
  1. 67 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisCommentDescriptionPo.java
  2. 64 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisCommentTypeRelationPo.java
  3. 59 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisDiagramRelationPo.java
  4. 54 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisGeneralFilePo.java
  5. 71 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisResultPo.java
  6. 48 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisTypePo.java
  7. 70 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/windexceptioncount/WindExceptionCountPo.java
  8. 7 0
      energy-manage-common/src/main/java/com/energy/manage/common/reponse/ConstVar.java
  9. 43 495
      energy-manage-common/src/main/java/com/energy/manage/common/util/HttpUtils.java
  10. 7 7
      energy-manage-service/pom.xml
  11. 16 16
      energy-manage-service/src/main/java/com/energy/manage/service/config/xxl/XxlJobConfig.java
  12. 30 0
      energy-manage-service/src/main/java/com/energy/manage/service/constant/analysis/AnalysisConstants.java
  13. 82 0
      energy-manage-service/src/main/java/com/energy/manage/service/controller/analysis/AnalysisController.java
  14. 66 0
      energy-manage-service/src/main/java/com/energy/manage/service/controller/analysiscomment/AnalysisCommentController.java
  15. 68 0
      energy-manage-service/src/main/java/com/energy/manage/service/controller/analysiser/AnalysisErrController.java
  16. 8 3
      energy-manage-service/src/main/java/com/energy/manage/service/controller/windenginegroup/WindEngineGroupController.java
  17. 28 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisAlgorithmDto.java
  18. 41 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisCommentDescriptionDto.java
  19. 57 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisCommentTypeRelationDto.java
  20. 50 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisDiagramRelationDto.java
  21. 89 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisDto.java
  22. 45 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisGeneralFileDto.java
  23. 57 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisResultDto.java
  24. 33 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisTypeDto.java
  25. 23 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/CommentDto.java
  26. 29 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/ConfigAnalysisDto.java
  27. 35 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/CustomFilterDto.java
  28. 24 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/CustomerFilterItemDto.java
  29. 43 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/DataContractDto.java
  30. 24 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/DataContractTypeDto.java
  31. 51 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/DataFilterDto.java
  32. 25 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/DataSourceDto.java
  33. 47 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/GraphSetsDto.java
  34. 27 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/GraphSetsItemDto.java
  35. 58 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windexceptioncount/WindExceptionCountDto.java
  36. 3 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windfieldbatch/WindFieldBatchDto.java
  37. 64 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisCommentDescriptionVo.java
  38. 52 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisCommentTypeRelationVo.java
  39. 47 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisDetailVo.java
  40. 55 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisDiagramRelationVo.java
  41. 45 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisGeneralFileVo.java
  42. 28 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisResultShowVo.java
  43. 67 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisResultVo.java
  44. 32 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisTypeVo.java
  45. 54 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/windexceptioncount/WindExceptionCountVo.java
  46. 50 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisCommentDescriptionMapper.java
  47. 51 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisCommentTypeRelationMapper.java
  48. 25 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisDiagramRelationMapper.java
  49. 25 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisGeneralFileMapper.java
  50. 35 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisResultMapper.java
  51. 31 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisTypeMapper.java
  52. 2 1
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/datatransfer/DataTransferMapper.java
  53. 1 1
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/datatransferhistory/DataTransferHistoryMapper.java
  54. 2 1
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/datatransfertype/DataTransferTypeMapper.java
  55. 15 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/windenginegroup/WindEngineGroupMapper.java
  56. 42 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/windexceptioncount/WindExceptionCountMapper.java
  57. 3 1
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/windfieldbatch/WindFieldBatchMapper.java
  58. 57 0
      energy-manage-service/src/main/java/com/energy/manage/service/property/analysis/AlgorithmProperties.java
  59. 55 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/AnalysisService.java
  60. 347 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/impl/AnalysisServiceImpl.java
  61. 48 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/analysiscomment/AnalysisCommentService.java
  62. 131 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/analysiscomment/impl/AnalysisCommentServiceImpl.java
  63. 48 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/analysiserr/AnalysisErrService.java
  64. 78 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/analysiserr/impl/AnalysisErrServiceImpl.java
  65. 9 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/windenginegroup/WindEngineGroupService.java
  66. 8 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/windenginegroup/impl/WindEngineGroupServiceImpl.java
  67. 34 0
      energy-manage-service/src/main/java/com/energy/manage/service/task/AutoAnalysisTask.java
  68. 107 0
      energy-manage-service/src/main/java/com/energy/manage/service/test/TestClass.java
  69. 203 0
      energy-manage-service/src/main/java/com/energy/manage/service/test/TestJson.java
  70. 15 0
      energy-manage-service/src/main/java/com/energy/manage/service/util/TreeUtil.java
  71. 10 1
      energy-manage-service/src/main/resources/bootstrap.properties
  72. 93 0
      energy-manage-service/src/main/resources/mybatis/analysis/AnalysisCommentDescriptionMapper.xml
  73. 84 0
      energy-manage-service/src/main/resources/mybatis/analysis/AnalysisCommentTypeRelationMapper.xml
  74. 31 0
      energy-manage-service/src/main/resources/mybatis/analysis/AnalysisDiagramRelationMapper.xml
  75. 26 0
      energy-manage-service/src/main/resources/mybatis/analysis/AnalysisGeneralFileMapper.xml
  76. 40 0
      energy-manage-service/src/main/resources/mybatis/analysis/AnalysisResultMapper.xml
  77. 31 0
      energy-manage-service/src/main/resources/mybatis/analysis/AnalysisTypeMapper.xml
  78. 1 0
      energy-manage-service/src/main/resources/mybatis/datatransferhistory/DataTransferHistoryMapper.xml
  79. 22 0
      energy-manage-service/src/main/resources/mybatis/windenginegroup/WindEngineGroupMapper.xml
  80. 114 0
      energy-manage-service/src/main/resources/mybatis/windexceptioncount/WindExceptionCountMapper.xml
  81. 1 1
      pom.xml

+ 67 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisCommentDescriptionPo.java

@@ -0,0 +1,67 @@
+package com.energy.manage.common.po.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析富文本描述
+ * @author chy
+ * @date 2024/5/23 12:56
+ * @desc
+ */
+@Table(name = "analysis_comment_description")
+@Data
+@Accessors(chain = true)
+public class AnalysisCommentDescriptionPo {
+
+    /**
+     * 主键
+     */
+    private Long id ;
+
+    /**
+     * 批次编号
+     */
+    private String batchCode ;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode ;
+
+    /**
+     * 评论类型名称
+     */
+    private String commentTypeCode ;
+
+    /**
+     * 富文本内容
+     */
+    private String comment ;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime ;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy ;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime ;
+
+    /**
+     * 更新人
+     */
+    private Integer updateBy ;
+}

+ 64 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisCommentTypeRelationPo.java

@@ -0,0 +1,64 @@
+package com.energy.manage.common.po.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析评论类型关联
+ * @author chy
+ * @date 2024/5/23 12:53
+ * @desc
+ */
+@Table(name = "analysis_comment_type_relation")
+@Data
+public class AnalysisCommentTypeRelationPo {
+
+    /**
+     * 主键
+     */
+     private Long id;
+
+    /**
+     * 批次编号
+     */
+    private String batchCode;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode;
+
+    /**
+     * 评论类型标号
+     */
+    private String commentTypeCode;
+
+    /**
+     * 评论类型名称
+     */
+    private String commentTypeName;
+
+    /**
+     * 是否自定义 0:否 1:是
+     */
+    private Integer isDefined;
+
+    /**
+     * 是否删除 0:否 1:是
+     */
+    private Integer isDelete;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+}

+ 59 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisDiagramRelationPo.java

@@ -0,0 +1,59 @@
+package com.energy.manage.common.po.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析结果图文关系表
+ * @author chy
+ * @date 2024/5/23 12:52
+ * @desc
+ */
+@Table(name = "analysis_diagram_relation")
+@Data
+public class AnalysisDiagramRelationPo {
+
+    /**
+     * 主键
+     */
+    private Long id ;
+
+    /**
+     * 批次编号
+     */
+    private String batchCode ;
+
+    /**
+     * 风机编号
+     */
+    private String fieldEngineCode ;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode ;
+
+    /**
+     * 分析结果地址minio
+     */
+    private String fileAddr ;
+
+    /**
+     * 是否自动分析 0: 不自动分析 1: 自动分析
+     */
+    private Integer autoAnalysis ;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy ;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime ;
+}

+ 54 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisGeneralFilePo.java

@@ -0,0 +1,54 @@
+package com.energy.manage.common.po.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析结果总图表
+ * @author chy
+ * @date 2024/5/23 12:55
+ * @desc
+ */
+@Table(name = "analysis_general_file")
+@Data
+public class AnalysisGeneralFilePo {
+
+    /**
+     * 主键
+     */
+    private Long id ;
+
+    /**
+     * 批次号
+     */
+    private Integer batchCode ;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode ;
+
+    /**
+     * 总文件地址minIO
+     */
+    private String fileAddr ;
+
+    /**
+     * 是否自动分析 0:手动 1自动
+     */
+    private Integer autoAnalysis ;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy ;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime ;
+}

+ 71 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisResultPo.java

@@ -0,0 +1,71 @@
+package com.energy.manage.common.po.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析结果
+ * @author chy
+ * @date 2024/5/23 12:50
+ * @desc
+ */
+@Table(name = "analysis_result")
+@Data
+public class AnalysisResultPo {
+
+    /**
+     * 主键
+     */
+    private Long id ;
+
+    /**
+     * 批次编号
+     */
+    private String batchCode ;
+
+    /**
+     * 分析状态
+     */
+    private Integer analysisState ;
+
+    /**
+     * 异常状态
+     */
+    private Integer errState ;
+
+    /**
+     * 异常编号
+     */
+    private String errCode ;
+
+    /**
+     * 异常信息
+     */
+    private String errInfo ;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy ;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime ;
+
+    /**
+     *  更新人
+     */
+    private Integer updateBy ;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime ;
+
+}

+ 48 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisTypePo.java

@@ -0,0 +1,48 @@
+package com.energy.manage.common.po.analysis;
+
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析类型表
+ * @author chy
+ * @date 2024/5/23 12:51
+ * @desc
+ */
+@Table(name = "analysis_type")
+@Data
+public class AnalysisTypePo {
+
+    /**
+     * 主键
+     */
+    private Long id ;
+
+    /**
+     * 分析类型父级编号
+     */
+    private String parentId ;
+
+    /**
+     * 分析类型编号
+     */
+    private String typeCode ;
+
+    /**
+     * 分析类型名称
+     */
+    private String typeName ;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy ;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime ;
+
+}

+ 70 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/windexceptioncount/WindExceptionCountPo.java

@@ -0,0 +1,70 @@
+package com.energy.manage.common.po.windexceptioncount;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析异常数据
+ * @author chy
+ * @date 2024/5/23 17:33
+ * @desc
+ */
+@Table(name = "wind_exception_count")
+@Data
+public class WindExceptionCountPo {
+
+    /**
+     * 主键
+     */
+    private Long id ;
+
+    /**
+     * 批次编号
+     */
+    private String batchCode ;
+
+    /**
+     * 风机编号
+     */
+    private String enginCode ;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode ;
+
+    /**
+     * 异常数目
+     */
+    private Integer errCount ;
+
+    /**
+     * 处理异常数
+     */
+    private Integer handleErrCount ;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy ;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime ;
+
+    /**
+     * 更新人
+     */
+    private Integer updateBy ;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime ;
+}

+ 7 - 0
energy-manage-common/src/main/java/com/energy/manage/common/reponse/ConstVar.java

@@ -80,6 +80,13 @@ public enum ConstVar {
   DATA_TRANSFER_TYPE_EMPTY(610001, "数据转换类型初始化数据不能为空"),
   DATA_TRANSFERING(610002, "系统中存在正在转换的数据,请稍后操作数据转换"),
 
+  SAME_WIND_ENGINE_ERR_INFO(710001, "同一批次该机组存在相同分析类型的异常描述信息,不能重复添加"),
+
+  NO_DIFINED_TYPE(810001, "非自定义评论类型,不能删除"),
+
+  DUPLICATE_TYPE_NAME(810002, "该评论类型已存在,不能添加"),
+
+  ANALYSISING(910001, "当前有批次正在进行分析,请稍后重试"),
 
   //测评小程序
   PAPER_USER_UNBELONG_TO(3000,"哎呀,该测评已经被其他用户绑定过了,您无法进行查看~"),

+ 43 - 495
energy-manage-common/src/main/java/com/energy/manage/common/util/HttpUtils.java

@@ -1,495 +1,43 @@
-//package com.energy.manage.common.util;
-//
-//import com.alibaba.fastjson.JSONObject;
-//import org.apache.http.HttpEntity;
-//import org.apache.http.HttpResponse;
-//import org.apache.http.HttpStatus;
-//import org.apache.http.NameValuePair;
-//import org.apache.http.client.entity.UrlEncodedFormEntity;
-//import org.apache.http.client.methods.*;
-//import org.apache.http.client.utils.URIBuilder;
-//import org.apache.http.entity.StringEntity;
-//import org.apache.http.impl.client.CloseableHttpClient;
-//import org.apache.http.impl.client.DefaultHttpClient;
-//import org.apache.http.impl.client.HttpClients;
-//import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-//import org.apache.http.message.BasicNameValuePair;
-//import org.apache.http.util.EntityUtils;
-//import org.slf4j.Logger;
-//import org.slf4j.LoggerFactory;
-//import org.springframework.util.CollectionUtils;
-//import org.springframework.util.StringUtils;
-//
-//import javax.servlet.http.HttpServletRequest;
-//import java.io.*;
-//import java.net.URISyntaxException;
-//import java.net.URL;
-//import java.net.URLConnection;
-//import java.net.URLDecoder;
-//import java.util.ArrayList;
-//import java.util.List;
-//import java.util.Map;
-//
-///**
-// * @author LIKE
-// * @date 2017年1月18日 下午6:07:06
-// */
-//public class HttpUtils {
-//    private static Logger logger = LoggerFactory.getLogger(HttpUtils.class);
-//    private static PoolingHttpClientConnectionManager cm;
-//    private static String DEFAULT_ENCODING = "UTF-8";
-//    private final static int CONNECT_TIMEOUT = 5000;
-//
-//    private static void init() {
-//        if (cm == null) {
-//            cm = new PoolingHttpClientConnectionManager();
-//            // 整个链接池最大链接数
-//            cm.setMaxTotal(50);
-//            // 每个路由最大链接数,默认是2
-//            cm.setDefaultMaxPerRoute(5);
-//        }
-//    }
-//
-//    /**
-//     * GET 请求
-//     *
-//     * @param url
-//     * @return
-//     */
-//    public static String httpGetRequest(String url) {
-//        return httpGetRequest(url, null, null);
-//    }
-//
-//    /**
-//     * GET 带参 请求
-//     *
-//     * @param url
-//     * @param params
-//     * @return
-//     */
-//    public static String httpGetRequest(String url, Map<String, Object> params) {
-//        return httpGetRequest(url, null, params);
-//    }
-//
-//    /**
-//     * Post 请求
-//     *
-//     * @param url
-//     * @return
-//     */
-//    public static String httpPostRequest(String url) {
-//        return httpPostRequest(url, null, "");
-//    }
-//
-//    /**
-//     * POST 带参 请求
-//     *
-//     * @param url
-//     * @param params
-//     * @return
-//     * @throws UnsupportedEncodingException
-//     */
-//    public static String httpPostRequest(String url, Map<String, Object> params) {
-//        return httpPostRequest(url, null, params);
-//    }
-//
-//    /**
-//     * Get 带参 带header 请求
-//     *
-//     * @param url
-//     * @param headers
-//     * @param params
-//     * @return
-//     * @throws URISyntaxException
-//     */
-//    public static String httpGetRequest(String url, Map<String, Object> headers, Map<String, Object> params) {
-//        // 创建连接地址
-//        if (StringUtils.isEmpty(url)) {
-//            return null;
-//        }
-//        URIBuilder ub = new URIBuilder();
-//        ub.setPath(url);
-//        // 拼接参数
-//        if (!CollectionUtils.isEmpty(params)) {
-//            List<NameValuePair> pairs = covertParams2NVPS(params);
-//            ub.setParameters(pairs);
-//        }
-//        try {
-//            // 构建请求内容
-//            HttpGet httpGet = new HttpGet(ub.build());
-//            // 自定义header内容
-//            if (!CollectionUtils.isEmpty(headers)) {
-//                for (Map.Entry<String, Object> param : headers.entrySet()) {
-//                    httpGet.addHeader(param.getKey(), String.valueOf(param.getValue()));
-//                }
-//            }
-//            return getResult(httpGet);
-//        } catch (URISyntaxException ue) {
-//            logger.error(ue.getMessage(), ue);
-//        } catch (IOException ie) {
-//            logger.error(ie.getMessage(), ie);
-//        } catch (Exception ex) {
-//            logger.error(ex.getMessage(), ex);
-//        }
-//        return null;
-//    }
-//
-//
-//    /**
-//     * POST 带参 带Header 请求
-//     *
-//     * @param url
-//     * @param headers
-//     * @param params
-//     * @return
-//     * @throws UnsupportedEncodingException
-//     */
-//    public static String httpPostRequest(String url, Map<String, Object> headers, Map<String, Object> params) {
-//        if (StringUtils.isEmpty(url)) {
-//            return null;
-//        }
-//        HttpPost httpPost = new HttpPost(url);
-//        if (!CollectionUtils.isEmpty(headers)) {
-//            for (Map.Entry<String, Object> param : headers.entrySet()) {
-//                httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
-//            }
-//        }
-//        try {
-//            if (!CollectionUtils.isEmpty(params)) {
-//                List<NameValuePair> pairs = covertParams2NVPS(params);
-//                httpPost.setEntity(new UrlEncodedFormEntity(pairs, "UTF-8"));
-//            }
-//            return getResult(httpPost);
-//        } catch (UnsupportedEncodingException uee) {
-//            logger.error(uee.getMessage(), uee);
-//        } catch (IOException ie) {
-//            logger.error(ie.getMessage(), ie);
-//        } catch (Exception ex) {
-//            logger.error(ex.getMessage(), ex);
-//        }
-//        return null;
-//    }
-//
-//    /**
-//     * POST 带参 带Header 请求
-//     *
-//     * @param url
-//     * @param headers
-//     * @param params
-//     * @return
-//     * @throws UnsupportedEncodingException
-//     */
-//    public static String httpPostRequest(String url, Map<String, Object> headers, String params) {
-//        if (StringUtils.isEmpty(url)) {
-//            return null;
-//        }
-//        HttpPost httpPost = new HttpPost(url);
-//        if (!CollectionUtils.isEmpty(headers)) {
-//            for (Map.Entry<String, Object> param : headers.entrySet()) {
-//                httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
-//            }
-//        }
-//        try {
-//            if (!StringUtils.isEmpty(params)) {
-//                StringEntity stringEntity = new StringEntity(params, "UTF-8");
-//                httpPost.setEntity(stringEntity);
-//            }
-//            return getResult(httpPost);
-//        } catch (UnsupportedEncodingException uee) {
-//            logger.error(uee.getMessage(), uee);
-//        } catch (IOException ie) {
-//            logger.error(ie.getMessage(), ie);
-//        } catch (Exception ex) {
-//            logger.error(ex.getMessage(), ex);
-//        }
-//        return null;
-//    }
-//
-//    /**
-//     * DELETE 带参 带Header 请求
-//     *
-//     * @param url
-//     * @param headers
-//     * @return
-//     * @throws UnsupportedEncodingException
-//     */
-//    public static String httpDeleteRequest(String url, Map<String, Object> headers) {
-//        if (StringUtils.isEmpty(url)) {
-//            return null;
-//        }
-//        HttpDelete httpDelete = new HttpDelete(url);
-//        if (!CollectionUtils.isEmpty(headers)) {
-//            for (String key : headers.keySet()) {
-//                httpDelete.addHeader(key, String.valueOf(headers.get(key)));
-//            }
-//        }
-//        try {
-//            return getResult(httpDelete);
-//        } catch (UnsupportedEncodingException uee) {
-//            logger.error(uee.getMessage(), uee);
-//        } catch (IOException ie) {
-//            logger.error(ie.getMessage(), ie);
-//        } catch (Exception ex) {
-//            logger.error(ex.getMessage(), ex);
-//        }
-//        return null;
-//    }
-//
-//    /**
-//     * 内部方法,构建参数链
-//     *
-//     * @param params
-//     * @return
-//     */
-//    private static List<NameValuePair> covertParams2NVPS(Map<String, Object> params) {
-//        List<NameValuePair> pairs = new ArrayList<NameValuePair>();
-//        for (Map.Entry<String, Object> param : params.entrySet()) {
-//            pairs.add(new BasicNameValuePair(param.getKey(), String.valueOf(param.getValue())));
-//        }
-//        return pairs;
-//    }
-//
-//    private static CloseableHttpClient getHttpClient() {
-//        init();
-//        return HttpClients.custom().setConnectionManager(cm).build();
-//    }
-//
-//    /**
-//     * 内部方法,请求执行体
-//     *
-//     * @param request
-//     * @return
-//     * @throws IOException
-//     */
-//    private static String getResult(HttpRequestBase request) throws IOException {
-//        CloseableHttpClient httpClient = getHttpClient();
-//        CloseableHttpResponse resp = httpClient.execute(request);
-//        //响应状态
-//        if (resp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
-//            long contentLength = resp.getEntity().getContentLength();
-//            if (contentLength == 0) {
-//                return "";
-//            }
-//            // 响应实体
-//            HttpEntity entity = resp.getEntity();
-//            String result = EntityUtils.toString(entity);
-//            resp.close();
-//            logger.info("httpClient 结果=>:" + result);
-//            return result;
-//        } else {
-//            logger.error(HttpUtils.class.getName() + " getResult error:" + resp.getStatusLine().getStatusCode());
-//        }
-//        // 响应实体
-//        HttpEntity entity = resp.getEntity();
-//        if (entity != null) {
-//            // long len = entity.getContentLength();// -1 表示长度未知
-//            String result = EntityUtils.toString(entity);
-//            resp.close();
-//            logger.info("httpClient 结果=>:" + result);
-//            return result;
-//        }
-//        return null;
-//    }
-//
-//    /**
-//     * httpPost
-//     * @param url
-//     * @param jsonParam
-//     * @param noNeedResponse
-//     * @return
-//     */
-//    public static JSONObject httpPost(String url, JSONObject jsonParam, boolean noNeedResponse) {
-//        CloseableHttpClient httpClient = HttpClients.createDefault();
-//        JSONObject jsonResult = null;
-//        HttpPost method = new HttpPost(url);
-//        try {
-//            if (jsonParam != null) {
-//                // 解决中文乱码问题
-//                StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
-//                entity.setContentEncoding("UTF-8");
-//                entity.setContentType("application/json");
-//                method.setEntity(entity);
-//            }
-//            HttpResponse result = httpClient.execute(method);
-//            url = URLDecoder.decode(url, "UTF-8");
-//            /** 请求发送成功,并得到响应 **/
-//            if (result.getStatusLine().getStatusCode() == 200) {
-//                String str = "";
-//                try {
-//                    /** 读取服务器返回过来的json字符串数据 **/
-//                    str = EntityUtils.toString(result.getEntity());
-//                    if (noNeedResponse) {
-//                        return null;
-//                    }
-//                    /** 把json字符串转换成json对象 **/
-//                    jsonResult = JSONObject.parseObject(str);
-//                } catch (Exception e) {
-//                    logger.error("post请求提交失败:" + url, e);
-//                }
-//            }
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//        return jsonResult;
-//    }
-//
-//
-//    /**
-//     * 发送get请求
-//     *
-//     * @param
-//     * @return
-//     */
-//    public static String httpGet(String url) {
-//        // get请求返回结果
-//        JSONObject jsonResult = null;
-//        String str = null;
-//        try {
-//            DefaultHttpClient client = new DefaultHttpClient();
-//            // 发送get请求
-//            HttpGet request = new HttpGet(url);
-//            HttpResponse response = client.execute(request);
-//            // 请求发送成功,并得到响应
-//            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
-//                // 读取服务器返回过来的json字符串数据
-//                str = EntityUtils.toString(response.getEntity());
-//                url = URLDecoder.decode(url, "UTF-8");
-//            } else {
-//                logger.error("get请求提交失败:" + url);
-//            }
-//        } catch (IOException e) {
-//            logger.error("get请求提交失败:" + url, e);
-//        }
-//        return str;
-//    }
-//
-//    /**
-//     * 内部方法,获取客户端ip
-//     */
-//    public static String getIpAddress(HttpServletRequest request) {
-//        String ip = request.getHeader("X-Real-IP");
-//        if (!(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip))) {
-//            return ip;
-//        }
-//        ip = request.getHeader("x-real-ip");
-//        if (!(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip))) {
-//            return ip;
-//        }
-//        ip = request.getHeader("X-Forwarded-For");
-//        if (!(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip))) {
-//            return ip;
-//        }
-//        ip = request.getHeader("x-forwarded-for");
-//        if (!(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip))) {
-//            return ip;
-//        }
-//        ip = request.getHeader("Proxy-Client-IP");
-//        if (!(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip))) {
-//            return ip;
-//        }
-//        ip = request.getHeader("WL-Proxy-Client-IP");
-//        if (!(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip))) {
-//            return ip;
-//        }
-//        ip = request.getHeader("HTTP_CLIENT_IP");
-//        if (!(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip))) {
-//            return ip;
-//        }
-//        ip = request.getHeader("HTTP_X_FORWARDED_FOR");
-//        if (!(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip))) {
-//            return ip;
-//        }
-//        ip = request.getRemoteAddr();
-//        if (!(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip))) {
-//            return ip;
-//        }
-//        return ip;
-//    }
-//
-//    public static String postData(String urlStr, String data) {
-//        BufferedReader reader = null;
-//        try {
-//            URL url = new URL(urlStr);
-//            URLConnection conn = url.openConnection();
-//            conn.setDoOutput(true);
-//            conn.setConnectTimeout(CONNECT_TIMEOUT);
-//            conn.setReadTimeout(CONNECT_TIMEOUT);
-//            OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream(), DEFAULT_ENCODING);
-//            if (data == null)
-//                data = "";
-//            writer.write(data);
-//            writer.flush();
-//            writer.close();
-//
-//            reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), DEFAULT_ENCODING));
-//            StringBuilder sb = new StringBuilder();
-//            String line = null;
-//            while ((line = reader.readLine()) != null) {
-//                sb.append(line);
-//                sb.append("\r\n");
-//            }
-//            return sb.toString();
-//        } catch (IOException e) {
-//            //logger.error("Error connecting to " + urlStr + ": " + e.getMessage());
-//        } finally {
-//            try {
-//                if (reader != null)
-//                    reader.close();
-//            } catch (IOException e) {
-//            }
-//        }
-//        return null;
-//    }
-//
-//    public static boolean isMobileDevice(HttpServletRequest request) {
-//        /**
-//         * android : 所有android设备
-//         * mac os : iphone ipad
-//         * windows phone:Nokia等windows系统的手机
-//         */
-//        try {
-//            String requestHeader = request.getHeader("user-agent");
-//            if (requestHeader == null) {
-//                return false;
-//
-//            }
-//            String[] deviceArray = new String[]{"android", "mac os", "windows phone"};
-//            requestHeader = requestHeader.toLowerCase();
-//            for (int i = 0; i < deviceArray.length; i++) {
-//                if (requestHeader.indexOf(deviceArray[i]) > 0) {
-//                    return true;
-//                }
-//            }
-//        } catch (Exception ex) {
-//            ex.printStackTrace();
-//        }
-//        return false;
-//    }
-//
-//
-//    public static String httpPutRequest(String url, Map<String, Object> headers, String params) {
-//        if (StringUtils.isEmpty(url)) {
-//            return null;
-//        }
-//        HttpPut httpPut = new HttpPut(url);
-//        if (!CollectionUtils.isEmpty(headers)) {
-//            for (Map.Entry<String, Object> param : headers.entrySet()) {
-//                httpPut.addHeader(param.getKey(), String.valueOf(param.getValue()));
-//            }
-//        }
-//        try {
-//            if (!StringUtils.isEmpty(params)) {
-//                StringEntity stringEntity = new StringEntity(params, "UTF-8");
-//                httpPut.setEntity(stringEntity);
-//            }
-//            return getResult(httpPut);
-//        } catch (UnsupportedEncodingException uee) {
-//            logger.error(uee.getMessage(), uee);
-//        } catch (IOException ie) {
-//            logger.error(ie.getMessage(), ie);
-//        } catch (Exception ex) {
-//            logger.error(ex.getMessage(), ex);
-//        }
-//        return null;
-//    }
-//}
+package com.energy.manage.common.util;
+
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.Map;
+
+/**
+ * @author LIKE
+ * @date 2017年1月18日 下午6:07:06
+ */
+public class HttpUtils {
+
+    private final static String GET_UNION_STR = "?";
+
+    /**
+     * http请求时长
+     */
+    private final static int TIME_OUT = 3000;
+
+
+    /**
+     * get 方法
+     * @param url
+     * @param
+     * @return
+     */
+    public static JSONObject doGet(String url, Map<String,Object> param){
+        //做字符串拼接
+        url = url + GET_UNION_STR + HttpUtil.toParams(param);
+        return JSONObject.parseObject(HttpUtil.get(url,TIME_OUT));
+    }
+
+    /**
+     * post 方法
+     * @param url
+     * @param params
+     * @return
+     */
+    public static JSONObject doPost(String url, Map<String,Object> params){
+        return JSONObject.parseObject(HttpUtil.post(url,params,TIME_OUT));
+    }
+}

+ 7 - 7
energy-manage-service/pom.xml

@@ -22,12 +22,12 @@
             <version>${energy-manage-common.version}</version>
         </dependency>
 
-        <!-- xxl-job 分布式任务 (暂时不用) -->
-<!--        <dependency>-->
-<!--            <groupId>com.xuxueli</groupId>-->
-<!--            <artifactId>xxl-job-core</artifactId>-->
-<!--            <version>2.3.0</version>-->
-<!--        </dependency>-->
+        <!-- xxl-job 分布式任务 -->
+        <dependency>
+            <groupId>com.xuxueli</groupId>
+            <artifactId>xxl-job-core</artifactId>
+            <version>2.3.0</version>
+        </dependency>
 
         <!-- kafka -->
         <dependency>
@@ -134,4 +134,4 @@
     </profiles>
 
 
-</project>
+</project>

+ 16 - 16
energy-manage-service/src/main/java/com/energy/manage/service/config/xxl/XxlJobConfig.java

@@ -1,18 +1,18 @@
-//package com.energy.manage.service.config.xxl;
-//
-//import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
-//import lombok.extern.slf4j.Slf4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//
-///**
-// * @Description: xxlJob配置
-// */
-//@Configuration
-//@Slf4j
-//public class XxlJobConfig {
-//
+package com.energy.manage.service.config.xxl;
+
+import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description: xxlJob配置
+ */
+@Configuration
+@Slf4j
+public class XxlJobConfig {
+
 //    @Value("${xxl.job.admin.addresses}")
 //    private String adminAddresses;
 //
@@ -52,4 +52,4 @@
 //
 //        return xxlJobSpringExecutor;
 //    }
-//}
+}

+ 30 - 0
energy-manage-service/src/main/java/com/energy/manage/service/constant/analysis/AnalysisConstants.java

@@ -0,0 +1,30 @@
+package com.energy.manage.service.constant.analysis;
+
+/**
+ * @author chy
+ * @date 2024/5/31 09:46
+ * @desc
+ */
+public interface AnalysisConstants {
+
+    /**
+     * 分析类型父节点key属性名
+     */
+    String ANALYSIS_TYPE_PARRENT_KEY = "parentId";
+
+    /**
+     * 算法服务器数量
+     */
+     int SERVER_MERCHINE_COUNT = 3;
+
+    /**
+     * 自动分析标识
+     */
+    String AUTOMATIC = "automatic";
+
+    /**
+     * 手动分析标识
+     */
+    String MANUAL = "manual";
+
+}

+ 82 - 0
energy-manage-service/src/main/java/com/energy/manage/service/controller/analysis/AnalysisController.java

@@ -0,0 +1,82 @@
+package com.energy.manage.service.controller.analysis;
+
+import com.energy.manage.common.base.Page;
+import com.energy.manage.common.reponse.ResultResp;
+import com.energy.manage.common.util.JSONMapper;
+import com.energy.manage.service.config.annotations.UserLoginToken;
+import com.energy.manage.service.controller.base.BaseServiceController;
+import com.energy.manage.service.domain.dto.analysis.AnalysisAlgorithmDto;
+import com.energy.manage.service.domain.dto.analysis.AnalysisDto;
+import com.energy.manage.service.domain.dto.analysis.AnalysisResultDto;
+import com.energy.manage.service.domain.vo.analysis.AnalysisResultVo;
+import com.energy.manage.service.property.analysis.AlgorithmProperties;
+import com.energy.manage.service.service.analysis.AnalysisService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 分析
+ * @author chy
+ * @date 2024/5/23 12:57
+ * @desc
+ */
+@Api(value = "AnalysisController",tags = "分析")
+@Slf4j
+@RestController
+@RequestMapping("/analysis")
+public class AnalysisController extends BaseServiceController {
+
+    @Autowired
+    private AnalysisService analysisService;
+
+
+    @UserLoginToken
+    @ApiOperation(value = "分析结果列表")
+    @GetMapping("/analysisResultList")
+    public ResultResp<Page<AnalysisResultVo>> analysisResultList(AnalysisResultDto analysisResultDto)
+    {
+        analysisResultDto.setRoleId(getRoleId());
+        return pageResult(analysisService.analysisResultList(analysisResultDto),analysisResultDto);
+    }
+
+    @UserLoginToken
+    @ApiOperation(value = "手动分析触发")
+    @PostMapping("/analysis")
+    public ResultResp analysis(@RequestBody AnalysisDto analysisto)
+    {
+        return analysisService.analysis(analysisto);
+    }
+
+    @UserLoginToken
+    @ApiOperation(value = "分析编辑查询")
+    @GetMapping("/analysisEditQuery")
+    public ResultResp analysisEditQuery(@RequestParam("batchCode") String batchCode)
+    {
+        return success(analysisService.analysisEditQuery(batchCode));
+    }
+
+    @UserLoginToken
+    @ApiOperation(value = "分析详情")
+    @GetMapping("/analysisDetail")
+    public ResultResp analysisDetail(@RequestParam("batchCode") String batchCode,
+                                     @RequestParam("analysisTypeCode") String analysisTypeCode,
+                                     @RequestParam("fieldEngineCode") String fieldEngineCode)
+    {
+        return success(analysisService.analysisDetail(batchCode,analysisTypeCode,fieldEngineCode));
+    }
+
+    @ApiOperation(value = "测试")
+    @PostMapping("/test")
+    public ResultResp test(@RequestBody AnalysisAlgorithmDto analysisAlgorithmDto)
+    {
+        String result = JSONMapper.nonEmptyMapper().toJSon(analysisAlgorithmDto);
+        System.out.println("result = " + result);
+        result = result.replaceAll("packages","package");
+        System.out.println(AlgorithmProperties.analysisUrl);
+        return success(result);
+    }
+
+}

+ 66 - 0
energy-manage-service/src/main/java/com/energy/manage/service/controller/analysiscomment/AnalysisCommentController.java

@@ -0,0 +1,66 @@
+package com.energy.manage.service.controller.analysiscomment;
+
+import com.energy.manage.common.reponse.ResultResp;
+import com.energy.manage.service.config.annotations.UserLoginToken;
+import com.energy.manage.service.controller.base.BaseServiceController;
+import com.energy.manage.service.domain.dto.analysis.AnalysisCommentDescriptionDto;
+import com.energy.manage.service.domain.dto.analysis.AnalysisCommentTypeRelationDto;
+import com.energy.manage.service.service.analysiscomment.AnalysisCommentService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author chy
+ * @date 2024/5/24 17:09
+ * @desc
+ */
+@Api(value = "AnalysisCommentController",tags = "富文本")
+@Slf4j
+@RestController
+@RequestMapping("/analysisComment")
+public class AnalysisCommentController extends BaseServiceController {
+
+    @Autowired
+    private AnalysisCommentService analysisCommentService;
+
+    @UserLoginToken
+    @ApiOperation(value = "富文本类型查询")
+    @GetMapping("/analysisCommentTypeList")
+    public ResultResp analysisCommentTypeList(@RequestParam(name = "batchCode",required = true) String batchCode,
+                                              @RequestParam(name = "analysisTypeCode",required = true) String analysisTypeCode)
+    {
+        return success(analysisCommentService.analysisCommentTypeList(batchCode,analysisTypeCode));
+    }
+
+    @UserLoginToken
+    @ApiOperation(value = "富文本类型添加")
+    @PostMapping("/addAnalysisCommentType")
+    public ResultResp addAnalysisCommentType(@RequestBody AnalysisCommentTypeRelationDto typeRelationDto)
+    {
+        typeRelationDto.setCreateBy(getUserId());
+        return analysisCommentService.addAnalysisCommentType(typeRelationDto);
+    }
+
+    @UserLoginToken
+    @ApiOperation(value = "富文本类型删除")
+    @PostMapping("/delAnalysisCommentType")
+    public ResultResp delAnalysisCommentType(@RequestBody String commentTypeCode)
+    {
+        return analysisCommentService.delAnalysisCommentType(commentTypeCode);
+    }
+
+    @UserLoginToken
+    @ApiOperation(value = "富文本编辑")
+    @PostMapping("/analysisCommentEdit")
+    public ResultResp analysisCommentEdit(@RequestBody AnalysisCommentDescriptionDto commentDescriptionDto)
+    {
+        Integer userId = getUserId();
+        commentDescriptionDto.setCreateBy(userId);
+        commentDescriptionDto.setUpdateBy(userId);
+        return success(analysisCommentService.analysisCommentEdit(commentDescriptionDto));
+    }
+
+}

+ 68 - 0
energy-manage-service/src/main/java/com/energy/manage/service/controller/analysiser/AnalysisErrController.java

@@ -0,0 +1,68 @@
+package com.energy.manage.service.controller.analysiser;
+
+import com.energy.manage.common.base.Page;
+import com.energy.manage.common.reponse.ResultResp;
+import com.energy.manage.service.config.annotations.UserLoginToken;
+import com.energy.manage.service.controller.base.BaseServiceController;
+import com.energy.manage.service.domain.dto.windexceptioncount.WindExceptionCountDto;
+import com.energy.manage.service.domain.vo.windexceptioncount.WindExceptionCountVo;
+import com.energy.manage.service.service.analysiserr.AnalysisErrService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 分析结果异常数统计
+ * @author chy
+ * @date 2024/5/23 17:22
+ * @desc
+ */
+@Api(value = "AnalysisErrController",tags = "分析结果异常数统计")
+@RestController
+@RequestMapping("/analysisErr")
+public class AnalysisErrController extends BaseServiceController {
+
+    @Autowired
+    private AnalysisErrService analysisErrService;
+
+    @UserLoginToken
+    @ApiOperation(value = "异常查询")
+    @GetMapping("/analysisErrQuery")
+    public ResultResp<Page<WindExceptionCountVo>> analysisErrQuery(WindExceptionCountDto windExceptionCountDto)
+    {
+        return pageResult(analysisErrService.analysisErrQuery(windExceptionCountDto),windExceptionCountDto);
+    }
+
+    @UserLoginToken
+    @ApiOperation(value = "异常添加")
+    @PostMapping("/analysisErrAdd")
+    public ResultResp analysisErrAdd(WindExceptionCountDto windExceptionCountDto)
+    {
+        Integer loginUserId = getUserId();
+        windExceptionCountDto.setCreateBy(loginUserId);
+        windExceptionCountDto.setUpdateBy(loginUserId);
+        return analysisErrService.analysisErrAdd(windExceptionCountDto);
+    }
+
+    @UserLoginToken
+    @ApiOperation(value = "异常编辑")
+    @PostMapping("/analysisErrEdit")
+    public ResultResp analysisErrEdit(WindExceptionCountDto windExceptionCountDto)
+    {
+        windExceptionCountDto.setUpdateBy(getUserId());
+        return analysisErrService.analysisErrEdit(windExceptionCountDto);
+    }
+
+    @UserLoginToken
+    @ApiOperation(value = "异常删除")
+    @PostMapping("/analysisErrDel")
+    public ResultResp analysisErrDel(WindExceptionCountDto windExceptionCountDto)
+    {
+        windExceptionCountDto.setUpdateBy(getUserId());
+        return analysisErrService.analysisErrDel(windExceptionCountDto);
+    }
+}

+ 8 - 3
energy-manage-service/src/main/java/com/energy/manage/service/controller/windenginegroup/WindEngineGroupController.java

@@ -4,6 +4,7 @@ package com.energy.manage.service.controller.windenginegroup;
 import com.energy.manage.common.base.Page;
 import com.energy.manage.common.reponse.ResultResp;
 import com.energy.manage.service.config.annotations.UserLoginToken;
+import com.energy.manage.service.controller.base.BaseServiceController;
 import com.energy.manage.service.domain.dto.windenginegroup.WindEngineGroupCodeDto;
 import com.energy.manage.service.domain.dto.windenginegroup.WindEngineGroupCreateDto;
 import com.energy.manage.service.domain.dto.windenginegroup.WindEngineGroupPageDto;
@@ -22,7 +23,7 @@ import org.springframework.web.multipart.MultipartFile;
 @CrossOrigin
 @Api(value = "WindEngineGroupController", tags = "风机机组信息管理")
 @RequestMapping(value = "/api/wind/engine/group")
-public class WindEngineGroupController {
+public class WindEngineGroupController extends BaseServiceController {
 
     @Autowired
     private WindEngineGroupService windEngineGroupService;
@@ -93,7 +94,11 @@ public class WindEngineGroupController {
     }
 
 
-
-
+    @ApiOperation("根据角色获取风机")
+    @UserLoginToken
+    @GetMapping("/getWindEngineGroupByUser")
+    public ResultResp getWindEngineGroupByUser() {
+        return success(windEngineGroupService.getWindEngineGroupByRoleId(getRoleId()));
+    }
 
 }

+ 28 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisAlgorithmDto.java

@@ -0,0 +1,28 @@
+package com.energy.manage.service.domain.dto.analysis;
+
+import com.energy.manage.service.domain.dto.analysisalgorithm.DataContractDto;
+import com.energy.manage.service.domain.dto.analysisalgorithm.DataContractTypeDto;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 调用分析算法的入参
+ * @author chy
+ * @date 2024/5/30 13:50
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class AnalysisAlgorithmDto {
+
+    /**
+     * 算法版本号
+     */
+    private DataContractTypeDto dataContractType = new DataContractTypeDto();
+
+    /**
+     * 分析参数
+     */
+    private DataContractDto dataContract = new DataContractDto();
+
+}

+ 41 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisCommentDescriptionDto.java

@@ -0,0 +1,41 @@
+package com.energy.manage.service.domain.dto.analysis;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 分析富文本描述
+ * @author chy
+ * @date 2024/5/23 12:56
+ * @desc
+ */
+@Data
+public class AnalysisCommentDescriptionDto {
+
+
+    /**
+     * 批次编号
+     */
+    private String batchCode ;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode ;
+
+    /**
+     * 类型与描述
+     */
+    private List<CommentDto> commentList ;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy ;
+
+    /**
+     * 更新人
+     */
+    private Integer updateBy ;
+}

+ 57 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisCommentTypeRelationDto.java

@@ -0,0 +1,57 @@
+package com.energy.manage.service.domain.dto.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析评论类型关联
+ * @author chy
+ * @date 2024/5/23 12:53
+ * @desc
+ */
+@Table(name = "analysis_comment_type_relation")
+@Data
+@Accessors(chain = true)
+public class AnalysisCommentTypeRelationDto {
+
+    /**
+     * 批次编号
+     */
+    private String batchCode;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode;
+
+    /**
+     * 评论类型标号
+     */
+
+    private String commentTypeCode;
+
+    /**
+     * 评论类型名称
+     */
+    private String commentTypeName;
+
+    /**
+     * 是否自定义 0:否 1:是
+     */
+    private Integer isDefined;
+
+    /**
+     * 是否删除 0:否 1:是
+     */
+    private Integer isDelete;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy;
+
+}

+ 50 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisDiagramRelationDto.java

@@ -0,0 +1,50 @@
+package com.energy.manage.service.domain.dto.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析结果图文关系表
+ * @author chy
+ * @date 2024/5/23 12:52
+ * @desc
+ */
+@Table(name = "analysis_diagram_relation")
+@Data
+public class AnalysisDiagramRelationDto {
+
+
+    /**
+     * 批次编号
+     */
+    private String batchCode ;
+
+    /**
+     * 风机编号
+     */
+    private String fieldEngineCode ;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode ;
+
+    /**
+     * 分析结果地址minio
+     */
+    private String fileAddr ;
+
+    /**
+     * 是否自动分析 0: 不自动分析 1: 自动分析
+     */
+    private Integer autoAnalysis ;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime ;
+}

+ 89 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisDto.java

@@ -0,0 +1,89 @@
+package com.energy.manage.service.domain.dto.analysis;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/30 09:56
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class AnalysisDto {
+
+    /**
+     * 手动自动分析 枚举值:auto、manual
+     * automatic 表示自动触发;
+     * manual 表示人工触发;
+     */
+    private String autoOrManual;
+
+    /**
+     * 风场编号
+     */
+    private String powerFarmID;
+
+    /**
+     * 批次号
+     */
+    private String dataBatchNum;
+
+    /**
+     * 机组编号
+     */
+    private List<String> turbines;
+
+    /**
+     * 开始时间 格式(2024-01-01 00:00:00)
+     */
+    private String beginTime;
+
+    /**
+     * 结束时间 格式(2024-12-12 00:00:00)
+     */
+    private String endTime;
+
+    /**
+     * 过滤月份
+     */
+    private List<String> excludingMonths;
+
+    /**
+     * 数据源scada
+     * 枚举值:minute、second、all,
+     * minute 用于人工分析场景,指定分析类型使用scada分钟级数据;
+     * seconde 用于人工分析场景,指定分析类型使用scada秒级数据;
+     * all 用于自动分析场景
+     */
+    private String scada;
+
+    /**
+     * 风速值最大最小
+     */
+    private List<Integer> valueWindSpeed;
+
+    /**
+     * 桨距角最大最小
+     */
+    private List<Integer> valuePitchAngle;
+
+    /**
+     * 有功功率
+     */
+    private List<Integer> valueActivePower;
+
+    /**
+     * 发电机转速
+     */
+    private List<Integer> valueGeneratorSpeed;
+
+    /**
+     * 分析类型code
+     */
+    private List<String> configAnalysis;
+
+
+}

+ 45 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisGeneralFileDto.java

@@ -0,0 +1,45 @@
+package com.energy.manage.service.domain.dto.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析结果总图表
+ * @author chy
+ * @date 2024/5/23 12:55
+ * @desc
+ */
+@Table(name = "analysis_general_file")
+@Data
+public class AnalysisGeneralFileDto {
+
+
+    /**
+     * 批次号
+     */
+    private Integer batchCode ;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode ;
+
+    /**
+     * 总文件地址minIO
+     */
+    private String fileAddr ;
+
+    /**
+     * 是否自动分析 0:手动 1自动
+     */
+    private Integer autoAnalysis ;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime ;
+}

+ 57 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisResultDto.java

@@ -0,0 +1,57 @@
+package com.energy.manage.service.domain.dto.analysis;
+
+import com.energy.manage.service.domain.dto.BaseDto;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析结果
+ * @author chy
+ * @date 2024/5/23 12:50
+ * @desc
+ */
+@Table(name = "analysis_result")
+@Data
+public class AnalysisResultDto extends BaseDto {
+
+
+    /**
+     * 风场名称
+     */
+    private String fieldName ;
+
+    /**
+     * 批次编号
+     */
+    private String batchCode ;
+
+    /**
+     * 分析状态
+     */
+    private Integer analysisState ;
+
+    /**
+     * 异常状态
+     */
+    private Integer errState ;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 用户角色id
+     */
+    private Integer roleId;
+
+}

+ 33 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisTypeDto.java

@@ -0,0 +1,33 @@
+package com.energy.manage.service.domain.dto.analysis;
+
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析类型表
+ * @author chy
+ * @date 2024/5/23 12:51
+ * @desc
+ */
+@Table(name = "analysis_type")
+@Data
+public class AnalysisTypeDto {
+
+    /**
+     * 分析类型父级编号
+     */
+    private String parentId ;
+
+    /**
+     * 分析类型编号
+     */
+    private String typeCode ;
+
+    /**
+     * 分析类型名称
+     */
+    private String typeName ;
+
+}

+ 23 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/CommentDto.java

@@ -0,0 +1,23 @@
+package com.energy.manage.service.domain.dto.analysis;
+
+import lombok.Data;
+
+/**
+ * 分析评论内容
+ * @author chy
+ * @date 2024/5/27 09:30
+ * @desc
+ */
+@Data
+public class CommentDto {
+
+    /**
+     * 评论类型名称
+     */
+    private String commentTypeCode ;
+
+    /**
+     * 富文本内容
+     */
+    private String comment ;
+}

+ 29 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/ConfigAnalysisDto.java

@@ -0,0 +1,29 @@
+package com.energy.manage.service.domain.dto.analysisalgorithm;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 分析类型
+ * @author chy
+ * @date 2024/5/30 16:22
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class ConfigAnalysisDto {
+    /**
+     * 包名
+     */
+    private String packages;
+
+    /**
+     * 类名
+     */
+    private String className;
+
+    /**
+     * 方法名
+     */
+    private String methodName;
+}

+ 35 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/CustomFilterDto.java

@@ -0,0 +1,35 @@
+package com.energy.manage.service.domain.dto.analysisalgorithm;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author chy
+ * @date 2024/5/30 14:07
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class CustomFilterDto {
+
+    /**
+     * 风速
+     */
+    private CustomerFilterItemDto valueWindSpeed;
+
+    /**
+     * 桨距角
+     */
+    private CustomerFilterItemDto valuePitchAngle;
+
+    /**
+     * 用工功率
+     */
+    private CustomerFilterItemDto valueActivePower;
+
+    /**
+     * 发电机转速
+     */
+    private CustomerFilterItemDto valueGeneratorSpeed;
+
+}

+ 24 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/CustomerFilterItemDto.java

@@ -0,0 +1,24 @@
+package com.energy.manage.service.domain.dto.analysisalgorithm;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author chy
+ * @date 2024/5/31 11:04
+ * @desc
+ */
+@Data
+@Accessors
+public class CustomerFilterItemDto {
+
+    /**
+     * 最小值
+     */
+    private String min;
+
+    /**
+     * 最大值
+     */
+    private String max;
+}

+ 43 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/DataContractDto.java

@@ -0,0 +1,43 @@
+package com.energy.manage.service.domain.dto.analysisalgorithm;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * 算法入参
+ * @author chy
+ * @date 2024/5/30 13:53
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class DataContractDto {
+
+    /**
+     * automatic 表示自动触发;manual 表示人工触发
+     */
+    private String autoOrManual = null ;
+
+    /**
+     * 数据源 : scada数据 、测风塔、事件
+     */
+    private DataSourceDto dataSource = new DataSourceDto();
+
+    /**
+     * 数据过滤
+     */
+    private DataFilterDto dataFilter = new DataFilterDto();
+
+    /**
+     * 配置分析类型
+     */
+    private List<ConfigAnalysisDto> configAnalysis;
+
+    /**
+     * 图像设置
+     */
+    private GraphSetsDto graphSets;
+
+}

+ 24 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/DataContractTypeDto.java

@@ -0,0 +1,24 @@
+package com.energy.manage.service.domain.dto.analysisalgorithm;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author chy
+ * @date 2024/5/30 13:54
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class DataContractTypeDto {
+
+    /**
+     * 算法类型
+     */
+    private String type = null;
+
+    /**
+     * 版本号
+     */
+    private String version = null;
+}

+ 51 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/DataFilterDto.java

@@ -0,0 +1,51 @@
+package com.energy.manage.service.domain.dto.analysisalgorithm;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/30 14:02
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class DataFilterDto {
+
+    /**
+     * 风场
+     */
+    private String powerFarmID;
+
+    /**
+     * 风机编号
+     */
+    private List<String> turbines;
+
+    /**
+     * 批次号
+     */
+    private String dataBatchNum;
+
+    /**
+     * 开始时间 格式(2024-01-01 00:00:00)
+     */
+    private String beginTime;
+
+    /**
+     * 结束时间 格式(2024-01-01 00:00:00)
+     */
+    private String endTime;
+
+    /**
+     * 过滤月份 格式(2024-01)
+     */
+    private List<String> excludingMonths;
+
+    /**
+     * 用户过滤
+     */
+    private CustomFilterDto customFilter;
+}

+ 25 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/DataSourceDto.java

@@ -0,0 +1,25 @@
+package com.energy.manage.service.domain.dto.analysisalgorithm;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 数据
+ * @author chy
+ * @date 2024/5/30 14:00
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class DataSourceDto {
+
+    /**
+     * scada数据
+     * 枚举值:minute、second、all,
+     * minute 用于人工分析场景,指定分析类型使用scada分钟级数据;
+     * seconde 用于人工分析场景,指定分析类型使用scada秒级数据;
+     * all 用于自动分析场景,分析类型按自身设计使用scada数据进行分析
+     */
+    private String scada;
+
+}

+ 47 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/GraphSetsDto.java

@@ -0,0 +1,47 @@
+package com.energy.manage.service.domain.dto.analysisalgorithm;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 图形设置
+ * @author chy
+ * @date 2024/5/30 14:21
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class GraphSetsDto {
+
+    /**
+     * 发电机转速
+     */
+    private GraphSetsItemDto generatorSpeed;
+
+    /**
+     * 发电机转矩
+     */
+    private GraphSetsItemDto generatorTorque;
+
+    /**
+     * 利用系数
+     */
+    private GraphSetsItemDto cp;
+
+    /**
+     * 叶尖速比
+     */
+    private GraphSetsItemDto tsr;
+
+    /**
+     * 桨距角
+     */
+    private GraphSetsItemDto pitchAngle;
+
+    /**
+     * 有功功率
+     */
+    private GraphSetsItemDto activePower;
+
+
+}

+ 27 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysisalgorithm/GraphSetsItemDto.java

@@ -0,0 +1,27 @@
+package com.energy.manage.service.domain.dto.analysisalgorithm;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author chy
+ * @date 2024/5/31 11:07
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class GraphSetsItemDto {
+
+    /**
+     * 步长
+     */
+    private String step;
+    /**
+     * 最小值
+     */
+    private String min;
+    /**
+     * 最大值
+     */
+    private String max;
+}

+ 58 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windexceptioncount/WindExceptionCountDto.java

@@ -0,0 +1,58 @@
+package com.energy.manage.service.domain.dto.windexceptioncount;
+
+import com.energy.manage.service.domain.dto.BaseDto;
+import lombok.Data;
+
+/**
+ * @author chy
+ * @date 2024/5/23 17:39
+ * @desc
+ */
+@Data
+public class WindExceptionCountDto extends BaseDto {
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 批次号
+     */
+    private String batchCode;
+
+    /**
+     * 风机编号
+     */
+    private String enginCode;
+
+    /**
+     *
+     */
+    private String analysisTypeCode;
+
+    /**
+     * 异常次数
+     */
+    private Integer errCount;
+
+    /**
+     * 处理异常数
+     */
+    private Integer handleErrCount;
+
+    /**
+     * 是否删除 0:否 1:是
+     */
+    private Integer isDelete;
+
+    /**
+     * 创建人 (前端不传 后端设置)
+     */
+    private Integer createBy;
+
+    /**
+     * 更新人
+     */
+    private Integer updateBy;
+}

+ 3 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windfieldbatch/WindFieldBatchDto.java

@@ -1,6 +1,7 @@
 package com.energy.manage.service.domain.dto.windfieldbatch;
 
 import com.energy.manage.service.domain.dto.BaseDto;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
@@ -63,10 +64,12 @@ public class WindFieldBatchDto extends BaseDto {
     /**
      * 创建开始时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date startTime;
 
     /**
      * 创建结束时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date endTime;
 }

+ 64 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisCommentDescriptionVo.java

@@ -0,0 +1,64 @@
+package com.energy.manage.service.domain.vo.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 分析富文本描述
+ * @author chy
+ * @date 2024/5/23 12:56
+ * @desc
+ */
+@Data
+public class AnalysisCommentDescriptionVo {
+
+
+    /**
+     * 批次编号
+     */
+    private String batchCode ;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode ;
+
+    /**
+     * 评论类型名称
+     */
+    private String commentTypeCode ;
+
+    /**
+     * 评论类型名称
+     */
+    private String commentTypeName ;
+
+    /**
+     * 富文本内容
+     */
+    private String comment ;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime ;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy ;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime ;
+
+    /**
+     * 更新人
+     */
+    private Integer updateBy ;
+}

+ 52 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisCommentTypeRelationVo.java

@@ -0,0 +1,52 @@
+package com.energy.manage.service.domain.vo.analysis;
+
+import lombok.Data;
+
+import javax.persistence.Table;
+
+/**
+ * 分析评论类型关联
+ * @author chy
+ * @date 2024/5/23 12:53
+ * @desc
+ */
+@Table(name = "analysis_comment_type_relation")
+@Data
+public class AnalysisCommentTypeRelationVo {
+
+//    /**
+//     * 批次编号
+//     */
+//    private String batchCode;
+//
+//    /**
+//     * 分析类型编号
+//     */
+//    private String analysisTypeCode;
+
+    /**
+     * 评论类型标号
+     */
+    private String commentTypeCode;
+
+    /**
+     * 评论类型名称
+     */
+    private String commentTypeName;
+
+    /**
+     * 是否自定义 0:否 1:是
+     */
+    private Integer isDefined;
+
+    /**
+     * 是否删除 0:否 1:是
+     */
+    private Integer isDelete;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy;
+
+}

+ 47 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisDetailVo.java

@@ -0,0 +1,47 @@
+package com.energy.manage.service.domain.vo.analysis;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/28 13:37
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class AnalysisDetailVo {
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode;
+
+    /**
+     * 分析类型名称
+     */
+    private String analysisTypeName;
+
+    /**
+     * 总文件
+     */
+    private List<AnalysisGeneralFileVo> generalFiles;
+
+    /**
+     * 分文件
+     */
+    private List<AnalysisDiagramRelationVo> diagramRelations;
+
+    /**
+     * 富文本类型列表
+     */
+    private List<AnalysisCommentTypeRelationVo> commentTypeRelations;
+
+    /**
+     * 富文本内容列表
+     */
+    private List<AnalysisCommentDescriptionVo> commentDescriptionVos;
+
+}

+ 55 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisDiagramRelationVo.java

@@ -0,0 +1,55 @@
+package com.energy.manage.service.domain.vo.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析结果图文关系表
+ * @author chy
+ * @date 2024/5/23 12:52
+ * @desc
+ */
+@Table(name = "analysis_diagram_relation")
+@Data
+public class AnalysisDiagramRelationVo {
+
+
+    /**
+     * 批次编号
+     */
+    private String batchCode ;
+
+    /**
+     * 风机编号
+     */
+    private String fieldEngineCode ;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode ;
+
+    /**
+     * 分析类型名称
+     */
+    private String analysisTypeName ;
+
+    /**
+     * 分析结果地址minio
+     */
+    private String fileAddr ;
+
+    /**
+     * 是否自动分析 0: 不自动分析 1: 自动分析
+     */
+    private Integer autoAnalysis ;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime ;
+}

+ 45 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisGeneralFileVo.java

@@ -0,0 +1,45 @@
+package com.energy.manage.service.domain.vo.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析结果总图表
+ * @author chy
+ * @date 2024/5/23 12:55
+ * @desc
+ */
+@Table(name = "analysis_general_file")
+@Data
+public class AnalysisGeneralFileVo {
+
+
+    /**
+     * 批次号
+     */
+    private String batchCode ;
+
+    /**
+     * 分析类型编号
+     */
+    private String analysisTypeCode ;
+
+    /**
+     * 总文件地址minIO
+     */
+    private String fileAddr ;
+
+    /**
+     * 是否自动分析 0:手动 1自动
+     */
+    private Integer autoAnalysis ;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime ;
+}

+ 28 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisResultShowVo.java

@@ -0,0 +1,28 @@
+package com.energy.manage.service.domain.vo.analysis;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author chy
+ * @date 2024/5/27 17:59
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class AnalysisResultShowVo {
+
+    /**
+     * 分析类型(树形结构)
+     */
+    private List<Map<String,Object>> analysisTypeList;
+
+    /**
+     * 风机机组编号
+     */
+    private List<String> windEngineGroupList;
+
+}

+ 67 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisResultVo.java

@@ -0,0 +1,67 @@
+package com.energy.manage.service.domain.vo.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 分析结果
+ * @author chy
+ * @date 2024/5/23 12:50
+ * @desc
+ */
+@Table(name = "analysis_result")
+@Data
+public class AnalysisResultVo {
+
+
+    /**
+     * 批次编号
+     */
+    private String batchCode ;
+
+    /**
+     * 分析状态
+     */
+    private Integer analysisState ;
+
+    /**
+     * 异常状态
+     */
+    private Integer errState ;
+
+    /**
+     * 异常编号
+     */
+    private String errCode ;
+
+    /**
+     * 异常信息
+     */
+    private String errInfo ;
+
+    /**
+     * 创建人
+     */
+    private Integer createBy ;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime ;
+
+    /**
+     *  更新人
+     */
+    private Integer updateBy ;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime ;
+
+}

+ 32 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisTypeVo.java

@@ -0,0 +1,32 @@
+package com.energy.manage.service.domain.vo.analysis;
+
+import lombok.Data;
+
+import javax.persistence.Table;
+
+/**
+ * 分析类型表
+ * @author chy
+ * @date 2024/5/23 12:51
+ * @desc
+ */
+@Table(name = "analysis_type")
+@Data
+public class AnalysisTypeVo {
+
+    /**
+     * 分析类型父级编号
+     */
+    private String parentId ;
+
+    /**
+     * 分析类型编号
+     */
+    private String typeCode ;
+
+    /**
+     * 分析类型名称
+     */
+    private String typeName ;
+
+}

+ 54 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/windexceptioncount/WindExceptionCountVo.java

@@ -0,0 +1,54 @@
+package com.energy.manage.service.domain.vo.windexceptioncount;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author chy
+ * @date 2024/5/23 17:39
+ * @desc
+ */
+@Data
+public class WindExceptionCountVo {
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 批次号
+     */
+    private String batchCode;
+
+    /**
+     * 风机编号
+     */
+    private String enginCode;
+
+    /**
+     *
+     */
+    private String analysisTypeCode;
+
+    /**
+     * 异常次数
+     */
+    private Integer errCount;
+
+    /**
+     * 处理异常数
+     */
+    private Integer handleErrCount;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+}

+ 50 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisCommentDescriptionMapper.java

@@ -0,0 +1,50 @@
+package com.energy.manage.service.mappers.analysis;
+
+import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.common.po.analysis.AnalysisCommentDescriptionPo;
+import com.energy.manage.service.domain.vo.analysis.AnalysisCommentDescriptionVo;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/23 13:04
+ * @desc
+ */
+@Repository
+public interface AnalysisCommentDescriptionMapper extends MyMapper<AnalysisCommentDescriptionPo> {
+
+
+    /**
+     * 根据条件查询评论数(批次 + 分析类型 + 文本类型编号)
+     * @param commentTypeCode
+     * @return
+     */
+   int selectCountByCommentTypeCode(String commentTypeCode);
+
+
+    /**
+     * 根据条件查询评论数(批次 + 分析类型 + 文本类型编号)
+     * @param batchCode
+     * @param analysisTypeCode
+     * @return
+     */
+    List<AnalysisCommentDescriptionVo> selecByBatchCodeAndAnalysisTypeCode(String batchCode, String analysisTypeCode);
+
+    /**
+     *  新增
+     * @param commentDescriptionPo
+     * @return
+     */
+   int insertPoSelective(AnalysisCommentDescriptionPo commentDescriptionPo);
+
+    /**
+     * 更新
+     * @param commentDescriptionPo
+     * @return
+     */
+   int updatePoSelective(AnalysisCommentDescriptionPo commentDescriptionPo);
+
+
+}

+ 51 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisCommentTypeRelationMapper.java

@@ -0,0 +1,51 @@
+package com.energy.manage.service.mappers.analysis;
+
+import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.common.po.analysis.AnalysisCommentTypeRelationPo;
+import com.energy.manage.service.domain.dto.analysis.AnalysisCommentTypeRelationDto;
+import com.energy.manage.service.domain.vo.analysis.AnalysisCommentTypeRelationVo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/23 13:05
+ * @desc
+ */
+@Repository
+public interface AnalysisCommentTypeRelationMapper extends MyMapper<AnalysisCommentTypeRelationPo> {
+
+    /**
+     * 根据批次号与分析类型查询
+     * @param batchCode
+     * @param analysisTypeCode
+     * @return
+     */
+    List<AnalysisCommentTypeRelationVo> selectByAnalysisTypeCode(@Param("batchCode") String batchCode,
+                                                                 @Param("analysisTypeCode") String analysisTypeCode);
+
+    /**
+     * 根据typeCode 查询信息
+     * @param commentTypeCode
+     * @return
+     */
+    AnalysisCommentTypeRelationVo selectByTypeCode(String commentTypeCode);
+
+    /**
+     * 新增富文本类型
+     * @param analysisCommentTypeRelationDto
+     * @return
+     */
+    int insertPoSelective(AnalysisCommentTypeRelationDto analysisCommentTypeRelationDto);
+
+
+    /**
+     * 删除自定义评论类型
+     * @param commentTypeCode
+     * @return
+     */
+    int deleteByTypeCode(String commentTypeCode);
+
+}

+ 25 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisDiagramRelationMapper.java

@@ -0,0 +1,25 @@
+package com.energy.manage.service.mappers.analysis;
+
+import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.common.po.analysis.AnalysisDiagramRelationPo;
+import com.energy.manage.service.domain.vo.analysis.AnalysisDiagramRelationVo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/23 16:41
+ * @desc
+ */
+@Repository
+public interface AnalysisDiagramRelationMapper extends MyMapper<AnalysisDiagramRelationPo>{
+
+
+    List<AnalysisDiagramRelationVo> selectByCondition(@Param("batchCode") String batchCode,
+                                                      @Param("analysisTypeCode") String analysisTypeCode,
+                                                      @Param("fieldEngineCode") String fieldEngineCode);
+
+
+}

+ 25 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisGeneralFileMapper.java

@@ -0,0 +1,25 @@
+package com.energy.manage.service.mappers.analysis;
+
+import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.service.domain.vo.analysis.AnalysisGeneralFileVo;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/23 13:04
+ * @desc
+ */
+@Repository
+public interface AnalysisGeneralFileMapper extends MyMapper<AnalysisGeneralFileVo> {
+
+    /**
+     * 根据批次号与分型类型编号查询通用文件
+     * @param batchCode
+     * @param analysisTypeCode
+     * @return
+     */
+    List<AnalysisGeneralFileVo> selectByCondition(String batchCode, String analysisTypeCode);
+
+}

+ 35 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisResultMapper.java

@@ -0,0 +1,35 @@
+package com.energy.manage.service.mappers.analysis;
+
+import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.common.po.analysis.AnalysisResultPo;
+import com.energy.manage.service.domain.dto.analysis.AnalysisResultDto;
+import com.energy.manage.service.domain.vo.analysis.AnalysisResultVo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/23 13:03
+ * @desc
+ */
+@Repository
+public interface AnalysisResultMapper extends MyMapper<AnalysisResultPo> {
+
+    /**
+     * 查询分析结果
+     * @param analysisResultDto
+     * @return
+     */
+    List<AnalysisResultVo> selectByCondition(AnalysisResultDto analysisResultDto);
+
+
+    /**
+     * 查询分析中的数据量
+     * @param batchCode
+     * @return
+     */
+    int selectAlasisingCountByBatchCode(@Param("batchCode") String batchCode);
+
+}

+ 31 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisTypeMapper.java

@@ -0,0 +1,31 @@
+package com.energy.manage.service.mappers.analysis;
+
+import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.common.po.analysis.AnalysisTypePo;
+import com.energy.manage.service.domain.vo.analysis.AnalysisTypeVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/23 13:03
+ * @desc
+ */
+@Repository
+public interface AnalysisTypeMapper extends MyMapper <AnalysisTypePo>{
+
+    /**
+     * 查询所有的分析类型
+     * @return
+     */
+    List<AnalysisTypeVo> selectAllVo();
+
+    /**
+     * 根据类型编号查询所有的分析类型
+     * @param typeCode
+     * @return
+     */
+    List<AnalysisTypeVo> selectByTypeCode(String typeCode);
+}

+ 2 - 1
energy-manage-service/src/main/java/com/energy/manage/service/mappers/datatransfer/DataTransferMapper.java

@@ -1,5 +1,6 @@
 package com.energy.manage.service.mappers.datatransfer;
 
+import com.energy.manage.common.mapper.MyMapper;
 import com.energy.manage.common.po.datatransfer.DataTransferPo;
 import com.energy.manage.service.domain.dto.datatransfer.DataTransferDto;
 import com.energy.manage.service.domain.vo.datatransfer.DataTransferVo;
@@ -14,7 +15,7 @@ import java.util.List;
  * @desc
  */
 @Repository
-public interface DataTransferMapper {
+public interface DataTransferMapper extends MyMapper<DataTransferPo>{
 
     /**
      * 获取当前角色所有进行过数据转的风场批次号

+ 1 - 1
energy-manage-service/src/main/java/com/energy/manage/service/mappers/datatransferhistory/DataTransferHistoryMapper.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Repository;
  * @desc
  */
 @Repository
-public interface DataTransferHistoryMapper {
+public interface DataTransferHistoryMapper extends MyMapper<DataTransferHistoryPo>{
 
     int addDataTransferHistory(DataTransferHistoryPo po);
 }

+ 2 - 1
energy-manage-service/src/main/java/com/energy/manage/service/mappers/datatransfertype/DataTransferTypeMapper.java

@@ -1,5 +1,6 @@
 package com.energy.manage.service.mappers.datatransfertype;
 
+import com.energy.manage.common.mapper.MyMapper;
 import com.energy.manage.common.po.datatransfer.DataTransferTypePo;
 import com.energy.manage.service.domain.vo.datatransfer.DataTransferTypeVo;
 import org.springframework.stereotype.Repository;
@@ -13,7 +14,7 @@ import java.util.List;
  * @desc
  */
 @Repository
-public interface DataTransferTypeMapper {
+public interface DataTransferTypeMapper extends MyMapper<DataTransferTypePo>{
 
     /**
      * 查询所有转换类型信息

+ 15 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/windenginegroup/WindEngineGroupMapper.java

@@ -5,6 +5,7 @@ import com.energy.manage.common.mapper.MyMapper;
 import com.energy.manage.common.po.windenginegroup.WindEngineGroupPO;
 import com.energy.manage.service.domain.dto.windenginegroup.WindEngineGroupPageDto;
 import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupPageVo;
+import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupVo;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -17,6 +18,20 @@ public interface WindEngineGroupMapper extends MyMapper<WindEngineGroupPO> {
 
    List<WindEngineGroupPageVo> selectWindEngineGroupByNames(@Param("item") WindEngineGroupPageDto windEngineGroupPageDto);
 
+   /**
+    * 查看当前角色所关联的机组
+    * @param roleId
+    * @return
+    */
+   List<WindEngineGroupVo> selectWindEngineGroupByRoleId(@Param("roleId") Integer roleId);
+
+   /**
+    * 根据批次号查询风机组
+    * @param batchCode
+    * @return
+    */
+   List<WindEngineGroupVo> selectWindEngineGroupByBatchCode(@Param("batchCode") String batchCode);
+
 
 
 }

+ 42 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/windexceptioncount/WindExceptionCountMapper.java

@@ -0,0 +1,42 @@
+package com.energy.manage.service.mappers.windexceptioncount;
+
+import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.common.po.windexceptioncount.WindExceptionCountPo;
+import com.energy.manage.service.domain.dto.windexceptioncount.WindExceptionCountDto;
+import com.energy.manage.service.domain.vo.windexceptioncount.WindExceptionCountVo;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/23 17:38
+ * @desc
+ */
+@Repository
+public interface WindExceptionCountMapper extends MyMapper<WindExceptionCountPo>{
+
+    /**
+     * 根据批次号、风机编号、分析类型编码 查询所有异常描述
+     * @param windExceptionCountDto
+     * @return
+     */
+    List<WindExceptionCountVo> selectByCondition(WindExceptionCountDto windExceptionCountDto);
+
+
+    /**
+     * 添加异常描述
+     * @param windExceptionCountDto
+     * @return
+     */
+    int insertPoSelective(WindExceptionCountDto windExceptionCountDto);
+
+
+    /**
+     * 修改异常描述 只改异常数 处理异常数 更新人
+     * @param analysisResultDto
+     * @return
+     */
+    int updatePoSelecttive(WindExceptionCountDto analysisResultDto);
+
+}

+ 3 - 1
energy-manage-service/src/main/java/com/energy/manage/service/mappers/windfieldbatch/WindFieldBatchMapper.java

@@ -1,5 +1,7 @@
 package com.energy.manage.service.mappers.windfieldbatch;
 
+import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.common.po.windfieldbatch.WindFieldBatchPo;
 import com.energy.manage.service.domain.dto.windfieldbatch.WindFieldBatchDto;
 import com.energy.manage.service.domain.vo.windfieldbatch.WindFieldBatchVo;
 import org.springframework.stereotype.Repository;
@@ -12,7 +14,7 @@ import java.util.List;
  * @desc
  */
 @Repository
-public interface WindFieldBatchMapper {
+public interface WindFieldBatchMapper extends MyMapper<WindFieldBatchPo>{
 
     /**
      * 新增

+ 57 - 0
energy-manage-service/src/main/java/com/energy/manage/service/property/analysis/AlgorithmProperties.java

@@ -0,0 +1,57 @@
+package com.energy.manage.service.property.analysis;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 算法属性值
+ * @author chy
+ * @date 2024/5/30 17:37
+ * @desc
+ */
+@Component
+public class AlgorithmProperties {
+
+    /**
+     * 算法地址
+     */
+    public static String analysisUrl;
+
+    /**
+     * 传给分析算法json
+     */
+    public static String analysisJson;
+
+    /**
+     * 图像设置参数属性
+     */
+    public static List<String> graphSetsProperties;
+
+    /**
+     * 分析类型属性
+     */
+    public static String configAnalysisProperties;
+
+
+    @Value("${analysis.url}")
+    public void setAnalysisUrl(String analysisUrl){
+        AlgorithmProperties.analysisUrl = analysisUrl;
+    }
+
+    @Value("${analysis.json}")
+    public void setAnalysisJson(String analysisJson){
+        AlgorithmProperties.analysisJson = analysisJson;
+    }
+
+    @Value("${graphSets.properties}")
+    public void setGraphSetsProperties(List<String> graphSetsProperties){
+        AlgorithmProperties.graphSetsProperties = graphSetsProperties;
+    }
+
+    @Value("${analysis.properties}")
+    public void setConfigAnalysisProperties(String configAnalysis){
+        AlgorithmProperties.configAnalysisProperties = configAnalysis;
+    }
+}

+ 55 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/AnalysisService.java

@@ -0,0 +1,55 @@
+package com.energy.manage.service.service.analysis;
+
+import com.energy.manage.common.reponse.ResultResp;
+import com.energy.manage.service.domain.dto.analysis.AnalysisAlgorithmDto;
+import com.energy.manage.service.domain.dto.analysis.AnalysisDto;
+import com.energy.manage.service.domain.dto.analysis.AnalysisResultDto;
+import com.energy.manage.service.domain.vo.analysis.AnalysisDetailVo;
+import com.energy.manage.service.domain.vo.analysis.AnalysisResultShowVo;
+import com.energy.manage.service.domain.vo.analysis.AnalysisResultVo;
+import com.fasterxml.jackson.core.JsonProcessingException;
+
+import java.util.List;
+
+/**
+ * 分析服务
+ * @author chy
+ * @date 2024/5/23 12:59
+ * @desc
+ */
+public interface AnalysisService {
+
+    /**
+     * 分析结果列表
+     * @param analysisResultDto
+     * @return
+     */
+    List<AnalysisResultVo> analysisResultList(AnalysisResultDto analysisResultDto);
+
+
+    /**
+     * 分析
+     * @param analysisDto
+     * @return
+     */
+    ResultResp analysis(AnalysisDto analysisDto);
+
+
+    /**
+     * 分析编辑查询
+     * @param batchCode
+     * @return
+     */
+    AnalysisResultShowVo analysisEditQuery(String batchCode);
+
+    /**
+     * 分析详情
+     * @param batchCode
+     * @param analysisTypeCode
+     * @param fieldEngineCode
+     * @return
+     */
+    List<AnalysisDetailVo> analysisDetail(String batchCode, String analysisTypeCode, String fieldEngineCode);
+
+
+}

+ 347 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/impl/AnalysisServiceImpl.java

@@ -0,0 +1,347 @@
+package com.energy.manage.service.service.analysis.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.energy.manage.common.reponse.ConstVar;
+import com.energy.manage.common.reponse.ResultResp;
+import com.energy.manage.common.util.HttpUtils;
+import com.energy.manage.service.constant.analysis.AnalysisConstants;
+import com.energy.manage.service.domain.dto.analysis.AnalysisDto;
+import com.energy.manage.service.domain.dto.analysis.AnalysisResultDto;
+import com.energy.manage.service.domain.dto.analysisalgorithm.DataContractDto;
+import com.energy.manage.service.domain.dto.analysisalgorithm.DataContractTypeDto;
+import com.energy.manage.service.domain.vo.analysis.*;
+import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupVo;
+import com.energy.manage.service.mappers.analysis.*;
+import com.energy.manage.service.mappers.windenginegroup.WindEngineGroupMapper;
+import com.energy.manage.service.property.analysis.AlgorithmProperties;
+import com.energy.manage.service.service.analysis.AnalysisService;
+import com.energy.manage.service.util.BeanMapUtils;
+import com.energy.manage.service.util.TreeUtil;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.lang.reflect.Field;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 分析服务
+ * @author chy
+ * @date 2024/5/23 12:59
+ * @desc
+ */
+@Slf4j
+@Service
+public class AnalysisServiceImpl implements AnalysisService {
+
+
+    @Autowired
+    private AnalysisResultMapper analysisResultMapper;
+
+    @Autowired
+    private AnalysisTypeMapper analysisTypeMapper;
+
+    @Autowired
+    private WindEngineGroupMapper engineGroupMapper;
+
+    @Autowired
+    private AnalysisCommentDescriptionMapper commentDescriptionMapper;
+
+    @Autowired
+    private AnalysisCommentTypeRelationMapper commentTypeRelationMapper;
+
+    @Autowired
+    private AnalysisDiagramRelationMapper diagramRelationMapper;
+
+    @Autowired
+    private AnalysisGeneralFileMapper generalFileMapper;
+
+    /**
+     * 分析结果列表
+     * @param analysisResultDto
+     * @return
+     */
+    @Override
+    public List<AnalysisResultVo> analysisResultList(AnalysisResultDto analysisResultDto) {
+        return analysisResultMapper.selectByCondition(analysisResultDto);
+    }
+
+    /**
+     * 分析
+     * @param analysisDto
+     * @return
+     */
+    @Override
+    public ResultResp analysis(AnalysisDto analysisDto) {
+        try {
+            String batchCode = analysisDto.getDataBatchNum();
+            if(checkAnalysising(batchCode)){
+                return ResultResp.FAIL(ConstVar.ANALYSISING);
+            }
+            //将配置文件中的算法json转换为对象
+            ObjectMapper mapper = new ObjectMapper();
+            JsonNode rootNode = mapper.readTree(AlgorithmProperties.analysisJson);
+            //将前端入参转换为算法标准json
+            dataProccess(analysisDto,rootNode);
+            //调用算法
+            JSONObject jsonObject = HttpUtils.doPost(AlgorithmProperties.analysisUrl,mapper.convertValue(rootNode, Map.class));
+            log.info("调用算法分析返回结果:{}",jsonObject);
+            return ResultResp.SUCCESS();
+        } catch (JsonProcessingException e) {
+            log.error("批次号 = {} 手动分析异常",analysisDto.getDataBatchNum(),e);
+            return ResultResp.FAIL();
+        }
+    }
+
+    /**
+     * 分析编辑查询(查询分析类型、风机组)
+     * @param batchCode
+     * @return
+     */
+    @Override
+    public AnalysisResultShowVo analysisEditQuery(String batchCode){
+        AnalysisResultShowVo analysisResultShowVo = new AnalysisResultShowVo();
+        return analysisResultShowVo.setAnalysisTypeList(getAnalysisType())
+                .setWindEngineGroupList(getWindEngineGroupByBatchCode(batchCode));
+    }
+
+
+    /**
+     * 分析详情
+     * @param batchCode
+     * @param analysisTypeCode
+     * @param fieldEngineCode
+     * @return
+     */
+    @Override
+    public List<AnalysisDetailVo> analysisDetail(String batchCode, String analysisTypeCode, String fieldEngineCode) {
+        List<AnalysisDetailVo> analysisDetailVos = new ArrayList<>();
+        //获取所有的分析类型
+        List<AnalysisTypeVo> analysisTypeVos = analysisTypeMapper.selectByTypeCode(analysisTypeCode);
+        if(CollectionUtils.isEmpty(analysisTypeVos)){
+            return analysisDetailVos;
+        }
+        //最新总文件
+        List<AnalysisGeneralFileVo> newGeneralFileVos = new ArrayList<>();
+        //如果风机编号为空的话 则需要查总文件
+        if(StringUtils.isBlank(fieldEngineCode)){
+            //获取最新总文件列表
+            newGeneralFileVos = getNewGeneralFiles(batchCode,analysisTypeCode);
+        }
+        //获取最新分文件
+        List<AnalysisDiagramRelationVo> newDiagramRelationVos = getNewDiagramRelations(batchCode, analysisTypeCode, fieldEngineCode);
+        //查询评论
+        List<AnalysisCommentDescriptionVo> commentDescriptionVos = commentDescriptionMapper.selecByBatchCodeAndAnalysisTypeCode(batchCode,analysisTypeCode);
+        //根据分析类型设置分析结果
+        List<AnalysisGeneralFileVo> finalNewGeneralFileVos = newGeneralFileVos;
+        analysisTypeVos.forEach(analysisTypeVo -> {
+            //设置相应参数
+            AnalysisDetailVo analysisDetailVo = getAnalysisDetailVo(analysisTypeVo, finalNewGeneralFileVos,newDiagramRelationVos,commentDescriptionVos);
+            if(analysisDetailVo != null){
+                analysisDetailVos.add(analysisDetailVo);
+            }
+        });
+        //只有当分析类型不为空的时候才返回评论类型
+        if(StringUtils.isNotBlank(analysisTypeCode) && CollectionUtils.isNotEmpty(analysisDetailVos)){
+            analysisDetailVos.get(0).setCommentTypeRelations(commentTypeRelationMapper.selectByAnalysisTypeCode(batchCode,analysisTypeCode));
+        }
+        return analysisDetailVos;
+    }
+
+
+    /**
+     * 获取分析类型
+     */
+    private List<Map<String,Object>> getAnalysisType(){
+        List<Map<String,Object>> resultList = new ArrayList<>();
+        List<AnalysisTypeVo> analysisTypeVos =  analysisTypeMapper.selectAllVo();
+        if(CollectionUtils.isEmpty(analysisTypeVos)){
+            return resultList;
+        }
+        analysisTypeVos.forEach(analysisTypeVo -> resultList.add(BeanMapUtils.beanToMap(analysisTypeVo)));
+        return TreeUtil.getJava8ResultTree(resultList, AnalysisConstants.ANALYSIS_TYPE_PARRENT_KEY);
+    }
+
+    /**
+     * 获取风机组编号
+     * @param batchCode
+     * @return
+     */
+    private List<String> getWindEngineGroupByBatchCode(String batchCode){
+        List<WindEngineGroupVo> engineGroupVos = engineGroupMapper.selectWindEngineGroupByBatchCode(batchCode);
+        return engineGroupVos.parallelStream().map(WindEngineGroupVo::getEngineCode).collect(Collectors.toList());
+    }
+
+
+    /**
+     * 获取总文件
+     * @param batchCode
+     * @param analysisTypeCode
+     * @return
+     */
+    private List<AnalysisGeneralFileVo> getNewGeneralFiles(String batchCode,String analysisTypeCode){
+        List<AnalysisGeneralFileVo> generalFileVos = generalFileMapper.selectByCondition(batchCode,analysisTypeCode);
+        generalFileVos.sort(Comparator.comparing(AnalysisGeneralFileVo::getCreateTime,Comparator.reverseOrder()));
+        //删除地址相同的文件
+        return generalFileVos.stream().collect(Collectors.collectingAndThen(
+                Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(AnalysisGeneralFileVo::getFileAddr))),
+                ArrayList :: new));
+    }
+
+
+    /**
+     * 获取最新分析结果分文件
+     * @param batchCode
+     * @param analysisTypeCode
+     * @param fieldEngineCode
+     * @return
+     */
+    private List<AnalysisDiagramRelationVo> getNewDiagramRelations(String batchCode,String analysisTypeCode,String fieldEngineCode){
+        List<AnalysisDiagramRelationVo> diagramRelationVos = diagramRelationMapper.selectByCondition(batchCode,analysisTypeCode,fieldEngineCode);
+        if(CollectionUtils.isEmpty(diagramRelationVos)){
+            return diagramRelationVos;
+        }
+        //如果风机编号不为空的话则不对风机编号进行排序
+        if (StringUtils.isNotBlank(fieldEngineCode)) {
+            diagramRelationVos.sort(Comparator.comparing(AnalysisDiagramRelationVo::getCreateTime, Comparator.reverseOrder()));
+        } else {
+            diagramRelationVos.sort(Comparator.comparing(AnalysisDiagramRelationVo::getFieldEngineCode)
+                    .thenComparing(AnalysisDiagramRelationVo::getCreateTime, Comparator.reverseOrder()));
+        }
+        //去除地址相同的对象
+        return diagramRelationVos.stream().collect(Collectors.collectingAndThen(
+                Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(AnalysisDiagramRelationVo::getFileAddr))),
+                                                     ArrayList :: new)
+        );
+    }
+
+    /**
+     * 设置分析结果
+     * @param analysisTypeVo
+     * @param newGeneralFileVos
+     * @param newDiagramRelationVos
+     * @param commentDescriptionVos
+     * @return
+     */
+    private AnalysisDetailVo getAnalysisDetailVo(AnalysisTypeVo analysisTypeVo,
+                                                 List<AnalysisGeneralFileVo> newGeneralFileVos,
+                                                 List<AnalysisDiagramRelationVo> newDiagramRelationVos,
+                                                 List<AnalysisCommentDescriptionVo> commentDescriptionVos){
+        List<AnalysisGeneralFileVo> generalFileVos = null;
+        if(CollectionUtils.isNotEmpty(newGeneralFileVos)) {
+            generalFileVos = newGeneralFileVos.stream().filter(analysisGeneralFileVo -> analysisGeneralFileVo.getAnalysisTypeCode().equals(analysisTypeVo.getTypeCode())).collect(Collectors.toList());
+        }
+        List<AnalysisDiagramRelationVo> diagramRelationVos = null;
+        if(CollectionUtils.isNotEmpty(newDiagramRelationVos)){
+            diagramRelationVos = newDiagramRelationVos.stream().filter(analysisDiagramRelationVo -> analysisDiagramRelationVo.getAnalysisTypeCode().equals(analysisTypeVo.getTypeCode())).collect(Collectors.toList());
+        }
+        if(CollectionUtils.isEmpty(generalFileVos) && CollectionUtils.isEmpty(diagramRelationVos)){
+            return null;
+        }
+        return new AnalysisDetailVo()
+                .setAnalysisTypeCode(analysisTypeVo.getTypeCode())
+                .setAnalysisTypeName(analysisTypeVo.getTypeName())
+                .setGeneralFiles(generalFileVos)
+                .setDiagramRelations(diagramRelationVos)
+                .setCommentDescriptionVos(commentDescriptionVos);
+    }
+
+    /**
+     * 分析中检查
+     * @param batchCode
+     * @return
+     */
+    private boolean checkAnalysising(String batchCode){
+        int analysisingCount = analysisResultMapper.selectAlasisingCountByBatchCode(batchCode);
+        return analysisingCount > AnalysisConstants.SERVER_MERCHINE_COUNT;
+    }
+
+    /**
+     * 数据处理
+     * @param analysisDto 前端入参
+     * @param rootNode 根节点json
+     */
+    private void dataProccess(AnalysisDto analysisDto,JsonNode rootNode){
+        //前端入参类
+        Field[] analysisFields = analysisDto.getClass().getDeclaredFields();
+        Arrays.asList(analysisFields).stream().forEach(field -> {
+            field.setAccessible(true);
+            try {
+                if(field.get(analysisDto) != null){
+                    updateNodesByPropertyName(rootNode, field.getName(), field.get(analysisDto).toString());
+                }
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+        });
+    }
+
+    /**
+     * 测试排序去重
+     * @param args
+     * @throws InterruptedException
+     */
+    public static void main(String[] args) throws InterruptedException {
+        List<AnalysisGeneralFileVo> generalFileVos = new ArrayList<>();
+        AnalysisGeneralFileVo a1 = new AnalysisGeneralFileVo();
+        a1.setFileAddr("http://123/412/89.html");
+        a1.setCreateTime(new Date());
+        a1.setBatchCode("123");
+        generalFileVos.add(a1);
+        Thread.sleep(1000);
+        AnalysisGeneralFileVo a2 = new AnalysisGeneralFileVo();
+        a2.setFileAddr("http://123/412/89.html");
+        a2.setCreateTime(new Date());
+        generalFileVos.add(a2);
+        a2.setBatchCode("453");
+        generalFileVos.sort(Comparator.comparing(AnalysisGeneralFileVo::getCreateTime,Comparator.reverseOrder()));
+        //删除地址相同的文件
+        List<AnalysisGeneralFileVo> returnList =  generalFileVos.stream().collect(Collectors.collectingAndThen(
+                                                    Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(AnalysisGeneralFileVo::getFileAddr))),
+                                                    ArrayList :: new));
+        returnList.forEach(System.out::println);
+    }
+
+    /**
+     * 根据属性修改json值
+     * @param node 节点
+     * @param propertyName 属性名称
+     * @param newValue 新值
+     */
+    private static void updateNodesByPropertyName(JsonNode node, String propertyName, String newValue) {
+        if (node.isObject()) {
+            node.fields().forEachRemaining(entry -> {
+                // 匹配到属性名称,进行值的修改
+                if (entry.getKey().equals(propertyName)) {
+                    assignmentByPropertyName(node, propertyName, newValue);
+                }
+                // 递归搜索子节点
+                updateNodesByPropertyName(entry.getValue(), propertyName, newValue);
+            });
+        }
+    }
+
+    /**
+     * 处理特殊属性
+     * @param node
+     * @param propertyName
+     * @param newValue
+     */
+    private static void  assignmentByPropertyName(JsonNode node, String propertyName, String newValue){
+        if(AlgorithmProperties.graphSetsProperties.contains(propertyName)){
+            return ;
+        }
+        if(AlgorithmProperties.configAnalysisProperties.equals(propertyName)){
+            return;
+        }
+        ((ObjectNode) node).put(propertyName, newValue);
+    }
+
+}

+ 48 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/analysiscomment/AnalysisCommentService.java

@@ -0,0 +1,48 @@
+package com.energy.manage.service.service.analysiscomment;
+
+import com.energy.manage.common.reponse.ResultResp;
+import com.energy.manage.service.domain.dto.analysis.AnalysisCommentDescriptionDto;
+import com.energy.manage.service.domain.dto.analysis.AnalysisCommentTypeRelationDto;
+import com.energy.manage.service.domain.dto.analysis.AnalysisResultDto;
+import com.energy.manage.service.domain.vo.analysis.AnalysisCommentTypeRelationVo;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/24 17:11
+ * @desc
+ */
+public interface AnalysisCommentService {
+
+    /**
+     * 富文本类型查询
+     * @param batchCode
+     * @param analysisTypeCode
+     * @return
+     */
+    List<AnalysisCommentTypeRelationVo> analysisCommentTypeList(String batchCode,String analysisTypeCode);
+
+
+    /**
+     * 富文本内容添加
+     * @param typeRelationDto
+     * @return
+     */
+    ResultResp addAnalysisCommentType(AnalysisCommentTypeRelationDto typeRelationDto);
+
+    /**
+     * 删除富文本类型
+     * @param commentTypeCode
+     * @return
+     */
+    ResultResp delAnalysisCommentType(String commentTypeCode);
+
+
+    /**
+     * 富文本编辑
+     * @param commentDescriptionDto
+     * @return
+     */
+    int analysisCommentEdit(AnalysisCommentDescriptionDto commentDescriptionDto);
+}

+ 131 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/analysiscomment/impl/AnalysisCommentServiceImpl.java

@@ -0,0 +1,131 @@
+package com.energy.manage.service.service.analysiscomment.impl;
+
+import com.energy.manage.common.po.analysis.AnalysisCommentDescriptionPo;
+import com.energy.manage.common.reponse.ConstVar;
+import com.energy.manage.common.reponse.ResultResp;
+import com.energy.manage.common.util.BeanTools;
+import com.energy.manage.common.util.UUIDTools;
+import com.energy.manage.service.domain.dto.analysis.AnalysisCommentDescriptionDto;
+import com.energy.manage.service.domain.dto.analysis.AnalysisCommentTypeRelationDto;
+import com.energy.manage.service.domain.dto.analysis.CommentDto;
+import com.energy.manage.service.domain.vo.analysis.AnalysisCommentTypeRelationVo;
+import com.energy.manage.service.mappers.analysis.AnalysisCommentDescriptionMapper;
+import com.energy.manage.service.mappers.analysis.AnalysisCommentTypeRelationMapper;
+import com.energy.manage.service.service.analysiscomment.AnalysisCommentService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+/**
+ * @author chy
+ * @date 2024/5/24 17:12
+ * @desc
+ */
+
+@Service
+public class AnalysisCommentServiceImpl implements AnalysisCommentService {
+
+    @Autowired
+    private AnalysisCommentTypeRelationMapper analysisCommentTypeRelationtMapper;
+
+    @Autowired
+    private AnalysisCommentDescriptionMapper commentDescriptionMapper;
+
+    /**
+     * 富文本类型查询
+     * @param batchCode
+     * @param analysisTypeCode
+     * @return
+     */
+    @Override
+    public List<AnalysisCommentTypeRelationVo> analysisCommentTypeList(String batchCode,String analysisTypeCode) {
+        return analysisCommentTypeRelationtMapper.selectByAnalysisTypeCode(batchCode,analysisTypeCode);
+    }
+
+    /**
+     * 富文本类型添加
+     * @param typeRelationDto
+     * @return
+     */
+    @Override
+    public ResultResp addAnalysisCommentType(AnalysisCommentTypeRelationDto typeRelationDto){
+        String saveTypeName = StringUtils.trim(typeRelationDto.getCommentTypeName());
+        typeRelationDto.setCommentTypeName(saveTypeName);
+        if(duplicateCheckByTypeName(typeRelationDto)){
+            return ResultResp.FAIL(ConstVar.DUPLICATE_TYPE_NAME);
+        }
+        AnalysisCommentTypeRelationDto analysisCommentTypeRelationDto = new AnalysisCommentTypeRelationDto();
+        String typeCode = UUIDTools.getShortUUIDLowCase();
+        analysisCommentTypeRelationDto.setCommentTypeCode(typeCode)
+                                      .setCommentTypeCode(saveTypeName)
+                                      .setCreateBy(typeRelationDto.getCreateBy());
+        return analysisCommentTypeRelationtMapper.insertPoSelective(analysisCommentTypeRelationDto) > 0 ? ResultResp.SUCCESS() : ResultResp.FAIL();
+    }
+
+
+    /**
+     * 富文本类型删除
+     * @param commentTypeCode
+     * @return
+     */
+    @Override
+    public ResultResp delAnalysisCommentType(String commentTypeCode){
+        AnalysisCommentTypeRelationVo analysisCommentTypeRelationVo = analysisCommentTypeRelationtMapper.selectByTypeCode(commentTypeCode);
+        if(analysisCommentTypeRelationVo == null){
+            return ResultResp.SUCCESS();
+        }
+        if(analysisCommentTypeRelationVo.getIsDefined() == 0){
+            return ResultResp.FAIL(ConstVar.NO_DIFINED_TYPE);
+        }
+        return analysisCommentTypeRelationtMapper.deleteByTypeCode(commentTypeCode) > 0 ? ResultResp.SUCCESS() : ResultResp.FAIL();
+    }
+
+    /**
+     * 富文本编辑
+     * @param dto
+     * @return
+     */
+    @Override
+    public int analysisCommentEdit(AnalysisCommentDescriptionDto dto) {
+        AtomicInteger count = new AtomicInteger(0);
+        dto.getCommentList().parallelStream().forEach(item -> count.addAndGet(saveCommentDescription(dto, item)));
+        return count.get();
+    }
+
+
+    /**
+     * 评论类型名称查重
+     * @param typeRelationDto
+     * @return
+     */
+    private boolean duplicateCheckByTypeName(AnalysisCommentTypeRelationDto typeRelationDto){
+        List<AnalysisCommentTypeRelationVo> voList = analysisCommentTypeRelationtMapper
+                                                        .selectByAnalysisTypeCode(typeRelationDto.getBatchCode(), typeRelationDto.getAnalysisTypeCode());
+        voList.parallelStream().filter(vo -> vo.getCommentTypeName().equals(typeRelationDto.getCommentTypeName())).collect(Collectors.toList());
+        return voList.size() > 0;
+    }
+
+    /**
+     * 保存富文本
+     * @param commentDescriptionDto
+     */
+    private int saveCommentDescription(AnalysisCommentDescriptionDto commentDescriptionDto, CommentDto commentDto){
+        AnalysisCommentDescriptionPo commentDescriptionPo = new AnalysisCommentDescriptionPo();
+        //拷贝批次编号 分析类型编号
+        BeanTools.copyProperties(commentDescriptionPo,commentDescriptionDto);
+        //拷贝评论编号 以及内容
+        BeanTools.copyNotNullProperties(commentDescriptionPo,commentDto);
+        int count =  commentDescriptionMapper.selectCountByCommentTypeCode(commentDto.getCommentTypeCode());
+        //空则添加 非空则编辑
+        if(count == 0){
+           return commentDescriptionMapper.insertPoSelective(commentDescriptionPo);
+        }else{
+           return commentDescriptionMapper.updatePoSelective(commentDescriptionPo);
+        }
+    }
+
+}

+ 48 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/analysiserr/AnalysisErrService.java

@@ -0,0 +1,48 @@
+package com.energy.manage.service.service.analysiserr;
+
+import com.energy.manage.common.reponse.ResultResp;
+import com.energy.manage.service.domain.dto.analysis.AnalysisResultDto;
+import com.energy.manage.service.domain.dto.windexceptioncount.WindExceptionCountDto;
+import com.energy.manage.service.domain.vo.windexceptioncount.WindExceptionCountVo;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/23 17:25
+ * @desc
+ */
+public interface AnalysisErrService {
+
+
+    /**
+     * 根据批次号查询异常信息
+     * @param windExceptionCountDto
+     * @return
+     */
+    List<WindExceptionCountVo> analysisErrQuery(WindExceptionCountDto windExceptionCountDto);
+
+    /**
+     * 异常描述添加
+     * @param windExceptionCountDto
+     * @return
+     */
+    ResultResp analysisErrAdd(WindExceptionCountDto windExceptionCountDto);
+
+
+    /**
+     * 异常描述编辑
+     * @param windExceptionCountDto
+     * @return
+     */
+    ResultResp analysisErrEdit(WindExceptionCountDto windExceptionCountDto);
+
+
+    /**
+     * 删除异常描述
+     * @param windExceptionCountDto
+     * @return
+     */
+    ResultResp analysisErrDel(WindExceptionCountDto windExceptionCountDto);
+
+}

+ 78 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/analysiserr/impl/AnalysisErrServiceImpl.java

@@ -0,0 +1,78 @@
+package com.energy.manage.service.service.analysiserr.impl;
+
+import com.energy.manage.common.reponse.ConstVar;
+import com.energy.manage.common.reponse.ResultResp;
+import com.energy.manage.service.domain.dto.analysis.AnalysisResultDto;
+import com.energy.manage.service.domain.dto.windexceptioncount.WindExceptionCountDto;
+import com.energy.manage.service.domain.vo.windexceptioncount.WindExceptionCountVo;
+import com.energy.manage.service.mappers.windexceptioncount.WindExceptionCountMapper;
+import com.energy.manage.service.service.analysiserr.AnalysisErrService;
+import com.github.pagehelper.PageHelper;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 分析异常数统计
+ * @author chy
+ * @date 2024/5/23 17:25
+ * @desc
+ */
+@Service
+public class AnalysisErrServiceImpl implements AnalysisErrService {
+
+    @Autowired
+    private WindExceptionCountMapper windExceptionCountMapper;
+
+
+    /**
+     * 分析异常数查询
+     * @param windExceptionCountDto
+     * @return
+     */
+    @Override
+    public List<WindExceptionCountVo> analysisErrQuery(WindExceptionCountDto windExceptionCountDto){
+        PageHelper.startPage(windExceptionCountDto.getPageNum(),windExceptionCountDto.getPageSize());
+        return windExceptionCountMapper.selectByCondition(windExceptionCountDto);
+    }
+
+    /**
+     * 异常描述添加
+     * @param windExceptionCountDto
+     * @return
+     */
+    @Override
+    public ResultResp analysisErrAdd(WindExceptionCountDto windExceptionCountDto) {
+        //根据批次号、分析类型、机组编号 查询异常描述是否已存在
+        List<WindExceptionCountVo> voList = windExceptionCountMapper.selectByCondition(windExceptionCountDto);
+        if(CollectionUtils.isNotEmpty(voList)){
+            return ResultResp.FAIL(ConstVar.SAME_WIND_ENGINE_ERR_INFO);
+        }
+        int count = windExceptionCountMapper.insertPoSelective(windExceptionCountDto);
+        return  count > 0 ? ResultResp.SUCCESS() : ResultResp.FAIL();
+    }
+
+    /**
+     * 异常描述编辑
+     * @param analysisResultDto
+     * @return
+     */
+    @Override
+    public ResultResp analysisErrEdit(WindExceptionCountDto analysisResultDto) {
+        return ResultResp.SUCCESS(windExceptionCountMapper.updatePoSelecttive(analysisResultDto));
+    }
+
+    /**
+     * 删除异常描述
+     *
+     * @param windExceptionCountDto
+     * @return
+     */
+    @Override
+    public ResultResp analysisErrDel(WindExceptionCountDto windExceptionCountDto) {
+        windExceptionCountDto.setIsDelete(1);
+        return ResultResp.SUCCESS(windExceptionCountMapper.updatePoSelecttive(windExceptionCountDto));
+    }
+}

+ 9 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/windenginegroup/WindEngineGroupService.java

@@ -11,6 +11,8 @@ import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupPageVo
 import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupVo;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.List;
+
 /**
  * 机型管理
  */
@@ -88,5 +90,12 @@ public interface WindEngineGroupService {
      */
     WindEngineGroupVo getWindEngineGroup(WindEngineGroupCodeDto windEngineGroupCodeDto);
 
+    /**
+     * 获取登录用户能看到的风机
+     * @param roleId
+     * @return
+     */
+    List<WindEngineGroupVo> getWindEngineGroupByRoleId(Integer roleId);
+
 
 }

+ 8 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/windenginegroup/impl/WindEngineGroupServiceImpl.java

@@ -197,4 +197,12 @@ public class WindEngineGroupServiceImpl extends BaseServiceImpl<WindEngineGroupP
         BeanUtil.copyProperties(windEngineGroupPO, windEngineGroupVo);
         return windEngineGroupVo;
     }
+
+
+    @Override
+    public List<WindEngineGroupVo> getWindEngineGroupByRoleId(Integer roleId){
+        return windEngineGroupMapper.selectWindEngineGroupByRoleId(roleId);
+    }
+
+
 }

+ 34 - 0
energy-manage-service/src/main/java/com/energy/manage/service/task/AutoAnalysisTask.java

@@ -0,0 +1,34 @@
+package com.energy.manage.service.task;
+
+import com.energy.manage.service.domain.dto.analysis.AnalysisAlgorithmDto;
+import com.energy.manage.service.domain.dto.analysis.AnalysisDto;
+import com.energy.manage.service.service.analysis.AnalysisService;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 自动分析定时任务
+ * @author chy
+ * @date 2024/6/2 21:35
+ * @desc
+ */
+@Slf4j
+@Component
+public class AutoAnalysisTask {
+
+    @Autowired
+    private AnalysisService analysisService;
+
+
+    /**
+     * 自动分析
+     */
+    @XxlJob(value = "autoAnalysis")
+    public void autoAnalysis() {
+        log.info("触发自动分析定时任务开始");
+        analysisService.analysis(new AnalysisDto());
+        log.info("触发自动分析定时任务结束");
+    }
+}

+ 107 - 0
energy-manage-service/src/main/java/com/energy/manage/service/test/TestClass.java

@@ -0,0 +1,107 @@
+package com.energy.manage.service.test;
+
+import com.energy.manage.service.domain.dto.analysis.AnalysisAlgorithmDto;
+import com.energy.manage.service.domain.dto.analysis.AnalysisDto;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2024/5/31 10:26
+ * @desc
+ */
+public class TestClass {
+
+    public static void main(String[] args) throws IllegalAccessException, NoSuchFieldException {
+        AnalysisAlgorithmDto algorithm = new AnalysisAlgorithmDto();
+        AnalysisDto analysis = new AnalysisDto();
+        analysis.setScada("all");
+        analysis.setBeginTime("2023-01-01 12:22:30");
+        //算法入参类
+        Field[] analysisAlgorithmFields = algorithm.getClass().getDeclaredFields();
+        //前端入参类
+        Field[] analysisFields = analysis.getClass().getDeclaredFields();
+        List<Field> fields = new ArrayList<>();
+        for(Field field : analysisFields){
+            field.setAccessible(true);
+            if(field.get(analysis) != null){
+                fields.add(field);
+            }
+        }
+        //前端入参属性数组
+        for(Field analysisField : fields){
+            setValue(analysis,algorithm,analysisField,analysisAlgorithmFields);
+        }
+        System.out.println(algorithm.getDataContract().getDataFilter().getBeginTime());
+    }
+
+    /**
+     * 递归处理引用类型
+     * @param analysis
+     * @param algorithm
+     * @param analysisField
+     * @param algorithmFields
+     * @throws IllegalAccessException
+     */
+    private static void setValue(AnalysisDto analysis,AnalysisAlgorithmDto algorithm,Field analysisField,Field[] algorithmFields) throws IllegalAccessException, NoSuchFieldException {
+        analysisField.setAccessible(true);
+        String fieldName = analysisField.getName();
+        for(Field algorithmField : algorithmFields){
+            if(!fieldName.equals(algorithmField.getName()) && !isBaseType(algorithmField.getType())){
+                algorithmField.setAccessible(true);
+                Object algorithmObj = algorithmField.get(algorithm);
+                algorithmObj = algorithmObj == null ? algorithmField.getClass().getInterfaces() : algorithmObj;
+                inspectReferenceType(analysis,algorithmField,fieldName,analysisField,algorithmObj);
+            }
+        }
+    }
+
+    /**
+     * 递归检查引用类型属性
+     * @param algorithmField
+     * @param fieldName
+     */
+    private static void inspectReferenceType(AnalysisDto analysis,Field algorithmField,String fieldName,Field analysisField,Object algorithmObj) throws IllegalAccessException, NoSuchFieldException {
+        Class<?> algorithmClazz = algorithmField.getType();
+        Field[] fields = algorithmClazz.getDeclaredFields();
+        for (Field field : fields) {
+            field.setAccessible(true);
+            Class<?> fieldType = field.getType();
+            String algorithmFieldName = field.getName();
+            if(fieldName.equals(field.getName())){
+                Object value = analysisField.get(analysis);
+//                String fieldTypeName = field.getDeclaringClass().getName();
+
+//                setFieldValue(algorithmObj,fieldTypeName,value);
+                field.set(field.get(algorithmObj),value);
+            }
+            if (!isBaseType(fieldType)) {
+                algorithmObj = algorithmObj == null ? fieldType.getInterfaces() : algorithmObj;
+                // 递归检查嵌套引用类型的属性
+                 inspectReferenceType(analysis,field,fieldName,analysisField,algorithmObj);
+            }
+        }
+    }
+
+
+    public static void setFieldValue(Object obj, String fieldPath, Object value) throws NoSuchFieldException, IllegalAccessException {
+        String[] fields = fieldPath.split("\\.");
+        for (int i = 0; i < fields.length - 1; i++) {
+            Field field = obj.getClass().getDeclaredField(fields[i]);
+            field.setAccessible(true);
+            obj = field.get(obj); // 移动到下一层引用
+        }
+        // 最后一个字段,设置值
+        Field lastField = obj.getClass().getDeclaredField(fields[fields.length - 1]);
+        lastField.setAccessible(true);
+        lastField.set(obj, value);
+    }
+
+    private static boolean isBaseType(Class<?> clazz) {
+        return clazz.isPrimitive() || clazz == String.class || clazz == Integer.class || clazz == List.class;
+    }
+
+
+}

+ 203 - 0
energy-manage-service/src/main/java/com/energy/manage/service/test/TestJson.java

@@ -0,0 +1,203 @@
+package com.energy.manage.service.test;
+
+import com.energy.manage.service.domain.dto.analysis.AnalysisDto;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author chy
+ * @date 2024/6/2 19:06
+ * @desc
+ */
+public class TestJson {
+
+
+    public static void main(String[] args) throws JsonProcessingException {
+        String jsonString = "{\n" +
+                "        \"dataContractType\": {\n" +
+                "            \"type\": \"analysisExecuteOrder\",\n" +
+                "            \"version\": \"1.2.0\"\n" +
+                "        },\n" +
+                "        \"dataContract\": {\n" +
+                "            \"autoOrManual\":\"automatic\",\n" +
+                "            \"dataSource\": {\n" +
+                "                \"scada\": \"second\"\n" +
+                "            },\n" +
+                "            \"dataFilter\": {\n" +
+                "                \"powerFarmID\": \"010-00001\",\n" +
+                "                \"turbines\": [\n" +
+                "                    \"010-00001-0001\",\n" +
+                "                    \"010-00001-0002\"\n" +
+                "                ],\n" +
+                "                \"dataBatchNum\": \"B2024042211-0\",\n" +
+                "                \"beginTime\": \"2023-01-01 00:00:00\",\n" +
+                "                \"endTime\": \"2023-12-31 23:59:59\",\n" +
+                "                \"excludingMonths\": [\n" +
+                "                    \"2023-12\",\n" +
+                "                    \"2023-09\"\n" +
+                "                ],\n" +
+                "                \"customFilter\": {\n" +
+                "                    \"valueWindSpeed\": {\n" +
+                "                        \"min\": 3.0,\n" +
+                "                        \"max\": 25.0\n" +
+                "                    },\n" +
+                "                    \"valuePitchAngle\": {\n" +
+                "                        \"min\": 2,\n" +
+                "                        \"max\": null\n" +
+                "                    },\n" +
+                "                    \"valueActivePower\": {\n" +
+                "                        \"min\": 10,\n" +
+                "                        \"max\": 2500\n" +
+                "                    },\n" +
+                "                    \"valueGeneratorSpeed\": {\n" +
+                "                        \"min\": 10,\n" +
+                "                        \"max\": 2500\n" +
+                "                    }\n" +
+                "                }\n" +
+                "            },\n" +
+                "            \"configAnalysis\": [\n" +
+                "                {\n" +
+                "                    \"package\": \"algorithm.powerCurveAnalyst\",\n" +
+                "                    \"className\": \"PowerCurveAnalyst\",\n" +
+                "                    \"methodName\": \"executeAnalysis\"\n" +
+                "                },\n" +
+                "                {\n" +
+                "                    \"package\": \"algorithm.powerScatter2DAnalyst\",\n" +
+                "                    \"className\": \"PowerScatter2DAnayst\",\n" +
+                "                    \"methodName\": \"executeAnalysis\"\n" +
+                "                },\n" +
+                "                {\n" +
+                "                    \"package\": \"algorithm.powerScatterAnalyst\",\n" +
+                "                    \"className\": \"PowerScatterAnalyst\",\n" +
+                "                    \"methodName\": \"executeAnalysis\"\n" +
+                "                },\n" +
+                "                {\n" +
+                "                    \"package\": \"algorithm.windSpeedFrequencyAnalyst\",\n" +
+                "                    \"className\": \"WindSpeedFrequencyAnalyst\",\n" +
+                "                    \"methodName\": \"executeAnalysis\"\n" +
+                "                },\n" +
+                "                {\n" +
+                "                    \"package\": \"algorithm.generatorSpeedPowerAnalyst\",\n" +
+                "                    \"className\": \"GeneratorSpeedPowerAnalyst\",\n" +
+                "                    \"methodName\": \"executeAnalysis\"\n" +
+                "                }\n" +
+                "            ],\n" +
+                "            \"graphSets\": {\n" +
+                "                \"generatorSpeed\": {\n" +
+                "                    \"step\": 200,\n" +
+                "                    \"min\": 1000,\n" +
+                "                    \"max\": 2000\n" +
+                "                },\n" +
+                "                \"generatorTorque\": {\n" +
+                "                    \"step\": 2000,\n" +
+                "                    \"min\": 0,\n" +
+                "                    \"max\": 12000\n" +
+                "                },\n" +
+                "                \"cp\": {\n" +
+                "                    \"step\": 0.5,\n" +
+                "                    \"min\": 0,\n" +
+                "                    \"max\": 2\n" +
+                "                },\n" +
+                "                \"tsr\": {\n" +
+                "                    \"step\": 5,\n" +
+                "                    \"min\": 0,\n" +
+                "                    \"max\": 30\n" +
+                "                },\n" +
+                "                \"pitchAngle\": {\n" +
+                "                    \"step\": 1,\n" +
+                "                    \"min\": -1,\n" +
+                "                    \"max\": 20\n" +
+                "                },\n" +
+                "                \"activePower\": {\n" +
+                "                    \"step\": 250,\n" +
+                "                    \"min\": 0,\n" +
+                "                    \"max\": 2000\n" +
+                "                }\n" +
+                "            }\n" +
+                "        }\n" +
+                "    }";
+
+        ObjectMapper mapper = new ObjectMapper();
+        JsonNode rootNode = mapper.readTree(jsonString);
+//        AnalysisDto dto = new AnalysisDto();
+//        dto.setBeginTime("1234-12-12 00:00:12");
+//        updateNodesByPropertyName(rootNode, "beginTime", dto);
+//        String propertyNameToFind = "beginTime";
+//        List<JsonNode> matchingNodes = findNodesByPropertyName(rootNode, propertyNameToFind);
+//
+//        for (JsonNode node : matchingNodes) {
+//            System.out.println("Found matching node: " + mapper.writerWithDefaultPrettyPrinter().writeValueAsString(node));
+//        }
+
+        AnalysisDto dto = new AnalysisDto();
+        dto.setBeginTime("1234-12-12 00:00:12");
+        dto.setExcludingMonths(Arrays.asList("1","2","3"));
+        setValue(dto,rootNode);
+        System.out.println();
+        for (JsonNode node : rootNode) {
+            System.out.println("Found matching node: " + mapper.writerWithDefaultPrettyPrinter().writeValueAsString(node));
+        }
+
+    }
+
+    public static List<JsonNode> findNodesByPropertyName(JsonNode node, String propertyName) {
+        List<JsonNode> result = new ArrayList<>();
+        findNodesByPropertyNameRecursive(node, propertyName, result);
+        return result;
+    }
+
+    private static void findNodesByPropertyNameRecursive(JsonNode node, String propertyName, List<JsonNode> result) {
+        if (node.isObject()) {
+            node.fields().forEachRemaining(entry -> {
+                if (entry.getKey().equals(propertyName)) {
+                    // 匹配到属性名称,添加节点到结果列表
+                    result.add(entry.getValue());
+                }
+                // 递归搜索子节点
+                findNodesByPropertyNameRecursive(entry.getValue(), propertyName, result);
+            });
+        }
+    }
+
+    private static void updateNodesByPropertyName(JsonNode node, String propertyName,String value) {
+        if (node.isObject()) {
+            node.fields().forEachRemaining(entry -> {
+                // 匹配到属性名称,进行值的修改
+                if (entry.getKey().equals(propertyName)) {
+                    ((ObjectNode) node).put(propertyName, value);
+                }
+                // 递归搜索子节点
+                updateNodesByPropertyName(entry.getValue(), propertyName, value);
+            });
+        }
+    }
+
+    /**
+     * 获取前端参数
+     * @param analysisDto
+     * @return
+     */
+    private static void setValue(AnalysisDto analysisDto,JsonNode jsonNode) {
+        //前端入参类
+        Field[] analysisFields = analysisDto.getClass().getDeclaredFields();
+        Arrays.asList(analysisFields).stream().forEach(field -> {
+            field.setAccessible(true);
+            try {
+                if(field.get(analysisDto) != null){
+                    updateNodesByPropertyName(jsonNode, field.getName(), field.get(analysisDto).toString());
+                }
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+        });
+    }
+}

+ 15 - 0
energy-manage-service/src/main/java/com/energy/manage/service/util/TreeUtil.java

@@ -100,6 +100,21 @@ public class TreeUtil {
   }
 
   /**
+   * 获取树形结构
+   * @param mapList
+   * @param parentKeyName 父类key名称
+   * @return
+   */
+  public static List<Map<String, Object>> getJava8ResultTree(List<Map<String, Object>> mapList,String parentKeyName) {
+    if (org.springframework.util.CollectionUtils.isEmpty(mapList)) {
+      return Lists.newArrayList();
+    }
+    //filter过滤出所有的一级节点
+    return mapList.stream().filter(m ->m.get(parentKeyName).toString().equals("0"))
+            .peek(m -> m.put("children", sortJava8Map(getJava8Children(m, mapList)))).collect(Collectors.toList());
+  }
+
+  /**
    * 根据orderNo排序树形结构的每一个层级
    *
    * @param list

+ 10 - 1
energy-manage-service/src/main/resources/bootstrap.properties

@@ -40,4 +40,13 @@ spring.cloud.nacos.config.group = @profiles.active@
 logging.level.com.energy.manage.service.mappers= debug
 
 # 接口文档
-knife4j.enable=true
+knife4j.enable=true
+#算法调用默认值
+analysis.url= http://192.168.50.234:16200/energy-manage-service/analysis/analysisData
+#分析算法入参
+analysis.json= {}
+#需要特殊处理的图像设置属性
+graphSets.properties=generatorSpeed,generatorTorque,cp,tsr,pitchAngle,activePower
+#需要特设处理分析类型属性
+analysis.properties=configAnalysis
+

+ 93 - 0
energy-manage-service/src/main/resources/mybatis/analysis/AnalysisCommentDescriptionMapper.xml

@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.energy.manage.service.mappers.analysis.AnalysisCommentDescriptionMapper">
+    <resultMap id="BaseResultMap" type="com.energy.manage.common.po.analysis.AnalysisCommentDescriptionPo">
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="batch_code" property="batchCode" jdbcType="VARCHAR"/>
+        <result column="analysis_type_code" property="analysisTypeCode" jdbcType="VARCHAR"/>
+        <result column="comment_type_code" property="commentTypeCode" jdbcType="VARCHAR"/>
+        <result column="comment" property="comment" jdbcType="VARCHAR"/>
+        <result column="create_by" property="createBy" jdbcType="INTEGER"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="update_by" property="updateBy" jdbcType="INTEGER"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <select id="selectCountByCommentTypeCode" parameterType="java.lang.String" resultType="int">
+        select count(*)
+        from analysis_comment_description
+        where comment_type_code = #{commentTypeCode,jdbcType=VARCHAR}
+    </select>
+
+    <select id="selecByBatchCodeAndAnalysisTypeCode" parameterType="java.lang.String" resultType="com.energy.manage.service.domain.vo.analysis.AnalysisCommentDescriptionVo">
+        select acd.batch_code,
+               acd.analysis_type_code,
+               acd.comment_type_code,
+               actr.comment_type_name,
+               acd.comment
+        from analysis_comment_description as acd
+        left join analysis_comment_type_relation as actr
+        on acd.comment_type_code = actr.comment_type_code
+        where acd.batch_code = #{batchCode,jdbcType=VARCHAR}
+            <if test="analysisTypeCode != null and analysisTypeCode != ''">
+                and acd.analysis_type_code = #{analysisTypeCode,jdbcType=VARCHAR}
+            </if>
+    </select>
+
+    <insert id="insertPoSelective" parameterType="com.energy.manage.common.po.analysis.AnalysisCommentDescriptionPo">
+        insert into analysis_comment_description
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="batchCode != null">
+                batch_code,
+            </if>
+            <if test="analysisTypeCode != null">
+                analysis_type_code,
+            </if>
+            <if test="commentTypeCode != null">
+                comment_type_code,
+            </if>
+            <if test="comment != null">
+                comment,
+            </if>
+            <if test="createBy != null">
+                create_by,
+            </if>
+            <if test="updateBy != null">
+                update_by
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="batchCode != null">
+                #{batchCode,jdbcType=VARCHAR},
+            </if>
+            <if test="analysisTypeCode != null">
+                #{analysisTypeCode,jdbcType=VARCHAR},
+            </if>
+            <if test="commentTypeCode != null">
+                #{commentTypeCode,jdbcType=VARCHAR},
+            </if>
+            <if test="comment !=null">
+                #{comment,jdbcType=VARCHAR},
+            </if>
+            <if test="createBy != null">
+                #{createBy,jdbcType=INTEGER},
+            </if>
+            <if test="updateBy != null">
+                #{updateBy,jdbcType=INTEGER}
+            </if>
+        </trim>
+    </insert>
+    <update id="updatePoSelective" parameterType="com.energy.manage.common.po.analysis.AnalysisCommentDescriptionPo">
+        update analysis_comment_description
+        <set>
+            <if test="comment != null">
+                comment = #{comment,jdbcType=VARCHAR},
+            </if>
+            <if test="updateBy != null">
+                update_by = #{updateBy,jdbcType=INTEGER}
+            </if>
+        </set>
+        where comment_type_code = #{commentTypeCode,jdbcType=VARCHAR}
+    </update>
+</mapper>

+ 84 - 0
energy-manage-service/src/main/resources/mybatis/analysis/AnalysisCommentTypeRelationMapper.xml

@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.energy.manage.service.mappers.analysis.AnalysisCommentTypeRelationMapper">
+    <resultMap id="BaseResultMap" type="com.energy.manage.common.po.analysis.AnalysisCommentTypeRelationPo">
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="batch_code" property="batchCode" jdbcType="VARCHAR"/>
+        <result column="analysis_type_code" property="analysisTypeCode" jdbcType="VARCHAR"/>
+        <result column="comment_type_code" property="commentTypeCode" jdbcType="VARCHAR"/>
+        <result column="comment_type_name" property="commentTypeName" jdbcType="VARCHAR"/>
+        <result column="is_defined" property="isDefined" jdbcType="INTEGER"/>
+        <result column="is_delete" property="isDelete" jdbcType="INTEGER"/>
+        <result column="create_by" property="createBy" jdbcType="INTEGER"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <select id="selectByAnalysisTypeCode" parameterType="java.lang.String" resultType="com.energy.manage.service.domain.vo.analysis.AnalysisCommentTypeRelationVo">
+        select
+            comment_type_code,
+            comment_type_name,
+            is_defined
+        from analysis_comment_type_relation
+        where is_delete = 0
+          and ((batch_code = #{batchCode,jdbcType=VARCHAR}
+                and analysis_type_code = #{analysisTypeCode,jdbcType=VARCHAR})
+                or is_defined = 0
+              )
+    </select>
+
+    <select id="selectByTypeCode" parameterType="java.lang.String" resultType="com.energy.manage.service.domain.vo.analysis.AnalysisCommentTypeRelationVo">
+        select
+            comment_type_code,
+            comment_type_name,
+            is_defined
+        from analysis_comment_type_relation
+        where is_delete = 0
+        and is_defined = 1
+        and comment_type_code = #{commentTypeCode,jdbcType=VARCHAR}
+    </select>
+
+    <insert id="insertPoSelective" parameterType="com.energy.manage.service.domain.dto.analysis.AnalysisCommentTypeRelationDto">
+        insert into analysis_comment_type_relation
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="batchCode != null and batchCode != ''">
+                batch_code,
+            </if>
+            <if test="analysisTypeCode != null and batchCode != ''">
+                analysis_type_code,
+            </if>
+            <if test="commentTypeCode != null and batchCode != ''and batchCode != ''">
+                comment_type_code,
+            </if>
+            <if test="commentTypeName != null and batchCode != ''">
+                comment_type_name,
+            </if>
+            <if test="createBy != null">
+                create_by
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="batchCode != null and batchCode != ''">
+                #{batchCode,jdbcType=VARCHAR},
+            </if>
+            <if test="analysisTypeCode != null and batchCode != ''">
+                #{analysisTypeCode,jdbcType=VARCHAR},
+            </if>
+            <if test="commentTypeCode != null and batchCode != ''">
+                #{commentTypeCode,jdbcType=VARCHAR},
+            </if>
+            <if test="commentTypeName != null and batchCode != ''">
+                #{commentTypeName,jdbcType}
+            </if>
+           <if test="createBy != null">
+                #{createBy,jdbcType=INTEGER}
+            </if>
+        </trim>
+    </insert>
+
+    <update id="deleteByTypeCode" parameterType="java.lang.String">
+        update analysis_comment_type_relation
+        set is_delete = 1
+        where comment_type_code = #{commentTypeCode,jdbcType=VARCHAR}
+    </update>
+</mapper>

+ 31 - 0
energy-manage-service/src/main/resources/mybatis/analysis/AnalysisDiagramRelationMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.energy.manage.service.mappers.analysis.AnalysisDiagramRelationMapper">
+    <resultMap id="BaseResultMap" type="com.energy.manage.common.po.analysis.AnalysisDiagramRelationPo">
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="batch_code" property="batchCode" jdbcType="VARCHAR"/>
+        <result column="field_engine_code" property="fieldEngineCode" jdbcType="VARCHAR"/>
+        <result column="analysis_type_code" property="analysisTypeCode" jdbcType="VARCHAR"/>
+        <result column="file_addr" property="fileAddr" jdbcType="VARCHAR"/>
+        <result column="auto_analysis" property="autoAnalysis" jdbcType="INTEGER"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <select id="selectByCondition" parameterType="java.lang.String" resultType="com.energy.manage.service.domain.vo.analysis.AnalysisDiagramRelationVo">
+        select
+            batch_code,
+            field_engine_code,
+            analysis_type_code,
+            file_addr,
+            create_time
+        from analysis_diagram_relation
+        where batch_code = #{batchCode,jdbcType=VARCHAR}
+        <if test="analysisTypeCode != null and analysisTypeCode != ''">
+              and analysis_type_code = #{analysisTypeCode,jdbcType=VARCHAR}
+        </if>
+        <if test="fieldEngineCode != null and fieldEngineCode != ''">
+            and field_engine_code = #{fieldEngineCode,jdbcType=VARCHAR}
+        </if>
+    </select>
+</mapper>

+ 26 - 0
energy-manage-service/src/main/resources/mybatis/analysis/AnalysisGeneralFileMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.energy.manage.service.mappers.analysis.AnalysisGeneralFileMapper">
+    <resultMap id="BaseResultMap" type="com.energy.manage.common.po.analysis.AnalysisGeneralFilePo">
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="batch_code" property="batchCode" jdbcType="VARCHAR"/>
+        <result column="analysis_type_code" property="analysisTypeCode" jdbcType="VARCHAR"/>
+        <result column="file_addr" property="fileAddr" jdbcType="VARCHAR"/>
+        <result column="auto_analysis" property="createBy" jdbcType="INTEGER"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <select id="selectByCondition" parameterType="java.lang.String" resultType="com.energy.manage.service.domain.vo.analysis.AnalysisGeneralFileVo">
+        select
+            batch_code,
+            analysis_type_code,
+            file_addr,
+            create_time
+        from analysis_general_file
+        where batch_code = #{batchCode,jdbcType=VARCHAR}
+        <if test="analysisTypeCode!=null and analysisTypeCode!=''">
+            and analysis_type_code = #{analysisTypeCode,jdbcType=VARCHAR}
+        </if>
+    </select>
+</mapper>

+ 40 - 0
energy-manage-service/src/main/resources/mybatis/analysis/AnalysisResultMapper.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.energy.manage.service.mappers.analysis.AnalysisResultMapper">
+    <resultMap id="BaseResultMap" type="com.energy.manage.common.po.analysis.AnalysisResultPo">
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="batch_code" property="batchCode" jdbcType="VARCHAR"/>
+        <result column="analysis_state" property="analysisState" jdbcType="INTEGER"/>
+        <result column="err_state" property="errState" jdbcType="INTEGER"/>
+        <result column="err_code" property="errCode" jdbcType="VARCHAR"/>
+        <result column="err_info" property="errInfo" jdbcType="VARCHAR"/>
+        <result column="create_by" property="createBy" jdbcType="INTEGER"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="update_by" property="updateBy" jdbcType="INTEGER"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <select id="selectByCondition" parameterType="com.energy.manage.service.domain.dto.analysis.AnalysisResultDto" resultType="com.energy.manage.service.domain.vo.analysis.AnalysisResultVo">
+        select
+            batch.field_name,
+            result.batch_code,
+            result.analysis_state,
+            result.err_state,
+            result.err_info,
+            result.create_time
+        from analysis_result result
+        left join wind_field_batch batch
+        on result.batch_code = batch.batch_code
+        where batch.role_id = #{roleId,jdbcType=INTEGER}
+        <if test="batchName != null and batchName = ''">
+            and batch.batch_name like concat('%', #{batchName,jdbcType=VARCHAR}, '%')
+        </if>
+    </select>
+    <select id="selectAlasisingCountByBatchCode" parameterType="java.lang.String" resultType="int">
+        select count(*)
+        from analysis_result
+        where analysis_state = 0
+        and batch_code = #{batchCode,jdbcType=VARCHAR}
+    </select>
+</mapper>

+ 31 - 0
energy-manage-service/src/main/resources/mybatis/analysis/AnalysisTypeMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.energy.manage.service.mappers.analysis.AnalysisTypeMapper">
+    <resultMap id="BaseResultMap" type="com.energy.manage.common.po.analysis.AnalysisTypePo">
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="parent_id" property="parentId" jdbcType="INTEGER"/>
+        <result column="type_code" property="typeCode" jdbcType="VARCHAR"/>
+        <result column="type_name" property="typeName" jdbcType="VARCHAR"/>
+        <result column="create_by" property="createBy" jdbcType="INTEGER"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <select id="selectAllVo" resultType="com.energy.manage.service.domain.vo.analysis.AnalysisTypeVo">
+        select parent_id,
+               type_code,
+               type_name
+        from analysis_type
+    </select>
+
+    <select id="selectByTypeCode" parameterType="java.lang.String" resultType="com.energy.manage.service.domain.vo.analysis.AnalysisTypeVo">
+        select parent_id,
+               type_code,
+               type_name
+        from analysis_type
+        where 1 = 1
+        <if test="type_code != null and type_code != ''">
+            and type_code = #{typeCode,jdbcType=VARCHAR}
+        </if>
+    </select>
+</mapper>

+ 1 - 0
energy-manage-service/src/main/resources/mybatis/datatransferhistory/DataTransferHistoryMapper.xml

@@ -61,5 +61,6 @@
             <if test="optionBy != null">
                 #{optionBy,jdbcType=VARCHAR}
             </if>
+        </trim>
     </insert>
 </mapper>

+ 22 - 0
energy-manage-service/src/main/resources/mybatis/windenginegroup/WindEngineGroupMapper.xml

@@ -36,5 +36,27 @@
         </if>
     </select>
 
+    <select id="selectWindEngineGroupByRoleId" parameterType="java.lang.Integer" resultType="com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupVo">
+        select
+            engine.field_code as fieldCode,
+            engine.field_name as fieldName,
+            engine.engine_code AS engineCode,
+            engine.engine_name as engineName
+        from wind_engine_group engine
+        left join sys_organization_auth auth
+        on engine.field_code = auth.code_number
+        where auth.role_id = #{roleId}
+    </select>
+
+    <select id="selectWindEngineGroupByBatchCode" parameterType="java.lang.String" resultType="com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupVo">
+        select
+            engine.engine_code AS engineCode,
+            engine.engine_name as engineName
+        from wind_engine_group engine
+        left join wind_field_batch batch
+        on engine.field_code = batch.field_code
+        where batch.batch_code = #{batchCode}
+    </select>
+
 
 </mapper>

+ 114 - 0
energy-manage-service/src/main/resources/mybatis/windexceptioncount/WindExceptionCountMapper.xml

@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.energy.manage.service.mappers.windexceptioncount.WindExceptionCountMapper">
+    <resultMap id="resultMap" type="com.energy.manage.common.po.windexceptioncount.WindExceptionCountPo">
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="batch_code" property="batchCode" jdbcType="VARCHAR"/>
+        <result column="engin_code" property="enginCode" jdbcType="VARCHAR"/>
+        <result column="analysis_type_code" property="analysisTypeCode" jdbcType="VARCHAR"/>
+        <result column="err_count" property="errCount" jdbcType="INTEGER"/>
+        <result column="handle_err_count" property="handleErrCount" jdbcType="INTEGER"/>
+        <result column="create_by" property="createBy" jdbcType="INTEGER"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="update_by" property="updateBy" jdbcType="INTEGER"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <select id="selectByCondition" parameterType="com.energy.manage.service.domain.dto.windexceptioncount.WindExceptionCountDto" resultType="com.energy.manage.service.domain.vo.windexceptioncount.WindExceptionCountVo">
+        SELECT
+            id,
+            batch_code,
+            engin_code,
+            analysis_type_code,
+            err_count,
+            handle_err_count,
+            create_by,
+            create_time,
+            update_by,
+            update_time
+        FROM
+            wind_exception_count
+        WHERE
+            is_delete = 0
+        and batch_code = #{batchCode}
+
+
+        <if test="enginCode != null and enginCode != ''">
+            AND engin_code = #{enginCode}
+        </if>
+        <if test="analysisTypeCode != null and analysisTypeCode != ''">
+            AND analysis_type_code = #{analysisTypeCode}
+        </if>
+    </select>
+
+    <insert id="insertPoSelective" parameterType="com.energy.manage.service.domain.dto.windexceptioncount.WindExceptionCountDto">
+        insert into wind_exception_count
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="batchCode != null">
+                batch_code,
+            </if>
+            <if test="enginCode != null">
+                engin_code,
+            </if>
+            <if test="analysisTypeCode != null">
+                analysis_type_code,
+            </if>
+            <if test="errCount != null">
+                err_count,
+            </if>
+            <if test="handleErrCount!= null">
+                handle_err_count,
+            </if>
+            <if test="createBy != null">
+                create_by,
+            </if>
+            <if test="updateBy != null">
+                update_by
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="batchCode != null">
+                #{batchCode,jdbcType=VARCHAR},
+            </if>
+            <if test="enginCode != null">
+                #{enginCode,jdbcType=VARCHAR},
+            </if>
+            <if test="analysisTypeCode != null">
+                #{analysisTypeCode,jdbcType=VARCHAR},
+            </if>
+            <if test="errCount != null">
+                #{errCount,jdbcType=INTEGER},
+            </if>
+            <if test="handleErrCount != null">
+                #{handleErrCount,jdbcType=INTEGER},
+            </if>
+            <if test="createBy != null">
+                #{createBy,jdbcType=INTEGER},
+            </if>
+            <if test="updateBy != null">
+                #{updateBy,jdbcType=INTEGER}
+            </if>
+        </trim>
+    </insert>
+
+    <update id="updatePoSelecttive" parameterType="com.energy.manage.service.domain.dto.windexceptioncount.WindExceptionCountDto">
+        update wind_exception_count
+        <set>
+            <if test="errCount != null">
+                err_count = #{errCount,jdbcType=INTEGER},
+            </if>
+            <if test="handleErrCount != null">
+                handle_err_count = #{handleErrCount,jdbcType=INTEGER},
+            </if>
+            <if test="isDelete != null">
+                is_delete = #{isDelete,jdbcType=INTEGER},
+            </if>
+            <if test="updateBy != null">
+                update_by = #{updateBy,jdbcType=INTEGER}
+            </if>
+        </set>
+        where id = #{id,jdbcType=BIGINT}
+    </update>
+
+</mapper>

+ 1 - 1
pom.xml

@@ -350,4 +350,4 @@
         </profile>
     </profiles>
 
-</project>
+</project>