|
@@ -0,0 +1,153 @@
|
|
|
+package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.util.ArrayUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskSubmissionPercentRule;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.WmTask;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.WmTaskContent;
|
|
|
+import com.qunzhixinxi.hnqz.admin.entity.dto.DeptTaskDTO;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmDeptTaskService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.WmTaskSubmissionPercentRuleService;
|
|
|
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
|
|
|
+import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
|
+import com.qunzhixinxi.hnqz.common.sequence.sequence.Sequence;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 企业任务服务
|
|
|
+ *
|
|
|
+ * @author lixuesong
|
|
|
+ * @date 2023/09/21
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class WmDeptTaskServiceImpl implements WmDeptTaskService {
|
|
|
+
|
|
|
+ private final WmTaskSubmissionPercentRuleService wmTaskSubmissionPercentRuleService;
|
|
|
+ private final WmScorePackageService wmScorePackageService;
|
|
|
+ private final WmTaskContentService wmTaskContentService;
|
|
|
+ private final WmTaskService wmTaskService;
|
|
|
+ private final Sequence taskSequence;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 企业任务保存-企业通用
|
|
|
+ *
|
|
|
+ * @param params 参数
|
|
|
+ * @return {@link Boolean} 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean saveEntTaskForTaskType61(DeptTaskDTO.TaskType61 params) {
|
|
|
+
|
|
|
+ HnqzUser user = SecurityUtils.getUser();
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+
|
|
|
+ // 查询任务类型启用状态
|
|
|
+ List<WmTaskSubmissionPercentRule> rules = wmTaskSubmissionPercentRuleService.list(Wrappers.<WmTaskSubmissionPercentRule>lambdaQuery()
|
|
|
+ .eq(WmTaskSubmissionPercentRule::getDeptId, user.getDeptId())
|
|
|
+ .eq(WmTaskSubmissionPercentRule::getSubCategory, UpmsType.TaskSubCategory2.TASK_TYPE_CONFIG));
|
|
|
+ if (CollUtil.isEmpty(rules)) {
|
|
|
+ throw new RuntimeException("当前企业未开启该任务!");
|
|
|
+ }
|
|
|
+ String[] taskTypeIds = rules.get(0).getRule().getTaskTypeIds();
|
|
|
+ if (!ArrayUtil.contains(taskTypeIds, "61")) {
|
|
|
+ throw new RuntimeException("当前企业未开启该任务!");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询积分包
|
|
|
+ WmScorePackage scorePackage = wmScorePackageService.getById(params.getPackageId());
|
|
|
+
|
|
|
+ if (params.getScore() > scorePackage.getKfpjf()) {
|
|
|
+ throw new RuntimeException("可分配积分不足!");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 保存taskContent
|
|
|
+ WmTaskContent taskContent = new WmTaskContent();
|
|
|
+ // 任务类型
|
|
|
+ taskContent.setTemp30("61");
|
|
|
+ // 积分包id
|
|
|
+ taskContent.setTemp32(params.getPackageId());
|
|
|
+ // 主题
|
|
|
+ taskContent.setTemp2(params.getMeetingtTitle());
|
|
|
+ // 时间
|
|
|
+ taskContent.setTemp3(params.getMeetingTime());
|
|
|
+ // 文件上传
|
|
|
+ taskContent.setTemp4(String.join(",", params.getFiles()));
|
|
|
+ // 外采费用
|
|
|
+ taskContent.setTemp5(params.getOutsourcingAmount());
|
|
|
+ // 凭证
|
|
|
+ taskContent.setTemp6(String.join(",", params.getOutsourcingAmountProof()));
|
|
|
+ // 任务积分
|
|
|
+ taskContent.setTemp7(String.valueOf(params.getScore()));
|
|
|
+ // 总结
|
|
|
+ taskContent.setTemp8(params.getMeetingSummary());
|
|
|
+ wmTaskContentService.save(taskContent);
|
|
|
+
|
|
|
+ // 保存任务
|
|
|
+ WmTask task = new WmTask();
|
|
|
+ task.setTaskContentId(String.valueOf(taskContent.getId()));
|
|
|
+ task.setTaskFrom("1");
|
|
|
+ task.setTaskTypeId("61");
|
|
|
+ task.setTaskUserId(String.valueOf(user.getId()));
|
|
|
+ task.setScorePackageId(params.getPackageId());
|
|
|
+ task.setScore(params.getScore());
|
|
|
+ task.setLookintoDate(now);
|
|
|
+ task.setUpdateTime(now);
|
|
|
+ task.setDrugEntId(scorePackage.getDrugEntId());
|
|
|
+ task.setTaskRuleId(scorePackage.getTaskRuleId());
|
|
|
+ task.setDeptId(String.valueOf(user.getDeptId()));
|
|
|
+ task.setSubmitStatus("0");
|
|
|
+ task.setRealFlag("0");
|
|
|
+ task.setTaskStatus(TaskStatusEnum.APPROVED.val());
|
|
|
+ task.setTaskNumber(taskSequence.nextNo());
|
|
|
+ if (ArrayUtil.containsAny(user.getRoles(), 3)) {
|
|
|
+ task.setTaskUserType("3");
|
|
|
+ } else if (ArrayUtil.containsAny(user.getRoles(), 4)) {
|
|
|
+ task.setTaskUserType("4");
|
|
|
+ } else {
|
|
|
+ task.setTaskUserType(ArrayUtil.join(user.getRoles(), ","));
|
|
|
+ }
|
|
|
+ wmTaskService.save(task);
|
|
|
+
|
|
|
+ // TODO
|
|
|
+
|
|
|
+ return Boolean.TRUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 企业任务保存-医学会各级年会及卫星会
|
|
|
+ *
|
|
|
+ * @param params 参数
|
|
|
+ * @return {@link Boolean} 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Boolean saveEntTaskForTaskType62(DeptTaskDTO.TaskType62 params) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 企业任务保存-专家共识巡讲会
|
|
|
+ *
|
|
|
+ * @param params 参数
|
|
|
+ * @return {@link Boolean} 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Boolean saveEntTaskForTaskType63(DeptTaskDTO.TaskType63 params) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+}
|