Преглед изворни кода

Merge branch 'feat-20221222-tasktypepercentlimit' into temp-pre

李学松 пре 2 година
родитељ
комит
d1d0228674

+ 1 - 0
db/v2.0/221222.sql

@@ -5,6 +5,7 @@ create table wm_task_sub_percent_rule
         primary key,
     dept_id     int(20)                            not null comment '企业id',
     sub_cate    varchar(32)                        not null comment '次级分类',
+    batch_id    varchar(32)                        null comment '批量保存编号',
     sub_rule    json                               null comment '规则',
     opt_flag    varchar(32)                        not null comment '操作标记',
     create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',

+ 6 - 1
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmTaskSubmissionPercentRule.java

@@ -46,12 +46,17 @@ public class WmTaskSubmissionPercentRule extends Model<WmTaskSubmissionPercentRu
 	@NotNull(message = "deptId不能为空")
 	private Integer deptId;
 
+	/**
+	 * 批量保存编号
+	 */
+	private String batchId;
+
 	/**
 	 * 二级分类
 	 */
 	@NotNull(message = "subCategory不能为空")
 	@TableField(value = "sub_cate")
-	private UpmsType.TaskSubCategory subCategory;
+	private UpmsType.TaskSubCategory2 subCategory;
 
 	/**
 	 * 任务规则

+ 100 - 26
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaskSubmissionPercentRuleController.java

@@ -2,15 +2,24 @@ package com.qunzhixinxi.hnqz.admin.controller;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionPercentRule;
+import com.qunzhixinxi.hnqz.admin.entity.WmTaskType;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskSubmissionPercentRuleService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
 import com.qunzhixinxi.hnqz.common.core.constant.enums.CommonFlag;
 import com.qunzhixinxi.hnqz.common.core.util.R;
+import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.RandomStringUtils;
 import org.springframework.http.MediaType;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 任务提交百分比规则
@@ -25,66 +34,131 @@ public class WmTaskSubmissionPercentRuleController {
 
 	private final WmTaskSubmissionPercentRuleService wmTaskSubmissionPercentRuleService;
 
+	private final WmTaskTypeService wmTaskTypeService;
+
+	/**
+	 * 根据batchId查询单个限制规则
+	 *
+	 * @param batchId
+	 * @return
+	 */
+	@GetMapping("/{batchId}")
+	public R<List<WmTaskSubmissionPercentRule>> listDeptRules(@PathVariable("batchId") String batchId) {
+
+		List<WmTaskSubmissionPercentRule> percentRules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
+				.eq(WmTaskSubmissionPercentRule::getBatchId, batchId)
+				.eq(WmTaskSubmissionPercentRule::getOptFlag, CommonFlag.OptFlag.OK));
+
+		return R.ok(percentRules);
+	}
+
 	/**
-	 * 获取企业的限制规则
+	 * 根据deptId查询企业的限制规则列表
 	 *
 	 * @param deptId
 	 * @return
 	 */
