11 Commity aefaeb44f9 ... 5fea362a71

Autor SHA1 Wiadomość Data
  shiyue 5fea362a71 待办任务,队列数 2 miesięcy temu
  chenhongyan1989 e704a1e5fc 删除多余引用 2 miesięcy temu
  chenhongyan1989 6dbb32f5ca 修改排队状态sql语句 2 miesięcy temu
  chenhongyan1989 0fc63b7e97 删除分析中校验 2 miesięcy temu
  chenhongyan1989 ed9002a3f1 删除废弃的引用 2 miesięcy temu
  chenhongyan1989 f691fba965 手动分析新增开始时间,结束时间校验 2 miesięcy temu
  chenhongyan1989 e1c97cb96b 手动分析新增开始时间,结束时间校验 2 miesięcy temu
  chenhongyan1989 7a1b0c0fc5 删除lab标签 2 miesięcy temu
  chenhongyan1989 72706a47fa 修改分析接口bug 2 miesięcy temu
  chenhongyan1989 7dd66374a3 分析增加lab标签 2 miesięcy temu
  chenhongyan1989 2d533b4ef9 TestController中新增测试排队分析任务 3 miesięcy temu

+ 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;
+
+
+
+
 }

+ 2 - 1
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);

+ 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;
 
     /**

+ 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;
+
 }

+ 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;
 }

+ 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;
+
 
 
 }

+ 10 - 5
energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/impl/AnalysisServiceImpl.java

@@ -13,7 +13,6 @@ 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;
@@ -295,9 +294,9 @@ public class AnalysisServiceImpl implements AnalysisService {
     @Override
     public ResultResp analysis(AnalysisDto analysisDto) {
         try {
-            if(checkAnalysising()){
-                return ResultResp.FAIL(ConstVar.ANALYSISING);
-            }
+//            if(checkAnalysising()){
+//                return ResultResp.FAIL(ConstVar.ANALYSISING);
+//            }
             //手动分析要进行分析类型code转换为flag(便于json分析类型赋值)
             // (是因为算法分析类型code与平台分析类型code没有做统一,开发之后才做统一,所以需要转换)
             if(analysisDto.getAutoOrManual().equalsIgnoreCase(AnalysisConstants.MANUAL_ANALYSIS)){
@@ -1009,7 +1008,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()));

+ 87 - 0
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,14 @@ 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.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 +29,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;
 
@@ -51,6 +57,15 @@ public class TestController extends BaseServiceController {
     private AnalysisResultMapper analysisResultMapper;
 
     @Autowired
+    private AnalysisPriorityRecordsMapper priorityRecordsMapper;
+
+    @Autowired
+    private AnalysisResultMapper resultMapper;
+
+    @Autowired
+    private AnalysisDataRelationRecordsMapper dataRelationRecordsMapper;
+
+    @Autowired
     private AnalysisTypeConfig analysisTypeConfig;
 
     @Value("${download.url}")
@@ -90,6 +105,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

+ 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

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

@@ -170,7 +170,7 @@
         data_type_code = '',
         analysis_start_time = null,
         analysis_finish_time = null
-        where analysis_state = -1 or analysis_state = 30
+        where (analysis_state = -1 or analysis_state = 30)
         and batch_code = #{batchCode,jdbcType=VARCHAR}
     </update>
 

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

@@ -55,5 +55,6 @@
         type_flag
         from analysis_type
         where  type_code = #{typeCode,jdbcType=VARCHAR}
+        limit 1
     </select>
 </mapper>