|  | @@ -341,30 +341,41 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  |      public List<CoreEduTrainingTaskReportVo> selectCoreEduTrainingTaskReport(CoreEduTrainingTaskReportDto request) {
 |  |      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.setStartDate(DateUtil.beginOfMonth(request.getDate()));
 | 
											
												
													
														|  |          request.setEndDate(DateUtil.endOfMonth(request.getDate()));
 |  |          request.setEndDate(DateUtil.endOfMonth(request.getDate()));
 | 
											
												
													
														|  |          Long orgId = request.getOrgId();
 |  |          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);
 |  |          List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectSysOrgByParentId(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
											
												
													
														|  |          if (ObjectUtil.isEmpty(sysOrgList)) {
 |  |          if (ObjectUtil.isEmpty(sysOrgList)) {
 | 
											
												
													
														|  |              return new ArrayList<>();
 |  |              return new ArrayList<>();
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          List<CoreEduTrainingTaskReportVo> result = 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) {
 |  |          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.setShouldFinish(0);
 | 
											
												
													
														|  |                  reportVo.setFinish(0);
 |  |                  reportVo.setFinish(0);
 | 
											
												
													
														|  |                  reportVo.setFinishRate("0%");
 |  |                  reportVo.setFinishRate("0%");
 | 
											
												
													
														|  |              } else {
 |  |              } 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);
 |  |              result.add(reportVo);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
										
											
												
													
														|  | @@ -373,7 +384,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
 | 
											
												
													
														|  |          return result;
 |  |          return result;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    private String calculatePercent(Integer num1, Integer num2) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    public static String calculatePercent(Integer num1, Integer num2) {
 | 
											
												
													
														|  |          if (num1 == 0 || num2 == 0) {
 |  |          if (num1 == 0 || num2 == 0) {
 | 
											
												
													
														|  |              return "0%";
 |  |              return "0%";
 | 
											
												
													
														|  |          }
 |  |          }
 |