Bladeren bron

修复生成报告bug

lixing 3 jaren geleden
bovenliggende
commit
0a15e6b330

+ 4 - 4
src/main/java/com/persagy/apm/report/dependencies/dmpalarm/model/AlarmRecord.java

@@ -32,10 +32,10 @@ public class  AlarmRecord {
     /** 处理状态 */
     private Integer treatState;
     private String createUser;
-    private String condition;
-    private String triggerInfo;
+//    private String condition;
+//    private String triggerInfo;
     private Date triggerTime;
-    private String endInfo;
+//    private String endInfo;
     private Date endTime;
     private Date createTime;
     private String updateUser;
@@ -44,6 +44,6 @@ public class  AlarmRecord {
     private String groupCode;
     private String orderId;
     private String orderState;
-    private String supplement;
+//    private String supplement;
     private String targetId;
 }

+ 3 - 1
src/main/java/com/persagy/apm/report/dependencies/iotdataanalysis/service/impl/IDataAnalysisWebServiceImpl.java

@@ -30,7 +30,9 @@ public class IDataAnalysisWebServiceImpl implements IDataAnalysisWebService {
         try {
             JSONObject paramObject = new JSONObject();
             paramObject.put("userId", DataConstants.USER_ID);
-            paramObject.put("groupCode", groupCode);
+                        paramObject.put("groupCode", "BL");
+                        projectId = "Pj1101080259";
+//            paramObject.put("groupCode", groupCode);
             paramObject.put("projectIdList", Lists.newArrayList(projectId));
             Date startTime = DateUtils.getStartTimeOfDay(date);
             Date endTime = DateUtils.getMonthOff(startTime, 1);

+ 10 - 0
src/main/java/com/persagy/apm/report/dependencies/saasweb/service/ISaasWebService.java

@@ -259,6 +259,16 @@ public interface ISaasWebService {
     List<String> getAvailableAreaIds(String buildingType);
 
     /**
+     * 根据业态获取用户可选的分区id
+     *
+     * @param buildingTypes 项目业态列表
+     * @return 用户可选的分区树
+     * @author lixing
+     * @version V1.0 2021/5/21 10:53 上午
+     */
+    List<String> getAvailableAreaIds(List<String> buildingTypes);
+
+    /**
      * 获取一组项目的总的地下停车场面积
      *
      * @param projectIds 一组项目id

+ 13 - 0
src/main/java/com/persagy/apm/report/dependencies/saasweb/service/impl/SaasWebServiceImpl.java

@@ -487,6 +487,19 @@ public class SaasWebServiceImpl implements ISaasWebService {
     }
 
     @Override
+    public List<String> getAvailableAreaIds(List<String> buildingTypes) {
+        // 遍历用户所有可选分区树,标记分区父节点及分区拥有的项目
+        List<FilterPartitionVO> partitions = partitionProjectTree2FilterPartitionList();
+        // 筛选分区
+        Map<String, FilterPartitionVO> filterPartitionMap = filterPartitionsByBuildingTypes(partitions, buildingTypes);
+        if (CollectionUtils.isEmpty(filterPartitionMap)) {
+            return Lists.newArrayList();
+        } else {
+            return Lists.newArrayList(filterPartitionMap.keySet());
+        }
+    }
+
+    @Override
     public List<PartitionProjectVO> getAvailableProjectTree(List<String> buildingTypes) {
         // 查询用户权限范围内的分区和项目
         List<PartitionProjectVO> availableProjectTree = getAvailableProjectTree();

+ 21 - 17
src/main/java/com/persagy/apm/report/indicator/factory/EnvFactory.java

@@ -3,11 +3,6 @@ package com.persagy.apm.report.indicator.factory;
 import com.alibaba.excel.util.CollectionUtils;
 import com.google.gson.Gson;
 import com.persagy.apm.report.common.utils.DataUtils;
-import com.persagy.apm.report.userconfig.function.model.Function;
-import com.persagy.apm.report.userconfig.statisticsitems.enums.QualifiedEnum;
-import com.persagy.apm.report.userconfig.statisticsitems.enums.StatisticCodeEnum;
-import com.persagy.apm.report.userconfig.statisticsitems.model.StatisticItem;
-import com.persagy.apm.report.userconfig.statisticsitems.service.IStatisticItemService;
 import com.persagy.apm.report.dependencies.dmpalarm.enums.EnumAlarmTreatState;
 import com.persagy.apm.report.dependencies.dmpalarm.model.AlarmRecord;
 import com.persagy.apm.report.dependencies.dmpalarm.service.AlarmServiceImpl;
@@ -18,6 +13,11 @@ import com.persagy.apm.report.detail.model.vo.ItemVO;
 import com.persagy.apm.report.indicator.codes.env.ProjectEnvContentCodes;
 import com.persagy.apm.report.indicator.model.entity.EnvComplianceRateQualifiedStandard;
 import com.persagy.apm.report.indicator.model.entity.EnvDefine;
+import com.persagy.apm.report.userconfig.function.model.Function;
+import com.persagy.apm.report.userconfig.statisticsitems.enums.QualifiedEnum;
+import com.persagy.apm.report.userconfig.statisticsitems.enums.StatisticCodeEnum;
+import com.persagy.apm.report.userconfig.statisticsitems.model.StatisticItem;
+import com.persagy.apm.report.userconfig.statisticsitems.service.IStatisticItemService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -106,6 +106,7 @@ public class EnvFactory {
         return result;
 
     }
+
     /**
      * 获取达标率
      *
@@ -118,7 +119,7 @@ public class EnvFactory {
      */
     public AttrValueVO getComplianceRate(EnvDefine envDefine, String projectId, Date date) {
         Double envComplianceRate = environmentWebService.getEnvComplianceRate(projectId, date, envDefine);
-        String envComplianceRateStr = envComplianceRate == null? null:String.valueOf(envComplianceRate);
+        String envComplianceRateStr = envComplianceRate == null ? null : String.valueOf(envComplianceRate);
         return new AttrValueVO(ProjectEnvContentCodes.complianceRate.name(),
                 envComplianceRateStr, AttrValueTypeEnum.number);
     }
@@ -179,7 +180,7 @@ public class EnvFactory {
      * 获取环境指标报警处理率
      *
      * @param handledCount 已处理报警数
-     * @param totalCount 总报警数
+     * @param totalCount   总报警数
      * @return 报警处理率
      * @author lixing
      * @version V1.0 2021/8/4 4:14 下午
@@ -203,19 +204,22 @@ public class EnvFactory {
      * @version V1.0 2021/8/2 6:49 下午
      */
     public String getQualifiedStandardValue(Function function) {
+        String standardEnvComplianceRate = null;
         String qualifiedStandardStr = function.getQualifiedStandard();
-        if (StringUtils.isBlank(qualifiedStandardStr)) {
-            return null;
+        if (StringUtils.isNotBlank(qualifiedStandardStr)) {
+            Gson gson = new Gson();
+            EnvComplianceRateQualifiedStandard envComplianceRateQualifiedStandard = gson.fromJson(
+                    qualifiedStandardStr, EnvComplianceRateQualifiedStandard.class);
+            standardEnvComplianceRate = envComplianceRateQualifiedStandard.getStandardEnvComplianceRate();
         }
-        Gson gson = new Gson();
-        EnvComplianceRateQualifiedStandard envComplianceRateQualifiedStandard = gson.fromJson(
-                qualifiedStandardStr, EnvComplianceRateQualifiedStandard.class);
-        String standardEnvComplianceRate = envComplianceRateQualifiedStandard.getStandardEnvComplianceRate();
+
         if (StringUtils.isBlank(standardEnvComplianceRate)) {
             // 获取达标率标准判断条件
             StatisticItem statisticItem = statisticItemService.getItemByCode(
                     StatisticCodeEnum.ENV_QUALIFIED_PROPORTION.name());
-            standardEnvComplianceRate = statisticItem.getStandardValue();
+            if (statisticItem != null) {
+                standardEnvComplianceRate = statisticItem.getStandardValue();
+            }
         }
         return standardEnvComplianceRate;
     }
@@ -263,9 +267,9 @@ public class EnvFactory {
     /**
      * 获取环境指标信息
      *
-     * @param function 环境指标对象
-     * @param envDefine 环境指标定义
-     * @param projectId 项目id
+     * @param function    环境指标对象
+     * @param envDefine   环境指标定义
+     * @param projectId   项目id
      * @param reportMonth 报告月份
      * @return 环境指标信息
      * @author lixing

+ 9 - 7
src/main/java/com/persagy/apm/report/indicator/factory/IotFactory.java

@@ -128,21 +128,23 @@ public class IotFactory {
      * @version V1.0 2021/8/2 6:49 下午
      */
     public String getQualifiedStandardValue(Function function) {
+        String standardRange = null;
+        Gson gson = new Gson();
         String qualifiedStandardStr = function.getQualifiedStandard();
-        if (StringUtils.isBlank(qualifiedStandardStr)) {
-            return null;
+        if (StringUtils.isNotBlank(qualifiedStandardStr)) {
+            IotQualifiedStandard iotQualifiedStandard = gson.fromJson(
+                    qualifiedStandardStr, IotQualifiedStandard.class);
+            standardRange = iotQualifiedStandard.getStandardRange();
         }
-        Gson gson = new Gson();
-        IotQualifiedStandard iotQualifiedStandard = gson.fromJson(
-                qualifiedStandardStr, IotQualifiedStandard.class);
-        String standardRange = iotQualifiedStandard.getStandardRange();
 
         if (StringUtils.isBlank(standardRange)) {
             IotDefine iotDefine = gson.fromJson(function.getDefine(), IotDefine.class);
             // 获取通用统计条目配置
             StatisticItem statisticItem = statisticItemService.getItemByCode(
                     iotDefine.getTargetCode());
-            standardRange = statisticItem.getStandardValue();
+            if (statisticItem != null) {
+                standardRange = statisticItem.getStandardValue();
+            }
         }
         return standardRange;
     }

+ 9 - 9
src/main/java/com/persagy/apm/report/outline/service/impl/GenerateReportThreadPool.java

@@ -58,14 +58,14 @@ public class GenerateReportThreadPool {
         });
 
         es.execute(future);
-        //        es.submit(future);
-
-        try {
-            future.get(maxGenerateMinutes, TimeUnit.MINUTES);
-        } catch (InterruptedException | ExecutionException | TimeoutException e) {
-            log.error("生成报告发生异常", e);
-            future.cancel(true);
-            reportGenerator.updateReportOutlineInfoWhenFailure(reportOutline);
-        }
+        es.execute(() -> {
+            try {
+                future.get(maxGenerateMinutes, TimeUnit.MINUTES);
+            } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                log.error("生成报告发生异常", e);
+                future.cancel(true);
+                reportGenerator.updateReportOutlineInfoWhenFailure(reportOutline);
+            }
+        });
     }
 }

+ 12 - 10
src/main/java/com/persagy/apm/report/paragraphs/service/impl/energyefficiency/AreaEnergyEfficiencyBuilder.java

@@ -2,11 +2,6 @@ package com.persagy.apm.report.paragraphs.service.impl.energyefficiency;
 
 import com.google.gson.Gson;
 import com.persagy.apm.report.common.utils.DataUtils;
-import com.persagy.apm.report.indicator.utils.IndicatorUtils;
-import com.persagy.apm.report.userconfig.function.service.IFunctionService;
-import com.persagy.apm.report.userconfig.paragraph.service.IParagraphService;
-import com.persagy.apm.report.userconfig.pargraphdefine.service.IParagraphDefineService;
-import com.persagy.apm.report.userconfig.statisticsitems.enums.QualifiedEnum;
 import com.persagy.apm.report.dependencies.saasweb.model.vo.SimpleProjectVO;
 import com.persagy.apm.report.dependencies.saasweb.service.ISaasWebService;
 import com.persagy.apm.report.detail.enums.AttrValueTypeEnum;
@@ -19,9 +14,14 @@ import com.persagy.apm.report.indicator.codes.energyefficiency.ProjectEnergyEffi
 import com.persagy.apm.report.indicator.factory.EnergyEfficiencyFactory;
 import com.persagy.apm.report.indicator.model.vo.GraphItemVO;
 import com.persagy.apm.report.indicator.model.vo.GraphVO;
+import com.persagy.apm.report.indicator.utils.IndicatorUtils;
 import com.persagy.apm.report.outline.model.ReportOutline;
 import com.persagy.apm.report.paragraphs.constants.StandardNames;
 import com.persagy.apm.report.paragraphs.service.impl.AreaIndicatorsParagraphBuilder;
+import com.persagy.apm.report.userconfig.function.service.IFunctionService;
+import com.persagy.apm.report.userconfig.paragraph.service.IParagraphService;
+import com.persagy.apm.report.userconfig.pargraphdefine.service.IParagraphDefineService;
+import com.persagy.apm.report.userconfig.statisticsitems.enums.QualifiedEnum;
 import org.mockito.internal.util.collections.Sets;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -95,8 +95,8 @@ public class AreaEnergyEfficiencyBuilder extends AreaIndicatorsParagraphBuilder
             projectsEfficiency.add(graphItemVO);
             // 统计不合格项目数
             String isQualifiedDesc = attrValueMap.get(ProjectEnergyEfficiencyContentCodes.isQualified.name()).getValue();
-            if (isQualifiedDesc.equals(QualifiedEnum.NOT_QUALIFIED.getDesc())) {
-                unqualifiedProjectCount = unqualifiedProjectCount == null? 1: unqualifiedProjectCount + 1;
+            if (QualifiedEnum.NOT_QUALIFIED.getDesc().equals(isQualifiedDesc)) {
+                unqualifiedProjectCount = unqualifiedProjectCount == null ? 1 : unqualifiedProjectCount + 1;
             }
 
             projectItems.add(projectItemValue);
@@ -133,16 +133,18 @@ public class AreaEnergyEfficiencyBuilder extends AreaIndicatorsParagraphBuilder
         Integer projectsCountValue = projectIds.size();
         AttrValueVO projectsCount = new AttrValueVO(
                 AreaEnergyEfficiencyContentCodes.projectsCount.name(),
-                String.valueOf(projectsCountValue), AttrValueTypeEnum.number);
+                String.valueOf(projectsCountValue),
+                AttrValueTypeEnum.number);
         attrs.add(projectsCount);
         // 不合格项目数
         AttrValueVO unqualifiedCount = new AttrValueVO(
                 AreaEnergyEfficiencyContentCodes.unqualifiedCount.name(),
-                String.valueOf(unqualifiedProjectCount), AttrValueTypeEnum.number);
+                unqualifiedProjectCount == null ? null : String.valueOf(unqualifiedProjectCount),
+                AttrValueTypeEnum.number);
         attrs.add(unqualifiedCount);
         // 不合格率
         AttrValueVO unqualifiedProportion = energyEfficiencyFactory.getUnqualifiedProportion(
-                DataUtils.parseDouble(projectsCount.getValue()), DataUtils.parseDouble(unqualifiedCount.getValue()));
+                IndicatorUtils.getAttrDoubleValue(projectsCount), IndicatorUtils.getAttrDoubleValue(unqualifiedCount));
         attrs.add(unqualifiedProportion);
         /* 各项目能效值 */
         // 按从高到低排序

+ 2 - 5
src/main/java/com/persagy/apm/report/userconfig/reporttype/service/impl/ReportTypeServiceImpl.java

@@ -264,12 +264,9 @@ public class ReportTypeServiceImpl extends ServiceImpl<ReportTypeMapper, ReportT
                     filteredReportTypeList, functionTypeProjectListMap);
         } else if (BelongTypeEnum.AREA.getType().equals(belongType)) {
             for (ReportType reportType : allReportTypes) {
-                // 获取每个报告类型下的大区权限,如果大区权限不为空,则用户拥有此报告类型的权限
-                List<PartitionVO> availableAreas = saasWebService.getAvailableAreaTree(
+                List<String> availableBelongIds = saasWebService.getAvailableAreaIds(
                         ApmStrUtils.str2List(reportType.getBuildingTypes()));
-                if (!CollectionUtils.isEmpty(availableAreas)) {
-                    List<String> availableBelongIds = availableAreas.stream().map(
-                            PartitionVO::getAreaId).collect(Collectors.toList());
+                if (!CollectionUtils.isEmpty(availableBelongIds)) {
                     listItemVOList.add(packageReportTypeListItemVO(reportType, availableBelongIds));
                 }
             }