Browse Source

难点堵点-定时抽取

dev_shibei_match
jianjun 4 years ago
parent
commit
edaeb3c063
  1. 7
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java
  2. 109
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java

7
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 //基层治理- 难点赌点 screen_difficulty_data | screen_difficulty_img_data
try { try {
log.info("【难点赌点数据上报开始------】 当前客户Id{}",param.getCustomerId()); log.info("【难点赌点数据上报开始------】 当前客户Id{}",param.getCustomerId());
screenGrassrootsGovernDataAbsorptionService.difficultyDataHub(param); //screenGrassrootsGovernDataAbsorptionService.difficultyDataHub(param);
//todo 初始化全量 param.setDateId(null); //todo 初始化全量
//screenGrassrootsGovernDataAbsorptionService.difficultyDataExtract(param); param.setDateId(null);
screenGrassrootsGovernDataAbsorptionService.difficultyDataExtract(param);
log.info("【难点赌点数据上报结束------】 当前客户Id{}",param.getCustomerId()); log.info("【难点赌点数据上报结束------】 当前客户Id{}",param.getCustomerId());
}catch (Exception e){ }catch (Exception e){
log.error("基层治理-难点赌点抽取到大屏失败,customerId为:"+customerId+"dateId为:"+dateId, e); log.error("基层治理-难点赌点抽取到大屏失败,customerId为:"+customerId+"dateId为:"+dateId, e);

109
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 @Override
public boolean difficultyDataExtract(ScreenCentralZoneDataFormDTO param) { public boolean difficultyDataExtract(ScreenCentralZoneDataFormDTO param) {
//TODO
//1.根据客户Id 获取所有项目数据 //1.根据客户Id 获取所有项目数据
List<FactOriginProjectMainDailyEntity> difficultyBaseList = factOriginProjectMainDailyService.getProjectForDiff(param); List<FactOriginProjectMainDailyEntity> difficultyBaseList = factOriginProjectMainDailyService.getProjectForDiff(param);
if (CollectionUtils.isEmpty(difficultyBaseList)) { if (CollectionUtils.isEmpty(difficultyBaseList)) {
@ -253,50 +252,16 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
Map<String, Set<String>> orgCountMap = new HashMap<>(); Map<String, Set<String>> orgCountMap = new HashMap<>();
//被处理次数 //被处理次数
Map<String, Integer> handleCountMap = new HashMap<>(); Map<String, Integer> handleCountMap = new HashMap<>();
//已经结案的项目的结案时间 Set<String> valideProjectIdSet = fillAnyCountAndValidProject(param, projectPeriodList, orgCountMap, 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());
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());
}
}
});
List<ScreenDifficultyDataEntity> diffList = new ArrayList<>(); List<ScreenDifficultyDataEntity> diffList = new ArrayList<>();
List<ScreenDifficultyImgDataEntity> imgDataEntities = new ArrayList<>(); List<ScreenDifficultyImgDataEntity> imgDataEntities = new ArrayList<>();
for (FactOriginProjectMainDailyEntity project : difficultyBaseList) { for (FactOriginProjectMainDailyEntity project : difficultyBaseList) {
if (agencyMap.get(project.getAgencyId()) == null || bizProjectInfoMap.get(project.getId()) == null) { if (agencyMap.get(project.getAgencyId()) == null || bizProjectInfoMap.get(project.getId()) == null) {
log.warn("未获取到相关的项目信息或者项目的所属组织信息"); log.warn("未获取到相关的项目信息或者项目的所属组织信息,agencyId:{},projectId:{}",project.getAgencyId(),project.getId());
System.out.println(agencyMap.get(project.getAgencyId()));
System.out.println(bizProjectInfoMap.get(project.getId()));
continue; continue;
} }
//判断是否符合难点堵点条件 //判断是否符合难点堵点条件
if (!valideProjectIdSet.contains(project.getId())) { if (!valideProjectIdSet.contains(project.getId())) {
continue; continue;
} }
@ -314,8 +279,7 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
diffEntity.setEventHandledCount(0); diffEntity.setEventHandledCount(0);
} }
diffEntity.setDataEndTime(StringUtils.isBlank(param.getDateId())?DateUtils.getBeforeNDay(NumConstant.ONE):param.getDateId());
diffEntity.setDataEndTime(param.getDateId());
setCategoryInfo(diffEntity, project.getId(), categoryList, projectCategoryMap); setCategoryInfo(diffEntity, project.getId(), categoryList, projectCategoryMap);
@ -343,13 +307,62 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
log.info("========:" + JSON.toJSONString(diffList)); log.info("========:" + JSON.toJSONString(diffList));
log.info("========:" + JSON.toJSONString(imgDataEntities)); 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)); log.info("【大屏数据抽取-难点赌点执行完毕】 客户Id{} 难点赌点数据{}", param.getCustomerId(), JSON.toJSONString(diffList));
//3.获取项目的最后操作记录 //3.获取项目的最后操作记录
return true; 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) { private void setCategoryInfo(ScreenDifficultyDataEntity diffEntity, String projectId, List<IssueProjectCategoryDictEntity> categoryList, Map<String, List<String>> projectCategoryMap) {
List<String> categorySet = projectCategoryMap.get(projectId); List<String> categorySet = projectCategoryMap.get(projectId);
if (CollectionUtils.isEmpty(categorySet)) { if (CollectionUtils.isEmpty(categorySet)) {
@ -367,8 +380,8 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
code.append(categoryCodes).append(StrConstant.COMMA_ZH); code.append(categoryCodes).append(StrConstant.COMMA_ZH);
name.append(categoryNames).append(StrConstant.COMMA_ZH); name.append(categoryNames).append(StrConstant.COMMA_ZH);
}); });
code.deleteCharAt(code.length()-1); code.deleteCharAt(code.length() - NumConstant.ONE);
name.deleteCharAt(name.length()-1); name.deleteCharAt(name.length() - NumConstant.ONE);
diffEntity.setEventCategoryCode(code.toString()); diffEntity.setEventCategoryCode(code.toString());
diffEntity.setEventCategoryName(name.toString()); diffEntity.setEventCategoryName(name.toString());
log.info("code:{}",code.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, private ScreenDifficultyDataEntity buildBaseDiffEntity(FactOriginProjectMainDailyEntity project, Map<String, DimAgencyEntity> agencyMap,
Map<String, GridInfoDTO> gridMap, Map<String, ProjectDTO> bizProjectInfoMap) { Map<String, GridInfoDTO> gridMap, Map<String, ProjectDTO> bizProjectInfoMap) {
ProjectDTO projectDTO = bizProjectInfoMap.get(project.getId()); ProjectDTO projectDTO = bizProjectInfoMap.get(project.getId());
@ -409,7 +430,6 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
GridInfoDTO gridInfoDTO = gridMap.get(project.getGridId()); GridInfoDTO gridInfoDTO = gridMap.get(project.getGridId());
diff.setOrgName(gridInfoDTO.getGridName()); diff.setOrgName(gridInfoDTO.getGridName());
String agencyAndGridName = agencyInfoDTO.getAgencyName().concat(StrConstant.HYPHEN.concat(diff.getOrgName())); String agencyAndGridName = agencyInfoDTO.getAgencyName().concat(StrConstant.HYPHEN.concat(diff.getOrgName()));
//if (!project.getPid().equals(NumConstant.ZERO_STR)){
if (StringUtils.isNotBlank(agencyInfoDTO.getAllParentName())) { if (StringUtils.isNotBlank(agencyInfoDTO.getAllParentName())) {
diff.setEventSource(agencyInfoDTO.getAllParentName().concat(StrConstant.HYPHEN).concat(agencyAndGridName)); diff.setEventSource(agencyInfoDTO.getAllParentName().concat(StrConstant.HYPHEN).concat(agencyAndGridName));
} else { } else {
@ -432,7 +452,6 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr
} }
//暂时不放内容 用不到 //暂时不放内容 用不到
diff.setLatestOperateDesc(""); diff.setLatestOperateDesc("");
return diff; return diff;
} }

Loading…
Cancel
Save