Просмотр исходного кода

feat: 批量审批任务-查询我的任务,支持查全部

lixuesong 3 лет назад
Родитель
Сommit
3e7eda8b9a

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

@@ -96,7 +96,7 @@ public class WmDeptTaskTypeConfigController {
 			return R.failed("taskStatus不能为空");
 		}
 
-		return R.ok(wmDeptTaskTypeConfigService.listTaskByDeptTaskType(page, taskTypeName, taskStatus));
+		return R.ok(wmDeptTaskTypeConfigService.listTaskByConfig(page, taskTypeName, taskStatus));
 	}
 
 }

+ 10 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmTaskMapper.java

@@ -19,6 +19,7 @@ package com.qunzhixinxi.hnqz.admin.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.entity.WmReport;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
@@ -119,6 +120,15 @@ public interface WmTaskMapper extends DataScopeMapper<WmTask> {
 	 */
  	IPage<WmTask> listWmTaskByConfig(Page<WmTask> page, @Param("query") WmTask wmTask);
 
+	/**
+	 * 根据配置查询任务
+	 *
+	 * @param page
+	 * @param queryWrapper
+	 * @return
+	 */
+	IPage<WmTask> listWmTaskByWrapper(Page<WmTask> page, @Param(Constants.WRAPPER) QueryWrapper<WmTask> queryWrapper);
+
 	List<Map<String,String>> PackageIsFinishByTask(@Param("query") WmTask wmTask);
 
 	Map<String, Timestamp> getMaxCreateTime(@Param("query") WmTask wmTask);

+ 11 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDeptTaskTypeConfigService.java

@@ -30,6 +30,16 @@ public interface WmDeptTaskTypeConfigService extends IService<WmDeptTaskTypeConf
 	 */
 	WmDeptTaskTypeConfigDTO getDeptTaskTypeConfig(Integer deptId);
 
+	/**
+	 * 根据企业的任务类型配置查询任务列表
+	 *
+	 * @param page 分页参数
+	 * @param taskTypeName 任务类型名称
+	 * @param taskStatus 任务状态
+	 * @return
+	 */
+	IPage<WmTask> listTaskByConfig(Page<WmTask> page, String taskTypeName, String[] taskStatus);
+
 	/**
 	 * 根据企业的任务类型配置查询任务列表
 	 *
@@ -39,4 +49,5 @@ public interface WmDeptTaskTypeConfigService extends IService<WmDeptTaskTypeConf
 	 * @return
 	 */
 	IPage<WmTask> listTaskByDeptTaskType(Page<WmTask> page, String taskTypeName, String[] taskStatus);
+
 }

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

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ArrayUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -21,16 +22,13 @@ import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.EnableEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.ScorePackageStatusEnum;
-import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.SysDeptRelationMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmDaDrugEntMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmDeptTaskTypeConfigMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
 import com.qunzhixinxi.hnqz.admin.service.WmDeptTaskTypeConfigService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
-import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
-import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -39,7 +37,6 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -76,6 +73,14 @@ public class WmDeptTaskTypeConfigServiceImpl extends ServiceImpl<WmDeptTaskTypeC
 		// 判断是否已存在
 		int count = this.count(Wrappers.<WmDeptTaskTypeConfig>lambdaQuery()
 				.eq(WmDeptTaskTypeConfig::getDeptId, wmDeptTaskTypeConfigDTO.getDeptId()));
