|
|
@@ -3,8 +3,12 @@ package com.energy.manage.service.service.analysis.impl;
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
import cn.hutool.core.util.ZipUtil;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.energy.manage.common.constant.redis.ManagerRedisKeyConstant;
|
|
|
import com.energy.manage.common.enums.IdPrefixEnum;
|
|
|
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.reponse.ConstVar;
|
|
|
import com.energy.manage.common.reponse.ResultResp;
|
|
|
import com.energy.manage.common.util.HttpUtils;
|
|
|
@@ -14,20 +18,25 @@ import com.energy.manage.service.constant.analysis.AnalysisConstants;
|
|
|
import com.energy.manage.service.domain.dto.analysis.AnalysisDto;
|
|
|
import com.energy.manage.service.domain.dto.analysis.AnalysisResultDto;
|
|
|
import com.energy.manage.service.domain.vo.analysis.*;
|
|
|
+import com.energy.manage.service.domain.vo.cockpit.CompanyFieldAndBatchTreeVo;
|
|
|
+import com.energy.manage.service.domain.vo.cockpit.CompanyFieldTreeRoleVo;
|
|
|
+import com.energy.manage.service.domain.vo.system.SysOrganizationAuthVo;
|
|
|
import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupShortVo;
|
|
|
import com.energy.manage.service.domain.vo.windenginegroup.WindEngineGroupVo;
|
|
|
+import com.energy.manage.service.domain.vo.windfield.WindFieldVo;
|
|
|
import com.energy.manage.service.domain.vo.windfieldbatch.WindFieldBatchVo;
|
|
|
import com.energy.manage.service.filter.LoginUser;
|
|
|
import com.energy.manage.service.filter.LoginUserContextHolder;
|
|
|
import com.energy.manage.service.mappers.analysis.*;
|
|
|
+import com.energy.manage.service.mappers.system.SysOrganizationAuthMapper;
|
|
|
import com.energy.manage.service.mappers.windenginegroup.WindEngineGroupMapper;
|
|
|
+import com.energy.manage.service.mappers.windfield.WindFieldMapper;
|
|
|
import com.energy.manage.service.mappers.windfieldbatch.WindFieldBatchMapper;
|
|
|
import com.energy.manage.service.property.analysis.AlgorithmProperties;
|
|
|
import com.energy.manage.service.service.analysis.AnalysisResultReportService;
|
|
|
import com.energy.manage.service.service.analysis.AnalysisService;
|
|
|
-import com.energy.manage.service.util.BatchDownloadUtil;
|
|
|
-import com.energy.manage.service.util.BeanMapUtils;
|
|
|
-import com.energy.manage.service.util.NetUtils;
|
|
|
+import com.energy.manage.service.service.cache.CacheService;
|
|
|
+import com.energy.manage.service.util.*;
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
@@ -41,6 +50,7 @@ import io.minio.messages.Item;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -103,6 +113,12 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
private AnalysisResultReportMapper resultReportMapper;
|
|
|
|
|
|
@Autowired
|
|
|
+ private WindFieldMapper windFieldMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysOrganizationAuthMapper sysOrganizationAuthMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private AlgorithmProperties algorithmProperties;
|
|
|
|
|
|
@Autowired
|
|
|
@@ -114,6 +130,9 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
@Autowired
|
|
|
private BatchDownloadUtil batchDownloadUtil;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private CacheService cacheService;
|
|
|
+
|
|
|
|
|
|
private static AnalysisOptionRecordsMapper optionRecordsMapper;
|
|
|
|
|
|
@@ -131,6 +150,11 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
private static final String FILE_ADDR_FREFIX = "http://";
|
|
|
|
|
|
/**
|
|
|
+ * 分析编号分隔符
|
|
|
+ */
|
|
|
+ private final static String SEPARATOR = "-";
|
|
|
+
|
|
|
+ /**
|
|
|
* 风机编号正则
|
|
|
*/
|
|
|
private static final String ENGINE_CODE_PATTEN = IdPrefixEnum.WIND_EILL_NUMBER.getCode() + "\\d{3," + IdGeneratorUtil.DEC_INIT_LENGTH + "}";
|
|
|
@@ -152,6 +176,24 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 添加分析结果
|
|
|
+ *
|
|
|
+ * @param analysisResultPo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int addAnalysisResult(AnalysisResultPo analysisResultPo) {
|
|
|
+ String fieldCode = analysisResultPo.getFieldCode();
|
|
|
+ String batchCode = createWindFieldBatchCode(fieldCode);
|
|
|
+ analysisResultPo.setBatchCode(batchCode);
|
|
|
+ if(StringUtils.isBlank(analysisResultPo.getAnalysisName())){
|
|
|
+ WindFieldVo windFieldVo = windFieldMapper.selectByCodeNumber(fieldCode);
|
|
|
+ analysisResultPo.setAnalysisName(createBatchName(windFieldVo.getFieldName()));
|
|
|
+ }
|
|
|
+ return analysisResultMapper.insertSelective(analysisResultPo);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 分析
|
|
|
* @param analysisDto
|
|
|
* @return
|
|
|
@@ -178,8 +220,9 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
//调用算法
|
|
|
String result = HttpUtils.doPost(algorithmProperties.getAnalysisUrl(),mapper.writeValueAsString(rootNode));
|
|
|
log.info("调用算法分析返回结果:{}",result);
|
|
|
- //调用分析算法接口后直接更新分析状态为排队中
|
|
|
- analysisResultMapper.updateAnalysisState(analysisDto.getDataBatchNum());
|
|
|
+ //调用分析算法接口后更新数据筛选记录
|
|
|
+ updateAnalysisByBatchCode(analysisDto);
|
|
|
+// analysisResultMapper.updateAnalysisState(analysisDto.getDataBatchNum());
|
|
|
//手动操作进行操作记录添加
|
|
|
if(analysisDto.getAutoOrManual().equals(AnalysisConstants.MANUAL_ANALYSIS)){
|
|
|
addOptionRecords(analysisDto.getPowerFarmID(),null,OPTION_CONTENT);
|
|
|
@@ -192,6 +235,15 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 更新数据筛选记录
|
|
|
+ * @param analysisDto
|
|
|
+ */
|
|
|
+ public void updateAnalysisByBatchCode(AnalysisDto analysisDto){
|
|
|
+ analysisResultMapper.updateByBatchCode(analysisDto);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
* 分析编辑查询(查询分析类型、风机组)
|
|
|
* @param batchCode
|
|
|
* @return
|
|
|
@@ -223,6 +275,15 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 查询所有的分析类型
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> queryAllAnalysisType() {
|
|
|
+ List<AnalysisTypePo> analysisTypePos = analysisTypeMapper.selectAll();
|
|
|
+ return TreeUtil.getJava8ResultTree(BeanMapUtils.listBeanToListMap(analysisTypePos), "parentId", "id");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 查询已经分析的风机信息
|
|
|
* @param batchCode
|
|
|
* @param analysisTypeCode
|
|
|
@@ -245,7 +306,7 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<AnalysisDetailVo> analysisDetail(String batchCode, String analysisTypeCode, String fieldEngineCode, boolean isIntranet) {
|
|
|
+ public List<AnalysisDetailVo> analysisDetail(String batchCode, String analysisTypeCode, List<String> fieldEngineCode, boolean isIntranet) {
|
|
|
List<AnalysisDetailVo> analysisDetailVos = new ArrayList<>();
|
|
|
//获取所有的分析类型
|
|
|
List<AnalysisTypeVo> analysisTypeVos = analysisTypeMapper.selectByTypeCode(analysisTypeCode);
|
|
|
@@ -308,6 +369,18 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 根据角色获取风场及分析编号信息
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getAnalysisCodeInfo(Integer roleId) {
|
|
|
+// List<CompanyFieldAndBatchTreeVo> list = sysOrganizationAuthMapper.selectSysOrganizationAuthTreeByRoleId(roleId);
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 全部文件下载查询接口
|
|
|
* @param fieldCode
|
|
|
* @param batchCode
|
|
|
@@ -550,7 +623,7 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
* @param fieldEngineCode
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<AnalysisDiagramRelationVo> getNewDiagramRelations(String batchCode,String analysisTypeCode,String fieldEngineCode, boolean intranet){
|
|
|
+ private List<AnalysisDiagramRelationVo> getNewDiagramRelations(String batchCode,String analysisTypeCode,List<String> fieldEngineCode, boolean intranet){
|
|
|
//获取当前批次、当前分析类型的所有分析结果文件
|
|
|
List<AnalysisDiagramRelationVo> diagramRelationVos = diagramRelationMapper.selectByCondition(batchCode,analysisTypeCode,fieldEngineCode);
|
|
|
if(CollectionUtils.isEmpty(diagramRelationVos)){
|
|
|
@@ -558,7 +631,7 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
}
|
|
|
diagramRelationVos.forEach(item -> item.setFileAddr(getFilePath(intranet,item.getFileAddr())));
|
|
|
//如果风机编号不为空的话则不对风机编号进行排序
|
|
|
- if (StringUtils.isNotBlank(fieldEngineCode)) {
|
|
|
+ if (CollectionUtils.isNotEmpty(fieldEngineCode)) {
|
|
|
diagramRelationVos.sort(Comparator.comparing(AnalysisDiagramRelationVo::getCreateTime, Comparator.reverseOrder()));
|
|
|
} else {
|
|
|
diagramRelationVos.sort(Comparator.comparing(AnalysisDiagramRelationVo::getFieldEngineCode)
|
|
|
@@ -905,6 +978,26 @@ public class AnalysisServiceImpl implements AnalysisService {
|
|
|
return minIoIpPort + fileAddr;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 生成风场批次号
|
|
|
+ * @param fieldCode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建分析名称
|
|
|
+ * @param fieldName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String createBatchName(String fieldName){
|
|
|
+ String fieldPYHeader = PinYinUtils.getPinYinHeadChar(fieldName);
|
|
|
+ return fieldPYHeader.concat(IdGeneratorUtil.zeroFillUtil(cacheService.incr(ManagerRedisKeyConstant.build(ManagerRedisKeyConstant.IDGENERATOR_CONSTANTS_KEY, fieldPYHeader)),6));
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 测试排序去重
|