|
|
@ -5,12 +5,11 @@ import com.epmet.commons.tools.utils.ConvertUtils; |
|
|
|
import com.epmet.commons.tools.utils.DateUtils; |
|
|
|
import com.epmet.constant.PingYinConstant; |
|
|
|
import com.epmet.constant.ProjectConstant; |
|
|
|
import com.epmet.dto.ProjectDTO; |
|
|
|
import com.epmet.dto.StatsFormDTO; |
|
|
|
import com.epmet.dto.extract.result.GridProjectToProjectMainDTO; |
|
|
|
import com.epmet.dto.project.form.MonthProjectListFormDTO; |
|
|
|
import com.epmet.dto.stats.DimAgencyDTO; |
|
|
|
import com.epmet.dto.stats.DimGridDTO; |
|
|
|
import com.epmet.entity.issue.IssueEntity; |
|
|
|
import com.epmet.entity.org.CustomerAgencyEntity; |
|
|
|
import com.epmet.entity.project.ProjectEntity; |
|
|
|
import com.epmet.entity.project.ProjectProcessEntity; |
|
|
@ -677,26 +676,16 @@ public class StatsProjectServiceImpl implements StatsProjectService { |
|
|
|
} |
|
|
|
//2022.3.3 end sun
|
|
|
|
|
|
|
|
//3:根据客户Id查询项目业务表已结案数据(查询传入日期及之前的数据)
|
|
|
|
ProjectEntity projectEntity = new ProjectEntity(); |
|
|
|
projectEntity.setCustomerId(customerId); |
|
|
|
projectEntity.setCreatedTime(date); |
|
|
|
projectEntity.setStatus(ProjectConstant.CLOSED); |
|
|
|
List<ProjectEntity> projectList = projectService.getProjectList(projectEntity); |
|
|
|
|
|
|
|
//4:查询项目处理进展表中有效数据(创建日期截取yyyy-mm-dd格式字段值)(查询传入日期及之前的数据)
|
|
|
|
List<ProjectProcessEntity> processList = projectProcessService.getProcessList(projectEntity); |
|
|
|
|
|
|
|
//5:网格层级日月统计
|
|
|
|
//3:网格层级日月统计
|
|
|
|
if (null != dimGridList && dimGridList.size() > NumConstant.ZERO) { |
|
|
|
//5.1:执行网格日数据统计
|
|
|
|
//3-1:执行网格日数据统计
|
|
|
|
try { |
|
|
|
gridDateProjectStats(customerId, dimId, date, dimGridList, projectList, processList); |
|
|
|
gridDateProjectStats(customerId, dimId, date, dimGridList); |
|
|
|
} catch (Exception e) { |
|
|
|
log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "gridDateProjectStats", customerId, dimId.getDateId()), e); |
|
|
|
} |
|
|
|
|
|
|
|
//5.2:执行网格月数据统计
|
|
|
|
//3-2:执行网格月数据统计
|
|
|
|
try { |
|
|
|
gridMonthProjectStats(customerId, dimId, dimGridList); |
|
|
|
} catch (Exception e) { |
|
|
@ -712,22 +701,44 @@ public class StatsProjectServiceImpl implements StatsProjectService { |
|
|
|
* @Author sun |
|
|
|
* @Description 数据-项目-网格日统计 |
|
|
|
**/ |
|
|
|
private String gridDateProjectStats(String customerId, DimIdGenerator.DimIdBean dimId, Date date, List<DimGridEntity> dimGridList, List<ProjectEntity> projectList, List<ProjectProcessEntity> processList) { |
|
|
|
private String gridDateProjectStats(String customerId, DimIdGenerator.DimIdBean dimId, Date date, List<DimGridEntity> dimGridList) { |
|
|
|
//批量网格日统计新增对象
|
|
|
|
List<FactGridProjectDailyEntity> gridDateEntityList = new ArrayList<>(); |
|
|
|
//计算百分比使用,保留小数点后两位
|
|
|
|
NumberFormat numberFormat = NumberFormat.getInstance(); |
|
|
|
numberFormat.setMaximumFractionDigits(6); |
|
|
|
|
|
|
|
//1:根据客户Id查询议题库已转项目的网格项目关系数据
|
|
|
|
/*//1:根据客户Id查询议题库已转项目的网格项目关系数据
|
|
|
|
IssueEntity issueEntity = new IssueEntity(); |
|
|
|
issueEntity.setCustomerId(customerId); |
|
|
|
issueEntity.setCreatedTime(date); |
|
|
|
List<IssueEntity> gridProjectList = issueService.getGridProjectList(issueEntity); |
|
|
|
List<IssueEntity> gridProjectList = issueService.getGridProjectList(issueEntity);*/ |
|
|
|
|
|
|
|
//2:遍历网格维度数据,统计每个网格各项指标数据
|
|
|
|
ProjectEntity projectEntity = new ProjectEntity(); |
|
|
|
projectEntity.setCustomerId(customerId); |
|
|
|
projectEntity.setCreatedTime(date); |
|
|
|
//2022.3.11 网格项目数据原先查的是来源议题的项目,现在网格的项目有来源议题、事件上报给网格、网格员在网格内上报事件,所以网格的项目统计改查询项目的main表中网格项目数据
|
|
|
|
//1.查询客户项目main表里是网格项目的数据
|
|
|
|
List<GridProjectToProjectMainDTO> gridProjectList = factAgencyProjectDailyService.getGridProjectToProjectMain(projectEntity); |
|
|
|
|
|
|
|
//2.筛选出已结案项目,用于后续统计结案项目的已解决未解决数
|
|
|
|
List<ProjectEntity> projectList = new ArrayList<>(); |
|
|
|
ProjectEntity entity = null; |
|
|
|
for (GridProjectToProjectMainDTO gp : gridProjectList){ |
|
|
|
if(ProjectConstant.CLOSED.equals(gp.getProjectStatus())){ |
|
|
|
entity = new ProjectEntity(); |
|
|
|
entity.setId(gp.getProjectId() ); |
|
|
|
entity.setClosedStatus(gp.getProjectStatus()); |
|
|
|
projectList.add(entity); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//3.查询客户下项目节点表数据,用于统计不同状态项目数、日增量数
|
|
|
|
List<ProjectProcessEntity> processList = projectProcessService.getProcessList(projectEntity); |
|
|
|
|
|
|
|
//4:遍历网格维度数据,统计每个网格各项指标数据
|
|
|
|
for (DimGridEntity grid : dimGridList) { |
|
|
|
//2.1:存放网格下的项目Id
|
|
|
|
//4-1:存放网格下的项目Id
|
|
|
|
Map<String, String> map = new HashMap<>(); |
|
|
|
gridProjectList.forEach(gridProject -> { |
|
|
|
if (grid.getId().equals(gridProject.getGridId())) { |
|
|
@ -748,7 +759,7 @@ public class StatsProjectServiceImpl implements StatsProjectService { |
|
|
|
Map<String, String> closeMap = new HashMap<>(); |
|
|
|
//存放前一日已结案项目Id,用于统计日增量中已结案项目的已解决、未解决数量
|
|
|
|
Map<String, String> closeDateMap = new HashMap<>(); |
|
|
|
//2.2:遍历进展数据,统计截止当日的项目总量、处理中总量、已结案总量以及日增量中的项目总量、处理中总量、已结案总量
|
|
|
|
//4-2:遍历进展数据,统计截止当日的项目总量、处理中总量、已结案总量以及日增量中的项目总量、处理中总量、已结案总量
|
|
|
|
//截止当日项目总数
|
|
|
|
projectTotal.addAndGet(map.size()); |
|
|
|
processList.forEach(process -> { |
|
|
@ -771,7 +782,7 @@ public class StatsProjectServiceImpl implements StatsProjectService { |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
//2.3:遍历项目业务数据,统计截止当日的已结案已解决总量、已结案未解决总量以及日增量中的已结案已解决总量、已结案未解决总量
|
|
|
|
//4-3:遍历项目业务数据,统计截止当日的已结案已解决总量、已结案未解决总量以及日增量中的已结案已解决总量、已结案未解决总量
|
|
|
|
projectList.forEach(project -> { |
|
|
|
//当前机关及下级
|
|
|
|
if (map.containsKey(project.getId())) { |
|
|
@ -798,7 +809,7 @@ public class StatsProjectServiceImpl implements StatsProjectService { |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
//2.4:封装日数据对象
|
|
|
|
//4-4:封装日数据对象
|
|
|
|
FactGridProjectDailyEntity gridDailyEntity = new FactGridProjectDailyEntity(); |
|
|
|
gridDailyEntity.setCustomerId(customerId); |
|
|
|
gridDailyEntity.setAgencyId(grid.getAgencyId()); |
|
|
@ -830,16 +841,16 @@ public class StatsProjectServiceImpl implements StatsProjectService { |
|
|
|
gridDateEntityList.add(gridDailyEntity); |
|
|
|
} |
|
|
|
|
|
|
|
//3:批量新增数据,先删后增
|
|
|
|
//5:批量新增数据,先删后增
|
|
|
|
if (null != gridDateEntityList && gridDateEntityList.size() > NumConstant.ZERO) { |
|
|
|
//3.1:根据客户Id、日维度Id批量物理删除一下可能存在的历史数据
|
|
|
|
//5-1:根据客户Id、日维度Id批量物理删除一下可能存在的历史数据
|
|
|
|
FactAgencyProjectDailyEntity delEntity = new FactAgencyProjectDailyEntity(); |
|
|
|
delEntity.setCustomerId(customerId); |
|
|
|
delEntity.setDateId(dimId.getDateId()); |
|
|
|
log.info("StatsProjectServiceImpl.gridDateProjectStats-根据客户Id、日维度Id批量删除网格项目日统计表数据,对应客户Id:" + customerId + ",日维度Id:" + dimId.getDateId()); |
|
|
|
factGridProjectDailyService.delDateProject(delEntity); |
|
|
|
|
|
|
|
//3.2:批量保存网格日统计数据
|
|
|
|
//5-2:批量保存网格日统计数据
|
|
|
|
log.info("StatsProjectServiceImpl.gridDateProjectStats-批量新增网格项目日统计表数据,对应客户Id:" + customerId + ",日维度Id:" + dimId.getDateId()); |
|
|
|
factGridProjectDailyService.insertBatch(gridDateEntityList); |
|
|
|
} |
|
|
|