Kaynağa Gözat

feat: 积分限制企业单独配置

李学松 2 yıl önce
ebeveyn
işleme
58802fd4ff

+ 4 - 2
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/UpmsType.java

@@ -26,7 +26,8 @@ public final class UpmsType {
 		FORWARD("FORWARD", "转发类任务"),
 		CONFERENCES_INTERVIEWS("CONFERENCES_INTERVIEWS", "会议与专访"),
 		CUSTOMER_VISIT("CUSTOMER_VISIT", "客户拜访"),
-		MARKET_INFO_COLLECTION("MARKET_INFO_COLLECTION", "市场信息搜集");
+		MARKET_INFO_COLLECTION("MARKET_INFO_COLLECTION", "市场信息搜集"),
+		SCORE_LIMIT("SCORE_LIMIT", "积分限制");
 
 		@EnumValue
 		private final String type;
@@ -53,7 +54,8 @@ public final class UpmsType {
 		HOSPITAL_VISIT("HOSPITAL_VISIT", TaskCategory.CUSTOMER_VISIT, "医院拜访"),
 		PHARMACY_VISIT("PHARMACY_VISIT", TaskCategory.CUSTOMER_VISIT, "药店拜访"),
 		INVENTORY_INFO_COLLECTION("INVENTORY_INFO_COLLECTION", TaskCategory.MARKET_INFO_COLLECTION, "库存信息搜集"),
-		HOSPITAL_INFO_COLLECTION("HOSPITAL_INFO_COLLECTION", TaskCategory.MARKET_INFO_COLLECTION, "医院信息搜集");
+		HOSPITAL_INFO_COLLECTION("HOSPITAL_INFO_COLLECTION", TaskCategory.MARKET_INFO_COLLECTION, "医院信息搜集"),
+		SCORE_LIMIT("SCORE_LIMIT", TaskCategory.SCORE_LIMIT, "积分限制");
 
 		@EnumValue
 		private final String type;

+ 16 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -3583,7 +3583,22 @@ public class ApiController {
 				}
 
 				if ("1".equals(tWmScorePackage.getPackageType1())) {
-					boolean fullFlag = wmTaskService.checkUserTaskSubScore(String.valueOf(userVO.getUserId()));
+
+					String limitValue = "30000";
+					// 查询当前企业配置的积分限制
+					WmTaskSubmissionRule scoreLimitRule = taskSubmissionRuleService.getOne(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
+							.eq(WmTaskSubmissionRule::getDeptId, sysUser.getDeptId())
+							.eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.SCORE_LIMIT));
+					// 公共参数配置的
+					String userTaskSubScore = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
+					if (scoreLimitRule != null && CollUtil.isNotEmpty(scoreLimitRule.getRule())) {
+						WmTaskSubmissionRule.SubmissionRule submissionRule = scoreLimitRule.getRule().get(0);
+						limitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
+					} else if (StrUtil.isNotBlank(userTaskSubScore)) {
+						limitValue = userTaskSubScore;
+					}
+
+					boolean fullFlag = wmTaskService.checkUserTaskSubScore(String.valueOf(userVO.getUserId()), limitValue);
 					if (fullFlag) {
 						String value = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
 						String info = StringUtils.isEmpty(value) ? "每日最多提交3万积分" : "每日最多提交" + Integer.parseInt(value) + "积分";

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

@@ -139,7 +139,7 @@ public interface WmTaskService extends IService<WmTask> {
 
 	IPage<Map<String, Object>> selectSettleTask(Page page, WmTask wmTask);
 
-	Boolean checkUserTaskSubScore(String userId);
+	Boolean checkUserTaskSubScore(String userId, String limitValue);
 
 	Boolean newCheckUserTaskSubScore(String userId, LocalDate createDate);
 

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

@@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.ImmutableList;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskTypeSubCategory;
 import com.qunzhixinxi.hnqz.admin.api.vo.UserVO;
@@ -35,9 +36,7 @@ import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.entity.WmTaskContent;
 import com.qunzhixinxi.hnqz.admin.entity.WmTaskType;
-import com.qunzhixinxi.hnqz.admin.entity.WmTaskTypeSubCate2;
 import com.qunzhixinxi.hnqz.admin.entity.WmUserSign;
-import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmDaHospitalMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskContentMapper;
@@ -71,7 +70,6 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -157,17 +155,30 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 	 * 校验积分上线
 	 *
 	 * @param userId  用户id
+	 * @param deptId  部门id
 	 * @param pkgType 积分包类型
 	 */
-	private void limitScore(Integer userId, String pkgType) {
+	private void limitScore(Integer userId, Integer deptId, String pkgType) {
 
 		if ("1".equals(pkgType)) {
+			String limitValue = "30000";
+			// 查询当前企业配置的积分限制
+			WmTaskSubmissionRule scoreLimitRule = taskSubmissionRuleService.getOne(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
+					.eq(WmTaskSubmissionRule::getDeptId, deptId)
+					.eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.SCORE_LIMIT));
+			// 公共参数配置的
+			String userTaskSubScore = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
+			if (scoreLimitRule != null && CollUtil.isNotEmpty(scoreLimitRule.getRule())) {
+				WmTaskSubmissionRule.SubmissionRule submissionRule = scoreLimitRule.getRule().get(0);
+				limitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
+			} else if (StrUtil.isNotBlank(userTaskSubScore)) {
+				limitValue = userTaskSubScore;
+			}
 
-			Boolean fullFlag = wmTaskService.checkUserTaskSubScore(String.valueOf(userId));
+			Boolean fullFlag = wmTaskService.checkUserTaskSubScore(String.valueOf(userId), limitValue);
 			if (fullFlag) {
-				String value = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
-				String info = StringUtils.isEmpty(value) ? "每日最多提交3万积分" : "每日最多提交" + Integer.parseInt(value) + "积分";
-				log.warn("系统当前限制积分上限:【{}】,提示:【{}】", value, info);
+				String info = String.format("每日最多提交%s积分", limitValue);
+				log.warn("系统当前限制积分上限:【{}】,提示:【{}】", limitValue, info);
 				throw new RuntimeException(info);
 			}
 		}
@@ -518,7 +529,7 @@ public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, W
 		List<WmScorePackageStatus> statusList = checkPackageStatus(sysU.getUserId(), tWmScorePackage.getId());
 
 		// 检验分值 3W
-		this.limitScore(sysU.getUserId(), tWmScorePackage.getPackageType1());
+		this.limitScore(sysU.getUserId(), sysU.getDeptId(), tWmScorePackage.getPackageType1());
 
 		// 获取校验规则
 		List<WmTaskSubmissionRule.SubmissionRule> taskSubmissionRule = this.getTaskSubmissionRule(wmTaskContent.getTemp30(), tWmScorePackage.getRelatedService());

+ 3 - 6
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskServiceImpl.java

@@ -47,7 +47,6 @@ import com.qunzhixinxi.hnqz.admin.entity.WmScoreTaskType;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.entity.WmTaskContent;
 import com.qunzhixinxi.hnqz.admin.entity.dto.CommonEvidenceDTO;
-import com.qunzhixinxi.hnqz.admin.entity.input.SettleAmountMonitorInput;
 import com.qunzhixinxi.hnqz.admin.entity.output.SettleAmountMonitorOutput;
 import com.qunzhixinxi.hnqz.admin.enums.ChannelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
@@ -106,7 +105,6 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
@@ -1855,14 +1853,13 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 	}
 
 	@Override
-	public Boolean checkUserTaskSubScore(String userId) {
+	public Boolean checkUserTaskSubScore(String userId, String limitValue) {
 		LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
 		LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
 		int total = wmTaskMapper.getUserTaskSubScore(userId, startTime, endTime);
 		// 获取用户积分系统上线
-		String value = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
-		log.warn("系统当前限制积分上限:【{}】", value);
-		return total >= (StringUtils.isEmpty(value) ? 30000 : Integer.parseInt(value));
+		log.warn("系统当前限制积分上限:【{}】", limitValue);
+		return total >= Integer.parseInt(limitValue);
 	}
 
 	@Override

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

@@ -57,7 +57,8 @@ public class WmTaskSubmissionRuleServiceImpl extends ServiceImpl<WmTaskSubmissio
 	public Boolean initDeptTaskSubmissionRule(Collection<Integer> deptIds) {
 
 		// 查询平台的配置
-		List<WmTaskSubmissionRule> platformRules = this.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery().eq(WmTaskSubmissionRule::getDeptId, CommonConstants.TENANT_ID_1));
+		List<WmTaskSubmissionRule> platformRules = this.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery().eq(WmTaskSubmissionRule::getDeptId, CommonConstants.TENANT_ID_1)
+				.eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.SCORE_LIMIT));
 
 
 		if (CollUtil.isEmpty(platformRules)) {

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

@@ -3,9 +3,11 @@ package com.qunzhixinxi.hnqz.admin.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.copier.CopyOptions;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
 import com.qunzhixinxi.hnqz.admin.api.vo.UserVO;
 import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
@@ -54,6 +56,7 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
 	private final WmDeptTaskTypeTemplateService wmDeptTaskTypeTemplateService;
 	private final WmUserSignDetailService wmUserSignDetailService;
 	private final WmTaskSubmissionPercentRuleService wmTaskSubmissionPercentRuleService;
+	private final WmTaskSubmissionRuleService wmTaskSubmissionRuleService;
 	private final UpmsConfig upmsConfig;
 
 	@Override
@@ -114,7 +117,21 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
 		}
 
 		if ("1".equals(tWmScorePackage.getPackageType1())) {
-			Boolean fullFlag = wmTaskService.checkUserTaskSubScore(sysU.getUserId() + "");
+			String limitValue = "30000";
+			// 查询当前企业配置的积分限制
+			WmTaskSubmissionRule scoreLimitRule = wmTaskSubmissionRuleService.getOne(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
+					.eq(WmTaskSubmissionRule::getDeptId, sysU.getDeptId())
+					.eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.SCORE_LIMIT));
+			// 公共参数配置的
+			String userTaskSubScore = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
+			if (scoreLimitRule != null && CollUtil.isNotEmpty(scoreLimitRule.getRule())) {
+				WmTaskSubmissionRule.SubmissionRule submissionRule = BeanUtil.toBean(scoreLimitRule.getRule().get(0), WmTaskSubmissionRule.SubmissionRule.class);
+				limitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
+			} else if (StrUtil.isNotBlank(userTaskSubScore)) {
+				limitValue = userTaskSubScore;
+			}
+
+			Boolean fullFlag = wmTaskService.checkUserTaskSubScore(sysU.getUserId() + "", limitValue);
 			if (fullFlag) {
 				String value = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
 				String info = StringUtils.isEmpty(value) ? "每日最多提交3万积分" : "每日最多提交" + Integer.parseInt(value) + "积分";