|
@@ -3,12 +3,16 @@ package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
|
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionPercentRule;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTask;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTask;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTaskContent;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTaskContent;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTaskType;
|
|
import com.qunzhixinxi.hnqz.admin.entity.WmTaskType;
|
|
import com.qunzhixinxi.hnqz.admin.entity.dto.DeptTaskDTO;
|
|
import com.qunzhixinxi.hnqz.admin.entity.dto.DeptTaskDTO;
|
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
|
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
|
|
import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
|
|
import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
|
|
import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
|
|
import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmDeptTaskService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmDeptTaskService;
|
|
@@ -26,6 +30,7 @@ import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
@@ -59,25 +64,45 @@ public class WmDeptTaskServiceImpl implements WmDeptTaskService {
|
|
public Boolean saveEntTaskForTaskType61(DeptTaskDTO.TaskType61 params) {
|
|
public Boolean saveEntTaskForTaskType61(DeptTaskDTO.TaskType61 params) {
|
|
String taskTypeId = "61";
|
|
String taskTypeId = "61";
|
|
|
|
|
|
-// // 查询任务类型启用状态
|
|
|
|
-// List<WmTaskSubmissionPercentRule> rules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
|
|
|
|
-// .eq(WmTaskSubmissionPercentRule::getDeptId, user.getDeptId())
|
|
|
|
-// .eq(WmTaskSubmissionPercentRule::getSubCategory, UpmsType.TaskSubCategory2.TASK_TYPE_CONFIG));
|
|
|
|
-// if (CollUtil.isEmpty(rules)) {
|
|
|
|
-// throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
-// }
|
|
|
|
-// String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
|
|
|
|
-// if (!ArrayUtil.contains(taskTypeIds, "61")) {
|
|
|
|
-// throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
-// }
|
|
|
|
|
|
+ // 校验任务类型启用状态
|
|
|
|
+ List<WmTaskSubmissionPercentRule> rules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
|
|
|
|
+ .eq(WmTaskSubmissionPercentRule::getDeptId, SecurityUtils.getUser().getDeptId())
|
|
|
|
+ .eq(WmTaskSubmissionPercentRule::getSubCategory, UpmsType.TaskSubCategory2.TASK_TYPE_CONFIG));
|
|
|
|
+ if (CollUtil.isEmpty(rules)) {
|
|
|
|
+ throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
+ }
|
|
|
|
+ String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
|
|
|
|
+ if (!ArrayUtil.contains(taskTypeIds, "61")) {
|
|
|
|
+ throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
// 查询积分包
|
|
// 查询积分包
|
|
WmScorePackage scorePackage = wmScorePackageService.getById(params.getPackageId());
|
|
WmScorePackage scorePackage = wmScorePackageService.getById(params.getPackageId());
|
|
|
|
|
|
|
|
+ // 校验是否超过可分配积分值
|
|
if (params.getScore() > scorePackage.getKfpjf()) {
|
|
if (params.getScore() > scorePackage.getKfpjf()) {
|
|
throw new RuntimeException("可分配积分不足!");
|
|
throw new RuntimeException("可分配积分不足!");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 校验是否超过积分包企业任务上限
|
|
|
|
+ List<WmTask> queryTaskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery()
|
|
|
|
+ .eq(WmTask::getScorePackageId, params.getPackageId())
|
|
|
|
+ .eq(WmTask::getEnableFlag, EnableEnum.ENABLE.val())
|
|
|
|
+ .eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
|
|
|
|
+ .eq(WmTask::getTaskStatus, TaskStatusEnum.APPROVED.val()));
|
|
|
|
+
|
|
|
|
+ int totalScoreSum = 0;
|
|
|
|
+ totalScoreSum += params.getScore();
|
|
|
|
+ if (CollUtil.isNotEmpty(queryTaskList)) {
|
|
|
|
+ totalScoreSum += queryTaskList.stream().mapToInt(WmTask::getScore).sum();
|
|
|
|
+ }
|
|
|
|
+ if (BigDecimal.valueOf(totalScoreSum)
|
|
|
|
+ .compareTo(BigDecimal.valueOf(scorePackage.getScore())
|
|
|
|
+ .multiply(scorePackage.getEntTaskLimit()).divide(new BigDecimal("100"))) > 0) {
|
|
|
|
+ throw new RuntimeException("已超过积分包的企业任务上限!");
|
|
|
|
+ }
|
|
|
|
+
|
|
// 保存taskContent
|
|
// 保存taskContent
|
|
WmTaskContent taskContent = new WmTaskContent();
|
|
WmTaskContent taskContent = new WmTaskContent();
|
|
// 任务类型
|
|
// 任务类型
|
|
@@ -118,17 +143,17 @@ public class WmDeptTaskServiceImpl implements WmDeptTaskService {
|
|
public Boolean saveEntTaskForTaskType62(DeptTaskDTO.TaskType62 params) {
|
|
public Boolean saveEntTaskForTaskType62(DeptTaskDTO.TaskType62 params) {
|
|
String taskTypeId = "62";
|
|
String taskTypeId = "62";
|
|
|
|
|
|
-// // 查询任务类型启用状态
|
|
|
|
-// List<WmTaskSubmissionPercentRule> rules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
|
|
|
|
-// .eq(WmTaskSubmissionPercentRule::getDeptId, user.getDeptId())
|
|
|
|
-// .eq(WmTaskSubmissionPercentRule::getSubCategory, UpmsType.TaskSubCategory2.TASK_TYPE_CONFIG));
|
|
|
|
-// if (CollUtil.isEmpty(rules)) {
|
|
|
|
-// throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
-// }
|
|
|
|
-// String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
|
|
|
|
-// if (!ArrayUtil.contains(taskTypeIds, "61")) {
|
|
|
|
-// throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
-// }
|
|
|
|
|
|
+ // 查询任务类型启用状态
|
|
|
|
+ List<WmTaskSubmissionPercentRule> rules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
|
|
|
|
+ .eq(WmTaskSubmissionPercentRule::getDeptId, SecurityUtils.getUser().getDeptId())
|
|
|
|
+ .eq(WmTaskSubmissionPercentRule::getSubCategory, UpmsType.TaskSubCategory2.TASK_TYPE_CONFIG));
|
|
|
|
+ if (CollUtil.isEmpty(rules)) {
|
|
|
|
+ throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
+ }
|
|
|
|
+ String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
|
|
|
|
+ if (!ArrayUtil.contains(taskTypeIds, "61")) {
|
|
|
|
+ throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
+ }
|
|
|
|
|
|
// 查询积分包
|
|
// 查询积分包
|
|
WmScorePackage scorePackage = wmScorePackageService.getById(params.getPackageId());
|
|
WmScorePackage scorePackage = wmScorePackageService.getById(params.getPackageId());
|
|
@@ -139,10 +164,29 @@ public class WmDeptTaskServiceImpl implements WmDeptTaskService {
|
|
wmTaskType.setTaskTypeName(queryTaskType.getTaskTypeName());
|
|
wmTaskType.setTaskTypeName(queryTaskType.getTaskTypeName());
|
|
int score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType);
|
|
int score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType);
|
|
|
|
|
|
|
|
+ // 校验是否超过可分配积分值
|
|
if (score > scorePackage.getKfpjf()) {
|
|
if (score > scorePackage.getKfpjf()) {
|
|
throw new RuntimeException("可分配积分不足!");
|
|
throw new RuntimeException("可分配积分不足!");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 校验是否超过积分包企业任务上限
|
|
|
|
+ List<WmTask> queryTaskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery()
|
|
|
|
+ .eq(WmTask::getScorePackageId, params.getPackageId())
|
|
|
|
+ .eq(WmTask::getEnableFlag, EnableEnum.ENABLE.val())
|
|
|
|
+ .eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
|
|
|
|
+ .eq(WmTask::getTaskStatus, TaskStatusEnum.APPROVED.val()));
|
|
|
|
+
|
|
|
|
+ int totalScoreSum = 0;
|
|
|
|
+ totalScoreSum += score;
|
|
|
|
+ if (CollUtil.isNotEmpty(queryTaskList)) {
|
|
|
|
+ totalScoreSum += queryTaskList.stream().mapToInt(WmTask::getScore).sum();
|
|
|
|
+ }
|
|
|
|
+ if (BigDecimal.valueOf(totalScoreSum)
|
|
|
|
+ .compareTo(BigDecimal.valueOf(scorePackage.getScore())
|
|
|
|
+ .multiply(scorePackage.getEntTaskLimit()).divide(new BigDecimal("100"))) > 0) {
|
|
|
|
+ throw new RuntimeException("已超过积分包的企业任务上限!");
|
|
|
|
+ }
|
|
|
|
+
|
|
// 保存taskContent
|
|
// 保存taskContent
|
|
WmTaskContent taskContent = new WmTaskContent();
|
|
WmTaskContent taskContent = new WmTaskContent();
|
|
// 任务类型
|
|
// 任务类型
|
|
@@ -190,17 +234,17 @@ public class WmDeptTaskServiceImpl implements WmDeptTaskService {
|
|
public Boolean saveEntTaskForTaskType63(DeptTaskDTO.TaskType63 params) {
|
|
public Boolean saveEntTaskForTaskType63(DeptTaskDTO.TaskType63 params) {
|
|
String taskTypeId = "63";
|
|
String taskTypeId = "63";
|
|
|
|
|
|
-// // 查询任务类型启用状态
|
|
|
|
-// List<WmTaskSubmissionPercentRule> rules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
|
|
|
|
-// .eq(WmTaskSubmissionPercentRule::getDeptId, user.getDeptId())
|
|
|
|
-// .eq(WmTaskSubmissionPercentRule::getSubCategory, UpmsType.TaskSubCategory2.TASK_TYPE_CONFIG));
|
|
|
|
-// if (CollUtil.isEmpty(rules)) {
|
|
|
|
-// throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
-// }
|
|
|
|
-// String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
|
|
|
|
-// if (!ArrayUtil.contains(taskTypeIds, "61")) {
|
|
|
|
-// throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
-// }
|
|
|
|
|
|
+ // 查询任务类型启用状态
|
|
|
|
+ List<WmTaskSubmissionPercentRule> rules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
|
|
|
|
+ .eq(WmTaskSubmissionPercentRule::getDeptId, SecurityUtils.getUser().getDeptId())
|
|
|
|
+ .eq(WmTaskSubmissionPercentRule::getSubCategory, UpmsType.TaskSubCategory2.TASK_TYPE_CONFIG));
|
|
|
|
+ if (CollUtil.isEmpty(rules)) {
|
|
|
|
+ throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
+ }
|
|
|
|
+ String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
|
|
|
|
+ if (!ArrayUtil.contains(taskTypeIds, "61")) {
|
|
|
|
+ throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
+ }
|
|
|
|
|
|
// 查询积分包
|
|
// 查询积分包
|
|
WmScorePackage scorePackage = wmScorePackageService.getById(params.getPackageId());
|
|
WmScorePackage scorePackage = wmScorePackageService.getById(params.getPackageId());
|
|
@@ -211,10 +255,29 @@ public class WmDeptTaskServiceImpl implements WmDeptTaskService {
|
|
wmTaskType.setTaskTypeName(queryTaskType.getTaskTypeName());
|
|
wmTaskType.setTaskTypeName(queryTaskType.getTaskTypeName());
|
|
int score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType);
|
|
int score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType);
|
|
|
|
|
|
|
|
+ // 校验是否超过可分配积分值
|
|
if (score > scorePackage.getKfpjf()) {
|
|
if (score > scorePackage.getKfpjf()) {
|
|
throw new RuntimeException("可分配积分不足!");
|
|
throw new RuntimeException("可分配积分不足!");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 校验是否超过积分包企业任务上限
|
|
|
|
+ List<WmTask> queryTaskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery()
|
|
|
|
+ .eq(WmTask::getScorePackageId, params.getPackageId())
|
|
|
|
+ .eq(WmTask::getEnableFlag, EnableEnum.ENABLE.val())
|
|
|
|
+ .eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
|
|
|
|
+ .eq(WmTask::getTaskStatus, TaskStatusEnum.APPROVED.val()));
|
|
|
|
+
|
|
|
|
+ int totalScoreSum = 0;
|
|
|
|
+ totalScoreSum += score;
|
|
|
|
+ if (CollUtil.isNotEmpty(queryTaskList)) {
|
|
|
|
+ totalScoreSum += queryTaskList.stream().mapToInt(WmTask::getScore).sum();
|
|
|
|
+ }
|
|
|
|
+ if (BigDecimal.valueOf(totalScoreSum)
|
|
|
|
+ .compareTo(BigDecimal.valueOf(scorePackage.getScore())
|
|
|
|
+ .multiply(scorePackage.getEntTaskLimit()).divide(new BigDecimal("100"))) > 0) {
|
|
|
|
+ throw new RuntimeException("已超过积分包的企业任务上限!");
|
|
|
|
+ }
|
|
|
|
+
|
|
// 保存taskContent
|
|
// 保存taskContent
|
|
WmTaskContent taskContent = new WmTaskContent();
|
|
WmTaskContent taskContent = new WmTaskContent();
|
|
// 任务类型
|
|
// 任务类型
|
|
@@ -246,7 +309,7 @@ public class WmDeptTaskServiceImpl implements WmDeptTaskService {
|
|
log.info("保存taskContent参数:{}", taskContent);
|
|
log.info("保存taskContent参数:{}", taskContent);
|
|
wmTaskContentService.save(taskContent);
|
|
wmTaskContentService.save(taskContent);
|
|
|
|
|
|
- // 保存企业任务通用方法 TODO 初始化企业任务类型
|
|
|
|
|
|
+ // 保存企业任务通用方法
|
|
this.saveEntTaskCommon(taskTypeId, taskContent, score, scorePackage);
|
|
this.saveEntTaskCommon(taskTypeId, taskContent, score, scorePackage);
|
|
|
|
|
|
return Boolean.TRUE;
|
|
return Boolean.TRUE;
|