|
@@ -19,6 +19,7 @@ package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
+import cn.hutool.core.util.RandomUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.alibaba.csp.sentinel.util.StringUtil;
|
|
import com.alibaba.csp.sentinel.util.StringUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
@@ -2512,10 +2513,6 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
|
|
if (!ScorePackageStatusEnum.TO_BE_SETTLED.val().equals(scorePackage.getScorePackageStatus())) {
|
|
if (!ScorePackageStatusEnum.TO_BE_SETTLED.val().equals(scorePackage.getScorePackageStatus())) {
|
|
throw new RuntimeException("只有“已完成待结算”的积分包可以拆包");
|
|
throw new RuntimeException("只有“已完成待结算”的积分包可以拆包");
|
|
}
|
|
}
|
|
- // 业务校验2
|
|
|
|
- if (unpackDTO.getNewPackageScore().compareTo(scorePackage.getScore()) >= 0) {
|
|
|
|
- throw new RuntimeException("“预拆包分值”不能大于“原积分包值”");
|
|
|
|
- }
|
|
|
|
// 原审核通过的任务列表
|
|
// 原审核通过的任务列表
|
|
QueryWrapper<WmTask> queryWrapper = Wrappers.query();
|
|
QueryWrapper<WmTask> queryWrapper = Wrappers.query();
|
|
queryWrapper.eq("task_status", TaskStatusEnum.APPROVED.val());
|
|
queryWrapper.eq("task_status", TaskStatusEnum.APPROVED.val());
|
|
@@ -2540,9 +2537,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
|
|
if (!unpackDTO.getSelectTaskScore().equals(selectTaskScore)) {
|
|
if (!unpackDTO.getSelectTaskScore().equals(selectTaskScore)) {
|
|
throw new RuntimeException("已选任务分值不正确");
|
|
throw new RuntimeException("已选任务分值不正确");
|
|
}
|
|
}
|
|
- // 业务校验3
|
|
|
|
- if (selectTaskScore < unpackDTO.getNewPackageScore()) {
|
|
|
|
- throw new RuntimeException("已选任务分值大于预拆包分值,才能拆包");
|
|
|
|
|
|
+ // 业务校验2
|
|
|
|
+ if (selectTaskScore >= scorePackage.getScore()) {
|
|
|
|
+ throw new RuntimeException("“已选总任务积分”必须小于“总积分包值”");
|
|
}
|
|
}
|
|
|
|
|
|
// 剩余任务
|
|
// 剩余任务
|
|
@@ -2550,22 +2547,10 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
|
|
.filter(task -> !unpackDTO.getSelectTaskIds().contains(task.getId())).collect(Collectors.toList());
|
|
.filter(task -> !unpackDTO.getSelectTaskIds().contains(task.getId())).collect(Collectors.toList());
|
|
// 剩余任务分值
|
|
// 剩余任务分值
|
|
int remainTaskScore = remainTaskList.stream().mapToInt(WmTask::getScore).sum();
|
|
int remainTaskScore = remainTaskList.stream().mapToInt(WmTask::getScore).sum();
|
|
- if (!unpackDTO.getRemainTaskScore().equals(remainTaskScore)) {
|
|
|
|
- throw new RuntimeException("剩余任务分值不正确");
|
|
|
|
- }
|
|
|
|
|
|
|
|
- // 拆包后的原积分包包值:
|
|
|
|
- // 剩余任务分值 > 剩余积分包值,取剩余积分包值
|
|
|
|
- // 剩余任务分值 < 剩余积分包值,取剩任务分值
|
|
|
|
- int remainPackageScore;
|
|
|
|
- int tempRemainPackageScore = scorePackage.getScore() - unpackDTO.getNewPackageScore();
|
|
|
|
- if (remainTaskScore > tempRemainPackageScore) {
|
|
|
|
- remainPackageScore = tempRemainPackageScore;
|
|
|
|
- } else {
|
|
|
|
- remainPackageScore = remainTaskScore;
|
|
|
|
- }
|
|
|
|
- if (!unpackDTO.getRemainPackageScore().equals(remainPackageScore)) {
|
|
|
|
- throw new RuntimeException("剩余积分包值不正确");
|
|
|
|
|
|
+ // 拆包后的原积分包包值:取剩任务分值
|
|
|
|
+ if (!unpackDTO.getRemainPackageScore().equals(remainTaskScore)) {
|
|
|
|
+ throw new RuntimeException("原积分包剩余积分包值不正确");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -2574,10 +2559,10 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
|
|
// 创建新包
|
|
// 创建新包
|
|
String newScorePackageName = null;
|
|
String newScorePackageName = null;
|
|
// 校验积分包名称是否存在
|
|
// 校验积分包名称是否存在
|
|
- for (int i = 0; i < 9999; i++) {
|
|
|
|
|
|
+ for (int i = 0; i < 10; i++) {
|
|
|
|
+ newScorePackageName = String.format("%s-%s", scorePackage.getScorePackageName(), RandomUtil.randomNumbers(3));
|
|
int newScorePackageCount = this.count(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getScorePackageName, newScorePackageName));
|
|
int newScorePackageCount = this.count(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getScorePackageName, newScorePackageName));
|
|
if (newScorePackageCount <= 0) {
|
|
if (newScorePackageCount <= 0) {
|
|
- newScorePackageName = String.format("%s-%s", scorePackage.getScorePackageName(), i + 1);
|
|
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -2588,20 +2573,21 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
|
|
newScorePackage.setCreateTime(now);
|
|
newScorePackage.setCreateTime(now);
|
|
newScorePackage.setCreateUser(operatorId);
|
|
newScorePackage.setCreateUser(operatorId);
|
|
newScorePackage.setReceiveDate(now);
|
|
newScorePackage.setReceiveDate(now);
|
|
- newScorePackage.setScore(unpackDTO.getNewPackageScore());
|
|
|
|
|
|
+ newScorePackage.setScore(unpackDTO.getSelectTaskScore());
|
|
newScorePackage.setScorePackageName(newScorePackageName);
|
|
newScorePackage.setScorePackageName(newScorePackageName);
|
|
newScorePackage.setRemark(String.format("拆包自原积分包id=%s", unpackDTO.getScorePackageId()));
|
|
newScorePackage.setRemark(String.format("拆包自原积分包id=%s", unpackDTO.getScorePackageId()));
|
|
log.info("创建新积分包参数:{}", newScorePackage);
|
|
log.info("创建新积分包参数:{}", newScorePackage);
|
|
this.save(newScorePackage);
|
|
this.save(newScorePackage);
|
|
|
|
|
|
// 更新原积分包包值
|
|
// 更新原积分包包值
|
|
|
|
+ int oldScorePackageScore = scorePackage.getScore() - selectTaskScore;
|
|
WmScorePackage updateOldPackage = new WmScorePackage();
|
|
WmScorePackage updateOldPackage = new WmScorePackage();
|
|
updateOldPackage.setId(unpackDTO.getScorePackageId());
|
|
updateOldPackage.setId(unpackDTO.getScorePackageId());
|
|
- updateOldPackage.setScore(remainPackageScore);
|
|
|
|
|
|
+ updateOldPackage.setScore(remainTaskScore);
|
|
updateOldPackage.setUpdateTime(now);
|
|
updateOldPackage.setUpdateTime(now);
|
|
updateOldPackage.setUpdateUser(operatorId);
|
|
updateOldPackage.setUpdateUser(operatorId);
|
|
updateOldPackage.setRemark(String.format("%s; 原积分包值%s更新为%s",
|
|
updateOldPackage.setRemark(String.format("%s; 原积分包值%s更新为%s",
|
|
- StrUtil.emptyIfNull(updateOldPackage.getRemark()), scorePackage.getScore(), remainPackageScore));
|
|
|
|
|
|
+ StrUtil.emptyIfNull(updateOldPackage.getRemark()), scorePackage.getScore(), remainTaskScore));
|
|
log.info("更新原积分包参数:{}", updateOldPackage);
|
|
log.info("更新原积分包参数:{}", updateOldPackage);
|
|
this.updateById(updateOldPackage);
|
|
this.updateById(updateOldPackage);
|
|
|
|
|