|  | @@ -625,7 +625,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |          dealRecListParam(request);
 | 
	
		
			
				|  |  |          IPage<CoreDrillTaskRecPageVo> page;
 | 
	
		
			
				|  |  |          if (request.getRecStatus() != null) {
 | 
	
		
			
				|  |  | -            page = coreDrillTaskMapper.selectRecPage(request.getPageRequest(), request, request.getRecStatus());
 | 
	
		
			
				|  |  | +            page = coreDrillTaskMapper.selectRecPage(request.getPageRequest(), request, Arrays.asList(request.getRecStatus()));
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              page = coreDrillTaskMapper.selectRecPage(request.getPageRequest(), request, getRecStatus());
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -678,23 +678,23 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |          request.setOrgPath(sysOrg.getPath());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private Integer getRecStatus() {
 | 
	
		
			
				|  |  | +    private List<Integer> getRecStatus() {
 | 
	
		
			
				|  |  |          Long orgId = SecurityUtils.getLoginUser().getOrgId();
 | 
	
		
			
				|  |  |          SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
	
		
			
				|  |  |          if (ObjectUtil.isNull(sysOrg.getType())) {
 | 
	
		
			
				|  |  |              throw new SystemException("当前登陆用户机构信息异常!");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        Integer recStatus = null;
 | 
	
		
			
				|  |  | +        List<Integer> recStatus = null;
 | 
	
		
			
				|  |  |          OrgTypeEnum orgTypeEnum = OrgTypeEnum.getOrgTypeEnum(sysOrg.getType());
 | 
	
		
			
				|  |  |          switch (orgTypeEnum) {
 | 
	
		
			
				|  |  |              case SHEGN_LIAN_SHE:
 | 
	
		
			
				|  |  | -                recStatus = 4;
 | 
	
		
			
				|  |  | +                recStatus = Arrays.asList(4, 5);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |              case BAN_SHI_CHU:
 | 
	
		
			
				|  |  | -                recStatus = 2;
 | 
	
		
			
				|  |  | +                recStatus = Arrays.asList(2, 3, 4);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |              case HANG_SHE:
 | 
	
		
			
				|  |  | -                recStatus = 0;
 | 
	
		
			
				|  |  | +                recStatus = Arrays.asList(0, 1, 2);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |              default:
 | 
	
		
			
				|  |  |                  throw new RuntimeException("暂不支持该用户所在机构查看数据!");
 | 
	
	
		
			
				|  | @@ -709,12 +709,24 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |          if (drillTask == null) {
 | 
	
		
			
				|  |  |              throw new SystemException("获取预案演练数据失败!");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if (request.getRecStatus() > drillTask.getRecStatus()) {
 | 
	
		
			
				|  |  | -            //说明是向上级推荐优秀案例,需要判断是否已达上限
 | 
	
		
			
				|  |  | -            checkRecNum(drillTask, request.getRecStatus());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (request.getRecStatus() == null) {
 | 
	
		
			
				|  |  | +            //取消推荐
 | 
	
		
			
				|  |  | +            int recStatus = checkRecStatus(drillTask);
 | 
	
		
			
				|  |  | +            if (recStatus > 0) {
 | 
	
		
			
				|  |  | +                return coreDrillTaskMapper.updateStatusById(request.getDrillTaskId(), recStatus);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            return 0;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //判断是否已达上限
 | 
	
		
			
				|  |  | +        checkRecNum(drillTask, request.getRecStatus());
 | 
	
		
			
				|  |  | +        if (drillTask.getRecStatus().equals(request.getRecStatus())) {
 | 
	
		
			
				|  |  | +            throw new SystemException("该预案演练任务已推荐!");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          //判断是否越级推荐
 | 
	
		
			
				|  |  | -        if (ObjectUtil.notEqual(drillTask.getRecStatus(), request.getRecStatus() - 1)) {
 | 
	
		
			
				|  |  | +        if (ObjectUtil.notEqual(drillTask.getRecStatus(), request.getRecStatus() - 1) && ObjectUtil.notEqual(drillTask.getRecStatus(), request.getRecStatus() - 2)) {
 | 
	
		
			
				|  |  |              throw new SystemException("推荐状态异常!");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (ObjectUtil.notEqual(DrillDoStatus.DONE.getCode(), drillTask.getStatus())) {
 | 
	
	
		
			
				|  | @@ -723,6 +735,20 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
 | 
	
		
			
				|  |  |          return coreDrillTaskMapper.updateStatusById(request.getDrillTaskId(), request.getRecStatus());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    private int checkRecStatus(CoreDrillTask drillTask) {
 | 
	
		
			
				|  |  | +        //前端传null,说明页面两个复选框都没勾选
 | 
	
		
			
				|  |  | +        //如果当前是正常案例/行社优秀案例/已推荐地区优秀案例 取消推荐后状态为正常案例
 | 
	
		
			
				|  |  | +        if (drillTask.getRecStatus() == 0 || drillTask.getRecStatus() == 1 || drillTask.getRecStatus() == 2) {
 | 
	
		
			
				|  |  | +            return 0;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //如果当前是地区优秀案例/已推荐省级优秀案例  取消推荐后状态为行社优秀案例
 | 
	
		
			
				|  |  | +        if (drillTask.getRecStatus() == 3 || drillTask.getRecStatus() == 4) {
 | 
	
		
			
				|  |  | +            return 1;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //走到这说明当前推荐状态为省级优秀案例,取消推荐后状态为地区优秀案例
 | 
	
		
			
				|  |  | +        return 3;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private void checkRecNum(CoreDrillTask drillTask, Integer recStatus) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          DrillRecStatus drillRecStatus = DrillRecStatus.getDrillRecStatus(recStatus);
 |