-	@GetMapping
-	public R<List<WmTaskSubmissionPercentRule>> listDeptRules(@RequestParam(value = "deptId") Integer deptId) {
-		return R.ok(wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
+	@GetMapping("/list")
+	public R<List<Map<String, Object>>> listDeptBriefRule(@RequestParam(value = "deptId") Integer deptId) {
+		List<WmTaskSubmissionPercentRule> percentRules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
 				.eq(WmTaskSubmissionPercentRule::getDeptId, deptId)
-				.eq(WmTaskSubmissionPercentRule::getOptFlag, CommonFlag.OptFlag.OK)));
+				.eq(WmTaskSubmissionPercentRule::getOptFlag, CommonFlag.OptFlag.OK));
+
+		Map<String, List<WmTaskSubmissionPercentRule>> collect = percentRules.stream().collect(Collectors.groupingBy(WmTaskSubmissionPercentRule::getBatchId));
+
+		// 查询taskType
+		List<WmTaskType> taskTypeList = wmTaskTypeService.list(Wrappers.<WmTaskType>lambdaQuery()
+				.eq(WmTaskType::getTaskTypeLevel, "1")
+				.eq(WmTaskType::getDelFlag, "0")
+				.eq(WmTaskType::getEnableFlag, "0"));
+		// taskType通过id分组(key为parentId,value为taskTypeId的set)
+		Map<String, String> taskTypeIdMap = taskTypeList.stream()
+				.collect(Collectors.toMap(WmTaskType::getId, WmTaskType::getTaskTypeName));
+
+		List<Map<String, Object>> result = new ArrayList<>();
+
+		collect.forEach((batchId, rules) -> {
+			// 获取该分组下所有taskTypeId
+			List<String> allTaskTypeIds = rules.stream()
+					.flatMap(percentRule -> Arrays.stream(percentRule.getRule().getTaskTypeIds()))
+					.collect(Collectors.toList());
+
+			List<String> allTaskTypeNames = allTaskTypeIds.stream().map(taskTypeIdMap::get).collect(Collectors.toList());
+
+			Map<String, Object> ruleMap = new HashMap<>();
+			ruleMap.put("taskTypeNames", allTaskTypeNames);
+			WmTaskSubmissionPercentRule.PercentRule rule = rules.get(0).getRule();
+			ruleMap.put("startScore", rule.getStartScore());
+			ruleMap.put("limitPercent", rule.getLimitPercent());
+			ruleMap.put("batchId", batchId);
+			result.add(ruleMap);
+		});
+
+		return R.ok(result);
 	}
 
 	/**
 	 * 保存
 	 *
-	 * @param rule
+	 * @param rules
 	 * @return
 	 */
+	@SysLog("保存百分比规则")
 	@PostMapping
-	public R<Boolean> save(@Validated @RequestBody WmTaskSubmissionPercentRule rule) {
-		// 默认正常
-		rule.setOptFlag(CommonFlag.OptFlag.OK);
+	public R<Boolean> save(@Validated @RequestBody List<WmTaskSubmissionPercentRule> rules) {
+
+		String batchId = RandomStringUtils.randomAlphabetic(16);
+		rules.forEach(rule -> {
+			// 默认正常
+			rule.setOptFlag(CommonFlag.OptFlag.OK);
+			// 批量保存编号
+			rule.setBatchId(batchId);
+		});
 
-		return R.ok(wmTaskSubmissionPercentRuleService.save(rule));
+		return R.ok(wmTaskSubmissionPercentRuleService.saveBatch(rules));
 	}
 
 	/**
 	 * 更新
 	 *
-	 * @param rule
+	 * @param rules
 	 * @return
 	 */
+	@SysLog("更新百分比规则")
 	@PutMapping
-	public R<Boolean> update(@RequestBody WmTaskSubmissionPercentRule rule) {
-		if (rule.getRuleId() == null) {
-			return R.failed("ruleId不能为空");
-		}
+	public R<Boolean> update(@RequestBody List<WmTaskSubmissionPercentRule> rules) {
 
-		WmTaskSubmissionPercentRule updateRule = new WmTaskSubmissionPercentRule();
-		updateRule.setRuleId(rule.getRuleId());
-		updateRule.setRule(rule.getRule());
+		for (WmTaskSubmissionPercentRule rule : rules) {
+			if (rule.getBatchId() == null) {
+				return R.failed("batchId不能为空");
+			}
+		}
 
-		return R.ok(wmTaskSubmissionPercentRuleService.updateById(rule));
+		return R.ok(wmTaskSubmissionPercentRuleService.updateRule(rules));
 	}
 
 	/**
 	 * 删除规则(逻辑删除)
 	 *
-	 * @param ruleId
+	 * @param batchId
 	 * @return
 	 */
-	@DeleteMapping("/{ruleId}")
-	public R<Boolean> delete(@PathVariable("ruleId") Integer ruleId) {
+	@SysLog("删除百分比规则")
+	@DeleteMapping("/{batchId}")
+	public R<Boolean> delete(@PathVariable("batchId") String batchId) {
+
+		List<WmTaskSubmissionPercentRule> rules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
+				.eq(WmTaskSubmissionPercentRule::getBatchId, batchId));
 
-		WmTaskSubmissionPercentRule rule = new WmTaskSubmissionPercentRule();
-		rule.setRuleId(ruleId);
-		rule.setOptFlag(CommonFlag.OptFlag.DELETED);
+		List<WmTaskSubmissionPercentRule> updateRules = new ArrayList<>();
+		rules.forEach(percentRule -> {
+			WmTaskSubmissionPercentRule rule = new WmTaskSubmissionPercentRule();
+			rule.setRuleId(percentRule.getRuleId());
+			rule.setOptFlag(CommonFlag.OptFlag.DELETED);
+			updateRules.add(rule);
+		});
 
-		return R.ok(wmTaskSubmissionPercentRuleService.updateById(rule));
+		return R.ok(wmTaskSubmissionPercentRuleService.updateBatchById(updateRules));
 	}
 
 }

+ 20 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskSubmissionPercentRuleService.java

@@ -2,6 +2,10 @@ package com.qunzhixinxi.hnqz.admin.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionPercentRule;
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+
+import java.util.List;
 
 /**
  * 任务提交百分比规则
@@ -10,4 +14,20 @@ import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionPercentRule;
  * @date 2022/12/22 15:32
  */
 public interface WmTaskSubmissionPercentRuleService extends IService<WmTaskSubmissionPercentRule> {
+
+	/**
+	 * 校验任务百分比限制规则(达到要求的积分包,【任务配置】-【百分比限制】所选的任务总完成积分值不得大于积分包值*百分比)
+	 *
+	 * @param scorePackage
+	 * @return
+	 */
+	R<?> checkPercentRule(WmScorePackage scorePackage, Integer deptId);
+
+	/**
+	 * 更新
+	 *
+	 * @param rules
+	 * @return
+	 */
+	Boolean updateRule(List<WmTaskSubmissionPercentRule> rules);
 }

+ 24 - 16
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskContentServiceImpl.java

@@ -45,6 +45,7 @@ import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskSubmissionPercentRuleService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskSubmissionRuleService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeSubCategoryService;
@@ -91,6 +92,7 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 	private final SysPublicParamService sysPublicParamService;
 	private final WmTaskTypeSubCategoryService taskTypeSubCategoryService;
 	private final WmTaskSubmissionRuleService taskSubmissionRuleService;
+	private final WmTaskSubmissionPercentRuleService wmTaskSubmissionPercentRuleService;
 
 
 	private static final DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
@@ -902,22 +904,28 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 		}
 
 		// 医院信息收集、医院信息修改两类任务做的任务总积分不得大于积分包值的60%(积分包值小于5000不做限制)
