|
@@ -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;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
}
|