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

feat: 新增企业的任务类型61/62/63

lixuesong пре 1 година
родитељ
комит
618cce0f70

+ 42 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDeptTaskController.java

@@ -1,12 +1,15 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.admin.entity.dto.DeptTaskDTO;
 import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageMapper;
 import com.qunzhixinxi.hnqz.common.core.util.R;
+import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
@@ -41,7 +44,45 @@ public class WmDeptTaskController {
         return R.ok(packageList);
     }
 
-    public R<?> saveEntTask() {
+    /**
+     * 企业任务保存-企业通用
+     *
+     * @param params 参数
+     * @return {@link R}<{@link ?}> 结果
+     */
+    @SysLog("企业任务保存-企业通用")
+    @PostMapping("/dept-task/save-task-type61")
+    public R<?> saveEntTaskForTaskType61(DeptTaskDTO.TaskType61 params) {
+        log.info("企业任务保存-企业通用请求参数:{}", params);
+
+        // TODO
+        return null;
+    }
+
+    /**
+     * 企业任务保存-医学会各级年会及卫星会
+     *
+     * @param params 参数
+     * @return {@link R}<{@link ?}> 结果
+     */
+    @SysLog("企业任务保存-医学会各级年会及卫星会")
+    @PostMapping("/dept-task/save-task-type62")
+    public R<?> saveEntTaskForTaskType62(DeptTaskDTO.TaskType62 params) {
+        log.info("企业任务保存-医学会各级年会及卫星会请求参数:{}", params);
+        // TODO
+        return null;
+    }
+
+    /**
+     * 企业任务保存-专家共识巡讲会
+     *
+     * @param params 参数
+     * @return {@link R}<{@link ?}> 结果
+     */
+    @SysLog("企业任务保存-专家共识巡讲会")
+    @PostMapping("/dept-task/save-task-type63")
+    public R<?> saveEntTaskForTaskType63(DeptTaskDTO.TaskType63 params) {
+        log.info("企业任务保存-专家共识巡讲会请求参数:{}", params);
         // TODO
         return null;
     }

+ 154 - 7
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/dto/DeptTaskDTO.java

@@ -1,20 +1,157 @@
 package com.qunzhixinxi.hnqz.admin.entity.dto;
 
-import lombok.AllArgsConstructor;
 import lombok.Data;
-import lombok.Getter;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
+/**
+ * 企业任务请求参数DTO
+ *
+ * @author lixuesong
+ * @date 2023/09/21
+ */
 @Data
 public class DeptTaskDTO implements Serializable {
     private static final long serialVersionUID = 410601826934557948L;
 
-    @Getter
-    @AllArgsConstructor
-    public enum DeptTaskDTOEnum {
+    /**
+     * 任务类型61-企业通用
+     *
+     * @author lixuesong
+     * @date 2023/09/21
+     */
+    @Data
+    public static class TaskType61 implements Serializable {
+        private static final long serialVersionUID = -8969888154230924285L;
+
+        /**
+         * 积分包id
+         */
+        @NotBlank(message = "积分包id必填")
+        private String packageId;
+
+        /**
+         * 主题
+         */
+        @NotBlank(message = "主题必填")
+        private String meetingtTitle;
+
+        /**
+         * 时间
+         */
+        @NotBlank(message = "时间必填")
+        private String meetingTime;
+
+        /**
+         * 文件上传
+         */
+        @NotEmpty(message = "文件上传必填")
+        private String[] files;
+
+        /**
+         * 外采费用
+         */
+        private String outsourcingAmount;
 
+        /**
+         * 外采费用-凭证
+         */
+        private String[] outsourcingAmountProof;
+
+        /**
+         * 任务积分
+         */
+        @NotNull(message = "任务积分必填")
+        private Integer score;
+
+        /**
+         * 会议总结
+         */
+        private String meetingSummary;
+    }
+
+    /**
+     * 任务类型63-专家共识巡讲会
+     *
+     * @author lixuesong
+     * @date 2023/09/21
+     */
+    @Data
+    public static class TaskType63 implements Serializable {
+        private static final long serialVersionUID = -1918885625462400849L;
+
+        /**
+         * 积分包id
+         */
+        @NotBlank(message = "积分包id必填")
+        private String packageId;
+
+        /**
+         * 主题
+         */
+        @NotBlank(message = "主题必填")
+        private String meetingtTitle;
+
+        /**
+         * 时间
+         */
+        @NotBlank(message = "时间必填")
+        private String meetingTime;
+
+        /**
+         * 参加人次
+         */
+        @NotBlank(message = "参加人次必填")
+        private String meetingNumber;
+
+        /**
+         * 活动策划书
+         */
+        @NotEmpty(message = "活动策划书必填")
+        private String[] eventPlannerUrl;
+
+        /**
+         * 活动计划表
+         */
+        @NotEmpty(message = "活动计划表必填")
+        private String[] meetingPlanUrl;
+
+        /**
+         * 会议签到表
+         */
+        @NotEmpty(message = "会议签到表必填")
+        private String[] meetingCheckInUrl;
+
+        /**
+         * 现场照片
+         */
+        @NotEmpty(message = "现场照片必填")
+        private String[] livePhotosUrl;
+
+        /**
+         * 会议内容
+         */
+        @NotBlank(message = "会议内容必填")
+        private String meetingContent;
+
+        /**
+         * 外采费用
+         */
+        private String outsourcingAmount;
+
+        /**
+         * 外采费用-凭证
+         */
+        private String[] outsourcingAmountProof;
+
+        /**
+         * 会议总结
+         */
+        private String meetingSummary;
     }
 
     /**
@@ -26,50 +163,60 @@ public class DeptTaskDTO implements Serializable {
     @Data
     public static class TaskType62 implements Serializable {
         private static final long serialVersionUID = -2282200603021121878L;
+
         /**
          * 积分包id
          */
+        @NotBlank(message = "积分包id必填")
         private String packageId;
 
         /**
          * 会议主题
          */
+        @NotBlank(message = "会议主题必填")
         private String meetingtTitle;
 
         /**
          * 会议时间
          */
-        private LocalDateTime meetingTime;
+        @NotBlank(message = "会议时间必填")
+        private String meetingTime;
 
         /**
          * 会议人次
          */
+        @NotBlank(message = "会议人次必填")
         private String meetingNumber;
 
         /**
          * 会议邀请函
          */
+        @NotEmpty(message = "会议邀请函必填")
         private String[] meetingInvitationUrl;
 
         /**
          * 会议计划表
          */
+        @NotEmpty(message = "会议计划表必填")
         private String[] meetingPlanUrl;
 
         /**
          * 会议签到表
          */
+        @NotEmpty(message = "会议签到表必填")
         private String[] meetingCheckInUrl;
 
         /**
          * 现场照片
          */
+        @NotEmpty(message = "现场照片必填")
         private String[] livePhotosUrl;
 
         /**
          * 会议内容
          */
-        private String[] meetingContent;
+        @NotEmpty(message = "会议内容必填")
+        private String meetingContent;
 
         /**
          * 外采费用

+ 37 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDeptTaskService.java

@@ -0,0 +1,37 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.qunzhixinxi.hnqz.admin.entity.dto.DeptTaskDTO;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+
+/**
+ * 企业任务服务
+ *
+ * @author lixuesong
+ * @date 2023/09/21
+ */
+public interface WmDeptTaskService {
+
+    /**
+     * 企业任务保存-企业通用
+     *
+     * @param params 参数
+     * @return {@link Boolean} 结果
+     */
+    Boolean saveEntTaskForTaskType61(DeptTaskDTO.TaskType61 params);
+
+    /**
+     * 企业任务保存-医学会各级年会及卫星会
+     *
+     * @param params 参数
+     * @return {@link Boolean} 结果
+     */
+    Boolean saveEntTaskForTaskType62(DeptTaskDTO.TaskType62 params);
+
+    /**
+     * 企业任务保存-专家共识巡讲会
+     *
+     * @param params 参数
+     * @return {@link Boolean} 结果
+     */
+    Boolean saveEntTaskForTaskType63(DeptTaskDTO.TaskType63 params);
+}

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

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