+		// 批量设置任务类型id设置为基础类型id
+		wmDeptTaskTypeConfigDTO.getConfigList().forEach(configJsonDTO -> {
+			// 查询任务名称对应的基础任务类型id
+			WmTaskType baseTaskType = wmTaskTypeService.getOne(Wrappers.<WmTaskType>lambdaQuery()
+					.eq(WmTaskType::getTaskTypeLevel, "1")
+					.eq(WmTaskType::getTaskTypeName, configJsonDTO.getTaskTypeName()));
+			configJsonDTO.setTaskTypeId(baseTaskType.getId());
+		});
 		if (count <= 0) {
 			// 新增
 			WmDeptTaskTypeConfig deptTaskTypeConfig = new WmDeptTaskTypeConfig();
@@ -174,6 +179,79 @@ public class WmDeptTaskTypeConfigServiceImpl extends ServiceImpl<WmDeptTaskTypeC
 	 * @return
 	 */
 	@Override
+	public IPage<WmTask> listTaskByConfig(Page<WmTask> page, String taskTypeName, String[] taskStatus) {
+		Integer deptId = SecurityUtils.getUser().getDeptId();
+		WmDeptTaskTypeConfig deptTaskTypeConfig = this.getOne(Wrappers.<WmDeptTaskTypeConfig>lambdaQuery()
+				.eq(WmDeptTaskTypeConfig::getDeptId, deptId));
+		if (deptTaskTypeConfig != null) {
+			// 查询该企业当前任务类型下 的任务类型配置数据
+			List<WmDeptTaskTypeConfigJsonDTO> configJsonDTOList =
+					JSON.parseArray(deptTaskTypeConfig.getTaskTypeJson(), WmDeptTaskTypeConfigJsonDTO.class);
+			List<WmDeptTaskTypeConfigJsonDTO> filterConfigJsonDTOList = null;
+			if (StringUtils.isNotBlank(taskTypeName)) {
+				filterConfigJsonDTOList = configJsonDTOList.stream()
+						.filter(configJsonDTO -> configJsonDTO.getTaskTypeName().equals(taskTypeName) && configJsonDTO.getQualifiedTask())
+						.collect(Collectors.toList());
+			} else {
+				filterConfigJsonDTOList = configJsonDTOList.stream()
+						.filter(configJsonDTO -> configJsonDTO.getQualifiedTask())
+						.collect(Collectors.toList());
+			}
+			if (CollectionUtil.isEmpty(filterConfigJsonDTOList)) {
+				// 任务配置为空,则直接返回空page
+				return page;
+			}
+			// 查询本地和下级的deptId
+			List<SysDeptRelation> relationList = sysDeptRelationMapper.selectList(Wrappers.<SysDeptRelation>lambdaQuery()
+					.eq(SysDeptRelation::getAncestor, deptId));
+			List<String> associateDeptIdList = relationList.stream()
+					.map(deptRelation -> String.valueOf(deptRelation.getDescendant()))
+					.collect(Collectors.toList());
+			// 根据不同任务类型的不同条件 拼接sql
+			QueryWrapper<WmTask> taskWrapper = Wrappers.query();
+			taskWrapper.eq("t.del_flag", DelEnum.NOT_DEL.val());
+			taskWrapper.eq("t.real_flag", "0");
+			taskWrapper.in("t.task_status", taskStatus);
+			List<WmDeptTaskTypeConfigJsonDTO> finalFilterConfigJsonDTOList = filterConfigJsonDTOList;
+			taskWrapper.and(wrapper -> {
+				for (WmDeptTaskTypeConfigJsonDTO configJsonDTO : finalFilterConfigJsonDTOList) {
+					// 用户类型
+					List<String> taskUserTypeList = new ArrayList<>();
+					if (configJsonDTO.getZbdbStatusEnable() && configJsonDTO.getZbdbStatusSelect()) {
+						taskUserTypeList.add("5");
+					}
+					if (configJsonDTO.getYydbStatusEnable() && configJsonDTO.getYydbStatusSelect()) {
+						taskUserTypeList.add("6");
+					}
+					if (CollectionUtil.isNotEmpty(taskUserTypeList)) {
+						wrapper.or(wrapper2 -> {
+							wrapper2.eq("t.task_type_id", configJsonDTO.getTaskTypeId());
+							wrapper2.in("t.task_user_type", taskUserTypeList);
+							if (configJsonDTO.getAssociateLower()) {
+								// 关联了下级
+								wrapper2.in("t.dept_id", associateDeptIdList);
+							} else {
+								// 没有关联下级
+								wrapper2.eq("t.dept_id", deptId);
+							}
+						});
+					}
+				}
+			});
+			return wmTaskMapper.listWmTaskByWrapper(page, taskWrapper);
+		}
+		return page;
+	}
+
+	/**
+	 * 根据企业的任务类型配置查询任务列表
+	 *
+	 * @param taskTypeName 任务类型名称
+	 * @param taskStatus   任务状态
+	 * @return
+	 */
+	@Deprecated
+	@Override
 	public IPage<WmTask> listTaskByDeptTaskType(Page<WmTask> page, String taskTypeName, String[] taskStatus) {
 		Integer deptId = SecurityUtils.getUser().getDeptId();
 		WmDeptTaskTypeConfig deptTaskTypeConfig = this.getOne(Wrappers.<WmDeptTaskTypeConfig>lambdaQuery()

+ 37 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmTaskMapper.xml

@@ -1058,6 +1058,43 @@
 		order by t.lookinto_date
 	</select>
 
+	<!-- 根据配置查询任务 -->
+	<select id="listWmTaskByWrapper" resultMap="wmTaskMap">
+		SELECT
+		t.id AS id,
+		t.task_rule_id AS task_rule_id,
+		t.score AS score,
+		p.score_package_name AS score_package_id,
+		t.task_type_id AS task_type_id,
+		t.lookinto_date AS lookinto_date,
+		t.province AS province,
+		t.city AS city,
+		t.area AS area,
+		t.address AS address,
+		t.lookinto_type_id AS lookinto_type_id,
+		t.task_content_id AS task_content_id,
+		t.task_status AS task_status,
+		u.realname AS task_user_id,
+		t.task_user_type AS task_user_type,
+		t.drug_ent_id AS drug_ent_id,
+		d.`name` AS dept_id,
+		t.del_flag AS del_flag,
+		t.enable_flag AS enable_flag,
+		t.tenant_id AS tenant_id,
+		t.lookinto_date AS create_time,
+		t.create_user AS create_user,
+		t.update_time AS update_time,
+		t.update_user AS update_user,
+		t.submit_status AS submit_status,
+		t.share_img_url AS share_img_url,
+		t.plat_audit_status AS plat_audit_status,
+		t.task_info_img AS task_info_img
+		FROM wm_task t
+		left join sys_user u on  u.user_id=t.task_user_id
+		left join sys_dept d on d.dept_id=t.dept_id
+		left join wm_score_package p on p.id=t.score_package_id
+		${ew.customSqlSegment}
+	</select>
 
 	<select id="selectByTask" resultMap="wmTaskMap">
 		select t.* FROM wm_task t