From edaeb3c063f34124b0e17dc45635eb1468b8f3fb Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 14 Apr 2021 16:55:47 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=BE=E7=82=B9=E5=A0=B5=E7=82=B9-=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E6=8A=BD=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ScreenExtractServiceImpl.java | 7 +- ...srootsGovernDataAbsorptionServiceImpl.java | 109 ++++++++++-------- 2 files changed, 68 insertions(+), 48 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java index 23442bedbd..192305e6ad 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java @@ -182,10 +182,11 @@ public class ScreenExtractServiceImpl implements ScreenExtractService { //基层治理- 难点赌点 screen_difficulty_data | screen_difficulty_img_data try { log.info("【难点赌点数据上报开始------】 当前客户Id{}",param.getCustomerId()); - screenGrassrootsGovernDataAbsorptionService.difficultyDataHub(param); + //screenGrassrootsGovernDataAbsorptionService.difficultyDataHub(param); - //todo 初始化全量 param.setDateId(null); - //screenGrassrootsGovernDataAbsorptionService.difficultyDataExtract(param); + //todo 初始化全量 + param.setDateId(null); + screenGrassrootsGovernDataAbsorptionService.difficultyDataExtract(param); log.info("【难点赌点数据上报结束------】 当前客户Id{}",param.getCustomerId()); }catch (Exception e){ log.error("基层治理-难点赌点抽取到大屏失败,customerId为:"+customerId+"dateId为:"+dateId, e); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java index fa38997153..ef05b4dbcd 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java @@ -217,7 +217,6 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr @Override public boolean difficultyDataExtract(ScreenCentralZoneDataFormDTO param) { - //TODO //1.根据客户Id 获取所有项目数据 List difficultyBaseList = factOriginProjectMainDailyService.getProjectForDiff(param); if (CollectionUtils.isEmpty(difficultyBaseList)) { @@ -253,50 +252,16 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr Map> orgCountMap = new HashMap<>(); //被处理次数 Map handleCountMap = new HashMap<>(); - //已经结案的项目的结案时间 - Set valideProjectIdSet = new HashSet<>(); - Map closeProjectDateMap = projectPeriodList.stream().filter(o -> ProjectConstant.CLOSE.equals(o.getOperation())) - .collect(Collectors.toMap(FactOriginProjectOrgPeriodDailyEntity::getProjectId, FactOriginProjectOrgPeriodDailyEntity::getHandledDate, (o1, o2) -> o1)); - //超期项目阈值 - Integer overtimeConfig = projectService.getOvertimeProjectByParameter(param.getCustomerId()); - Map informDate = new HashMap<>(); - projectPeriodList.forEach(period -> { - Set orgCount = orgCountMap.get(period.getProjectId()); - if (orgCount == null) { - orgCount = new HashSet<>(); - } - orgCount.add(period.getOrgId()); - orgCountMap.put(period.getProjectId(), orgCount); - if (ProjectConstant.RESOLVED.equals(period.getIsResolved())) { - Integer handleCount = handleCountMap.getOrDefault(period.getProjectId(), 0); - handleCountMap.put(period.getProjectId(), ++handleCount); - } - - //筛选出 项目的结案时间 未结案的为当前时间(结案只有一条记录) - if (period.getHandledDate() != null) { - if (period.getHandledDate().getTime() - period.getInformedDate().getTime() > overtimeConfig * 1000 * 60 * 60 * 24) { - valideProjectIdSet.add(period.getProjectId()); - } - } else { - Date finishDate = closeProjectDateMap.getOrDefault(period.getProjectId(), new Date()); - if (finishDate.getTime() - period.getInformedDate().getTime() > overtimeConfig * 1000 * 60 * 60 * 24) { - valideProjectIdSet.add(period.getProjectId()); - } - } - - }); + Set valideProjectIdSet = fillAnyCountAndValidProject(param, projectPeriodList, orgCountMap, handleCountMap); List diffList = new ArrayList<>(); List imgDataEntities = new ArrayList<>(); for (FactOriginProjectMainDailyEntity project : difficultyBaseList) { if (agencyMap.get(project.getAgencyId()) == null || bizProjectInfoMap.get(project.getId()) == null) { - log.warn("未获取到相关的项目信息或者项目的所属组织信息"); - System.out.println(agencyMap.get(project.getAgencyId())); - System.out.println(bizProjectInfoMap.get(project.getId())); + log.warn("未获取到相关的项目信息或者项目的所属组织信息,agencyId:{},projectId:{}",project.getAgencyId(),project.getId()); continue; } //判断是否符合难点堵点条件 - if (!valideProjectIdSet.contains(project.getId())) { continue; } @@ -314,8 +279,7 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr diffEntity.setEventHandledCount(0); } - - diffEntity.setDataEndTime(param.getDateId()); + diffEntity.setDataEndTime(StringUtils.isBlank(param.getDateId())?DateUtils.getBeforeNDay(NumConstant.ONE):param.getDateId()); setCategoryInfo(diffEntity, project.getId(), categoryList, projectCategoryMap); @@ -343,13 +307,62 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr log.info("========:" + JSON.toJSONString(diffList)); log.info("========:" + JSON.toJSONString(imgDataEntities)); - //screenDifficultyDataService.dataClean(param.getCustomerId(),diffList,imgDataEntities); + screenDifficultyDataService.dataClean(param.getCustomerId(),diffList,imgDataEntities); log.info("【大屏数据抽取-难点赌点执行完毕】 客户Id{} 难点赌点数据{}", param.getCustomerId(), JSON.toJSONString(diffList)); - //3.获取项目的最后操作记录 return true; } + /** + * desc:筛选出符合条件的的项目(超过超期时间的为超期项目)和处理的部门数及处理次数 + * @param param + * @param projectPeriodList + * @param orgCountMap + * @param handleCountMap + * @return + */ + private Set fillAnyCountAndValidProject(ScreenCentralZoneDataFormDTO param, List projectPeriodList, Map> orgCountMap, Map handleCountMap) { + //已经结案的项目的结案时间 + Set valideProjectIdSet = new HashSet<>(); + Map closeProjectDateMap = projectPeriodList.stream().filter(o -> ProjectConstant.CLOSE.equals(o.getOperation())) + .collect(Collectors.toMap(FactOriginProjectOrgPeriodDailyEntity::getProjectId, FactOriginProjectOrgPeriodDailyEntity::getHandledDate, (o1, o2) -> o1)); + //超期项目阈值 + Integer overtimeConfig = projectService.getOvertimeProjectByParameter(param.getCustomerId()); + projectPeriodList.forEach(period -> { + Set orgCount = orgCountMap.get(period.getProjectId()); + if (orgCount == null) { + orgCount = new HashSet<>(); + } + orgCount.add(period.getOrgId()); + orgCountMap.put(period.getProjectId(), orgCount); + if (ProjectConstant.RESOLVED.equals(period.getIsResolved())) { + Integer handleCount = handleCountMap.getOrDefault(period.getProjectId(), 0); + handleCountMap.put(period.getProjectId(), ++handleCount); + } + + //筛选出 项目的结案时间 未结案的为当前时间(结案只有一条记录) + if (period.getHandledDate() != null) { + if (period.getHandledDate().getTime() - period.getInformedDate().getTime() > overtimeConfig * 1000 * 60 * 60 * 24) { + valideProjectIdSet.add(period.getProjectId()); + } + } else { + Date finishDate = closeProjectDateMap.getOrDefault(period.getProjectId(), new Date()); + if (finishDate.getTime() - period.getInformedDate().getTime() > overtimeConfig * 1000 * 60 * 60 * 24) { + valideProjectIdSet.add(period.getProjectId()); + } + } + + }); + return valideProjectIdSet; + } + + /** + * desc:设置项目类别 + * @param diffEntity + * @param projectId + * @param categoryList + * @param projectCategoryMap + */ private void setCategoryInfo(ScreenDifficultyDataEntity diffEntity, String projectId, List categoryList, Map> projectCategoryMap) { List categorySet = projectCategoryMap.get(projectId); if (CollectionUtils.isEmpty(categorySet)) { @@ -367,8 +380,8 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr code.append(categoryCodes).append(StrConstant.COMMA_ZH); name.append(categoryNames).append(StrConstant.COMMA_ZH); }); - code.deleteCharAt(code.length()-1); - name.deleteCharAt(name.length()-1); + code.deleteCharAt(code.length() - NumConstant.ONE); + name.deleteCharAt(name.length() - NumConstant.ONE); diffEntity.setEventCategoryCode(code.toString()); diffEntity.setEventCategoryName(name.toString()); log.info("code:{}",code.toString()); @@ -377,6 +390,14 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr } + /** + * desc:构建难点堵点基础数据 + * @param project + * @param agencyMap + * @param gridMap + * @param bizProjectInfoMap + * @return + */ private ScreenDifficultyDataEntity buildBaseDiffEntity(FactOriginProjectMainDailyEntity project, Map agencyMap, Map gridMap, Map bizProjectInfoMap) { ProjectDTO projectDTO = bizProjectInfoMap.get(project.getId()); @@ -409,7 +430,6 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr GridInfoDTO gridInfoDTO = gridMap.get(project.getGridId()); diff.setOrgName(gridInfoDTO.getGridName()); String agencyAndGridName = agencyInfoDTO.getAgencyName().concat(StrConstant.HYPHEN.concat(diff.getOrgName())); - //if (!project.getPid().equals(NumConstant.ZERO_STR)){ if (StringUtils.isNotBlank(agencyInfoDTO.getAllParentName())) { diff.setEventSource(agencyInfoDTO.getAllParentName().concat(StrConstant.HYPHEN).concat(agencyAndGridName)); } else { @@ -432,7 +452,6 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr } //暂时不放内容 用不到 diff.setLatestOperateDesc(""); - return diff; }