shc 8 kuukautta sitten
vanhempi
commit
5d2d604d2c

+ 7 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmSupervisionManager.java

@@ -346,7 +346,13 @@ public class WmSupervisionManager {
      * @return 操作结果
      */
     public Boolean createTaskSupervision(WmSupervisionDto.OnTaskSupervision resource, HnqzUser user) {
-        return taskSupervisionService.createTaskSupervision(resource, user);
+        taskSupervisionService.createTaskSupervision(resource, user);
+
+        // 更新监督结果
+        packageStatusService.updateSupervisionFlag(resource.getPkgId());
+
+        return true;
+
     }
 
     // /**

+ 565 - 558
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageStatusServiceImpl.java

@@ -50,394 +50,397 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageStatusMapper, WmScorePackageStatus> implements WmScorePackageStatusService {
 
-	private final WmScorePackageStatusMapper wmScorePackageStatusMapper;
-	private final WmScorePackageMapper wmScorePackageMapper;
-	private final WmTaskMapper wmTaskMapper;
-
-	@Override
-	public R<?> getPage(Page page, WmScorePackageStatus wmScorePackageStatus) {
-		IPage<WmScorePackageStatus> pages=wmScorePackageStatusMapper.getPage(page, wmScorePackageStatus);
-		return R.ok(pages);
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public R approvalStatus(WmScorePackageStatus wmScorePackageStatus) {
-		WmScorePackageStatus packageStatus1=this.getById(wmScorePackageStatus.getId());
-		wmScorePackageStatus.setPackageId(packageStatus1.getPackageId());
-		//审批
-		WmScorePackage wmScorePackage=wmScorePackageMapper.selectById(wmScorePackageStatus.getPackageId());
-		if (!StrUtil.equals(wmScorePackage.getScorePackageStatus(), ScorePackageStatusEnum.PENDING_APPROVAL.val())) {
-			return R.failed("积分包状态不是已申领待审批");
-		}
-
-		if(wmScorePackage.getPackageType1().equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val())) {
-			//定额包一人一包,所以score=userscore
-			wmScorePackageStatus.setUserScore(String.valueOf(wmScorePackage.getScore()));
-			wmScorePackageStatus.setTaskNum(0);
-		} else if(wmScorePackage.getPackageType1().equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val())) {
-			//定额+定量(多人承接-按积分值)
-			wmScorePackageStatus.setUserScore(String.valueOf(wmScorePackage.getScore()));
-			wmScorePackageStatus.setTaskNum(wmScorePackage.getTaskNum());
-		}  else {
-			wmScorePackageStatus.setTaskNum(wmScorePackage.getTaskNum());
-			wmScorePackageStatus.setUserScore(String.valueOf(wmScorePackage.getUserScore()));
-		}
-
-		wmScorePackageStatus.setUpdateTime(LocalDateTime.now());
-		wmScorePackageStatus.setUserId(null);
-		this.updateById(wmScorePackageStatus);
-
-		// 同意
-		wmScorePackage.setUpdateTime(LocalDateTime.now());
-		if ("2".equals(wmScorePackageStatus.getStatus())) {
-			// 进行中
-			wmScorePackage.setScorePackageStatus("3");
-			wmScorePackage.setReceiveDate(LocalDateTime.now());
-			//判断该积分包是否审核满员,如果是,其他接单对象自动改为审核不通过
-			WmScorePackageStatus wmScorePackageStatus1 = new WmScorePackageStatus();
-			wmScorePackageStatus1.setPackageId(wmScorePackageStatus.getPackageId());
-			wmScorePackageStatus1.setStatus("2");//审核通过
-			wmScorePackageStatus1.setDelFlag("0");
-			wmScorePackageStatus1.setEnableFlag("0");
-			List<WmScorePackageStatus> sList = this.list(Wrappers.query(wmScorePackageStatus1));
-			int usernum = wmScorePackage.getUserNum() == null ? 1 : wmScorePackage.getUserNum();
-			// 接单审核通过人数等于积分包需求人数
-			if (sList.size() >= usernum) {
-				LambdaUpdateWrapper<WmScorePackageStatus> updateWrapper = new LambdaUpdateWrapper<>();
-				// 审核不通过
-				updateWrapper.set(WmScorePackageStatus::getStatus, "3");
-				// 不允许新增任务
-				updateWrapper.set(WmScorePackageStatus::getTaskAddFlag, "0");
-				updateWrapper.eq(WmScorePackageStatus::getPackageId, wmScorePackageStatus.getPackageId());
-				updateWrapper.eq(WmScorePackageStatus::getStatus, "1");
-				updateWrapper.eq(WmScorePackageStatus::getDelFlag, "0");
-				updateWrapper.eq(WmScorePackageStatus::getEnableFlag, "0");
-				this.update(updateWrapper);
-				//wmScorePackage.setPackageStatus("2");
-				wmScorePackage.setIsReceive("1");//不允许接单
-				wmScorePackageMapper.updateById(wmScorePackage);
-			}
-
-		} else {
-			// 不同意
-			// 不可以新增任务
-			wmScorePackageStatus.setTaskAddFlag("0");
-			wmScorePackageStatus.setUserId(null);
-			this.updateById(wmScorePackageStatus);
-		}
-
-		WmScorePackageStatus query = new WmScorePackageStatus();
-		query.setPackageId(wmScorePackageStatus.getPackageId());
-		query.setStatus("2");
-		query.setDelFlag("0");
-		query.setEnableFlag("0");
-		int total = this.count(Wrappers.query(query));
-		// 有人接单成功
-		if (total >= 1) {
-			// 进行中
-			wmScorePackage.setScorePackageStatus("3");
-			// 人数已满
-			if (total >= wmScorePackage.getUserNum()) {
-				// 不允许接单
-				wmScorePackage.setIsReceive("1");
-			}
-		} else {
-			// 没有人接单成功
-			WmScorePackageStatus query1 = new WmScorePackageStatus();
-			query1.setPackageId(wmScorePackageStatus.getPackageId());
-			query1.setStatus("1");
-			int total1 = this.count(Wrappers.query(query1));
-			if (total1 == 0) {
-				// 已分派待申领
-				wmScorePackage.setScorePackageStatus("1");
-			} else {
-				// 已申领待审批
-				wmScorePackage.setScorePackageStatus("2");
-			}
-
-		}
-
-		wmScorePackageMapper.updateById(wmScorePackage);
-
-		//拒绝没有操作
-		return  R.ok();
-	}
-
-	/**
-	 * 终止接单
-	 * @param wmScorePackageStatus
-	 * @return
-	 */
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public R updateZZ(WmScorePackageStatus wmScorePackageStatus) {
-		String enableType=wmScorePackageStatus.getEnableType();
-		wmScorePackageStatus=this.getById(wmScorePackageStatus.getId());
-		wmScorePackageStatus.setEnableType(enableType);
-		WmScorePackage wmScorePackage1=wmScorePackageMapper.selectById(wmScorePackageStatus.getPackageId());
-		Integer res=0;
-		wmScorePackageStatus.setTaskAddFlag("0");//不允许新增任务
-		if("1".equals(enableType)){//全部收回
-			wmScorePackage1.setIsReceive("0");//允许接单
-			//先终止任务,再收回任务积分
-			wmScorePackageStatus.setEnableFlag("1");//已终止
-
-			LambdaUpdateWrapper<WmTask> updateWrapper=new LambdaUpdateWrapper();
-			updateWrapper.set(WmTask::getEnableFlag,"1");
-			updateWrapper.eq(WmTask::getScorePackageId,wmScorePackageStatus.getPackageId());
-			updateWrapper.eq(WmTask::getTaskUserId,wmScorePackageStatus.getUserId());
-			wmTaskMapper.update(new WmTask(),updateWrapper);
-			//WmScorePackage wmScorePackage1=wmScorePackageMapper.selectById(wmScorePackageStatus.getPackageId());
-		}else if("2".equals(enableType)){//部分收回
-			//部分收回,只收回没有做的任务,做完的任务,可以审核,审核不通过,可以继续做任务
-			//计算该用户任务的总积分,如果总积分,小于积分包的个人积分值,那么积分包的总积分值减去少的一部分
-			WmTask wmTask=new WmTask();
-			wmTask.setEnableFlag("0");
-			wmTask.setScorePackageId(wmScorePackageStatus.getPackageId());
-			wmTask.setTaskUserId(wmScorePackageStatus.getUserId());
-			wmTask.setTaskStatus("1,2,3");
-			List<WmTask> taskList=wmTaskMapper.selectByTask(wmTask);
-			if(taskList==null||taskList.size()==0){
-				if(wmScorePackage1.getPackageType1().equals("1")){//定额
-					//这个用户还没有做任务时,积分值设为0
-					wmScorePackageStatus.setUserScore("0");
-					wmScorePackage1.setScore(wmScorePackage1.getScore()-Integer.valueOf(wmScorePackageStatus.getUserScore()));
-				}else {//2,3 定量
-					//定量收回任务个数
-					wmScorePackageStatus.setTaskNum(0);
-				}
-
-			}else {
-				if(wmScorePackage1.getPackageType1().equals("1")){//定额
-					Integer sum = taskList.stream().mapToInt(WmTask::getScore).sum();
-					res = Integer.valueOf(wmScorePackageStatus.getUserScore()) - sum;
-					if (res > 0) {//个人积分包值大于任务积分值
-						wmScorePackageStatus.setUserScore(sum + "");
-					}
-				}else {//2,3 定量
-					//定量收回任务个数
-					wmScorePackageStatus.setTaskNum(taskList.size());
-				}
-
-			}
-		}
-
-		//更新结单数据
-		this.updateById(wmScorePackageStatus);
-		//更新积分包的积分总值
-		if(res>0){
-			if(wmScorePackage1.getPackageType1().equals("1")){//定额
-				wmScorePackage1.setScore(wmScorePackage1.getScore()-res);
-				if(!StringUtil.isEmpty(wmScorePackage1.getRelationScoreId())){
-					WmScorePackage wmScorePackage2=wmScorePackageMapper.selectById(wmScorePackage1.getRelationScoreId());
-					wmScorePackage2.setKfpjf(wmScorePackage2.getKfpjf()+res);
-					wmScorePackageMapper.updateById(wmScorePackage2);
-				}
-			}
-
-		}
-		wmScorePackageMapper.updateById(wmScorePackage1);
-		this.updateScorePackageStatus(wmScorePackageStatus.getPackageId());
-
-		return R.ok();
-	}
-
-
-	/**
-	 * 公共方法--判断积分包状态scorePackageStatus
-	 * @param ScorePackageId
-	 */
-	@Override
-	@Transactional
-	public  void updateScorePackageStatus(String ScorePackageId){
-
-		log.info(">>>>>>>>>>>>>>>>>>更新积分包状态开始:[{}]<<<<<<<<<<<<<<<<<<<<<", ScorePackageId);
-
-		WmScorePackage wmScorePackage=wmScorePackageMapper.selectById(ScorePackageId);
-
-		log.info("积分包内容:{}",wmScorePackage);
-		WmTask wmTask1=new WmTask();
-		wmTask1.setDelFlag("0");
-		wmTask1.setEnableFlag("0");
-		wmTask1.setRealFlag("0");
-		wmTask1.setScorePackageId(ScorePackageId);
-		wmTask1.setTaskStatus("2");//未审核
-		wmTask1.setScorePackageId(ScorePackageId);
-		List<Map<String,String>> resMap=wmTaskMapper.PackageIsFinishByTask(wmTask1);
-
-		log.info("PackageIsFinishByTask结果:{}",resMap);
-		// 无结果
-		if(CollUtil.isEmpty(resMap)){
-			//没有接单成功的人,判断是否有接单未审核的数据
-			LambdaQueryWrapper<WmScorePackageStatus> queryWrapper=new LambdaQueryWrapper<>();
-			queryWrapper.eq(WmScorePackageStatus::getPackageId,ScorePackageId);
-			queryWrapper.eq(WmScorePackageStatus::getStatus,"1");
-			List<WmScorePackageStatus> statusList=this.list(queryWrapper);
-
-			if(CollUtil.isEmpty(statusList)){
-				wmScorePackage.setScorePackageStatus("1");//已分派待申领
-			}else {
-				wmScorePackage.setScorePackageStatus("2");//已申领待审批
-			}
-
-		}
-		// 有结果
-		else{
-			log.info("resMap size :{}, userNum:{}", resMap.size(),wmScorePackage.getUserNum());
-			if(resMap.size()>=wmScorePackage.getUserNum()){//接单成功人满了
-				boolean result = true;
-				for (Map<String,String> map: resMap) {
-					result = StrUtil.isNotEmpty(map.get("isFinish")) ? (Integer.parseInt(map.get("isFinish")) > 0? Boolean.FALSE : Boolean.TRUE) : Boolean.FALSE;
-				}
-
-				if(result){
-					//更新所有的任务
-					LambdaUpdateWrapper<WmTask> updateWrapper=new LambdaUpdateWrapper<>();
-					updateWrapper.eq(WmTask::getScorePackageId,ScorePackageId);
-					updateWrapper.eq(WmTask::getRealFlag,"9");
-					updateWrapper.set(WmTask::getRealFlag,"1");
-					wmTaskMapper.update(new WmTask(),updateWrapper);
-					LambdaUpdateWrapper<WmTask> updateWrapper1=new LambdaUpdateWrapper<>();
-					updateWrapper1.eq(WmTask::getScorePackageId,ScorePackageId);
-					updateWrapper1.eq(WmTask::getTaskStatus,"2");
-					updateWrapper1.set(WmTask::getTaskStatus,"4");
-					wmTaskMapper.update(new WmTask(),updateWrapper1);
-
-					wmScorePackage.setPackageFinishStatus("1");//已完成
-					// 有关联积分包,则设置为‘已完成待审批’;没有关联积分包,则直接设置为‘已完成待结算’
-					wmScorePackage.setScorePackageStatus(StringUtils.isNotBlank(wmScorePackage.getRelationScoreId()) ? ScorePackageStatusEnum.TO_BE_APPROVAL.val() : ScorePackageStatusEnum.TO_BE_SETTLED.val());
-					//已完成不可以做任务
-					wmScorePackage.setTaskAddFlag(CommonConstants.STATUS_NORMAL);
-					if (StringUtils.isBlank(wmScorePackage.getRelationScoreId())) {
-						wmScorePackage.setPackageFinishTime(LocalDateTime.now());
-					}
-
-				}
-			}else {
-				//接单人没有满,但是有人接单,状态是进行中
-				wmScorePackage.setScorePackageStatus("3");//进行中
-
-			}
-		}
-
-		wmScorePackage.setUpdateTime(LocalDateTime.now());
-		log.info("更新的积分包内容:{}",wmScorePackage);
-		wmScorePackageMapper.updateById(wmScorePackage);
-
-		log.info(">>>>>>>>>>>>>>>>>>更新积分包状态结束:[{}]<<<<<<<<<<<<<<<<<<<<<", ScorePackageId);
-	}
-
-	@Override
-	public List<WmScorePackageStatus> getByPackageId(WmScorePackageStatus wmScorePackageStatus) {
-		return wmScorePackageStatusMapper.getByPackageId( wmScorePackageStatus);
-	}
-
-	@Override
-	public boolean delStatusByPackageId(String packageId) {
-
-		return this.update(Wrappers.<WmScorePackageStatus>lambdaUpdate()
-				.eq(WmScorePackageStatus::getPackageId,packageId)
-				.set(WmScorePackageStatus::getDelFlag,"1"));
-	}
-
-	@Override
-	public IPage<WmScorePackageApiOutput> getReceivedPackageList(Page page, WmScorePackageApiInput input) {
-		return wmScorePackageStatusMapper.getReceivedPackageList(page,input);
-	}
-
-	/**
-	 * 更新积分包状态
-	 * @param wmTask
-	 * @param wmScorePackage
-	 * @param scorePackageStatus
-	 */
-	@Override
-	public void updatePackageAndStatus(WmTask wmTask, WmScorePackage wmScorePackage, WmScorePackageStatus scorePackageStatus) {
-		WmTask taskQuery = new WmTask();
-		taskQuery.setScorePackageId(wmTask.getScorePackageId());
-		QueryWrapper<WmTask> taskQueryWrapper = Wrappers.query(taskQuery);
-		/**
-		 * 查询出 审核通过和审核中的任务
-		 */
-		taskQueryWrapper.lambda()
-				.ne(WmTask::getTaskStatus, "4")
-				.eq(WmTask::getRealFlag, "0");
+    private final WmScorePackageStatusMapper wmScorePackageStatusMapper;
+    private final WmScorePackageMapper wmScorePackageMapper;
+    private final WmTaskMapper wmTaskMapper;
+
+    @Override
+    public R<?> getPage(Page page, WmScorePackageStatus wmScorePackageStatus) {
+        IPage<WmScorePackageStatus> pages = wmScorePackageStatusMapper.getPage(page, wmScorePackageStatus);
+        return R.ok(pages);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R approvalStatus(WmScorePackageStatus wmScorePackageStatus) {
+        WmScorePackageStatus packageStatus1 = this.getById(wmScorePackageStatus.getId());
+        wmScorePackageStatus.setPackageId(packageStatus1.getPackageId());
+        // 审批
+        WmScorePackage wmScorePackage = wmScorePackageMapper.selectById(wmScorePackageStatus.getPackageId());
+        if (!StrUtil.equals(wmScorePackage.getScorePackageStatus(), ScorePackageStatusEnum.PENDING_APPROVAL.val())) {
+            return R.failed("积分包状态不是已申领待审批");
+        }
+
+        if (wmScorePackage.getPackageType1().equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val())) {
+            // 定额包一人一包,所以score=userscore
+            wmScorePackageStatus.setUserScore(String.valueOf(wmScorePackage.getScore()));
+            wmScorePackageStatus.setTaskNum(0);
+        } else if (wmScorePackage.getPackageType1().equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val())) {
+            // 定额+定量(多人承接-按积分值)
+            wmScorePackageStatus.setUserScore(String.valueOf(wmScorePackage.getScore()));
+            wmScorePackageStatus.setTaskNum(wmScorePackage.getTaskNum());
+        } else {
+            wmScorePackageStatus.setTaskNum(wmScorePackage.getTaskNum());
+            wmScorePackageStatus.setUserScore(String.valueOf(wmScorePackage.getUserScore()));
+        }
+
+        wmScorePackageStatus.setUpdateTime(LocalDateTime.now());
+        wmScorePackageStatus.setUserId(null);
+        this.updateById(wmScorePackageStatus);
+
+        // 同意
+        wmScorePackage.setUpdateTime(LocalDateTime.now());
+        if ("2".equals(wmScorePackageStatus.getStatus())) {
+            // 进行中
+            wmScorePackage.setScorePackageStatus("3");
+            wmScorePackage.setReceiveDate(LocalDateTime.now());
+            // 判断该积分包是否审核满员,如果是,其他接单对象自动改为审核不通过
+            WmScorePackageStatus wmScorePackageStatus1 = new WmScorePackageStatus();
+            wmScorePackageStatus1.setPackageId(wmScorePackageStatus.getPackageId());
+            wmScorePackageStatus1.setStatus("2");// 审核通过
+            wmScorePackageStatus1.setDelFlag("0");
+            wmScorePackageStatus1.setEnableFlag("0");
+            List<WmScorePackageStatus> sList = this.list(Wrappers.query(wmScorePackageStatus1));
+            int usernum = wmScorePackage.getUserNum() == null ? 1 : wmScorePackage.getUserNum();
+            // 接单审核通过人数等于积分包需求人数
+            if (sList.size() >= usernum) {
+                LambdaUpdateWrapper<WmScorePackageStatus> updateWrapper = new LambdaUpdateWrapper<>();
+                // 审核不通过
+                updateWrapper.set(WmScorePackageStatus::getStatus, "3");
+                // 不允许新增任务
+                updateWrapper.set(WmScorePackageStatus::getTaskAddFlag, "0");
+                updateWrapper.eq(WmScorePackageStatus::getPackageId, wmScorePackageStatus.getPackageId());
+                updateWrapper.eq(WmScorePackageStatus::getStatus, "1");
+                updateWrapper.eq(WmScorePackageStatus::getDelFlag, "0");
+                updateWrapper.eq(WmScorePackageStatus::getEnableFlag, "0");
+                this.update(updateWrapper);
+                // wmScorePackage.setPackageStatus("2");
+                wmScorePackage.setIsReceive("1");// 不允许接单
+                wmScorePackageMapper.updateById(wmScorePackage);
+            }
+
+        } else {
+            // 不同意
+            // 不可以新增任务
+            wmScorePackageStatus.setTaskAddFlag("0");
+            wmScorePackageStatus.setUserId(null);
+            this.updateById(wmScorePackageStatus);
+        }
+
+        WmScorePackageStatus query = new WmScorePackageStatus();
+        query.setPackageId(wmScorePackageStatus.getPackageId());
+        query.setStatus("2");
+        query.setDelFlag("0");
+        query.setEnableFlag("0");
+        int total = this.count(Wrappers.query(query));
+        // 有人接单成功
+        if (total >= 1) {
+            // 进行中
+            wmScorePackage.setScorePackageStatus("3");
+            // 人数已满
+            if (total >= wmScorePackage.getUserNum()) {
+                // 不允许接单
+                wmScorePackage.setIsReceive("1");
+            }
+        } else {
+            // 没有人接单成功
+            WmScorePackageStatus query1 = new WmScorePackageStatus();
+            query1.setPackageId(wmScorePackageStatus.getPackageId());
+            query1.setStatus("1");
+            int total1 = this.count(Wrappers.query(query1));
+            if (total1 == 0) {
+                // 已分派待申领
+                wmScorePackage.setScorePackageStatus("1");
+            } else {
+                // 已申领待审批
+                wmScorePackage.setScorePackageStatus("2");
+            }
+
+        }
+
+        wmScorePackageMapper.updateById(wmScorePackage);
+
+        // 拒绝没有操作
+        return R.ok();
+    }
+
+    /**
+     * 终止接单
+     *
+     * @param wmScorePackageStatus
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R updateZZ(WmScorePackageStatus wmScorePackageStatus) {
+        String enableType = wmScorePackageStatus.getEnableType();
+        wmScorePackageStatus = this.getById(wmScorePackageStatus.getId());
+        wmScorePackageStatus.setEnableType(enableType);
+        WmScorePackage wmScorePackage1 = wmScorePackageMapper.selectById(wmScorePackageStatus.getPackageId());
+        Integer res = 0;
+        wmScorePackageStatus.setTaskAddFlag("0");// 不允许新增任务
+        if ("1".equals(enableType)) {// 全部收回
+            wmScorePackage1.setIsReceive("0");// 允许接单
+            // 先终止任务,再收回任务积分
+            wmScorePackageStatus.setEnableFlag("1");// 已终止
+
+            LambdaUpdateWrapper<WmTask> updateWrapper = new LambdaUpdateWrapper();
+            updateWrapper.set(WmTask::getEnableFlag, "1");
+            updateWrapper.eq(WmTask::getScorePackageId, wmScorePackageStatus.getPackageId());
+            updateWrapper.eq(WmTask::getTaskUserId, wmScorePackageStatus.getUserId());
+            wmTaskMapper.update(new WmTask(), updateWrapper);
+            // WmScorePackage wmScorePackage1=wmScorePackageMapper.selectById(wmScorePackageStatus.getPackageId());
+        } else if ("2".equals(enableType)) {// 部分收回
+            // 部分收回,只收回没有做的任务,做完的任务,可以审核,审核不通过,可以继续做任务
+            // 计算该用户任务的总积分,如果总积分,小于积分包的个人积分值,那么积分包的总积分值减去少的一部分
+            WmTask wmTask = new WmTask();
+            wmTask.setEnableFlag("0");
+            wmTask.setScorePackageId(wmScorePackageStatus.getPackageId());
+            wmTask.setTaskUserId(wmScorePackageStatus.getUserId());
+            wmTask.setTaskStatus("1,2,3");
+            List<WmTask> taskList = wmTaskMapper.selectByTask(wmTask);
+            if (taskList == null || taskList.size() == 0) {
+                if (wmScorePackage1.getPackageType1().equals("1")) {// 定额
+                    // 这个用户还没有做任务时,积分值设为0
+                    wmScorePackageStatus.setUserScore("0");
+                    wmScorePackage1.setScore(wmScorePackage1.getScore() - Integer.valueOf(wmScorePackageStatus.getUserScore()));
+                } else {// 2,3 定量
+                    // 定量收回任务个数
+                    wmScorePackageStatus.setTaskNum(0);
+                }
+
+            } else {
+                if (wmScorePackage1.getPackageType1().equals("1")) {// 定额
+                    Integer sum = taskList.stream().mapToInt(WmTask::getScore).sum();
+                    res = Integer.valueOf(wmScorePackageStatus.getUserScore()) - sum;
+                    if (res > 0) {// 个人积分包值大于任务积分值
+                        wmScorePackageStatus.setUserScore(sum + "");
+                    }
+                } else {// 2,3 定量
+                    // 定量收回任务个数
+                    wmScorePackageStatus.setTaskNum(taskList.size());
+                }
+
+            }
+        }
+
+        // 更新结单数据
+        this.updateById(wmScorePackageStatus);
+        // 更新积分包的积分总值
+        if (res > 0) {
+            if (wmScorePackage1.getPackageType1().equals("1")) {// 定额
+                wmScorePackage1.setScore(wmScorePackage1.getScore() - res);
+                if (!StringUtil.isEmpty(wmScorePackage1.getRelationScoreId())) {
+                    WmScorePackage wmScorePackage2 = wmScorePackageMapper.selectById(wmScorePackage1.getRelationScoreId());
+                    wmScorePackage2.setKfpjf(wmScorePackage2.getKfpjf() + res);
+                    wmScorePackageMapper.updateById(wmScorePackage2);
+                }
+            }
+
+        }
+        wmScorePackageMapper.updateById(wmScorePackage1);
+        this.updateScorePackageStatus(wmScorePackageStatus.getPackageId());
+
+        return R.ok();
+    }
+
+
+    /**
+     * 公共方法--判断积分包状态scorePackageStatus
+     *
+     * @param ScorePackageId
+     */
+    @Override
+    @Transactional
+    public void updateScorePackageStatus(String ScorePackageId) {
+
+        log.info(">>>>>>>>>>>>>>>>>>更新积分包状态开始:[{}]<<<<<<<<<<<<<<<<<<<<<", ScorePackageId);
+
+        WmScorePackage wmScorePackage = wmScorePackageMapper.selectById(ScorePackageId);
+
+        log.info("积分包内容:{}", wmScorePackage);
+        WmTask wmTask1 = new WmTask();
+        wmTask1.setDelFlag("0");
+        wmTask1.setEnableFlag("0");
+        wmTask1.setRealFlag("0");
+        wmTask1.setScorePackageId(ScorePackageId);
+        wmTask1.setTaskStatus("2");// 未审核
+        wmTask1.setScorePackageId(ScorePackageId);
+        List<Map<String, String>> resMap = wmTaskMapper.PackageIsFinishByTask(wmTask1);
+
+        log.info("PackageIsFinishByTask结果:{}", resMap);
+        // 无结果
+        if (CollUtil.isEmpty(resMap)) {
+            // 没有接单成功的人,判断是否有接单未审核的数据
+            LambdaQueryWrapper<WmScorePackageStatus> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(WmScorePackageStatus::getPackageId, ScorePackageId);
+            queryWrapper.eq(WmScorePackageStatus::getStatus, "1");
+            List<WmScorePackageStatus> statusList = this.list(queryWrapper);
+
+            if (CollUtil.isEmpty(statusList)) {
+                wmScorePackage.setScorePackageStatus("1");// 已分派待申领
+            } else {
+                wmScorePackage.setScorePackageStatus("2");// 已申领待审批
+            }
+
+        }
+        // 有结果
+        else {
+            log.info("resMap size :{}, userNum:{}", resMap.size(), wmScorePackage.getUserNum());
+            if (resMap.size() >= wmScorePackage.getUserNum()) {// 接单成功人满了
+                boolean result = true;
+                for (Map<String, String> map : resMap) {
+                    result = StrUtil.isNotEmpty(map.get("isFinish")) ? (Integer.parseInt(map.get("isFinish")) > 0 ? Boolean.FALSE : Boolean.TRUE) : Boolean.FALSE;
+                }
+
+                if (result) {
+                    // 更新所有的任务
+                    LambdaUpdateWrapper<WmTask> updateWrapper = new LambdaUpdateWrapper<>();
+                    updateWrapper.eq(WmTask::getScorePackageId, ScorePackageId);
+                    updateWrapper.eq(WmTask::getRealFlag, "9");
+                    updateWrapper.set(WmTask::getRealFlag, "1");
+                    wmTaskMapper.update(new WmTask(), updateWrapper);
+                    LambdaUpdateWrapper<WmTask> updateWrapper1 = new LambdaUpdateWrapper<>();
+                    updateWrapper1.eq(WmTask::getScorePackageId, ScorePackageId);
+                    updateWrapper1.eq(WmTask::getTaskStatus, "2");
+                    updateWrapper1.set(WmTask::getTaskStatus, "4");
+                    wmTaskMapper.update(new WmTask(), updateWrapper1);
+
+                    wmScorePackage.setPackageFinishStatus("1");// 已完成
+                    // 有关联积分包,则设置为‘已完成待审批’;没有关联积分包,则直接设置为‘已完成待结算’
+                    wmScorePackage.setScorePackageStatus(StringUtils.isNotBlank(wmScorePackage.getRelationScoreId()) ? ScorePackageStatusEnum.TO_BE_APPROVAL.val() : ScorePackageStatusEnum.TO_BE_SETTLED.val());
+                    // 已完成不可以做任务
+                    wmScorePackage.setTaskAddFlag(CommonConstants.STATUS_NORMAL);
+                    if (StringUtils.isBlank(wmScorePackage.getRelationScoreId())) {
+                        wmScorePackage.setPackageFinishTime(LocalDateTime.now());
+                    }
+
+                }
+            } else {
+                // 接单人没有满,但是有人接单,状态是进行中
+                wmScorePackage.setScorePackageStatus("3");// 进行中
+
+            }
+        }
+
+        wmScorePackage.setUpdateTime(LocalDateTime.now());
+        log.info("更新的积分包内容:{}", wmScorePackage);
+        wmScorePackageMapper.updateById(wmScorePackage);
+
+        log.info(">>>>>>>>>>>>>>>>>>更新积分包状态结束:[{}]<<<<<<<<<<<<<<<<<<<<<", ScorePackageId);
+    }
+
+    @Override
+    public List<WmScorePackageStatus> getByPackageId(WmScorePackageStatus wmScorePackageStatus) {
+        return wmScorePackageStatusMapper.getByPackageId(wmScorePackageStatus);
+    }
+
+    @Override
+    public boolean delStatusByPackageId(String packageId) {
+
+        return this.update(Wrappers.<WmScorePackageStatus>lambdaUpdate()
+                .eq(WmScorePackageStatus::getPackageId, packageId)
+                .set(WmScorePackageStatus::getDelFlag, "1"));
+    }
+
+    @Override
+    public IPage<WmScorePackageApiOutput> getReceivedPackageList(Page page, WmScorePackageApiInput input) {
+        return wmScorePackageStatusMapper.getReceivedPackageList(page, input);
+    }
+
+    /**
+     * 更新积分包状态
+     *
+     * @param wmTask
+     * @param wmScorePackage
+     * @param scorePackageStatus
+     */
+    @Override
+    public void updatePackageAndStatus(WmTask wmTask, WmScorePackage wmScorePackage, WmScorePackageStatus scorePackageStatus) {
+        WmTask taskQuery = new WmTask();
+        taskQuery.setScorePackageId(wmTask.getScorePackageId());
+        QueryWrapper<WmTask> taskQueryWrapper = Wrappers.query(taskQuery);
+        /**
+         * 查询出 审核通过和审核中的任务
+         */
+        taskQueryWrapper.lambda()
+                .ne(WmTask::getTaskStatus, "4")
+                .eq(WmTask::getRealFlag, "0");
 //				.ne(WmTask::getRealFlag, "1");
-		List<WmTask> wmTaskList = wmTaskMapper.selectList(taskQueryWrapper);
-		/**
-		 * 判断定量还是定额 1- 定额   2-定量
-		 */
-		if (PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
-
-			int totalCount = 0;
-			for (WmTask wmtask : wmTaskList) {
-				totalCount += wmtask.getScore();
-			}
-
-			if (totalCount >= wmScorePackage.getScore()) {
-				wmScorePackage.setTaskAddFlag("0");
-				scorePackageStatus.setTaskAddFlag("0");
-			}else {
-				wmScorePackage.setTaskAddFlag("1");
-				scorePackageStatus.setTaskAddFlag("1");
-			}
-			wmScorePackageStatusMapper.updateById(scorePackageStatus);
-		} else if (PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
-			// 多人积分包处理
-			int totalCount = 0;
-			for (WmTask wmtask : wmTaskList) {
-				totalCount += wmtask.getScore();
-			}
-
-			String taskAddFlag = null;
-			if (totalCount >= wmScorePackage.getScore()) {
-				wmScorePackage.setTaskAddFlag("0");
-				taskAddFlag = "0";
-			}else {
-				wmScorePackage.setTaskAddFlag("1");
-				taskAddFlag = "1";
-			}
-
-			List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusMapper.selectList(Wrappers.<WmScorePackageStatus>lambdaQuery()
-					.eq(WmScorePackageStatus::getStatus, "2")
-					.eq(WmScorePackageStatus::getPackageId, wmScorePackage.getId()));
-			if (CollUtil.isNotEmpty(packageStatusList)) {
-				String finalTaskAddFlag = taskAddFlag;
-				packageStatusList.forEach(packageStatus -> {
-					WmScorePackageStatus updatePackageStatus = new WmScorePackageStatus();
-					updatePackageStatus.setId(packageStatus.getId());
-					updatePackageStatus.setTaskAddFlag(finalTaskAddFlag);
-					updatePackageStatus.setUpdateTime(LocalDateTime.now());
-					wmScorePackageStatusMapper.updateById(updatePackageStatus);
-				});
-			}
-		} else {
-			List<WmTask> userTaskList = wmTaskList.stream().filter(item ->
-					item.getTaskUserId().equals(wmTask.getTaskUserId())).collect(Collectors.toList());
-
-			if (userTaskList.size() >= scorePackageStatus.getTaskNum()) {
-				scorePackageStatus.setTaskAddFlag("0");
-			}else {
-				scorePackageStatus.setTaskAddFlag("1");
-
-			}
-			wmScorePackageStatusMapper.updateById(scorePackageStatus);
-
-			/**
-			 * 改变大包状态
-			 */
-			WmScorePackageStatus queryAll = new WmScorePackageStatus();
-			queryAll.setPackageId(wmScorePackage.getId());
-			queryAll.setStatus("2");
-			queryAll.setTaskAddFlag("0");
-			List<WmScorePackageStatus> statusAll = wmScorePackageStatusMapper.selectList(Wrappers.query(queryAll));
-			if(new BigDecimal(wmScorePackage.getUserNum())
-					.compareTo(new BigDecimal(statusAll.size())) <= 0){
-				wmScorePackage.setTaskAddFlag("0");
-			}else {
-				wmScorePackage.setTaskAddFlag("1");
-			}
+        List<WmTask> wmTaskList = wmTaskMapper.selectList(taskQueryWrapper);
+        /**
+         * 判断定量还是定额 1- 定额   2-定量
+         */
+        if (PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
+
+            int totalCount = 0;
+            for (WmTask wmtask : wmTaskList) {
+                totalCount += wmtask.getScore();
+            }
+
+            if (totalCount >= wmScorePackage.getScore()) {
+                wmScorePackage.setTaskAddFlag("0");
+                scorePackageStatus.setTaskAddFlag("0");
+            } else {
+                wmScorePackage.setTaskAddFlag("1");
+                scorePackageStatus.setTaskAddFlag("1");
+            }
+            wmScorePackageStatusMapper.updateById(scorePackageStatus);
+        } else if (PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
+            // 多人积分包处理
+            int totalCount = 0;
+            for (WmTask wmtask : wmTaskList) {
+                totalCount += wmtask.getScore();
+            }
+
+            String taskAddFlag = null;
+            if (totalCount >= wmScorePackage.getScore()) {
+                wmScorePackage.setTaskAddFlag("0");
+                taskAddFlag = "0";
+            } else {
+                wmScorePackage.setTaskAddFlag("1");
+                taskAddFlag = "1";
+            }
+
+            List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusMapper.selectList(Wrappers.<WmScorePackageStatus>lambdaQuery()
+                    .eq(WmScorePackageStatus::getStatus, "2")
+                    .eq(WmScorePackageStatus::getPackageId, wmScorePackage.getId()));
+            if (CollUtil.isNotEmpty(packageStatusList)) {
+                String finalTaskAddFlag = taskAddFlag;
+                packageStatusList.forEach(packageStatus -> {
+                    WmScorePackageStatus updatePackageStatus = new WmScorePackageStatus();
+                    updatePackageStatus.setId(packageStatus.getId());
+                    updatePackageStatus.setTaskAddFlag(finalTaskAddFlag);
+                    updatePackageStatus.setUpdateTime(LocalDateTime.now());
+                    wmScorePackageStatusMapper.updateById(updatePackageStatus);
+                });
+            }
+        } else {
+            List<WmTask> userTaskList = wmTaskList.stream().filter(item ->
+                    item.getTaskUserId().equals(wmTask.getTaskUserId())).collect(Collectors.toList());
+
+            if (userTaskList.size() >= scorePackageStatus.getTaskNum()) {
+                scorePackageStatus.setTaskAddFlag("0");
+            } else {
+                scorePackageStatus.setTaskAddFlag("1");
+
+            }
+            wmScorePackageStatusMapper.updateById(scorePackageStatus);
+
+            /**
+             * 改变大包状态
+             */
+            WmScorePackageStatus queryAll = new WmScorePackageStatus();
+            queryAll.setPackageId(wmScorePackage.getId());
+            queryAll.setStatus("2");
+            queryAll.setTaskAddFlag("0");
+            List<WmScorePackageStatus> statusAll = wmScorePackageStatusMapper.selectList(Wrappers.query(queryAll));
+            if (new BigDecimal(wmScorePackage.getUserNum())
+                    .compareTo(new BigDecimal(statusAll.size())) <= 0) {
+                wmScorePackage.setTaskAddFlag("0");
+            } else {
+                wmScorePackage.setTaskAddFlag("1");
+            }
 
 //			if (wmTaskList.size() >= wmScorePackage.getTaskNum()) {
 //				wmScorePackage.setTaskAddFlag("0");
@@ -445,177 +448,181 @@ public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageS
 //				wmScorePackage.setTaskAddFlag("1");
 //			}
 
-		}
-
-		wmScorePackageMapper.updateById(wmScorePackage);
-	}
-
-
-	@Override
-	public IPage<WmScorePackageStatus> getWmScorePackageStatusPage(Page page, WmScorePackageStatus wmScorePackageStatus) {
-		return wmScorePackageStatusMapper.getWmScorePackageStatusPage(page,wmScorePackageStatus);
-	}
-
-	/**
-	 * 获取当前部门已接单人的列表
-	 *
-	 * @param deptId 部门id
-	 * @param packageType1 积分包任务类型1
-	 * @param packageType2 积分包任务类型2
-	 * @return
-	 */
-	@Override
-	public List<Map<String, String>> getDeptReceiveUserList(String deptId, String packageType1, String packageType2) {
-		return wmScorePackageStatusMapper.getDeptReceiveUserList(deptId, packageType1, packageType2);
-	}
-
-	/**
-	 * 批量审核
-	 * @param statusBatch 批量审核
-	 * @return 审核结果
-	 */
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public Map<String, Integer> approvalStatusBatch(WmScorePackageStatusBatch statusBatch) {
-
-
-		// 获取批量操作id集合
-		List<Integer> idList =
-				StrUtil.split(statusBatch.getBatchIds(), StrUtil.COMMA)
-						.stream()
-						.map(Integer::parseInt)
-						.collect(Collectors.toList());
-
-		List<String> packageIds = this.listByIds(idList).stream().map(WmScorePackageStatus::getPackageId).distinct().collect(Collectors.toList());
-
-		Map<String, List<WmScorePackageStatus>> collect = this.list(Wrappers.<WmScorePackageStatus>lambdaQuery().in(WmScorePackageStatus::getPackageId,packageIds))
-				.stream().collect(Collectors.groupingBy(WmScorePackageStatus::getPackageId));
-
-		int operation = 0;
-		int remain = 0;
-		for (Map.Entry<String, List<WmScorePackageStatus>> entity : collect.entrySet()){
-
-			List<WmScorePackageStatus> val = entity.getValue().stream().filter(scorePackageStatus -> !StrUtil.equals("3", scorePackageStatus.getStatus())).collect(Collectors.toList());
-
-			if (val.size() > 1){
-				remain++;
-				if (WmScorePackageStatusBatch.ApprovalStatus.REJECTED.equals(statusBatch.getStatus())){
-					for (WmScorePackageStatus status : val){
-						if (idList.contains(status.getId())){
-							oneByOne(status, statusBatch.getStatus());
-						}
-					}
-				}
-			} else {
-				oneByOne(val.get(0), statusBatch.getStatus());
-				operation++;
-			}
-
-
-		}
-
-		// 封装结果实体
-		Map<String, Integer> result = new HashMap<>(2);
-		result.put("operation", operation);
-		result.put("remain", remain);
-		return result;
-	}
-
-	/**
-	 * 更新积分包审核结果
-	 *
-	 * @param pkgId 包
-	 */
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void updateSupervisionFlag(Integer pkgId) {
-		this.update(Wrappers.<WmScorePackageStatus>lambdaUpdate().eq(WmScorePackageStatus::getPackageId, pkgId).set(WmScorePackageStatus::getSupervision, true));
-	}
-
-	private Integer oneByOne(WmScorePackageStatus status, WmScorePackageStatusBatch.ApprovalStatus approvalStatus) {
-
-		int res = 0;
-
-		// 获取积分包
-		WmScorePackage wmScorePackage = wmScorePackageMapper.selectById(status.getPackageId());
-		if (!StrUtil.equals(wmScorePackage.getScorePackageStatus(), ScorePackageStatusEnum.PENDING_APPROVAL.val())) {
-			throw new BizException("积分包状态不是已申领待审批");
-		}
-
-		log.warn("开始审批,id:[{}], packageId:[{}]", status, wmScorePackage.getId());
-		//定额
-		if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage.getPackageType1())) {
-			//定额包一人一包,所以score=userscore
-			status.setUserScore(String.valueOf(wmScorePackage.getScore()));
-			status.setTaskNum(0);
-		} else if(StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage.getPackageType1())) {
-			//定额+定量(多人承接-按积分值)
-			status.setUserScore(String.valueOf(wmScorePackage.getScore()));
-			status.setTaskNum(wmScorePackage.getTaskNum());
-		} else {
-			status.setTaskNum(wmScorePackage.getTaskNum());
-			status.setUserScore(String.valueOf(wmScorePackage.getUserScore()));
-		}
-
-		status.setUpdateTime(LocalDateTime.now());
-		status.setUserId(null);
-
-		wmScorePackage.setUpdateTime(LocalDateTime.now());
-
-		switch (approvalStatus) {
-			case PASSED:
-				status.setStatus("2");
-				status.setTaskAddFlag("1");
-				//进行中
-				wmScorePackage.setScorePackageStatus("3");
-				wmScorePackage.setReceiveDate(LocalDateTime.now());
-				break;
-			case REJECTED:
-				status.setStatus("3");
-				status.setTaskAddFlag("0");//不可以新增任务
-				status.setUserId(null);
-				break;
-			default:
-				res = -1;
-
-		}
-
-		this.updateById(status);
-
-
-		int total = this.count(Wrappers.<WmScorePackageStatus>lambdaQuery()
-				.eq(WmScorePackageStatus::getPackageId, status.getPackageId())
-				.eq(WmScorePackageStatus::getStatus, "2")
-				.eq(WmScorePackageStatus::getDelFlag, CommonConstants.STATUS_NORMAL)
-				.eq(WmScorePackageStatus::getEnableFlag, CommonConstants.STATUS_NORMAL)
-		);
-
-		//有人接单成功
-		if (total >= 1) {
-			wmScorePackage.setScorePackageStatus("3");//进行中
-			if (total >= wmScorePackage.getUserNum()) {//人数已满
-				wmScorePackage.setIsReceive("1");//不允许接单
-			}
-		}
-		//没有人接单成功
-		else {
-
-			int total1 =
-					this.count(Wrappers.<WmScorePackageStatus>lambdaQuery().eq(WmScorePackageStatus::getPackageId,
-							status.getPackageId()
-					).eq(WmScorePackageStatus::getStatus, "1"));
-			if (total1 == 0) {
-				wmScorePackage.setScorePackageStatus("1");//已分派待申领
-			} else {
-				wmScorePackage.setScorePackageStatus("2");//已申领待审批
-			}
-
-		}
-
-		wmScorePackageMapper.updateById(wmScorePackage);
-
-		return res;
-	}
+        }
+
+        wmScorePackageMapper.updateById(wmScorePackage);
+    }
+
+
+    @Override
+    public IPage<WmScorePackageStatus> getWmScorePackageStatusPage(Page page, WmScorePackageStatus wmScorePackageStatus) {
+        return wmScorePackageStatusMapper.getWmScorePackageStatusPage(page, wmScorePackageStatus);
+    }
+
+    /**
+     * 获取当前部门已接单人的列表
+     *
+     * @param deptId       部门id
+     * @param packageType1 积分包任务类型1
+     * @param packageType2 积分包任务类型2
+     * @return
+     */
+    @Override
+    public List<Map<String, String>> getDeptReceiveUserList(String deptId, String packageType1, String packageType2) {
+        return wmScorePackageStatusMapper.getDeptReceiveUserList(deptId, packageType1, packageType2);
+    }
+
+    /**
+     * 批量审核
+     *
+     * @param statusBatch 批量审核
+     * @return 审核结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Integer> approvalStatusBatch(WmScorePackageStatusBatch statusBatch) {
+
+
+        // 获取批量操作id集合
+        List<Integer> idList =
+                StrUtil.split(statusBatch.getBatchIds(), StrUtil.COMMA)
+                        .stream()
+                        .map(Integer::parseInt)
+                        .collect(Collectors.toList());
+
+        List<String> packageIds = this.listByIds(idList).stream().map(WmScorePackageStatus::getPackageId).distinct().collect(Collectors.toList());
+
+        Map<String, List<WmScorePackageStatus>> collect = this.list(Wrappers.<WmScorePackageStatus>lambdaQuery().in(WmScorePackageStatus::getPackageId, packageIds))
+                .stream().collect(Collectors.groupingBy(WmScorePackageStatus::getPackageId));
+
+        int operation = 0;
+        int remain = 0;
+        for (Map.Entry<String, List<WmScorePackageStatus>> entity : collect.entrySet()) {
+
+            List<WmScorePackageStatus> val = entity.getValue().stream().filter(scorePackageStatus -> !StrUtil.equals("3", scorePackageStatus.getStatus())).collect(Collectors.toList());
+
+            if (val.size() > 1) {
+                remain++;
+                if (WmScorePackageStatusBatch.ApprovalStatus.REJECTED.equals(statusBatch.getStatus())) {
+                    for (WmScorePackageStatus status : val) {
+                        if (idList.contains(status.getId())) {
+                            oneByOne(status, statusBatch.getStatus());
+                        }
+                    }
+                }
+            } else {
+                oneByOne(val.get(0), statusBatch.getStatus());
+                operation++;
+            }
+
+
+        }
+
+        // 封装结果实体
+        Map<String, Integer> result = new HashMap<>(2);
+        result.put("operation", operation);
+        result.put("remain", remain);
+        return result;
+    }
+
+    /**
+     * 更新积分包审核结果
+     *
+     * @param pkgId 包
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateSupervisionFlag(Integer pkgId) {
+        this.update(Wrappers.<WmScorePackageStatus>lambdaUpdate()
+                .eq(WmScorePackageStatus::getSupervision, false)
+                .eq(WmScorePackageStatus::getPackageId, pkgId)
+				.set(WmScorePackageStatus::getSupervision, true));
+    }
+
+    private Integer oneByOne(WmScorePackageStatus status, WmScorePackageStatusBatch.ApprovalStatus approvalStatus) {
+
+        int res = 0;
+
+        // 获取积分包
+        WmScorePackage wmScorePackage = wmScorePackageMapper.selectById(status.getPackageId());
+        if (!StrUtil.equals(wmScorePackage.getScorePackageStatus(), ScorePackageStatusEnum.PENDING_APPROVAL.val())) {
+            throw new BizException("积分包状态不是已申领待审批");
+        }
+
+        log.warn("开始审批,id:[{}], packageId:[{}]", status, wmScorePackage.getId());
+        // 定额
+        if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage.getPackageType1())) {
+            // 定额包一人一包,所以score=userscore
+            status.setUserScore(String.valueOf(wmScorePackage.getScore()));
+            status.setTaskNum(0);
+        } else if (StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage.getPackageType1())) {
+            // 定额+定量(多人承接-按积分值)
+            status.setUserScore(String.valueOf(wmScorePackage.getScore()));
+            status.setTaskNum(wmScorePackage.getTaskNum());
+        } else {
+            status.setTaskNum(wmScorePackage.getTaskNum());
+            status.setUserScore(String.valueOf(wmScorePackage.getUserScore()));
+        }
+
+        status.setUpdateTime(LocalDateTime.now());
+        status.setUserId(null);
+
+        wmScorePackage.setUpdateTime(LocalDateTime.now());
+
+        switch (approvalStatus) {
+            case PASSED:
+                status.setStatus("2");
+                status.setTaskAddFlag("1");
+                // 进行中
+                wmScorePackage.setScorePackageStatus("3");
+                wmScorePackage.setReceiveDate(LocalDateTime.now());
+                break;
+            case REJECTED:
+                status.setStatus("3");
+                status.setTaskAddFlag("0");// 不可以新增任务
+                status.setUserId(null);
+                break;
+            default:
+                res = -1;
+
+        }
+
+        this.updateById(status);
+
+
+        int total = this.count(Wrappers.<WmScorePackageStatus>lambdaQuery()
+                .eq(WmScorePackageStatus::getPackageId, status.getPackageId())
+                .eq(WmScorePackageStatus::getStatus, "2")
+                .eq(WmScorePackageStatus::getDelFlag, CommonConstants.STATUS_NORMAL)
+                .eq(WmScorePackageStatus::getEnableFlag, CommonConstants.STATUS_NORMAL)
+        );
+
+        // 有人接单成功
+        if (total >= 1) {
+            wmScorePackage.setScorePackageStatus("3");// 进行中
+            if (total >= wmScorePackage.getUserNum()) {// 人数已满
+                wmScorePackage.setIsReceive("1");// 不允许接单
+            }
+        }
+        // 没有人接单成功
+        else {
+
+            int total1 =
+                    this.count(Wrappers.<WmScorePackageStatus>lambdaQuery().eq(WmScorePackageStatus::getPackageId,
+                            status.getPackageId()
+                    ).eq(WmScorePackageStatus::getStatus, "1"));
+            if (total1 == 0) {
+                wmScorePackage.setScorePackageStatus("1");// 已分派待申领
+            } else {
+                wmScorePackage.setScorePackageStatus("2");// 已申领待审批
+            }
+
+        }
+
+        wmScorePackageMapper.updateById(wmScorePackage);
+
+        return res;
+    }
 
 
 }