|
@@ -1,18 +1,20 @@
|
|
|
package com.qunzhixinxi.hnqz.admin.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsState;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.constant.enums.EnableEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.constant.enums.ExportType;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.constant.enums.PackageStatusEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmDaDrugEntDrugtable;
|
|
|
-import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageTaskTypeQty;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackageStatus;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.model.excel.WmScorePackageSubInfoExcelModel;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.model.excel.WmTaskDetailExcelModel;
|
|
|
import com.qunzhixinxi.hnqz.admin.aspect.ExportGuard;
|
|
@@ -24,10 +26,12 @@ import com.qunzhixinxi.hnqz.admin.mapper.SysUserMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageStatusMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
|
|
|
+import com.qunzhixinxi.hnqz.admin.mapper.WmTaskTypeMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmScorePackageExportService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmTaskDetailExportService;
|
|
|
import com.qunzhixinxi.hnqz.admin.util.ExportUtils;
|
|
|
import com.qunzhixinxi.hnqz.admin.util.RedisUtils;
|
|
|
+import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
|
|
|
import com.qunzhixinxi.hnqz.common.core.util.SpringContextHolder;
|
|
|
import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
@@ -37,9 +41,11 @@ import org.springframework.stereotype.Service;
|
|
|
import java.time.LocalDate;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Set;
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -55,6 +61,7 @@ import java.util.stream.Collectors;
|
|
|
public class WmTaskDetailExportServiceImpl implements WmTaskDetailExportService {
|
|
|
private final WmScorePackageMapper scorePackageMapper;
|
|
|
private final WmTaskMapper taskMapper;
|
|
|
+ private final WmTaskTypeMapper taskTypeMapper;
|
|
|
private final SysUserMapper userMapper;
|
|
|
private final WmScorePackageStatusMapper scorePackageStatusMapper;
|
|
|
private final WmScorePackageExportService scorePackageExportService;
|
|
@@ -126,7 +133,6 @@ public class WmTaskDetailExportServiceImpl implements WmTaskDetailExportService
|
|
|
Map<String, WmDaDrugEntDrugtable> drugtableMap = scope.getDrugtableMap();
|
|
|
List<String> cPkgIds = scope.getCPkgIds();
|
|
|
List<WmScorePackage> childrenPkgs = scope.getChildrenPkgs();
|
|
|
- Map<Integer, List<WmPackageTaskTypeQty>> pttMap = scope.getPttMap();
|
|
|
|
|
|
// 获取区域的上级包
|
|
|
List<String> parentIds = childrenPkgs.stream()
|
|
@@ -148,6 +154,13 @@ public class WmTaskDetailExportServiceImpl implements WmTaskDetailExportService
|
|
|
Wrappers.<WmTask>lambdaQuery()
|
|
|
.in(WmTask::getScorePackageId, cPkgIds));
|
|
|
|
|
|
+ // 任务类型名称
|
|
|
+ List<WmTaskType> taskTypes = taskTypeMapper.selectList(Wrappers.<WmTaskType>lambdaQuery()
|
|
|
+ .eq(WmTaskType::getDelFlag, CommonConstants.STATUS_NORMAL)
|
|
|
+ .lt(WmTaskType::getId, 1000));
|
|
|
+ Map<String, String> taskTypeNameMap =
|
|
|
+ taskTypes.stream().collect(Collectors.toMap(WmTaskType::getId, WmTaskType::getTaskTypeName, (n1, n2) -> n1));
|
|
|
+
|
|
|
// 获取所有执行包领取记录
|
|
|
List<WmScorePackageStatus> scorePackageStatuses = scorePackageStatusMapper.selectList(
|
|
|
Wrappers.<WmScorePackageStatus>lambdaQuery()
|
|
@@ -174,15 +187,25 @@ public class WmTaskDetailExportServiceImpl implements WmTaskDetailExportService
|
|
|
Map<String, List<WmTask>> pkg2TaskListMap = tasks.stream()
|
|
|
.collect(Collectors.groupingBy(WmTask::getScorePackageId));
|
|
|
|
|
|
+ AtomicInteger index = new AtomicInteger(1);
|
|
|
return childrenPkgs.parallelStream()
|
|
|
.map(pkg -> buildTaskExcelModel(pkg, service, parentPackageMap, drugtableMap,
|
|
|
- packageUserMap, pkg2TaskListMap))
|
|
|
- .flatMap(Collection::stream)
|
|
|
+ packageUserMap, pkg2TaskListMap, taskTypeNameMap))
|
|
|
+ .flatMap(Collection::stream).peek(model -> model.setNumber(index.getAndIncrement()))
|
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 构建每个执行包下任务的Excel模型数据
|
|
|
+ *
|
|
|
+ * @param pkg 积分包
|
|
|
+ * @param service 服务商
|
|
|
+ * @param parentPackageMap 父包映射
|
|
|
+ * @param drugtableMap 药品map
|
|
|
+ * @param packageUserMap 积分包接单用户
|
|
|
+ * @param pkg2TaskListMap 积分包下的任务列表map
|
|
|
+ * @param taskTypeNameMap 任务类型名称映射
|
|
|
+ * @return {@link List }<{@link WmTaskDetailExcelModel }> 任务明细数据list
|
|
|
*/
|
|
|
private List<WmTaskDetailExcelModel> buildTaskExcelModel(
|
|
|
WmScorePackage pkg,
|
|
@@ -190,14 +213,17 @@ public class WmTaskDetailExportServiceImpl implements WmTaskDetailExportService
|
|
|
Map<String, WmScorePackage> parentPackageMap,
|
|
|
Map<String, WmDaDrugEntDrugtable> drugtableMap,
|
|
|
Map<String, SysUser> packageUserMap,
|
|
|
- Map<String, List<WmTask>> pkg2TaskListMap) {
|
|
|
+ Map<String, List<WmTask>> pkg2TaskListMap,
|
|
|
+ Map<String, String> taskTypeNameMap) {
|
|
|
|
|
|
List<WmTaskDetailExcelModel> models = new ArrayList<>();
|
|
|
|
|
|
List<WmTask> tasks = pkg2TaskListMap.get(pkg.getId());
|
|
|
- for (int i = 0; i < tasks.size(); i++) {
|
|
|
- WmTask task = tasks.get(i);
|
|
|
+ if (CollUtil.isEmpty(tasks)) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
|
|
|
+ for (WmTask task : tasks) {
|
|
|
WmTaskDetailExcelModel model = new WmTaskDetailExcelModel();
|
|
|
|
|
|
// 市场服务供应商名称
|
|
@@ -210,6 +236,7 @@ public class WmTaskDetailExportServiceImpl implements WmTaskDetailExportService
|
|
|
|
|
|
// 父级包
|
|
|
WmScorePackage parentPackage = parentPackageMap.get(pkg.getRelationScoreId());
|
|
|
+ model.setParentPkgId(parentPackage != null ? parentPackage.getId() : "");
|
|
|
model.setParentPkgName(parentPackage != null ? parentPackage.getScorePackageName() : "");
|
|
|
|
|
|
// 执行包年度、季度
|
|
@@ -229,8 +256,8 @@ public class WmTaskDetailExportServiceImpl implements WmTaskDetailExportService
|
|
|
|
|
|
// 任务ID、任务类型
|
|
|
model.setTaskId(task.getId());
|
|
|
- model.setTaskName(task.getTaskTypeName());
|
|
|
- model.setTaskStatus(task.getTaskStatus());
|
|
|
+ model.setTaskName(taskTypeNameMap.getOrDefault(task.getTaskTypeId(), ""));
|
|
|
+ model.setTaskStatus(UpmsState.TaskState.getByStateName(task.getTaskStatus()));
|
|
|
model.setTaskCreateTime(DateUtil.formatLocalDateTime(task.getCreateTime()));
|
|
|
model.setRejectReason(task.getTaskStatusInfo());
|
|
|
models.add(model);
|