浏览代码

联调批次 数据操作

chenhongyan1989 1 年之前
父节点
当前提交
5d861fed72
共有 25 个文件被更改,包括 392 次插入149 次删除
  1. 2 2
      energy-manage-common/src/main/java/com/energy/manage/common/po/datatransfer/DataTransferHistoryPo.java
  2. 7 2
      energy-manage-common/src/main/java/com/energy/manage/common/po/datatransfer/DataTransferPo.java
  3. 6 0
      energy-manage-common/src/main/java/com/energy/manage/common/po/system/SysOrganizationAuthPO.java
  4. 10 7
      energy-manage-service/src/main/java/com/energy/manage/service/controller/datatransfer/DataTransferController.java
  5. 7 1
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/datatransfer/DataTransferTypePathDto.java
  6. 34 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/datatransfer/EditDataTransferTypeDto.java
  7. 3 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windfieldbatch/WindFieldBatchDto.java
  8. 6 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/datatransfer/DataTransferTypeVo.java
  9. 11 2
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/datatransfer/DataTransferVo.java
  10. 5 0
      energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/windfieldbatch/WindFieldBatchVo.java
  11. 4 3
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/datatransfer/DataTransferMapper.java
  12. 8 0
      energy-manage-service/src/main/java/com/energy/manage/service/mappers/windfield/WindFieldMapper.java
  13. 21 0
      energy-manage-service/src/main/java/com/energy/manage/service/property/analysis/AlgorithmProperties.java
  14. 63 11
      energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/impl/AnalysisServiceImpl.java
  15. 12 0
      energy-manage-service/src/main/java/com/energy/manage/service/service/datatransfer/DataTransferService.java
  16. 40 16
      energy-manage-service/src/main/java/com/energy/manage/service/service/datatransfer/impl/DataTransferServiceImpl.java
  17. 2 2
      energy-manage-service/src/main/java/com/energy/manage/service/service/system/impl/SysOrganizationAuthServiceImpl.java
  18. 7 1
      energy-manage-service/src/main/java/com/energy/manage/service/service/windfieldbatch/impl/WindFieldBatchServiceImpl.java
  19. 77 41
      energy-manage-service/src/main/java/com/energy/manage/service/test/TestJson.java
  20. 4 0
      energy-manage-service/src/main/resources/bootstrap.properties
  21. 32 52
      energy-manage-service/src/main/resources/mybatis/datatransfer/DataTransferMapper.xml
  22. 6 5
      energy-manage-service/src/main/resources/mybatis/datatransferhistory/DataTransferHistoryMapper.xml
  23. 9 3
      energy-manage-service/src/main/resources/mybatis/system/OrganizationAuthMapper.xml
  24. 1 1
      energy-manage-service/src/main/resources/mybatis/windenginebatch/WindFieldBatchMapper.xml
  25. 15 0
      energy-manage-service/src/main/resources/mybatis/windfield/WindFieldMapper.xml

+ 2 - 2
energy-manage-common/src/main/java/com/energy/manage/common/po/datatransfer/DataTransferHistoryPo.java