-		if ("15".equals(wmTaskContent.getTemp30()) || "30".equals(wmTaskContent.getTemp30())) {
-			if (scorePackage.getScore() > 5000) {
-				List<WmTask> wmTaskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery()
-						.eq(WmTask::getRealFlag, "0")
-						.eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
-						.in(WmTask::getScorePackageId, scorePackage.getId())
-						.in(WmTask::getTaskTypeId, "15", "30")
-						.ne(WmTask::getTaskStatus, "4"));
-				if (CollectionUtil.isNotEmpty(wmTaskList)) {
-					int totalScore = scorePackage.getScore();
-					int partScore = wmTaskList.stream().mapToInt(WmTask::getScore).sum();
-					if (partScore * 1.0 / totalScore > 0.6) {
-						throw new RuntimeException("医院信息收集、医院信息修改两类任务总积分不得大于积分包值的60%");
-					}
-				}
-			}
+//		if ("15".equals(wmTaskContent.getTemp30()) || "30".equals(wmTaskContent.getTemp30())) {
+//			if (scorePackage.getScore() > 5000) {
+//				List<WmTask> wmTaskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery()
+//						.eq(WmTask::getRealFlag, "0")
+//						.eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
+//						.in(WmTask::getScorePackageId, scorePackage.getId())
+//						.in(WmTask::getTaskTypeId, "15", "30")
+//						.ne(WmTask::getTaskStatus, "4"));
+//				if (CollectionUtil.isNotEmpty(wmTaskList)) {
+//					int totalScore = scorePackage.getScore();
+//					int partScore = wmTaskList.stream().mapToInt(WmTask::getScore).sum();
+//					if (partScore * 1.0 / totalScore > 0.6) {
+//						throw new RuntimeException("医院信息收集、医院信息修改两类任务总积分不得大于积分包值的60%");
+//					}
+//				}
+//			}
+//		}
+		// 校验任务百分比限制规则(如果积分包值大于【任务配置】-【百分比限制】配置的起始值,
+		// 且【任务配置】-【百分比限制】所选的任务类型对应的任务总完成积分值>积分包值*【任务配置】-【百分比限制】配置的百分比,则校验不通过)
+		R<?> checkPercentRuleResult = wmTaskSubmissionPercentRuleService.checkPercentRule(scorePackage, SecurityUtils.getUser().getDeptId());
+		if (checkPercentRuleResult.getCode() != 0) {
+			throw new RuntimeException(checkPercentRuleResult.getMsg());
 		}
 
 		// 校验医院信息修改的任务(同一家医院,同一个人一个月只能修改一次,该医院一个月最多可修改3次)

