From 1de2495ee8b90a6f3a454ef84327aa9a0cd2c8f5 Mon Sep 17 00:00:00 2001 From: PoffyZhang <99775271@qq.com> Date: Thu, 23 Nov 2023 11:28:23 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A9=BE=E9=A9=B6=E8=88=B1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pmapi/dashboard/model/entity/CockpitStats.java | 3 + .../scheduler/listener/EarlyWarningListener.java | 3 +- .../scheduler/task/CockpitStatsStatisticsTask.java | 19 ++--- .../task/EarlyWarningInstanceNotStartTask.java | 11 ++- .../pmapi/sys/manage/EarlyWarningManage.java | 89 +++++++++++++++++++--- .../pmapi/workbench/manage/WorkbenchManage.java | 3 +- 6 files changed, 101 insertions(+), 27 deletions(-) diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/entity/CockpitStats.java b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/entity/CockpitStats.java index d8160c9..432cbee 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/entity/CockpitStats.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/dashboard/model/entity/CockpitStats.java @@ -101,6 +101,9 @@ public class CockpitStats implements Serializable { @ApiModelProperty("专家-总人数") private Integer expertTotalNum = 0; + @ApiModelProperty("专家-总人数-包含这些标签的专家总人数") + private Integer specialExpertNum = 0; + @ApiModelProperty("专家-方案合理性-擅长") private Integer expertPlanRationalityNum = 0; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/listener/EarlyWarningListener.java b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/listener/EarlyWarningListener.java index 24ea2fd..1e3bde8 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/listener/EarlyWarningListener.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/listener/EarlyWarningListener.java @@ -58,6 +58,7 @@ public class EarlyWarningListener { String noticeMethod = event.getNoticeMethod(); String noticeContent = event.getNoticeContent(); Integer noticeType = event.getNoticeType(); + Integer overTimeout = event.getOverTimeout(); //1.根据nodeId 查询到 node 去查找 未完成 项目实例关系表 找到实例 List hais = historyService.createHistoricActivityInstanceQuery() @@ -122,7 +123,7 @@ public class EarlyWarningListener { String taskId = hai.getTaskId(); String path = "toDoCenter/handleDuringExamine?instanceId=" + instanceId + "&projectId=" + projectId + "&nodeId=" + nodeId + "&taskId=" + taskId; - earlyWarningManage.doEarlyWarning(noticeMethod,noticeContent,timeout,pi.getInstType(), + earlyWarningManage.doEarlyWarning(noticeMethod,noticeContent,timeout,overTimeout, pi.getInstType(), hai.getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime() ,employeeCode,project,WarningRuleTypeEnum.PROCESS_WARNING.getCode(),noticeType, path,batchEmployees,nodeId); diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/CockpitStatsStatisticsTask.java b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/CockpitStatsStatisticsTask.java index 7e5f25d..9de2a72 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/CockpitStatsStatisticsTask.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/CockpitStatsStatisticsTask.java @@ -386,8 +386,8 @@ public class CockpitStatsStatisticsTask { String dangzhengCode = "1020000"; String ruanyingCode = "2020000"; String caiwuCode = "5600000"; - String xinxihuaCode = "5400000"; - String xinchuangOtherCode = "5500000"; + List specialTags = Lists.newArrayList(networkCode,xinchuangCode,fanganCode,jishuCode, + dangzhengCode,ruanyingCode,caiwuCode); cockpitStats.setExpertTotalNum(experts.size()); Integer financialNum = 0; @@ -398,10 +398,11 @@ public class CockpitStatsStatisticsTask { Integer partyGovInfoNum = 0; Integer softHardPricingNum = 0; Integer technicalFeasibilityAssessmentNum = 0; - Integer xinchuangOtherNum = 0; + Integer specialExpertNum = 0; for(ExpertUserFullInfo e : experts){ if(tagMap.containsKey(e.getUserId())){ List expertTags = tagMap.get(e.getUserId()); + Boolean isContain = Boolean.FALSE; for(ExpertTag expertTag : expertTags){ if(expertTag.getTagCode().equals(networkCode)){ networkSecurityNum++; @@ -424,13 +425,13 @@ public class CockpitStatsStatisticsTask { if(expertTag.getTagCode().equals(ruanyingCode)){ softHardPricingNum ++; } - if(expertTag.getTagCode().equals(xinxihuaCode)){ - promotionInfoTechnologyNum++; - } - if(expertTag.getTagCode().equals(xinchuangOtherCode)){ - xinchuangOtherNum++; + if(specialTags.contains(expertTag.getTagCode())){ + isContain = Boolean.TRUE; } } + if(isContain){ + specialExpertNum ++; + } } } //财务专家 @@ -443,7 +444,7 @@ public class CockpitStatsStatisticsTask { cockpitStats.setExpertPartyGovInfoNum(partyGovInfoNum); cockpitStats.setExpertSoftHardPricingNum(softHardPricingNum); cockpitStats.setExpertTechnicalFeasibilityAssessmentNum(technicalFeasibilityAssessmentNum); - cockpitStats.setExpertXinchuangOtherNum(xinchuangOtherNum); + cockpitStats.setSpecialExpertNum(specialExpertNum); //3.顶部数据 //3.1 计划项目数(申报项目:完成年度计划的项目总数 diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/EarlyWarningInstanceNotStartTask.java b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/EarlyWarningInstanceNotStartTask.java index b99ad5a..5a76310 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/EarlyWarningInstanceNotStartTask.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/scheduler/task/EarlyWarningInstanceNotStartTask.java @@ -32,14 +32,12 @@ import com.wflow.service.IEarlyWarningService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.checkerframework.checker.nullness.qual.Nullable; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.net.InetAddress; import java.net.UnknownHostException; import java.time.*; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -232,9 +230,10 @@ public class EarlyWarningInstanceNotStartTask { for(Integer noticeType : noticeTypes) { for (String employeeCode : batchEmployees) { earlyWarningManage.doEarlyWarning(noticeMethod, Objects.nonNull(noticeType) && noticeType.equals(1) ? noticeContent : adventContent, - Objects.nonNull(noticeType) && noticeType.equals(1) ? time : adventTime, biz, + adventTime,time, biz, needToWaringProject.getUpdateOn(),employeeCode, needToWaringProject, - WarningRuleTypeEnum.DECLARED_WARNING.getCode(), noticeType, path, batchEmployeesStr,null); + WarningRuleTypeEnum.DECLARED_WARNING.getCode(), noticeType, path, batchEmployeesStr, + null); } } } @@ -430,7 +429,7 @@ public class EarlyWarningInstanceNotStartTask { for(Integer noticeType : noticeTypes){ for (String employeeCode : batchEmployees) { earlyWarningManage.doEarlyWarning(noticeMethod,Objects.nonNull(noticeType)&¬iceType.equals(1) ? noticeContent : adventContent, - Objects.nonNull(noticeType) && noticeType.equals(1) ? time : adventTime,biz, + adventTime,time,biz, needToWaringProject.getUpdateOn(),employeeCode,needToWaringProject, WarningRuleTypeEnum.OPERATION_WARNING.getCode(),noticeType,path, batchEmployees.stream().collect(Collectors.joining(StrPool.COMMA)),null); @@ -548,7 +547,7 @@ public class EarlyWarningInstanceNotStartTask { List noticeTypes = noticeTypeMap.get(needToWaringProject.getProjectCode()); for(Integer noticeType : noticeTypes){ earlyWarningManage.doEarlyWarning(noticeMethod,Objects.nonNull(noticeType)&¬iceType.equals(1) ? noticeContent : adventContent, - Objects.nonNull(noticeType) && noticeType.equals(1) ? time : adventTime,null, + adventTime,time,null, needToWaringProject.getUpdateOn(),user.getEmployeeCode(),project, WarningRuleTypeEnum.RENEWAL_FUND.getCode(),noticeType,path,employeesStr,needToWaringProject.getId().toString()); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/sys/manage/EarlyWarningManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/sys/manage/EarlyWarningManage.java index b686e57..2e2a3b9 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/sys/manage/EarlyWarningManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/sys/manage/EarlyWarningManage.java @@ -16,6 +16,7 @@ import com.ningdatech.pmapi.sys.service.INotifyService; import com.ningdatech.pmapi.todocenter.bean.entity.WorkNoticeInfo; import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; import com.ningdatech.yxt.model.cmd.SendSmsCmd; +import com.wflow.enums.WarningNoticeTypeEnum; import com.wflow.enums.WarningRuleTypeEnum; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -51,12 +52,12 @@ public class EarlyWarningManage { * 预警通知 * @param noticeMethod * @param noticeContent - * @param timeout + * @param adventTimeout * @param employeeCode * @param project */ - public void doEarlyWarning(String noticeMethod,String noticeContent, Integer timeout,Integer biz, - LocalDateTime startTime,String employeeCode, + public void doEarlyWarning(String noticeMethod,String noticeContent, Integer adventTimeout,Integer overTimeout, + Integer biz, LocalDateTime startTime,String employeeCode, Project project,Integer ruleType,Integer noticeType, String path,String batchEmployees,String nodeId) { //1.存入 预警记录 @@ -66,22 +67,53 @@ public class EarlyWarningManage { switch (WarningRuleTypeEnum.checkByCode(ruleType)){ case PROCESS_WARNING: - content = convertContent(noticeContent,project.getProjectName(), - InstTypeEnum.getByCode(biz),timeout); + if(Objects.isNull(noticeType)){ + content = convertContent(noticeContent,project.getProjectName(), + InstTypeEnum.getByCode(biz),overTimeout); + }else if(noticeType.equals(WarningNoticeTypeEnum.ADVENT.getCode())) { + content = convertAdventContent(noticeContent,project.getProjectName(), + InstTypeEnum.getByCode(biz),adventTimeout,overTimeout); + }else{ + content = convertContent(noticeContent,project.getProjectName(), + InstTypeEnum.getByCode(biz),overTimeout); + } records.setRuleType(WarningRuleTypeEnum.PROCESS_WARNING.getCode()); break; case DECLARED_WARNING: - content = convertContent(noticeContent,project.getProjectName(), - WarningFlowTypeEnum.getByCode(biz),timeout); + if(Objects.isNull(noticeType)){ + content = convertContent(noticeContent,project.getProjectName(), + WarningFlowTypeEnum.getByCode(biz),overTimeout); + }else if(noticeType.equals(WarningNoticeTypeEnum.ADVENT.getCode())) { + content = convertAdventContent(noticeContent,project.getProjectName(), + WarningFlowTypeEnum.getByCode(biz),adventTimeout,overTimeout); + }else{ + content = convertContent(noticeContent,project.getProjectName(), + WarningFlowTypeEnum.getByCode(biz),overTimeout); + } records.setRuleType(WarningRuleTypeEnum.DECLARED_WARNING.getCode()); break; case OPERATION_WARNING: - content = convertContent(noticeContent,project.getProjectName(), - WarningOperationTypeEnum.getByCode(biz),timeout); + if(Objects.isNull(noticeType)){ + content = convertContent(noticeContent,project.getProjectName(), + WarningOperationTypeEnum.getByCode(biz),overTimeout); + }else if(noticeType.equals(WarningNoticeTypeEnum.ADVENT.getCode())) { + content = convertAdventContent(noticeContent,project.getProjectName(), + WarningOperationTypeEnum.getByCode(biz),adventTimeout,overTimeout); + }else{ + content = convertContent(noticeContent,project.getProjectName(), + WarningOperationTypeEnum.getByCode(biz),overTimeout); + } records.setRuleType(WarningRuleTypeEnum.OPERATION_WARNING.getCode()); break; case RENEWAL_FUND: - content = convertContent(noticeContent,project.getProjectName(),timeout); + if(Objects.isNull(noticeType)){ + content = convertContent(noticeContent,project.getProjectName(),overTimeout); + }else if(noticeType.equals(WarningNoticeTypeEnum.ADVENT.getCode())) { + content = convertAdventContent(noticeContent,project.getProjectName(),adventTimeout,overTimeout); + }else{ + content = convertContent(noticeContent,project.getProjectName(),overTimeout); + } + records.setRuleType(WarningRuleTypeEnum.RENEWAL_FUND.getCode()); break; default: @@ -147,6 +179,13 @@ public class EarlyWarningManage { log.info("通知内容 :{}",noticeContent); return noticeContent; } + private String convertAdventContent(String noticeContent, String projectName, Integer timeout,Integer overTimeOut) { + noticeContent = noticeContent.replace("{projectName}",projectName) + .replace("{time}",String.valueOf(timeout)) + .replace("{time2}",String.valueOf((overTimeOut - timeout))); + log.info("通知内容 :{}",noticeContent); + return noticeContent; + } /** * 转换出 通知的内容 @@ -165,6 +204,16 @@ public class EarlyWarningManage { return noticeContent; } + private String convertAdventContent(String noticeContent, String projectName, InstTypeEnum instTypeEnum, Integer timeout,Integer overTimeOut) { + noticeContent = noticeContent.replace("{projectName}",projectName) + .replace("{flowType}",Objects.nonNull(instTypeEnum) ? instTypeEnum.getDesc() : "{flowType}") + .replace("{stepName}",Objects.nonNull(instTypeEnum) ? instTypeEnum.getDesc() : "{stepName}") + .replace("{time}",String.valueOf(timeout)) + .replace("{time2}",String.valueOf((overTimeOut - timeout))); + log.info("通知内容 :{}",noticeContent); + return noticeContent; + } + private String convertContent(String noticeContent, String projectName, WarningFlowTypeEnum warningFlowTypeEnum, Integer timeout) { noticeContent = noticeContent.replace("{projectName}",projectName) .replace("{flowType}",Objects.nonNull(warningFlowTypeEnum) ? warningFlowTypeEnum.getDesc() : "{flowType}") @@ -174,6 +223,16 @@ public class EarlyWarningManage { return noticeContent; } + private String convertAdventContent(String noticeContent, String projectName, WarningFlowTypeEnum warningFlowTypeEnum, Integer timeout,Integer overTimeout) { + noticeContent = noticeContent.replace("{projectName}",projectName) + .replace("{flowType}",Objects.nonNull(warningFlowTypeEnum) ? warningFlowTypeEnum.getDesc() : "{flowType}") + .replace("{stepName}",Objects.nonNull(warningFlowTypeEnum) ? warningFlowTypeEnum.getDesc() : "{stepName}") + .replace("{time}",String.valueOf(timeout)) + .replace("{time2}",String.valueOf((overTimeout - timeout))); + log.info("通知内容 :{}",noticeContent); + return noticeContent; + } + private String convertContent(String noticeContent, String projectName, WarningOperationTypeEnum operationTypeEnum, Integer timeout) { noticeContent = noticeContent.replace("{projectName}",projectName) .replace("{flowType}",Objects.nonNull(operationTypeEnum) ? operationTypeEnum.getDesc() : "{flowType}") @@ -182,4 +241,14 @@ public class EarlyWarningManage { log.info("通知内容 :{}",noticeContent); return noticeContent; } + + private String convertAdventContent(String noticeContent, String projectName, WarningOperationTypeEnum operationTypeEnum, Integer timeout,Integer overTimeout) { + noticeContent = noticeContent.replace("{projectName}",projectName) + .replace("{flowType}",Objects.nonNull(operationTypeEnum) ? operationTypeEnum.getDesc() : "{flowType}") + .replace("{stepName}",Objects.nonNull(operationTypeEnum) ? operationTypeEnum.getDesc() : "{stepName}") + .replace("{time}",String.valueOf(timeout)) + .replace("{time2}",String.valueOf((overTimeout - timeout))); + log.info("通知内容 :{}",noticeContent); + return noticeContent; + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/workbench/manage/WorkbenchManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/workbench/manage/WorkbenchManage.java index 99398f4..45984c3 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/workbench/manage/WorkbenchManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/workbench/manage/WorkbenchManage.java @@ -293,7 +293,8 @@ public class WorkbenchManage { Long between = ChronoUnit.HOURS.between(instStart,LocalDateTime.now()); Integer times = 0; for(String employee : employees){ - earlyWarningManage.doEarlyWarning(noticeMethod,noticeContent,between.intValue(),biz, + earlyWarningManage.doEarlyWarning(noticeMethod,noticeContent,between.intValue() + ,between.intValue(),biz, instStart,employee,project, ruleType,noticeType,path,batchEmployees,record.getNodeId()); times++;