@@ -37,12 +37,12 @@ public class DataTransferHistoryPo {
     /**
      * 机组数量
      */
-    private Integer enginCount ;
+    private Integer engineCount ;
 
     /**
      * 转换地址
      */
-    private String transferFileAddr ;
+    private String transferAddr ;
 
 
     /**

+ 7 - 2
energy-manage-common/src/main/java/com/energy/manage/common/po/datatransfer/DataTransferPo.java

@@ -44,7 +44,12 @@ public class DataTransferPo {
     /**
      * 转换路径
      */
-    private String transferFileAddr ;
+    private String transferAddr ;
+
+    /**
+     * 时间粒度
+     */
+    private Integer timeGranularity = 0;
 
     /**
      * 异常信息
@@ -60,7 +65,7 @@ public class DataTransferPo {
     /**
      * 转换状态
      */
-    private int transferState ;
+    private int transferState = -1;
 
     /**
      * 创建人

+ 6 - 0
energy-manage-common/src/main/java/com/energy/manage/common/po/system/SysOrganizationAuthPO.java

@@ -22,6 +22,12 @@ public class SysOrganizationAuthPO extends NewBaseDomain {
      * 组织编号
      */
     private String codeNumber;
+
+    /**
+     * 风场名称
+     */
+    private String fieldName;
+
     /**
      * 组织类型
      */

+ 10 - 7
energy-manage-service/src/main/java/com/energy/manage/service/controller/datatransfer/DataTransferController.java

@@ -5,6 +5,7 @@ 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.datatransfer.DataTransferDto;
+import com.energy.manage.service.domain.dto.datatransfer.EditDataTransferTypeDto;
 import com.energy.manage.service.domain.vo.datatransfer.DataTransferVo;
 import com.energy.manage.service.service.datatransfer.DataTransferService;
 import io.swagger.annotations.Api;
@@ -57,12 +58,14 @@ public class DataTransferController extends BaseServiceController {
     @UserLoginToken
     @ApiOperation("转换/重新转换")
     @PostMapping("/dataTransfer")
-    public ResultResp dataTransfer(@RequestParam String batchCode,
-                                   @RequestParam String dataTransferType,
-                                   @RequestParam String dataTransferTypePath){
-        return dataTransferService.dataTransfer(batchCode,
-                                                dataTransferType,
-                                                dataTransferTypePath,
-                                                getUserId());
+    public ResultResp dataTransfer(@RequestBody EditDataTransferTypeDto editDto){
+        return dataTransferService.dataTransfer(editDto.getBatchCode(), editDto.getDataTransferType(),editDto.getDataTransferAddr(), getUserId());
+    }
+
+    @UserLoginToken
+    @ApiOperation("时间粒度编辑")
+    @PostMapping("/editTimeGranularity")
+    public ResultResp editTimeGranularity(@RequestBody EditDataTransferTypeDto editDto){
+        return dataTransferService.editTimeGranularity(editDto.getBatchCode(), editDto.getDataTransferType(), editDto.getTimeGranularity(),getUserId());
     }
 }

+ 7 - 1
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/datatransfer/DataTransferTypePathDto.java

@@ -18,5 +18,11 @@ public class DataTransferTypePathDto {
     /**
      * 转换类型地址
      */
-    private String transferFileAddr;
+    private String transferAddr;
+
+    /**
+     * 时间粒度
+     */
+    private Integer timeGranularity;
+
 }

+ 34 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/datatransfer/EditDataTransferTypeDto.java

@@ -0,0 +1,34 @@
+package com.energy.manage.service.domain.dto.datatransfer;
+
+import lombok.Data;
+
+/**
+ * 编辑转换数据入参
+ * @author chy
+ * @date 2024/6/5 10:35
+ * @desc
+ */
+@Data
+public class EditDataTransferTypeDto{
+
+    /**
+     * 批次号
+     */
+    private String batchCode;
+
+    /**
+     * 转换类型
+     */
+    private String dataTransferType;
+
+    /**
+     * 转换类型地址
+     */
+    private String dataTransferAddr;
+
+    /**
+     * 时间粒度
+     */
+    private Integer timeGranularity;
+
+}

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

@@ -4,6 +4,7 @@ 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;
 
@@ -64,12 +65,14 @@ public class WindFieldBatchDto extends BaseDto {
     /**
      * 创建开始时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date startTime;
 
     /**
      * 创建结束时间
      */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date endTime;
 }

+ 6 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/datatransfer/DataTransferTypeVo.java

@@ -19,4 +19,10 @@ public class DataTransferTypeVo {
      * 转换类型名称
      */
     private String transferTypeName;
+
+    /**
+     * 时间粒度名称
+     */
+    private String timeGranularityName;
+
 }

+ 11 - 2
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/datatransfer/DataTransferVo.java

@@ -48,7 +48,7 @@ public class DataTransferVo {
     /**
      * 转换类型
      */
-    private Integer transferType;
+    private String transferType;
 
     /**
      * 转换类型名称
@@ -58,8 +58,17 @@ public class DataTransferVo {
     /**
      * 转换文件地址
      */
-    private String transferFileAddr;
+    private String transferAddr;
 
+    /**
+     * 时间粒度
+     */
+    private Integer timeGranularity;
+
+    /**
+     * 时间粒度名称
+     */
+    private String timeGranularityName;
 
 
 }

+ 5 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/vo/windfieldbatch/WindFieldBatchVo.java

@@ -19,6 +19,11 @@ public class WindFieldBatchVo {
     private String batchCode;
 
     /**
+     * 批次名称
+     */
+    private String batchName;
+
+    /**
      * 风场名称
      */
     private String fieldName;

+ 4 - 3
energy-manage-service/src/main/java/com/energy/manage/service/mappers/datatransfer/DataTransferMapper.java

@@ -4,6 +4,7 @@ import com.energy.manage.common.mapper.MyMapper;
 import com.energy.manage.common.po.datatransfer.DataTransferPo;
 import com.energy.manage.service.domain.dto.datatransfer.DataTransferDto;
 import com.energy.manage.service.domain.vo.datatransfer.DataTransferVo;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -37,15 +38,15 @@ public interface DataTransferMapper extends MyMapper<DataTransferPo>{
      * @param poList
      * @return
      */
-    int addDataTransferBatch(List<DataTransferPo> poList);
+    int addDataTransferBatch(@Param("poList") List<DataTransferPo> poList);
 
     /**
      * 查询批次号下的数据转换列表
      * @param batchCode
-     * @param dataTransferType
+     * @param transferType
      * @return
      */
-    DataTransferPo selectByBatchCodeAndDataTransferType(String batchCode,String dataTransferType);
+    DataTransferPo selectByBatchCodeAndDataTransferType(@Param("batchCode") String batchCode,@Param("transferType") String transferType);
 
 
     /**

+ 8 - 0
energy-manage-service/src/main/java/com/energy/manage/service/mappers/windfield/WindFieldMapper.java

@@ -5,6 +5,7 @@ import com.energy.manage.common.po.system.SysUserRolePO;
 import com.energy.manage.common.po.windfield.WindFieldPO;
 import com.energy.manage.service.domain.dto.windfield.WindFieldPageDto;
 import com.energy.manage.service.domain.vo.windfield.WindFieldPageVo;
+import com.energy.manage.service.domain.vo.windfield.WindFieldVo;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -22,5 +23,12 @@ public interface WindFieldMapper extends MyMapper<WindFieldPO> {
 
     List<WindFieldPageVo> selectWindFieldPageByfield(@Param("item") WindFieldPageDto windFieldPageDto);
 
+    /**
+     * 根据编号查询风场信息
+     * @param codeNumber
+     * @return
+     */
+    WindFieldVo selectByCodeNumber(@Param("codeNumber") String codeNumber);
+
 
 }

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

@@ -25,11 +25,22 @@ public class AlgorithmProperties {
     public static String analysisJson;
 
     /**
+     * 分析类型json
+     */
+    public static String configAnalysisJson;
+
+    /**
      * 图像设置参数属性
      */
     public static List<String> graphSetsProperties;
 
     /**
+     * scada 数据过滤属性
+     */
+    public static List<String> customFilterProperties;
+
+
+    /**
      * 分析类型属性
      */
     public static String configAnalysisProperties;
@@ -50,8 +61,18 @@ public class AlgorithmProperties {
         AlgorithmProperties.graphSetsProperties = graphSetsProperties;
     }
 
+    @Value("${customFilter.properties}")
+    public void setCustomFilterProperties(List<String> customFilterProperties){
+        AlgorithmProperties.customFilterProperties = customFilterProperties;
+    }
+
     @Value("${analysis.properties}")
     public void setConfigAnalysisProperties(String configAnalysis){
         AlgorithmProperties.configAnalysisProperties = configAnalysis;
     }
+
+    @Value("${analysis.type.json}")
+    public void setConfigAnalysisJson(String configAnalysisJson){
+        AlgorithmProperties.configAnalysisJson = configAnalysisJson;
+    }
 }

+ 63 - 11
energy-manage-service/src/main/java/com/energy/manage/service/service/analysis/impl/AnalysisServiceImpl.java

@@ -20,6 +20,7 @@ import com.energy.manage.service.util.TreeUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
@@ -29,6 +30,7 @@ import org.springframework.stereotype.Service;
 
 import java.lang.reflect.Field;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -63,6 +65,9 @@ public class AnalysisServiceImpl implements AnalysisService {
     @Autowired
     private AnalysisGeneralFileMapper generalFileMapper;
 
+
+    private static ObjectMapper mapper = new ObjectMapper();
+
     /**
      * 分析结果列表
      * @param analysisResultDto
@@ -86,7 +91,6 @@ public class AnalysisServiceImpl implements AnalysisService {
                 return ResultResp.FAIL(ConstVar.ANALYSISING);
             }
             //将配置文件中的算法json转换为对象
-            ObjectMapper mapper = new ObjectMapper();
             JsonNode rootNode = mapper.readTree(AlgorithmProperties.analysisJson);
             //将前端入参转换为算法标准json
             dataProccess(analysisDto,rootNode);
@@ -275,7 +279,7 @@ public class AnalysisServiceImpl implements AnalysisService {
             field.setAccessible(true);
             try {
                 if(field.get(analysisDto) != null){
-                    updateNodesByPropertyName(rootNode, field.getName(), field.get(analysisDto).toString());
+                    updateNodesByPropertyName(rootNode, field.getName(), field.get(analysisDto));
                 }
             } catch (IllegalAccessException e) {
                 e.printStackTrace();
@@ -311,16 +315,21 @@ public class AnalysisServiceImpl implements AnalysisService {
 
     /**
      * 根据属性修改json值
-     * @param node 节点
+     * @param parentNode 节点
      * @param propertyName 属性名称
      * @param newValue 新值
      */
-    private static void updateNodesByPropertyName(JsonNode node, String propertyName, String newValue) {
-        if (node.isObject()) {
-            node.fields().forEachRemaining(entry -> {
+    private void updateNodesByPropertyName(JsonNode parentNode, String propertyName, Object newValue) {
+        if (parentNode.isObject()) {
+            parentNode.fields().forEachRemaining(entry -> {
                 // 匹配到属性名称,进行值的修改
                 if (entry.getKey().equals(propertyName)) {
-                    assignmentByPropertyName(node, propertyName, newValue);
+                    //判断当前节点有没有子节点
+                    if(parentNode.isContainerNode()){
+                        assignmentByPropertyName(entry.getValue(), propertyName, newValue);
+                    }else{
+                        ((ObjectNode) parentNode).put(propertyName, newValue.toString());
+                    }
                 }
                 // 递归搜索子节点
                 updateNodesByPropertyName(entry.getValue(), propertyName, newValue);
@@ -330,18 +339,61 @@ public class AnalysisServiceImpl implements AnalysisService {
 
     /**
      * 处理特殊属性
-     * @param node
+     * @param subNode
      * @param propertyName
      * @param newValue
      */
-    private static void  assignmentByPropertyName(JsonNode node, String propertyName, String newValue){
-        if(AlgorithmProperties.graphSetsProperties.contains(propertyName)){
+    private void  assignmentByPropertyName(JsonNode subNode, String propertyName, Object newValue){
+        //scada数据筛选过滤 、图像设置特殊处理
+        if(AlgorithmProperties.graphSetsProperties.contains(propertyName)
+                || AlgorithmProperties.customFilterProperties.contains(propertyName)){
+            dealGraphSetsAndCustomFilter(subNode, newValue);
             return ;
         }
+        //分析类型特殊处理
         if(AlgorithmProperties.configAnalysisProperties.equals(propertyName)){
+            dealConfigAnalysis(subNode, newValue);
             return;
         }
-        ((ObjectNode) node).put(propertyName, newValue);
+    }
+
+    /**
+     * scada数据筛选过滤 、图像设置特殊处理
+     * @param subNode
+     * @param newValue
+     */
+    private void dealGraphSetsAndCustomFilter(JsonNode subNode, Object newValue){
+        List<Integer> list = (List) newValue;
+        AtomicInteger index = new AtomicInteger(0);
+        subNode.fields().forEachRemaining(entry -> {
+            ((ObjectNode) subNode).put(entry.getKey(), list.get(index.get()));
+            index.incrementAndGet();
+        });
+    }
+
+    /**
+     * 分析类型处理
+     * @param subNode
+     * @param newValue
+     */
+    private void dealConfigAnalysis(JsonNode subNode, Object newValue){
+        try{
+            ArrayNode arrayNode = (ArrayNode) subNode;
+            List<String> analysisTypes = (List) newValue;
+            for(int i = 0 ; i < analysisTypes.size() ; i++){
+                JsonNode childNode = mapper.readTree(AlgorithmProperties.configAnalysisJson);
+                //分析类型解析
+                String[] types = analysisTypes.get(i).split("\\|");
+                AtomicInteger index =  new AtomicInteger(0);
+                childNode.fields().forEachRemaining(entry-> {
+                    ((ObjectNode)childNode).put(entry.getKey(), types[index.get()]);
+                    index.incrementAndGet();
+                });
+                arrayNode.add(childNode);
+            }
+        }catch (JsonProcessingException jsonExcep){
+            log.error("分析类型解析失败:",jsonExcep);
+        }
     }
 
 }

+ 12 - 0
energy-manage-service/src/main/java/com/energy/manage/service/service/datatransfer/DataTransferService.java

@@ -1,5 +1,6 @@
 package com.energy.manage.service.service.datatransfer;
 
+import com.energy.manage.common.po.datatransfer.DataTransferPo;
 import com.energy.manage.common.reponse.ResultResp;
 import com.energy.manage.service.domain.dto.datatransfer.DataTransferDto;
 import com.energy.manage.service.domain.vo.datatransfer.DataTransferQueryAndAddVo;
@@ -46,4 +47,15 @@ public interface DataTransferService {
                             Integer updateBy);
 
 
+    /**
+     * 时间粒度编辑
+     * @param batchCode
+     * @param dataTransferType
+     * @param timeGranularity
+     * @param userId
+     * @return
+     */
+    ResultResp editTimeGranularity(String batchCode, String dataTransferType, Integer timeGranularity,Integer userId);
+
+
 }

+ 40 - 16
energy-manage-service/src/main/java/com/energy/manage/service/service/datatransfer/impl/DataTransferServiceImpl.java

@@ -70,7 +70,9 @@ public class DataTransferServiceImpl implements DataTransferService {
             return queryAndAddVo;
         }
         queryAndAddVo.setBatchCodeList(batchCodeList);
-        queryAndAddVo.setDataTransferTypeVoList(typeMapper.selectAllInfo());
+        List<DataTransferTypeVo> typeVos = typeMapper.selectAllInfo();
+        typeVos.parallelStream().forEach(item -> item.setTimeGranularityName(item.getTransferTypeName().replace("路径","时间粒度")));
+        queryAndAddVo.setDataTransferTypeVoList(typeVos);
         return queryAndAddVo;
     }
 
@@ -86,7 +88,10 @@ public class DataTransferServiceImpl implements DataTransferService {
             List<DataTransferTypeVo> typeVos = dataTransferTypeMapper.selectAllInfo();
             if(CollectionUtils.isNotEmpty(typeVos)){
                 //设置转换类型名称
-                dataTransferVos.parallelStream().forEach(item -> item.setTransferTypeName(getDataTransferTypeName(typeVos,item.getTransferType())));
+                dataTransferVos.parallelStream().forEach(item -> {
+                    item.setTransferTypeName(getDataTransferTypeName(typeVos,item.getTransferType()));
+                    item.setTimeGranularityName(item.getTransferTypeName().replace("路径","时间粒度"));
+                });
             }
         }
         return dataTransferVos;
@@ -127,18 +132,38 @@ public class DataTransferServiceImpl implements DataTransferService {
         }
         DataTransferPo po = dataTransferMapper.selectByBatchCodeAndDataTransferType(batchCode,dataTransferType);
         //如果数据库中存在的数据路径地址不为空的话 说明已经转换过了 需要重新转换 备份数据
-        if(StringUtils.isNotBlank(po.getTransferFileAddr())){
+        if(po != null && StringUtils.isNotBlank(po.getTransferAddr())){
             saveHistory(po);
             //状态重新置换为未转换
             po.setTransferState(-1);
         }
-        po.setTransferFileAddr(dataTransferTypePath);
+        po.setTransferAddr(dataTransferTypePath);
         po.setUpdateBy(updateBy);
         return ResultResp.SUCCESS(dataTransferMapper.updateDataTransfer(po));
     }
 
 
     /**
+     * 时间粒度编辑
+     * @param batchCode
+     * @param dataTransferType
+     * @param timeGranularity
+     * @param userId
+     * @return
+     */
+    @Override
+    public ResultResp editTimeGranularity(String batchCode, String dataTransferType, Integer timeGranularity, Integer userId) {
+        DataTransferPo po = dataTransferMapper.selectByBatchCodeAndDataTransferType(batchCode,dataTransferType);
+        if(po != null){
+            po.setTimeGranularity(timeGranularity);
+            po.setUpdateBy(userId);
+            dataTransferMapper.updateDataTransfer(po);
+        }
+        return ResultResp.SUCCESS();
+    }
+
+
+    /**
      * 根据角色获取批次编号
      * @param roleId
      * @return
@@ -159,7 +184,7 @@ public class DataTransferServiceImpl implements DataTransferService {
      * @param dataTransferType
      * @return
      */
-    private String getDataTransferTypeName(List<DataTransferTypeVo> typeVos,Integer dataTransferType){
+    private String getDataTransferTypeName(List<DataTransferTypeVo> typeVos,String dataTransferType){
         return typeVos.parallelStream().filter(typeVo -> typeVo.getTransferType().equals(dataTransferType))
                 .map(DataTransferTypeVo::getTransferTypeName)
                 .findFirst()
@@ -181,9 +206,12 @@ public class DataTransferServiceImpl implements DataTransferService {
         Integer userId = dataTransferDto.getUserId();
         dataTransferPo.setCreateBy(userId);
         dataTransferPo.setUpdateBy(userId);
-        String path = getTransferFileAddr(dataTransferDto,dataTransferType);
-        if(StringUtils.isNotBlank(path)){
-            dataTransferPo.setTransferFileAddr(path);
+        DataTransferTypePathDto pathDto = getTransferAddr(dataTransferDto,dataTransferType);
+        if(pathDto != null && pathDto.getTransferAddr() != null){
+            dataTransferPo.setTransferAddr(pathDto.getTransferAddr());
+        }
+        if(pathDto != null && pathDto.getTimeGranularity() != null){
+            dataTransferPo.setTimeGranularity(pathDto.getTimeGranularity());
         }
         return dataTransferPo;
     }
@@ -194,13 +222,9 @@ public class DataTransferServiceImpl implements DataTransferService {
      * @param dataTransferType
      * @return
      */
-    private String getTransferFileAddr(DataTransferDto dataTransferDto,String dataTransferType){
+    private DataTransferTypePathDto getTransferAddr(DataTransferDto dataTransferDto,String dataTransferType){
         List<DataTransferTypePathDto>  pathDtoList = dataTransferDto.getDataTransferTypePathDtoList();
-        if(CollectionUtils.isNotEmpty(pathDtoList)){
-            Optional optional = pathDtoList.parallelStream().filter(item -> item.getTransferType().equals(dataTransferType)).map(DataTransferTypePathDto::getTransferFileAddr).findFirst();
-            return optional.isPresent() ? optional.get().toString() : null;
-        }
-        return null;
+        return pathDtoList.stream().filter(item -> item.getTransferType().equals(dataTransferType)).findFirst().orElse(null);
     }
 
 
@@ -229,8 +253,8 @@ public class DataTransferServiceImpl implements DataTransferService {
     private void saveHistory(DataTransferPo po){
         DataTransferHistoryPo historyPo = new DataTransferHistoryPo();
         historyPo.setBatchCode(po.getBatchCode());
-        historyPo.setEnginCount(po.getEngineCount());
-        historyPo.setTransferFileAddr(po.getTransferFileAddr());
+        historyPo.setEngineCount(po.getEngineCount());
+        historyPo.setTransferAddr(po.getTransferAddr());
         historyPo.setTransferType(po.getTransferType());
         historyPo.setErrInfo(po.getErrInfo());
         historyPo.setTransferFinishTime(po.getTransferFinishTime());

+ 2 - 2
energy-manage-service/src/main/java/com/energy/manage/service/service/system/impl/SysOrganizationAuthServiceImpl.java

@@ -37,9 +37,9 @@ public class SysOrganizationAuthServiceImpl implements SysOrganizationAuthServic
     public Map<String, List<SysOrganizationAuthPO>> queryCodeNunByRoleId(Integer roleId){
         Map<String,List<SysOrganizationAuthPO>> returnMap = new HashMap<>();
         List<SysOrganizationAuthPO> authPoList = sysOrganizationAuthMapper.selectByRoleId(roleId);
-        authPoList.parallelStream().filter(po -> po.getCodeType().equals(TypeRelationEnum.WIND_FIELD_NUMBER.getCode()))
+        List<SysOrganizationAuthPO> returnList = authPoList.parallelStream().filter(po -> po.getCodeType().equals(TypeRelationEnum.WIND_FIELD_NUMBER.getCode()))
                                                           .collect(Collectors.toList());
-        returnMap.put(FILE_CODE_LIST_KEY,authPoList);
+        returnMap.put(FILE_CODE_LIST_KEY,returnList);
         return returnMap;
     }
 }

+ 7 - 1
energy-manage-service/src/main/java/com/energy/manage/service/service/windfieldbatch/impl/WindFieldBatchServiceImpl.java

@@ -4,8 +4,9 @@ import com.energy.manage.common.constant.redis.ManagerRedisKeyConstant;
 import com.energy.manage.common.enums.IdPrefixEnum;
 import com.energy.manage.common.util.IdGeneratorUtil;
 import com.energy.manage.service.domain.dto.windfieldbatch.WindFieldBatchDto;
+import com.energy.manage.service.domain.vo.windfield.WindFieldVo;
 import com.energy.manage.service.domain.vo.windfieldbatch.WindFieldBatchVo;
-import com.energy.manage.service.mappers.datatransfer.DataTransferMapper;
+import com.energy.manage.service.mappers.windfield.WindFieldMapper;
 import com.energy.manage.service.mappers.windfieldbatch.WindFieldBatchMapper;
 import com.energy.manage.service.service.cache.CacheService;
 import com.energy.manage.service.service.windfieldbatch.WindFieldBatchService;
@@ -29,6 +30,9 @@ public class WindFieldBatchServiceImpl implements WindFieldBatchService {
      private WindFieldBatchMapper windFieldBatchMapper;
 
      @Autowired
+     private WindFieldMapper windFieldMapper;
+
+     @Autowired
      private CacheService cacheService;
 
     /**
@@ -38,6 +42,8 @@ public class WindFieldBatchServiceImpl implements WindFieldBatchService {
     @Override
     public int addWindFieldBatch(WindFieldBatchDto windEgineBatchDto) {
         windEgineBatchDto.setBatchCode(createWindFieldBatchCode(windEgineBatchDto.getFieldCode()));
+        WindFieldVo windFieldVo = windFieldMapper.selectByCodeNumber(windEgineBatchDto.getFieldCode());
+        windEgineBatchDto.setFieldName(windFieldVo.getFieldName());
         return windFieldBatchMapper.addWindFieldBatch(windEgineBatchDto);
     }
 

+ 77 - 41
energy-manage-service/src/main/java/com/energy/manage/service/test/TestJson.java

@@ -1,16 +1,17 @@
 package com.energy.manage.service.test;
 
 import com.energy.manage.service.domain.dto.analysis.AnalysisDto;
+import com.energy.manage.service.property.analysis.AlgorithmProperties;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.IntNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 
 import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -20,6 +21,8 @@ import java.util.stream.Collectors;
  */
 public class TestJson {
 
+    private static  ObjectMapper mapper = new ObjectMapper();
+
 
     public static void main(String[] args) throws JsonProcessingException {
         String jsonString = "{\n" +
@@ -29,9 +32,6 @@ public class TestJson {
                 "        },\n" +
                 "        \"dataContract\": {\n" +
                 "            \"autoOrManual\":\"automatic\",\n" +
-                "            \"dataSource\": {\n" +
-                "                \"scada\": \"second\"\n" +
-                "            },\n" +
                 "            \"dataFilter\": {\n" +
                 "                \"powerFarmID\": \"010-00001\",\n" +
                 "                \"turbines\": [\n" +
@@ -65,31 +65,6 @@ public class TestJson {
                 "                }\n" +
                 "            },\n" +
                 "            \"configAnalysis\": [\n" +
-                "                {\n" +
-                "                    \"package\": \"algorithm.powerCurveAnalyst\",\n" +
-                "                    \"className\": \"PowerCurveAnalyst\",\n" +
-                "                    \"methodName\": \"executeAnalysis\"\n" +
-                "                },\n" +
-                "                {\n" +
-                "                    \"package\": \"algorithm.powerScatter2DAnalyst\",\n" +
-                "                    \"className\": \"PowerScatter2DAnayst\",\n" +
-                "                    \"methodName\": \"executeAnalysis\"\n" +
-                "                },\n" +
-                "                {\n" +
-                "                    \"package\": \"algorithm.powerScatterAnalyst\",\n" +
-                "                    \"className\": \"PowerScatterAnalyst\",\n" +
-                "                    \"methodName\": \"executeAnalysis\"\n" +
-                "                },\n" +
-                "                {\n" +
-                "                    \"package\": \"algorithm.windSpeedFrequencyAnalyst\",\n" +
-                "                    \"className\": \"WindSpeedFrequencyAnalyst\",\n" +
-                "                    \"methodName\": \"executeAnalysis\"\n" +
-                "                },\n" +
-                "                {\n" +
-                "                    \"package\": \"algorithm.generatorSpeedPowerAnalyst\",\n" +
-                "                    \"className\": \"GeneratorSpeedPowerAnalyst\",\n" +
-                "                    \"methodName\": \"executeAnalysis\"\n" +
-                "                }\n" +
                 "            ],\n" +
                 "            \"graphSets\": {\n" +
                 "                \"generatorSpeed\": {\n" +
@@ -125,8 +100,6 @@ public class TestJson {
                 "            }\n" +
                 "        }\n" +
                 "    }";
-
-        ObjectMapper mapper = new ObjectMapper();
         JsonNode rootNode = mapper.readTree(jsonString);
 //        AnalysisDto dto = new AnalysisDto();
 //        dto.setBeginTime("1234-12-12 00:00:12");
@@ -139,10 +112,13 @@ public class TestJson {
 //        }
 
         AnalysisDto dto = new AnalysisDto();
+        dto.setAutoOrManual("manual");
         dto.setBeginTime("1234-12-12 00:00:12");
         dto.setExcludingMonths(Arrays.asList("1","2","3"));
+        dto.setTurbines(Arrays.asList("456","789"));
+        dto.setValueActivePower(Arrays.asList(1,2));
+        dto.setConfigAnalysis(Arrays.asList("algorithm.powerOscillationAnalyst|PowerOscillationAnalyst|executeAnalysis|minute","algorithm.pitchTSRCpAnalyst|PitchTSRCpAnalyst|executeAnalysis|second"));
         setValue(dto,rootNode);
-        System.out.println();
         for (JsonNode node : rootNode) {
             System.out.println("Found matching node: " + mapper.writerWithDefaultPrettyPrinter().writeValueAsString(node));
         }
@@ -168,12 +144,21 @@ public class TestJson {
         }
     }
 
-    private static void updateNodesByPropertyName(JsonNode node, String propertyName,String value) {
-        if (node.isObject()) {
-            node.fields().forEachRemaining(entry -> {
+    private static void updateNodesByPropertyName(JsonNode rootNode, String propertyName,Object value) {
+        if (rootNode.isObject()) {
+            rootNode.fields().forEachRemaining(entry -> {
                 // 匹配到属性名称,进行值的修改
                 if (entry.getKey().equals(propertyName)) {
-                    ((ObjectNode) node).put(propertyName, value);
+                    //如果当前节点没有子节点直接复制
+                    if(!entry.getValue().fields().hasNext() && !propertyName.equals("configAnalysis")){
+                        ((ObjectNode) rootNode).put(propertyName, value.toString());
+                    }else {
+                        try {
+                            assignmentByPropertyName(entry.getValue(), propertyName, value);
+                        } catch (JsonProcessingException e) {
+                            e.printStackTrace();
+                        }
+                    }
                 }
                 // 递归搜索子节点
                 updateNodesByPropertyName(entry.getValue(), propertyName, value);
@@ -186,18 +171,69 @@ public class TestJson {
      * @param analysisDto
      * @return
      */
-    private static void setValue(AnalysisDto analysisDto,JsonNode jsonNode) {
+    private static void setValue(AnalysisDto analysisDto,JsonNode rootNode) {
         //前端入参类
         Field[] analysisFields = analysisDto.getClass().getDeclaredFields();
         Arrays.asList(analysisFields).stream().forEach(field -> {
             field.setAccessible(true);
             try {
                 if(field.get(analysisDto) != null){
-                    updateNodesByPropertyName(jsonNode, field.getName(), field.get(analysisDto).toString());
+                    updateNodesByPropertyName(rootNode, field.getName(), field.get(analysisDto));
                 }
             } catch (IllegalAccessException e) {
                 e.printStackTrace();
             }
         });
     }
+
+
+    private static void  assignmentByPropertyName(JsonNode subNode, String propertyName, Object newValue) throws JsonProcessingException {
+        //图像设置特殊处理
+        if("valueActivePower".contains(propertyName)){
+//        if(AlgorithmProperties.graphSetsProperties.contains(propertyName)){
+            List<Integer> list = (List) newValue;
+            AtomicInteger index = new AtomicInteger(0);
+            subNode.fields().forEachRemaining(entry -> {
+                System.out.println(entry.getKey() + "======");
+                ((ObjectNode) subNode).put(entry.getKey(), list.get(index.get()));
+                index.incrementAndGet();
+            });
+            return ;
+        }
+        //分析类型特殊处理
+        if("configAnalysis".equals(propertyName)){
+            dealConfigAnalysis(subNode, newValue);
+            return;
+        }
+
+    }
+
+
+    private static String json = "{\n" +
+            "    \"package\": \"\",\n" +
+            "    \"className\": \"\",\n" +
+            "    \"methodName\": \"\",\n" +
+            "    \"scada\": \"\"\n" +
+            "}";
+
+    /**
+     * 分析类型处理
+     * @param subNode
+     * @param newValue
+     */
+    private static void dealConfigAnalysis(JsonNode subNode, Object newValue) throws JsonProcessingException {
+        ArrayNode arrayNode = (ArrayNode) subNode;
+        List<String> analysisTypes = (List) newValue;
+        for(int i = 0 ; i < analysisTypes.size() ; i++){
+            JsonNode childNode = mapper.readTree(json);
+            //分析类型解析
+            String[] types = analysisTypes.get(i).split("\\|");
+            AtomicInteger index =  new AtomicInteger(0);
+            childNode.fields().forEachRemaining(entry-> {
+                ((ObjectNode)childNode).put(entry.getKey(), types[index.get()]);
+                index.incrementAndGet();
+            });
+            arrayNode.add(childNode);
+        }
+    }
 }

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

@@ -56,8 +56,12 @@ analysis.url= http://192.168.50.234:16200/energy-manage-service/analysis/analysi
 analysis.json= {}
 #需要特殊处理的图像设置属性
 graphSets.properties=generatorSpeed,generatorTorque,cp,tsr,pitchAngle,activePower
+#scada数据筛选
+customFilter.properties=valueWindSpeed,valuePitchAngle,valueActivePower,valueGeneratorSpeed
 #需要特设处理分析类型属性
 analysis.properties=configAnalysis
+#分析类型json格式
+analysis.type.json={"package":"","className":"","methodName":"","scada":""}
 
 #拦截器是否生效
 energy.login.enabled=true

+ 32 - 52
energy-manage-service/src/main/resources/mybatis/datatransfer/DataTransferMapper.xml

@@ -8,8 +8,9 @@
         <result property="fieldCode" column="field_code" jdbcType="VARCHAR"/>
         <result property="engineCount" column="engine_count" jdbcType="VARCHAR"/>
         <result property="transferType" column="transfer_type" jdbcType="VARCHAR"/>
-        <result property="transferFileAddr" column="transfer_file_addr" jdbcType="VARCHAR"/>
+        <result property="transferAddr" column="transfer_addr" jdbcType="VARCHAR"/>
         <result property="transferState" column="transfer_state" jdbcType="INTEGER"/>
+        <result property="timeGranularity" column="time_granularity" jdbcType="INTEGER"/>
         <result property="errInfo" column="err_info" jdbcType="VARCHAR"/>
         <result property="transferFinishTime" column="transfer_finish_time" jdbcType="TIMESTAMP"/>
         <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
@@ -21,10 +22,11 @@
         id,
         batch_code,
         field_code,
-        transfer_file_addr,
+        transfer_addr,
         engine_count,
         transfer_type,
         transfer_state,
+        time_granularity,
         err_info,
         transfer_finish_time,
         create_time,
@@ -48,8 +50,9 @@
             transfer.engine_count,
             transfer.transfer_type,
             transfer.transfer_state,
+            transfer.time_granularity,
             transfer.err_info,
-            transfer.transfer_file_addr,
+            transfer.transfer_addr,
             transfer.transfer_finish_time
         from data_transfer transfer
         left join sys_organization_auth auth
@@ -71,7 +74,7 @@
             transfer_type,
             transfer_state,
             err_info,
-            transfer_file_addr,
+            transfer_addr,
             transfer_finish_time,
             update_by
         from data_transfer
@@ -84,66 +87,43 @@
     </select>
 
     <insert id="addDataTransferBatch" parameterType="com.energy.manage.common.po.datatransfer.DataTransferPo">
-        insert into data_transfer
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="batchCode != null">
-                batch_code,
-            </if>
-            <if test="fieldCode != null">
-                field_code,
-            </if>
-            <if test="transferType != null">
-                transfer_type,
-            </if>
-            <if test="transferFileAddr != null">
-                transfer_file_addr,
-            </if>
-            <if test="createBy != null">
-                create_by,
-            </if>
-            <if test="updateBy != null">
-                update_by
-            </if>
-        </trim>
-        <trim prefix="values">
-            <foreach collection="poList" item="po" separator="," open="(" close=")">
-                <if test="po.batchCode != null">
-                    #{po.batchCode,jdbcType=VARCHAR},
-                </if>
-                <if test="po.fieldCode != null">
-                    #{po.fieldCode,jdbcType=VARCHAR},
-                </if>
-                <if test="po.transferType != null">
-                    #{po.transferType,jdbcType=VARCHAR},
-                </if>
-                <if test="po.transferFileAddr != null">
-                    #{po.transferFileAddr,jdbcType=VARCHAR},
-                </if>
-                <if test="po.createBy != null">
-                    #{po.createBy,jdbcType=INTEGER},
-                </if>
-                <if test="po.updateBy != null">
-                    #{po.updateBy,jdbcType=INTEGER}
-                </if>
-            </foreach>
-        </trim>
+        insert into data_transfer(
+            batch_code,
+            field_code,
+            transfer_type,
+            transfer_addr,
+            time_granularity,
+            create_by,
+            update_by
+        )values
+        <foreach collection="poList" item="po" separator="," >
+          ( #{po.batchCode,jdbcType=VARCHAR},
+            #{po.fieldCode,jdbcType=VARCHAR},
+            #{po.transferType,jdbcType=VARCHAR},
+            #{po.transferAddr,jdbcType=VARCHAR},
+            #{po.timeGranularity,jdbcType=INTEGER},
+            #{po.createBy,jdbcType=INTEGER},
+            #{po.updateBy,jdbcType=INTEGER})
+        </foreach>
     </insert>
 
     <update id="updateDataTransfer" parameterType="com.energy.manage.common.po.datatransfer.DataTransferPo">
         update data_transfer
         <set>
             <if test="transferState != null">
-                transfer_state = 0,
+                transfer_state = -1,
+            </if>
+            <if test="transferAddr != null and transferAddr != ''">
+                transfer_addr = #{transferAddr,jdbcType=VARCHAR},
             </if>
-            <if test="transferFileAddr != null and transferFileAddr != ''">
-                transfer_file_addr = #{transferFileAddr},
+            <if test="timeGranularity != null">
+                time_granularity = #{timeGranularity,jdbcType=INTEGER},
             </if>
             <if test="updateBy != null">
-                update_by = #{updateBy}
+                update_by = #{updateBy,jdbcType=INTEGER}
             </if>
         </set>
         where batch_code = #{batchCode,jdbcType=VARCHAR}
         and transfer_type = #{transferType,jdbcType=VARCHAR}
     </update>
-
 </mapper>

+ 6 - 5
energy-manage-service/src/main/resources/mybatis/datatransferhistory/DataTransferHistoryMapper.xml

@@ -5,7 +5,8 @@
     <resultMap id="resultMap" type="com.energy.manage.common.po.datatransfer.DataTransferHistoryPo">
         <id property="id" column="id" jdbcType="BIGINT"/>
         <result property="batchCode" column="batch_code" jdbcType="VARCHAR"/>
-        <result property="transferFileAddr" column="transfer_file_addr" jdbcType="VARCHAR"/>
+        <result property="transferAddr" column="transfer_addr" jdbcType="VARCHAR"/>
+        <result property="engineCount" column="engine_count" jdbcType="INTEGER"/>
         <result property="errInfo" column="err_info" jdbcType="VARCHAR"/>
         <result property="transferType" column="transfer_type" jdbcType="VARCHAR"/>
         <result property="transferFinishTime" column="transfer_finish_time" jdbcType="TIMESTAMP"/>
@@ -26,8 +27,8 @@
             <if test="errInfo != null">
                 err_info,
             </if>
-            <if test="transferFileAddr != null">
-                transfer_file_addr,
+            <if test="transferAddr != null">
+                transfer_addr,
             </if>
             <if test="transferType != null">
                 transfer_type,
@@ -49,8 +50,8 @@
             <if test="errInfo != null">
                 #{errInfo,jdbcType=VARCHAR},
             </if>
-            <if test="transferFileAddr != null">
-                #{transferFileAddr,jdbcType=VARCHAR},
+            <if test="transferAddr != null">
+                #{transferAddr,jdbcType=VARCHAR},
             </if>
             <if test="transferType != null">
                 #{transferType,jdbcType=VARCHAR},

+ 9 - 3
energy-manage-service/src/main/resources/mybatis/system/OrganizationAuthMapper.xml

@@ -16,8 +16,14 @@
     </sql>
     <select id="selectByRoleId" parameterType="java.lang.Integer" resultMap="resultMap">
         select
-        <include refid="Base_Sql"/>
-        from sys_organization_auth
-        where role_id = #{roleId}
+            auth.code_number,
+            auth.code_type,
+            auth.create_by,
+            auth.create_time,
+            field.field_name
+        from sys_organization_auth auth
+        left join wind_field field
+        on auth.code_number = field.field_code
+        where auth.role_id = #{roleId}
     </select>
 </mapper>

+ 1 - 1
energy-manage-service/src/main/resources/mybatis/windenginebatch/WindFieldBatchMapper.xml

@@ -101,7 +101,7 @@
         <if test="batchCode != null">
             and batch.batch_code = #{batchCode};
         </if>
-        <if test="fieldName != null and fileName != ''">
+        <if test="fieldName != null and fieldName != ''">
             and batch.field_name like concat('%',#{fieldName},'%')
         </if>
         <if test="batchState != null">

+ 15 - 0
energy-manage-service/src/main/resources/mybatis/windfield/WindFieldMapper.xml

@@ -50,4 +50,19 @@
         </if>
     </select>
 
+    <select id="selectByCodeNumber" parameterType="java.lang.String" resultType="com.energy.manage.service.domain.vo.windfield.WindFieldVo">
+        select
+            company_code as companyCode,
+            field_code as fieldCode,
+            field_name as fieldName,
+            density as density,
+            state as state,
+            province_name as provinceName,
+            city_name as cityName,
+            elevation_height as elevationHeight,
+            create_time as createTime
+        from wind_field
+        where field_code = #{codeNumber}
+    </select>
+
 </mapper>