فهرست منبع

登录人没有报警类型权限时,不显示报告列表

lixing 3 سال پیش
والد
کامیت
e80409939d

+ 5 - 2
src/main/java/com/persagy/apm/report/common/schedule/ReportGenerateFailScheduleTask.java

@@ -53,7 +53,10 @@ public class ReportGenerateFailScheduleTask {
 
         Date now = new Date();
         List<ReportOutline> reports2Fail = reportOutlines.stream().filter(reportOutline -> {
-            Double dateDuration = DateUtils.getDateDuration(now, reportOutline.getModifiedTime());
+            // 获取两个时间点相差的毫秒数
+            Double dateDuration = DateUtils.getDateDurationMs(reportOutline.getModifiedTime(), now);
+            log.info( "{}生成时间:{}min", reportOutline.getName(),
+                    DateUtils.getDateDurationMin(reportOutline.getModifiedTime(), now));
             return dateDuration > maxGenerateMinutes * 60 * 1000;
         }).collect(Collectors.toList());
         log.info("共有{}个报告生成超时", reports2Fail.size());
@@ -62,6 +65,6 @@ public class ReportGenerateFailScheduleTask {
             reportOutline.setStatus(ReportStateEnum.BUILD_FAILED.getType());
             reportOutlineService.updateReportOutline(reportOutline);
         });
-        log.info("将这些报告的状态更新为生成失败");
+        log.info("将这些报告的状态更新为生成失败");
     }
 }

+ 1 - 1
src/main/java/com/persagy/apm/report/common/utils/DataUtils.java

@@ -177,7 +177,7 @@ public class DataUtils {
     }
 
     /**
-     * 两个double做
+     * 两个double做
      *
      * @param d1 第一个double值
      * @param d2 第二个double值

+ 24 - 0
src/main/java/com/persagy/apm/report/common/utils/DateUtils.java

@@ -208,11 +208,35 @@ public class DateUtils {
         return Date.from(lastYearFirstDay.atStartOfDay(zoneId).toInstant());
     }
 
+    /**
+     * 获取两个时间的间隔(ms) endDate - beginDate
+     *
+     * @param beginDate 开始时间
+     * @param endDate   结束时间
+     * @return 相差的时间间隔(ms)
+     * @author lixing
+     * @version V1.0 2021/9/1 10:17 上午
+     */
     public static Double getDateDurationMs(Date beginDate, Date endDate) {
         long diff = endDate.getTime() - beginDate.getTime();
         return (double) diff;
     }
 
