|
|
@ -217,7 +217,6 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr |
|
|
|
|
|
|
|
@Override |
|
|
|
public boolean difficultyDataExtract(ScreenCentralZoneDataFormDTO param) { |
|
|
|
//TODO
|
|
|
|
//1.根据客户Id 获取所有项目数据
|
|
|
|
List<FactOriginProjectMainDailyEntity> difficultyBaseList = factOriginProjectMainDailyService.getProjectForDiff(param); |
|
|
|
if (CollectionUtils.isEmpty(difficultyBaseList)) { |
|
|
@ -253,50 +252,16 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr |
|
|
|
Map<String, Set<String>> orgCountMap = new HashMap<>(); |
|
|
|
//被处理次数
|
|
|
|
Map<String, Integer> handleCountMap = new HashMap<>(); |
|
|
|
//已经结案的项目的结案时间
|
|
|
|
Set<String> valideProjectIdSet = new HashSet<>(); |
|
|
|
Map<String, Date> 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<String, Date> informDate = new HashMap<>(); |
|
|
|
projectPeriodList.forEach(period -> { |
|
|
|
Set<String> 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<String> valideProjectIdSet = fillAnyCountAndValidProject(param, projectPeriodList, orgCountMap, handleCountMap); |
|
|
|
|
|
|
|
List<ScreenDifficultyDataEntity> diffList = new ArrayList<>(); |
|
|
|
List<ScreenDifficultyImgDataEntity> 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<String> fillAnyCountAndValidProject(ScreenCentralZoneDataFormDTO param, List<FactOriginProjectOrgPeriodDailyEntity> projectPeriodList, Map<String, Set<String>> orgCountMap, Map<String, Integer> handleCountMap) { |
|
|
|
//已经结案的项目的结案时间
|
|
|
|
Set<String> valideProjectIdSet = new HashSet<>(); |
|
|
|
Map<String, Date> 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<String> 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<IssueProjectCategoryDictEntity> categoryList, Map<String, List<String>> projectCategoryMap) { |
|
|
|
List<String> 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<String, DimAgencyEntity> agencyMap, |
|
|
|
Map<String, GridInfoDTO> gridMap, Map<String, ProjectDTO> 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; |
|
|
|
} |
|
|
|
|
|
|
|