Ver código fonte

feat: 根据企业查询分类的任务类型

李学松 2 anos atrás
pai
commit
4e8553c9e3

+ 25 - 7
db/v2.0/221222.sql

@@ -1,14 +1,14 @@
 -- 任务提交百分比限制规则表
 create table wm_task_sub_percent_rule
 (
-    rule_id       int(20) auto_increment comment '规则ID'
+    rule_id     int(20) auto_increment comment '规则ID'
         primary key,
-    dept_id       int(20)                            not null comment '企业id',
-    sub_cate      varchar(32)                        not null comment '次级分类',
-    sub_rule      json                               null comment '规则',
-    opt_flag      varchar(32)                        not null comment '操作标记',
-    create_time   datetime default CURRENT_TIMESTAMP not null comment '创建时间',
-    update_time   datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间'
+    dept_id     int(20)                            not null comment '企业id',
+    sub_cate    varchar(32)                        not null comment '次级分类',
+    sub_rule    json                               null comment '规则',
+    opt_flag    varchar(32)                        not null comment '操作标记',
+    create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
+    update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间'
 )
     comment '任务提交百分比限制规则表' charset = utf8mb4;
 
@@ -18,3 +18,21 @@ create index idx_dept_id
 create index idx_sub_cate
     on wm_task_sub_percent_rule (sub_cate);
 
+
+create table wm_task_type_sub_cate2
+(
+    dtt_id      int(20) auto_increment comment '主键ID'
+        primary key,
+    type_id     int(20)                            not null comment '企业id',
+    type_name   varchar(32)                        not null comment '任务名称',
+    sub_cate    varchar(32)                        not null comment '次级分类',
+    create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
+    update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间'
+)
+    comment '任务类型二级分类表' charset = utf8mb4;
+
+create index idx_dept_id
+    on wm_task_type_sub_cate2 (type_id);
+
+create index idx_sub_cate
+    on wm_task_type_sub_cate2 (sub_cate);

+ 33 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/UpmsType.java

@@ -64,6 +64,39 @@ public final class UpmsType {
 
 	}
 
+	/**
+	 * 任务二级分类2
+	 */
+	@Getter
+	@AllArgsConstructor
+	public enum TaskSubCategory2 {
+
+//		PRODUCT_ALBUM("PRODUCT_ALBUM", TaskCategory.FORWARD, "产品相册"),
+		ACADEMIC_INFO_EXCHANGE("ACADEMIC_INFO_EXCHANGE", TaskCategory.FORWARD, "学术信息交流"),
+		CONFERENCE("CONFERENCE", TaskCategory.CONFERENCES_INTERVIEWS, "会议举办"),
+		ONE_ON_ONE_INTERVIEW("ONE_ON_ONE_INTERVIEW", TaskCategory.CONFERENCES_INTERVIEWS, "一对一专访"),
+		TRAINING("TRAINING", TaskCategory.CONFERENCES_INTERVIEWS, "培训"),
+//		BUSINESS_COMPANY_VISIT("BUSINESS_COMPANY_VISIT", TaskCategory.CUSTOMER_VISIT, "商业公司拜访"),
+//		HOSPITAL_VISIT("HOSPITAL_VISIT", TaskCategory.CUSTOMER_VISIT, "医院拜访"),
+//		PHARMACY_VISIT("PHARMACY_VISIT", TaskCategory.CUSTOMER_VISIT, "药店拜访"),
+		INVENTORY_INFO_COLLECTION("INVENTORY_INFO_COLLECTION", TaskCategory.MARKET_INFO_COLLECTION, "库存信息搜集"),
+		HOSPITAL_INFO_COLLECTION("HOSPITAL_INFO_COLLECTION", TaskCategory.MARKET_INFO_COLLECTION, "医院信息搜集"),
+		CUSTOMER_VISIT("CUSTOMER_VISIT", TaskCategory.CUSTOMER_VISIT, "客户拜访"),
+		PRODUCT_PROMOTION("PRODUCT_PROMOTION", TaskCategory.FORWARD, "产品推广"),
+		MARKET_INFO_COLLECTION("MARKET_INFO_COLLECTION", TaskCategory.MARKET_INFO_COLLECTION, "市场信息搜集"),
+		SPECIAL_SERVICE("SPECIAL_SERVICE", null, "专项服务");
+
+
+
+		@EnumValue
+		private final String type;
+
+		private final TaskCategory category;
+
+		private final String description;
+
+	}
+
 	// 企业类型
 	@Getter
 	@AllArgsConstructor

+ 20 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaskSubmissionPercentRuleController.java

@@ -64,6 +64,26 @@ public class WmTaskSubmissionPercentRuleController {
 			return R.failed("ruleId不能为空");
 		}
 
