|
@@ -6,21 +6,27 @@ import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsState;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.dto.WmPkgDTO;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysAreaEntity;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysCheckChainNodeCheckHistory;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysImplementPlan;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysPlanPkg;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUserDrug;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUserRole;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.WmDaDrugEntDrugtable;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageRedemptionNotice;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageTaskTypeQty;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.model.excel.WmScorePackageInfoExcelModel;
|
|
|
+import com.qunzhixinxi.hnqz.admin.mapper.WmDaDrugEntDrugtableMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysAreaEntityService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysCheckChainNodeCheckHistoryService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysEnterpriseAreaService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysImplementPlanService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysPlanPkgService;
|
|
@@ -32,6 +38,7 @@ import com.qunzhixinxi.hnqz.admin.service.WmPackageTaskTypeQtyService;
|
|
|
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.constant.CommonConstants;
|
|
|
import com.qunzhixinxi.hnqz.common.core.exception.BizException;
|
|
|
import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
|
|
|
import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
@@ -40,7 +47,10 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
@@ -80,6 +90,9 @@ public class WmPackageManager {
|
|
|
private final SysEnterpriseAreaService enterpriseAreaService;
|
|
|
private final SysAreaEntityService areaEntityService;
|
|
|
private final SysUserAreaService userAreaService;
|
|
|
+ private final SysDeptService deptService;
|
|
|
+ private final WmDaDrugEntDrugtableMapper wmDaDrugEntDrugtableMapper;
|
|
|
+ private final WmPackageTaskTypeQtyService packageTaskTypeQtyService;
|
|
|
|
|
|
/**
|
|
|
* 创建执行包兑付通知
|
|
@@ -132,7 +145,6 @@ public class WmPackageManager {
|
|
|
throw new BizException("当前人员并未绑定产品,无法确定可见范围,请核实");
|
|
|
}
|
|
|
|
|
|
- // todo 按区域区隔
|
|
|
|
|
|
// 1. 获取操作可见的区域
|
|
|
List<Long> areaIds = userAreaService.listUserAreas(Long.valueOf(user.getId()));
|
|
@@ -444,5 +456,184 @@ public class WmPackageManager {
|
|
|
|
|
|
return packageRedemptionNoticeService.updateById(notice);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ // 获取需要导出的积分包信息
|
|
|
+ public List<WmScorePackageInfoExcelModel> exportPkgInfo(LocalDate startDate, LocalDate endDate) {
|
|
|
+
|
|
|
+ // 获取所有的企业
|
|
|
+ List<SysDept> depts = deptService.list(Wrappers.<SysDept>lambdaQuery()
|
|
|
+ .eq(SysDept::getDelFlag, CommonConstants.STATUS_NORMAL));
|
|
|
+
|
|
|
+ // 分别过滤区域和服务商
|
|
|
+ Map<Integer, SysDept> dis = depts.stream().filter(d -> d.getLevel() == 3).collect(Collectors.toMap(SysDept::getDeptId, Function.identity()));
|
|
|
+ Map<Integer, SysDept> service = depts.stream().filter(d -> d.getLevel() == 4).collect(Collectors.toMap(SysDept::getDeptId, Function.identity()));
|
|
|
+
|
|
|
+
|
|
|
+ // 获取区域发的包
|
|
|
+ List<WmScorePackage> pkgs = scorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery()
|
|
|
+ .between(WmScorePackage::getCreateTime, startDate, endDate)
|
|
|
+ .in(WmScorePackage::getSendPackageDeptId, dis.keySet().stream().map(String::valueOf).sorted().collect(Collectors.toList())));
|
|
|
+
|
|
|
+ List<String> pkgIds = pkgs.stream().map(WmScorePackage::getId).distinct().sorted().collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 获取包所关联的产品
|
|
|
+ List<String> drugIds = pkgs.stream().flatMap(p -> Arrays.stream(p.getDrugtable())).distinct().sorted().collect(Collectors.toList());
|
|
|
+
|
|
|
+ Map<String, WmDaDrugEntDrugtable> drugtableMap = wmDaDrugEntDrugtableMapper.selectBatchIds(drugIds).stream().collect(Collectors.toMap(WmDaDrugEntDrugtable::getId, Function.identity()));
|
|
|
+
|
|
|
+ // 获得包所管理计划
|
|
|
+ Map<Integer, Integer> pkg2PlanMap = planPkgService.list(Wrappers.<SysPlanPkg>lambdaQuery().in(SysPlanPkg::getPkgId, pkgIds.stream().mapToInt(Integer::parseInt).boxed().distinct().sorted().collect(Collectors.toList()))).stream().collect(Collectors.toMap(SysPlanPkg::getPkgId, SysPlanPkg::getPlanId));
|
|
|
+ List<Integer> planIds = pkg2PlanMap.values().stream().distinct().sorted().collect(Collectors.toList());
|
|
|
+
|
|
|
+ Map<Integer, SysImplementPlan> planMap = implementPlanService.listByIds(planIds).stream().collect(Collectors.toMap(SysImplementPlan::getPlanId, Function.identity()));
|
|
|
+
|
|
|
+ // 获取子集包
|
|
|
+ List<WmScorePackage> childrenPkgs = scorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery().in(WmScorePackage::getRelationScoreId, pkgIds));
|
|
|
+ List<String> cPkgIds = childrenPkgs.stream().map(WmScorePackage::getId).distinct().sorted().collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 获取全部的任务
|
|
|
+ List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, cPkgIds).ne(WmTask::getTaskStatus, UpmsState.TaskState.REJECTED));
|
|
|
+
|
|
|
+ // 根据任务类型id分组
|
|
|
+ Map<String, List<WmTask>> pkg2TaskListMap = tasks.stream().collect(Collectors.groupingBy(WmTask::getScorePackageId));
|
|
|
+
|
|
|
+ // 获取下发的
|
|
|
+ List<WmPackageTaskTypeQty> taskTypeQties = packageTaskTypeQtyService.listPkgTaskTypeQtyByPkgIds(cPkgIds.stream().mapToInt(Integer::parseInt).boxed().distinct().sorted().collect(Collectors.toList()));
|
|
|
+
|
|
|
+
|
|
|
+ List<WmScorePackageInfoExcelModel> result = pkgs.stream().map(pkg -> {
|
|
|
+
|
|
|
+ // 基础信息
|
|
|
+ WmScorePackageInfoExcelModel model = new WmScorePackageInfoExcelModel();
|
|
|
+ model.setPkgId(pkg.getId());
|
|
|
+ model.setPkgName(pkg.getScorePackageName());
|
|
|
+ model.setScore(String.valueOf(pkg.getScore()));
|
|
|
+
|
|
|
+ // 计划名称
|
|
|
+ Integer planId = pkg2PlanMap.get(Integer.parseInt(pkg.getId()));
|
|
|
+ SysImplementPlan plan = planMap.get(planId);
|
|
|
+ model.setPlanName(plan.getPlanName());
|
|
|
+
|
|
|
+ // 产品&生产企业
|
|
|
+ WmDaDrugEntDrugtable drugtable = drugtableMap.get(pkg.getDrugtable()[0]);
|
|
|
+ model.setSkuName(drugtable.getDrugname());
|
|
|
+ model.setMah(drugtable.getDrugEntName());
|
|
|
+
|
|
|
+ // 承接对象
|
|
|
+ SysDept s = service.get(Integer.parseInt(pkg.getDeptId()));
|
|
|
+ model.setServiceName(s.getName());
|
|
|
+
|
|
|
+ // 任务数据统计
|
|
|
+ List<WmTask> list = pkg2TaskListMap.get(pkg.getId());
|
|
|
+
|
|
|
+ if (CollUtil.isNotEmpty(list)) {
|
|
|
+ Map<String, List<WmTask>> tt2TaskMap = list.stream().collect(Collectors.groupingBy(WmTask::getTaskTypeId));
|
|
|
+
|
|
|
+ List<WmTask> tt53 = tt2TaskMap.get("53");
|
|
|
+
|
|
|
+ model.setTt53Submit(CollUtil.isNotEmpty(tt53) ? String.valueOf(tt53.size()) : "0");
|
|
|
+ model.setTt53checked("0");
|
|
|
+
|
|
|
+ List<WmTask> tt52 = tt2TaskMap.get("52");
|
|
|
+
|
|
|
+ model.setTt52submit(CollUtil.isNotEmpty(tt52) ? String.valueOf(tt52.size()) : "0");
|
|
|
+ model.setTt52checked("0");
|
|
|
+
|
|
|
+ List<WmTask> tt51 = tt2TaskMap.get("51");
|
|
|
+
|
|
|
+ model.setTt51submit(CollUtil.isNotEmpty(tt51) ? String.valueOf(tt51.size()) : "0");
|
|
|
+ // model.setTt51checked("0");
|
|
|
+
|
|
|
+ List<WmTask> tt14 = tt2TaskMap.get("14");
|
|
|
+
|
|
|
+ model.setTt14submit(CollUtil.isNotEmpty(tt14) ? String.valueOf(tt14.size()) : "0");
|
|
|
+ // model.setTt14checked();
|
|
|
+
|
|
|
+ List<WmTask> tt17 = tt2TaskMap.get("17");
|
|
|
+
|
|
|
+ model.setTt17submit(CollUtil.isNotEmpty(tt17) ? String.valueOf(tt17.size()) : "0");
|
|
|
+ // model.setTt17checked();
|
|
|
+
|
|
|
+ List<WmTask> tt12 = tt2TaskMap.get("12");
|
|
|
+
|
|
|
+ model.setTt12submit(CollUtil.isNotEmpty(tt12) ? String.valueOf(tt12.size()) : "0");
|
|
|
+ // model.setTt12Checked();
|
|
|
+
|
|
|
+ List<WmTask> tt13 = tt2TaskMap.get("13");
|
|
|
+
|
|
|
+ model.setTt13submit(CollUtil.isNotEmpty(tt13) ? String.valueOf(tt13.size()) : "0");
|
|
|
+ // model.setTt13check();
|
|
|
+
|
|
|
+ List<WmTask> tt1 = tt2TaskMap.get("1");
|
|
|
+
|
|
|
+ model.setTt1submit(CollUtil.isNotEmpty(tt1) ? String.valueOf(tt1.size()) : "0");
|
|
|
+ // model.setTt1checked();
|
|
|
+
|
|
|
+ List<WmTask> tt5 = tt2TaskMap.get("5");
|
|
|
+
|
|
|
+ model.setTt5submit(CollUtil.isNotEmpty(tt5) ? String.valueOf(tt5.size()) : "0");
|
|
|
+ // model.setTt5checked();
|
|
|
+
|
|
|
+ List<WmTask> tt3 = tt2TaskMap.get("3");
|
|
|
+
|
|
|
+ model.setTt3submit(CollUtil.isNotEmpty(tt3) ? String.valueOf(tt3.size()) : "0");
|
|
|
+ // model.setTt3check();
|
|
|
+
|
|
|
+ List<WmTask> tt4 = tt2TaskMap.get("4");
|
|
|
+
|
|
|
+ model.setTt4submit(CollUtil.isNotEmpty(tt4) ? String.valueOf(tt4.size()) : "0");
|
|
|
+ // model.setTt4checked();
|
|
|
+
|
|
|
+ List<WmTask> tt64 = tt2TaskMap.get("64");
|
|
|
+
|
|
|
+ model.setTt64submit(CollUtil.isNotEmpty(tt64) ? String.valueOf(tt64.size()) : "0");
|
|
|
+ // model.setTt64checked();
|
|
|
+
|
|
|
+ List<WmTask> tt19 = tt2TaskMap.get("19");
|
|
|
+
|
|
|
+ model.setTt19submit(CollUtil.isNotEmpty(tt19) ? String.valueOf(tt19.size()) : "0");
|
|
|
+ // model.setTt19checked();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 下发任务统计
|
|
|
+
|
|
|
+ //
|
|
|
+ // model.setTt53dist();
|
|
|
+ //
|
|
|
+ // model.setTt52dist();
|
|
|
+ //
|
|
|
+ // model.setTt51dist();
|
|
|
+ //
|
|
|
+ // model.setTt14dist();
|
|
|
+ //
|
|
|
+ // model.setTt17dist();
|
|
|
+ //
|
|
|
+ // model.setTt12dist();
|
|
|
+ //
|
|
|
+ // model.setTt13dist();
|
|
|
+ //
|
|
|
+ // model.setTt1dist();
|
|
|
+ //
|
|
|
+ // model.setTt5dist();
|
|
|
+ //
|
|
|
+ // model.setTt3dist();
|
|
|
+ //
|
|
|
+ // model.setTt4dist();
|
|
|
+ //
|
|
|
+ // model.setTt64dist();
|
|
|
+ //
|
|
|
+ // model.setTt19dist();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return model;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|
|
|
|