Browse Source

Merge remote-tracking branch 'origin/master'

shc 2 năm trước cách đây
mục cha
commit
4c30a90f5f

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

+ 30 - 4
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -107,6 +107,7 @@ import com.qunzhixinxi.hnqz.admin.util.Html2ImageByJsWrapper;
 import com.qunzhixinxi.hnqz.admin.util.QRCodeGenerator;
 import com.qunzhixinxi.hnqz.admin.view.user.UserUpdateInput;
 import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
+import com.qunzhixinxi.hnqz.common.core.constant.enums.CommonFlag;
 import com.qunzhixinxi.hnqz.common.core.constant.enums.LoginTypeEnum;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
@@ -3583,11 +3584,36 @@ public class ApiController {
 				}
 
 				if ("1".equals(tWmScorePackage.getPackageType1())) {
-					boolean fullFlag = wmTaskService.checkUserTaskSubScore(String.valueOf(userVO.getUserId()));
+
+					String limitValue = "30000";
+					// 查询当前企业配置的积分限制
+					List<WmTaskSubmissionRule> scoreLimitRuleList = taskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
+							.in(WmTaskSubmissionRule::getDeptId, CollUtil.newHashSet(sysUser.getDeptId(), 1))
+							.eq(WmTaskSubmissionRule::getOptFlag, CommonFlag.OptFlag.OK)
+							.eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.SCORE_LIMIT));
+
+					// 公共参数配置的
+					String userTaskSubScore = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
+
+					if (CollUtil.isNotEmpty(scoreLimitRuleList)) {
+						Map<Integer, WmTaskSubmissionRule.SubmissionRule> submissionRuleMap = scoreLimitRuleList.stream()
+								.collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, rules ->
+										BeanUtil.toBean(rules.getRule().get(0), WmTaskSubmissionRule.SubmissionRule.class)));
+						WmTaskSubmissionRule.SubmissionRule submissionRule = null;
+						if (submissionRuleMap.containsKey(sysUser.getDeptId())) {
+							submissionRule = submissionRuleMap.get(sysUser.getDeptId());
+						} else {
+							submissionRule = submissionRuleMap.get(1);
+						}
+						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) + "积分";
-						log.warn("系统当前限制积分上限:【{}】,提示:【{}】", value, info);
+						String info = String.format("每日最多提交%s积分", limitValue);
+						log.warn("系统当前限制积分上限:【{}】,提示:【{}】", limitValue, info);
 						return R.failed(info + ",积分+0");
 					}
 				}

+ 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);
 

+ 32 - 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,12 +70,12 @@ 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;
 import java.util.Map;
 import java.util.Optional;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -157,17 +156,41 @@ 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";
+			// 查询当前企业配置的积分限制
+			List<WmTaskSubmissionRule> scoreLimitRuleList = taskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
+					.in(WmTaskSubmissionRule::getDeptId, CollUtil.newHashSet(deptId, 1))
+					.eq(WmTaskSubmissionRule::getOptFlag, CommonFlag.OptFlag.OK)
+					.eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.SCORE_LIMIT));
+
+			// 公共参数配置的
+			String userTaskSubScore = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
+
+			if (CollUtil.isNotEmpty(scoreLimitRuleList)) {
+				Map<Integer, WmTaskSubmissionRule.SubmissionRule> submissionRuleMap = scoreLimitRuleList.stream()
+						.collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, rules ->
+								BeanUtil.toBean(rules.getRule().get(0), WmTaskSubmissionRule.SubmissionRule.class)));
+				WmTaskSubmissionRule.SubmissionRule submissionRule = null;
+				if (submissionRuleMap.containsKey(deptId)) {
+					submissionRule = submissionRuleMap.get(deptId);
+				} else {
+					submissionRule = submissionRuleMap.get(1);
+				}
+				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 +541,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

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

@@ -4,7 +4,10 @@ import cn.hutool.core.collection.CollUtil;
 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.SysDictItem;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
+import com.qunzhixinxi.hnqz.admin.mapper.SysDictItemMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskSubmissionRuleMapper;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskSubmissionRuleService;
 import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