+		WmTaskSubmissionPercentRule updateRule = new WmTaskSubmissionPercentRule();
+		updateRule.setRuleId(rule.getRuleId());
+		updateRule.setRule(rule.getRule());
+
+		return R.ok(wmTaskSubmissionPercentRuleService.updateById(rule));
+	}
+
+	/**
+	 * 删除规则(逻辑删除)
+	 *
+	 * @param ruleId
+	 * @return
+	 */
+	@DeleteMapping("/{ruleId}")
+	public R<Boolean> delete(@PathVariable("ruleId") Integer ruleId) {
+
+		WmTaskSubmissionPercentRule rule = new WmTaskSubmissionPercentRule();
+		rule.setRuleId(ruleId);
+		rule.setOptFlag(CommonFlag.OptFlag.DELETED);
+
 		return R.ok(wmTaskSubmissionPercentRuleService.updateById(rule));
 	}
 

+ 12 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaskTypeController.java

@@ -61,6 +61,7 @@ public class WmTaskTypeController {
 	private final WmDaAgentService wmDaAgentService;
 	private final WmTaskTypeEntRefService wmTaskTypeEntRefService;
 	private final WmDeptTaskTypeConfigService wmDeptTaskTypeConfigService;
+	private final WmTaskTypeSubCate2Service wmTaskTypeSubCate2Service;
 
 	/**
 	 * 分页查询
@@ -367,4 +368,15 @@ public class WmTaskTypeController {
 		List<Map<String, Object>> list = wmDeptTaskTypeConfigService.listConfigedTaskTypeTree(taskTypeName);
 		return R.ok(list);
 	}
+
+	/**
+	 * 根据企业id查询分类的任务类型
+	 *
+	 * @param deptId
+	 * @return
+	 */
+	@GetMapping("/list-category-task-type")
+	public R<?> listTaskTypeTree(@RequestParam("deptId") Integer deptId) {
+		return R.ok(wmTaskTypeSubCate2Service.listTaskTypeTree(deptId));
+	}
 }

+ 51 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmTaskTypeSubCate2.java

@@ -0,0 +1,51 @@
+package com.qunzhixinxi.hnqz.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 任务类型二级分类表
+ * @TableName wm_task_type_sub_cate2
+ */
+@TableName(value ="wm_task_type_sub_cate2")
+@Data
+public class WmTaskTypeSubCate2 implements Serializable {
+
+	private static final long serialVersionUID = 6741894674905816850L;
+
+	/**
+     * 主键ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer dttId;
+
+    /**
+     * 企业id
+     */
+    private Integer typeId;
+
+    /**
+     * 任务名称
+     */
+    private String typeName;
+
+    /**
+     * 次级分类
+     */
+    private String subCate;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+
+}

+ 20 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskTypeSubCate2Mapper.java

@@ -0,0 +1,20 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.qunzhixinxi.hnqz.admin.entity.WmTaskTypeSubCate2;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author snows
+* @description 针对表【wm_dept_task_type(任务类型二级分类表)】的数据库操作Mapper
+* @createDate 2022-12-22 23:57:19
+* @Entity com.qunzhixinxi.hnqz.admin.entity.WmDeptTaskType
+*/
+@Mapper
+public interface WmTaskTypeSubCate2Mapper extends BaseMapper<WmTaskTypeSubCate2> {
+
+}
+
+
+
+

+ 23 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskTypeSubCate2Service.java

@@ -0,0 +1,23 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.qunzhixinxi.hnqz.admin.entity.WmTaskTypeSubCate2;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author snows
+* @description 针对表【wm_dept_task_type(任务类型二级分类表)】的数据库操作Service
+* @createDate 2022-12-22 23:57:19
+*/
+public interface WmTaskTypeSubCate2Service extends IService<WmTaskTypeSubCate2> {
+
+	/**
+	 * 根据企业id查询任务类型树
+	 *
+	 * @param deptId
+	 * @return
+	 */
+	List<Map<String, Object>> listTaskTypeTree(Integer deptId);
+}

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

@@ -89,6 +89,7 @@ public class WmDeptTaskTypeConfigServiceImpl extends ServiceImpl<WmDeptTaskTypeC
 	 */
 	private static Map<String, List<String>> BASE_TASK_TYPE_MAP = new LinkedHashMap<>();
 
