Browse Source

feat: 根据积分包id查询待审核任务详情列表

李学松 2 years ago
parent
commit
9215ce6741

+ 164 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaskController.java

@@ -18,6 +18,7 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.excel.EasyExcel;
@@ -34,6 +35,7 @@ import com.pig4cloud.plugin.excel.annotation.RequestExcel;
 import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
 import com.qunzhixinxi.hnqz.admin.api.constant.MqConstants;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysFile;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
@@ -50,6 +52,11 @@ import com.qunzhixinxi.hnqz.admin.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.entity.WmTaskContent;
 import com.qunzhixinxi.hnqz.admin.entity.WmTaskRule;
 import com.qunzhixinxi.hnqz.admin.entity.WmTaskType;
+import com.qunzhixinxi.hnqz.admin.entity.WmUserSign;
+import com.qunzhixinxi.hnqz.admin.entity.WmUserSignDetail;
+import com.qunzhixinxi.hnqz.admin.entity.WmWkAlbum;
+import com.qunzhixinxi.hnqz.admin.entity.WmWkArticle;
+import com.qunzhixinxi.hnqz.admin.entity.WmWkArticleShare;
 import com.qunzhixinxi.hnqz.admin.entity.XlsPackageInfo;
 import com.qunzhixinxi.hnqz.admin.entity.XlsTask;
 import com.qunzhixinxi.hnqz.admin.entity.dto.CommonEvidenceDTO;
@@ -57,8 +64,11 @@ import com.qunzhixinxi.hnqz.admin.entity.model.excel.CommonTaskExcelModel;
 import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.SettleStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.TaskStatusEnum;
+import com.qunzhixinxi.hnqz.admin.enums.UserSignPurposeEnum;
+import com.qunzhixinxi.hnqz.admin.enums.UserSignResultEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
+import com.qunzhixinxi.hnqz.admin.service.SysDictItemService;
 import com.qunzhixinxi.hnqz.admin.service.SysFileService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaAgentService;
@@ -71,6 +81,11 @@ import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskRuleService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
+import com.qunzhixinxi.hnqz.admin.service.WmUserSignDetailService;
+import com.qunzhixinxi.hnqz.admin.service.WmUserSignService;
+import com.qunzhixinxi.hnqz.admin.service.WmWkAlbumService;
+import com.qunzhixinxi.hnqz.admin.service.WmWkArticleService;
+import com.qunzhixinxi.hnqz.admin.service.WmWkArticleShareService;
 import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
 import com.qunzhixinxi.hnqz.common.core.entity.BaseMap;
 import com.qunzhixinxi.hnqz.common.core.util.R;
