Explorar el Código

Merge branch 'master' into energy-manage-chy-compose

# Conflicts:
#	pom.xml
chenhongyan1989 hace 5 meses
padre
commit
f099047ba2
Se han modificado 66 ficheros con 1595 adiciones y 249 borrados
  1. 0 25
      db/energy_2024-07-16.sql
  2. 34 0
      energy-manage-common/src/main/java/com/energy/manage/common/enums/OptionEnums.java
  3. 3 1
      energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisGeneralFilePo.java
  4. 8 7
      energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisResultPo.java
  5. 64 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/autoanalysisconfigdetail/AutoAnalysisConfigDetailPo.java
  6. 62 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/autoanalysisconfigdetailoptionrecords/AutoAnalysisConfigDetailOptionRecordsPo.java
  7. 46 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/autoanalysisconfigrelations/AutoAnalysisConfigRelationsPo.java
  8. 16 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/units/UnitDictBrandModelPO.java
  9. 1 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/windfield/WindFieldPO.java
  10. 3 0
      energy-manage-common/src/main/java/com/energy/manage/common/reponse/ConstVar.java
  11. 5 5
      energy-manage-service/generator/generatorConfig.xml
  12. 30 1
      energy-manage-service/src/main/java/com/energy/manage/service/constant/analysis/AnalysisConstants.java
  13. 3 2
      energy-manage-service/src/main/java/com/energy/manage/service/controller/analysis/AnalysisController.java
  14. 57 0
      energy-manage-service/src/main/java/com/energy/manage/service/controller/analysis/AutoAnalysisConfigController.java
  15. 9 0
      energy-manage-service/src/main/java/com/energy/manage/service/controller/units/UnitDictController.java
  16. 3 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AnalysisDto.java
  17. 50 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/analysis/AutoAnalysisConfigDetailDto.java
  18. 18 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/units/UnitDictBrandModelDto.java
  19. 41 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/units/UnitDictBrandModelParameterUpdateDto.java
  20. 17 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/units/UnitDictBrandModelUpdateDto.java
  21. 0 1
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windenginemill/WindEngineMillCreateDto.java
  22. 1 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windfield/WindFieldDto.java
  23. 1 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windfield/WindFieldUpdateDto.java
  24. 22 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windfield/WindSysDateDto.java
  25. 7 1
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisGeneralFileVo.java
  26. 9 4
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisRelateInfoVo.java
  27. 7 2
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisResultVo.java
  28. 61 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AutoAnalysisConfigDetailVo.java
  29. 5 5
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/excel/WindEngineGroupExcelVo.java
  30. 18 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/units/UnitDictBrandModelVo.java
  31. 2 1
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisGeneralFileMapper.java
  32. 0 7
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisResultMapper.java
  33. 6 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisTypeMapper.java
  34. 49 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/autoanalysisconfigdetail/AutoAnalysisConfigDetailMapper.java
  35. 17 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/autoanalysisconfigdetailoptionrecords/AutoAnalysisConfigDetailOptionRecordsMapper.java
  36. 13 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/autoanalysisconfigrelations/AutoAnalysisConfigRelationsMapper.java
  37. 0 5
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/datatransfer/DataTransferMapper.java
  38. 8 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/windenginegroup/WindEngineGroupMapper.java
  39. 6 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/AnalysisService.java
  40. 19 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/AutoAnalysisService.java
  41. 50 24
      energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/impl/AnalysisServiceImpl.java
  42. 183 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/impl/AutoAnalysisServiceImpl.java
  43. 48 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/autoanalysisconfig/AutoAnalysisConfigService.java
  44. 108 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/autoanalysisconfig/impl/AutoAnalysisConfigServiceImpl.java
  45. 8 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/units/UnitDictConstantsService.java
  46. 25 14
      energy-manage-service/src/main/java/com/energy/manage/service/service/units/impl/UnitDictConstantsServiceImpl.java
  47. 14 13
      energy-manage-service/src/main/java/com/energy/manage/service/service/units/impl/UnitServiceImpl.java
  48. 1 1
      energy-manage-service/src/main/java/com/energy/manage/service/service/windenginemill/impl/WindEngineMillServiceImpl.java
  49. 0 1
      energy-manage-service/src/main/java/com/energy/manage/service/service/windfield/WindFieldService.java
  50. 3 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/windfield/impl/WindFieldServiceImpl.java
  51. 4 3
      energy-manage-service/src/main/java/com/energy/manage/service/task/AnalysisTask.java
  52. 7 57
      energy-manage-service/src/main/java/com/energy/manage/service/task/AutoAnalysisTask.java
  53. 89 16
      energy-manage-service/src/main/java/com/energy/manage/service/test/TestController.java
  54. 16 0
      energy-manage-service/src/main/java/com/energy/manage/service/util/DateUtils.java
  55. 0 1
      energy-manage-service/src/main/resources/bootstrap.properties
  56. 5 2
      energy-manage-service/src/main/resources/mybatis/analysis/AnalysisGeneralFileMapper.xml
  57. 26 13
      energy-manage-service/src/main/resources/mybatis/analysis/AnalysisResultMapper.xml
  58. 8 1
      energy-manage-service/src/main/resources/mybatis/analysis/AnalysisTypeMapper.xml
  59. 106 0
      energy-manage-service/src/main/resources/mybatis/autoanalysisconfigdetail/AutoAnalysisConfigDetailMapper.xml
  60. 29 0
      energy-manage-service/src/main/resources/mybatis/autoanalysisconfigdetailoptionrecords/AutoAnalysisConfigDetailOptionRecordsMapper.xml
  61. 26 0
      energy-manage-service/src/main/resources/mybatis/autoanalysisconfigrelations/AutoAnalysisConfigRelationsMapper.xml
  62. 0 18
      energy-manage-service/src/main/resources/mybatis/datatransfer/DataTransferMapper.xml
  63. 22 17
      energy-manage-service/src/main/resources/mybatis/system/OrganizationAuthMapper.xml
  64. 7 1
      energy-manage-service/src/main/resources/mybatis/windenginegroup/WindEngineGroupMapper.xml
  65. 76 0
      jarstart.sh
  66. 13 0
      pom.xml

+ 0 - 25
db/energy_2024-07-16.sql