+ 123 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskSubmissionPercentRuleServiceImpl.java

@@ -1,10 +1,30 @@
 package com.qunzhixinxi.hnqz.admin.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionPercentRule;
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.admin.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.entity.WmTaskType;
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskSubmissionPercentRuleMapper;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskSubmissionPercentRuleService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
+import com.qunzhixinxi.hnqz.common.core.constant.enums.CommonFlag;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
 
 /**
  * 任务提交百分比规则
@@ -13,7 +33,110 @@ import org.springframework.stereotype.Service;
  * @date 2022/12/22 15:35
  */
 @Service
+@AllArgsConstructor
 public class WmTaskSubmissionPercentRuleServiceImpl
 		extends ServiceImpl<WmTaskSubmissionPercentRuleMapper, WmTaskSubmissionPercentRule>
 		implements WmTaskSubmissionPercentRuleService {
+
+	private final WmTaskService wmTaskService;
+
+	private final WmTaskTypeService wmTaskTypeService;
+
+	/**
+	 * 校验任务百分比限制规则(达到要求的积分包,【任务配置】-【百分比限制】所选的任务总完成积分值不得大于积分包值*百分比)
+	 *
+	 * @param scorePackage
+	 * @return
+	 */
+	@Override
+	public R<?> checkPercentRule(WmScorePackage scorePackage, Integer deptId) {
+
+		AtomicBoolean failFlag = new AtomicBoolean(false);
+		AtomicReference<String> message = new AtomicReference<>("");
+
+		// 查询配置的百分比规则
+		List<WmTaskSubmissionPercentRule> percentRules = this.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
+				.eq(WmTaskSubmissionPercentRule::getDeptId, deptId)
+				.eq(WmTaskSubmissionPercentRule::getOptFlag, CommonFlag.OptFlag.OK));
+
+		// 根据batchId分组
+		Map<String, List<WmTaskSubmissionPercentRule>> batchRules = percentRules.stream().collect(Collectors.groupingBy(WmTaskSubmissionPercentRule::getBatchId));
+
+		// 查询taskType
+		List<WmTaskType> taskTypeList = wmTaskTypeService.list(Wrappers.<WmTaskType>lambdaQuery()
+				.eq(WmTaskType::getTaskTypeLevel, "1")
+				.eq(WmTaskType::getDelFlag, "0")
+				.eq(WmTaskType::getEnableFlag, "0"));
+		// taskType通过id分组(key为parentId,value为taskTypeId的set)
+		Map<String, String> taskTypeIdMap = taskTypeList.stream()
+				.collect(Collectors.toMap(WmTaskType::getId, WmTaskType::getTaskTypeName));
+
+		batchRules.forEach((batchId, rules) -> {
+
+			// 获取该分组下所有taskTypeId
+			List<String> allTaskTypeIds = rules.stream()
+					.flatMap(percentRule -> Arrays.stream(percentRule.getRule().getTaskTypeIds()))
+					.collect(Collectors.toList());
+
+			WmTaskSubmissionPercentRule.PercentRule rule = rules.get(0).getRule();
+
+			// 指定任务类型做的任务总积分不得大于积分包值的rule.limitPercent%(积分包值小于rule.startScore不做限制)
+			if (scorePackage.getScore() > rule.getStartScore()) {
+				List<WmTask> wmTaskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery()
+						.eq(WmTask::getRealFlag, "0")
+						.eq(WmTask::getDelFlag, DelEnum.NOT_DEL.val())
+						.in(WmTask::getScorePackageId, scorePackage.getId())
+						.in(WmTask::getTaskTypeId, allTaskTypeIds)
+						.ne(WmTask::getTaskStatus, "4"));
+
+				if (CollectionUtil.isNotEmpty(wmTaskList)) {
+					int totalScore = scorePackage.getScore();
+					int partScore = wmTaskList.stream().mapToInt(WmTask::getScore).sum();
+					if (partScore * 100.0 / totalScore > Float.parseFloat(rule.getLimitPercent())) {
+						failFlag.set(true);
+
+						String taskTypeNames = allTaskTypeIds.stream().map(taskTypeIdMap::get).collect(Collectors.joining("、"));
+						message.set(String.format("%s任务类型的任务总积分不得大于积分包值的%s", taskTypeNames, rule.getLimitPercent()));
+					}
+				}
+			}
+		});
+
+		return failFlag.get() ? R.failed(null, message.get()) : R.ok();
+	}
+
+	/**
+	 * 更新
+	 *
+	 * @param rules
+	 * @return
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean updateRule(List<WmTaskSubmissionPercentRule> rules) {
+
+		// 先删除,后新增
+		String batchId = rules.get(0).getBatchId();
+		List<WmTaskSubmissionPercentRule> queryRules = this.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
+				.eq(WmTaskSubmissionPercentRule::getBatchId, batchId));
+		WmTaskSubmissionPercentRule percentRule = queryRules.get(0);
+
+		this.update(Wrappers.<WmTaskSubmissionPercentRule>lambdaUpdate()
+				.eq(WmTaskSubmissionPercentRule::getBatchId, batchId)
+				.set(WmTaskSubmissionPercentRule::getOptFlag, CommonFlag.OptFlag.DELETED));
+
+		List<WmTaskSubmissionPercentRule> updateRules = new ArrayList<>();
+		for (WmTaskSubmissionPercentRule rule : rules) {
+
+			WmTaskSubmissionPercentRule insertRule = new WmTaskSubmissionPercentRule();
+			insertRule.setRule(rule.getRule());
+			insertRule.setBatchId(percentRule.getBatchId());
+			insertRule.setDeptId(percentRule.getDeptId());
+			insertRule.setSubCategory(rule.getSubCategory());
+			insertRule.setOptFlag(CommonFlag.OptFlag.OK);
+			updateRules.add(insertRule);
+		}
+
+		return this.saveBatch(updateRules);
+	}
 }

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskTypeSubCate2ServiceImpl.java

@@ -30,7 +30,7 @@ import java.util.stream.Collectors;
 
 /**
 * @author snows
-* @description 针对表【wm_dept_task_type(任务类型二级分类表)】的数据库操作Service实现
+* @description 针对表【wm_task_type_sub_cate2(任务类型二级分类表)】的数据库操作Service实现
 * @createDate 2022-12-22 23:57:19
 */
 @Service

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmUserSignServiceImpl.java

@@ -51,6 +51,7 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
 	private final SysPublicParamService sysPublicParamService;
 	private final WmDeptTaskTypeTemplateService wmDeptTaskTypeTemplateService;
 	private final WmUserSignDetailService wmUserSignDetailService;
+	private final WmTaskSubmissionPercentRuleService wmTaskSubmissionPercentRuleService;
 	private final UpmsConfig upmsConfig;
 
 	@Override
@@ -241,6 +242,13 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
 
 		}
 
+		// 校验任务百分比限制规则(如果积分包值大于【任务配置】-【百分比限制】配置的起始值,
+		// 且【任务配置】-【百分比限制】所选的任务类型对应的任务总完成积分值>积分包值*【任务配置】-【百分比限制】配置的百分比,则校验不通过)
+		R<?> checkPercentRuleResult = wmTaskSubmissionPercentRuleService.checkPercentRule(tWmScorePackage, SecurityUtils.getUser().getDeptId());
+		if (checkPercentRuleResult.getCode() != 0) {
+			throw new RuntimeException(checkPercentRuleResult.getMsg());
+		}
+
 		/**
 		 * 积分包领取明细
 		 */