+	// TODO 由表wm_dept_task_type 替换进行维护
 	static {
 		List<String> meetingList = new ArrayList<String>() {{
 			add("医院科室推广会");

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

@@ -0,0 +1,123 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.map.MapUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.entity.WmDaAgent;
+import com.qunzhixinxi.hnqz.admin.entity.WmDaDrugEnt;
+import com.qunzhixinxi.hnqz.admin.entity.WmTaskTypeSubCate2;
+import com.qunzhixinxi.hnqz.admin.entity.WmTaskType;
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
+import com.qunzhixinxi.hnqz.admin.enums.DeptLevelEnum;
+import com.qunzhixinxi.hnqz.admin.mapper.SysDeptMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmDaAgentMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmDaDrugEntMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.WmTaskTypeSubCate2Mapper;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeSubCate2Service;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+* @author snows
+* @description 针对表【wm_dept_task_type(任务类型二级分类表)】的数据库操作Service实现
+* @createDate 2022-12-22 23:57:19
+*/
+@Service
+@AllArgsConstructor
+public class WmTaskTypeSubCate2ServiceImpl extends ServiceImpl<WmTaskTypeSubCate2Mapper, WmTaskTypeSubCate2>
+    implements WmTaskTypeSubCate2Service {
+
+	private final SysDeptMapper sysDeptMapper;
+
+	private final WmDaDrugEntMapper wmDaDrugEntMapper;
+
+	private final WmDaAgentMapper wmDaAgentMapper;
+
+	private final WmTaskTypeService wmTaskTypeService;
+
+	/**
+	 * 根据企业id查询任务类型树
+	 *
+	 * @param deptId
+	 * @return
+	 */
+	@Override
+	public List<Map<String, Object>> listTaskTypeTree(Integer deptId) {
+
+		String durgentId = null;
+		SysDept dept = sysDeptMapper.selectById(deptId);
+		if (DeptLevelEnum.ENT.getVal().equals(dept.getLevel())) {
+			WmDaDrugEnt wmDaDrugEnt = wmDaDrugEntMapper.selectOne(Wrappers.<WmDaDrugEnt>lambdaQuery()
+					.eq(WmDaDrugEnt::getDeptId, deptId)
+					.eq(WmDaDrugEnt::getDelFlag, DelEnum.NOT_DEL.val()));
+			durgentId = wmDaDrugEnt.getId();
+		} else {
+			WmDaAgent wmDaAgent = wmDaAgentMapper.selectOne(Wrappers.<WmDaAgent>lambdaQuery()
+					.eq(WmDaAgent::getDeptId, deptId)
+					.eq(WmDaAgent::getDelFlag, DelEnum.NOT_DEL.val()));
+			durgentId = wmDaAgent.getId();
+		}
+		// 查询企业对应的任务类型
+		LambdaQueryWrapper<WmTaskType> taskTypeWrapper = Wrappers.lambdaQuery();
+		taskTypeWrapper.eq(WmTaskType::getDeptId, deptId);
+		taskTypeWrapper.eq(WmTaskType::getRuleId, durgentId);
+		taskTypeWrapper.eq(WmTaskType::getTaskEntId, durgentId);
+		List<WmTaskType> taskTypeList = wmTaskTypeService.list(taskTypeWrapper);
+
+		// 查询基础任务类型
+		List<WmTaskType> baseTaskTypeList = wmTaskTypeService.list(Wrappers.<WmTaskType>lambdaQuery()
+				.eq(WmTaskType::getTaskTypeLevel, "1")
+				.eq(WmTaskType::getDelFlag, DelEnum.NOT_DEL.val()));
+		Map<String, String> baseTaskTypeMap = baseTaskTypeList.stream()
+				.collect(Collectors.toMap(WmTaskType::getTaskTypeName, WmTaskType::getId));
+
+		// 查询任务类型分类表
+		List<WmTaskTypeSubCate2> list = this.list();
+		// key-任务类型父类型, value-任务类型名称列表
+		Map<String, List<String>> listMap = list.stream()
+				.collect(
+						Collectors.groupingBy(
+								WmTaskTypeSubCate2::getSubCate, Collectors.mapping(WmTaskTypeSubCate2::getTypeName, Collectors.toList())
+						)
+				);
+
+		List<Map<String, Object>> resultList = new ArrayList<>();
+		if (CollectionUtil.isNotEmpty(taskTypeList)) {
+			// 根据任务类型分类表,给企业任务类型分类
+			listMap.forEach((key, val) -> {
+				List<Map<String, String>> childTypeList = taskTypeList.stream()
+						.filter(wmTaskType -> val.contains(wmTaskType.getTaskTypeName())).map(wmTaskType -> {
+							Map<String, String> typeMap = new HashMap<>();
+							typeMap.put("taskTypeName", wmTaskType.getTaskTypeName());
+							typeMap.put("taskTypeId", baseTaskTypeMap.get(wmTaskType.getTaskTypeName()));
+							return typeMap;
+						})
+						.collect(Collectors.toList());
+				if (CollectionUtil.isNotEmpty(childTypeList)) {
+					Map<String, Object> taskTypeMap = MapUtil.newHashMap(2);
+					taskTypeMap.put("category", key);
+					taskTypeMap.put("categoryName", UpmsType.TaskSubCategory2.valueOf(key).getDescription());
+					taskTypeMap.put("children", childTypeList);
+					resultList.add(taskTypeMap);
+				}
+			});
+		}
+
+		return resultList;
+	}
+}
+
+
+
+