|
@ -230,50 +230,18 @@ public class FactOriginProjectLogDailyServiceImpl extends BaseServiceImpl<FactOr |
|
|
* @date 2020.09.21 02:16 |
|
|
* @date 2020.09.21 02:16 |
|
|
**/ |
|
|
**/ |
|
|
@Override |
|
|
@Override |
|
|
public Map<String, BigDecimal> getAgencyWorkPieceRatio(String customerId, String dimId) { |
|
|
public Map<String, BigDecimal> getAgencyWorkPieceRatio(String customerId, String level, String dimId) { |
|
|
//计算方法 : 评价周期内办结项目的平均处理时长的倒数
|
|
|
//计算方法 : 评价周期内办结项目的平均处理时长的倒数
|
|
|
|
|
|
|
|
|
|
|
|
//评价周期内每个机关结案了的项目耗时和项目数
|
|
|
//1.评价周期内结案了的项目
|
|
|
List<OrgStatisticsResultDTO> projectsHandledByAgency = baseDao.selectProjectIdHandledByAgency(customerId, level, dimId); |
|
|
List<ProjectParticipatedAgencyResultDTO> projectsHandledByAgency = baseDao.selectProjectIdHandledByAgency(customerId, dimId); |
|
|
|
|
|
Map<String, BigDecimal> efficiencyMap = new HashMap<>(); |
|
|
Map<String, BigDecimal> efficiencyMap = new HashMap<>(); |
|
|
List<String> projects = new LinkedList<>(); |
|
|
|
|
|
if (!CollectionUtils.isEmpty(projectsHandledByAgency)) { |
|
|
if (!CollectionUtils.isEmpty(projectsHandledByAgency)) { |
|
|
Map<String, List<String>> agencyProjectsMap = new HashMap<>(); |
|
|
|
|
|
|
|
|
|
|
|
projectsHandledByAgency.forEach(o -> { |
|
|
projectsHandledByAgency.forEach(o -> { |
|
|
String agencyId = o.getAgencyId(); |
|
|
String agencyId = o.getAgencyId(); |
|
|
String projectId = o.getProjectId(); |
|
|
|
|
|
if(CollectionUtils.isEmpty(agencyProjectsMap.get(agencyId))){ |
|
|
|
|
|
List<String> projectUnit = new LinkedList<>(); |
|
|
|
|
|
projectUnit.add(projectId); |
|
|
|
|
|
agencyProjectsMap.put(agencyId,projectUnit); |
|
|
|
|
|
}else{ |
|
|
|
|
|
agencyProjectsMap.get(agencyId).add(projectId); |
|
|
|
|
|
} |
|
|
|
|
|
projects.add(projectId); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
//2.结案项目的总耗时
|
|
|
|
|
|
List<ProjectParticipatedAgencyResultDTO> costTimes = baseDao.selectProjectCostTime(projects); |
|
|
|
|
|
|
|
|
|
|
|
Map<String,Integer> projectCostTime = costTimes.stream().collect(Collectors.toMap(ProjectParticipatedAgencyResultDTO::getProjectId,ProjectParticipatedAgencyResultDTO::getCount)); |
|
|
|
|
|
agencyProjectsMap.forEach((k,v) -> { |
|
|
|
|
|
//k -> agencyId v -> projects
|
|
|
|
|
|
int total = NumConstant.ZERO; |
|
|
|
|
|
if(!CollectionUtils.isEmpty(v)){ |
|
|
|
|
|
for(String p : v){ |
|
|
|
|
|
Integer cost = projectCostTime.get(p); |
|
|
|
|
|
total = total + (null == cost ? NumConstant.ZERO : cost); |
|
|
|
|
|
} |
|
|
|
|
|
//每个机关的项目平均耗时
|
|
|
//每个机关的项目平均耗时
|
|
|
BigDecimal avgCost = new BigDecimal(total).divide(new BigDecimal(v.size()),4, BigDecimal.ROUND_HALF_UP); |
|
|
BigDecimal avgCost = new BigDecimal(o.getSum()).divide(new BigDecimal(o.getCount()),6, RoundingMode.HALF_UP); |
|
|
|
|
|
efficiencyMap.put(agencyId, avgCost); |
|
|
//efficiencyMap.put(k,BigDecimal.ONE.divide(avgCost,4, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
|
efficiencyMap.put(k, null == avgCost ? BigDecimal.ZERO : avgCost.setScale(6, BigDecimal.ROUND_HALF_UP)); |
|
|
|
|
|
}else{ |
|
|
|
|
|
efficiencyMap.put(k,BigDecimal.ZERO); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|