@@ -129,6 +144,7 @@ import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 
 /**
@@ -170,6 +186,18 @@ public class WmTaskController {
 
 	private final WmTaskContentService wmTaskContentService;
 
+	private final WmWkArticleService wmWkArticleService;
+
+	private final WmWkArticleShareService wmWkArticleShareService;
+
+	private final WmWkAlbumService wmWkAlbumService;
+
+	private final WmUserSignService wmUserSignService;
+
+	private final WmUserSignDetailService wmUserSignDetailService;
+
+	private final SysDictItemService sysDictItemService;
+
 	private final SysFileService sysFileService;
 
 	private final RabbitMqClient rabbitMqClient;
@@ -1201,6 +1229,142 @@ public class WmTaskController {
 		return R.ok(taskIPage);
 	}
 
+	/**
+	 * 根据积分包id查询待审核任务详情列表
+	 *
+	 * @param packageId  积分包id
+	 * @param taskTypeId 任务类型id
+	 * @return 列表结果
+	 */
+	@GetMapping("/list-review-task-info")
+	public R<?> listTaskInfo(@RequestParam("packageId") String packageId, String taskTypeId) {
+		QueryWrapper<WmTask> queryWrapper = Wrappers.query();
+		if (StrUtil.isNotBlank(taskTypeId)) {
+			queryWrapper.eq("task_type_id", taskTypeId);
+		}
+		queryWrapper.eq("task_status", TaskStatusEnum.UNDER_REVIEW.val());
+		queryWrapper.eq("score_package_id", packageId);
+		queryWrapper.eq("del_flag", DelEnum.NOT_DEL.val());
+		queryWrapper.eq("real_flag", "0");
+		queryWrapper.orderByDesc("lookinto_date");
+		List<WmTask> taskList = wmTaskMapper.selectList(queryWrapper);
+
+		// 添加结算详情
+		List<Map<String, Object>> resultList = new ArrayList<>();
+		if (CollUtil.isNotEmpty(taskList)) {
+			// 查询taskType
+			Set<String> taskTypeIdSet = taskList.stream().map(WmTask::getTaskTypeId).collect(Collectors.toSet());
+			List<WmTaskType> taskTypeList = wmTaskTypeService.listByIds(taskTypeIdSet);
+			Map<String, String> taskTypeNameMap = taskTypeList.stream().collect(Collectors.toMap(WmTaskType::getId, WmTaskType::getTaskTypeName));
+			// 查询taskContent
+			Set<String> taskConentIdSet = taskList.stream().map(WmTask::getTaskContentId).collect(Collectors.toSet());
+			List<WmTaskContent> taskContentList = wmTaskContentService.listByIds(taskConentIdSet);
+			Map<Integer, WmTaskContent> taskContentMap = taskContentList.stream().collect(Collectors.toMap(WmTaskContent::getId, Function.identity()));
+			// 查询scorePackage
+			Set<String> scorePackageIdSet = taskList.stream().map(WmTask::getScorePackageId).collect(Collectors.toSet());
+			List<WmScorePackage> scorePackageList = wmScorePackageService.listByIds(scorePackageIdSet);
+			Map<String, WmScorePackage> scorePackageMap = scorePackageList.stream().collect(Collectors.toMap(WmScorePackage::getId, Function.identity()));
+			// 查询打卡记录userSign
+			boolean hasSignTask = taskList.stream().anyMatch(wmTask -> "5".equals(wmTask.getTaskTypeId())
+					|| "6".equals(wmTask.getTaskTypeId()) || "33".equals(wmTask.getTaskTypeId()));
+			Map<Integer, WmUserSign> userSignMap = new HashMap<>();
+			Map<Integer, WmUserSignDetail> userSignDetailMap = new HashMap<>();
+			Map<String, List<SysDictItem>> userSignPurposeMap = new HashMap<>();
+			if (hasSignTask) {
+				Set<String> userSignIdSet = taskContentList.stream()
+						.map(WmTaskContent::getTemp3)
+						.filter(StrUtil::isNotBlank)
+						.collect(Collectors.toSet());
+				List<WmUserSign> userSignList = wmUserSignService.listByIds(userSignIdSet);
+				userSignMap.putAll(userSignList.stream().collect(Collectors.toMap(WmUserSign::getId, Function.identity())));
+				List<WmUserSignDetail> signDetailList = wmUserSignDetailService.list(Wrappers.<WmUserSignDetail>lambdaQuery()
+						.in(WmUserSignDetail::getSignId, userSignIdSet));
+				if (CollUtil.isNotEmpty(signDetailList)) {
+					userSignDetailMap.putAll(signDetailList.stream().collect(Collectors.toMap(WmUserSignDetail::getSignId, Function.identity())));
+				}
+
+				// 拜访目的字典值
+				List<SysDictItem> itemList = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
+						.in(SysDictItem::getType, "user_sign_detail_purpose", "user_sign_detail_distribution_purpose", "user_sign_detail_pharmacy_purpose")
+						.eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.val()));
+				userSignPurposeMap.putAll(itemList.stream().collect(Collectors.groupingBy(SysDictItem::getType)));
+			}
+
+			taskList.forEach(wmTask -> {
+				Map<String, Object> map = new HashMap<>();
+				wmTask.setTaskTypeName(taskTypeNameMap.get(wmTask.getTaskTypeId()));
+				map.put("taskType", wmTask.getTaskTypeId());
+				map.put("taskInfo", wmTask);
+
+				WmTaskContent wmTaskContent = taskContentMap.get(Integer.parseInt(wmTask.getTaskContentId()));
+				map.put("wmTaskContent", wmTaskContent);
+
+				if (null != wmTaskContent) {
+					WmScorePackage wmScorePackage = scorePackageMap.get(wmTask.getScorePackageId());
+					if (null != wmScorePackage) {
+						wmTaskContent.setTemp32(wmScorePackage.getScorePackageName());
+					}
+					// 设置地图地址
+					if ("30".equals(wmTask.getTaskTypeId()) || "15".equals(wmTask.getTaskTypeId())) {
+						wmTaskContent.setTemp31(wmTaskContent.getTemp16());
+					}
+					if ("16".equals(wmTask.getTaskTypeId())) {
+						wmTaskContent.setTemp31(wmTaskContent.getTemp4());
+					}
+
+					// 医院拜访、商业公司拜访、药店拜访打卡记录
+					List<WmUserSign> wmUserSignList = new ArrayList<>();
+					if (hasSignTask && null != wmTaskContent.getTemp3()) {
+						int userSignId = Integer.parseInt(wmTaskContent.getTemp3());
+						WmUserSign userSign = userSignMap.get(userSignId);
+						// 关联查询签到详情
+						WmUserSignDetail userSignDetail = userSignDetailMap.get(userSignId);
+						if (userSignDetail != null) {
+							if (ArrayUtil.isNotEmpty(userSignDetail.getPurpose())) {
+								// 拜访目的字典值匹配
+								Map<String, String> dictPurposeMap = userSignPurposeMap.get(UserSignPurposeEnum.getDictTypeBySignEntType(userSign.getSignEntType()))
+										.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
+
+								String[] purposeNameArr = Stream.of(userSignDetail.getPurpose())
+										.map(s -> dictPurposeMap.getOrDefault(s, s))
+										.toArray(String[]::new);
+								userSignDetail.setPurposeName(purposeNameArr);
+							}
+							if (StrUtil.isNotBlank(userSignDetail.getResult())) {
+								userSignDetail.setResultName(UserSignResultEnum.resolve(userSignDetail.getResult()).getName());
+							}
+							userSign.setUserSignDetail(userSignDetail);
+						}
+						wmUserSignList.add(userSign);
+					}
+					map.put("wmUserSignList", wmUserSignList);
+				}
+
+				if ("8".equals(wmTask.getTaskTypeId()) || "11".equals(wmTask.getTaskTypeId())
+						|| "9".equals(wmTask.getTaskTypeId()) || "10".equals(wmTask.getTaskTypeId())) {
+					map.put("title", "");
+					map.put("score", wmTask.getScore());
+					WmWkArticleShare wmWkArticleShare = wmWkArticleShareService.getById(wmTask.getTaskContentId());
+					if (null != wmWkArticleShare) {
+						if ("8".equals(wmTask.getTaskTypeId()) || "11".equals(wmTask.getTaskTypeId())) {
+							WmWkAlbum wmWkAlbum = wmWkAlbumService.getById(wmWkArticleShare.getArctileId());
+							map.put("title", wmWkAlbum.getXcmc());
+						} else {
+							WmWkArticle wmWkArticle = wmWkArticleService.getById(wmWkArticleShare.getArctileId());
+							map.put("title", wmWkArticle.getTitle());
+						}
+						map.put("shareId", wmWkArticleShare.getArctileId());
+						map.put("remark", wmWkArticleShare.getTemp1());
+					}
+				}
+
+				resultList.add(map);
+			});
+		}
+
+		return R.ok(resultList);
+	}
+
 	/**
 	 * 任务审核
 	 *

+ 6 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmTask.java

@@ -54,6 +54,12 @@ public class WmTask extends Model<WmTask> {
 	@ApiModelProperty(value="任务类型ID")
 	private String taskTypeId;
 
+	/**
+	 * 任务类型名称
+	 */
+	@TableField(exist = false)
+	private String taskTypeName;
+
 	@ApiModelProperty(value="任务得分")
 	Integer score;
 

+ 25 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/UserSignPurposeEnum.java

@@ -45,4 +45,29 @@ public enum UserSignPurposeEnum {
 		}
 		return null;
 	}
+
+	/**
+	 * 根据签到类型,获取字典类型
+	 *
+	 * @param signEntType
+	 * @return
+	 */
+	public static String getDictTypeBySignEntType(String signEntType) {
+		String dictType = null;
+		switch (signEntType) {
+			case "1":
+				dictType = "user_sign_detail_purpose";
+				break;
+			case "2":
+				dictType = "user_sign_detail_distribution_purpose";
+				break;
+			case "3":
+				dictType = "user_sign_detail_pharmacy_purpose";
+				break;
+			default:
+				dictType = "";
+		}
+
+		return dictType;
+	}
 }