Forráskód Böngészése

月报段落返回数据格式错误修复

lixing 3 éve
szülő
commit
cdfdf7934a
15 módosított fájl, 77 hozzáadás és 45 törlés
  1. 2 2
      src/main/java/com/persagy/apm/report/dependencies/saasweb/model/vo/SimpleProjectVO.java
  2. 3 3
      src/main/java/com/persagy/apm/report/dependencies/saasweb/service/impl/SaasWebServiceImpl.java
  3. 1 1
      src/main/java/com/persagy/apm/report/indicator/factory/EnergyBudgetFactory.java
  4. 5 1
      src/main/java/com/persagy/apm/report/indicator/factory/EnergyUsageFactory.java
  5. 1 1
      src/main/java/com/persagy/apm/report/indicator/factory/EnvFactory.java
  6. 4 1
      src/main/java/com/persagy/apm/report/indicator/factory/IotFactory.java
  7. 2 4
      src/main/java/com/persagy/apm/report/outline/service/impl/ReportOutlineServiceImpl.java
  8. 1 1
      src/main/java/com/persagy/apm/report/paragraphs/service/impl/AreaDepsParagraphBuilder.java
  9. 4 2
      src/main/java/com/persagy/apm/report/paragraphs/service/impl/energybudget/AreaEnergyBudgetBuilder.java
  10. 1 1
      src/main/java/com/persagy/apm/report/paragraphs/service/impl/energyefficiency/AreaEnergyEfficiencyBuilder.java
  11. 6 3
      src/main/java/com/persagy/apm/report/paragraphs/service/impl/energyusage/ProjectEnergyUsageBuilder.java
  12. 23 13
      src/main/java/com/persagy/apm/report/paragraphs/service/impl/env/AreaEnvBuilder.java
  13. 19 8
      src/main/java/com/persagy/apm/report/paragraphs/service/impl/env/ProjectEnvBuilder.java
  14. 1 1
      src/main/java/com/persagy/apm/report/paragraphs/service/impl/iot/AreaIotBuilder.java
  15. 4 3
      src/main/java/com/persagy/apm/report/paragraphs/service/impl/iot/ProjectIotBuilder.java

+ 2 - 2
src/main/java/com/persagy/apm/report/dependencies/saasweb/model/vo/SimpleProjectVO.java