+    /**
+     * 获取两个时间的间隔(min) endDate - beginDate
+     *
+     * @param beginDate 开始时间
+     * @param endDate   结束时间
+     * @return 相差的时间间隔(min)
+     * @author lixing
+     * @version V1.0 2021/9/1 10:17 上午
+     */
+    public static Double getDateDurationMin(Date beginDate, Date endDate) {
+        double nh = 1000 * 60;
+        double diff = endDate.getTime() - beginDate.getTime();
+        return DataUtils.doubleDivide(diff, nh);
+    }
+
     public static Double getDateDuration(Date beginDate, Date endDate) {
         long nh = 1000 * 60 * 60;
         long diff = endDate.getTime() - beginDate.getTime();

+ 4 - 0
src/main/java/com/persagy/apm/report/dependencies/saasweb/client/SaasWebClient.java

@@ -7,6 +7,7 @@ import com.persagy.apm.report.dependencies.saasweb.client.fallback.SaasWebClient
 import com.persagy.apm.report.dependencies.saasweb.model.vo.*;
 import feign.Headers;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -103,4 +104,7 @@ public interface SaasWebClient {
     @PostMapping("/Spring/MVC/entrance/unifier/listFunctionTypesService")
     @Headers({"Content-Type: application/x-www-form-urlencoded"})
     PoemsFeignResponse<FunctionTypeVO> getAllProjectFunctionTypes(@RequestParam("jsonString") String poemsFeignBaseDTO);
+
+    @GetMapping("test")
+    void test();
 }

+ 1 - 0
src/main/java/com/persagy/apm/report/dependencies/saasweb/client/fallback/SaasWebClientFallbackFactory.java

@@ -14,6 +14,7 @@ import org.springframework.stereotype.Component;
 public class SaasWebClientFallbackFactory implements FallbackFactory<SaasWebClient> {
     @Override
     public SaasWebClient create(Throwable throwable) {
+        System.out.println("fall back");
         return null;
     }
 }

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

@@ -235,7 +235,7 @@ public class EnvFactory {
      */
     public AttrValueVO getQualifiedStandard(Function function) {
         return new AttrValueVO(ProjectEnvContentCodes.complianceRateQualifiedStandard.name(),
-                getQualifiedStandardValue(function), AttrValueTypeEnum.percent, DataConstants.PERCENT);
+                getQualifiedStandardValue(function), AttrValueTypeEnum.percent_2, DataConstants.PERCENT);
     }
 
     /**

+ 3 - 2
src/main/java/com/persagy/apm/report/indicator/factory/IotFactory.java

@@ -94,7 +94,8 @@ public class IotFactory {
         List<Date> firstDayOfEveryMonth = DateUtils.getFirstDayOfEveryMonth(firstDayOfYear, decemberFirstDayOfYear);
 
         List<GraphItemVO> data = new ArrayList<>();
-        GraphVO graphVO = new GraphVO(StandardNames.STANDARD_RANGE, getQualifiedStandardValue(function), data);
+        GraphVO graphVO = new GraphVO(StandardNames.STANDARD_RANGE, getQualifiedStandardValue(function),
+                AttrValueTypeEnum.percent, data);
 
         for (Date tmpDate : firstDayOfEveryMonth) {
             Double currentMonthValue = null;
@@ -167,7 +168,7 @@ public class IotFactory {
      */
     public AttrValueVO getQualifiedStandard(Function function) {
         return new AttrValueVO(ProjectIotContentCodes.qualifiedRange.name(),
-                getQualifiedStandardValue(function), AttrValueTypeEnum.percent, DataConstants.PERCENT);
+                getQualifiedStandardValue(function), AttrValueTypeEnum.percent_2, DataConstants.PERCENT);
     }
 
     /**

+ 3 - 0
src/main/java/com/persagy/apm/report/indicator/model/vo/GraphVO.java

@@ -1,5 +1,6 @@
 package com.persagy.apm.report.indicator.model.vo;
 
+import com.persagy.apm.report.detail.enums.AttrValueTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -21,6 +22,8 @@ public class GraphVO {
     private String standardName;
     @ApiModelProperty(value = "标准值")
     private String standardValue;
+    @ApiModelProperty(value = "值类型")
+    private AttrValueTypeEnum type;
     @ApiModelProperty(value = "图表数据")
     private List<GraphItemVO> data;
 }

+ 11 - 10
src/main/java/com/persagy/apm/report/outline/controller/ReportOutlineController.java

@@ -7,13 +7,12 @@ import com.persagy.apm.common.response.CommonResult;
 import com.persagy.apm.common.response.PageList;
 import com.persagy.apm.common.utils.ResultHelper;
 import com.persagy.apm.report.common.utils.DateUtils;
-import com.persagy.apm.report.detail.model.dto.UpdateReportDetailDTO;
-import com.persagy.apm.report.userconfig.reporttype.model.ConvertReportTypeTool;
-import com.persagy.apm.report.userconfig.reporttype.model.ReportType;
-import com.persagy.apm.report.userconfig.reporttype.model.vo.ResponseReportTypeItemVO;
-import com.persagy.apm.report.userconfig.reporttype.model.vo.ResponseReportTypeListItemVO;
-import com.persagy.apm.report.userconfig.reporttype.service.IReportTypeService;
+import com.persagy.apm.report.dependencies.saasweb.model.vo.PartitionProjectVO;
+import com.persagy.apm.report.dependencies.saasweb.model.vo.PartitionVO;
+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.model.dto.GetReportDetailDTO;
+import com.persagy.apm.report.detail.model.dto.UpdateReportDetailDTO;
 import com.persagy.apm.report.detail.model.vo.ReportDetailItemVO;
 import com.persagy.apm.report.outline.constants.enums.ReportStateEnum;
 import com.persagy.apm.report.outline.model.ConvertReportOutlineTool;
@@ -21,10 +20,11 @@ import com.persagy.apm.report.outline.model.ReportOutline;
 import com.persagy.apm.report.outline.model.dto.*;
 import com.persagy.apm.report.outline.model.vo.ResponseReportOutlineListItemVO;
 import com.persagy.apm.report.outline.service.IReportOutlineService;
-import com.persagy.apm.report.dependencies.saasweb.model.vo.PartitionProjectVO;
-import com.persagy.apm.report.dependencies.saasweb.model.vo.PartitionVO;
-import com.persagy.apm.report.dependencies.saasweb.model.vo.SimpleProjectVO;
-import com.persagy.apm.report.dependencies.saasweb.service.ISaasWebService;
+import com.persagy.apm.report.userconfig.reporttype.model.ConvertReportTypeTool;
+import com.persagy.apm.report.userconfig.reporttype.model.ReportType;
+import com.persagy.apm.report.userconfig.reporttype.model.vo.ResponseReportTypeItemVO;
+import com.persagy.apm.report.userconfig.reporttype.model.vo.ResponseReportTypeListItemVO;
+import com.persagy.apm.report.userconfig.reporttype.service.IReportTypeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -170,5 +170,6 @@ public class ReportOutlineController {
                 updateReportDetailDTO);
         return ResultHelper.success();
     }
+
 }
 

+ 5 - 1
src/main/java/com/persagy/apm/report/outline/service/builder/impl/ReportGenerator.java

@@ -13,6 +13,7 @@ import com.persagy.apm.report.outline.service.IReportOutlineService;
 import com.persagy.apm.report.outline.service.builder.IReportGenerator;
 import com.persagy.apm.report.paragraphs.service.IParagraphBuilder;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.aop.framework.AopContext;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Propagation;
@@ -39,6 +40,8 @@ public class ReportGenerator implements IReportGenerator {
     private IReportParagraphValueService paragraphValueService;
     @Autowired
     private IParagraphService paragraphService;
+//    @Autowired
+//    private ReportGenerator reportGenerator;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -46,7 +49,8 @@ public class ReportGenerator implements IReportGenerator {
         // 删除之前生成的段落
         deleteReportParagraphs(reportOutline);
         // 生成新的报告详情
-        boolean generateSuccess = generateParagraphs(reportOutline);
+//        boolean generateSuccess = reportGenerator.generateParagraphs(reportOutline);
+        boolean generateSuccess = ((ReportGenerator)AopContext.currentProxy()).generateParagraphs(reportOutline);
 
         // 更新报告概要的状态
         if (generateSuccess) {

+ 31 - 28
src/main/java/com/persagy/apm/report/outline/service/impl/ReportOutlineServiceImpl.java

@@ -10,24 +10,15 @@ import com.persagy.apm.common.context.poems.PoemsContext;
 import com.persagy.apm.common.model.dto.Sort;
 import com.persagy.apm.report.common.utils.ApmStrUtils;
 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.userconfig.paragraph.model.vo.ParagraphItemVO;
-import com.persagy.apm.report.userconfig.paragraphcustom.model.ParagraphCustom;
-import com.persagy.apm.report.userconfig.paragraphcustom.service.IParagraphCustomService;
-import com.persagy.apm.report.userconfig.paragraphmodel.service.IParagraphModelService;
-import com.persagy.apm.report.userconfig.pargraphdefine.service.IParagraphDefineService;
-import com.persagy.apm.report.userconfig.reporttype.constant.enums.BelongTypeEnum;
-import com.persagy.apm.report.userconfig.reporttype.model.ReportType;
-import com.persagy.apm.report.userconfig.reporttype.model.vo.ResponseReportTypeListItemVO;
-import com.persagy.apm.report.userconfig.reporttype.service.IReportTypeService;
 import com.persagy.apm.report.dependencies.saasweb.model.ConvertSaasWebTool;
 import com.persagy.apm.report.dependencies.saasweb.model.vo.PoemsProjectVO;
 import com.persagy.apm.report.dependencies.saasweb.model.vo.ReportAreaVO;
 import com.persagy.apm.report.dependencies.saasweb.model.vo.ReportProjectVO;
 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.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.model.vo.ParagraphVO;
 import com.persagy.apm.report.detail.model.vo.ReportDetailItemVO;
 import com.persagy.apm.report.detail.paragraphvalue.model.vo.ReportParagraphValueItemVO;
@@ -38,6 +29,15 @@ import com.persagy.apm.report.outline.model.ConvertReportOutlineTool;
 import com.persagy.apm.report.outline.model.ReportOutline;
 import com.persagy.apm.report.outline.model.dto.*;
 import com.persagy.apm.report.outline.service.IReportOutlineService;
+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;
+import com.persagy.apm.report.userconfig.paragraphmodel.service.IParagraphModelService;
+import com.persagy.apm.report.userconfig.pargraphdefine.service.IParagraphDefineService;
+import com.persagy.apm.report.userconfig.reporttype.constant.enums.BelongTypeEnum;
+import com.persagy.apm.report.userconfig.reporttype.model.ReportType;
+import com.persagy.apm.report.userconfig.reporttype.model.vo.ResponseReportTypeListItemVO;
+import com.persagy.apm.report.userconfig.reporttype.service.IReportTypeService;
 import org.apache.commons.lang.StringUtils;
 import org.assertj.core.util.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -281,7 +281,7 @@ public class ReportOutlineServiceImpl extends ServiceImpl<ReportOutlineMapper, R
     }
 
     @Override
-    @Transactional(rollbackFor=Exception.class)
+    @Transactional(rollbackFor = Exception.class)
     public void batchDeleteReportOutline(List<String> ids) {
         for (String id : ids) {
             // 校验是否可删除
@@ -359,22 +359,25 @@ public class ReportOutlineServiceImpl extends ServiceImpl<ReportOutlineMapper, R
         // 查询当前用户可用的报告类型
         IPage<ResponseReportTypeListItemVO> availableReportTypes = reportTypeService.queryAvailableReportTypes(
                 pageQueryReportOutlineDTO.getBelongType());
-        if (availableReportTypes != null) {
-            List<ResponseReportTypeListItemVO> records = availableReportTypes.getRecords();
-            if (!CollectionUtils.isEmpty(records)) {
-                // 每一类报告类型拼装一个or条件
-                queryWrapper.and(wrapper -> {
-                    for (ResponseReportTypeListItemVO record : records) {
-                        // 根据报告类型id + 报告所属查询
-                        wrapper.or(
-                                innerWrapper -> innerWrapper.eq(
-                                        ReportOutline.PROP_REPORT_TYPE_ID, record.getId()).in(
-                                        ReportOutline.PROP_BELONG, record.getAvailableBelongIds())
-                        );
-                    }
-                });
-            }
+        if (availableReportTypes == null) {
+            return new Page<>();
+        }
+        List<ResponseReportTypeListItemVO> records = availableReportTypes.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            // 如果登录人没有报警类型权限,给一个返回空结果
+            return new Page<>();
         }
+        // 每一类报告类型拼装一个or条件
+        queryWrapper.and(wrapper -> {
+            for (ResponseReportTypeListItemVO record : records) {
+                // 根据报告类型id + 报告所属查询
+                wrapper.or(
+                        innerWrapper -> innerWrapper.eq(
+                                ReportOutline.PROP_REPORT_TYPE_ID, record.getId()).in(
+                                ReportOutline.PROP_BELONG, record.getAvailableBelongIds())
+                );
+            }
+        });
 
         if (StringUtils.isNotEmpty(pageQueryReportOutlineDTO.getName())) {
             queryWrapper.like(ReportOutline.PROP_NAME, pageQueryReportOutlineDTO.getName());

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

@@ -153,11 +153,12 @@ public class AreaEnergyEfficiencyBuilder extends AreaIndicatorsParagraphBuilder
         DataUtils.sort(projectsEfficiency, sortMap);
 
         Gson gson = new Gson();
-        GraphVO graphVO = new GraphVO(StandardNames.STANDARD_VALUE, qualifiedStandard.getValue(), projectsEfficiency);
+        GraphVO graphVO = new GraphVO(StandardNames.STANDARD_VALUE, qualifiedStandard.getValue(),
+                AttrValueTypeEnum.number_2, projectsEfficiency);
         AttrValueVO projectEfficiencies = new AttrValueVO(
                 AreaEnergyEfficiencyContentCodes.projectEfficiencies.name(),
                 gson.toJson(graphVO), AttrValueTypeEnum.graph);
         attrs.add(projectEfficiencies);
         return itemVO;
     }
-}
+}

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

@@ -208,7 +208,7 @@ public class AreaEnvBuilder extends AreaIndicatorsParagraphBuilder {
 
         Gson gson = new Gson();
         GraphVO graphVO = new GraphVO(StandardNames.STANDARD_VALUE,
-                qualifiedStandard.getValue(), projectsComplianceRate);
+                qualifiedStandard.getValue(), AttrValueTypeEnum.percent, projectsComplianceRate);
         AttrValueVO projectComplianceRates = new AttrValueVO(
                 AreaEnvContentCodes.projectComplianceRates.name(),
                 gson.toJson(graphVO), AttrValueTypeEnum.graph);

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

@@ -101,10 +101,10 @@ public class AreaIotBuilder extends AreaIndicatorsParagraphBuilder {
                 unqualifiedProjectCountStr, AttrValueTypeEnum.number);
         attrs.add(unqualifiedCount);
         // 各项目本月取值,按绝对值排序
-        sortByAbsValue(currentMonthValueList);
+        sortByAbsValueDesc(currentMonthValueList);
         Gson gson = new Gson();
         GraphVO graphVO = new GraphVO(StandardNames.STANDARD_VALUE,
-                qualifiedStandard.getValue(), currentMonthValueList);
+                qualifiedStandard.getValue(), AttrValueTypeEnum.percent, currentMonthValueList);
         AttrValueVO projectValues = new AttrValueVO(
                 AreaIotContentCodes.projectValues.name(),
                 gson.toJson(graphVO), AttrValueTypeEnum.graph);
@@ -114,13 +114,13 @@ public class AreaIotBuilder extends AreaIndicatorsParagraphBuilder {
     }
 
     /**
-     * 根据绝对值排序
+     * 根据绝对值排序(降序)
      *
      * @param graphItemList 图表条目列表
      * @author lixing
      * @version V1.0 2021/8/9 9:40 上午
      */
