|
|
@@ -341,30 +341,41 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
|
|
|
@Override
|
|
|
public List<CoreEduTrainingTaskReportVo> selectCoreEduTrainingTaskReport(CoreEduTrainingTaskReportDto request) {
|
|
|
+ CoreEduTrainingPlan plan = coreEduTrainingPlanMapper.selectById(request.getPlanId());
|
|
|
+ if (ObjectUtil.isNull(plan)) {
|
|
|
+ throw new SystemException("未获取到该计划信息");
|
|
|
+ }
|
|
|
+ List<Long> planIdList = new ArrayList<>();
|
|
|
+ Long planId = request.getPlanId();
|
|
|
+ if (ObjectUtil.equal(1, plan.getStandard()) && ObjectUtil.equal(1, plan.getIssue())) {
|
|
|
+ planIdList = coreEduTrainingPlanMapper.selectIdByParentId(plan.getId());
|
|
|
+ planId = null;
|
|
|
+ }
|
|
|
request.setStartDate(DateUtil.beginOfMonth(request.getDate()));
|
|
|
request.setEndDate(DateUtil.endOfMonth(request.getDate()));
|
|
|
Long orgId = request.getOrgId();
|
|
|
|
|
|
+ SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
+ request.setOrgPath(sysOrg.getPath());
|
|
|
List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgByParentId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
if (ObjectUtil.isEmpty(sysOrgList)) {
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
List<CoreEduTrainingTaskReportVo> result = new ArrayList<>();
|
|
|
- List<CoreEduTrainingTaskReportVo> list = coreEduTrainingTaskMapper.selectReport(request);
|
|
|
+ List<CoreEduTrainingTaskReportVo> list = coreEduTrainingTaskMapper.selectReport(request, planId, planIdList);
|
|
|
for (SysOrg org : sysOrgList) {
|
|
|
- Optional<CoreEduTrainingTaskReportVo> optional = list.stream().filter(vo -> ObjectUtil.equal(vo.getOrgId(), org.getId())).findFirst();
|
|
|
- CoreEduTrainingTaskReportVo reportVo;
|
|
|
- if (!optional.isPresent()) {
|
|
|
- reportVo = new CoreEduTrainingTaskReportVo();
|
|
|
- reportVo.setPlanId(request.getPlanId());
|
|
|
- reportVo.setOrgId(org.getId());
|
|
|
- reportVo.setOrgName(org.getName());
|
|
|
+ List<CoreEduTrainingTaskReportVo> childrenOrgData = list.stream().filter(vo -> vo.getOrgPath().startsWith(org.getPath())).collect(Collectors.toList());
|
|
|
+ CoreEduTrainingTaskReportVo reportVo= new CoreEduTrainingTaskReportVo();
|
|
|
+ reportVo.setOrgId(org.getId());
|
|
|
+ reportVo.setOrgName(org.getName());
|
|
|
+ if (ObjectUtil.isEmpty(childrenOrgData)) {
|
|
|
reportVo.setShouldFinish(0);
|
|
|
reportVo.setFinish(0);
|
|
|
reportVo.setFinishRate("0%");
|
|
|
} else {
|
|
|
- reportVo = optional.get();
|
|
|
- reportVo.setFinishRate(calculatePercent(reportVo.getShouldFinish(), reportVo.getFinish()));
|
|
|
+ childrenOrgData.stream().map(CoreEduTrainingTaskReportVo::getShouldFinish).reduce(Integer::sum).ifPresent(reportVo::setShouldFinish);
|
|
|
+ childrenOrgData.stream().map(CoreEduTrainingTaskReportVo::getFinish).reduce(Integer::sum).ifPresent(reportVo::setFinish);
|
|
|
+ reportVo.setFinishRate(calculatePercent(reportVo.getFinish(), reportVo.getShouldFinish()));
|
|
|
}
|
|
|
result.add(reportVo);
|
|
|
}
|
|
|
@@ -373,7 +384,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- private String calculatePercent(Integer num1, Integer num2) {
|
|
|
+ public static String calculatePercent(Integer num1, Integer num2) {
|
|
|
if (num1 == 0 || num2 == 0) {
|
|
|
return "0%";
|
|
|
}
|