@@ -15,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -31,6 +35,7 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class WmTaskSubmissionRuleServiceImpl extends ServiceImpl<WmTaskSubmissionRuleMapper, WmTaskSubmissionRule> implements WmTaskSubmissionRuleService {
 
+	private final SysDictItemMapper sysDictItemMapper;
 
 	/**
 	 * 获取部门限制信息
@@ -41,9 +46,24 @@ public class WmTaskSubmissionRuleServiceImpl extends ServiceImpl<WmTaskSubmissio
 	@Override
 	public Map<UpmsType.TaskCategory, List<WmTaskSubmissionRule>> listDeptTaskSubmissionRules(Integer deptId) {
 
-		List<WmTaskSubmissionRule> rules = this.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery().eq(WmTaskSubmissionRule::getDeptId, deptId));
+		Map<UpmsType.TaskCategory, List<WmTaskSubmissionRule>> result = new LinkedHashMap<>();
+		List<WmTaskSubmissionRule> rules = this.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
+				.eq(WmTaskSubmissionRule::getDeptId, deptId));
 
-		return rules.stream().collect(Collectors.groupingBy(rule -> rule.getSubCategory().getCategory()));
+		Map<UpmsType.TaskCategory, List<WmTaskSubmissionRule>> taskCategoryListMap = rules.stream()
+				.collect(Collectors.groupingBy(rule -> rule.getSubCategory().getCategory()));
+
+		// 结果根据字典顺序排列
+		List<SysDictItem> taskCategorys = sysDictItemMapper.selectList(Wrappers.<SysDictItem>lambdaQuery()
+				.eq(SysDictItem::getType, "task_category")
+				.eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.val()));
+
+		taskCategorys.forEach(taskCate -> {
+			UpmsType.TaskCategory taskCategory = Enum.valueOf(UpmsType.TaskCategory.class, taskCate.getValue());
+			result.put(taskCategory, taskCategoryListMap.get(taskCategory));
+		});
+
+		return result;
 	}
 
 	/**
@@ -57,7 +77,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)) {

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

@@ -3,16 +3,20 @@ 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;
 import com.qunzhixinxi.hnqz.admin.entity.*;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
+import com.qunzhixinxi.hnqz.admin.enums.LockEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmUserSignMapper;
 import com.qunzhixinxi.hnqz.admin.service.*;
+import com.qunzhixinxi.hnqz.common.core.constant.enums.CommonFlag;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
@@ -54,6 +58,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,11 +119,35 @@ public class WmUserSignServiceImpl extends ServiceImpl<WmUserSignMapper, WmUserS
 		}
 
 		if ("1".equals(tWmScorePackage.getPackageType1())) {
-			Boolean fullFlag = wmTaskService.checkUserTaskSubScore(sysU.getUserId() + "");
+			String limitValue = "30000";
+			// 查询当前企业配置的积分限制
+			List<WmTaskSubmissionRule> scoreLimitRuleList = wmTaskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
+					.in(WmTaskSubmissionRule::getDeptId, CollUtil.newHashSet(sysU.getDeptId(), 1))
+					.eq(WmTaskSubmissionRule::getOptFlag, CommonFlag.OptFlag.OK)
+					.eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.SCORE_LIMIT));
+
+			// 公共参数配置的
+			String userTaskSubScore = sysPublicParamService.getSysPublicParamKeyToValue("USER_TASK_SUB_SCORE");
+
+			if (CollUtil.isNotEmpty(scoreLimitRuleList)) {
+				Map<Integer, WmTaskSubmissionRule.SubmissionRule> submissionRuleMap = scoreLimitRuleList.stream()
+						.collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, rules ->
+								BeanUtil.toBean(rules.getRule().get(0), WmTaskSubmissionRule.SubmissionRule.class)));
+				WmTaskSubmissionRule.SubmissionRule submissionRule = null;
+				if (submissionRuleMap.containsKey(sysU.getDeptId())) {
+					submissionRule = submissionRuleMap.get(sysU.getDeptId());
+				} else {
+					submissionRule = submissionRuleMap.get(1);
+				}
+				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) + "积分";
-				log.warn("系统当前限制积分上限:【{}】,提示:【{}】", value, info);
+				String info = String.format("每日最多提交%s积分", limitValue);
+				log.warn("系统当前限制积分上限:【{}】,提示:【{}】", limitValue, info);
 				return R.failed(1, info);
 			}
 		}