@@ -15,8 +15,8 @@ public class SimpleProjectVO {
     @ApiModelProperty(value = "项目id")
     private String projectId;
     @ApiModelProperty(value = "项目名称")
-    @JsonAlias("projectLocalName")
-    private String projectName;
+//    @JsonAlias("projectLocalName")
+    private String projectLocalName;
     @ApiModelProperty(value = "项目功能类型")
     private String functionType;
     @ApiModelProperty(value = "项目本地编码")

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

@@ -56,7 +56,7 @@ public class SaasWebServiceImpl implements ISaasWebService {
         SimpleProjectVO simpleProjectVO = getSimpleProjectInfo(projectId);
 
         if (simpleProjectVO != null) {
-            reportProjectVO.setProjectName(simpleProjectVO.getProjectName());
+            reportProjectVO.setProjectLocalName(simpleProjectVO.getProjectLocalName());
             reportProjectVO.setFunctionType(simpleProjectVO.getFunctionType());
             reportProjectVO.setProjectLocalID(simpleProjectVO.getProjectLocalID());
             // 获取项目下建筑的面积总和
@@ -539,7 +539,7 @@ public class SaasWebServiceImpl implements ISaasWebService {
         }
 
         Map<String, String> filterProjectMap = availableProjects.stream().collect(
-                Collectors.toMap(SimpleProjectVO::getProjectId, SimpleProjectVO::getProjectName, (k1, k2) -> k1));
+                Collectors.toMap(SimpleProjectVO::getProjectId, SimpleProjectVO::getProjectLocalName, (k1, k2) -> k1));
 
         return cascadeFilterAvailablePartitionAndProject(
                 availableProjectTree, filterPartitionMap, filterProjectMap);
@@ -744,7 +744,7 @@ public class SaasWebServiceImpl implements ISaasWebService {
             if (projectFlag.equals(content.getType())) {
                 SimpleProjectVO simpleProjectVO = new SimpleProjectVO();
                 simpleProjectVO.setProjectId(content.getId());
-                simpleProjectVO.setProjectName(content.getName());
+                simpleProjectVO.setProjectLocalName(content.getName());
                 result.add(simpleProjectVO);
             } else {
                 getProjectsUnderPartition(content, result);

+ 1 - 1
src/main/java/com/persagy/apm/report/indicator/factory/EnergyBudgetFactory.java

@@ -128,7 +128,7 @@ public class EnergyBudgetFactory {
         // 获取报告当年所有月份
         List<Date> firstDayOfEveryMonth = DateUtils.getFirstDayOfEveryMonth(
                 DateUtils.getFirstDayOfYear(reportMonth),
-                DateUtils.getDecemberFirstDayOfYear(reportMonth));
+                DateUtils.getFirstDayOfMonth(reportMonth));
         if (CollectionUtils.isEmpty(firstDayOfEveryMonth)) {
             return null;
         }

+ 5 - 1
src/main/java/com/persagy/apm/report/indicator/factory/EnergyUsageFactory.java

@@ -513,7 +513,11 @@ public class EnergyUsageFactory {
      */
     public AttrValueVO getTce(Double usage) {
         Double slewRate = 2500d;
-        return IndicatorUtils.getRange(EnergyUsageHeaderCodes.tce.name(),
+        // 这里使用通用的getRange方法来计算用量除以转换率的值,并封装成对象
+        AttrValueVO range = IndicatorUtils.getRange(EnergyUsageHeaderCodes.tce.name(),
                 usage, slewRate, AttrValueTypeEnum.number_1);
+        // getRange方法默认的单位为"%",这里将单位置空
+        range.setUnit("");
+        return range;
     }
 }

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

@@ -122,7 +122,7 @@ public class EnvFactory {
         Double envComplianceRate = environmentWebService.getEnvComplianceRate(projectId, date, envDefine);
         String envComplianceRateStr = envComplianceRate == null ? null : String.valueOf(envComplianceRate);
         return new AttrValueVO(ProjectEnvContentCodes.complianceRate.name(),
-                envComplianceRateStr, AttrValueTypeEnum.percent_2, DataConstants.PERCENT);
+                envComplianceRateStr, AttrValueTypeEnum.number_2, DataConstants.PERCENT);
     }
 
     /**

+ 4 - 1
src/main/java/com/persagy/apm/report/indicator/factory/IotFactory.java

@@ -97,7 +97,10 @@ public class IotFactory {
         GraphVO graphVO = new GraphVO(StandardNames.STANDARD_RANGE, getQualifiedStandardValue(function), data);
 
         for (Date tmpDate : firstDayOfEveryMonth) {
-            Double currentMonthValue = getCurrentMonthValue(iotDefine, projectId, tmpDate);
+            Double currentMonthValue = null;
+            if (tmpDate.before(date)) {
+                currentMonthValue = getCurrentMonthValue(iotDefine, projectId, tmpDate);
+            }
             GraphItemVO graphItemVO = new GraphItemVO(
                     DateUtils.date2Str(tmpDate, DateUtils.SDF_SPACE_SECOND),
                     currentMonthValue, AttrValueTypeEnum.number_2, DataConstants.PERCENT);

+ 2 - 4
src/main/java/com/persagy/apm/report/outline/service/impl/ReportOutlineServiceImpl.java

@@ -13,8 +13,6 @@ import com.persagy.apm.report.common.utils.DateUtils;
 import com.persagy.apm.report.detail.model.dto.UpdateParagraphSupplementDTO;
 import com.persagy.apm.report.detail.model.dto.UpdateReportDetailDTO;
 import com.persagy.apm.report.detail.model.vo.AttrValueVO;
-import com.persagy.apm.report.detail.paragraphvalue.model.dto.UpdateReportParagraphValueDTO;
-import com.persagy.apm.report.userconfig.paragraph.model.ConvertParagraphTool;
 import com.persagy.apm.report.userconfig.paragraph.model.vo.ParagraphItemVO;
 import com.persagy.apm.report.userconfig.paragraphcustom.model.ParagraphCustom;
 import com.persagy.apm.report.userconfig.paragraphcustom.service.IParagraphCustomService;
@@ -126,7 +124,7 @@ public class ReportOutlineServiceImpl extends ServiceImpl<ReportOutlineMapper, R
         String belongName = "";
         if (BelongTypeEnum.PROJECT.getType().equals(reportType.getBelongType())) {
             ReportProjectVO reportProjectInfo = saasWebService.getReportProjectInfo(reportOutline.getBelong());
-            belongName = reportProjectInfo.getProjectName();
+            belongName = reportProjectInfo.getProjectLocalName();
         }
         if (BelongTypeEnum.AREA.getType().equals(reportType.getBelongType())) {
             ReportAreaVO reportAreaInfo = saasWebService.getReportAreaBaseInfo(reportOutline.getBelong());
@@ -476,7 +474,7 @@ public class ReportOutlineServiceImpl extends ServiceImpl<ReportOutlineMapper, R
         if (BelongTypeEnum.PROJECT.getType().equals(reportBelongType)) {
             SimpleProjectVO simpleProjectInfo = saasWebService.getSimpleProjectInfo(belongId);
             if (simpleProjectInfo != null) {
-                belongName = simpleProjectInfo.getProjectName();
+                belongName = simpleProjectInfo.getProjectLocalName();
             }
         }
         if (BelongTypeEnum.AREA.getType().equals(reportBelongType)) {

+ 1 - 1
src/main/java/com/persagy/apm/report/paragraphs/service/impl/AreaDepsParagraphBuilder.java

@@ -109,7 +109,7 @@ public abstract class AreaDepsParagraphBuilder extends ParagraphBuilder {
                 ParagraphContentVO projectParagraphContent = getProjectParagraphBuilder().getParagraphContentVO(
                         paragraph, simpleProjectVO.getProjectId(), reportOutline.getReportMonth());
                 items.add(getProjectParagraphBuilder().getProjectValue(
-                        simpleProjectVO.getProjectId(), simpleProjectVO.getProjectName(), projectParagraphContent));
+                        simpleProjectVO.getProjectId(), simpleProjectVO.getProjectLocalName(), projectParagraphContent));
             }
             List<String> projectIdsInArea = simpleProjectList.stream().map(
                     SimpleProjectVO::getProjectId).collect(Collectors.toList());

+ 4 - 2
src/main/java/com/persagy/apm/report/paragraphs/service/impl/energybudget/AreaEnergyBudgetBuilder.java

@@ -51,14 +51,16 @@ public class AreaEnergyBudgetBuilder extends AreaDepsParagraphBuilder {
         AttrValueVO monthlyBudget = data.get(BudgetHeaderCodes.monthlyBudget.name());
         if (monthlyBudget != null) {
             result.add(new AttrValueVO(
-                    BudgetHeaderCodes.monthlyBudget.name(), monthlyBudget.getValue(), monthlyBudget.getType()));
+                    BudgetHeaderCodes.monthlyBudget.name(), monthlyBudget.getValue(),
+                    monthlyBudget.getType(), monthlyBudget.getUnit()));
         }
 
         // 实际能耗
         AttrValueVO currentMonth = data.get(BudgetHeaderCodes.currentMonth.name());
         if (currentMonth != null) {
             result.add(new AttrValueVO(
-                    BudgetHeaderCodes.currentMonth.name(), currentMonth.getValue(), currentMonth.getType()
+                    BudgetHeaderCodes.currentMonth.name(), currentMonth.getValue(),
+                    currentMonth.getType(), currentMonth.getUnit()
             ));
         }
 

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

@@ -89,7 +89,7 @@ public class AreaEnergyEfficiencyBuilder extends AreaIndicatorsParagraphBuilder
             Map<String, AttrValueVO> attrValueMap = attrValueList2Map(statisticCodeSet, projectItemValue.getAttrs());
 
             // 统计各项目能效值
-            GraphItemVO graphItemVO = new GraphItemVO(simpleProjectInfo.getProjectName(),
+            GraphItemVO graphItemVO = new GraphItemVO(simpleProjectInfo.getProjectLocalName(),
                     DataUtils.parseDouble(attrValueMap.get(ProjectEnergyEfficiencyContentCodes.currentMonth.name()).getValue()),
                     AttrValueTypeEnum.number_2, "");
             projectsEfficiency.add(graphItemVO);

+ 6 - 3
src/main/java/com/persagy/apm/report/paragraphs/service/impl/energyusage/ProjectEnergyUsageBuilder.java

@@ -62,20 +62,23 @@ public class ProjectEnergyUsageBuilder extends ProjectParagraphBuilder {
 
         if (currentMonth != null) {
             AttrValueVO totalUsage = new AttrValueVO(
-                    EnergyUsageHeaderCodes.totalUsage.name(), currentMonth.getValue(), currentMonth.getType());
+                    EnergyUsageHeaderCodes.totalUsage.name(), currentMonth.getValue(),
+                    currentMonth.getType(), currentMonth.getUnit());
             result.add(totalUsage);
         }
         // 同比增幅
         AttrValueVO sametimeRange = data.get(EnergyUsageContentCodes.sametimeRange.name());
         if (sametimeRange != null) {
             result.add(new AttrValueVO(
-                    EnergyUsageHeaderCodes.sameTimeRange.name(), sametimeRange.getValue(), sametimeRange.getType()));
+                    EnergyUsageHeaderCodes.sameTimeRange.name(), sametimeRange.getValue(),
+                    sametimeRange.getType(), sametimeRange.getUnit()));
         }
         // 环比增幅
         AttrValueVO chainRange = data.get(EnergyUsageContentCodes.chainRange.name());
         if (chainRange != null) {
             result.add(new AttrValueVO(
-                    EnergyUsageHeaderCodes.chainRange.name(), chainRange.getValue(), chainRange.getType()));
+                    EnergyUsageHeaderCodes.chainRange.name(), chainRange.getValue(),
+                    chainRange.getType(), chainRange.getUnit()));
         }
         // 同等碳排放量
         if (currentMonth != null) {

+ 23 - 13
src/main/java/com/persagy/apm/report/paragraphs/service/impl/env/AreaEnvBuilder.java

@@ -79,20 +79,30 @@ public class AreaEnvBuilder extends AreaIndicatorsParagraphBuilder {
             projectCount = itemMapList.get(0).get(AreaEnvContentCodes.projectsCount.name());
 
             // 项目达标率最差的指标
-            Map<String, Integer> worstSortMap = new HashMap<>();
-            worstSortMap.put(AreaEnvContentCodes.unqualifiedCount.name(), -1);
-            DataUtils.sort(itemMapList, worstSortMap);
-            worstIndicator = itemMapList.get(0).get(ItemAttrConstants.NAME);
-            worstIndicatorNoncomplianceProjectCount = itemMapList.get(0).get(
-                    AreaEnvContentCodes.unqualifiedCount.name());
+            List<Map<String, String>> worstMap = itemMapList.stream().filter(
+                    map -> map.get(AreaEnvContentCodes.unqualifiedCount.name()) != null).
+                    collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(worstMap)) {
+                Map<String, Integer> worstSortMap = new HashMap<>();
+                worstSortMap.put(AreaEnvContentCodes.unqualifiedCount.name(), -1);
+                DataUtils.sort(worstMap, worstSortMap);
+                worstIndicator = worstMap.get(0).get(ItemAttrConstants.NAME);
+                worstIndicatorNoncomplianceProjectCount = worstMap.get(0).get(
+                        AreaEnvContentCodes.unqualifiedCount.name());
+            }
 
             // 项目达标率最好的指标
-            Map<String, Integer> bestSortMap = new HashMap<>();
-            bestSortMap.put(AreaEnvContentCodes.qualifiedCount.name(), -1);
-            DataUtils.sort(itemMapList, bestSortMap);
-            bestIndicator = itemMapList.get(0).get(ItemAttrConstants.NAME);
-            bestIndicatorComplianceProjectCount = itemMapList.get(0).get(
-                    AreaEnvContentCodes.qualifiedCount.name());
+            List<Map<String, String>> bestMap = itemMapList.stream().filter(
+                    map -> map.get(AreaEnvContentCodes.qualifiedCount.name()) != null).
+                    collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(bestMap)) {
+                Map<String, Integer> bestSortMap = new HashMap<>();
+                bestSortMap.put(AreaEnvContentCodes.qualifiedCount.name(), -1);
+                DataUtils.sort(bestMap, bestSortMap);
+                bestIndicator = bestMap.get(0).get(ItemAttrConstants.NAME);
+                bestIndicatorComplianceProjectCount = bestMap.get(0).get(
+                        AreaEnvContentCodes.qualifiedCount.name());
+            }
         }
 
         // 总项目数
@@ -161,7 +171,7 @@ public class AreaEnvBuilder extends AreaIndicatorsParagraphBuilder {
             Map<String, AttrValueVO> attrValueMap = attrValueList2Map(statisticCodeSet, projectItemValue.getAttrs());
 
             // 统计各项目达标率
-            GraphItemVO graphItemVO = new GraphItemVO(simpleProjectInfo.getProjectName(),
+            GraphItemVO graphItemVO = new GraphItemVO(simpleProjectInfo.getProjectLocalName(),
                     DataUtils.parseDouble(attrValueMap.get(ProjectEnvContentCodes.complianceRate.name()).getValue()),
                     AttrValueTypeEnum.number_2, DataConstants.PERCENT);
             projectsComplianceRate.add(graphItemVO);

+ 19 - 8
src/main/java/com/persagy/apm/report/paragraphs/service/impl/env/ProjectEnvBuilder.java

@@ -73,16 +73,27 @@ public class ProjectEnvBuilder extends ProjectParagraphBuilder {
                     item -> ParagraphUtils.item2Map(item, attrCodeSet)).collect(Collectors.toList());
 
             // 报警次数最多的指标
-            Map<String, Integer> alarmCountSortMap = new HashMap<>();
-            alarmCountSortMap.put(ProjectEnvContentCodes.alarmCount.name(), -1);
-            DataUtils.sort(itemMapList, alarmCountSortMap);
-            maxAlarmIndicator = itemMapList.get(0).get(ItemAttrConstants.NAME);
+            List<Map<String, String>> alarmCountMap = itemMapList.stream().filter(
+                    map -> map.get(ProjectEnvContentCodes.alarmCount.name()) != null).
+                    collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(alarmCountMap)) {
+                Map<String, Integer> alarmCountSortMap = new HashMap<>();
+                alarmCountSortMap.put(ProjectEnvContentCodes.alarmCount.name(), -1);
+                DataUtils.sort(alarmCountMap, alarmCountSortMap);
+                maxAlarmIndicator = alarmCountMap.get(0).get(ItemAttrConstants.NAME);
+            }
+
 
             // 处理率最低的指标
-            Map<String, Integer> handleProportionSortMap = new HashMap<>();
-            handleProportionSortMap.put(ProjectEnvContentCodes.handleProportion.name(), 1);
-            DataUtils.sort(itemMapList, handleProportionSortMap);
-            minHandleProportionIndicator = itemMapList.get(0).get(ItemAttrConstants.NAME);
+            List<Map<String, String>> handleProportionMap = itemMapList.stream().filter(
+                    map -> map.get(ProjectEnvContentCodes.handleProportion.name()) != null).
+                    collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(handleProportionMap)) {
+                Map<String, Integer> handleProportionSortMap = new HashMap<>();
+                handleProportionSortMap.put(ProjectEnvContentCodes.handleProportion.name(), 1);
+                DataUtils.sort(handleProportionMap, handleProportionSortMap);
+                minHandleProportionIndicator = handleProportionMap.get(0).get(ItemAttrConstants.NAME);
+            }
         }
 
         AttrValueVO maxAlarmIndicatorVO = new AttrValueVO(

+ 1 - 1
src/main/java/com/persagy/apm/report/paragraphs/service/impl/iot/AreaIotBuilder.java

@@ -79,7 +79,7 @@ public class AreaIotBuilder extends AreaIndicatorsParagraphBuilder {
             Map<String, AttrValueVO> attrValueMap = attrValueList2Map(statisticCodeSet, projectItemValue.getAttrs());
 
             // 统计各项目报告月取值
-            GraphItemVO graphItemVO = new GraphItemVO(simpleProjectInfo.getProjectName(),
+            GraphItemVO graphItemVO = new GraphItemVO(simpleProjectInfo.getProjectLocalName(),
                     DataUtils.parseDouble(attrValueMap.get(ProjectIotContentCodes.currentMonth.name()).getValue()),
                     AttrValueTypeEnum.number_2, DataConstants.PERCENT);
             currentMonthValueList.add(graphItemVO);

+ 4 - 3
src/main/java/com/persagy/apm/report/paragraphs/service/impl/iot/ProjectIotBuilder.java

@@ -58,10 +58,11 @@ public class ProjectIotBuilder extends ProjectParagraphBuilder {
                 if (attrDoubleValue != null) {
                     attrDoubleValue = DataUtils.doubleMultiply(attrDoubleValue, 100d);
                 }
-                String attrValueStr = attrDoubleValue == null ? "" : String.valueOf(attrDoubleValue);
+                String attrValueStr = attrDoubleValue == null ? "--" : String.valueOf(attrDoubleValue);
+                String isQualifiedStr = attrMap.get(ProjectIotContentCodes.isQualified.name()).getValue();
+                isQualifiedStr = isQualifiedStr == null ? "" : isQualifiedStr;
                 String itemInfo = name + ":" +
-                        attrValueStr + DataConstants.PERCENT + " " +
-                        attrMap.get(ProjectIotContentCodes.isQualified.name()).getValue();
+                        attrValueStr + DataConstants.PERCENT + " " + isQualifiedStr;
 
                 itemsSummary = itemsSummary == null ? itemInfo : itemsSummary + "," + itemInfo;
             }