|
@@ -14,6 +14,7 @@ import com.google.common.collect.ImmutableList;
|
|
import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
|
|
import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
|
|
import com.qunzhixinxi.hnqz.admin.api.dto.WmTaskDTO;
|
|
import com.qunzhixinxi.hnqz.admin.api.dto.WmTaskDTO;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
|
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageTaskTypeQty;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionPercentRule;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionPercentRule;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionRule;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskTypeSubCategory;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskTypeSubCategory;
|
|
@@ -34,6 +35,7 @@ import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmUserSignMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmUserSignMapper;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysPublicParamService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysPublicParamService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysUserService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysUserService;
|
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmPackageTaskTypeQtyService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
|
|
@@ -82,1069 +84,1097 @@ import java.util.stream.Collectors;
|
|
@Service
|
|
@Service
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, WmTaskContent> implements WmTaskContentService {
|
|
public class WmTaskContentServiceImpl extends ServiceImpl<WmTaskContentMapper, WmTaskContent> implements WmTaskContentService {
|
|
- private final WmTaskService wmTaskService;
|
|
|
|
- private final WmTaskMapper wmTaskMapper;
|
|
|
|
- private final SysUserService sysUserService;
|
|
|
|
- private final WmTaskTypeService wmTaskTypeService;
|
|
|
|
- private final WmScorePackageService wmScorePackageService;
|
|
|
|
- private final WmScorePackageStatusService wmScorePackageStatusService;
|
|
|
|
- private final WmUserSignMapper wmUserSignMapper;
|
|
|
|
- private final WmDaHospitalMapper wmDaHospitalMapper;
|
|
|
|
- private final SysPublicParamService sysPublicParamService;
|
|
|
|
- private final WmTaskTypeSubCategoryService taskTypeSubCategoryService;
|
|
|
|
- private final WmTaskSubmissionRuleService taskSubmissionRuleService;
|
|
|
|
- private final WmTaskSubmissionPercentRuleService wmTaskSubmissionPercentRuleService;
|
|
|
|
- private final ApplicationEventPublisher applicationEventPublisher;
|
|
|
|
- private final Sequence taskSequence;
|
|
|
|
-
|
|
|
|
- private static final DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
|
|
|
-
|
|
|
|
- private static final String[] ingTypeIds = {"5", "6", "8", "9", "10", "11", "33"};
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 校验积分包
|
|
|
|
- *
|
|
|
|
- * @param pkgId 积分包id
|
|
|
|
- * @return 积分包
|
|
|
|
- */
|
|
|
|
- private WmScorePackage checkPackage(String pkgId) {
|
|
|
|
- // 获取积分包
|
|
|
|
- WmScorePackage tWmScorePackage = wmScorePackageService.getById(pkgId);
|
|
|
|
-
|
|
|
|
- if (null == tWmScorePackage) {
|
|
|
|
- log.warn("获取不到积分包:{}", pkgId);
|
|
|
|
- throw new RuntimeException("获取不到积分包");
|
|
|
|
- }
|
|
|
|
- if (LocalDate.now().isAfter(tWmScorePackage.getEndTime())) {
|
|
|
|
- throw new BizException("当前积分包已过截止日期");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return tWmScorePackage;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 校验领包记录
|
|
|
|
- *
|
|
|
|
- * @param userId 用户id
|
|
|
|
- * @param pkgId 积分包id
|
|
|
|
- * @return 领包记录集合
|
|
|
|
- */
|
|
|
|
- private List<WmScorePackageStatus> checkPackageStatus(Integer userId, String pkgId) {
|
|
|
|
- List<WmScorePackageStatus> statusList =
|
|
|
|
- wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
|
|
|
|
- .eq(WmScorePackageStatus::getUserId, userId)
|
|
|
|
- .eq(WmScorePackageStatus::getStatus, "2")
|
|
|
|
- .eq(WmScorePackageStatus::getTaskAddFlag, "1")
|
|
|
|
- .eq(WmScorePackageStatus::getPackageId, pkgId)
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- if (CollectionUtils.isEmpty(statusList)) {
|
|
|
|
- log.warn("获取积分包异常,任务保存失败9001:{}", pkgId);
|
|
|
|
- throw new RuntimeException("获取积分包异常,任务保存失败");
|
|
|
|
- }
|
|
|
|
- if (statusList.size() != 1) {
|
|
|
|
- log.warn("获取积分包异常,任务保存失败9002:{}", pkgId);
|
|
|
|
- throw new RuntimeException("获取积分包异常,任务保存失败");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return statusList;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 校验积分上线
|
|
|
|
- *
|
|
|
|
- * @param userId 用户id
|
|
|
|
- * @param deptId 部门id
|
|
|
|
- * @param pkgType 积分包类型
|
|
|
|
- */
|
|
|
|
- public void limitScore(Integer userId, Integer deptId, String pkgType) {
|
|
|
|
-
|
|
|
|
- if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), pkgType)
|
|
|
|
- || StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), 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), limitValue);
|
|
|
|
- if (fullFlag) {
|
|
|
|
- String info = String.format("每日最多提交%s积分", limitValue);
|
|
|
|
- log.warn("系统当前限制积分上限:【{}】,提示:【{}】", limitValue, info);
|
|
|
|
- throw new RuntimeException(info);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 月度积分限制
|
|
|
|
- String monthLimitValue;
|
|
|
|
- List<WmTaskSubmissionRule> monthScoreLimitRuleList = taskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
|
|
|
|
- .in(WmTaskSubmissionRule::getDeptId, CollUtil.newHashSet(deptId, 1))
|
|
|
|
- .eq(WmTaskSubmissionRule::getOptFlag, CommonFlag.OptFlag.OK)
|
|
|
|
- .eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.MONTH_SCORE_LIMIT));
|
|
|
|
- if (CollUtil.isNotEmpty(monthScoreLimitRuleList)) {
|
|
|
|
- Map<Integer, WmTaskSubmissionRule.SubmissionRule> submissionRuleMap = monthScoreLimitRuleList.stream()
|
|
|
|
- .collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, rules ->
|
|
|
|
- BeanUtil.toBean(rules.getRule().get(0), WmTaskSubmissionRule.SubmissionRule.class)));
|
|
|
|
- WmTaskSubmissionRule.SubmissionRule submissionRule = submissionRuleMap.containsKey(deptId) ? submissionRuleMap.get(deptId) : submissionRuleMap.get(1);
|
|
|
|
- monthLimitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
|
|
|
|
- } else {
|
|
|
|
- monthLimitValue = "300000";
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- LocalDate localDate = LocalDate.now();
|
|
|
|
- LocalDateTime startOfMonth = localDate.withDayOfMonth(1).atStartOfDay();
|
|
|
|
- LocalDateTime startOfNextMonth = localDate.plusMonths(1).withDayOfMonth(1).atStartOfDay();
|
|
|
|
- int total = wmTaskMapper.getUserTaskSubScore(String.valueOf(userId), startOfMonth, startOfNextMonth);
|
|
|
|
-
|
|
|
|
- if (total >= Integer.parseInt(monthLimitValue)) {
|
|
|
|
- String info = String.format("每月最多提交%s积分", monthLimitValue);
|
|
|
|
- log.warn("系统当前限制月度积分上限:【{}】,提示:【{}】", monthLimitValue, info);
|
|
|
|
- throw new BizException(info);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 获取任务提交规则
|
|
|
|
- * 1.如果目标企业不存在规则,取平台的默认规则
|
|
|
|
- *
|
|
|
|
- * @param taskTypeId 任务类型id
|
|
|
|
- * @param deptId 所属规则的企业id
|
|
|
|
- * @return 规则
|
|
|
|
- */
|
|
|
|
- @Override
|
|
|
|
- public List<WmTaskSubmissionRule.SubmissionRule> getTaskSubmissionRule(String taskTypeId, String deptId) {
|
|
|
|
-
|
|
|
|
- WmTaskTypeSubCategory subCategory = taskTypeSubCategoryService.getOne(Wrappers.<WmTaskTypeSubCategory>lambdaQuery().eq(WmTaskTypeSubCategory::getTaskTypeId, taskTypeId));
|
|
|
|
-
|
|
|
|
- if (subCategory == null) {
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 获取企业和平台的规则
|
|
|
|
- List<WmTaskSubmissionRule> rules = taskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
|
|
|
|
- .eq(WmTaskSubmissionRule::getSubCategory, subCategory.getSubCategory())
|
|
|
|
- .eq(WmTaskSubmissionRule::getOptFlag, CommonFlag.OptFlag.OK)
|
|
|
|
- .in(WmTaskSubmissionRule::getDeptId, ImmutableList.of(deptId, 1))
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- if (CollUtil.isEmpty(rules)) {
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 平台限制和企业限制都存在取企业的
|
|
|
|
- if (rules.size() != 1) {
|
|
|
|
- Optional<WmTaskSubmissionRule> first = rules.stream().filter(r -> r.getDeptId() != 1).findFirst();
|
|
|
|
- if (first.isPresent()) {
|
|
|
|
- return first.get().getRule();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return rules.get(0).getRule();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 会议、1对1专访、培训的校验
|
|
|
|
- *
|
|
|
|
- * @param lookInDate 获取时间
|
|
|
|
- * @param taskTypeIds 二级分类归属任务类型
|
|
|
|
- * @param userId 用户id
|
|
|
|
- * @param rules 校验规则
|
|
|
|
- */
|
|
|
|
- private void ctt_1_19_34(String lookInDate, List<String> taskTypeIds, Integer userId, List<WmTaskSubmissionRule.SubmissionRule> rules) {
|
|
|
|
-
|
|
|
|
- int upperLimit = 0;
|
|
|
|
- int betweenDay = 0;
|
|
|
|
-
|
|
|
|
- // 获取限制
|
|
|
|
- for (int i = 0, size = rules.size(); i < size; i++) {
|
|
|
|
- Map<String, Object> map = (Map<String, Object>) rules.get(i);
|
|
|
|
- WmTaskSubmissionRule.SubmissionRule r = BeanUtil.mapToBean(map, WmTaskSubmissionRule.SubmissionRule.class, true, new CopyOptions());
|
|
|
|
-
|
|
|
|
- if ("举办次数上限".equals(r.getManual())) {
|
|
|
|
- Object o = r.getFrequency().get(0).get("quantity");
|
|
|
|
- upperLimit = o instanceof String ? Integer.parseInt((String) o) : (int) o;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- if ("任务有效期限".equals(r.getManual())) {
|
|
|
|
-
|
|
|
|
- List<Integer> quantity = r.getFrequency().stream().map(f -> {
|
|
|
|
- Object o = f.get("quantity");
|
|
|
|
- return o instanceof String ? Integer.parseInt((String) o) : (int) o;
|
|
|
|
- }).sorted().collect(Collectors.toList());
|
|
|
|
- betweenDay = quantity.get(0);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- LocalDate currentLookIntoDate = LocalDate.parse(lookInDate, df);
|
|
|
|
- LocalDateTime start = LocalDateTime.of(currentLookIntoDate, LocalTime.MIN);
|
|
|
|
- LocalDateTime end = LocalDateTime.of(currentLookIntoDate, LocalTime.MAX);
|
|
|
|
- long meetingTaskCount = wmTaskService.countMeetingTask(taskTypeIds, String.valueOf(userId), start, end);
|
|
|
|
- log.info("举办上限:{}", meetingTaskCount);
|
|
|
|
- if (meetingTaskCount >= upperLimit) {
|
|
|
|
- throw new RuntimeException(String.format("每天最多举办%s场", upperLimit));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- LocalDate now = LocalDate.now();
|
|
|
|
- if (currentLookIntoDate.isAfter(now)) {
|
|
|
|
- throw new RuntimeException("会议时间不能选择之后的时间");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- if (now.minusDays(betweenDay).isAfter(currentLookIntoDate)) {
|
|
|
|
- throw new RuntimeException(String.format("%s天以前的任务无法提交", betweenDay));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 医院信息修改
|
|
|
|
- *
|
|
|
|
- * @param hosId 医院id
|
|
|
|
- * @param userId 用户id
|
|
|
|
- * @param rules 校验规则
|
|
|
|
- */
|
|
|
|
- private void ctt_30(String hosId, Integer userId, List<WmTaskSubmissionRule.SubmissionRule> rules) {
|
|
|
|
-
|
|
|
|
- int hosUpperLimit = 0;
|
|
|
|
- int userUpperLimit = 0;
|
|
|
|
-
|
|
|
|
- // 获取限制
|
|
|
|
- for (int i = 0, size = rules.size(); i < size; i++) {
|
|
|
|
- Map<String, Object> map = (Map<String, Object>) rules.get(i);
|
|
|
|
- WmTaskSubmissionRule.SubmissionRule r = BeanUtil.mapToBean(map, WmTaskSubmissionRule.SubmissionRule.class, true, new CopyOptions());
|
|
|
|
-
|
|
|
|
- if ("同一家医院的修改次数上限".equals(r.getManual())) {
|
|
|
|
- List<Integer> quantity = r.getFrequency().stream().map(f -> {
|
|
|
|
- Object o = f.get("quantity");
|
|
|
|
- return o instanceof String ? Integer.parseInt((String) o) : (int) o;
|
|
|
|
- }).sorted().collect(Collectors.toList());
|
|
|
|
- hosUpperLimit = quantity.get(0);
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- if ("同一个人对同一家医院的修改次数上限".equals(r.getManual())) {
|
|
|
|
-
|
|
|
|
- List<Integer> quantity = r.getFrequency().stream().map(f -> {
|
|
|
|
- Object o = f.get("quantity");
|
|
|
|
- return o instanceof String ? Integer.parseInt((String) o) : (int) o;
|
|
|
|
- }).sorted().collect(Collectors.toList());
|
|
|
|
- userUpperLimit = quantity.get(0);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- List<WmTask> taskList = wmTaskService.listCurrentMonthHospitalTask(hosId);
|
|
|
|
- if (CollectionUtil.isNotEmpty(taskList)) {
|
|
|
|
- List<WmTask> userUpperLimitList = taskList.stream().filter(wmTask -> String.valueOf(userId).equals(wmTask.getTaskUserId())).collect(Collectors.toList());
|
|
|
|
- if (userUpperLimitList.size() >= userUpperLimit) {
|
|
|
|
- throw new RuntimeException("该医院同一个人一个月只能修改一次");
|
|
|
|
- }
|
|
|
|
- if (taskList.size() >= hosUpperLimit) {
|
|
|
|
- throw new RuntimeException("该医院一个月最多只能修改3次");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 校验任务内容
|
|
|
|
- *
|
|
|
|
- * @param scorePackage 积分包
|
|
|
|
- * @param wmTaskContent 任务内容
|
|
|
|
- * @param userId 用户id
|
|
|
|
- * @param rules 校验规则
|
|
|
|
- */
|
|
|
|
- private void checkTaskContent(WmScorePackage scorePackage, WmTaskContent wmTaskContent, Integer userId, List<WmTaskSubmissionRule.SubmissionRule> rules) {
|
|
|
|
- String taskTypeId = wmTaskContent.getTemp30();
|
|
|
|
- LocalDate now = LocalDate.now();
|
|
|
|
-
|
|
|
|
- // 会议举办/一对一专访/培训(医院患者教育培训 、药店药师培训 、商业公司培训)
|
|
|
|
- if ("1".equals(taskTypeId) || "19".equals(wmTaskContent.getTemp30()) || "34".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- List<String> taskTypeIds = null;
|
|
|
|
- switch (taskTypeId) {
|
|
|
|
- case "1":
|
|
|
|
- taskTypeIds = CollectionUtil.toList("1", "2", "3", "4", "64");
|
|
|
|
- break;
|
|
|
|
- case "19":
|
|
|
|
- taskTypeIds = CollectionUtil.toList("19");
|
|
|
|
- break;
|
|
|
|
- case "34":
|
|
|
|
- taskTypeIds = CollectionUtil.toList("34", "35", "36");
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- this.ctt_1_19_34(wmTaskContent.getTemp4(), taskTypeIds, userId, rules);
|
|
|
|
- wmTaskContent.setTemp30(wmTaskContent.getTemp3());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // 政策信息收集/竞品信息收集/库存信息收集/药物警戒相关信息收集(疗效等)/专家咨询
|
|
|
|
- if ("12".equals(wmTaskContent.getTemp30())
|
|
|
|
- || "13".equals(wmTaskContent.getTemp30())
|
|
|
|
- // || "14".equals(wmTaskContent.getTemp30())
|
|
|
|
- || "17".equals(wmTaskContent.getTemp30())
|
|
|
|
- || "21".equals(wmTaskContent.getTemp30())) {
|
|
|
|
-
|
|
|
|
- String date = wmTaskContent.getTemp4();
|
|
|
|
- LocalDate d = LocalDate.parse(date, df);
|
|
|
|
- if (d.isAfter(now)) {
|
|
|
|
- throw new RuntimeException("任务时间不能选择之后的时间");
|
|
|
|
- }
|
|
|
|
- if (now.minusDays(30).isAfter(d)) {
|
|
|
|
- throw new RuntimeException("30天以前的任务无法提交");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // if ("14".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- // // 设置调查对象和调查品种
|
|
|
|
- // wmTaskContent.setTemp24(wmTaskContent.getTemp24label());
|
|
|
|
- // wmTaskContent.setTemp26(wmTaskContent.getTemp26label());
|
|
|
|
- // }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 商业公司信息收集/医院信息收集
|
|
|
|
- if ("15".equals(wmTaskContent.getTemp30()) || "16".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- if ("15".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- WmDaHospital wmDaHospital = new WmDaHospital();
|
|
|
|
- wmDaHospital.setYymc(wmTaskContent.getTemp3());
|
|
|
|
- int num = wmDaHospitalMapper.selectCount(Wrappers.query(wmDaHospital));
|
|
|
|
- if (num != 0) {
|
|
|
|
- wmTaskContent.setTemp30("30");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- String date = wmTaskContent.getTemp2();
|
|
|
|
- LocalDate d = LocalDate.parse(date, df);
|
|
|
|
- if (d.isAfter(now)) {
|
|
|
|
- throw new RuntimeException("任务时间不能选择之后的时间");
|
|
|
|
- }
|
|
|
|
- if (now.minusDays(30).isAfter(d)) {
|
|
|
|
- throw new RuntimeException("30天以前的任务无法提交");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 药店调查
|
|
|
|
- if ("18".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- //会议类型
|
|
|
|
- String date = wmTaskContent.getTemp6();
|
|
|
|
- LocalDate d = LocalDate.parse(date, df);
|
|
|
|
- if (d.isAfter(now)) {
|
|
|
|
- throw new RuntimeException("任务时间不能选择之后的时间");
|
|
|
|
- }
|
|
|
|
- if (now.minusDays(30).isAfter(d)) {
|
|
|
|
- throw new RuntimeException("30天以前的任务无法提交");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if ("29".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- if ("1".equals(wmTaskContent.getTemp29())) {
|
|
|
|
- wmTaskContent.setTemp30("5");
|
|
|
|
- } else {
|
|
|
|
- wmTaskContent.setTemp30("6");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 校验任务百分比限制规则(如果积分包值大于【任务配置】-【百分比限制】配置的起始值,
|
|
|
|
- // 且【任务配置】-【百分比限制】所选的任务类型对应的任务总完成积分值>积分包值*【任务配置】-【百分比限制】配置的百分比,则校验不通过)
|
|
|
|
- log.info("当前提交任务类型id:{}", taskTypeId);
|
|
|
|
- if (!ArrayUtil.contains(ingTypeIds, taskTypeId)) {
|
|
|
|
-
|
|
|
|
- List<String> toCheckTaskTypeIds;
|
|
|
|
- if ("15".equals(taskTypeId) || "30".equals(taskTypeId)) {
|
|
|
|
- toCheckTaskTypeIds = new ArrayList<>(2);
|
|
|
|
- toCheckTaskTypeIds.add("15");
|
|
|
|
- toCheckTaskTypeIds.add("30");
|
|
|
|
- } else {
|
|
|
|
- toCheckTaskTypeIds = Collections.singletonList(taskTypeId);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- R<?> checkPercentRuleResult =
|
|
|
|
- wmTaskSubmissionPercentRuleService.checkPercentRule(scorePackage, SecurityUtils.getUser().getDeptId(), null, toCheckTaskTypeIds);
|
|
|
|
- if (checkPercentRuleResult.getCode() != 0) {
|
|
|
|
- throw new RuntimeException(checkPercentRuleResult.getMsg());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 校验医院信息修改的任务(同一家医院,同一个人一个月只能修改一次,该医院一个月最多可修改3次)
|
|
|
|
- if ("30".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- rules = this.getTaskSubmissionRule("30", scorePackage.getRelatedService());
|
|
|
|
- ctt_30(wmTaskContent.getTemp29(), userId, rules);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 校验首次库存调查
|
|
|
|
- if ("31".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- // 获取调查类别:0:首次
|
|
|
|
- String surveyType = wmTaskContent.getTemp23();
|
|
|
|
-
|
|
|
|
- if (!"0".equals(surveyType)) {
|
|
|
|
- throw new RuntimeException("首次调查类型错误");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 调查对象
|
|
|
|
- String surveyTarget = wmTaskContent.getTemp26label();
|
|
|
|
- // 调查品种
|
|
|
|
- String surveyCategory = wmTaskContent.getTemp24label();
|
|
|
|
- // 所属区域
|
|
|
|
- String location = wmTaskContent.getTemp5();
|
|
|
|
-
|
|
|
|
- List<WmTaskContent> taskContentList = list(Wrappers.<WmTaskContent>lambdaQuery()
|
|
|
|
- .eq(WmTaskContent::getTemp23, surveyType)
|
|
|
|
- .eq(WmTaskContent::getTemp26, surveyTarget)
|
|
|
|
- .eq(WmTaskContent::getTemp24, surveyCategory)
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- log.warn("内容:【{}】", taskContentList.toString());
|
|
|
|
- if (CollectionUtils.isNotEmpty(taskContentList)) {
|
|
|
|
- // 获取 所有任务id为31的任务且不是审核不通过的任务
|
|
|
|
- List<Integer> taskContentIdList = taskContentList.stream().mapToInt(WmTaskContent::getId).boxed().collect(Collectors.toList());
|
|
|
|
- List<WmTask> wmTaskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery().eq(WmTask::getTaskTypeId, "31")
|
|
|
|
- .ne(WmTask::getTaskStatus, "4")
|
|
|
|
- .in(WmTask::getTaskContentId, taskContentIdList)
|
|
|
|
- );
|
|
|
|
- if (CollectionUtils.isNotEmpty(wmTaskList)) {
|
|
|
|
- throw new RuntimeException("该药品在本院的首次调查已经完结,不能提交");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 设置调查对象和调查品种
|
|
|
|
- wmTaskContent.setTemp24(surveyCategory);
|
|
|
|
- wmTaskContent.setTemp26(surveyTarget);
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 提交任务任务
|
|
|
|
- *
|
|
|
|
- * @param wmTaskContent 任务内容
|
|
|
|
- * @return 保存结果
|
|
|
|
- */
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public R<?> saveTaskContent(WmTaskContent wmTaskContent, String ip, String region) {
|
|
|
|
-
|
|
|
|
- // 获取积分包
|
|
|
|
- WmScorePackage tWmScorePackage = this.checkPackage(wmTaskContent.getTemp32());
|
|
|
|
-
|
|
|
|
- // 校验
|
|
|
|
- HnqzUser user = SecurityUtils.getUser();
|
|
|
|
- UserVO sysU = sysUserService.selectUserVoById(user.getId());
|
|
|
|
-
|
|
|
|
- // 校验超过60周岁,不能做任务
|
|
|
|
- Map<String, String> checkResult = sysUserService.checkSixtyYearsOld(sysU);
|
|
|
|
- if (CollUtil.isNotEmpty(checkResult) && checkResult.containsKey("OVER")) {
|
|
|
|
- throw new RuntimeException(checkResult.get("OVER"));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- List<WmScorePackageStatus> statusList = checkPackageStatus(sysU.getUserId(), tWmScorePackage.getId());
|
|
|
|
-
|
|
|
|
- // 查询任务类型启用状态
|
|
|
|
- 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, wmTaskContent.getTemp30())) {
|
|
|
|
- throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 检验分值 3W
|
|
|
|
- this.limitScore(sysU.getUserId(), sysU.getDeptId(), tWmScorePackage.getPackageType1());
|
|
|
|
-
|
|
|
|
- // 获取校验规则
|
|
|
|
- //List<WmTaskSubmissionRule.SubmissionRule> taskSubmissionRule = this.getTaskSubmissionRule(wmTaskContent.getTemp30(), tWmScorePackage.getRelatedService());
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // 校验提交数据
|
|
|
|
- //this.checkTaskContent(tWmScorePackage, wmTaskContent, sysU.getUserId(), taskSubmissionRule);
|
|
|
|
-
|
|
|
|
- Map<String, String> resultMap = new HashMap<>();
|
|
|
|
- WmScorePackageStatus scorePackageStatus = statusList.get(0);
|
|
|
|
- int score = 0;
|
|
|
|
- if (this.save(wmTaskContent)) {
|
|
|
|
- if (null != sysU) {
|
|
|
|
- WmTask wmTask = new WmTask();
|
|
|
|
- wmTask.setRemoteIp(ip);
|
|
|
|
- wmTask.setIp2region(region);
|
|
|
|
- wmTask.setTaskFrom("1");
|
|
|
|
- LocalDateTime localDateTime = LocalDateTime.now();
|
|
|
|
- wmTask.setUpdateTime(localDateTime);
|
|
|
|
- //任务提交人
|
|
|
|
- wmTask.setTaskUserId(String.valueOf(sysU.getUserId()));
|
|
|
|
- //调研时间
|
|
|
|
- wmTask.setLookintoDate(localDateTime);
|
|
|
|
- wmTask.setDrugEntId(tWmScorePackage.getDrugEntId());
|
|
|
|
- wmTask.setTaskTypeId(wmTaskContent.getTemp30());
|
|
|
|
-
|
|
|
|
- WmTaskType wmTaskType = new WmTaskType();
|
|
|
|
- wmTaskType.setRuleId(tWmScorePackage.getRuleId());
|
|
|
|
- WmTaskType wmTaskType1 = wmTaskTypeService.getById(wmTaskContent.getTemp30());
|
|
|
|
- wmTaskType.setTaskTypeName(wmTaskType1.getTaskTypeName());
|
|
|
|
- score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType);
|
|
|
|
-
|
|
|
|
- // 医院区分新增和修改,修改积分搞为1000 start
|
|
|
|
- if ("15".equals(wmTaskContent.getTemp30()) || "30".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- System.err.println("医院区分新增和修改:" + score);
|
|
|
|
- WmDaHospital wmDaHospital = new WmDaHospital();
|
|
|
|
- wmDaHospital.setYymc(wmTaskContent.getTemp3());
|
|
|
|
- if (wmDaHospitalMapper.selectCount(Wrappers.query(wmDaHospital)) != 0) {
|
|
|
|
- WmTaskType wmTaskType2 = new WmTaskType();
|
|
|
|
- WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
- wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- wmTaskType2.setTaskTypeName("医院信息修改");
|
|
|
|
- score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType2);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- // 医院区分新增和修改,修改积分搞为1000 end
|
|
|
|
-
|
|
|
|
- // 2021-06-11 库存调查分成,首次调查和常规调查,常规调查走之前的逻辑 start
|
|
|
|
- if ("31".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- WmTaskType wmTaskType2 = new WmTaskType();
|
|
|
|
- WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
- wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- wmTaskType2.setTaskTypeName("库存信息收集-首次");
|
|
|
|
- score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType2);
|
|
|
|
- }
|
|
|
|
- // 2021-06-11 库存调查分成,首次调查和常规调查,常规调查走之前的逻辑 end
|
|
|
|
-
|
|
|
|
- // 调剂服务 任务积分值 = 每一味积分值 * 调剂味数
|
|
|
|
- if ("38".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- WmTaskType wmTaskType2 = new WmTaskType();
|
|
|
|
- WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
- wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- wmTaskType2.setTaskTypeName("调剂服务");
|
|
|
|
- score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType2);
|
|
|
|
- score = (int) Math.round(score * Double.parseDouble(wmTaskContent.getTemp24()));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 应收账款回款-A类/应收账款回款-B类/应收账款回款-C类 积分值按照“回款总额”乘“回款类别”对应的百分比,四舍五入
|
|
|
|
- if ("39".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- WmTaskType wmTaskType2 = new WmTaskType();
|
|
|
|
- // 根据选择的回款类别 查任务类型模板
|
|
|
|
- WmTaskType baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp23());
|
|
|
|
- // 查询当前企业的任务类型积分
|
|
|
|
- WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
- wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- wmTaskType2.setTaskTypeName(baseTaskType.getTaskTypeName());
|
|
|
|
- wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType2);
|
|
|
|
- // 计算实际任务积分(任务积分值 = 每一味积分值 * 调剂味数),这里应收账款回款积分值存的是1000的倍数,所以需要除以1000
|
|
|
|
- score = (int) Math.round(score * Double.parseDouble(wmTaskContent.getTemp8()) / 1000.0D);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 手术跟台-一级/手术跟台-二级/手术跟台-三级任务类型 积分值设置
|
|
|
|
- if ("42".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- // 根据选择的跟台级别 设置积分值
|
|
|
|
- String taskTypeId = "42";
|
|
|
|
- switch (wmTaskContent.getTemp23()) {
|
|
|
|
- case "1":
|
|
|
|
- taskTypeId = "42";
|
|
|
|
- break;
|
|
|
|
- case "2":
|
|
|
|
- taskTypeId = "43";
|
|
|
|
- break;
|
|
|
|
- case "3":
|
|
|
|
- taskTypeId = "44";
|
|
|
|
- break;
|
|
|
|
- default:
|
|
|
|
- }
|
|
|
|
- WmTaskType baseTaskType = wmTaskTypeService.getById(taskTypeId);
|
|
|
|
- // 查询当前企业的任务类型积分
|
|
|
|
- WmTaskType wmTaskType2 = new WmTaskType();
|
|
|
|
- WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
- wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- wmTaskType2.setTaskTypeName(baseTaskType.getTaskTypeName());
|
|
|
|
- wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType2);
|
|
|
|
- // 设置实际的任务类型
|
|
|
|
- wmTaskContent.setTemp30(taskTypeId);
|
|
|
|
- wmTask.setTaskTypeId(taskTypeId);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 药店推广-47 积分值设置
|
|
|
|
- if ("47".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- // 根据选择的推广类型 查任务类型模板
|
|
|
|
- WmTaskType baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp23());
|
|
|
|
- // 查询当前企业的任务类型积分
|
|
|
|
- WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
- WmTaskType queryTaskType = new WmTaskType();
|
|
|
|
- queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- queryTaskType.setTaskTypeName(baseTaskType.getTaskTypeName());
|
|
|
|
- queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- score = wmTaskTypeService.getWmTaskTypeByEnt(queryTaskType);
|
|
|
|
- // 计算实际任务积分(数量*企业这个任务类型的积分值)
|
|
|
|
- score = score * Integer.parseInt(wmTaskContent.getTemp13());
|
|
|
|
- // 设置实际的任务类型
|
|
|
|
- wmTaskContent.setTemp30(wmTaskContent.getTemp23());
|
|
|
|
- wmTask.setTaskTypeId(wmTaskContent.getTemp23());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 信用管理A/B/C 积分值设置
|
|
|
|
- //if ("51".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- // // 根据选择的信用等级 查任务类型模板
|
|
|
|
- // WmTaskType baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp23());
|
|
|
|
- // // 查询当前企业的任务类型积分
|
|
|
|
- // WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
- // WmTaskType queryTaskType = new WmTaskType();
|
|
|
|
- // queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- // queryTaskType.setTaskTypeName(baseTaskType.getTaskTypeName());
|
|
|
|
- // queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- // score = wmTaskTypeService.getWmTaskTypeByEnt(queryTaskType);
|
|
|
|
- // // 设置实际的任务类型
|
|
|
|
- // wmTaskContent.setTemp30(wmTaskContent.getTemp23());
|
|
|
|
- // wmTask.setTaskTypeId(wmTaskContent.getTemp23());
|
|
|
|
- //}
|
|
|
|
- // 首营管理-诊所/药店
|
|
|
|
- if ("56".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- // 根据选择的终端类型 查任务类型模板
|
|
|
|
- WmTaskType baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp3());
|
|
|
|
- // 查询当前企业的任务类型积分
|
|
|
|
- WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
- WmTaskType queryTaskType = new WmTaskType();
|
|
|
|
- queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- queryTaskType.setTaskTypeName(baseTaskType.getTaskTypeName());
|
|
|
|
- queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
- score = wmTaskTypeService.getWmTaskTypeByEnt(queryTaskType);
|
|
|
|
- // 设置实际的任务类型
|
|
|
|
- wmTaskContent.setTemp30(wmTaskContent.getTemp3());
|
|
|
|
- wmTask.setTaskTypeId(wmTaskContent.getTemp3());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 校验任务类型是否启用
|
|
|
|
- WmTaskType _baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp30());
|
|
|
|
- WmTaskType queryTaskType = new WmTaskType();
|
|
|
|
- queryTaskType.setRuleId(tWmScorePackage.getRuleId());
|
|
|
|
- queryTaskType.setTaskTypeName(_baseTaskType.getTaskTypeName());
|
|
|
|
- queryTaskType.setDelFlag("0");
|
|
|
|
- List<WmTaskType> deptTaskTypes = wmTaskTypeService.list(Wrappers.query(queryTaskType));
|
|
|
|
- if (CollUtil.isEmpty(deptTaskTypes)) {
|
|
|
|
- throw new RuntimeException(_baseTaskType.getTaskTypeName() + "任务类型不存在");
|
|
|
|
- }
|
|
|
|
- if (EnableEnum.DISABLE.val().equals(deptTaskTypes.get(0).getEnableFlag())) {
|
|
|
|
- throw new RuntimeException(_baseTaskType.getTaskTypeName() + "任务类型已停用");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- log.info("获取任务得分:{}", score);
|
|
|
|
-
|
|
|
|
- if (score < 0) {
|
|
|
|
- return R.failed("获取任务积分失败");
|
|
|
|
- }
|
|
|
|
- wmTask.setScore(score);
|
|
|
|
-
|
|
|
|
- resultMap.put("score", tWmScorePackage.getPackageType1());
|
|
|
|
- log.warn("获取积分包ID:{}", tWmScorePackage);
|
|
|
|
-
|
|
|
|
- wmTask.setScorePackageId(tWmScorePackage.getId());
|
|
|
|
- wmTask.setTaskRuleId(tWmScorePackage.getTaskRuleId());
|
|
|
|
-
|
|
|
|
- wmTask.setTaskContentId(String.valueOf(wmTaskContent.getId()));
|
|
|
|
-
|
|
|
|
- if (HnqzUtils.isZbRole(sysU.getRoleList(), 5)) {
|
|
|
|
- wmTask.setTaskUserType("5");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- wmTask.setCreateTime(localDateTime);
|
|
|
|
-
|
|
|
|
- if (HnqzUtils.isZbRole(sysU.getRoleList(), 6)) {
|
|
|
|
- wmTask.setTaskUserType("6");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- wmTask.setDeptId(sysU.getDeptId() + "");
|
|
|
|
- wmTask.setSubmitStatus("0");
|
|
|
|
-
|
|
|
|
- // 不需要平台管理员审核的直接提交上级审核 taskStatus = 2 已提交 否则 taskStatus = 1 待提交
|
|
|
|
- wmTask.setRealFlag("0");
|
|
|
|
- wmTask.setTaskStatus("2");
|
|
|
|
-
|
|
|
|
- wmTask.setTaskNumber(taskSequence.nextNo());
|
|
|
|
- //保存任务
|
|
|
|
- boolean isSave = wmTaskService.save(wmTask);
|
|
|
|
-
|
|
|
|
- /*
|
|
|
|
- * 2020-12-21
|
|
|
|
- * 15、30-医院 16-商业 18-药店
|
|
|
|
- * 三类修改为平台管理员审核后才能在任务中心查出来
|
|
|
|
- * realFlag 0-真实 1-非真实 9-审核中
|
|
|
|
- *
|
|
|
|
- * 2021-9-2 by lixuesong
|
|
|
|
- * 去掉平台管理员审核,调整到个人任务审核
|
|
|
|
- */
|
|
|
|
- if ("15".equals(wmTaskContent.getTemp30())
|
|
|
|
- || "16".equals(wmTaskContent.getTemp30())
|
|
|
|
- || "30".equals(wmTaskContent.getTemp30())
|
|
|
|
- || "18".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- // 校验调查信息审核,对比信息无改动则不可保存(15、30-医院 16-商业 18-药店)
|
|
|
|
- R taskResult = wmTaskService.getSurveryTaskInfo(wmTask.getId());
|
|
|
|
- Map<String, Object> data = (Map<String, Object>) taskResult.getData();
|
|
|
|
- WmTask task = (WmTask) data.get("wmTask");
|
|
|
|
- if ("3".equals(task.getCompareResult())) {
|
|
|
|
- // 3-信息无变化,删除这条任务
|
|
|
|
- wmTaskService.removeById(wmTask.getId());
|
|
|
|
- this.removeById(wmTask.getTaskContentId());
|
|
|
|
- return R.failed("信息无变化,不可提交");
|
|
|
|
- }
|
|
|
|
- resultMap.put("type", "3");
|
|
|
|
- }
|
|
|
|
- // 2020-12-21 end
|
|
|
|
-
|
|
|
|
- //判断任务是否完成
|
|
|
|
- if (isSave) {
|
|
|
|
- WmScorePackage wmScorePackage1 = wmScorePackageService.getById(tWmScorePackage.getId());
|
|
|
|
- if (null != wmScorePackage1) {
|
|
|
|
- WmTask taskQuery = new WmTask();
|
|
|
|
- taskQuery.setScorePackageId(tWmScorePackage.getId());
|
|
|
|
- QueryWrapper<WmTask> taskQueryWrapper = Wrappers.query(taskQuery);
|
|
|
|
-
|
|
|
|
- // 查询出 审核通过和审核中的任务
|
|
|
|
- taskQueryWrapper.lambda()
|
|
|
|
- .ne(WmTask::getTaskStatus, "4")
|
|
|
|
- .eq(WmTask::getRealFlag, "0");
|
|
|
|
|
|
+
|
|
|
|
+ private final WmTaskService wmTaskService;
|
|
|
|
+ private final WmTaskMapper wmTaskMapper;
|
|
|
|
+ private final SysUserService sysUserService;
|
|
|
|
+ private final WmTaskTypeService wmTaskTypeService;
|
|
|
|
+ private final WmScorePackageService wmScorePackageService;
|
|
|
|
+ private final WmScorePackageStatusService wmScorePackageStatusService;
|
|
|
|
+ private final WmUserSignMapper wmUserSignMapper;
|
|
|
|
+ private final WmDaHospitalMapper wmDaHospitalMapper;
|
|
|
|
+ private final SysPublicParamService sysPublicParamService;
|
|
|
|
+ private final WmTaskTypeSubCategoryService taskTypeSubCategoryService;
|
|
|
|
+ private final WmTaskSubmissionRuleService taskSubmissionRuleService;
|
|
|
|
+ private final WmTaskSubmissionPercentRuleService wmTaskSubmissionPercentRuleService;
|
|
|
|
+ private final ApplicationEventPublisher applicationEventPublisher;
|
|
|
|
+ private final WmPackageTaskTypeQtyService packageTaskTypeQtyService;
|
|
|
|
+ private final Sequence taskSequence;
|
|
|
|
+
|
|
|
|
+ private static final DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
|
|
|
+
|
|
|
|
+ private static final String[] ingTypeIds = {"5", "6", "8", "9", "10", "11", "33"};
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 校验积分包
|
|
|
|
+ *
|
|
|
|
+ * @param pkgId 积分包id
|
|
|
|
+ * @return 积分包
|
|
|
|
+ */
|
|
|
|
+ private WmScorePackage checkPackage(String pkgId) {
|
|
|
|
+ // 获取积分包
|
|
|
|
+ WmScorePackage tWmScorePackage = wmScorePackageService.getById(pkgId);
|
|
|
|
+
|
|
|
|
+ if (null == tWmScorePackage) {
|
|
|
|
+ log.warn("获取不到积分包:{}", pkgId);
|
|
|
|
+ throw new RuntimeException("获取不到积分包");
|
|
|
|
+ }
|
|
|
|
+ if (LocalDate.now().isAfter(tWmScorePackage.getEndTime())) {
|
|
|
|
+ throw new BizException("当前积分包已过截止日期");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return tWmScorePackage;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 校验领包记录
|
|
|
|
+ *
|
|
|
|
+ * @param userId 用户id
|
|
|
|
+ * @param pkgId 积分包id
|
|
|
|
+ * @return 领包记录集合
|
|
|
|
+ */
|
|
|
|
+ private List<WmScorePackageStatus> checkPackageStatus(Integer userId, String pkgId) {
|
|
|
|
+ List<WmScorePackageStatus> statusList =
|
|
|
|
+ wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
|
|
|
|
+ .eq(WmScorePackageStatus::getUserId, userId)
|
|
|
|
+ .eq(WmScorePackageStatus::getStatus, "2")
|
|
|
|
+ .eq(WmScorePackageStatus::getTaskAddFlag, "1")
|
|
|
|
+ .eq(WmScorePackageStatus::getPackageId, pkgId)
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ if (CollectionUtils.isEmpty(statusList)) {
|
|
|
|
+ log.warn("获取积分包异常,任务保存失败9001:{}", pkgId);
|
|
|
|
+ throw new RuntimeException("获取积分包异常,任务保存失败");
|
|
|
|
+ }
|
|
|
|
+ if (statusList.size() != 1) {
|
|
|
|
+ log.warn("获取积分包异常,任务保存失败9002:{}", pkgId);
|
|
|
|
+ throw new RuntimeException("获取积分包异常,任务保存失败");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return statusList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 校验积分上线
|
|
|
|
+ *
|
|
|
|
+ * @param userId 用户id
|
|
|
|
+ * @param deptId 部门id
|
|
|
|
+ * @param pkgType 积分包类型
|
|
|
|
+ */
|
|
|
|
+ public void limitScore(Integer userId, Integer deptId, String pkgType) {
|
|
|
|
+
|
|
|
|
+ if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), pkgType)
|
|
|
|
+ || StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), 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), limitValue);
|
|
|
|
+ if (fullFlag) {
|
|
|
|
+ String info = String.format("每日最多提交%s积分", limitValue);
|
|
|
|
+ log.warn("系统当前限制积分上限:【{}】,提示:【{}】", limitValue, info);
|
|
|
|
+ throw new RuntimeException(info);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 月度积分限制
|
|
|
|
+ String monthLimitValue;
|
|
|
|
+ List<WmTaskSubmissionRule> monthScoreLimitRuleList = taskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
|
|
|
|
+ .in(WmTaskSubmissionRule::getDeptId, CollUtil.newHashSet(deptId, 1))
|
|
|
|
+ .eq(WmTaskSubmissionRule::getOptFlag, CommonFlag.OptFlag.OK)
|
|
|
|
+ .eq(WmTaskSubmissionRule::getSubCategory, UpmsType.TaskSubCategory.MONTH_SCORE_LIMIT));
|
|
|
|
+ if (CollUtil.isNotEmpty(monthScoreLimitRuleList)) {
|
|
|
|
+ Map<Integer, WmTaskSubmissionRule.SubmissionRule> submissionRuleMap = monthScoreLimitRuleList.stream()
|
|
|
|
+ .collect(Collectors.toMap(WmTaskSubmissionRule::getDeptId, rules ->
|
|
|
|
+ BeanUtil.toBean(rules.getRule().get(0), WmTaskSubmissionRule.SubmissionRule.class)));
|
|
|
|
+ WmTaskSubmissionRule.SubmissionRule submissionRule = submissionRuleMap.containsKey(deptId) ? submissionRuleMap.get(deptId) : submissionRuleMap.get(1);
|
|
|
|
+ monthLimitValue = String.valueOf(submissionRule.getFrequency().get(0).get("quantity"));
|
|
|
|
+ } else {
|
|
|
|
+ monthLimitValue = "300000";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ LocalDate localDate = LocalDate.now();
|
|
|
|
+ LocalDateTime startOfMonth = localDate.withDayOfMonth(1).atStartOfDay();
|
|
|
|
+ LocalDateTime startOfNextMonth = localDate.plusMonths(1).withDayOfMonth(1).atStartOfDay();
|
|
|
|
+ int total = wmTaskMapper.getUserTaskSubScore(String.valueOf(userId), startOfMonth, startOfNextMonth);
|
|
|
|
+
|
|
|
|
+ if (total >= Integer.parseInt(monthLimitValue)) {
|
|
|
|
+ String info = String.format("每月最多提交%s积分", monthLimitValue);
|
|
|
|
+ log.warn("系统当前限制月度积分上限:【{}】,提示:【{}】", monthLimitValue, info);
|
|
|
|
+ throw new BizException(info);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取任务提交规则
|
|
|
|
+ * 1.如果目标企业不存在规则,取平台的默认规则
|
|
|
|
+ *
|
|
|
|
+ * @param taskTypeId 任务类型id
|
|
|
|
+ * @param deptId 所属规则的企业id
|
|
|
|
+ * @return 规则
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public List<WmTaskSubmissionRule.SubmissionRule> getTaskSubmissionRule(String taskTypeId, String deptId) {
|
|
|
|
+
|
|
|
|
+ WmTaskTypeSubCategory subCategory = taskTypeSubCategoryService.getOne(Wrappers.<WmTaskTypeSubCategory>lambdaQuery().eq(WmTaskTypeSubCategory::getTaskTypeId, taskTypeId));
|
|
|
|
+
|
|
|
|
+ if (subCategory == null) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 获取企业和平台的规则
|
|
|
|
+ List<WmTaskSubmissionRule> rules = taskSubmissionRuleService.list(Wrappers.<WmTaskSubmissionRule>lambdaQuery()
|
|
|
|
+ .eq(WmTaskSubmissionRule::getSubCategory, subCategory.getSubCategory())
|
|
|
|
+ .eq(WmTaskSubmissionRule::getOptFlag, CommonFlag.OptFlag.OK)
|
|
|
|
+ .in(WmTaskSubmissionRule::getDeptId, ImmutableList.of(deptId, 1))
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ if (CollUtil.isEmpty(rules)) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 平台限制和企业限制都存在取企业的
|
|
|
|
+ if (rules.size() != 1) {
|
|
|
|
+ Optional<WmTaskSubmissionRule> first = rules.stream().filter(r -> r.getDeptId() != 1).findFirst();
|
|
|
|
+ if (first.isPresent()) {
|
|
|
|
+ return first.get().getRule();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return rules.get(0).getRule();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 会议、1对1专访、培训的校验
|
|
|
|
+ *
|
|
|
|
+ * @param lookInDate 获取时间
|
|
|
|
+ * @param taskTypeIds 二级分类归属任务类型
|
|
|
|
+ * @param userId 用户id
|
|
|
|
+ * @param rules 校验规则
|
|
|
|
+ */
|
|
|
|
+ private void ctt_1_19_34(String lookInDate, List<String> taskTypeIds, Integer userId, List<WmTaskSubmissionRule.SubmissionRule> rules) {
|
|
|
|
+
|
|
|
|
+ int upperLimit = 0;
|
|
|
|
+ int betweenDay = 0;
|
|
|
|
+
|
|
|
|
+ // 获取限制
|
|
|
|
+ for (int i = 0, size = rules.size(); i < size; i++) {
|
|
|
|
+ Map<String, Object> map = (Map<String, Object>) rules.get(i);
|
|
|
|
+ WmTaskSubmissionRule.SubmissionRule r = BeanUtil.mapToBean(map, WmTaskSubmissionRule.SubmissionRule.class, true, new CopyOptions());
|
|
|
|
+
|
|
|
|
+ if ("举办次数上限".equals(r.getManual())) {
|
|
|
|
+ Object o = r.getFrequency().get(0).get("quantity");
|
|
|
|
+ upperLimit = o instanceof String ? Integer.parseInt((String) o) : (int) o;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ if ("任务有效期限".equals(r.getManual())) {
|
|
|
|
+
|
|
|
|
+ List<Integer> quantity = r.getFrequency().stream().map(f -> {
|
|
|
|
+ Object o = f.get("quantity");
|
|
|
|
+ return o instanceof String ? Integer.parseInt((String) o) : (int) o;
|
|
|
|
+ }).sorted().collect(Collectors.toList());
|
|
|
|
+ betweenDay = quantity.get(0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ LocalDate currentLookIntoDate = LocalDate.parse(lookInDate, df);
|
|
|
|
+ LocalDateTime start = LocalDateTime.of(currentLookIntoDate, LocalTime.MIN);
|
|
|
|
+ LocalDateTime end = LocalDateTime.of(currentLookIntoDate, LocalTime.MAX);
|
|
|
|
+ long meetingTaskCount = wmTaskService.countMeetingTask(taskTypeIds, String.valueOf(userId), start, end);
|
|
|
|
+ log.info("举办上限:{}", meetingTaskCount);
|
|
|
|
+ if (meetingTaskCount >= upperLimit) {
|
|
|
|
+ throw new RuntimeException(String.format("每天最多举办%s场", upperLimit));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ LocalDate now = LocalDate.now();
|
|
|
|
+ if (currentLookIntoDate.isAfter(now)) {
|
|
|
|
+ throw new RuntimeException("会议时间不能选择之后的时间");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (now.minusDays(betweenDay).isAfter(currentLookIntoDate)) {
|
|
|
|
+ throw new RuntimeException(String.format("%s天以前的任务无法提交", betweenDay));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 医院信息修改
|
|
|
|
+ *
|
|
|
|
+ * @param hosId 医院id
|
|
|
|
+ * @param userId 用户id
|
|
|
|
+ * @param rules 校验规则
|
|
|
|
+ */
|
|
|
|
+ private void ctt_30(String hosId, Integer userId, List<WmTaskSubmissionRule.SubmissionRule> rules) {
|
|
|
|
+
|
|
|
|
+ int hosUpperLimit = 0;
|
|
|
|
+ int userUpperLimit = 0;
|
|
|
|
+
|
|
|
|
+ // 获取限制
|
|
|
|
+ for (int i = 0, size = rules.size(); i < size; i++) {
|
|
|
|
+ Map<String, Object> map = (Map<String, Object>) rules.get(i);
|
|
|
|
+ WmTaskSubmissionRule.SubmissionRule r = BeanUtil.mapToBean(map, WmTaskSubmissionRule.SubmissionRule.class, true, new CopyOptions());
|
|
|
|
+
|
|
|
|
+ if ("同一家医院的修改次数上限".equals(r.getManual())) {
|
|
|
|
+ List<Integer> quantity = r.getFrequency().stream().map(f -> {
|
|
|
|
+ Object o = f.get("quantity");
|
|
|
|
+ return o instanceof String ? Integer.parseInt((String) o) : (int) o;
|
|
|
|
+ }).sorted().collect(Collectors.toList());
|
|
|
|
+ hosUpperLimit = quantity.get(0);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ if ("同一个人对同一家医院的修改次数上限".equals(r.getManual())) {
|
|
|
|
+
|
|
|
|
+ List<Integer> quantity = r.getFrequency().stream().map(f -> {
|
|
|
|
+ Object o = f.get("quantity");
|
|
|
|
+ return o instanceof String ? Integer.parseInt((String) o) : (int) o;
|
|
|
|
+ }).sorted().collect(Collectors.toList());
|
|
|
|
+ userUpperLimit = quantity.get(0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<WmTask> taskList = wmTaskService.listCurrentMonthHospitalTask(hosId);
|
|
|
|
+ if (CollectionUtil.isNotEmpty(taskList)) {
|
|
|
|
+ List<WmTask> userUpperLimitList = taskList.stream().filter(wmTask -> String.valueOf(userId).equals(wmTask.getTaskUserId())).collect(Collectors.toList());
|
|
|
|
+ if (userUpperLimitList.size() >= userUpperLimit) {
|
|
|
|
+ throw new RuntimeException("该医院同一个人一个月只能修改一次");
|
|
|
|
+ }
|
|
|
|
+ if (taskList.size() >= hosUpperLimit) {
|
|
|
|
+ throw new RuntimeException("该医院一个月最多只能修改3次");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 校验任务内容
|
|
|
|
+ *
|
|
|
|
+ * @param scorePackage 积分包
|
|
|
|
+ * @param wmTaskContent 任务内容
|
|
|
|
+ * @param userId 用户id
|
|
|
|
+ * @param rules 校验规则
|
|
|
|
+ */
|
|
|
|
+ private void checkTaskContent(WmScorePackage scorePackage, WmTaskContent wmTaskContent, Integer userId, List<WmTaskSubmissionRule.SubmissionRule> rules) {
|
|
|
|
+ String taskTypeId = wmTaskContent.getTemp30();
|
|
|
|
+ LocalDate now = LocalDate.now();
|
|
|
|
+
|
|
|
|
+ // 会议举办/一对一专访/培训(医院患者教育培训 、药店药师培训 、商业公司培训)
|
|
|
|
+ if ("1".equals(taskTypeId) || "19".equals(wmTaskContent.getTemp30()) || "34".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ List<String> taskTypeIds = null;
|
|
|
|
+ switch (taskTypeId) {
|
|
|
|
+ case "1":
|
|
|
|
+ taskTypeIds = CollectionUtil.toList("1", "2", "3", "4", "64");
|
|
|
|
+ break;
|
|
|
|
+ case "19":
|
|
|
|
+ taskTypeIds = CollectionUtil.toList("19");
|
|
|
|
+ break;
|
|
|
|
+ case "34":
|
|
|
|
+ taskTypeIds = CollectionUtil.toList("34", "35", "36");
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.ctt_1_19_34(wmTaskContent.getTemp4(), taskTypeIds, userId, rules);
|
|
|
|
+ wmTaskContent.setTemp30(wmTaskContent.getTemp3());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 政策信息收集/竞品信息收集/库存信息收集/药物警戒相关信息收集(疗效等)/专家咨询
|
|
|
|
+ if ("12".equals(wmTaskContent.getTemp30())
|
|
|
|
+ || "13".equals(wmTaskContent.getTemp30())
|
|
|
|
+ // || "14".equals(wmTaskContent.getTemp30())
|
|
|
|
+ || "17".equals(wmTaskContent.getTemp30())
|
|
|
|
+ || "21".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+
|
|
|
|
+ String date = wmTaskContent.getTemp4();
|
|
|
|
+ LocalDate d = LocalDate.parse(date, df);
|
|
|
|
+ if (d.isAfter(now)) {
|
|
|
|
+ throw new RuntimeException("任务时间不能选择之后的时间");
|
|
|
|
+ }
|
|
|
|
+ if (now.minusDays(30).isAfter(d)) {
|
|
|
|
+ throw new RuntimeException("30天以前的任务无法提交");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // if ("14".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ // // 设置调查对象和调查品种
|
|
|
|
+ // wmTaskContent.setTemp24(wmTaskContent.getTemp24label());
|
|
|
|
+ // wmTaskContent.setTemp26(wmTaskContent.getTemp26label());
|
|
|
|
+ // }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 商业公司信息收集/医院信息收集
|
|
|
|
+ if ("15".equals(wmTaskContent.getTemp30()) || "16".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ if ("15".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ WmDaHospital wmDaHospital = new WmDaHospital();
|
|
|
|
+ wmDaHospital.setYymc(wmTaskContent.getTemp3());
|
|
|
|
+ int num = wmDaHospitalMapper.selectCount(Wrappers.query(wmDaHospital));
|
|
|
|
+ if (num != 0) {
|
|
|
|
+ wmTaskContent.setTemp30("30");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String date = wmTaskContent.getTemp2();
|
|
|
|
+ LocalDate d = LocalDate.parse(date, df);
|
|
|
|
+ if (d.isAfter(now)) {
|
|
|
|
+ throw new RuntimeException("任务时间不能选择之后的时间");
|
|
|
|
+ }
|
|
|
|
+ if (now.minusDays(30).isAfter(d)) {
|
|
|
|
+ throw new RuntimeException("30天以前的任务无法提交");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 药店调查
|
|
|
|
+ if ("18".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ // 会议类型
|
|
|
|
+ String date = wmTaskContent.getTemp6();
|
|
|
|
+ LocalDate d = LocalDate.parse(date, df);
|
|
|
|
+ if (d.isAfter(now)) {
|
|
|
|
+ throw new RuntimeException("任务时间不能选择之后的时间");
|
|
|
|
+ }
|
|
|
|
+ if (now.minusDays(30).isAfter(d)) {
|
|
|
|
+ throw new RuntimeException("30天以前的任务无法提交");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ("29".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ if ("1".equals(wmTaskContent.getTemp29())) {
|
|
|
|
+ wmTaskContent.setTemp30("5");
|
|
|
|
+ } else {
|
|
|
|
+ wmTaskContent.setTemp30("6");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 校验任务百分比限制规则(如果积分包值大于【任务配置】-【百分比限制】配置的起始值,
|
|
|
|
+ // 且【任务配置】-【百分比限制】所选的任务类型对应的任务总完成积分值>积分包值*【任务配置】-【百分比限制】配置的百分比,则校验不通过)
|
|
|
|
+ log.info("当前提交任务类型id:{}", taskTypeId);
|
|
|
|
+ if (!ArrayUtil.contains(ingTypeIds, taskTypeId)) {
|
|
|
|
+
|
|
|
|
+ List<String> toCheckTaskTypeIds;
|
|
|
|
+ if ("15".equals(taskTypeId) || "30".equals(taskTypeId)) {
|
|
|
|
+ toCheckTaskTypeIds = new ArrayList<>(2);
|
|
|
|
+ toCheckTaskTypeIds.add("15");
|
|
|
|
+ toCheckTaskTypeIds.add("30");
|
|
|
|
+ } else {
|
|
|
|
+ toCheckTaskTypeIds = Collections.singletonList(taskTypeId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ R<?> checkPercentRuleResult =
|
|
|
|
+ wmTaskSubmissionPercentRuleService.checkPercentRule(scorePackage, SecurityUtils.getUser().getDeptId(), null, toCheckTaskTypeIds);
|
|
|
|
+ if (checkPercentRuleResult.getCode() != 0) {
|
|
|
|
+ throw new RuntimeException(checkPercentRuleResult.getMsg());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 校验医院信息修改的任务(同一家医院,同一个人一个月只能修改一次,该医院一个月最多可修改3次)
|
|
|
|
+ if ("30".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ rules = this.getTaskSubmissionRule("30", scorePackage.getRelatedService());
|
|
|
|
+ ctt_30(wmTaskContent.getTemp29(), userId, rules);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 校验首次库存调查
|
|
|
|
+ if ("31".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ // 获取调查类别:0:首次
|
|
|
|
+ String surveyType = wmTaskContent.getTemp23();
|
|
|
|
+
|
|
|
|
+ if (!"0".equals(surveyType)) {
|
|
|
|
+ throw new RuntimeException("首次调查类型错误");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 调查对象
|
|
|
|
+ String surveyTarget = wmTaskContent.getTemp26label();
|
|
|
|
+ // 调查品种
|
|
|
|
+ String surveyCategory = wmTaskContent.getTemp24label();
|
|
|
|
+ // 所属区域
|
|
|
|
+ String location = wmTaskContent.getTemp5();
|
|
|
|
+
|
|
|
|
+ List<WmTaskContent> taskContentList = list(Wrappers.<WmTaskContent>lambdaQuery()
|
|
|
|
+ .eq(WmTaskContent::getTemp23, surveyType)
|
|
|
|
+ .eq(WmTaskContent::getTemp26, surveyTarget)
|
|
|
|
+ .eq(WmTaskContent::getTemp24, surveyCategory)
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ log.warn("内容:【{}】", taskContentList.toString());
|
|
|
|
+ if (CollectionUtils.isNotEmpty(taskContentList)) {
|
|
|
|
+ // 获取 所有任务id为31的任务且不是审核不通过的任务
|
|
|
|
+ List<Integer> taskContentIdList = taskContentList.stream().mapToInt(WmTaskContent::getId).boxed().collect(Collectors.toList());
|
|
|
|
+ List<WmTask> wmTaskList = wmTaskService.list(Wrappers.<WmTask>lambdaQuery().eq(WmTask::getTaskTypeId, "31")
|
|
|
|
+ .ne(WmTask::getTaskStatus, "4")
|
|
|
|
+ .in(WmTask::getTaskContentId, taskContentIdList)
|
|
|
|
+ );
|
|
|
|
+ if (CollectionUtils.isNotEmpty(wmTaskList)) {
|
|
|
|
+ throw new RuntimeException("该药品在本院的首次调查已经完结,不能提交");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 设置调查对象和调查品种
|
|
|
|
+ wmTaskContent.setTemp24(surveyCategory);
|
|
|
|
+ wmTaskContent.setTemp26(surveyTarget);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 提交任务任务
|
|
|
|
+ *
|
|
|
|
+ * @param wmTaskContent 任务内容
|
|
|
|
+ * @return 保存结果
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public R<?> saveTaskContent(WmTaskContent wmTaskContent, String ip, String region) {
|
|
|
|
+
|
|
|
|
+ // 获取积分包
|
|
|
|
+ WmScorePackage tWmScorePackage = this.checkPackage(wmTaskContent.getTemp32());
|
|
|
|
+
|
|
|
|
+ // 校验
|
|
|
|
+ HnqzUser user = SecurityUtils.getUser();
|
|
|
|
+ UserVO sysU = sysUserService.selectUserVoById(user.getId());
|
|
|
|
+
|
|
|
|
+ // 校验超过60周岁,不能做任务
|
|
|
|
+ Map<String, String> checkResult = sysUserService.checkSixtyYearsOld(sysU);
|
|
|
|
+ if (CollUtil.isNotEmpty(checkResult) && checkResult.containsKey("OVER")) {
|
|
|
|
+ throw new RuntimeException(checkResult.get("OVER"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<WmScorePackageStatus> statusList = checkPackageStatus(sysU.getUserId(), tWmScorePackage.getId());
|
|
|
|
+
|
|
|
|
+ // 查询任务类型启用状态
|
|
|
|
+ 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, wmTaskContent.getTemp30())) {
|
|
|
|
+ throw new RuntimeException("当前企业未开启该任务!");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 检验分值 3W
|
|
|
|
+ this.limitScore(sysU.getUserId(), sysU.getDeptId(), tWmScorePackage.getPackageType1());
|
|
|
|
+
|
|
|
|
+ // 校验任务个数
|
|
|
|
+ String taskTypeIdStr = wmTaskContent.getTemp30().trim();
|
|
|
|
+
|
|
|
|
+ if (!StrUtil.equalsAny(taskTypeIdStr, "8", "8", "8", "8")) {
|
|
|
|
+ Integer pId = Integer.valueOf(tWmScorePackage.getId());
|
|
|
|
+ Map<Integer, List<WmPackageTaskTypeQty>> qtyList = packageTaskTypeQtyService.listPkgTaskTypeQtyByPkgIds(Collections.singletonList(pId)).stream().collect(Collectors.groupingBy(WmPackageTaskTypeQty::getTaskTypeId));
|
|
|
|
+
|
|
|
|
+ List<WmPackageTaskTypeQty> packageTaskTypeQtyList = qtyList.get(Integer.valueOf(taskTypeIdStr));
|
|
|
|
+
|
|
|
|
+ if (CollUtil.isEmpty(packageTaskTypeQtyList)) {
|
|
|
|
+ throw new RuntimeException("当前积分包拆解结果中该服务类型数量为:0,不能提交!");
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ // 获取任务类型比较数据
|
|
|
|
+ Integer count = wmTaskMapper.selectCount(Wrappers.<WmTask>lambdaQuery().eq(WmTask::getTaskTypeId, taskTypeIdStr).eq(WmTask::getScorePackageId, pId.toString()));
|
|
|
|
+
|
|
|
|
+ Integer qty = packageTaskTypeQtyList.get(0).getQty();
|
|
|
|
+
|
|
|
|
+ if (qty - count <= 0) {
|
|
|
|
+ throw new RuntimeException("当前积分包拆解结果中该服务类型数量为:" + qty + ",已提交数为:" + count + ",剩余个数为:0,不能提交!");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 获取校验规则
|
|
|
|
+ // List<WmTaskSubmissionRule.SubmissionRule> taskSubmissionRule = this.getTaskSubmissionRule(wmTaskContent.getTemp30(), tWmScorePackage.getRelatedService());
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 校验提交数据
|
|
|
|
+ // this.checkTaskContent(tWmScorePackage, wmTaskContent, sysU.getUserId(), taskSubmissionRule);
|
|
|
|
+
|
|
|
|
+ Map<String, String> resultMap = new HashMap<>();
|
|
|
|
+ WmScorePackageStatus scorePackageStatus = statusList.get(0);
|
|
|
|
+ int score = 0;
|
|
|
|
+ if (this.save(wmTaskContent)) {
|
|
|
|
+ if (null != sysU) {
|
|
|
|
+ WmTask wmTask = new WmTask();
|
|
|
|
+ wmTask.setRemoteIp(ip);
|
|
|
|
+ wmTask.setIp2region(region);
|
|
|
|
+ wmTask.setTaskFrom("1");
|
|
|
|
+ LocalDateTime localDateTime = LocalDateTime.now();
|
|
|
|
+ wmTask.setUpdateTime(localDateTime);
|
|
|
|
+ // 任务提交人
|
|
|
|
+ wmTask.setTaskUserId(String.valueOf(sysU.getUserId()));
|
|
|
|
+ // 调研时间
|
|
|
|
+ wmTask.setLookintoDate(localDateTime);
|
|
|
|
+ wmTask.setDrugEntId(tWmScorePackage.getDrugEntId());
|
|
|
|
+ wmTask.setTaskTypeId(wmTaskContent.getTemp30());
|
|
|
|
+
|
|
|
|
+ WmTaskType wmTaskType = new WmTaskType();
|
|
|
|
+ wmTaskType.setRuleId(tWmScorePackage.getRuleId());
|
|
|
|
+ WmTaskType wmTaskType1 = wmTaskTypeService.getById(wmTaskContent.getTemp30());
|
|
|
|
+ wmTaskType.setTaskTypeName(wmTaskType1.getTaskTypeName());
|
|
|
|
+ score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType);
|
|
|
|
+
|
|
|
|
+ // 医院区分新增和修改,修改积分搞为1000 start
|
|
|
|
+ if ("15".equals(wmTaskContent.getTemp30()) || "30".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ System.err.println("医院区分新增和修改:" + score);
|
|
|
|
+ WmDaHospital wmDaHospital = new WmDaHospital();
|
|
|
|
+ wmDaHospital.setYymc(wmTaskContent.getTemp3());
|
|
|
|
+ if (wmDaHospitalMapper.selectCount(Wrappers.query(wmDaHospital)) != 0) {
|
|
|
|
+ WmTaskType wmTaskType2 = new WmTaskType();
|
|
|
|
+ WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
+ wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ wmTaskType2.setTaskTypeName("医院信息修改");
|
|
|
|
+ score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType2);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 医院区分新增和修改,修改积分搞为1000 end
|
|
|
|
+
|
|
|
|
+ // 2021-06-11 库存调查分成,首次调查和常规调查,常规调查走之前的逻辑 start
|
|
|
|
+ if ("31".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ WmTaskType wmTaskType2 = new WmTaskType();
|
|
|
|
+ WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
+ wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ wmTaskType2.setTaskTypeName("库存信息收集-首次");
|
|
|
|
+ score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType2);
|
|
|
|
+ }
|
|
|
|
+ // 2021-06-11 库存调查分成,首次调查和常规调查,常规调查走之前的逻辑 end
|
|
|
|
+
|
|
|
|
+ // 调剂服务 任务积分值 = 每一味积分值 * 调剂味数
|
|
|
|
+ if ("38".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ WmTaskType wmTaskType2 = new WmTaskType();
|
|
|
|
+ WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
+ wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ wmTaskType2.setTaskTypeName("调剂服务");
|
|
|
|
+ score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType2);
|
|
|
|
+ score = (int) Math.round(score * Double.parseDouble(wmTaskContent.getTemp24()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 应收账款回款-A类/应收账款回款-B类/应收账款回款-C类 积分值按照“回款总额”乘“回款类别”对应的百分比,四舍五入
|
|
|
|
+ if ("39".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ WmTaskType wmTaskType2 = new WmTaskType();
|
|
|
|
+ // 根据选择的回款类别 查任务类型模板
|
|
|
|
+ WmTaskType baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp23());
|
|
|
|
+ // 查询当前企业的任务类型积分
|
|
|
|
+ WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
+ wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ wmTaskType2.setTaskTypeName(baseTaskType.getTaskTypeName());
|
|
|
|
+ wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType2);
|
|
|
|
+ // 计算实际任务积分(任务积分值 = 每一味积分值 * 调剂味数),这里应收账款回款积分值存的是1000的倍数,所以需要除以1000
|
|
|
|
+ score = (int) Math.round(score * Double.parseDouble(wmTaskContent.getTemp8()) / 1000.0D);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 手术跟台-一级/手术跟台-二级/手术跟台-三级任务类型 积分值设置
|
|
|
|
+ if ("42".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ // 根据选择的跟台级别 设置积分值
|
|
|
|
+ String taskTypeId = "42";
|
|
|
|
+ switch (wmTaskContent.getTemp23()) {
|
|
|
|
+ case "1":
|
|
|
|
+ taskTypeId = "42";
|
|
|
|
+ break;
|
|
|
|
+ case "2":
|
|
|
|
+ taskTypeId = "43";
|
|
|
|
+ break;
|
|
|
|
+ case "3":
|
|
|
|
+ taskTypeId = "44";
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ }
|
|
|
|
+ WmTaskType baseTaskType = wmTaskTypeService.getById(taskTypeId);
|
|
|
|
+ // 查询当前企业的任务类型积分
|
|
|
|
+ WmTaskType wmTaskType2 = new WmTaskType();
|
|
|
|
+ WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
+ wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ wmTaskType2.setTaskTypeName(baseTaskType.getTaskTypeName());
|
|
|
|
+ wmTaskType2.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType2);
|
|
|
|
+ // 设置实际的任务类型
|
|
|
|
+ wmTaskContent.setTemp30(taskTypeId);
|
|
|
|
+ wmTask.setTaskTypeId(taskTypeId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 药店推广-47 积分值设置
|
|
|
|
+ if ("47".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ // 根据选择的推广类型 查任务类型模板
|
|
|
|
+ WmTaskType baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp23());
|
|
|
|
+ // 查询当前企业的任务类型积分
|
|
|
|
+ WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
+ WmTaskType queryTaskType = new WmTaskType();
|
|
|
|
+ queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ queryTaskType.setTaskTypeName(baseTaskType.getTaskTypeName());
|
|
|
|
+ queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ score = wmTaskTypeService.getWmTaskTypeByEnt(queryTaskType);
|
|
|
|
+ // 计算实际任务积分(数量*企业这个任务类型的积分值)
|
|
|
|
+ score = score * Integer.parseInt(wmTaskContent.getTemp13());
|
|
|
|
+ // 设置实际的任务类型
|
|
|
|
+ wmTaskContent.setTemp30(wmTaskContent.getTemp23());
|
|
|
|
+ wmTask.setTaskTypeId(wmTaskContent.getTemp23());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 信用管理A/B/C 积分值设置
|
|
|
|
+ // if ("51".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ // // 根据选择的信用等级 查任务类型模板
|
|
|
|
+ // WmTaskType baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp23());
|
|
|
|
+ // // 查询当前企业的任务类型积分
|
|
|
|
+ // WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
+ // WmTaskType queryTaskType = new WmTaskType();
|
|
|
|
+ // queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ // queryTaskType.setTaskTypeName(baseTaskType.getTaskTypeName());
|
|
|
|
+ // queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ // score = wmTaskTypeService.getWmTaskTypeByEnt(queryTaskType);
|
|
|
|
+ // // 设置实际的任务类型
|
|
|
|
+ // wmTaskContent.setTemp30(wmTaskContent.getTemp23());
|
|
|
|
+ // wmTask.setTaskTypeId(wmTaskContent.getTemp23());
|
|
|
|
+ //}
|
|
|
|
+ // 首营管理-诊所/药店
|
|
|
|
+ if ("56".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ // 根据选择的终端类型 查任务类型模板
|
|
|
|
+ WmTaskType baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp3());
|
|
|
|
+ // 查询当前企业的任务类型积分
|
|
|
|
+ WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTaskContent.getTemp32());
|
|
|
|
+ WmTaskType queryTaskType = new WmTaskType();
|
|
|
|
+ queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ queryTaskType.setTaskTypeName(baseTaskType.getTaskTypeName());
|
|
|
|
+ queryTaskType.setRuleId(wmScorePackage1.getRuleId());
|
|
|
|
+ score = wmTaskTypeService.getWmTaskTypeByEnt(queryTaskType);
|
|
|
|
+ // 设置实际的任务类型
|
|
|
|
+ wmTaskContent.setTemp30(wmTaskContent.getTemp3());
|
|
|
|
+ wmTask.setTaskTypeId(wmTaskContent.getTemp3());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 校验任务类型是否启用
|
|
|
|
+ WmTaskType _baseTaskType = wmTaskTypeService.getById(wmTaskContent.getTemp30());
|
|
|
|
+ WmTaskType queryTaskType = new WmTaskType();
|
|
|
|
+ queryTaskType.setRuleId(tWmScorePackage.getRuleId());
|
|
|
|
+ queryTaskType.setTaskTypeName(_baseTaskType.getTaskTypeName());
|
|
|
|
+ queryTaskType.setDelFlag("0");
|
|
|
|
+ List<WmTaskType> deptTaskTypes = wmTaskTypeService.list(Wrappers.query(queryTaskType));
|
|
|
|
+ if (CollUtil.isEmpty(deptTaskTypes)) {
|
|
|
|
+ throw new RuntimeException(_baseTaskType.getTaskTypeName() + "任务类型不存在");
|
|
|
|
+ }
|
|
|
|
+ if (EnableEnum.DISABLE.val().equals(deptTaskTypes.get(0).getEnableFlag())) {
|
|
|
|
+ throw new RuntimeException(_baseTaskType.getTaskTypeName() + "任务类型已停用");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ log.info("获取任务得分:{}", score);
|
|
|
|
+
|
|
|
|
+ if (score < 0) {
|
|
|
|
+ return R.failed("获取任务积分失败");
|
|
|
|
+ }
|
|
|
|
+ wmTask.setScore(score);
|
|
|
|
+
|
|
|
|
+ resultMap.put("score", tWmScorePackage.getPackageType1());
|
|
|
|
+ log.warn("获取积分包ID:{}", tWmScorePackage);
|
|
|
|
+
|
|
|
|
+ wmTask.setScorePackageId(tWmScorePackage.getId());
|
|
|
|
+ wmTask.setTaskRuleId(tWmScorePackage.getTaskRuleId());
|
|
|
|
+
|
|
|
|
+ wmTask.setTaskContentId(String.valueOf(wmTaskContent.getId()));
|
|
|
|
+
|
|
|
|
+ if (HnqzUtils.isZbRole(sysU.getRoleList(), 5)) {
|
|
|
|
+ wmTask.setTaskUserType("5");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ wmTask.setCreateTime(localDateTime);
|
|
|
|
+
|
|
|
|
+ if (HnqzUtils.isZbRole(sysU.getRoleList(), 6)) {
|
|
|
|
+ wmTask.setTaskUserType("6");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ wmTask.setDeptId(sysU.getDeptId() + "");
|
|
|
|
+ wmTask.setSubmitStatus("0");
|
|
|
|
+
|
|
|
|
+ // 不需要平台管理员审核的直接提交上级审核 taskStatus = 2 已提交 否则 taskStatus = 1 待提交
|
|
|
|
+ wmTask.setRealFlag("0");
|
|
|
|
+ wmTask.setTaskStatus("2");
|
|
|
|
+
|
|
|
|
+ wmTask.setTaskNumber(taskSequence.nextNo());
|
|
|
|
+ // 保存任务
|
|
|
|
+ boolean isSave = wmTaskService.save(wmTask);
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * 2020-12-21
|
|
|
|
+ * 15、30-医院 16-商业 18-药店
|
|
|
|
+ * 三类修改为平台管理员审核后才能在任务中心查出来
|
|
|
|
+ * realFlag 0-真实 1-非真实 9-审核中
|
|
|
|
+ *
|
|
|
|
+ * 2021-9-2 by lixuesong
|
|
|
|
+ * 去掉平台管理员审核,调整到个人任务审核
|
|
|
|
+ */
|
|
|
|
+ if ("15".equals(wmTaskContent.getTemp30())
|
|
|
|
+ || "16".equals(wmTaskContent.getTemp30())
|
|
|
|
+ || "30".equals(wmTaskContent.getTemp30())
|
|
|
|
+ || "18".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ // 校验调查信息审核,对比信息无改动则不可保存(15、30-医院 16-商业 18-药店)
|
|
|
|
+ R taskResult = wmTaskService.getSurveryTaskInfo(wmTask.getId());
|
|
|
|
+ Map<String, Object> data = (Map<String, Object>) taskResult.getData();
|
|
|
|
+ WmTask task = (WmTask) data.get("wmTask");
|
|
|
|
+ if ("3".equals(task.getCompareResult())) {
|
|
|
|
+ // 3-信息无变化,删除这条任务
|
|
|
|
+ wmTaskService.removeById(wmTask.getId());
|
|
|
|
+ this.removeById(wmTask.getTaskContentId());
|
|
|
|
+ return R.failed("信息无变化,不可提交");
|
|
|
|
+ }
|
|
|
|
+ resultMap.put("type", "3");
|
|
|
|
+ }
|
|
|
|
+ // 2020-12-21 end
|
|
|
|
+
|
|
|
|
+ // 判断任务是否完成
|
|
|
|
+ if (isSave) {
|
|
|
|
+ WmScorePackage wmScorePackage1 = wmScorePackageService.getById(tWmScorePackage.getId());
|
|
|
|
+ if (null != wmScorePackage1) {
|
|
|
|
+ WmTask taskQuery = new WmTask();
|
|
|
|
+ taskQuery.setScorePackageId(tWmScorePackage.getId());
|
|
|
|
+ QueryWrapper<WmTask> taskQueryWrapper = Wrappers.query(taskQuery);
|
|
|
|
+
|
|
|
|
+ // 查询出 审核通过和审核中的任务
|
|
|
|
+ taskQueryWrapper.lambda()
|
|
|
|
+ .ne(WmTask::getTaskStatus, "4")
|
|
|
|
+ .eq(WmTask::getRealFlag, "0");
|
|
// .ne(WmTask::getRealFlag, "1");
|
|
// .ne(WmTask::getRealFlag, "1");
|
|
- List<WmTask> wmTaskList = wmTaskService.list(taskQueryWrapper);
|
|
|
|
-
|
|
|
|
- // 判断定量还是定额 1- 定额 2-定量
|
|
|
|
- if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
|
|
|
|
-
|
|
|
|
- int totalCount = 0;
|
|
|
|
- for (WmTask wmtask : wmTaskList) {
|
|
|
|
- totalCount += wmtask.getScore();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (totalCount >= wmScorePackage1.getScore()) {
|
|
|
|
- wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
- scorePackageStatus.setTaskAddFlag("0");
|
|
|
|
- wmScorePackageStatusService.updateById(scorePackageStatus);
|
|
|
|
- }
|
|
|
|
- resultMap.put("type", "1");
|
|
|
|
- } else if (StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
|
|
|
|
- // 多人积分包处理
|
|
|
|
- int totalCount = 0;
|
|
|
|
- for (WmTask wmtask : wmTaskList) {
|
|
|
|
- totalCount += wmtask.getScore();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (totalCount >= wmScorePackage1.getScore()) {
|
|
|
|
- wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
- List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
|
|
|
|
- .eq(WmScorePackageStatus::getStatus, "2")
|
|
|
|
- .eq(WmScorePackageStatus::getTaskAddFlag, "1")
|
|
|
|
- .eq(WmScorePackageStatus::getPackageId, tWmScorePackage.getId()));
|
|
|
|
- if (CollUtil.isNotEmpty(packageStatusList)) {
|
|
|
|
- packageStatusList.forEach(packageStatus -> {
|
|
|
|
- WmScorePackageStatus updatePackageStatus = new WmScorePackageStatus();
|
|
|
|
- updatePackageStatus.setId(packageStatus.getId());
|
|
|
|
- updatePackageStatus.setTaskAddFlag("0");
|
|
|
|
- updatePackageStatus.setUpdateTime(LocalDateTime.now());
|
|
|
|
- wmScorePackageStatusService.updateById(updatePackageStatus);
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- resultMap.put("type", "1");
|
|
|
|
- } else if ("2".equals(wmScorePackage1.getPackageType1()) || "3".equals(wmScorePackage1.getPackageType1())) {
|
|
|
|
- score = 0;
|
|
|
|
-
|
|
|
|
- List<WmTask> userTaskList = wmTaskList.stream().filter(item ->
|
|
|
|
- item.getTaskUserId().equals(sysU.getUserId() + "")).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- if (userTaskList.size() >= scorePackageStatus.getTaskNum()) {
|
|
|
|
- scorePackageStatus.setTaskAddFlag("0");
|
|
|
|
- wmScorePackageStatusService.updateById(scorePackageStatus);
|
|
|
|
-
|
|
|
|
- // 改变大包状态
|
|
|
|
- WmScorePackageStatus queryAll = new WmScorePackageStatus();
|
|
|
|
- queryAll.setPackageId(tWmScorePackage.getId());
|
|
|
|
- queryAll.setStatus("2");
|
|
|
|
- queryAll.setTaskAddFlag("0");
|
|
|
|
- List<WmScorePackageStatus> statusAll = wmScorePackageStatusService.
|
|
|
|
- list(Wrappers.query(queryAll));
|
|
|
|
- if (new BigDecimal(wmScorePackage1.getUserNum())
|
|
|
|
- .compareTo(new BigDecimal(statusAll.size())) <= 0) {
|
|
|
|
- wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- resultMap.put("type", "2");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- wmScorePackage1.setIsConduct("1");
|
|
|
|
- wmScorePackageService.updateById(wmScorePackage1);
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- } else {
|
|
|
|
- return R.failed("任务保存失败");
|
|
|
|
- }
|
|
|
|
- //保存打卡记录
|
|
|
|
- if ("5".equals(wmTaskContent.getTemp30()) || "6".equals(wmTaskContent.getTemp30()) || "33".equals(wmTaskContent.getTemp30())) {
|
|
|
|
- WmUserSign wmUserSign = new WmUserSign();
|
|
|
|
- wmUserSign.setSignEntType(wmTaskContent.getTemp29());
|
|
|
|
- wmUserSign.setSignEntName(wmTaskContent.getTemp7());
|
|
|
|
- wmUserSign.setLatitude(wmTaskContent.getTemp28());
|
|
|
|
- wmUserSign.setLongitude(wmTaskContent.getTemp26());
|
|
|
|
- wmUserSign.setSignUserid(wmTaskContent.getTemp25());
|
|
|
|
- wmUserSign.setSignEntId(wmTaskContent.getTemp24());
|
|
|
|
- wmUserSign.setSignDate(localDateTime);
|
|
|
|
- wmUserSignMapper.insert(wmUserSign);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 推送任务h5截图
|
|
|
|
- applicationEventPublisher.publishEvent(new TaskInfoImgEvent(wmTask.getId()));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- resultMap.put("score", String.valueOf(score));
|
|
|
|
- return R.ok(resultMap);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 三方提交任务
|
|
|
|
- *
|
|
|
|
- * @param resource 任务信息
|
|
|
|
- * @return 创建结果
|
|
|
|
- */
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public boolean saveTaskContent1(WmTaskDTO.OnOutPartyCreate resource) {
|
|
|
|
-
|
|
|
|
- final String pkgId = resource.getPkgId();
|
|
|
|
- final String username = resource.getUsername();
|
|
|
|
- final String taskTypeId = resource.getTaskTypeId();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // 获取积分包
|
|
|
|
- WmScorePackage tWmScorePackage = wmScorePackageService.getById(pkgId);
|
|
|
|
- if (tWmScorePackage == null) {
|
|
|
|
- log.error("当前企业不存在,ID为[{}]的积分包", pkgId);
|
|
|
|
- throw new BizException("积分包不存在");
|
|
|
|
- }
|
|
|
|
- if (LocalDate.now().isAfter(tWmScorePackage.getEndTime())) {
|
|
|
|
- throw new BizException("当前积分包已过截止日期");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- Integer deptId = Integer.parseInt(tWmScorePackage.getDeptId());
|
|
|
|
- log.info("获取企业ID: [{}]", deptId);
|
|
|
|
-
|
|
|
|
- // 校验
|
|
|
|
- SysUser user = sysUserService.getOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getDeptId, deptId).eq(SysUser::getUsername, username)
|
|
|
|
- .eq(SysUser::getDelFlag, CommonConstants.STATUS_NORMAL)
|
|
|
|
- .eq(SysUser::getLockFlag, CommonConstants.STATUS_NORMAL)
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- if (user == null) {
|
|
|
|
- log.error("当前企业不存在,手机号为[{}]的人员", username);
|
|
|
|
- throw new BizException("人员不存在");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- UserVO sysU = sysUserService.selectUserVoById(user.getUserId());
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // 校验超过60周岁,不能做任务
|
|
|
|
- Map<String, String> checkResult = sysUserService.checkSixtyYearsOld(sysU);
|
|
|
|
- if (CollUtil.isNotEmpty(checkResult) && checkResult.containsKey("OVER")) {
|
|
|
|
- log.error("当前人员超过60周岁");
|
|
|
|
- throw new BizException(checkResult.get("OVER"));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- List<WmScorePackageStatus> statusList = checkPackageStatus(sysU.getUserId(), tWmScorePackage.getId());
|
|
|
|
-
|
|
|
|
- // 查询任务类型启用状态
|
|
|
|
- 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)) {
|
|
|
|
- log.error("当前企业未开启该任务");
|
|
|
|
- throw new BizException("当前企业未开启该任务!");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
|
|
|
|
- if (!ArrayUtil.contains(taskTypeIds, taskTypeId)) {
|
|
|
|
- log.error("当前企业未开启该任务");
|
|
|
|
- throw new BizException("当前企业未开启该任务!");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 检验分值 3W
|
|
|
|
- this.limitScore(sysU.getUserId(), deptId, tWmScorePackage.getPackageType1());
|
|
|
|
-
|
|
|
|
- // 保存详情
|
|
|
|
- WmTaskContent taskContent = new WmTaskContent();
|
|
|
|
- taskContent.setTemp28(JSONUtil.toJsonStr(resource.getResult()));
|
|
|
|
- taskContent.setTemp29(JSONUtil.toJsonStr(resource.getResult()));
|
|
|
|
- taskContent.setTemp30(taskTypeId);
|
|
|
|
- taskContent.setTemp32(pkgId);
|
|
|
|
- boolean save = this.save(taskContent);
|
|
|
|
-
|
|
|
|
- WmScorePackageStatus scorePackageStatus = statusList.get(0);
|
|
|
|
- if (save) {
|
|
|
|
-
|
|
|
|
- WmTask wmTask = new WmTask();
|
|
|
|
- wmTask.setTaskFrom("1");
|
|
|
|
- LocalDateTime now = LocalDateTime.now();
|
|
|
|
- wmTask.setUpdateTime(now);
|
|
|
|
- wmTask.setCreateTime(now);
|
|
|
|
- wmTask.setTaskUserId(String.valueOf(sysU.getUserId()));
|
|
|
|
- wmTask.setLookintoDate(now);
|
|
|
|
- wmTask.setDrugEntId(tWmScorePackage.getDrugEntId());
|
|
|
|
- wmTask.setTaskTypeId(taskTypeId);
|
|
|
|
-
|
|
|
|
- WmTaskType wmTaskType = new WmTaskType();
|
|
|
|
- wmTaskType.setRuleId(tWmScorePackage.getRuleId());
|
|
|
|
- WmTaskType wmTaskType1 = wmTaskTypeService.getById(taskTypeId);
|
|
|
|
- wmTaskType.setTaskTypeName(wmTaskType1.getTaskTypeName());
|
|
|
|
- int score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // 校验任务类型是否启用
|
|
|
|
- WmTaskType _baseTaskType = wmTaskTypeService.getById(taskTypeId);
|
|
|
|
- WmTaskType queryTaskType = new WmTaskType();
|
|
|
|
- queryTaskType.setRuleId(tWmScorePackage.getRuleId());
|
|
|
|
- queryTaskType.setTaskTypeName(_baseTaskType.getTaskTypeName());
|
|
|
|
- queryTaskType.setDelFlag("0");
|
|
|
|
- List<WmTaskType> deptTaskTypes = wmTaskTypeService.list(Wrappers.query(queryTaskType));
|
|
|
|
- if (CollUtil.isEmpty(deptTaskTypes)) {
|
|
|
|
- throw new BizException(_baseTaskType.getTaskTypeName() + "任务类型不存在");
|
|
|
|
- }
|
|
|
|
- if (EnableEnum.DISABLE.val().equals(deptTaskTypes.get(0).getEnableFlag())) {
|
|
|
|
- throw new BizException(_baseTaskType.getTaskTypeName() + "任务类型已停用");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- log.info("获取任务得分:{}", score);
|
|
|
|
-
|
|
|
|
- if (score < 0) {
|
|
|
|
- throw new BizException("获取任务积分失败");
|
|
|
|
- }
|
|
|
|
- wmTask.setScore(score);
|
|
|
|
-
|
|
|
|
- log.warn("获取积分包ID:{}", tWmScorePackage);
|
|
|
|
- wmTask.setScorePackageId(tWmScorePackage.getId());
|
|
|
|
- wmTask.setTaskRuleId(tWmScorePackage.getTaskRuleId());
|
|
|
|
-
|
|
|
|
- wmTask.setTaskContentId(String.valueOf(taskContent.getId()));
|
|
|
|
-
|
|
|
|
- if (HnqzUtils.isZbRole(sysU.getRoleList(), 5)) {
|
|
|
|
- wmTask.setTaskUserType("5");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (HnqzUtils.isZbRole(sysU.getRoleList(), 6)) {
|
|
|
|
- wmTask.setTaskUserType("6");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- wmTask.setDeptId(deptId.toString());
|
|
|
|
- wmTask.setSubmitStatus("0");
|
|
|
|
-
|
|
|
|
- // 不需要平台管理员审核的直接提交上级审核 taskStatus = 2 已提交 否则 taskStatus = 1 待提交
|
|
|
|
- wmTask.setRealFlag("0");
|
|
|
|
- wmTask.setTaskStatus("2");
|
|
|
|
-
|
|
|
|
- wmTask.setTaskNumber(taskSequence.nextNo());
|
|
|
|
- //保存任务
|
|
|
|
- boolean isSave = wmTaskService.save(wmTask);
|
|
|
|
-
|
|
|
|
- //判断任务是否完成
|
|
|
|
- if (isSave) {
|
|
|
|
- WmScorePackage wmScorePackage1 = wmScorePackageService.getById(tWmScorePackage.getId());
|
|
|
|
- if (null != wmScorePackage1) {
|
|
|
|
- WmTask taskQuery = new WmTask();
|
|
|
|
- taskQuery.setScorePackageId(tWmScorePackage.getId());
|
|
|
|
- QueryWrapper<WmTask> taskQueryWrapper = Wrappers.query(taskQuery);
|
|
|
|
-
|
|
|
|
- // 查询出 审核通过和审核中的任务
|
|
|
|
- taskQueryWrapper.lambda()
|
|
|
|
- .ne(WmTask::getTaskStatus, "4")
|
|
|
|
- .eq(WmTask::getRealFlag, "0");
|
|
|
|
- List<WmTask> wmTaskList = wmTaskService.list(taskQueryWrapper);
|
|
|
|
-
|
|
|
|
- // 判断定量还是定额 1- 定额 2-定量
|
|
|
|
- if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
|
|
|
|
-
|
|
|
|
- int totalCount = 0;
|
|
|
|
- for (WmTask wmtask : wmTaskList) {
|
|
|
|
- totalCount += wmtask.getScore();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (totalCount >= wmScorePackage1.getScore()) {
|
|
|
|
- wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
- scorePackageStatus.setTaskAddFlag("0");
|
|
|
|
- wmScorePackageStatusService.updateById(scorePackageStatus);
|
|
|
|
- }
|
|
|
|
- } else if (StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
|
|
|
|
- // 多人积分包处理
|
|
|
|
- int totalCount = 0;
|
|
|
|
- for (WmTask wmtask : wmTaskList) {
|
|
|
|
- totalCount += wmtask.getScore();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (totalCount >= wmScorePackage1.getScore()) {
|
|
|
|
- wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
- List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
|
|
|
|
- .eq(WmScorePackageStatus::getStatus, "2")
|
|
|
|
- .eq(WmScorePackageStatus::getTaskAddFlag, "1")
|
|
|
|
- .eq(WmScorePackageStatus::getPackageId, tWmScorePackage.getId()));
|
|
|
|
- if (CollUtil.isNotEmpty(packageStatusList)) {
|
|
|
|
- packageStatusList.forEach(packageStatus -> {
|
|
|
|
- WmScorePackageStatus updatePackageStatus = new WmScorePackageStatus();
|
|
|
|
- updatePackageStatus.setId(packageStatus.getId());
|
|
|
|
- updatePackageStatus.setTaskAddFlag("0");
|
|
|
|
- updatePackageStatus.setUpdateTime(LocalDateTime.now());
|
|
|
|
- wmScorePackageStatusService.updateById(updatePackageStatus);
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- } else if ("2".equals(wmScorePackage1.getPackageType1()) || "3".equals(wmScorePackage1.getPackageType1())) {
|
|
|
|
- score = 0;
|
|
|
|
-
|
|
|
|
- List<WmTask> userTaskList = wmTaskList.stream().filter(item ->
|
|
|
|
- item.getTaskUserId().equals(sysU.getUserId() + "")).collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- if (userTaskList.size() >= scorePackageStatus.getTaskNum()) {
|
|
|
|
- scorePackageStatus.setTaskAddFlag("0");
|
|
|
|
- wmScorePackageStatusService.updateById(scorePackageStatus);
|
|
|
|
-
|
|
|
|
- // 改变大包状态
|
|
|
|
- WmScorePackageStatus queryAll = new WmScorePackageStatus();
|
|
|
|
- queryAll.setPackageId(tWmScorePackage.getId());
|
|
|
|
- queryAll.setStatus("2");
|
|
|
|
- queryAll.setTaskAddFlag("0");
|
|
|
|
- List<WmScorePackageStatus> statusAll = wmScorePackageStatusService.
|
|
|
|
- list(Wrappers.query(queryAll));
|
|
|
|
- if (new BigDecimal(wmScorePackage1.getUserNum())
|
|
|
|
- .compareTo(new BigDecimal(statusAll.size())) <= 0) {
|
|
|
|
- wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- wmScorePackage1.setIsConduct("1");
|
|
|
|
- wmScorePackageService.updateById(wmScorePackage1);
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- } else {
|
|
|
|
- throw new BizException("任务保存失败");
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- throw new BizException("任务详情保存失败");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
|
|
+ List<WmTask> wmTaskList = wmTaskService.list(taskQueryWrapper);
|
|
|
|
+
|
|
|
|
+ // 判断定量还是定额 1- 定额 2-定量
|
|
|
|
+ if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
|
|
|
|
+
|
|
|
|
+ int totalCount = 0;
|
|
|
|
+ for (WmTask wmtask : wmTaskList) {
|
|
|
|
+ totalCount += wmtask.getScore();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (totalCount >= wmScorePackage1.getScore()) {
|
|
|
|
+ wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
+ scorePackageStatus.setTaskAddFlag("0");
|
|
|
|
+ wmScorePackageStatusService.updateById(scorePackageStatus);
|
|
|
|
+ }
|
|
|
|
+ resultMap.put("type", "1");
|
|
|
|
+ } else if (StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
|
|
|
|
+ // 多人积分包处理
|
|
|
|
+ int totalCount = 0;
|
|
|
|
+ for (WmTask wmtask : wmTaskList) {
|
|
|
|
+ totalCount += wmtask.getScore();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (totalCount >= wmScorePackage1.getScore()) {
|
|
|
|
+ wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
+ List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
|
|
|
|
+ .eq(WmScorePackageStatus::getStatus, "2")
|
|
|
|
+ .eq(WmScorePackageStatus::getTaskAddFlag, "1")
|
|
|
|
+ .eq(WmScorePackageStatus::getPackageId, tWmScorePackage.getId()));
|
|
|
|
+ if (CollUtil.isNotEmpty(packageStatusList)) {
|
|
|
|
+ packageStatusList.forEach(packageStatus -> {
|
|
|
|
+ WmScorePackageStatus updatePackageStatus = new WmScorePackageStatus();
|
|
|
|
+ updatePackageStatus.setId(packageStatus.getId());
|
|
|
|
+ updatePackageStatus.setTaskAddFlag("0");
|
|
|
|
+ updatePackageStatus.setUpdateTime(LocalDateTime.now());
|
|
|
|
+ wmScorePackageStatusService.updateById(updatePackageStatus);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ resultMap.put("type", "1");
|
|
|
|
+ } else if ("2".equals(wmScorePackage1.getPackageType1()) || "3".equals(wmScorePackage1.getPackageType1())) {
|
|
|
|
+ score = 0;
|
|
|
|
+
|
|
|
|
+ List<WmTask> userTaskList = wmTaskList.stream().filter(item ->
|
|
|
|
+ item.getTaskUserId().equals(sysU.getUserId() + "")).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ if (userTaskList.size() >= scorePackageStatus.getTaskNum()) {
|
|
|
|
+ scorePackageStatus.setTaskAddFlag("0");
|
|
|
|
+ wmScorePackageStatusService.updateById(scorePackageStatus);
|
|
|
|
+
|
|
|
|
+ // 改变大包状态
|
|
|
|
+ WmScorePackageStatus queryAll = new WmScorePackageStatus();
|
|
|
|
+ queryAll.setPackageId(tWmScorePackage.getId());
|
|
|
|
+ queryAll.setStatus("2");
|
|
|
|
+ queryAll.setTaskAddFlag("0");
|
|
|
|
+ List<WmScorePackageStatus> statusAll = wmScorePackageStatusService.
|
|
|
|
+ list(Wrappers.query(queryAll));
|
|
|
|
+ if (new BigDecimal(wmScorePackage1.getUserNum())
|
|
|
|
+ .compareTo(new BigDecimal(statusAll.size())) <= 0) {
|
|
|
|
+ wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ resultMap.put("type", "2");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ wmScorePackage1.setIsConduct("1");
|
|
|
|
+ wmScorePackageService.updateById(wmScorePackage1);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ return R.failed("任务保存失败");
|
|
|
|
+ }
|
|
|
|
+ // 保存打卡记录
|
|
|
|
+ if ("5".equals(wmTaskContent.getTemp30()) || "6".equals(wmTaskContent.getTemp30()) || "33".equals(wmTaskContent.getTemp30())) {
|
|
|
|
+ WmUserSign wmUserSign = new WmUserSign();
|
|
|
|
+ wmUserSign.setSignEntType(wmTaskContent.getTemp29());
|
|
|
|
+ wmUserSign.setSignEntName(wmTaskContent.getTemp7());
|
|
|
|
+ wmUserSign.setLatitude(wmTaskContent.getTemp28());
|
|
|
|
+ wmUserSign.setLongitude(wmTaskContent.getTemp26());
|
|
|
|
+ wmUserSign.setSignUserid(wmTaskContent.getTemp25());
|
|
|
|
+ wmUserSign.setSignEntId(wmTaskContent.getTemp24());
|
|
|
|
+ wmUserSign.setSignDate(localDateTime);
|
|
|
|
+ wmUserSignMapper.insert(wmUserSign);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 推送任务h5截图
|
|
|
|
+ applicationEventPublisher.publishEvent(new TaskInfoImgEvent(wmTask.getId()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ resultMap.put("score", String.valueOf(score));
|
|
|
|
+ return R.ok(resultMap);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 三方提交任务
|
|
|
|
+ *
|
|
|
|
+ * @param resource 任务信息
|
|
|
|
+ * @return 创建结果
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public boolean saveTaskContent1(WmTaskDTO.OnOutPartyCreate resource) {
|
|
|
|
+
|
|
|
|
+ final String pkgId = resource.getPkgId();
|
|
|
|
+ final String username = resource.getUsername();
|
|
|
|
+ final String taskTypeId = resource.getTaskTypeId();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 获取积分包
|
|
|
|
+ WmScorePackage tWmScorePackage = wmScorePackageService.getById(pkgId);
|
|
|
|
+ if (tWmScorePackage == null) {
|
|
|
|
+ log.error("当前企业不存在,ID为[{}]的积分包", pkgId);
|
|
|
|
+ throw new BizException("积分包不存在");
|
|
|
|
+ }
|
|
|
|
+ if (LocalDate.now().isAfter(tWmScorePackage.getEndTime())) {
|
|
|
|
+ throw new BizException("当前积分包已过截止日期");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Integer deptId = Integer.parseInt(tWmScorePackage.getDeptId());
|
|
|
|
+ log.info("获取企业ID: [{}]", deptId);
|
|
|
|
+
|
|
|
|
+ // 校验
|
|
|
|
+ SysUser user = sysUserService.getOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getDeptId, deptId).eq(SysUser::getUsername, username)
|
|
|
|
+ .eq(SysUser::getDelFlag, CommonConstants.STATUS_NORMAL)
|
|
|
|
+ .eq(SysUser::getLockFlag, CommonConstants.STATUS_NORMAL)
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ if (user == null) {
|
|
|
|
+ log.error("当前企业不存在,手机号为[{}]的人员", username);
|
|
|
|
+ throw new BizException("人员不存在");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ UserVO sysU = sysUserService.selectUserVoById(user.getUserId());
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 校验超过60周岁,不能做任务
|
|
|
|
+ Map<String, String> checkResult = sysUserService.checkSixtyYearsOld(sysU);
|
|
|
|
+ if (CollUtil.isNotEmpty(checkResult) && checkResult.containsKey("OVER")) {
|
|
|
|
+ log.error("当前人员超过60周岁");
|
|
|
|
+ throw new BizException(checkResult.get("OVER"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<WmScorePackageStatus> statusList = checkPackageStatus(sysU.getUserId(), tWmScorePackage.getId());
|
|
|
|
+
|
|
|
|
+ // 查询任务类型启用状态
|
|
|
|
+ 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)) {
|
|
|
|
+ log.error("当前企业未开启该任务");
|
|
|
|
+ throw new BizException("当前企业未开启该任务!");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
|
|
|
|
+ if (!ArrayUtil.contains(taskTypeIds, taskTypeId)) {
|
|
|
|
+ log.error("当前企业未开启该任务");
|
|
|
|
+ throw new BizException("当前企业未开启该任务!");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 检验分值 3W
|
|
|
|
+ this.limitScore(sysU.getUserId(), deptId, tWmScorePackage.getPackageType1());
|
|
|
|
+
|
|
|
|
+ // 保存详情
|
|
|
|
+ WmTaskContent taskContent = new WmTaskContent();
|
|
|
|
+ taskContent.setTemp28(JSONUtil.toJsonStr(resource.getResult()));
|
|
|
|
+ taskContent.setTemp29(JSONUtil.toJsonStr(resource.getResult()));
|
|
|
|
+ taskContent.setTemp30(taskTypeId);
|
|
|
|
+ taskContent.setTemp32(pkgId);
|
|
|
|
+ boolean save = this.save(taskContent);
|
|
|
|
+
|
|
|
|
+ WmScorePackageStatus scorePackageStatus = statusList.get(0);
|
|
|
|
+ if (save) {
|
|
|
|
+
|
|
|
|
+ WmTask wmTask = new WmTask();
|
|
|
|
+ wmTask.setTaskFrom("1");
|
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
|
+ wmTask.setUpdateTime(now);
|
|
|
|
+ wmTask.setCreateTime(now);
|
|
|
|
+ wmTask.setTaskUserId(String.valueOf(sysU.getUserId()));
|
|
|
|
+ wmTask.setLookintoDate(now);
|
|
|
|
+ wmTask.setDrugEntId(tWmScorePackage.getDrugEntId());
|
|
|
|
+ wmTask.setTaskTypeId(taskTypeId);
|
|
|
|
+
|
|
|
|
+ WmTaskType wmTaskType = new WmTaskType();
|
|
|
|
+ wmTaskType.setRuleId(tWmScorePackage.getRuleId());
|
|
|
|
+ WmTaskType wmTaskType1 = wmTaskTypeService.getById(taskTypeId);
|
|
|
|
+ wmTaskType.setTaskTypeName(wmTaskType1.getTaskTypeName());
|
|
|
|
+ int score = wmTaskTypeService.getWmTaskTypeByEnt(wmTaskType);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 校验任务类型是否启用
|
|
|
|
+ WmTaskType _baseTaskType = wmTaskTypeService.getById(taskTypeId);
|
|
|
|
+ WmTaskType queryTaskType = new WmTaskType();
|
|
|
|
+ queryTaskType.setRuleId(tWmScorePackage.getRuleId());
|
|
|
|
+ queryTaskType.setTaskTypeName(_baseTaskType.getTaskTypeName());
|
|
|
|
+ queryTaskType.setDelFlag("0");
|
|
|
|
+ List<WmTaskType> deptTaskTypes = wmTaskTypeService.list(Wrappers.query(queryTaskType));
|
|
|
|
+ if (CollUtil.isEmpty(deptTaskTypes)) {
|
|
|
|
+ throw new BizException(_baseTaskType.getTaskTypeName() + "任务类型不存在");
|
|
|
|
+ }
|
|
|
|
+ if (EnableEnum.DISABLE.val().equals(deptTaskTypes.get(0).getEnableFlag())) {
|
|
|
|
+ throw new BizException(_baseTaskType.getTaskTypeName() + "任务类型已停用");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ log.info("获取任务得分:{}", score);
|
|
|
|
+
|
|
|
|
+ if (score < 0) {
|
|
|
|
+ throw new BizException("获取任务积分失败");
|
|
|
|
+ }
|
|
|
|
+ wmTask.setScore(score);
|
|
|
|
+
|
|
|
|
+ log.warn("获取积分包ID:{}", tWmScorePackage);
|
|
|
|
+ wmTask.setScorePackageId(tWmScorePackage.getId());
|
|
|
|
+ wmTask.setTaskRuleId(tWmScorePackage.getTaskRuleId());
|
|
|
|
+
|
|
|
|
+ wmTask.setTaskContentId(String.valueOf(taskContent.getId()));
|
|
|
|
+
|
|
|
|
+ if (HnqzUtils.isZbRole(sysU.getRoleList(), 5)) {
|
|
|
|
+ wmTask.setTaskUserType("5");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (HnqzUtils.isZbRole(sysU.getRoleList(), 6)) {
|
|
|
|
+ wmTask.setTaskUserType("6");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ wmTask.setDeptId(deptId.toString());
|
|
|
|
+ wmTask.setSubmitStatus("0");
|
|
|
|
+
|
|
|
|
+ // 不需要平台管理员审核的直接提交上级审核 taskStatus = 2 已提交 否则 taskStatus = 1 待提交
|
|
|
|
+ wmTask.setRealFlag("0");
|
|
|
|
+ wmTask.setTaskStatus("2");
|
|
|
|
+
|
|
|
|
+ wmTask.setTaskNumber(taskSequence.nextNo());
|
|
|
|
+ // 保存任务
|
|
|
|
+ boolean isSave = wmTaskService.save(wmTask);
|
|
|
|
+
|
|
|
|
+ // 判断任务是否完成
|
|
|
|
+ if (isSave) {
|
|
|
|
+ WmScorePackage wmScorePackage1 = wmScorePackageService.getById(tWmScorePackage.getId());
|
|
|
|
+ if (null != wmScorePackage1) {
|
|
|
|
+ WmTask taskQuery = new WmTask();
|
|
|
|
+ taskQuery.setScorePackageId(tWmScorePackage.getId());
|
|
|
|
+ QueryWrapper<WmTask> taskQueryWrapper = Wrappers.query(taskQuery);
|
|
|
|
+
|
|
|
|
+ // 查询出 审核通过和审核中的任务
|
|
|
|
+ taskQueryWrapper.lambda()
|
|
|
|
+ .ne(WmTask::getTaskStatus, "4")
|
|
|
|
+ .eq(WmTask::getRealFlag, "0");
|
|
|
|
+ List<WmTask> wmTaskList = wmTaskService.list(taskQueryWrapper);
|
|
|
|
+
|
|
|
|
+ // 判断定量还是定额 1- 定额 2-定量
|
|
|
|
+ if (StrUtil.equals(PackageTypeEnum.TYPE1_SCOTE_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
|
|
|
|
+
|
|
|
|
+ int totalCount = 0;
|
|
|
|
+ for (WmTask wmtask : wmTaskList) {
|
|
|
|
+ totalCount += wmtask.getScore();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (totalCount >= wmScorePackage1.getScore()) {
|
|
|
|
+ wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
+ scorePackageStatus.setTaskAddFlag("0");
|
|
|
|
+ wmScorePackageStatusService.updateById(scorePackageStatus);
|
|
|
|
+ }
|
|
|
|
+ } else if (StrUtil.equals(PackageTypeEnum.TYPE1_SCORE_AND_TASK_PACKAGE.val(), wmScorePackage1.getPackageType1())) {
|
|
|
|
+ // 多人积分包处理
|
|
|
|
+ int totalCount = 0;
|
|
|
|
+ for (WmTask wmtask : wmTaskList) {
|
|
|
|
+ totalCount += wmtask.getScore();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (totalCount >= wmScorePackage1.getScore()) {
|
|
|
|
+ wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
+ List<WmScorePackageStatus> packageStatusList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
|
|
|
|
+ .eq(WmScorePackageStatus::getStatus, "2")
|
|
|
|
+ .eq(WmScorePackageStatus::getTaskAddFlag, "1")
|
|
|
|
+ .eq(WmScorePackageStatus::getPackageId, tWmScorePackage.getId()));
|
|
|
|
+ if (CollUtil.isNotEmpty(packageStatusList)) {
|
|
|
|
+ packageStatusList.forEach(packageStatus -> {
|
|
|
|
+ WmScorePackageStatus updatePackageStatus = new WmScorePackageStatus();
|
|
|
|
+ updatePackageStatus.setId(packageStatus.getId());
|
|
|
|
+ updatePackageStatus.setTaskAddFlag("0");
|
|
|
|
+ updatePackageStatus.setUpdateTime(LocalDateTime.now());
|
|
|
|
+ wmScorePackageStatusService.updateById(updatePackageStatus);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if ("2".equals(wmScorePackage1.getPackageType1()) || "3".equals(wmScorePackage1.getPackageType1())) {
|
|
|
|
+ score = 0;
|
|
|
|
+
|
|
|
|
+ List<WmTask> userTaskList = wmTaskList.stream().filter(item ->
|
|
|
|
+ item.getTaskUserId().equals(sysU.getUserId() + "")).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ if (userTaskList.size() >= scorePackageStatus.getTaskNum()) {
|
|
|
|
+ scorePackageStatus.setTaskAddFlag("0");
|
|
|
|
+ wmScorePackageStatusService.updateById(scorePackageStatus);
|
|
|
|
+
|
|
|
|
+ // 改变大包状态
|
|
|
|
+ WmScorePackageStatus queryAll = new WmScorePackageStatus();
|
|
|
|
+ queryAll.setPackageId(tWmScorePackage.getId());
|
|
|
|
+ queryAll.setStatus("2");
|
|
|
|
+ queryAll.setTaskAddFlag("0");
|
|
|
|
+ List<WmScorePackageStatus> statusAll = wmScorePackageStatusService.
|
|
|
|
+ list(Wrappers.query(queryAll));
|
|
|
|
+ if (new BigDecimal(wmScorePackage1.getUserNum())
|
|
|
|
+ .compareTo(new BigDecimal(statusAll.size())) <= 0) {
|
|
|
|
+ wmScorePackage1.setTaskAddFlag("0");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ wmScorePackage1.setIsConduct("1");
|
|
|
|
+ wmScorePackageService.updateById(wmScorePackage1);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ throw new BizException("任务保存失败");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ throw new BizException("任务详情保存失败");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|