From 24262f4d09ee7775dce09f1260572ff65792f527 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Wed, 28 Apr 2021 14:59:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E4=BA=8B=E4=BB=B6=E7=BA=A7?= =?UTF-8?q?=E5=88=AB=E7=BB=9F=E8=AE=A1=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/screen/ScreenProjectDataDTO.java | 2 + .../com/epmet/constant/ProjectConstant.java | 4 ++ .../FactOriginProjectMainDailyDao.java | 2 + .../FactOriginProjectMainDailyService.java | 10 +++ ...FactOriginProjectMainDailyServiceImpl.java | 64 +++++++++++++++++-- .../impl/ScreenProjectSettleServiceImpl.java | 8 ++- .../extract/FactOriginProjectMainDailyDao.xml | 32 ++++++++++ 7 files changed, 113 insertions(+), 9 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java index 423a94ebce..aeb148d8e9 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectDataDTO.java @@ -171,4 +171,6 @@ public class ScreenProjectDataDTO implements Serializable { private String topicId; + private Integer responseCount; + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java index 16530a61a2..e1b0dd8a11 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java @@ -14,6 +14,10 @@ public interface ProjectConstant { * 状态-结案 */ String CLOSED = "closed"; + /** + * 状态-结案 + */ + String CLOSED_CASE = "closed_case"; /** * 结案状态-已解决 */ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java index 82ea30952a..dbc532b90c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java @@ -368,4 +368,6 @@ public interface FactOriginProjectMainDailyDao extends BaseDao getProjectPeriodForDiff(@Param("customerId") String customerId, @Param("dateId") String dateId); + + List selectResponseCount(@Param("customerId") String customerId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java index f77a01bf4a..449e546658 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java @@ -357,4 +357,14 @@ public interface FactOriginProjectMainDailyService extends BaseService getProjectPeriod(ScreenCentralZoneDataFormDTO param); + /** + * 计算项目事件级别 + * @author zhaoqifeng + * @date 2021/4/28 14:47 + * @param list + * @param customerId + * @return void + */ + void setProjectLevel(List list, String customerId); + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java index 9553485a0e..756eff7fe3 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java @@ -23,6 +23,7 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.DataSourceConstant; +import com.epmet.constant.ProjectConstant; import com.epmet.dao.evaluationindex.extract.FactOriginProjectMainDailyDao; import com.epmet.dao.evaluationindex.extract.FactOriginProjectOrgPeriodDailyDao; import com.epmet.dto.extract.FactOriginProjectMainDailyDTO; @@ -436,16 +437,33 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl projects = baseDao.initNewScreenProjectData(customerId, rows <= NumConstant.ZERO ? "" : dateId, dateId); - //如果不是昨天立项 - if(!CollectionUtils.isEmpty(projects) && !ifBeforeYesterday) - computerIfExceed(projects,exceedLimit,about2exceedLimit); + projects.forEach(project -> { + if (ProjectConstant.CLOSED_CASE.equals(project.getProjectStatusCode())) { + //绿灯事件-结案项目 + project.setProjectLevel(NumConstant.THREE); + } else { + if (NumConstant.ZERO == project.getResponseCount()) { + //红灯事件-未做任何响应处理未结案的项目 + project.setProjectLevel(NumConstant.ONE); + } else { + //黄灯事件-至少做过一次响应处理答复但未结案的项目 + project.setProjectLevel(NumConstant.TWO); + } + } + }); +// //如果不是昨天立项 +// if(!CollectionUtils.isEmpty(projects) && !ifBeforeYesterday) { +// computerIfExceed(projects,exceedLimit,about2exceedLimit); +// } return projects; } @Override public void computerIfExceed(List list,Integer exceedLimit,Integer about2exceedLimit){ - if(CollectionUtils.isEmpty(list)) return; + if(CollectionUtils.isEmpty(list)) { + return; + } Result> costDays = epmetCommonServiceOpenFeignClient.costWorkDays(periodDao.selectProjectNodeStartStopTime(list.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList()))); if(null != costDays && !CollectionUtils.isEmpty(costDays.getData())){ //key : projectId @@ -456,10 +474,11 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl exceedLimit) + if(max > exceedLimit) { o.setProjectLevel(NumConstant.ONE); - else if(max >= about2exceedLimit) + } else if(max >= about2exceedLimit) { o.setProjectLevel(NumConstant.TWO); + } } return o; }).collect(Collectors.toList()); @@ -476,5 +495,38 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl list, String customerId) { + if(CollectionUtils.isEmpty(list)) { + return; + } + List projects = baseDao.selectResponseCount(customerId); + Map map = projects.stream().collect(Collectors.toMap(ScreenProjectDataDTO :: getParentId, v -> v, (v1, v2) -> v1)); + + list.forEach(item -> { + ScreenProjectDataDTO dto = map.get(item.getProjectId()); + if (ProjectConstant.CLOSED.equals(dto.getProjectStatusCode())) { + item.setProjectLevel(NumConstant.THREE); + } else { + if (NumConstant.ZERO == dto.getResponseCount()) { + //红灯事件-未做任何响应处理未结案的项目 + item.setProjectLevel(NumConstant.ONE); + } else { + //黄灯事件-至少做过一次响应处理答复但未结案的项目 + item.setProjectLevel(NumConstant.TWO); + } + } + }); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java index dfb64dfc01..730c2e8f17 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenProjectSettleServiceImpl.java @@ -118,9 +118,10 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic // 给metaData和orientData赋上分类信息 List projectIds = - Optional.ofNullable(metaData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())).orElse(new ArrayList<>()); - if(!CollectionUtils.isEmpty(orientData)) + Optional.of(metaData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())).orElse(new ArrayList<>()); + if(!CollectionUtils.isEmpty(orientData)) { projectIds.addAll(orientData.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())); + } Map> categoryMap = projectService.getProjectCategory(projectIds); if(!CollectionUtils.isEmpty(categoryMap)){ Map integratedProjectCategoryMap = issueService.getIntegratedProjectCategory(categoryMap, param.getCustomerId()); @@ -135,7 +136,8 @@ public class ScreenProjectSettleServiceImpl implements ScreenProjectSettleServic } //重新计算orientData的级别 有现成的方法 fact_origin_project_org_period_daily - originMainService.computerIfExceed(orientData, exceedLimit,about2ExceedLimit); +// originMainService.computerIfExceed(orientData, exceedLimit,about2ExceedLimit); + originMainService.setProjectLevel(orientData, param.getCustomerId()); processService.updateProjectCloseTime(metaData); //更新结案时间和结案状态 processService.updateProjectStatus(orientData,param.getDateId(),param.getCustomerId()); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml index 4e2d66473a..18aa1d5123 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml @@ -571,10 +571,18 @@ 3 as projectLevel, IF(data.PIDS IS NULL || TRIM(data.PIDS) = '',data.AGENCY_ID,CONCAT(REPLACE(data.PIDS,':',','),',',data.AGENCY_ID)) as allParentIds, data.TOPIC_ID, + IFNULL(log.response, 0) AS responseCount, #{dataEndTime} as dataEndTime FROM `fact_origin_project_main_daily` data LEFT JOIN DIM_AGENCY agency on data.agency_id = agency.id + LEFT JOIN ( + SELECT PROJECT_ID, COUNT(IS_ACTIVE) AS response FROM fact_origin_project_log_daily + WHERE (ACTION_CODE = 'close' OR ACTION_CODE = 'response' OR ACTION_CODE = 'transfer' OR ACTION_CODE = 'return') + AND IS_ACTIVE = 1 + AND CUSTOMER_ID = #{customerId} + GROUP BY PROJECT_ID + ) log ON data.ID = log.PROJECT_ID WHERE data.DEL_FLAG = '0' AND @@ -729,5 +737,29 @@ AND GRID_ID = '' GROUP BY AGENCY_ID +