-    private void sortByAbsValue(List<GraphItemVO> graphItemList) {
+    private void sortByAbsValueDesc(List<GraphItemVO> graphItemList) {
         if (CollectionUtils.isEmpty(graphItemList)) {
             return;
         }
@@ -132,7 +132,7 @@ public class AreaIotBuilder extends AreaIndicatorsParagraphBuilder {
             if (o2 == null) {
                 return 1;
             }
-            return DataUtils.absComparable().compare(o1.getValue(), o2.getValue());
+            return DataUtils.absComparable().reversed().compare(o1.getValue(), o2.getValue());
         });
     }
 
@@ -180,5 +180,4 @@ public class AreaIotBuilder extends AreaIndicatorsParagraphBuilder {
     public List<AttrValueVO> getSummary(List<GroupVO> groupVOList, List<ItemVO> itemVOList, List<String> projectIdList) {
         return null;
     }
-
 }

+ 2 - 1
src/main/resources/bootstrap.yml

@@ -3,10 +3,11 @@ spring:
     name: report-factory
 
 EUREKA_CLIENT_DEFAULT_ZONE: http://frame:123456@develop.persagy.com/integrated-eureka/eureka/
-#EUREKA_CLIENT_DEFAULT_ZONE: http://pbsage:123456@hr.persagy.com/poems-eureka/eureka/
+#EUREKA_CLIENT_DEFAULT_ZONE: http://frame:Hv7MpxJ5pBckigB@47.117.93.148/integrated-eureka/eureka/
 #CONFIG_SERVER_ID: poems-config
 
 mybatis-plus:
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 
+