|  | @@ -37,7 +37,6 @@ import com.xunmei.common.core.enums.CycleCommonEnum;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.enums.OrgTypeEnum;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.enums.drill.DrillPlanCycleEnum;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.enums.drill.DrillPlanStatus;
 | 
	
		
			
				|  |  | -import com.xunmei.common.core.enums.edu.EduTrainingDoStatus;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.enums.edu.EduTrainingPlanStatus;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.exception.ServiceException;
 | 
	
	
		
			
				|  | @@ -196,8 +195,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |          vo.setPlanRoleId(ObjectUtil.isEmpty(execRoleIdList) ? null : execRoleIdList);
 | 
	
		
			
				|  |  |          if (plan.getStandard() == 1) {
 | 
	
		
			
				|  |  |              //是否存在已完成的任务
 | 
	
		
			
				|  |  | -            final Integer done = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(plan.getId());
 | 
	
		
			
				|  |  | +            final Integer done = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(vo.getId());
 | 
	
		
			
				|  |  |              vo.setDone(done);
 | 
	
		
			
				|  |  | +            //是否已生成了任务
 | 
	
		
			
				|  |  | +            final Integer hasTask = coreEduTrainingTaskMapper.checkHasTaskByPlanParentId(vo.getId());
 | 
	
		
			
				|  |  | +            vo.setHasTask(hasTask);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (ObjectUtil.equal(plan.getPlanCycle(), EduTrainingPlanCycleEnum.NONE.getCode())) {
 | 
	
		
			
				|  |  |              vo.setDone(coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanIdOrParentId(plan.getId()));
 | 
	
	
		
			
				|  | @@ -293,7 +295,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public int updateCoreEduTrainingPlan(CoreEduTrainingPlanEditDto request) {
 | 
	
		
			
				|  |  |          final CoreEduTrainingPlan plan = getById(request.getId());
 | 
	
		
			
				|  |  | -        if (plan==null){
 | 
	
		
			
				|  |  | +        if (plan == null) {
 | 
	
		
			
				|  |  |              throw new RuntimeException("计划不存在!");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          plan.setUpdateTime(DateUtils.getNowDate());
 | 
	
	
		
			
				|  | @@ -308,8 +310,8 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (plan.getPlanStatus() == EduTrainingPlanStatus.USING.getCode()) {
 | 
	
		
			
				|  |  |              //使用中 状态,支持编辑名称;
 | 
	
		
			
				|  |  | -            //存在已完成任务,本次修改内容将从下周期生效
 | 
	
		
			
				|  |  |              //不存在已完成任务,本次修改内容将立即生成
 | 
	
		
			
				|  |  | +            //存在已完成任务,本次修改内容将从下周期生效
 | 
	
		
			
				|  |  |              doUpdatePlanForUsing(plan, request);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -319,13 +321,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |      private void doUpdatePlanForUsing(CoreEduTrainingPlan plan, CoreEduTrainingPlanEditDto request) {
 | 
	
		
			
				|  |  |          doUpdatePlanForDeleted(plan, request);
 | 
	
		
			
				|  |  |          final List<Long> list = coreEduTrainingPlanMapper.selectIdByParentId(plan.getId());
 | 
	
		
			
				|  |  | -        Integer isExecute = coreEduTrainingTaskMapper.selectCount(new LambdaQueryWrapper<CoreEduTrainingTask>()
 | 
	
		
			
				|  |  | -                        .in(CoreEduTrainingTask::getPlanId, list)
 | 
	
		
			
				|  |  | -                        .eq(CoreEduTrainingTask::getStatus, EduTrainingDoStatus.DONE.getCode()))
 | 
	
		
			
				|  |  | -                .intValue();
 | 
	
		
			
				|  |  | +        Integer isExecute = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(plan.getId());
 | 
	
		
			
				|  |  |          //不存在已完成任务,本次修改内容将立即生成
 | 
	
		
			
				|  |  |          //存在已完成任务,本次修改内容将从下周期生效
 | 
	
		
			
				|  |  | -        if (isExecute < 1) {
 | 
	
		
			
				|  |  | +        if (isExecute == null || isExecute < 1) {
 | 
	
		
			
				|  |  |              coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
 | 
	
		
			
				|  |  |              //使用中 状态,支持编辑名称,所以这里只需要修改计划名称就行了
 | 
	
		
			
				|  |  |              this.update(new LambdaUpdateWrapper<CoreEduTrainingPlan>().in(CoreEduTrainingPlan::getId, list)
 | 
	
	
		
			
				|  | @@ -394,7 +393,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |          List<Long> longs = baseMapper.selectAllIdByParentId(plan.getId());
 | 
	
		
			
				|  |  |          if (!longs.isEmpty()) {
 | 
	
		
			
				|  |  |              longs.remove(plan.getId());
 | 
	
		
			
				|  |  | -            if(!longs.isEmpty()){
 | 
	
		
			
				|  |  | +            if (!longs.isEmpty()) {
 | 
	
		
			
				|  |  |                  baseMapper.delByIds(longs);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  //            physicalDeleteMapper.deletedEduPlanByIds(longs);
 | 
	
	
		
			
				|  | @@ -498,12 +497,9 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |              removeById(id);
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        int isExecute = coreEduTrainingTaskMapper.selectCount(new LambdaQueryWrapper<CoreEduTrainingTask>()
 | 
	
		
			
				|  |  | -                        .in(CoreEduTrainingTask::getPlanId, list)
 | 
	
		
			
				|  |  | -                        .eq(CoreEduTrainingTask::getStatus, EduTrainingDoStatus.DONE.getCode()))
 | 
	
		
			
				|  |  | -                .intValue();
 | 
	
		
			
				|  |  | +        Integer isExecute = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(id);
 | 
	
		
			
				|  |  |          list.add(id);
 | 
	
		
			
				|  |  | -        if (isExecute < 1) {
 | 
	
		
			
				|  |  | +        if (isExecute == null || isExecute < 1) {
 | 
	
		
			
				|  |  |              // 计划下没有已完成:删除所有任务,计划数据做物理删除。
 | 
	
		
			
				|  |  |              coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
 | 
	
		
			
				|  |  |              coreEduTrainingPlanMapper.delByIds(list);
 | 
	
	
		
			
				|  | @@ -786,7 +782,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |          List<Long> list = coreEduTrainingPlanMapper.selectIdByParentId(planId);
 | 
	
		
			
				|  |  |          Integer isExecute = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(planId);
 | 
	
		
			
				|  |  |          //计划下没有已完成:计划下没有已完成:删除所有任务数据,计划状态回到草稿状态。
 | 
	
		
			
				|  |  | -        if (ObjectUtil.isNull(isExecute) || isExecute < 1/* || EduTrainingPlanCycleEnum.NONE.getCode().equals(plan.getPlanCycle())*/) {
 | 
	
		
			
				|  |  | +        if (isExecute == null || isExecute < 1) {
 | 
	
		
			
				|  |  |              // 删除所有任务数据
 | 
	
		
			
				|  |  |              coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
 | 
	
		
			
				|  |  |              //删除所有子计划
 | 
	
	
		
			
				|  | @@ -829,18 +825,17 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |  //                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //1、由办事处机构获取到省联社机构,并获取到计划数据
 | 
	
		
			
				|  |  | -                List<SysOrgVO> parentOrgList= RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(orgId), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
	
		
			
				|  |  | +                List<SysOrgVO> parentOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(orgId), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
	
		
			
				|  |  |                  SysOrgVO slsOrgVo = parentOrgList.stream().filter(x -> ObjectUtil.equal(x.getType(), 1)).findFirst().orElse(null);
 | 
	
		
			
				|  |  | -                List<CoreEduTrainingPlan> lsPlanList =new ArrayList<>();
 | 
	
		
			
				|  |  | -                if(ObjectUtil.isNotNull(slsOrgVo))
 | 
	
		
			
				|  |  | -                {
 | 
	
		
			
				|  |  | +                List<CoreEduTrainingPlan> lsPlanList = new ArrayList<>();
 | 
	
		
			
				|  |  | +                if (ObjectUtil.isNotNull(slsOrgVo)) {
 | 
	
		
			
				|  |  |                      lsPlanList = getPlanList(slsOrgVo.getId(), 1, 1);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  //2、由办事处计划获取到下辖行社机构,并获取到由省联社下发到行社的计划数据
 | 
	
		
			
				|  |  | -                List<SysOrg> hsOrgList= RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectChildHs(orgId,SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
	
		
			
				|  |  | -                List<CoreEduTrainingPlan> bscHsPlanList = getPlanList(hsOrgList.stream().map(x->x.getId()).collect(toList()), 0,0);
 | 
	
		
			
				|  |  | +                List<SysOrg> hsOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectChildHs(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
	
		
			
				|  |  | +                List<CoreEduTrainingPlan> bscHsPlanList = getPlanList(hsOrgList.stream().map(x -> x.getId()).collect(toList()), 0, 0);
 | 
	
		
			
				|  |  |                  //3、对比第一步和第二步的计划,两种相同的任务名称交集才是该办事处需要看到的省联社下发计划
 | 
	
		
			
				|  |  | -                lsPlanList=lsPlanList.stream().filter(ls->bscHsPlanList.stream().anyMatch(hs->ls.getPlanName().equals(hs.getPlanName()))).collect(toList());
 | 
	
		
			
				|  |  | +                lsPlanList = lsPlanList.stream().filter(ls -> bscHsPlanList.stream().anyMatch(hs -> ls.getPlanName().equals(hs.getPlanName()))).collect(toList());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //4、办事处自己下发的任务
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -852,12 +847,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |                  return hsPlanList.stream().map(x -> new IdName<>(x.getId().toString(), x.getPlanName())).collect(Collectors.toList());
 | 
	
		
			
				|  |  |              case 4:
 | 
	
		
			
				|  |  |                  //网点
 | 
	
		
			
				|  |  | -                List<SysOrgVO> parentOrgList1= RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(orgId), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
	
		
			
				|  |  | +                List<SysOrgVO> parentOrgList1 = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(orgId), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
 | 
	
		
			
				|  |  |                  SysOrgVO hsOrgVo = parentOrgList1.stream().filter(x -> ObjectUtil.equal(x.getType(), 3)).findFirst().orElse(null);
 | 
	
		
			
				|  |  | -                Long tempOrgId=orgId;
 | 
	
		
			
				|  |  | -                if(ObjectUtil.isNotNull(hsOrgVo))
 | 
	
		
			
				|  |  | -                {
 | 
	
		
			
				|  |  | -                    tempOrgId=hsOrgVo.getId();
 | 
	
		
			
				|  |  | +                Long tempOrgId = orgId;
 | 
	
		
			
				|  |  | +                if (ObjectUtil.isNotNull(hsOrgVo)) {
 | 
	
		
			
				|  |  | +                    tempOrgId = hsOrgVo.getId();
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  final List<CoreEduTrainingPlan> wdhsPlanList = getPlanList(tempOrgId, null, null);
 | 
	
		
			
				|  |  |                  return wdhsPlanList.stream().map(x -> new IdName<>(x.getId().toString(), x.getPlanName())).collect(Collectors.toList());
 | 
	
	
		
			
				|  | @@ -867,16 +861,14 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private List<CoreEduTrainingPlan> getPlanList(Long orgId, Integer standard, Integer issue) {
 | 
	
		
			
				|  |  | -         LambdaQueryWrapper<CoreEduTrainingPlan> queryWrapper = new LambdaQueryWrapper<>();
 | 
	
		
			
				|  |  | -         queryWrapper.eq(CoreEduTrainingPlan::getBelongOrgId, orgId)
 | 
	
		
			
				|  |  | +        LambdaQueryWrapper<CoreEduTrainingPlan> queryWrapper = new LambdaQueryWrapper<>();
 | 
	
		
			
				|  |  | +        queryWrapper.eq(CoreEduTrainingPlan::getBelongOrgId, orgId)
 | 
	
		
			
				|  |  |                  .eq(CoreEduTrainingPlan::getDeleted, 0)
 | 
	
		
			
				|  |  |                  .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode());
 | 
	
		
			
				|  |  | -         if(ObjectUtil.isNotNull(standard))
 | 
	
		
			
				|  |  | -         {
 | 
	
		
			
				|  |  | -             queryWrapper.eq(CoreEduTrainingPlan::getStandard, standard);
 | 
	
		
			
				|  |  | -         }
 | 
	
		
			
				|  |  | -        if(ObjectUtil.isNotNull(issue))
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (ObjectUtil.isNotNull(standard)) {
 | 
	
		
			
				|  |  | +            queryWrapper.eq(CoreEduTrainingPlan::getStandard, standard);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (ObjectUtil.isNotNull(issue)) {
 | 
	
		
			
				|  |  |              queryWrapper.eq(CoreEduTrainingPlan::getIssue, issue);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return coreEduTrainingPlanMapper.selectList(queryWrapper.select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanName));
 | 
	
	
		
			
				|  | @@ -889,12 +881,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |          queryWrapper.in(CoreEduTrainingPlan::getBelongOrgId, orgIds)
 | 
	
		
			
				|  |  |                  .eq(CoreEduTrainingPlan::getDeleted, 0)
 | 
	
		
			
				|  |  |                  .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode());
 | 
	
		
			
				|  |  | -        if(ObjectUtil.isNotNull(standard))
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (ObjectUtil.isNotNull(standard)) {
 | 
	
		
			
				|  |  |              queryWrapper.eq(CoreEduTrainingPlan::getStandard, standard);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if(ObjectUtil.isNotNull(issue))
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (ObjectUtil.isNotNull(issue)) {
 | 
	
		
			
				|  |  |              queryWrapper.eq(CoreEduTrainingPlan::getIssue, issue);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return coreEduTrainingPlanMapper.selectList(queryWrapper.select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanName));
 | 
	
	
		
			
				|  | @@ -988,38 +978,38 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |                  compensateLogService.buildLog(getBusinessPlanType(), false, orgIdList, trainingPlan.getId(), trainingPlan.getPlanName(), errorMsg);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  return;
 | 
	
		
			
				|  |  | -            }else{
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  |                  Integer execOrgType = trainingPlan.getExecOrgType();
 | 
	
		
			
				|  |  |                  List<Long> orgIds = coreEduTrainingPlanToExecOrgMapper.selectOrgIdByPlanId(trainingPlan.getId());
 | 
	
		
			
				|  |  |                  List<Long> ids = new ArrayList<>();
 | 
	
		
			
				|  |  | -                if(ObjectUtil.isNotEmpty(orgIds)){
 | 
	
		
			
				|  |  | +                if (ObjectUtil.isNotEmpty(orgIds)) {
 | 
	
		
			
				|  |  |                      //该计划是指定了具体机构的计划
 | 
	
		
			
				|  |  |                      //获取机构在 orgList子集机构
 | 
	
		
			
				|  |  |                      for (SysOrgVO sysOrgVO : orgList) {
 | 
	
		
			
				|  |  |                          List<SysOrg> sysOrgs = orgService.selectByOrgPathAndOrgType(sysOrgVO.getPath(), execOrgType, SecurityConstants.INNER);
 | 
	
		
			
				|  |  | -                        if(ObjectUtil.isNotEmpty(sysOrgs)){
 | 
	
		
			
				|  |  | +                        if (ObjectUtil.isNotEmpty(sysOrgs)) {
 | 
	
		
			
				|  |  |                              //获取sysOrgs 的属性id集合
 | 
	
		
			
				|  |  |                              List<Long> cids = sysOrgs.stream().map(SysOrg::getId).collect(toList());
 | 
	
		
			
				|  |  |                              //求cids和orgIds之间的交集
 | 
	
		
			
				|  |  |                              List<Long> collect = cids.stream().filter(id -> orgIds.contains(id)).collect(toList());
 | 
	
		
			
				|  |  | -                            if(!collect.isEmpty()){
 | 
	
		
			
				|  |  | +                            if (!collect.isEmpty()) {
 | 
	
		
			
				|  |  |                                  ids.addAll(collect);
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -                }else{
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  |                      //该计划是只指定了机构类型的计划
 | 
	
		
			
				|  |  |                      //获取orgList 机构树下的 机构类型
 | 
	
		
			
				|  |  |                      for (SysOrgVO sysOrgVO : orgList) {
 | 
	
		
			
				|  |  |                          List<SysOrg> sysOrgs = orgService.selectByOrgPathAndOrgType(sysOrgVO.getPath(), execOrgType, SecurityConstants.INNER);
 | 
	
		
			
				|  |  | -                        if(ObjectUtil.isNotEmpty(sysOrgs)){
 | 
	
		
			
				|  |  | -                           //获取sysOrgs 的属性id集合
 | 
	
		
			
				|  |  | +                        if (ObjectUtil.isNotEmpty(sysOrgs)) {
 | 
	
		
			
				|  |  | +                            //获取sysOrgs 的属性id集合
 | 
	
		
			
				|  |  |                              ids.addAll(sysOrgs.stream().map(SysOrg::getId).collect(toList()));
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  //没有子类计划的省联社计划
 | 
	
		
			
				|  |  | -                create(trainingPlan,ids,threadPoolTaskExecutor);
 | 
	
		
			
				|  |  | +                create(trainingPlan, ids, threadPoolTaskExecutor);
 | 
	
		
			
				|  |  |                  compensateLogService.buildLog(getBusinessPlanType(), false, orgIdList, trainingPlan.getId(), trainingPlan.getPlanName(), errorMsg);
 | 
	
		
			
				|  |  |                  return;
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -1027,7 +1017,6 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          // 行社自建计划
 | 
	
		
			
				|  |  |          if (INVALID_ORG_TYPES.contains(orgTypeEnum)) {
 | 
	
		
			
				|  |  |              errorMsg = "补偿范围中传递机构信息错误!与计划信息不匹配";
 |