@@ -1755,36 +1755,11 @@ CREATE TABLE `analysis_result` (
   `update_by` int(11) DEFAULT '0' COMMENT '更新人',
   `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
   `analysis_progress` decimal(6,2) DEFAULT '0.00' COMMENT '分析进度\n',
-  `call_status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '是否自动调用分析算法。0:否 1:是',
   `on_off_call` tinyint(2) NOT NULL DEFAULT '0' COMMENT '开启自动分析 0:否 1:是',
   PRIMARY KEY (`id`),
   UNIQUE KEY `index_batch_code` (`batch_code`) USING BTREE COMMENT '批次索引'
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分析结果表—批次分析结果表';
 
-LOCK TABLES `analysis_result` WRITE;
-/*!40000 ALTER TABLE `analysis_result` DISABLE KEYS */;
-
-INSERT INTO `analysis_result` (`id`, `batch_code`, `analysis_state`, `err_state`, `err_code`, `err_info`, `create_by`, `create_time`, `update_by`, `update_time`, `analysis_progress`, `call_status`, `on_off_call`)
-VALUES
-	(426,'WOF053600062-WOB00021',1,1,'-1','analysisState() got an unexpected keyword argument \'analysisProgress\'',0,'2024-06-20 16:02:33',0,'2024-07-01 19:02:13',NULL,0,0),
-	(429,'WOF053600062-WOB00022',1,1,'-1','\'DataFrameGroupBy\' object has no attribute \'empty\'',0,'2024-06-24 09:40:19',0,'2024-07-16 13:55:25',0.00,0,1),
-	(430,'WOF053600062-WOB00023',-1,0,'','',0,'2024-06-25 09:47:04',0,'2024-06-25 09:47:04',NULL,0,0),
-	(431,'WOF01000063-WOB00024',-1,0,'','',0,'2024-06-25 15:28:35',0,'2024-06-25 15:28:35',NULL,0,0),
-	(432,'WOF01000063-WOB00025',-1,0,'','',0,'2024-06-26 11:30:42',0,'2024-06-26 11:30:42',NULL,0,0),
-	(433,'WOF053600062-WOB00026',-1,0,'','',0,'2024-06-26 16:10:55',0,'2024-06-26 16:10:55',NULL,0,0),
-	(434,'WOF053600062-WOB00027',1,0,'','',0,'2024-06-27 09:30:21',0,'2024-06-28 14:16:33',NULL,0,0),
-	(436,'WOF085500002-WOB00002',1,0,NULL,NULL,0,'2024-06-28 09:17:42',0,'2024-07-10 10:45:33',100.00,0,0),
-	(548,'WOF01000063-WOB00028',-1,0,'','',0,'2024-07-04 10:31:21',0,'2024-07-04 10:31:21',0.00,0,0),
-	(549,'WOF01000063-WOB00029',-1,0,'','',0,'2024-07-04 10:33:17',0,'2024-07-04 10:33:17',0.00,0,0),
-	(550,'WOF01000063-WOB00030',-1,0,'','',0,'2024-07-04 10:34:16',0,'2024-07-04 10:34:16',0.00,0,0),
-	(551,'WOF01000063-WOB000066',-1,0,'','',0,'2024-07-04 15:19:14',0,'2024-07-04 15:19:14',0.00,0,0),
-	(561,'WOF01000063-WOB000068',-1,0,'','',0,'2024-07-05 15:55:52',0,'2024-07-05 15:55:52',0.00,0,0),
-	(562,'WOF053600062-WOB000069',1,0,'','',0,'2024-07-05 16:02:37',0,'2024-07-08 16:05:22',0.00,0,0),
-	(563,'WOF01000063-WOB000070',-1,0,'','',0,'2024-07-05 16:03:45',0,'2024-07-05 16:03:45',0.00,0,0),
-	(564,'WOF053600062-WOB000071',1,0,'','',0,'2024-07-08 15:36:04',0,'2024-07-16 09:31:53',0.00,0,0);
-
-/*!40000 ALTER TABLE `analysis_result` ENABLE KEYS */;
-UNLOCK TABLES;
 
 
 # Dump of table analysis_type

+ 34 - 0
energy-manage-common/src/main/java/com/energy/manage/common/enums/OptionEnums.java

@@ -0,0 +1,34 @@
+package com.energy.manage.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * @author chy
+ * @date 2025/3/27 14:51
+ * @desc
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+public enum OptionEnums {
+
+    /**
+     * 1:增加 2:修改
+     */
+    ADD(0,"增加"),
+    EDIT(1,"修改"),
+    OFF(2,"关停"),
+    ON(3,"启动");
+
+
+    @Getter
+    @Setter
+    private Integer code;
+
+    @Getter
+    @Setter
+    private String msg;
+
+}

+ 3 - 1
energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisGeneralFilePo.java

@@ -2,6 +2,7 @@ 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;
@@ -14,6 +15,7 @@ import java.util.Date;
  */
 @Table(name = "analysis_general_file")
 @Data
+@Accessors(chain = true)
 public class AnalysisGeneralFilePo {
 
     /**
@@ -24,7 +26,7 @@ public class AnalysisGeneralFilePo {
     /**
      * 批次号
      */
-    private Integer batchCode ;
+    private String batchCode ;
 
     /**
      * 分析类型编号

+ 8 - 7
energy-manage-common/src/main/java/com/energy/manage/common/po/analysis/AnalysisResultPo.java

@@ -76,10 +76,6 @@ public class AnalysisResultPo {
      */
     private BigDecimal analysisProgress;
 
-    /**
-     * 是否自动调用分析算法。0:否 1:是
-     */
-    private Integer callStatus;
 
     /**
      * 开启自动分析 0:否 1:是
@@ -99,13 +95,13 @@ public class AnalysisResultPo {
     /**
      * 数据开始时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date dataStartTime;
 
     /**
      * 数据结束时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date dataEndTime;
 
     /**
@@ -129,5 +125,10 @@ public class AnalysisResultPo {
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date analysisFinishTime;
-    
+
+    /**
+     * 是否手动分析 0:否 1:是
+     */
+    private Integer analysisFlag;
+
 }

+ 64 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/autoanalysisconfigdetail/AutoAnalysisConfigDetailPo.java

@@ -0,0 +1,64 @@
+package com.energy.manage.common.po.autoanalysisconfigdetail;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Author: chy
+ * @Date: 2025/3/27 09:38
+ * @Description:自动分析配置
+ */
+
+@Data
+@Accessors(chain = true)
+@Table(name = "auto_analysis_config_detail")
+public class AutoAnalysisConfigDetailPo {
+
+    /**
+     * 主键
+     */
+    @Id
+    private Long id;
+
+    /**
+     * 风场编码
+     */
+    private String fieldCode;
+
+    /**
+     * 间隔天数
+     */
+    private Integer intervalDays;
+
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 是否开启 0:关闭 1:开启
+     */
+    private Integer startupState;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 配置唯一标识
+     */
+    private String configUniqueId;
+
+
+}

+ 62 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/autoanalysisconfigdetailoptionrecords/AutoAnalysisConfigDetailOptionRecordsPo.java

@@ -0,0 +1,62 @@
+package com.energy.manage.common.po.autoanalysisconfigdetailoptionrecords;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * @Author: chy
+ * @Date: 2025/3/27 09:34
+ * @Description: 自动分析操作记录表
+ *
+ */
+
+@Data
+@Accessors(chain = true)
+@Table(name = "auto_analysis_config_detail_option_records")
+public class AutoAnalysisConfigDetailOptionRecordsPo {
+
+    /**
+     * 唯一标识
+     */
+    private Integer id;
+
+    /**
+     * 风场编号
+     */
+    private String fieldCode;
+
+    /**
+     * 原始间隔天数
+     */
+    private Integer sourceIntevalDays;
+
+    /**
+     * 原始开始时间
+     */
+    private Date sourceStartTime;
+
+    /**
+     * 原始启动状态 0:关闭 1:开启
+     */
+    private Integer sourceStartupState;
+
+    /**
+     * 操作标识 0:新增 1:编辑 2:关停 3:启动
+     */
+    private Integer optionFlag;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 配置唯一标识
+     */
+    private String configUniqueId;
+
+
+}

+ 46 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/autoanalysisconfigrelations/AutoAnalysisConfigRelationsPo.java

@@ -0,0 +1,46 @@
+package com.energy.manage.common.po.autoanalysisconfigrelations;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+@Table(name = "auto_analysis_config_relations")
+@Data
+@Accessors(chain = true)
+public class AutoAnalysisConfigRelationsPo {
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 配置唯一标识
+     */
+    private String configUniqueId;
+
+    /**
+     * 批次号
+     */
+    private String batchCode;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+
+
+}

+ 16 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/units/UnitDictBrandModelPO.java

@@ -12,6 +12,7 @@ import javax.persistence.Column;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -45,4 +46,19 @@ public class UnitDictBrandModelPO {
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
 
+    // 滚动数量
+    private BigDecimal rollsNumber;
+
+    // 滚动直径
+    private BigDecimal rollsDiameter;
+
+    // 圆直径
+    private BigDecimal circleDiameter;
+
+    // 接触角
+    private BigDecimal thetaDeg;
+
+
+
+
 }

+ 1 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/windfield/WindFieldPO.java

@@ -8,6 +8,7 @@ import lombok.experimental.Accessors;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Table;
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * 风场信息

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

@@ -90,6 +90,9 @@ public enum ConstVar {
 
   EXSIT_BATCH_NAME(1010001, "当前批次名称已存在,请重新编辑"),
 
+
+  EXSIT_ON_CONFIG(1020001, "当前风场已存在启动中的自动分析配置"),
+
   //测评小程序
   PAPER_USER_UNBELONG_TO(3000,"哎呀,该测评已经被其他用户绑定过了,您无法进行查看~"),
   PAPER_ANSWER_SIZE_ERROR(3001,"试题未答完,请检查试题");

+ 5 - 5
energy-manage-service/generator/generatorConfig.xml

@@ -50,7 +50,7 @@
 
         <!--数据库连接信息:驱动类、链接地址、用户名、密码 -->
         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
-                        connectionURL="jdbc:mysql://192.168.50.233:3306/energy?useUnicode=true"
+                        connectionURL="jdbc:mysql://192.168.50.233:3306/energy_show?useUnicode=true"
                         userId="admin"
                         password="admin123456">
             <!--高版本的 mysql-connector-java 需要设置 nullCatalogMeansCurrent=true-->
@@ -76,7 +76,7 @@
         </javaTypeResolver>
 
         <!-- java实体类路径 -->
-        <javaModelGenerator targetPackage="analysisdatarelationrecords" targetProject="src/main/java">
+        <javaModelGenerator targetPackage="com.energy.manage.common.po.autoanalysisconfigdetail" targetProject="src/main/java">
             <!--  for MyBatis3/MyBatis3Simple
                 自动为每一个生成的类创建一个构造方法,构造方法包含了所有的field;而不是使用setter;
               -->
@@ -90,7 +90,7 @@
         </javaModelGenerator>
 
         <!-- 生成映射文件xml的包名和位置-->
-        <sqlMapGenerator targetPackage="mybatis.analysisdatarelationrecords" targetProject="src/main/resources">
+        <sqlMapGenerator targetPackage="mybatis.autoanalysisconfig_relations" targetProject="src/main/resources">
             <!-- 是否让schema作为包后缀-->
             <property name="enableSubPackages" value="false"/>
         </sqlMapGenerator>
@@ -99,7 +99,7 @@
             type="XMLMAPPER" 会将接口的实现放在 mapper.xml中,也推荐这样配置。
             type="ANNOTATEDMAPPER",接口的实现通过注解写在接口上面
          -->
-        <javaClientGenerator type="XMLMAPPER" targetPackage="com.energy.manage.service.mappers.analysisdatarelationrecords"
+        <javaClientGenerator type="XMLMAPPER" targetPackage="com.energy.manage.service.mappers.autoanalysisconfigrelations"
                              targetProject="src/main/java">
             <!-- 是否让schema作为包后缀-->
             <property name="enableSubPackages" value="false"/>
@@ -113,7 +113,7 @@
             生成全部表tableName设为 %
         -->
 
-        <table tableName="analysis_data_relation_records" domainObjectName="analysisDataRelationRecordsPo"
+        <table tableName="auto_analysis_config_relations" domainObjectName="AutoAnalysisConfigRelations"
                enableDeleteByExample="false"
                enableCountByExample="false"
                enableSelectByExample="false"

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

@@ -72,10 +72,39 @@ public interface AnalysisConstants {
     String IMAGE_SUFFIX = ".png";
 
     /**
-     * 已执行状态
+     * 已执行状态/或开启状态
      */
     Integer ON_CALL = 1;
 
+    /**
+     * 自动分析标识
+     */
+    Integer ANALYSIS_AUTO = 1;
+
+    /**
+     * 分钟级
+     */
+    String MINUTE = "minute";
+
+    /**
+     * 秒级
+     */
+    String SECEND = "second";
 
+    /**
+     * 字符分隔符
+     */
+    String CHAR_SEPARATOR = "|";
+
+
+    /**
+     * 字符分隔符(转义符)
+     */
+    String CHAR_ESCAPE_SEPARATOR = "\\|";
+
+    /**
+     * 自动主题
+     */
+    String AUTO_ANALYSIS_NAME = "自动分析";
 
 }

+ 3 - 2
energy-manage-service/src/main/java/com/energy/manage/service/controller/analysis/AnalysisController.java

@@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -81,7 +82,7 @@ public class AnalysisController extends BaseServiceController {
     @UserLoginToken
     @ApiOperation(value = "手动分析触发")
     @PostMapping("/analysis")
-    public ResultResp analysis(@RequestBody AnalysisDto analysisto)
+    public ResultResp analysis(@Valid @RequestBody AnalysisDto analysisto)
     {
         //设置为手动分析
         analysisto.setAutoOrManual(AnalysisConstants.MANUAL_ANALYSIS);
@@ -101,7 +102,7 @@ public class AnalysisController extends BaseServiceController {
     @ApiOperation(value = "分析详情")
     @GetMapping("/analysisDetail")
     public ResultResp analysisDetail(@RequestParam("batchCode") String batchCode,
-                                     @RequestParam("analysisTypeCode") String analysisTypeCode,
+                                     @RequestParam(value = "analysisTypeCode",required = false) String analysisTypeCode,
                                      @RequestParam(value = "fieldEngineCodes",required = false) List<String> fieldEngineCodes,
                                      HttpServletRequest request)
     {

+ 57 - 0
energy-manage-service/src/main/java/com/energy/manage/service/controller/analysis/AutoAnalysisConfigController.java

@@ -0,0 +1,57 @@
+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.service.config.annotations.UserLoginToken;
+import com.energy.manage.service.controller.base.BaseServiceController;
+import com.energy.manage.service.domain.dto.analysis.AutoAnalysisConfigDetailDto;
+import com.energy.manage.service.domain.vo.analysis.AutoAnalysisConfigDetailVo;
+import com.energy.manage.service.service.autoanalysisconfig.AutoAnalysisConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author chy
+ * @date 2025/3/27 09:05
+ * @desc 自动分析配置
+ */
+@Api(value = "AutoAnalysisConfigController",tags = "自动分析配置")
+@RestController
+@RequestMapping("/autoAnalysis")
+public class AutoAnalysisConfigController extends BaseServiceController {
+
+    @Autowired
+    private AutoAnalysisConfigService autoAnalysisConfigService;
+
+
+    @ApiOperation(value = "自动分析配置列表")
+    @UserLoginToken
+    @GetMapping("/configList")
+    public ResultResp<Page<AutoAnalysisConfigDetailVo>> configList(AutoAnalysisConfigDetailDto autoAnalysisConfigDetailDto) {
+        return pageResult(autoAnalysisConfigService.configList(autoAnalysisConfigDetailDto),autoAnalysisConfigDetailDto);
+    }
+
+    @ApiOperation(value = "增加配置")
+    @UserLoginToken
+    @PostMapping("/configSave")
+    public ResultResp configSave(@RequestBody AutoAnalysisConfigDetailDto autoAnalysisConfigDetailDto) {
+        return autoAnalysisConfigService.configSave(autoAnalysisConfigDetailDto);
+    }
+
+
+    @ApiOperation(value = "编辑配置")
+    @UserLoginToken
+    @PostMapping("/configEdit")
+    public ResultResp configEdit(@RequestBody AutoAnalysisConfigDetailDto autoAnalysisConfigDetailDto) {
+        return autoAnalysisConfigService.configEdit(autoAnalysisConfigDetailDto);
+    }
+
+    @ApiOperation(value = "开启/关停自动分析")
+    @UserLoginToken
+    @PostMapping("/onOff")
+    public ResultResp onOff(@RequestBody AutoAnalysisConfigDetailDto autoAnalysisConfigDetailDto) {
+        return autoAnalysisConfigService.onOff(autoAnalysisConfigDetailDto);
+    }
+}

+ 9 - 0
energy-manage-service/src/main/java/com/energy/manage/service/controller/units/UnitDictController.java

@@ -175,6 +175,15 @@ public class UnitDictController extends BaseServiceController {
         return flg ? ResultResp.SUCCESS() : ResultResp.FAIL();
     }
 
+
+    @UserLoginToken
+    @PostMapping(value = "/updateUnitDictBrandModelParameter")
+    @ApiOperation(value = "更新部件品牌型号-参数")
+    public ResultResp updateUnitDictBrandModelParameter(@RequestBody @Valid UnitDictBrandModelParameterUpdateDto unitDictBrandModelParameterUpdateDto) {
+        boolean flg = unitDictConstantsService.updateUnitDictBrandParameterModel(unitDictBrandModelParameterUpdateDto);
+        return flg ? ResultResp.SUCCESS() : ResultResp.FAIL();
+    }
+
     @UserLoginToken
     @PostMapping(value = "/delUnitDictBrandModel")
     @ApiOperation(value = "删除部件品牌型号-品牌型号")

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

@@ -3,6 +3,7 @@ package com.energy.manage.service.domain.dto.analysis;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import javax.validation.constraints.NotBlank;
 import java.util.List;
 
 /**
@@ -39,11 +40,13 @@ public class AnalysisDto {
     /**
      * 开始时间 格式(2024-01-01 00:00:00)
      */
+    @NotBlank(message = "开始时间不能为空")
     private String beginTime;
 
     /**
      * 结束时间 格式(2024-12-12 00:00:00)
      */
+    @NotBlank(message = "结束时间不能为空")
     private String endTime;
 
     /**

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

@@ -0,0 +1,50 @@
+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 lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author chy
+ * @date 2025/3/27 09:54
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class AutoAnalysisConfigDetailDto extends BaseDto {
+    /**
+     * 风场名称
+     */
+    private String fieldName;
+
+    /**
+     * 风场编码
+     */
+    private String fieldCode;
+
+    /**
+     * 间隔天数
+     */
+    private Integer intervalDays;
+
+    /**
+     * 开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date startTime;
+
+    /**
+     * 是否开启 0:关闭 1:开启
+     */
+    private Integer startupState;
+
+    /**
+     * 配置唯一标识
+     */
+    private String configUniqueId;
+}

+ 18 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/units/UnitDictBrandModelDto.java

@@ -6,6 +6,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 
 @Getter
 @Setter
@@ -29,4 +30,21 @@ public class UnitDictBrandModelDto {
     @ApiModelProperty("描述")
     private  String description;
 
+
+    // 滚动数量
+    @ApiModelProperty("滚动数量")
+    private BigDecimal rollsNumber;
+
+    // 滚动直径
+    @ApiModelProperty("滚动直径")
+    private BigDecimal rollsDiameter;
+
+    // 圆直径
+    @ApiModelProperty("描圆直径述")
+    private BigDecimal circleDiameter;
+
+    // 接触角
+    @ApiModelProperty("接触角")
+    private BigDecimal thetaDeg;
+
 }

+ 41 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/units/UnitDictBrandModelParameterUpdateDto.java

@@ -0,0 +1,41 @@
+package com.energy.manage.service.domain.dto.units;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+@ApiModel("更新风机部件品牌算法参数")
+public class UnitDictBrandModelParameterUpdateDto {
+
+
+    @ApiModelProperty("主键")
+    @NotNull(message = "主键不能为空")
+    private Integer id;
+
+    // 部件类型
+    @ApiModelProperty("部件类型")
+    @NotNull(message = "部件类型不能为空")
+    private String unitType;
+
+    // 滚动数量
+    @ApiModelProperty("滚动数量")
+    private BigDecimal rollsNumbe;
+
+    // 滚动直径
+    @ApiModelProperty("滚动直径")
+    private BigDecimal rollsDiameter;
+
+    // 圆直径
+    @ApiModelProperty("描圆直径述")
+    private BigDecimal circleDiameter;
+
+    // 接触角
+    @ApiModelProperty("接触角")
+    private BigDecimal thetaDeg;
+}

+ 17 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/units/UnitDictBrandModelUpdateDto.java

@@ -6,6 +6,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 
 @Getter
 @Setter
@@ -33,4 +34,20 @@ public class UnitDictBrandModelUpdateDto {
     //  描述
     @ApiModelProperty("描述")
     private String description;
+
+    // 滚动数量
+    @ApiModelProperty("滚动数量")
+    private BigDecimal rollsNumbe;
+
+    // 滚动直径
+    @ApiModelProperty("滚动直径")
+    private BigDecimal rollsDiameter;
+
+    // 圆直径
+    @ApiModelProperty("描圆直径述")
+    private BigDecimal circleDiameter;
+
+    // 接触角
+    @ApiModelProperty("接触角")
+    private BigDecimal thetaDeg;
 }

+ 0 - 1
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windenginemill/WindEngineMillCreateDto.java

@@ -40,7 +40,6 @@ public class WindEngineMillCreateDto {
      * 品牌名称
      */
     @ApiModelProperty("品牌名称")
-    @NotNull(message = "品牌名称不能为null")
     private String brand;
     /**
      * 塔筒高度

+ 1 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windfield/WindFieldDto.java

@@ -9,6 +9,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
+import java.util.Date;
 import java.util.List;
 
 /**

+ 1 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windfield/WindFieldUpdateDto.java

@@ -6,6 +6,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
+import java.util.Date;
 import java.util.List;
 
 @Getter

+ 22 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windfield/WindSysDateDto.java

@@ -0,0 +1,22 @@
+package com.energy.manage.service.domain.dto.windfield;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+@ApiModel("亮亮调用接口修改系统采集时间-废弃")
+public class WindSysDateDto {
+
+
+    @ApiModelProperty("风场编号")
+    private String windFarmCode;
+
+    @ApiModelProperty("数据采集开始时间")
+    private String startTime;
+
+
+}

+ 7 - 1
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisGeneralFileVo.java

@@ -2,8 +2,8 @@ package com.energy.manage.service.domain.vo.analysis;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import lombok.experimental.Accessors;
 
-import javax.persistence.Table;
 import java.util.Date;
 
 /**
@@ -13,6 +13,7 @@ import java.util.Date;
  * @desc
  */
 @Data
+@Accessors(chain = true)
 public class AnalysisGeneralFileVo {
 
 
@@ -51,4 +52,9 @@ public class AnalysisGeneralFileVo {
      * 风机类型编号
      */
     private String engineTypeCode ;
+
+    /**
+     * 风机类型名称
+     */
+    private String machineTypeCode ;
 }

+ 9 - 4
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisRelateInfoVo.java

@@ -37,7 +37,7 @@ public class AnalysisRelateInfoVo {
     /**
      * 数据开始时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date dataStartTime;
 
     /**
@@ -56,19 +56,19 @@ public class AnalysisRelateInfoVo {
     /**
      * 数据结束时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date dataEndTime;
 
     /**
      * 分析完成时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date analysisFinishTime;
 
     /**
      * 分析完成时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date createTime;
 
     /**
@@ -80,4 +80,9 @@ public class AnalysisRelateInfoVo {
      * 分析主题
      */
     private String analysisName;
+
+    /**
+     * 分析状态
+     */
+    private Integer analysisState;
 }

+ 7 - 2
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AnalysisResultVo.java

@@ -37,13 +37,13 @@ public class AnalysisResultVo {
     /**
      * 数据开始时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date dataStartTime;
 
     /**
      * 数据结束时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date dataEndTime;
 
     /**
@@ -136,4 +136,9 @@ public class AnalysisResultVo {
      */
     private String orderNum;
 
+    /**
+     * 是否手动分析 0:否 1:是
+     */
+    private Integer analysisFlag;
+
 }

+ 61 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/analysis/AutoAnalysisConfigDetailVo.java

@@ -0,0 +1,61 @@
+package com.energy.manage.service.domain.vo.analysis;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * @author chy
+ * @date 2025/3/27 09:52
+ * @desc
+ */
+@Data
+@Accessors(chain = true)
+public class AutoAnalysisConfigDetailVo {
+
+
+    /**
+     * 风场名称
+     */
+    private String fieldName;
+
+    /**
+     * 风场编码
+     */
+    private String fieldCode;
+
+    /**
+     * 间隔天数
+     */
+    private Integer intervalDays;
+
+    /**
+     * 开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date startTime;
+
+    /**
+     * 是否开启 0:关闭 1:开启
+     */
+    private Integer startupState;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    /**
+     * 配置唯一标识
+     */
+    private String configUniqueId;
+}

+ 5 - 5
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/excel/WindEngineGroupExcelVo.java

@@ -48,25 +48,25 @@ public class WindEngineGroupExcelVo {
     @ExcelProperty(value = "经度", index = 5)
     private String longitude;
     /**
-     * 
+     * 
      */
-    @ExcelProperty(value = "度", index = 6)
+    @ExcelProperty(value = "度", index = 6)
     private String latitude;
 
     /**
      * 额定风速 (m/s)
      */
-    @ExcelProperty(value = "维度", index = 7)
+    @ExcelProperty(value = "额定风速", index = 7)
     private Double rated_wind_speed;
     /**
      * 切入风速 (m/s)
      */
-    @ExcelProperty(value = "维度", index = 8)
+    @ExcelProperty(value = "切入风速", index = 8)
     private Double ratedCutInWindspeed;
     /**
      * 切出风速 (m/s)
      */
-    @ExcelProperty(value = "维度", index = 9)
+    @ExcelProperty(value = "切出风速", index = 9)
     private Double ratedCutOutWindspeed;
     /**
      * 是否标杆风机

+ 18 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/units/UnitDictBrandModelVo.java

@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 
 @Getter
 @Setter
@@ -23,6 +25,22 @@ public class UnitDictBrandModelVo {
     @ApiModelProperty("型号")
     private  String modelNumber;
 
+    // 滚动数量
+    @ApiModelProperty("滚动数量")
+    private BigDecimal rollsNumber;
+
+    // 滚动直径
+    @ApiModelProperty("滚动直径")
+    private BigDecimal rollsDiameter;
+
+    // 圆直径
+    @ApiModelProperty("描圆直径述")
+    private BigDecimal circleDiameter;
+
+    // 接触角
+    @ApiModelProperty("接触角")
+    private BigDecimal thetaDeg;
+
 
 
 }

+ 2 - 1
energy-manage-service/src/main/java/com/energy/manage/service/mappers/analysis/AnalysisGeneralFileMapper.java

@@ -1,6 +1,7 @@
 package com.energy.manage.service.mappers.analysis;
 
 import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.common.po.analysis.AnalysisGeneralFilePo;
 import com.energy.manage.service.domain.vo.analysis.AnalysisGeneralFileVo;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
@@ -13,7 +14,7 @@ import java.util.List;
  * @desc
  */
 @Repository
-public interface AnalysisGeneralFileMapper extends MyMapper<AnalysisGeneralFileVo> {
+public interface AnalysisGeneralFileMapper extends MyMapper<AnalysisGeneralFilePo> {
 
     /**
      * 根据批次号与分型类型编号查询通用文件

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

@@ -61,13 +61,6 @@ public interface AnalysisResultMapper extends MyMapper<AnalysisResultPo> {
 
 
     /**
-     * 更新自动分析状态
-     * @param batchCode
-     * @return
-     */
-    int updateCallStatus(@Param("batchCode")String batchCode);
-
-    /**
      * 是否开启自动分析
      * @param batchCode
      * @return

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

@@ -42,4 +42,10 @@ public interface AnalysisTypeMapper extends MyMapper <AnalysisTypePo>{
      * @return
      */
     String selecFlagByCode(@Param("typeCode") String typeCode);
+
+    /**
+     * 按照顺序查询
+     * @return
+     */
+    List<AnalysisTypePo> selectAllByOrderNum();
 }

+ 49 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/autoanalysisconfigdetail/AutoAnalysisConfigDetailMapper.java

@@ -0,0 +1,49 @@
+package com.energy.manage.service.mappers.autoanalysisconfigdetail;
+
+import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.common.po.autoanalysisconfigdetail.AutoAnalysisConfigDetailPo;
+import com.energy.manage.service.domain.dto.analysis.AutoAnalysisConfigDetailDto;
+import com.energy.manage.service.domain.vo.analysis.AutoAnalysisConfigDetailVo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface AutoAnalysisConfigDetailMapper extends MyMapper<AutoAnalysisConfigDetailPo> {
+
+    /**
+     * 根据条件查询配置
+     * @param detail
+     * @return
+     */
+    List<AutoAnalysisConfigDetailVo> selectByCondition(AutoAnalysisConfigDetailDto detail);
+
+    /**
+     * 插入配置
+     * @param detailDto
+     * @return
+     */
+    int insertConfig(AutoAnalysisConfigDetailDto detailDto);
+
+    /**
+     * 根据条件更新配置
+     * @param detailDto
+     * @return
+     */
+    int updateConfigByCondition(AutoAnalysisConfigDetailDto detailDto);
+
+    /**
+     * 根据唯一id查询配置
+     * @param configUniqueId
+     * @return
+     */
+    AutoAnalysisConfigDetailPo selectByUniqueId(@Param("configUniqueId") String configUniqueId);
+
+    /**
+     * 查询配置是否存在
+     * @param detailDto
+     * @return
+     */
+    int selectExistConfig(AutoAnalysisConfigDetailDto detailDto);
+}

+ 17 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/autoanalysisconfigdetailoptionrecords/AutoAnalysisConfigDetailOptionRecordsMapper.java

@@ -0,0 +1,17 @@
+package com.energy.manage.service.mappers.autoanalysisconfigdetailoptionrecords;
+
+import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.common.po.autoanalysisconfigdetailoptionrecords.AutoAnalysisConfigDetailOptionRecordsPo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface AutoAnalysisConfigDetailOptionRecordsMapper extends MyMapper<AutoAnalysisConfigDetailOptionRecordsPo> {
+
+
+    /**
+     * 查询最晚的一次修改记录
+     */
+    AutoAnalysisConfigDetailOptionRecordsPo selectEditByCreateTime(@Param("configUniqueId") String configUniqueId);
+
+}

+ 13 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/autoanalysisconfigrelations/AutoAnalysisConfigRelationsMapper.java

@@ -0,0 +1,13 @@
+package com.energy.manage.service.mappers.autoanalysisconfigrelations;
+
+
+import com.energy.manage.common.mapper.MyMapper;
+import com.energy.manage.common.po.autoanalysisconfigrelations.AutoAnalysisConfigRelationsPo;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface AutoAnalysisConfigRelationsMapper extends MyMapper<AutoAnalysisConfigRelationsPo> {
+
+
+    AutoAnalysisConfigRelationsPo selectByConfigUniqueId(String configUniqueId);
+}

+ 0 - 5
energy-manage-service/src/main/java/com/energy/manage/service/mappers/datatransfer/DataTransferMapper.java

@@ -27,11 +27,6 @@ public interface DataTransferMapper extends MyMapper<DataTransferPo>{
      */
     List<String> selectAllWindFieldBtach(Integer roleId);
 
-    /**
-     * 查出秒级分钟级已转换完成的批次与风场编号
-     * @return
-     */
-    DataTransferVo selectBatchCodeForAutoAnaly();
 
     /**
      * 查询转换数据组

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

@@ -6,6 +6,7 @@ import com.energy.manage.common.po.windenginegroup.WindEngineGroupPO;
 import com.energy.manage.service.domain.dto.windenginegroup.WindEngineGroupPageDto;
 import com.energy.manage.service.domain.dto.windenginegroup.WindEngineGroupUpdateDto;
 import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupPageVo;
+import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupShortVo;
 import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupVo;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
@@ -67,4 +68,11 @@ public interface WindEngineGroupMapper extends MyMapper<WindEngineGroupPO> {
     */
    Integer updateWindEngineGroupList(@Param("list")List<WindEngineGroupUpdateDto> list);
 
+   /**
+    * 查询该风场下所有风机
+    * @param fieldCode
+    * @return
+    */
+   List<WindEngineGroupShortVo> selectWindEngineGroupShortList(@Param("fieldCode") String fieldCode);
+
 }

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

@@ -164,5 +164,11 @@ public interface AnalysisService {
     ResultResp downloadFile(String fieldCode, String batchCode, String analysisTypeCode, HttpServletResponse response);
 
 
+    /**
+     * 创建批次号
+     * @param fieldCode
+     * @return
+     */
+    String createWindFieldBatchCode(String fieldCode);
 
 }

+ 19 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/AutoAnalysisService.java

@@ -0,0 +1,19 @@
+package com.energy.manage.service.service.analysis;
+
+/**
+ * 自动分析
+ * @author chy
+ * @date 2025/3/31 15:42
+ * @desc
+ */
+
+public interface AutoAnalysisService {
+
+
+    /**
+     * 自动分析
+     */
+    void autoAnalysis();
+
+
+}

+ 50 - 24
energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/impl/AnalysisServiceImpl.java

@@ -6,13 +6,13 @@ import com.alibaba.fastjson.JSONArray;
 import com.energy.manage.common.base.Page;
 import com.energy.manage.common.constant.redis.ManagerRedisKeyConstant;
 import com.energy.manage.common.enums.IdPrefixEnum;
+import com.energy.manage.common.po.analysis.AnalysisGeneralFilePo;
 import com.energy.manage.common.po.analysis.AnalysisOptionRecordsPo;
 import com.energy.manage.common.po.analysis.AnalysisResultPo;
 import com.energy.manage.common.po.analysis.AnalysisTypePo;
 import com.energy.manage.common.po.analysisdatarelationrecords.AnalysisDataRelationRecordsPo;
 import com.energy.manage.common.po.analysispriorityrecords.AnalysisPriorityRecordsPo;
 import com.energy.manage.common.po.windfield.WindFieldPO;
-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.common.util.IdGeneratorUtil;
@@ -294,16 +294,10 @@ public class AnalysisServiceImpl implements AnalysisService {
     @Override
     public ResultResp analysis(AnalysisDto analysisDto) {
         try {
-            if(checkAnalysising()){
-                return ResultResp.FAIL(ConstVar.ANALYSISING);
-            }
-            //手动分析要进行分析类型code转换为flag(便于json分析类型赋值)
-            // (是因为算法分析类型code与平台分析类型code没有做统一,开发之后才做统一,所以需要转换)
-            if(analysisDto.getAutoOrManual().equalsIgnoreCase(AnalysisConstants.MANUAL_ANALYSIS)){
-                transferAnalysisFlagByCode(analysisDto);
-            }
+            //(是因为算法分析类型code与平台分析类型code没有做统一,开发之后才做统一,所以需要转换)
+            transferAnalysisFlagByCode(analysisDto);
             //当有功功率没有设置的话 设置默认值 整个风场最大额定功率*1.2 (图像设计移动到前端了,废弃)
-//            setActivePower(analysisDto);
+            //setActivePower(analysisDto);
             //查询分析中或者排队中的数量
             int analysingCount = analysisResultMapper.selectAnalysisingCount();
             if(analysingCount > 0){
@@ -315,7 +309,7 @@ public class AnalysisServiceImpl implements AnalysisService {
                 //更新任务状态为排队中(只更新分析完成与未分析状态)
                 analysisResultMapper.updateAnalysisState(analysisDto.getDataBatchNum());
             }else{
-                //调用算法逻辑(排队逻辑)
+                //调用算法逻辑
                 callAnalysis(analysisDto);
             }
             return ResultResp.SUCCESS();
@@ -446,27 +440,29 @@ public class AnalysisServiceImpl implements AnalysisService {
     }
 
     /**
-     * 查询所有的分析类型
-     */
-    @Override
-    public List<Map<String, Object>> queryAllAnalysisType() {
-        return getAnalysisType(null);
-    }
-
-    /**
      *过滤分析类型并生成树形结构
      * @param analysisCodes
      * @return
      */
     private List<Map<String, Object>> getAnalysisType(Set<String> analysisCodes){
-        List<AnalysisTypePo> analysisTypePos = analysisTypeMapper.selectAll();
-        if(CollectionUtils.isNotEmpty(analysisCodes)){
-            analysisTypePos = analysisTypePos.stream().filter(item -> analysisCodes.contains(item.getTypeCode())).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(analysisCodes)){
+            return new ArrayList<>();
         }
+        List<AnalysisTypePo> analysisTypePos = analysisTypeMapper.selectAllByOrderNum();
+        analysisTypePos = analysisTypePos.stream().filter(item -> analysisCodes.contains(item.getTypeCode()) || item.getParentId().equals(ZREO_STR)).collect(Collectors.toList());
         return TreeUtil.getJava8ResultTree(BeanMapUtils.listBeanToListMap(analysisTypePos), "parentId", "id");
     }
 
     /**
+     * 查询所有的分析类型
+     */
+    @Override
+    public List<Map<String, Object>> queryAllAnalysisType() {
+        List<AnalysisTypePo> analysisTypeList = analysisTypeMapper.selectAllByOrderNum();
+        return TreeUtil.getJava8ResultTree(BeanMapUtils.listBeanToListMap(analysisTypeList), "parentId", "id");
+    }
+
+    /**
      * 查询已经分析的风机信息
      * @param batchCode
      * @param analysisTypeCode
@@ -475,6 +471,16 @@ public class AnalysisServiceImpl implements AnalysisService {
     @Override
     public Set<WindEngineGroupShortVo> queryAnalysisedEngine(String batchCode, String analysisTypeCode){
         Set<WindEngineGroupShortVo> set = diagramRelationMapper.selectByBatchCodeAndAnalysisTypeCode(batchCode,analysisTypeCode);
+        if(CollectionUtils.isEmpty(set)){
+            int count  = generalFileMapper.selectCount(new AnalysisGeneralFilePo().setBatchCode(batchCode));
+            if(count > 0){
+                AnalysisResultPo analysisResultPo = analysisResultMapper.selectByBatchCode(batchCode);
+                set = engineGroupMapper.selectWindEngineGroupShortList(analysisResultPo.getFieldCode())
+                        .stream().collect(Collectors.toSet());
+            }else{
+                return new HashSet<>();
+            }
+        }
         //排序
         return set.stream()
                 .sorted(Comparator.comparing(WindEngineGroupShortVo::getEngineName))
@@ -496,8 +502,9 @@ public class AnalysisServiceImpl implements AnalysisService {
         if(CollectionUtils.isEmpty(analysisTypeVos)){
             return analysisDetailVos;
         }
+        Set<String> analysisTypeCodes = analysisTypeVos.stream().map(item -> item.getTypeCode()).collect(Collectors.toSet());
         //最新总文件
-        List<AnalysisGeneralFileVo> newGeneralFileVos = getNewGeneralFiles(batchCode,analysisTypeCode,isIntranet);
+        List<AnalysisGeneralFileVo> newGeneralFileVos = getAllGeneralFiles(batchCode,analysisTypeCodes,isIntranet);
         //获取最新分文件
         List<AnalysisDiagramRelationVo> newDiagramRelationVos = getNewDiagramRelations(batchCode, analysisTypeCode, fieldEngineCodes,isIntranet);
         //查询评论
@@ -854,6 +861,18 @@ public class AnalysisServiceImpl implements AnalysisService {
 //        return engineGroupVos.parallelStream().collect(Collectors.toMap(WindEngineGroupVo::getEngineCode,WindEngineGroupVo::getEngineName, (k1, k2) -> k1, LinkedHashMap::new));
     }
 
+    /**
+     * 获取所有分析类型总文件
+     * @param batchCode
+     * @param typeCodes
+     * @param isIntranet
+     * @return
+     */
+    private List<AnalysisGeneralFileVo> getAllGeneralFiles(String batchCode,Set<String> typeCodes, boolean isIntranet){
+        List<AnalysisGeneralFileVo> resultList = new ArrayList<>();
+        typeCodes.stream().forEach(typeCode -> resultList.addAll(getNewGeneralFiles(batchCode,typeCode,isIntranet)));
+        return resultList;
+    }
 
     /**
      * 获取总文件
@@ -997,7 +1016,13 @@ public class AnalysisServiceImpl implements AnalysisService {
         configAnalysisCodes.stream().forEach(item -> {
             String[] typeStrs = item.split("\\|");
             String flag = analysisTypeMapper.selecFlagByCode(typeStrs[0]);
-            flag = flag.substring(0,flag.lastIndexOf("|") + 1) + typeStrs[1];
+            String dataSource;
+            if(StringUtils.isNotBlank(analysisDto.getScada())){
+                dataSource = analysisDto.getScada();
+            }else{
+                dataSource = typeStrs[1];
+            }
+            flag = flag.substring(0,flag.lastIndexOf("|") + 1) + dataSource;
             flags.add(flag);
         });
         analysisDto.setConfigAnalysis(flags.stream().collect(Collectors.toList()));
@@ -1225,6 +1250,7 @@ public class AnalysisServiceImpl implements AnalysisService {
      * @param fieldCode
      * @return
      */
+    @Override
     public String createWindFieldBatchCode(String fieldCode){
         String sequece = IdPrefixEnum.WIND_ENGINE_BATCH_NUMBER.getCode().concat(IdGeneratorUtil.zeroFillUtil(cacheService.incr(ManagerRedisKeyConstant.build(ManagerRedisKeyConstant.IDGENERATOR_CONSTANTS_KEY, fieldCode,IdPrefixEnum.WIND_ENGINE_BATCH_NUMBER.getCode())),6));
         return fieldCode + SEPARATOR + sequece;

+ 183 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/impl/AutoAnalysisServiceImpl.java

@@ -0,0 +1,183 @@
+package com.energy.manage.service.service.analysis.impl;
+
+import com.energy.manage.common.po.analysis.AnalysisResultPo;
+import com.energy.manage.common.po.autoanalysisconfigdetailoptionrecords.AutoAnalysisConfigDetailOptionRecordsPo;
+import com.energy.manage.common.po.autoanalysisconfigrelations.AutoAnalysisConfigRelationsPo;
+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.AutoAnalysisConfigDetailDto;
+import com.energy.manage.service.domain.vo.analysis.AnalysisTypeVo;
+import com.energy.manage.service.domain.vo.analysis.AutoAnalysisConfigDetailVo;
+import com.energy.manage.service.mappers.analysis.AnalysisResultMapper;
+import com.energy.manage.service.mappers.analysis.AnalysisTypeMapper;
+import com.energy.manage.service.mappers.autoanalysisconfigdetail.AutoAnalysisConfigDetailMapper;
+import com.energy.manage.service.mappers.autoanalysisconfigdetailoptionrecords.AutoAnalysisConfigDetailOptionRecordsMapper;
+import com.energy.manage.service.mappers.autoanalysisconfigrelations.AutoAnalysisConfigRelationsMapper;
+import com.energy.manage.service.service.analysis.AnalysisService;
+import com.energy.manage.service.service.analysis.AutoAnalysisService;
+import com.energy.manage.service.util.DateUtils;
+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.util.Date;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import static com.energy.manage.service.constant.analysis.AnalysisConstants.AUTO_ANALYSIS_NAME;
+
+/**
+ * @author chy
+ * @date 2025/3/31 15:43
+ * @desc
+ */
+@Slf4j
+@Service
+public class AutoAnalysisServiceImpl implements AutoAnalysisService {
+
+    @Autowired
+    private AutoAnalysisConfigDetailMapper autoAnalysisConfigDetailMapper;
+
+    @Autowired
+    private AutoAnalysisConfigDetailOptionRecordsMapper optionRecordsMapper;
+
+    @Autowired
+    private AnalysisService analysisService;
+
+    @Autowired
+    private AnalysisResultMapper analysisResultMapper;
+
+    @Autowired
+    private AutoAnalysisConfigRelationsMapper relationsMapper;
+
+    @Autowired
+    private AnalysisTypeMapper analysisTypeMapper;
+
+    /**
+     * 自动分析
+     */
+    @Override
+    public void autoAnalysis() {
+        log.info("触发自动分析定时任务开始。");
+        //查询所有风场启动中的自动分析配置
+        List<AutoAnalysisConfigDetailVo> detailVos = autoAnalysisConfigDetailMapper.selectByCondition(new AutoAnalysisConfigDetailDto().setStartupState(AnalysisConstants.ON_CALL));
+        if(CollectionUtils.isEmpty(detailVos)){
+            log.info("当前无自动分析配置,不执行自动分析。");
+            return;
+        }
+        detailVos.stream().forEachOrdered(item->{
+            //保存操作结果与关联关系
+            AutoAnalysisConfigRelationsPo relationsPo = saveAnalysisResult(item);
+            if(relationsPo == null){
+                log.info("任务id = {} 数据截止日期在当前时间之后,不执行自动分析。", item.getConfigUniqueId());
+                return;
+            }
+            //调用分析
+            analysis(relationsPo,item.getFieldCode());
+        });
+        log.info("触发自动分析定时任务结束");
+    }
+
+    /**
+     * 保存操作结果与关联关系(判断最后一次分析到目前为止有没有改动过配置,如果改动过则重新跑)
+     * @param vo
+     */
+    private AutoAnalysisConfigRelationsPo saveAnalysisResult(AutoAnalysisConfigDetailVo vo){
+        String configUniqueId = vo.getConfigUniqueId();
+        AutoAnalysisConfigRelationsPo relationsPo = relationsMapper.selectByConfigUniqueId(configUniqueId);
+        //如果当前配置一次自动分析没有执行 则起始时间按照配置时间 否则按照最后一次分析endTime(前提是没有修改配置)
+        Date startTime = relationsPo == null ? vo.getStartTime() : relationsPo.getEndTime();
+        //获取最后一次分析创建时间
+        Date relatonCreateTime = relationsPo == null ? null : relationsPo.getCreateTime();
+        //如果修改配置,则查询出该配置最后一次修改记录,判断修改时间在最后一次执行分析之后且在当前时间之前
+        AutoAnalysisConfigDetailOptionRecordsPo optionRecordsPo = optionRecordsMapper.selectEditByCreateTime(configUniqueId);
+        //获取最后一次修改配置时间
+        Date optionCreateTime = optionRecordsPo == null ? null : optionRecordsPo.getCreateTime();
+        //如果修改配置时间在最后一次分析之后,则重新计算开始时间,按照配置开始时间重新跑
+        startTime = optionCreateTime != null
+                && optionCreateTime.after(startTime)
+                && relatonCreateTime != null
+                && optionCreateTime.after(relatonCreateTime) ?  vo.getStartTime() : startTime;
+        //获取数据结束日期
+        Date endTime = DateUtils.addDays(startTime, vo.getIntervalDays());
+        //如果数据结束日期在当前时间之后则不需要执行分析
+        if(endTime.after(new Date())){
+            return null;
+        }
+        //创建并保存分析结果
+        AnalysisResultPo analysisResultPo = createAnalysisResultPo(vo.getFieldCode(),startTime,endTime);
+        analysisResultMapper.insertSelective(analysisResultPo);
+        //创建并保存关联关系
+        AutoAnalysisConfigRelationsPo saveRelationsPo = createRelationsPo(configUniqueId, analysisResultPo.getBatchCode(),
+                startTime, endTime);
+        relationsMapper.insertSelective(saveRelationsPo);
+        return saveRelationsPo;
+    }
+
+    /**
+     * 创建分析结果
+     * @param fieldCode
+     * @return
+     */
+    private AnalysisResultPo createAnalysisResultPo(String fieldCode ,Date startTime ,Date endTime){
+        //创建分析名称
+        String analysisName = AUTO_ANALYSIS_NAME + "(" + DateUtils.convertDate2StringYMD(startTime) + "--" + DateUtils.convertDate2StringYMD(endTime) + ")";
+        return new AnalysisResultPo().setAnalysisName(analysisName)
+                .setSketch(analysisName)
+                .setBatchCode(analysisService.createWindFieldBatchCode(fieldCode))
+                .setFieldCode(fieldCode)
+                .setOnOffCall(AnalysisConstants.ON_CALL)
+                .setAnalysisFlag(AnalysisConstants.ANALYSIS_AUTO);
+    }
+
+    /**
+     * 创建关联关系
+     * @param configUniqueId
+     * @param batchCode
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    private AutoAnalysisConfigRelationsPo createRelationsPo( String configUniqueId, String batchCode,Date startTime, Date endTime) {
+        return new AutoAnalysisConfigRelationsPo().setConfigUniqueId(configUniqueId)
+                .setBatchCode(batchCode)
+                .setStartTime(startTime)
+                .setEndTime(endTime);
+    }
+
+    /**
+     * 调用分析
+     * @param relationsPo
+     * @param fieldCode
+     */
+    private void analysis(AutoAnalysisConfigRelationsPo relationsPo,String fieldCode){
+        AnalysisDto analysisDto = new AnalysisDto();
+        //获取所有的分钟级/秒级分析类型
+        List<AnalysisTypeVo> analysisTypeVo = analysisTypeMapper.selectAllVo();
+        //构建分析类型标识
+        Set<String> configAnalysis = analysisTypeVo.stream().filter(item-> StringUtils.endsWithAny(item.getTypeFlag(), AnalysisConstants.MINUTE,AnalysisConstants.SECEND))
+                .map(item->constructTypeFlag(item)).collect(Collectors.toSet());
+
+        //创建分析dto
+        analysisDto.setAutoOrManual(AnalysisConstants.AUTO_ANALYSIS)
+                .setPowerFarmID(fieldCode)
+                .setDataBatchNum(relationsPo.getBatchCode())
+                .setConfigAnalysis(configAnalysis.stream().collect(Collectors.toList()))
+                .setBeginTime(DateUtils.convertDate2StringYMD(relationsPo.getStartTime()))
+                .setEndTime(DateUtils.convertDate2StringYMD(relationsPo.getEndTime()));
+        //调用分析
+        analysisService.analysis(analysisDto);
+    }
+
+    /**
+     * 构建分析类型标识
+     * @return
+     */
+    private String constructTypeFlag(AnalysisTypeVo vo){
+        String[] flags = vo.getTypeFlag().split(AnalysisConstants.CHAR_ESCAPE_SEPARATOR);
+        return vo.getTypeCode() + AnalysisConstants.CHAR_SEPARATOR + flags[flags.length-1];
+    }
+}

+ 48 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/autoanalysisconfig/AutoAnalysisConfigService.java

@@ -0,0 +1,48 @@
+package com.energy.manage.service.service.autoanalysisconfig;
+
+import com.energy.manage.common.reponse.ResultResp;
+import com.energy.manage.service.domain.dto.analysis.AutoAnalysisConfigDetailDto;
+import com.energy.manage.service.domain.vo.analysis.AutoAnalysisConfigDetailVo;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * @author chy
+ * @date 2025/3/27 09:49
+ * @desc
+ */
+
+public interface AutoAnalysisConfigService {
+
+
+    /**
+     *  查询列表
+     * @param autoAnalysisConfigDetailDto
+     * @return
+     */
+    List<AutoAnalysisConfigDetailVo> configList(AutoAnalysisConfigDetailDto autoAnalysisConfigDetailDto);
+
+
+    /**
+     * 保存配置
+     * @param autoAnalysisConfigDetailDto
+     * @return
+     */
+    ResultResp configSave(AutoAnalysisConfigDetailDto autoAnalysisConfigDetailDto);
+
+    /**
+     * 配置编辑
+     * @param autoAnalysisConfigDetailDto
+     * @return
+     */
+    ResultResp configEdit(AutoAnalysisConfigDetailDto autoAnalysisConfigDetailDto);
+
+    /**
+     * 启动/关闭
+     * @param autoAnalysisConfigDetailDto
+     * @return
+     */
+    ResultResp onOff(AutoAnalysisConfigDetailDto autoAnalysisConfigDetailDto);
+
+}

+ 108 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/autoanalysisconfig/impl/AutoAnalysisConfigServiceImpl.java

@@ -0,0 +1,108 @@
+package com.energy.manage.service.service.autoanalysisconfig.impl;
+
+import com.energy.manage.common.enums.OptionEnums;
+import com.energy.manage.common.po.autoanalysisconfigdetail.AutoAnalysisConfigDetailPo;
+import com.energy.manage.common.po.autoanalysisconfigdetailoptionrecords.AutoAnalysisConfigDetailOptionRecordsPo;
+import com.energy.manage.common.reponse.ResultResp;
+import com.energy.manage.service.domain.dto.analysis.AutoAnalysisConfigDetailDto;
+import com.energy.manage.service.domain.vo.analysis.AutoAnalysisConfigDetailVo;
+import com.energy.manage.service.mappers.autoanalysisconfigdetail.AutoAnalysisConfigDetailMapper;
+import com.energy.manage.service.mappers.autoanalysisconfigdetailoptionrecords.AutoAnalysisConfigDetailOptionRecordsMapper;
+import com.energy.manage.service.service.autoanalysisconfig.AutoAnalysisConfigService;
+import com.energy.manage.service.util.UUIDUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+import static com.energy.manage.common.reponse.ConstVar.EXSIT_ON_CONFIG;
+
+/**
+ * @author chy
+ * @date 2025/3/27 09:50
+ * @desc
+ */
+@Service
+public class AutoAnalysisConfigServiceImpl implements AutoAnalysisConfigService {
+
+    @Autowired
+    private AutoAnalysisConfigDetailMapper autoAnalysisConfigDetailMapper;
+
+    @Autowired
+    private AutoAnalysisConfigDetailOptionRecordsMapper optionRecordsMapper;
+
+    /**
+     * @param autoAnalysisConfigDetailDto
+     * @return
+     */
+    @Override
+    public List<AutoAnalysisConfigDetailVo> configList(AutoAnalysisConfigDetailDto autoAnalysisConfigDetailDto) {
+        return autoAnalysisConfigDetailMapper.selectByCondition(autoAnalysisConfigDetailDto);
+    }
+
+    @Override
+    public ResultResp configSave(AutoAnalysisConfigDetailDto detailDto) {
+        //同一个风场存在一个相同的配置(不论是否在启动状态)
+        int existConfigCount = autoAnalysisConfigDetailMapper.selectExistConfig(detailDto);
+        if(existConfigCount > 0){
+            return ResultResp.FAIL(EXSIT_ON_CONFIG);
+        }
+        String configUniqueId = UUIDUtil.getShortUUIDLowCase();
+        //保存操作记录
+        optionRecordsMapper.insertSelective(new AutoAnalysisConfigDetailOptionRecordsPo()
+                                                        .setFieldCode(detailDto.getFieldCode())
+                                                        .setConfigUniqueId(configUniqueId));
+        //保存配置
+        autoAnalysisConfigDetailMapper.insertConfig(detailDto.setConfigUniqueId(configUniqueId));
+        return ResultResp.SUCCESS();
+    }
+
+    @Override
+    public ResultResp configEdit(AutoAnalysisConfigDetailDto detailDto) {
+        //同一个风场存在一个相同的配置(不论是否在启动状态)
+        int existConfigCount = autoAnalysisConfigDetailMapper.selectExistConfig(detailDto);
+        if(existConfigCount > 0){
+            return ResultResp.FAIL(EXSIT_ON_CONFIG);
+        }
+        //保存操作记录(先保存原始值)
+        saveOptionRecords(detailDto.getConfigUniqueId(), OptionEnums.EDIT.getCode());
+        //更新配置
+        autoAnalysisConfigDetailMapper.updateConfigByCondition(detailDto);
+        return ResultResp.SUCCESS();
+    }
+
+    /**
+     * 启动/关闭
+     * @param detailDto
+     * @return
+     */
+    @Override
+    public ResultResp onOff(AutoAnalysisConfigDetailDto detailDto) {
+        //保存操作记录
+        int optionFlag = detailDto.getStartupState() == 1 ? OptionEnums.ON.getCode() : OptionEnums.OFF.getCode();
+        //保存操作记录(先保存操作记录,后更新)
+        saveOptionRecords(detailDto.getConfigUniqueId(), optionFlag);
+        //更新配置
+        autoAnalysisConfigDetailMapper.updateConfigByCondition(detailDto);
+        return ResultResp.SUCCESS();
+    }
+
+    /**
+     * 保存操作记录
+     * @param configUniqueId
+     * @param optionFlag
+     */
+    private void saveOptionRecords(String configUniqueId, Integer optionFlag){
+        //查询更新前的配置,为后续保存操作记录做准备
+        AutoAnalysisConfigDetailPo exist = autoAnalysisConfigDetailMapper.selectByUniqueId(configUniqueId);
+        //保存操作记录
+        AutoAnalysisConfigDetailOptionRecordsPo recordsPo = new AutoAnalysisConfigDetailOptionRecordsPo()
+                                                                    .setFieldCode(exist.getFieldCode())
+                                                                    .setConfigUniqueId(configUniqueId)
+                                                                    .setOptionFlag(optionFlag)
+                                                                    .setSourceStartupState(exist.getStartupState())
+                                                                    .setSourceIntevalDays(exist.getIntervalDays())
+                                                                    .setSourceStartTime(exist.getStartTime());
+        optionRecordsMapper.insertSelective(recordsPo);
+    }
+}

+ 8 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/units/UnitDictConstantsService.java

@@ -107,6 +107,14 @@ public interface UnitDictConstantsService  {
     boolean updateUnitDictBrandModel(UnitDictBrandModelUpdateDto unitDictBrandModelUpdateDto);
 
     /**
+     * 更新部件品牌型号参数
+     * @param unitDictBrandModelParameterUpdateDto
+     * @return
+     */
+    boolean updateUnitDictBrandParameterModel(UnitDictBrandModelParameterUpdateDto unitDictBrandModelParameterUpdateDto);
+
+
+    /**
      * 删除部件品牌型号
      * @param unitDictBrandModelIdDto
      * @return

+ 25 - 14
energy-manage-service/src/main/java/com/energy/manage/service/service/units/impl/UnitDictConstantsServiceImpl.java

@@ -250,8 +250,6 @@ public class UnitDictConstantsServiceImpl extends BaseServiceImpl<UnitDictConsta
         BeanUtil.copyProperties(unitDictBrandModelDto, po);
         po.setCreateTime(new Date());
 
-        // redis删除
-        delBrandRedisKey(unitDictBrandModelDto.getManufacture());
         return unitDictBrandModelMapper.insertUseGeneratedKeys(po) > 0;
     }
 
@@ -265,8 +263,21 @@ public class UnitDictConstantsServiceImpl extends BaseServiceImpl<UnitDictConsta
         Example.Criteria criteria = queryExample.createCriteria();
         criteria.andEqualTo("id", unitDictBrandModelUpdateDto.getId());
 
-        // redis删除
-        delBrandRedisKey(unitDictBrandModelUpdateDto.getManufacture());
+        return unitDictBrandModelMapper.updateByExampleSelective(po, queryExample) > 0;
+    }
+
+    @Override
+    public boolean updateUnitDictBrandParameterModel(UnitDictBrandModelParameterUpdateDto unitDictBrandModelParameterUpdateDto) {
+        UnitDictBrandModelPO po = new UnitDictBrandModelPO();
+        po.setRollsNumber(unitDictBrandModelParameterUpdateDto.getRollsNumbe());
+        po.setRollsDiameter(unitDictBrandModelParameterUpdateDto.getRollsDiameter());
+        po.setCircleDiameter(unitDictBrandModelParameterUpdateDto.getCircleDiameter());
+        po.setThetaDeg(unitDictBrandModelParameterUpdateDto.getThetaDeg());
+        po.setCreateTime(new Date());
+        Example queryExample = new Example(UnitDictBrandModelPO.class);
+        Example.Criteria criteria = queryExample.createCriteria();
+        criteria.andEqualTo("id", unitDictBrandModelParameterUpdateDto.getId());
+
         return unitDictBrandModelMapper.updateByExampleSelective(po, queryExample) > 0;
     }
 
@@ -306,15 +317,15 @@ public class UnitDictConstantsServiceImpl extends BaseServiceImpl<UnitDictConsta
         return dictConstantsMapper.selectCountByExample(queryExample) > 0 ? true : false;
     }
 
-    /**
-     * 删除品牌对应型号
-     *
-     * @param brandKey
-     * @return
-     */
-    private void delBrandRedisKey(String brandKey) {
-        String brandlistKey = ManagerRedisKeyConstant.build(ManagerRedisKeyConstant.IDGENERATOR_UDPB_KEY, brandKey);
-        cacheService.delete(brandlistKey);
-    }
+//    /**
+//     * 删除品牌对应型号
+//     *
+//     * @param brandKey
+//     * @return
+//     */
+//    private void delBrandRedisKey(String brandKey) {
+//        String brandlistKey = ManagerRedisKeyConstant.build(ManagerRedisKeyConstant.IDGENERATOR_UDPB_KEY, brandKey);
+//        cacheService.delete(brandlistKey);
+//    }
 
 }

+ 14 - 13
energy-manage-service/src/main/java/com/energy/manage/service/service/units/impl/UnitServiceImpl.java

@@ -83,19 +83,20 @@ public class UnitServiceImpl implements UnitService {
 
     @Override
     public List<String> getBrandModelNameOrModelNumber(UnitDictBrandModelDto unitDictBrandModelDto) {
-        if (StringUtils.isEmpty(unitDictBrandModelDto.getManufacture())) {
-            return unitDictConstantsService.getUnitDictBrandModelList(unitDictBrandModelDto);
-        }
-        String brandlistKey = ManagerRedisKeyConstant.build(ManagerRedisKeyConstant.IDGENERATOR_UDPB_KEY, unitDictBrandModelDto.getManufacture());
-        String val = cacheService.get(brandlistKey);
-        if (StringUtils.isEmpty(val)) {
-            List<String> valueString = unitDictConstantsService.getUnitDictBrandModelList(unitDictBrandModelDto);
-            log.info("品牌对应型号 ===> " + JSON.toJSONString(valueString));
-            cacheService.add(brandlistKey, JSON.toJSONString(valueString));
-            return valueString;
-        }
-        List<String> modelList = JSONArray.parseArray(val, String.class);
-        return modelList;
+//        if (StringUtils.isEmpty(unitDictBrandModelDto.getManufacture())) {
+//            return unitDictConstantsService.getUnitDictBrandModelList(unitDictBrandModelDto);
+//        }
+        return unitDictConstantsService.getUnitDictBrandModelList(unitDictBrandModelDto);
+//        String brandlistKey = ManagerRedisKeyConstant.build(ManagerRedisKeyConstant.IDGENERATOR_UDPB_KEY, unitDictBrandModelDto.getManufacture());
+//        String val = cacheService.get(brandlistKey);
+//        if (StringUtils.isEmpty(val)) {
+//            List<String> valueString = unitDictConstantsService.getUnitDictBrandModelList(unitDictBrandModelDto);
+//            log.info("品牌对应型号 ===> " + JSON.toJSONString(valueString));
+//            cacheService.add(brandlistKey, JSON.toJSONString(valueString));
+//            return valueString;
+//        }
+//        List<String> modelList = JSONArray.parseArray(val, String.class);
+//        return modelList;
     }
 
     @Override

+ 1 - 1
energy-manage-service/src/main/java/com/energy/manage/service/service/windenginemill/impl/WindEngineMillServiceImpl.java

@@ -77,7 +77,6 @@ public class WindEngineMillServiceImpl extends BaseServiceImpl<WindEngineMillPO>
         BeanUtil.copyProperties(windEngineMillCreateDto, windEngineMillPO);
         String number = IdPrefixEnum.WIND_EILL_NUMBER.getCode().concat(IdGeneratorUtil.zeroFillUtil(cacheService.incr(ManagerRedisKeyConstant.build(ManagerRedisKeyConstant.IDGENERATOR_CONSTANTS_KEY, IdPrefixEnum.WIND_EILL_NUMBER.getCode()))));
         windEngineMillPO.setMillTypeCode(number);
-        windEngineMillPO.setCombination(StrUtil.format("{},{}", windEngineMillCreateDto.getMachineTypeCode(), windEngineMillCreateDto.getManufacturerCode()));
         windEngineMillPO.setCreateTime(new Date());
         windEngineMillPO.setUpdateTime(new Date());
         windEngineMillPO.setState(Constants.GLOBAL_IN_USE);
@@ -85,6 +84,7 @@ public class WindEngineMillServiceImpl extends BaseServiceImpl<WindEngineMillPO>
         // 生成厂商编号
         String mfNumber = IdPrefixEnum.WIND_EILL_MF_NUMBER.getCode().concat(IdGeneratorUtil.zeroFillUtil(cacheService.incr(ManagerRedisKeyConstant.build(ManagerRedisKeyConstant.IDGENERATOR_CONSTANTS_KEY, IdPrefixEnum.WIND_EILL_MF_NUMBER.getCode()))));
         windEngineMillPO.setManufacturerCode(mfNumber);
+        windEngineMillPO.setCombination(StrUtil.format("{},{}", windEngineMillCreateDto.getMachineTypeCode(), mfNumber));
 
         return windEngineMillMapper.insertUseGeneratedKeys(windEngineMillPO) > 0;
     }

+ 0 - 1
energy-manage-service/src/main/java/com/energy/manage/service/service/windfield/WindFieldService.java

@@ -118,5 +118,4 @@ public interface WindFieldService {
 
 
 
-
 }

+ 3 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/windfield/impl/WindFieldServiceImpl.java

@@ -46,6 +46,7 @@ import com.energy.manage.service.service.system.SysPermissionService;
 import com.energy.manage.service.service.windfield.WindFieldResourceService;
 import com.energy.manage.service.service.windfield.WindFieldService;
 import com.energy.manage.service.service.windrelation.WindRelationService;
+import com.energy.manage.service.util.DateUtils;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
@@ -213,6 +214,7 @@ public class WindFieldServiceImpl extends BaseServiceImpl<WindFieldPO> implement
             windFieldPO.setDelState(DeleteStatusEnum.NODELETE.getCode());
             windFieldPO.setCreateBy(windFieldImportDataDto.getCreateBy());
             windFieldPO.setDataSource(DataSourceTypeEnum.UPLOAD_SOURCE.getCode());
+            windFieldPO.setRatedCapacityNumber(Double.valueOf(0));
             list.add(windFieldPO);
         }
         if (CollectionUtils.isEmpty(list)) {
@@ -395,6 +397,7 @@ public class WindFieldServiceImpl extends BaseServiceImpl<WindFieldPO> implement
 
         WindFieldPO windFieldPO = new WindFieldPO();
         BeanUtil.copyProperties(windFieldUpdateDto, windFieldPO);
+
         Example queryExample = new Example(WindFieldPO.class);
         Example.Criteria criteria = queryExample.createCriteria();
         criteria.andEqualTo("fieldCode", windFieldPO.getFieldCode());

+ 4 - 3
energy-manage-service/src/main/java/com/energy/manage/service/task/AnalysisTask.java

@@ -20,6 +20,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 /**
+ * 分析排队任务执行
  * @author chy
  * @date 2025/2/11 16:18
  * @desc 分析任务执行
@@ -43,7 +44,7 @@ public class AnalysisTask {
 
     @XxlJob(value = "analysisTaskExecute")
     public void analysisTaskExecute() {
-        log.info("触发自动分析定时任务开始");
+        log.info("排队分析定时任务开始");
         try{
             int analysisingCount = resultMapper.selectAnalysisProcessingCount();
             if (analysisingCount > 0){
@@ -61,10 +62,10 @@ public class AnalysisTask {
             //更新任务优先级状态为已执行
             priorityRecordsMapper.updateExecuteStatus(priorityRecordsPo.getTaskId(), AnalysisConstants.ON_CALL);
         }catch (Exception e){
-            log.error("触发自动分析定时任务异常",e);
+            log.error("排队分析定时任务异常",e);
         }
 
-        log.info("触发自动分析定时任务结束");
+        log.info("排队分析定时任务结束");
     }
 
 

+ 7 - 57
energy-manage-service/src/main/java/com/energy/manage/service/task/AutoAnalysisTask.java

@@ -1,24 +1,13 @@
 package com.energy.manage.service.task;
 
-import com.energy.manage.service.constant.analysis.AnalysisConstants;
-import com.energy.manage.service.domain.dto.analysis.AnalysisDto;
-import com.energy.manage.service.domain.vo.analysis.AnalysisTypeVo;
-import com.energy.manage.service.domain.vo.datatransfer.DataTransferVo;
-import com.energy.manage.service.mappers.analysis.AnalysisResultMapper;
-import com.energy.manage.service.mappers.analysis.AnalysisTypeMapper;
-import com.energy.manage.service.mappers.datatransfer.DataTransferMapper;
-import com.energy.manage.service.service.analysis.AnalysisService;
+import com.energy.manage.service.service.analysis.AutoAnalysisService;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
-import java.util.stream.Collectors;
-
 /**
- * 自动分析定时任务
+ * 自动分析定时任务(在线数据自动分析)
  * @author chy
  * @date 2024/6/2 21:35
  * @desc
@@ -28,53 +17,14 @@ import java.util.stream.Collectors;
 public class AutoAnalysisTask {
 
     @Autowired
-    private AnalysisService analysisService;
-
-    @Autowired
-    private DataTransferMapper dataTransferMapper;
-
-    @Autowired
-    private AnalysisTypeMapper typeMapper;
-
-    @Autowired
-    private AnalysisResultMapper analysisResultMapper;
+    private AutoAnalysisService autoAnalysisService;
 
     /**
      * 自动分析
      */
-//    @XxlJob(value = "autoAnalysis")
-//    void autoAnalysis() {
-//        log.info("触发自动分析定时任务开始");
-//        if(analysisService.checkAnalysising()){
-//            log.info("当前有正在分析的数据,自动分析返回");
-//            return;
-//        }
-//        //获取转换完成且未自动分析的的批次号
-//        DataTransferVo dataTransferVo = dataTransferMapper.selectBatchCodeForAutoAnaly();
-//        if(dataTransferVo == null || StringUtils.isBlank(dataTransferVo.getBatchCode())){
-//            log.info("当前没有秒级、分钟级全部转换完成的数据,自动分析返回");
-//            return;
-//        }
-//        //分析调用
-//        analysisService.analysis(assignmentAnalysisDto(dataTransferVo));
-//        //自动分析调用完成之后更新状态
-//        analysisResultMapper.updateCallStatus(dataTransferVo.getBatchCode());
-//        log.info("触发自动分析定时任务结束");
-//    }
-
-
-    /**
-     * 设置分析参数
-     * @param dataTransferVo
-     * @return
-     */
-    private AnalysisDto assignmentAnalysisDto(DataTransferVo dataTransferVo){
-        AnalysisDto analysisDto = new AnalysisDto();
-        analysisDto.setAutoOrManual(AnalysisConstants.AUTO_ANALYSIS);
-        analysisDto.setDataBatchNum(dataTransferVo.getBatchCode());
-        analysisDto.setPowerFarmID(dataTransferVo.getFieldCode());
-        List<String> typeCodeList = typeMapper.selectAllVo().parallelStream().map(AnalysisTypeVo::getTypeFlag).collect(Collectors.toList());
-        analysisDto.setConfigAnalysis(typeCodeList);
-        return analysisDto;
+    @XxlJob(value = "autoAnalysis")
+    void autoAnalysis() {
+        autoAnalysisService.autoAnalysis();
     }
+
 }

+ 89 - 16
energy-manage-service/src/main/java/com/energy/manage/service/test/TestController.java

@@ -1,6 +1,8 @@
 package com.energy.manage.service.test;
 
 import com.alibaba.fastjson.JSONArray;
+import com.energy.manage.common.po.analysisdatarelationrecords.AnalysisDataRelationRecordsPo;
+import com.energy.manage.common.po.analysispriorityrecords.AnalysisPriorityRecordsPo;
 import com.energy.manage.common.reponse.ResultResp;
 import com.energy.manage.service.config.AnalysisTypeConfig;
 import com.energy.manage.service.config.annotations.UserLoginToken;
@@ -11,11 +13,15 @@ import com.energy.manage.service.domain.vo.analysis.AnalysisTypeVo;
 import com.energy.manage.service.domain.vo.datatransfer.DataTransferVo;
 import com.energy.manage.service.mappers.analysis.AnalysisResultMapper;
 import com.energy.manage.service.mappers.analysis.AnalysisTypeMapper;
+import com.energy.manage.service.mappers.analysisdatarelationrecords.AnalysisDataRelationRecordsMapper;
+import com.energy.manage.service.mappers.analysispriorityrecords.AnalysisPriorityRecordsMapper;
 import com.energy.manage.service.mappers.datatransfer.DataTransferMapper;
 import com.energy.manage.service.service.analysis.AnalysisService;
+import com.energy.manage.service.service.analysis.AutoAnalysisService;
 import com.energy.manage.service.util.IPUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
@@ -24,6 +30,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -42,13 +49,20 @@ public class TestController extends BaseServiceController {
     private AnalysisService analysisService;
 
     @Autowired
-    private DataTransferMapper dataTransferMapper;
+    private AutoAnalysisService autoAnalysisService;
 
     @Autowired
     private AnalysisTypeMapper typeMapper;
 
+
+    @Autowired
+    private AnalysisPriorityRecordsMapper priorityRecordsMapper;
+
+    @Autowired
+    private AnalysisResultMapper resultMapper;
+
     @Autowired
-    private AnalysisResultMapper analysisResultMapper;
+    private AnalysisDataRelationRecordsMapper dataRelationRecordsMapper;
 
     @Autowired
     private AnalysisTypeConfig analysisTypeConfig;
@@ -60,20 +74,7 @@ public class TestController extends BaseServiceController {
     @PostMapping("/testAutoAnalysis")
     public ResultResp autoAnalysis() {
         log.info("触发自动分析定时任务开始");
-        if(analysisService.checkAnalysising()){
-            log.info("当前有正在分析的数据,自动分析返回");
-            return success();
-        }
-        //获取转换完成且未自动分析的的批次号
-        DataTransferVo dataTransferVo = dataTransferMapper.selectBatchCodeForAutoAnaly();
-        if(dataTransferVo == null || StringUtils.isBlank(dataTransferVo.getBatchCode())){
-            log.info("当前没有秒级、分钟级全部转换完成的数据,自动分析返回");
-            return success();
-        }
-        //分析调用
-        analysisService.analysis(assignmentAnalysisDto(dataTransferVo));
-        //自动分析调用完成之后更新状态
-        analysisResultMapper.updateCallStatus(dataTransferVo.getBatchCode());
+        autoAnalysisService.autoAnalysis();
         log.info("触发自动分析定时任务结束");
         return success();
     }
@@ -90,6 +91,78 @@ public class TestController extends BaseServiceController {
         return success(IPUtils.getIpAddr(request));
     }
 
+    @PostMapping("/testAnalysisTask")
+    public ResultResp testIpUtils() {
+        log.info("触发自动分析定时任务开始");
+        try{
+            int analysisingCount = resultMapper.selectAnalysisProcessingCount();
+            if (analysisingCount > 0){
+                log.info("当前有正在分析的数据,排队分析返回");
+                return success(111);
+            }
+            //获取要执行的分析任务
+            AnalysisPriorityRecordsPo priorityRecordsPo = priorityRecordsMapper.queryFirstPriority();
+            if (priorityRecordsPo == null){
+                log.info("当前没有要分析的任务在排队中,分析返回");
+                return success(222);
+            }
+            //调用分析
+            analysisService.callAnalysis(getAnalysisDto(priorityRecordsPo));
+            //更新任务优先级状态为已执行
+            priorityRecordsMapper.updateExecuteStatus(priorityRecordsPo.getTaskId(), AnalysisConstants.ON_CALL);
+        }catch (Exception e){
+            log.error("触发自动分析定时任务异常",e);
+        }
+        log.info("触发自动分析定时任务结束");
+        return success();
+    }
+
+
+    /**
+     * 获取要执行的分析任务参数
+     * @return
+     */
+    private AnalysisDto getAnalysisDto(AnalysisPriorityRecordsPo priorityRecordsPo){
+        AnalysisDataRelationRecordsPo dataRelationRecordsPo = dataRelationRecordsMapper.selectByTaskId(priorityRecordsPo.getTaskId());
+        AnalysisDto returnDto = new AnalysisDto();
+        BeanUtils.copyProperties(dataRelationRecordsPo,returnDto);
+        //设置分析类型
+        returnDto.setConfigAnalysis(Arrays.asList(dataRelationRecordsPo.getConfigAnalysis().split(",")));
+        //设置风机
+        if(StringUtils.isNotEmpty(dataRelationRecordsPo.getTurbines())){
+            returnDto.setTurbines(Arrays.asList(dataRelationRecordsPo.getTurbines().split(",")));
+        }
+        //设置排除月份
+        if(StringUtils.isNotEmpty(dataRelationRecordsPo.getExcludingMonths())) {
+            returnDto.setExcludingMonths(Arrays.asList(dataRelationRecordsPo.getExcludingMonths().split(",")));
+        }
+        //设置有功功率
+        if(StringUtils.isNotEmpty(dataRelationRecordsPo.getValueActivePower())) {
+            returnDto.setValueActivePower(getDoubleList(dataRelationRecordsPo.getValueActivePower()));
+        }
+        //设置风机转速
+        if(StringUtils.isNotEmpty(dataRelationRecordsPo.getValueGeneratorSpeed())) {
+            returnDto.setValueGeneratorSpeed(getDoubleList(dataRelationRecordsPo.getValueGeneratorSpeed()));
+        }
+        //设置桨距角
+        if(StringUtils.isNotEmpty(dataRelationRecordsPo.getValuePitchAngle())) {
+            returnDto.setValuePitchAngle(getDoubleList(dataRelationRecordsPo.getValuePitchAngle()));
+        }
+        //设置风速
+        if(StringUtils.isNotEmpty(dataRelationRecordsPo.getValueWindSpeed())) {
+            returnDto.setValueWindSpeed(getDoubleList(dataRelationRecordsPo.getValueWindSpeed()));
+        }
+        return returnDto;
+    }
+
+    private List<Double> getDoubleList(String value){
+        if(StringUtils.isNotEmpty(value)){
+            return Arrays.asList(value.split(",")).stream().map(Double::parseDouble).collect(Collectors.toList());
+        }
+        return null;
+    }
+
+
     /**
      * 设置分析参数
      * @param dataTransferVo

+ 16 - 0
energy-manage-service/src/main/java/com/energy/manage/service/util/DateUtils.java

@@ -186,6 +186,22 @@ public class DateUtils {
 
 
     /**
+     * 加天数
+     * @param date
+     * @param days
+     * @return
+     */
+    public static Date addDays(Date date, int days) {
+        LocalDate localDate = convertDate2Date(date);
+        return Date.from(localDate.plusDays(days).atStartOfDay(ZoneId.systemDefault()).toInstant());
+    }
+
+    public static void main(String[] args) {
+        System.out.println(DateUtils.convertDate2StringYMD(addDays(new Date(),2)));
+    }
+
+
+    /**
      * Date--》LocalDate
      *
      * @param date

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

@@ -1,4 +1,3 @@
-#大唐部署环境
 #============================nacos配置=========================================
 spring.cloud.nacos.config.server-addr = 192.168.50.234:8848
 spring.cloud.nacos.config.namespace = 79c42a7a-2c7d-4dcf-8a2c-b334271e2191

+ 5 - 2
energy-manage-service/src/main/resources/mybatis/analysis/AnalysisGeneralFileMapper.xml

@@ -19,12 +19,15 @@
         type.type_name as analysis_type_name,
         general.file_addr,
         general.engine_type_code,
-        general.create_time
+        general.create_time,
+        mill.machine_type_code
         from analysis_general_file general
         left join analysis_type type
         on type.type_code = general.analysis_type_code
+        left join wind_engine_mill mill
+        on mill.mill_type_code = general.engine_type_code
         where general.batch_code = #{batchCode,jdbcType=VARCHAR}
-        <if test="analysisTypeCode!=null and analysisTypeCode!=''">
+        <if test="analysisTypeCode != null and analysisTypeCode != ''">
             and general.analysis_type_code = #{analysisTypeCode,jdbcType=VARCHAR}
         </if>
     </select>

+ 26 - 13
energy-manage-service/src/main/resources/mybatis/analysis/AnalysisResultMapper.xml

@@ -14,7 +14,6 @@
         <result column="update_by" property="updateBy" jdbcType="INTEGER"/>
         <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
         <result column="analysis_progress" property="analysisProgress" jdbcType="DECIMAL"/>
-        <result column="call_status" property="callStatus" jdbcType="INTEGER"/>
         <result column="on_off_call" property="onOffCall" jdbcType="INTEGER"/>
 
         <result column="field_code" property="fieldCode" jdbcType="VARCHAR"/>
@@ -23,8 +22,9 @@
         <result column="data_end_time" property="dataEndTime" jdbcType="DATE"/>
         <result column="sketch" property="sketch" jdbcType="VARCHAR"/>
         <result column="data_type_code" property="dataTypeCode" jdbcType="VARCHAR"/>
-        <result column="analysis_start_time" property="analysisStartTime" jdbcType="DATE"/>
-        <result column="analysis_finish_time" property="analysisFinishTime" jdbcType="DATE"/>
+        <result column="analysis_start_time" property="analysisStartTime" jdbcType="TIMESTAMP"/>
+        <result column="analysis_finish_time" property="analysisFinishTime" jdbcType="TIMESTAMP"/>
+        <result column="analysis_flag" property="analysisFlag" jdbcType="INTEGER"/>
 
     </resultMap>
 
@@ -152,27 +152,40 @@
         where batch_code = #{batchCode,jdbcType=VARCHAR}
     </update>
 
-    <update id="updateCallStatus" parameterType="java.lang.String">
-        update analysis_result
-        set call_status = 1
-        where batch_code = #{batchCode,jdbcType=VARCHAR}
-    </update>
-
     <update id="updateAnalysisState" parameterType="java.lang.String">
         update analysis_result
-        set analysis_state = 10
-        where analysis_state = -1 or analysis_state = 30
+        set analysis_state = 10,
+        err_state = 0,
+        err_code = '',
+        err_info = '',
+        analysis_progress = 0.00,
+        data_start_time = null,
+        data_end_time = null,
+        data_type_code = '',
+        analysis_start_time = null,
+        analysis_finish_time = null
+        where (analysis_state = -1 or analysis_state = 30)
         and batch_code = #{batchCode,jdbcType=VARCHAR}
     </update>
 
     <update id="updateByBatchCode" parameterType="com.energy.manage.service.domain.dto.analysis.AnalysisDto">
         update analysis_result
-        set  data_start_time = #{beginTime,jdbcType=INTEGER},
+        set
+            err_state = 0,
+            err_code = '',
+            err_info = '',
+            data_start_time = #{beginTime,jdbcType=INTEGER},
             data_end_time = #{endTime,jdbcType=VARCHAR},
             data_type_code = #{scada,jdbcType=VARCHAR},
             analysis_start_time = now(),
             update_time = now(),
-            update_by = #{updateBy,jdbcType=INTEGER}
+            update_by = #{updateBy,jdbcType=INTEGER},
+            <if test="autoOrManual != null and autoOrManual == 'manual'">
+                analysis_flag = 1
+            </if>
+            <if test="autoOrManual != null and autoOrManual == 'automatic'">
+                analysis_flag = 0
+            </if>
         where batch_code = #{dataBatchNum,jdbcType=VARCHAR}
     </update>
 </mapper>

+ 8 - 1
energy-manage-service/src/main/resources/mybatis/analysis/AnalysisTypeMapper.xml

@@ -21,12 +21,18 @@
         where parent_id != 0
     </select>
 
+    <select id="selectAllByOrderNum" resultMap="BaseResultMap">
+        select id,parent_id,type_code,type_name
+        from analysis_type
+        order by order_num
+    </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
+        where parent_id != 0
         <if test="typeCode != null and typeCode != ''">
             and type_code = #{typeCode,jdbcType=VARCHAR}
         </if>
@@ -49,5 +55,6 @@
         type_flag
         from analysis_type
         where  type_code = #{typeCode,jdbcType=VARCHAR}
+        limit 1
     </select>
 </mapper>

+ 106 - 0
energy-manage-service/src/main/resources/mybatis/autoanalysisconfigdetail/AutoAnalysisConfigDetailMapper.xml

@@ -0,0 +1,106 @@
+<?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.autoanalysisconfigdetail.AutoAnalysisConfigDetailMapper">
+  <resultMap id="BaseResultMap" type="com.energy.manage.common.po.autoanalysisconfigdetail.AutoAnalysisConfigDetailPo">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="field_code" jdbcType="VARCHAR" property="fieldCode" />
+    <result column="interval_days" jdbcType="INTEGER" property="intervalDays" />
+    <result column="start_time" jdbcType="TIMESTAMP" property="startTime" />
+    <result column="startup_state" jdbcType="INTEGER" property="startupState" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="config_unique_id" jdbcType="VARCHAR" property="configUniqueId" />
+  </resultMap>
+  <sql id="Base_Column_List">
+     field_code, interval_days, start_time, startup_state, config_unique_id,create_time, update_time
+  </sql>
+
+  <select id="selectByCondition" parameterType="com.energy.manage.service.domain.dto.analysis.AutoAnalysisConfigDetailDto"  resultType="com.energy.manage.service.domain.vo.analysis.AutoAnalysisConfigDetailVo">
+    select
+    detail.*,
+    field.field_name
+    from auto_analysis_config_detail detail
+    left join wind_field field
+    on detail.field_code = field.field_code
+    where 1=1
+      <if test="fieldCode != null and fieldCode != ''">
+        and detail.field_code = #{fieldCode}
+      </if>
+      <if test="fieldName != null and fieldName != ''">
+        and field.field_name like concat ('%', #{fieldName}, '%')
+      </if>
+      <if test="startupState != null">
+        and detail.startup_state = #{startupState}
+      </if>
+      order by detail.update_time desc
+  </select>
+
+  <select id="selectByUniqueId" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List" />
+    from auto_analysis_config_detail
+    where config_unique_id = #{configUniqueId}
+  </select>
+  <select id="selectExistConfig" parameterType="com.energy.manage.service.domain.dto.analysis.AutoAnalysisConfigDetailDto" resultType="int">
+    select count(*)
+    from auto_analysis_config_detail
+    where field_code = #{fieldCode}
+    and interval_days = #{intervalDays}
+    and start_time = #{startTime}
+
+  </select>
+
+  <insert id="insertConfig" parameterType="com.energy.manage.service.domain.dto.analysis.AutoAnalysisConfigDetailDto">
+    insert into auto_analysis_config_detail
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="fieldCode != null and fieldCode != ''">
+        field_code,
+      </if>
+      <if test="intervalDays != null">
+        interval_days,
+      </if>
+      <if test="startTime != null">
+        start_time,
+      </if>
+      <if test="startupState != null">
+        startup_state,
+      </if>
+      <if test="configUniqueId != null">
+        config_unique_id,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="fieldCode != null and fieldCode != ''">
+        #{fieldCode,jdbcType=VARCHAR},
+      </if>
+      <if test="intervalDays != null">
+        #{intervalDays,jdbcType=INTEGER},
+      </if>
+      <if test="startTime != null">
+        #{startTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="startupState != null">
+        #{startupState,jdbcType=BIT},
+      </if>
+      <if test="configUniqueId != null">
+        #{configUniqueId,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+
+  <update id="updateConfigByCondition" parameterType="com.energy.manage.service.domain.dto.analysis.AutoAnalysisConfigDetailDto">
+    update auto_analysis_config_detail
+    <set>
+      <if test="intervalDays != null">
+        interval_days = #{intervalDays,jdbcType=INTEGER},
+      </if>
+      <if test="startTime != null">
+        start_time = #{startTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="startupState != null">
+        startup_state = #{startupState,jdbcType=BIT},
+      </if>
+    </set>
+    where config_unique_id = #{configUniqueId,jdbcType=VARCHAR}
+  </update>
+</mapper>

+ 29 - 0
energy-manage-service/src/main/resources/mybatis/autoanalysisconfigdetailoptionrecords/AutoAnalysisConfigDetailOptionRecordsMapper.xml

@@ -0,0 +1,29 @@
+<?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.autoanalysisconfigdetailoptionrecords.AutoAnalysisConfigDetailOptionRecordsMapper">
+  <resultMap id="BaseResultMap" type="com.energy.manage.common.po.autoanalysisconfigdetailoptionrecords.AutoAnalysisConfigDetailOptionRecordsPo">
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="field_code" jdbcType="VARCHAR" property="fieldCode" />
+    <result column="source_inteval_days" jdbcType="INTEGER" property="sourceIntevalDays" />
+    <result column="source_start_time" jdbcType="TIMESTAMP" property="sourceStartTime" />
+    <result column="source_startup_state" jdbcType="INTEGER" property="sourceStartupState" />
+    <result column="option_flag" jdbcType="INTEGER" property="optionFlag" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="config_unique_id" jdbcType="VARCHAR" property="configUniqueId" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    id, field_code, source_inteval_days, source_start_time, source_startup_state, option_flag,config_unique_id,
+    create_time
+  </sql>
+
+  <select id="selectEditByCreateTime" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List" />
+    from auto_analysis_config_detail_option_records
+    where option_flag = 1
+    and config_unique_id = #{configUniqueId,jdbcType=VARCHAR}
+    order by create_time desc
+    limit 1
+  </select>
+
+</mapper>

+ 26 - 0
energy-manage-service/src/main/resources/mybatis/autoanalysisconfigrelations/AutoAnalysisConfigRelationsMapper.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.autoanalysisconfigrelations.AutoAnalysisConfigRelationsMapper">
+  <resultMap id="BaseResultMap" type="com.energy.manage.common.po.autoanalysisconfigrelations.AutoAnalysisConfigRelationsPo">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="config_unique_id" jdbcType="VARCHAR" property="configUniqueId" />
+    <result column="batch_code" jdbcType="VARCHAR" property="batchCode" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="start_time" jdbcType="DATE" property="startTime" />
+    <result column="end_time" jdbcType="DATE" property="endTime" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    config_unique_id, batch_code,start_time,end_time,create_time
+  </sql>
+
+  <select id="selectByConfigUniqueId" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List"/>
+    from auto_analysis_config_relations
+    where config_unique_id = #{configUniqueId,jdbcType=VARCHAR}
+    order by create_time desc
+    limit 1
+  </select>
+
+
+</mapper>

+ 0 - 18
energy-manage-service/src/main/resources/mybatis/datatransfer/DataTransferMapper.xml

@@ -46,24 +46,6 @@
         where auth.role_id = #{roleId,jdbcType=INTEGER}
     </select>
 
-    <select id="selectBatchCodeForAutoAnaly"   resultType="com.energy.manage.service.domain.vo.datatransfer.DataTransferVo">
-        select
-            trans.field_code,
-            trans.batch_code
-        from
-            data_transfer trans
-        left join analysis_result result
-        on result.batch_code = trans.batch_code
-        where
-                trans.batch_code IN ( SELECT batch_code FROM data_transfer WHERE transfer_type = 'minute' AND transfer_state = 1 )
-        and trans.transfer_type = 'second'
-        and trans.transfer_state = 1
-        and result.call_status = 0
-        and result.on_off_call = 1
-        order by transfer_finish_time
-        limit 1
-    </select>
-
     <select id="queryDataTransferGroup" resultType="com.energy.manage.service.domain.vo.datatransfer.DataTransferBatchShortVo">
         select
             transfer.field_code,

+ 22 - 17
energy-manage-service/src/main/resources/mybatis/system/OrganizationAuthMapper.xml

@@ -131,26 +131,31 @@
             wfba.analysis_state as analysisState
             from
             sys_organization_auth soa
-            inner join
+            left join
             (select
             field_code,
             count(1) as groupCount
             from
             wind_engine_group where del_state = 0 group by field_code) weg on soa.code_number = weg.field_code
-            inner join
-            (select
-                id,
-                batch_code,
-                field_code,
-                create_time,
-                analysis_state
-            from
-                analysis_result
-            where create_time in
-            (select
-            max(create_time)
-            from analysis_result
-            group by field_code)) wfba on soa.code_number = wfba.field_code
+            left join
+            (SELECT
+                a.id,
+                a.batch_code,
+                a.field_code,
+                a.create_time,
+                a.analysis_state
+            FROM
+                analysis_result a
+            INNER JOIN (
+                SELECT
+                    field_code,
+                    MAX(create_time) AS max_time
+                FROM
+                    analysis_result
+                GROUP BY
+                    field_code
+            ) b
+            ON a.field_code = b.field_code AND a.create_time = b.max_time) wfba on soa.code_number = wfba.field_code
             where 1=1
             and soa.code_type = 'field'
             and soa.role_id = #{roleId}
@@ -186,7 +191,7 @@
             (select field_code as fieldCode,count(1) as uncorrelatedCount from analysis_result where analysis_state = -1  group by field_code) uar
             on soa.code_number = uar.fieldCode
             left join
-            (select field_code as fieldCode,count(1) as errCount from analysis_result where 	err_state = 1  group by field_code) uer
+            (select field_code as fieldCode,count(1) as errCount from analysis_result where 	err_state = 1 and analysis_state = 30  group by field_code) uer
             on soa.code_number = uer.fieldCode
             left join
             (select field_code as fieldCode,count(1) as qCount from analysis_result where 	analysis_state = 10  group by field_code) uqr
@@ -210,7 +215,7 @@
             wr.code_number
             from sys_organization_auth a
             inner join wind_relation wr on a.code_number = wr.code_number where 1=1 and a.role_id =  #{roleId} and wr.type = 'field')
-        and err_state = 1
+        and err_state = 1 and analysis_state = 30
         </select>
 
 </mapper>

+ 7 - 1
energy-manage-service/src/main/resources/mybatis/windenginegroup/WindEngineGroupMapper.xml

@@ -24,7 +24,6 @@
         wind_company wc
         inner join
         wind_field wf on wc.company_code = wf.company_code
-        wind_field wf
         inner join
         wind_engine_group weg on wf.field_code = weg.field_code
         left JOIN
@@ -153,6 +152,13 @@
         </if>
     </select>
 
+    <select id="selectWindEngineGroupShortList" parameterType="java.lang.String" resultType="com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupShortVo">
+        SELECT *
+        from wind_engine_group
+        where field_code = #{fieldCode}
+
+    </select>
+
 
 
     <update id="updateWindEngineGroupList" parameterType="java.util.List">

+ 76 - 0
jarstart.sh

@@ -0,0 +1,76 @@
+#!/bin/bash
+
+echo Starting .........
+
+export LANG="en_US.UTF-8"
+
+nacospid = $(ps -ef|grep nacos|grep -v grep | awk '{print $2}')
+xxljobpid = $(ps -ef|grep xxl-job|grep -v grep | awk '{print $2}')
+platformpid = $(ps -ef|grep energy-manage-service|grep -v grep | awk '{print $2}')
+miniopid = $(ps -ef|grep minio|grep -v grep | awk '{print $2}')
+
+
+if systemctl is-active --quiet docker; then
+    echo "........docker 正在运行........"
+
+    if [ -n "$nacospid" ]
+      then
+        echo "正在运行的nacos进程 :$nacospid"
+        # kill -9 $nacospid
+        # echo  "========================================"
+        # echo "杀死:$nacospid 进程 "
+      else
+        echo "........ nacos未运行........"
+        # 启动nacos服务
+        /data/nacos/bin/startup.sh -m standalone
+        echo "........ nacos启动成功........"
+    fi
+
+    sleep 2s
+
+    if [ -n "$xxljobpid" ]
+      then
+        echo "正在运行的xxl-job进程 :$xxljobpid"
+        # kill -9 $xxljobpid
+        # echo  "========================================"
+        # echo "杀死:$xxljobpid 进程 "
+      else
+        echo "........ xxl-job未运行........"
+        # 启动xxl-job服务
+        nohup java -jar /data/xxl-job/xxl-job-admin.jar &
+        echo "........ xxl-job运行成功........"
+    fi
+
+    sleep 2s
+
+    if [ -n "$platformpid" ]
+      then
+        echo "正在运行的平台进程 :$platformpid"
+        # kill -9 $platformpid
+        # echo  "========================================"
+        # echo "杀死:$platformpid 进程 "
+      else
+        echo "........ 平台未运行........"
+        # 启动平台服务
+#        /data/app/start.sh
+        echo "........ 平台运行成功........"
+    fi
+
+    sleep 2s
+
+    if [ -n "$miniopid" ]
+      then
+        echo "正在运行的minio进程 :$miniopid"
+        # kill -9 $miniopid
+        # echo  "========================================"
+        # echo "杀死:$miniopid 进程 "
+      else
+        echo "........ minio文件系统未运行........"
+        # 启动minio服务
+        # /var/minio/minio-startup.sh
+        echo "........ minio运行成功........"
+    fi
+
+else
+    echo "........docker 未运行........"
+fi

+ 13 - 0
pom.xml

@@ -136,6 +136,13 @@
             <version>8.0.21</version>
         </dependency>
 
+        <!-- 达梦8 -->
+<!--        <dependency>-->
+<!--            <groupId>com.dameng</groupId>-->
+<!--            <artifactId>DmJdbcDriver18</artifactId>-->
+<!--            <version>8.1.1.193</version>-->
+<!--        </dependency>-->
+
         <!-- json -->
         <dependency>
             <groupId>com.alibaba</groupId>
@@ -355,6 +362,12 @@
             </properties>
         </profile>
         <profile>
+            <id>dm</id>
+            <properties>
+                <profiles.active>dm</profiles.active>
+            </properties>
+        </profile>
+        <profile>
             <id>zgh</id>
             <properties>
                 <profiles.active>zgh</profiles.active>