|  | @@ -146,7 +146,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |  //                    record.setStatus(DrillDoStatus.DONE.getCode());
 | 
	
		
			
				|  |  |  //                }
 | 
	
		
			
				|  |  |                  //查询已完成状态实际是查已完成和代签名状态,需要把返回数据设为已完成状态
 | 
	
		
			
				|  |  | -                if (ObjectUtil.equal(status, DrillDoStatus.DONE.getCode())){
 | 
	
		
			
				|  |  | +                if (ObjectUtil.equal(status, DrillDoStatus.DONE.getCode())) {
 | 
	
		
			
				|  |  |                      record.setStatus(DrillDoStatus.DONE.getCode());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  dealData(record, records, cacheList);
 | 
	
	
		
			
				|  | @@ -663,7 +663,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |              request.setStartTime(DateUtil.beginOfMonth(DateUtil.beginOfDay(st)));
 | 
	
		
			
				|  |  |              request.setEndTime(DateUtil.endOfMonth(DateUtil.endOfDay(ed)));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if (ObjectUtil.isAllNotEmpty(request.getStartTime(),request.getEndTime())){
 | 
	
		
			
				|  |  | +        if (ObjectUtil.isAllNotEmpty(request.getStartTime(), request.getEndTime())) {
 | 
	
		
			
				|  |  |              request.setStartTime(DateUtil.beginOfMonth(DateUtil.beginOfDay(request.getStartTime())));
 | 
	
		
			
				|  |  |              request.setEndTime(DateUtil.endOfMonth(DateUtil.endOfDay(request.getEndTime())));
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -723,29 +723,24 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |                      reportVo.setShouldFinish(0);
 | 
	
		
			
				|  |  |                      reportVo.setFinish(0);
 | 
	
		
			
				|  |  |                      reportVo.setScore("0.0");
 | 
	
		
			
				|  |  | +                    reportVo.setFinishRate("0.00");
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                      childrenOrgData.stream().map(CoreDrillTaskReportVo::getShouldFinish).reduce(Integer::sum).ifPresent(reportVo::setShouldFinish);
 | 
	
		
			
				|  |  |                      childrenOrgData.stream().map(CoreDrillTaskReportVo::getFinish).reduce(Integer::sum).ifPresent(reportVo::setFinish);
 | 
	
		
			
				|  |  |                      reportVo.setScore(calculateScore(childrenOrgData));
 | 
	
		
			
				|  |  | +                    reportVo.setFinishRate(calculateFinishRate(childrenOrgData));
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  result.add(reportVo);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -      /*  List<CoreDrillTaskReportVo> reportVoList = result.stream().sorted(Comparator.comparing(vo -> Double.valueOf(vo.getScore()))).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -        Collections.reverse(reportVoList);*/
 | 
	
		
			
				|  |  | -        return result;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    private void buildEmptyData(List<SysOrg> sysOrgList, List<CoreDrillTaskReportVo> result) {
 | 
	
		
			
				|  |  | -        for (SysOrg org : sysOrgList) {
 | 
	
		
			
				|  |  | -            CoreDrillTaskReportVo reportVo = new CoreDrillTaskReportVo();
 | 
	
		
			
				|  |  | -            reportVo.setOrgId(org.getId());
 | 
	
		
			
				|  |  | -            reportVo.setOrgName(org.getName());
 | 
	
		
			
				|  |  | -            reportVo.setShouldFinish(0);
 | 
	
		
			
				|  |  | -            reportVo.setFinish(0);
 | 
	
		
			
				|  |  | -            reportVo.setScore("0.0");
 | 
	
		
			
				|  |  | -            result.add(reportVo);
 | 
	
		
			
				|  |  | +        if (!SecurityUtils.isApp()) {
 | 
	
		
			
				|  |  | +            result.forEach(r -> r.setFinishRate(r.getFinishRate() + "%"));
 | 
	
		
			
				|  |  | +            return result;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        List<CoreDrillTaskReportVo> reportVoList = result.stream().sorted(Comparator.comparing(vo -> Double.valueOf(vo.getFinishRate()))).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        Collections.reverse(reportVoList);
 | 
	
		
			
				|  |  | +        reportVoList.forEach(r -> r.setFinishRate(r.getFinishRate() + "%"));
 | 
	
		
			
				|  |  | +        return reportVoList;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private String calculateScore(List<CoreDrillTaskReportVo> childrenOrgData) {
 | 
	
	
		
			
				|  | @@ -762,6 +757,25 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    private String calculateFinishRate(List<CoreDrillTaskReportVo> childrenOrgData) {
 | 
	
		
			
				|  |  | +        //计算finish 字段总和
 | 
	
		
			
				|  |  | +        int finish = childrenOrgData.stream().map(CoreDrillTaskReportVo::getFinish).reduce(Integer::sum).orElse(0);
 | 
	
		
			
				|  |  | +        if (finish == 0) {
 | 
	
		
			
				|  |  | +            return "0.00";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        int shouldFinish = childrenOrgData.stream().map(CoreDrillTaskReportVo::getShouldFinish).reduce(Integer::sum).orElse(0);
 | 
	
		
			
				|  |  | +        //计算完成率
 | 
	
		
			
				|  |  | +        BigDecimal finishBigDecimal = new BigDecimal(finish);
 | 
	
		
			
				|  |  | +        BigDecimal shouldFinishBigDecimal = new BigDecimal(shouldFinish);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        BigDecimal divide = finishBigDecimal.divide(shouldFinishBigDecimal, 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return divide.toString();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public Integer sign(CoreDrillTaskSignDto request) {
 | 
	
	
		
			
				|  | @@ -985,6 +999,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 优秀案例学习列表查询
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param request
 | 
	
		
			
				|  |  |       * @return
 | 
	
		
			
				|  |  |       */
 | 
	
	
		
			
				|  | @@ -1003,6 +1018,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return TableDataInfo.build(page);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private void dealRecTaskListParam(CoreDrillTaskRecPageDto request) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //App的查询, App 默认下穿
 | 
	
	
		
			
				|  | @@ -1011,11 +1027,10 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |          request.setStartTime(DateUtil.beginOfMonth(request.getStartTime()));
 | 
	
		
			
				|  |  |          request.setEndTime(DateUtil.endOfMonth(request.getEndTime()));
 | 
	
		
			
				|  |  |          // 查询行社优秀
 | 
	
		
			
				|  |  | -        if(ObjectUtil.equals(request.getRecStatus(),1))
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (ObjectUtil.equals(request.getRecStatus(), 1)) {
 | 
	
		
			
				|  |  |              List<SysOrgVO> sysOrgVOS = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(request.getOrgId()), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            String orgPath = dealRecTaskOrgPathParam(request.getOrgId(),4);
 | 
	
		
			
				|  |  | +            String orgPath = dealRecTaskOrgPathParam(request.getOrgId(), 4);
 | 
	
		
			
				|  |  |              request.setOrgPath(orgPath);
 | 
	
		
			
				|  |  |  //            // 如果当前机构或者机构的上级存在 行社 取 该行社的机构Path
 | 
	
		
			
				|  |  |  //            final Optional<SysOrgVO> first = sysOrgVOS.stream().filter(x -> ObjectUtil.equal(x.getType(), 3)).findFirst();
 | 
	
	
		
			
				|  | @@ -1032,36 +1047,31 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // 查询地区优秀
 | 
	
		
			
				|  |  | -        else if(ObjectUtil.equals(request.getRecStatus(),3))
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -            String orgPath = dealRecTaskOrgPathParam(request.getOrgId(),2);
 | 
	
		
			
				|  |  | +        else if (ObjectUtil.equals(request.getRecStatus(), 3)) {
 | 
	
		
			
				|  |  | +            String orgPath = dealRecTaskOrgPathParam(request.getOrgId(), 2);
 | 
	
		
			
				|  |  |              request.setOrgPath(orgPath);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // 查询省级优秀
 | 
	
		
			
				|  |  | -        else if(ObjectUtil.equals(request.getRecStatus(),5))
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        else if (ObjectUtil.equals(request.getRecStatus(), 5)) {
 | 
	
		
			
				|  |  |  //            SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
	
		
			
				|  |  |              request.setOrgPath(null);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private  String dealRecTaskOrgPathParam(Long requestOrgId,Integer orgType)
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    private String dealRecTaskOrgPathParam(Long requestOrgId, Integer orgType) {
 | 
	
		
			
				|  |  |          List<SysOrgVO> sysOrgVOS = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(requestOrgId), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 如果当前机构或者机构的上级存在 指定机构类型的机构 该类型的机构Path
 | 
	
		
			
				|  |  |          final Optional<SysOrgVO> first = sysOrgVOS.stream().filter(x -> ObjectUtil.equal(x.getType(), orgType)).findFirst();
 | 
	
		
			
				|  |  | -        if(first.isPresent())
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -            return  first.get().getPath();
 | 
	
		
			
				|  |  | +        if (first.isPresent()) {
 | 
	
		
			
				|  |  | +            return first.get().getPath();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // 不存在 这说明该机构是在 指定机构类型之上 取当前查询条件机构的Path
 | 
	
		
			
				|  |  | -        else{
 | 
	
		
			
				|  |  | +        else {
 | 
	
		
			
				|  |  |              final Optional<SysOrgVO> self = sysOrgVOS.stream().filter(x -> ObjectUtil.equal(x.getId(), requestOrgId)).findFirst();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if(self.isPresent())
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                return  self.get().getPath();
 | 
	
		
			
				|  |  | +            if (self.isPresent()) {
 | 
	
		
			
				|  |  | +                return self.get().getPath();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return null;
 | 
	
	
		
			
				|  | @@ -1357,7 +1367,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        waitRecTaskList.removeIf(item -> DateUtil.date().before(item.getStartTime()) );
 | 
	
		
			
				|  |  | +        waitRecTaskList.removeIf(item -> DateUtil.date().before(item.getStartTime()));
 | 
	
		
			
				|  |  |          waitRecTaskList.forEach(item -> {
 | 
	
		
			
				|  |  |              item.setType(PanelTypeEnums.DRILL_REC.getCode());
 | 
	
		
			
				|  |  |          });
 | 
	
	
		
			
				|  | @@ -1877,7 +1887,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |      public List<String> checkTaskExit(List<String> allDrillIdList) {
 | 
	
		
			
				|  |  |          List<Long> collect = allDrillIdList.stream().map(Long::parseLong).collect(Collectors.toList());
 | 
	
		
			
				|  |  |          LambdaQueryWrapper<CoreDrillTask> wrapper = new LambdaQueryWrapper<>();
 | 
	
		
			
				|  |  | -        wrapper.in(CoreDrillTask::getId,collect);
 | 
	
		
			
				|  |  | +        wrapper.in(CoreDrillTask::getId, collect);
 | 
	
		
			
				|  |  |          wrapper.select(CoreDrillTask::getId);
 | 
	
		
			
				|  |  |          List<CoreDrillTask> coreDrillTasks = baseMapper.selectList(wrapper);
 | 
	
		
			
				|  |  |          return coreDrillTasks.stream().map(CoreDrillTask::getId).map(String::valueOf).collect(Collectors.toList());
 |