|
@@ -3,6 +3,7 @@ package com.qunzhixinxi.hnqz.admin.manager;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DatePattern;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
@@ -23,6 +24,7 @@ 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.WmPackageRedemptionNotice.CheckState;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmPackageTaskTypeQty;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackageStatus;
|
|
@@ -354,14 +356,16 @@ public class WmPackageManager {
|
|
|
Map<String, WmTask> taskId2EntityMap =
|
|
|
tasks.stream().collect(Collectors.toMap(WmTask::getId, Function.identity()));
|
|
|
|
|
|
- Set<Integer> taskIds =
|
|
|
+ List<Integer> taskIds =
|
|
|
tasks.stream()
|
|
|
.map(WmTask::getId)
|
|
|
.mapToInt(Integer::valueOf)
|
|
|
+ .distinct()
|
|
|
+ .sorted()
|
|
|
.boxed()
|
|
|
- .collect(Collectors.toSet());
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
- // 审核通过的记录
|
|
|
+ // 获取总经理审核后的记录
|
|
|
List<SysCheckChainNodeCheckHistory> okTasks =
|
|
|
CollUtil.isNotEmpty(tasks)
|
|
|
? checkChainNodeCheckHistoryService.list(
|
|
@@ -370,24 +374,70 @@ public class WmPackageManager {
|
|
|
.in(SysCheckChainNodeCheckHistory::getTargetId, taskIds))
|
|
|
: Collections.emptyList();
|
|
|
|
|
|
- // 兑付信息
|
|
|
+ // 总经理审核通过的分数
|
|
|
+ List<String> passedByNode6 =
|
|
|
+ okTasks.stream()
|
|
|
+ .filter(SysCheckChainNodeCheckHistory::getCheckResult)
|
|
|
+ .map(his -> his.getTargetId().toString())
|
|
|
+ .distinct()
|
|
|
+ .sorted()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ double passedByNode6ScoreSum =
|
|
|
+ CollUtil.isNotEmpty(passedByNode6)
|
|
|
+ ? 0
|
|
|
+ : taskId2EntityMap.entrySet().stream()
|
|
|
+ .filter(entry -> passedByNode6.contains(entry.getKey()))
|
|
|
+ .mapToDouble(entry -> entry.getValue().getScore())
|
|
|
+ .sum();
|
|
|
+
|
|
|
+ // 所有兑付信息
|
|
|
List<WmPackageRedemptionNotice> notices =
|
|
|
packageRedemptionNoticeService.list(
|
|
|
Wrappers.<WmPackageRedemptionNotice>lambdaQuery()
|
|
|
.eq(WmPackageRedemptionNotice::getPackageId, packageId)
|
|
|
- .in(
|
|
|
- WmPackageRedemptionNotice::getNoticeState,
|
|
|
- WmPackageRedemptionNotice.NoticeState.CONFIRM.getState(),
|
|
|
- WmPackageRedemptionNotice.NoticeState.ARGUE.getState(),
|
|
|
- WmPackageRedemptionNotice.NoticeState.DONE.getState())
|
|
|
+ // .in(
|
|
|
+ // WmPackageRedemptionNotice::getNoticeState,
|
|
|
+ // WmPackageRedemptionNotice.NoticeState.CONFIRM.getState(),
|
|
|
+ // WmPackageRedemptionNotice.NoticeState.ARGUE.getState(),
|
|
|
+ // WmPackageRedemptionNotice.NoticeState.DONE.getState())
|
|
|
.orderByDesc(WmPackageRedemptionNotice::getCreateTime));
|
|
|
|
|
|
- Map<String, Object> result = new HashMap<>(11);
|
|
|
+ Map<String, Object> result = new HashMap<>(15);
|
|
|
result.put("id", packageId);
|
|
|
result.put("pkgSn", scorePackage.getPackageSn());
|
|
|
result.put("pkgName", scorePackage.getScorePackageName());
|
|
|
result.put("pkgScore", scorePackage.getScore());
|
|
|
- result.put("nextStep", CollUtil.isNotEmpty(notices) ? notices.get(0).getStep() + 1 : 1);
|
|
|
+ result.put("passedByNode6Total", CollUtil.isEmpty(passedByNode6) ? 0 : passedByNode6.size());
|
|
|
+
|
|
|
+ int nextStep =
|
|
|
+ CollUtil.isNotEmpty(notices)
|
|
|
+ ? notices.stream()
|
|
|
+ .filter(
|
|
|
+ rdm ->
|
|
|
+ StrUtil.equalsAny(
|
|
|
+ rdm.getNoticeState(),
|
|
|
+ WmPackageRedemptionNotice.NoticeState.CONFIRM.getState(),
|
|
|
+ WmPackageRedemptionNotice.NoticeState.ARGUE.getState(),
|
|
|
+ WmPackageRedemptionNotice.NoticeState.DONE.getState()))
|
|
|
+ .collect(Collectors.toList())
|
|
|
+ .get(0)
|
|
|
+ .getStep()
|
|
|
+ + 1
|
|
|
+ : 1;
|
|
|
+
|
|
|
+ double usedRdpScore =
|
|
|
+ CollUtil.isNotEmpty(notices)
|
|
|
+ ? notices.stream()
|
|
|
+ .filter(rdm -> !CheckState.REJECTED.getState().equals(rdm.getCheckState()))
|
|
|
+ .mapToDouble(WmPackageRedemptionNotice::getCurrentRedemptionScore)
|
|
|
+ .sum()
|
|
|
+ : 0;
|
|
|
+
|
|
|
+ result.put("nextStep", nextStep);
|
|
|
+ result.put("passedByNode6ScoreSum", passedByNode6ScoreSum);
|
|
|
+ result.put("usedRdmScore", usedRdpScore);
|
|
|
+ result.put("availRdpScore", passedByNode6ScoreSum - usedRdpScore);
|
|
|
|
|
|
int taskTotalCount = tasks.size();
|
|
|
|
|
@@ -557,7 +607,7 @@ public class WmPackageManager {
|
|
|
Set<Integer> operatorRoleIds = scope.operatorRoleIds;
|
|
|
List<String> cPkgIds = scope.cPkgIds;
|
|
|
Map<String, List<String>> parentId2PkgMap = scope.parentId2PkgMap;
|
|
|
- Map<Integer, List<WmPackageTaskTypeQty>>pttMap = scope.pttMap;
|
|
|
+ Map<Integer, List<WmPackageTaskTypeQty>> pttMap = scope.pttMap;
|
|
|
|
|
|
// 获取区域的上级包
|
|
|
List<String> ppid =
|
|
@@ -600,7 +650,6 @@ public class WmPackageManager {
|
|
|
implementPlanService.listByIds(planIds).stream()
|
|
|
.collect(Collectors.toMap(SysImplementPlan::getPlanId, Function.identity()));
|
|
|
|
|
|
-
|
|
|
// 获取全部的任务
|
|
|
List<WmTask> tasks =
|
|
|
taskService.list(
|
|
@@ -616,7 +665,6 @@ public class WmPackageManager {
|
|
|
Map<String, List<WmTask>> pkg2TaskListMap =
|
|
|
tasks.stream().collect(Collectors.groupingBy(WmTask::getScorePackageId));
|
|
|
|
|
|
-
|
|
|
List<WmScorePackageInfoExcelModel> result =
|
|
|
pkgs.parallelStream()
|
|
|
.map(
|
|
@@ -626,7 +674,7 @@ public class WmPackageManager {
|
|
|
WmScorePackageInfoExcelModel model = new WmScorePackageInfoExcelModel();
|
|
|
model.setPkgId(pkg.getId());
|
|
|
model.setPkgName(pkg.getScorePackageName());
|
|
|
- if(!operatorRoleIds.contains(37)) {
|
|
|
+ if (!operatorRoleIds.contains(37)) {
|
|
|
model.setScore(String.valueOf(pkg.getScore()));
|
|
|
}
|
|
|
|
|
@@ -639,9 +687,7 @@ public class WmPackageManager {
|
|
|
// 计划名称
|
|
|
Integer planId = pkg2PlanMap.get(Integer.parseInt(pkg.getId()));
|
|
|
SysImplementPlan plan = planMap.get(planId);
|
|
|
- model.setPlanName(
|
|
|
- plan != null ? plan.getPlanName() : ""
|
|
|
- );
|
|
|
+ model.setPlanName(plan != null ? plan.getPlanName() : "");
|
|
|
|
|
|
// 产品&生产企业
|
|
|
WmDaDrugEntDrugtable drugtable = drugtableMap.get(pkg.getDrugtable()[0]);
|
|
@@ -1119,186 +1165,224 @@ public class WmPackageManager {
|
|
|
// 更新任务
|
|
|
List<WmTask> tasks = taskMapper.selectForUpdateByPkgId(wmScorePackageStatus.getPackageId());
|
|
|
|
|
|
- tasks.forEach(task -> {
|
|
|
- task.setTaskUserId(newOwnerId.toString());
|
|
|
- task.setUpdateUser(adminId.toString());
|
|
|
- task.setUpdateTime(now);
|
|
|
- task.setRemarks(remarks);
|
|
|
- });
|
|
|
+ tasks.forEach(
|
|
|
+ task -> {
|
|
|
+ task.setTaskUserId(newOwnerId.toString());
|
|
|
+ task.setUpdateUser(adminId.toString());
|
|
|
+ task.setUpdateTime(now);
|
|
|
+ task.setRemarks(remarks);
|
|
|
+ });
|
|
|
|
|
|
taskService.updateBatchById(tasks);
|
|
|
|
|
|
return Boolean.TRUE;
|
|
|
}
|
|
|
|
|
|
- public List<WmScorePackageCheckStatusExcelModel> exportCheckInfo(LocalDate startDate, LocalDate endDate) {
|
|
|
- if(new HashSet<>(SecurityUtils.getRoles()).contains(37)) {
|
|
|
+ public List<WmScorePackageCheckStatusExcelModel> exportCheckInfo(
|
|
|
+ LocalDate startDate, LocalDate endDate) {
|
|
|
+ if (new HashSet<>(SecurityUtils.getRoles()).contains(37)) {
|
|
|
throw new RuntimeException("服务商管理员没有权限查看");
|
|
|
}
|
|
|
WmPackageExportScope scope = getWmPackageExportScope(startDate, endDate);
|
|
|
-
|
|
|
+
|
|
|
List<WmScorePackageCheckStatusExcelModel> result = new ArrayList<>();
|
|
|
- Map<Integer, String> quarterMap =
|
|
|
- Map.ofEntries(Map.entry(1, "一季度"), Map.entry(2, "二季度"), Map.entry(3, "三季度"), Map.entry(4, "四季度"));
|
|
|
+ Map<Integer, String> quarterMap =
|
|
|
+ Map.ofEntries(
|
|
|
+ Map.entry(1, "一季度"), Map.entry(2, "二季度"), Map.entry(3, "三季度"), Map.entry(4, "四季度"));
|
|
|
|
|
|
int batch = 20;
|
|
|
- for(int i = 0; i < scope.pkgs.size(); i = i + batch) {
|
|
|
+ for (int i = 0; i < scope.pkgs.size(); i = i + batch) {
|
|
|
List<WmScorePackage> pkgBatch = scope.pkgs.subList(i, Math.min(i + batch, scope.pkgs.size()));
|
|
|
- List<String> pkgIds = pkgBatch.stream()
|
|
|
- .map(p -> p.getId())
|
|
|
- .sorted()
|
|
|
- .collect(Collectors.toList());
|
|
|
+ List<String> pkgIds =
|
|
|
+ pkgBatch.stream().map(p -> p.getId()).sorted().collect(Collectors.toList());
|
|
|
|
|
|
- List<String> cPkgIdBatch = pkgIds.stream()
|
|
|
- .map(id -> scope.parentId2PkgMap.getOrDefault(id, new ArrayList<>()))
|
|
|
- .flatMap(list -> list.stream())
|
|
|
- .sorted()
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- if(CollUtil.isEmpty(cPkgIdBatch)) {
|
|
|
+ List<String> cPkgIdBatch =
|
|
|
+ pkgIds.stream()
|
|
|
+ .map(id -> scope.parentId2PkgMap.getOrDefault(id, new ArrayList<>()))
|
|
|
+ .flatMap(list -> list.stream())
|
|
|
+ .sorted()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (CollUtil.isEmpty(cPkgIdBatch)) {
|
|
|
log.warn("No child pkg found in batch: {}", i);
|
|
|
continue;
|
|
|
}
|
|
|
List<WmTask> tasks =
|
|
|
- taskService.list(
|
|
|
- Wrappers.<WmTask>lambdaQuery()
|
|
|
- .eq(WmTask::getDelFlag, CommonConstants.STATUS_NORMAL) // filter 2099 rows
|
|
|
- .in(
|
|
|
- WmTask::getScorePackageId,
|
|
|
- cPkgIdBatch));
|
|
|
+ taskService.list(
|
|
|
+ Wrappers.<WmTask>lambdaQuery()
|
|
|
+ .eq(WmTask::getDelFlag, CommonConstants.STATUS_NORMAL) // filter 2099 rows
|
|
|
+ .in(WmTask::getScorePackageId, cPkgIdBatch));
|
|
|
Map<String, List<WmTask>> cPkg2TaskListMap =
|
|
|
- tasks.stream().collect(Collectors.groupingBy(WmTask::getScorePackageId));
|
|
|
+ tasks.stream().collect(Collectors.groupingBy(WmTask::getScorePackageId));
|
|
|
|
|
|
- List<Map<String, Object>> checkBatch = sysCheckChainNodeCheckHistoryMapper.getTaskCheckHisForDivisionPkgs(pkgIds);
|
|
|
+ List<Map<String, Object>> checkBatch =
|
|
|
+ sysCheckChainNodeCheckHistoryMapper.getTaskCheckHisForDivisionPkgs(pkgIds);
|
|
|
Map<String, List<Map<String, Object>>> pkg2CheckListMap =
|
|
|
- checkBatch.stream().collect(Collectors.groupingBy((row) -> row.get("pkg_id").toString()));
|
|
|
+ checkBatch.stream().collect(Collectors.groupingBy((row) -> row.get("pkg_id").toString()));
|
|
|
|
|
|
pkgBatch.parallelStream()
|
|
|
- .map(
|
|
|
- pkg -> {
|
|
|
- WmScorePackageCheckStatusExcelModel model = new WmScorePackageCheckStatusExcelModel();
|
|
|
-
|
|
|
- model.setDivision(scope.dis.getOrDefault(Integer.valueOf(pkg.getSendPackageDeptId()), new SysDept()).getName());
|
|
|
- model.setProvince(pkg.getProvAbbr());
|
|
|
- model.setCsoName(scope.service.getOrDefault(Integer.valueOf(pkg.getDeptId()), new SysDept()).getName());
|
|
|
- model.setYear(String.format("%d年", pkg.getCreateTime().getYear()));
|
|
|
- model.setQuarter(quarterMap.get(pkg.getCreateTime().getMonthValue() / 3 + 1));
|
|
|
- model.setProduct(scope.drugtableMap.getOrDefault(pkg.getDrugtable()[0], new WmDaDrugEntDrugtable()).getDrugnameTy());
|
|
|
- model.setPkgName(pkg.getScorePackageName());
|
|
|
- model.setPkgId(pkg.getId());
|
|
|
- int plannedQty = scope.parentId2PkgMap.getOrDefault(pkg.getId(), new ArrayList<>())
|
|
|
- .stream().mapToInt(Integer::parseInt).reduce(0, (cnt, cPkgId) -> {
|
|
|
- cnt += scope.pttMap.getOrDefault(cPkgId, new ArrayList<>())
|
|
|
- .stream().mapToInt(WmPackageTaskTypeQty::getQty).sum();
|
|
|
- return cnt;
|
|
|
- });
|
|
|
- model.setTaskNumPlanned(Integer.toString(plannedQty));
|
|
|
-
|
|
|
- List<Map<String, Object>> checkList = pkg2CheckListMap.getOrDefault(pkg.getId(), new ArrayList<>());
|
|
|
- if(CollUtil.isEmpty(checkList)) {
|
|
|
- log.warn("No check his found for pkg: {}", pkg.getId());
|
|
|
- return model;
|
|
|
- }
|
|
|
- checkList.sort((a, b) -> {
|
|
|
- int ret = Integer.compare(toInteger(a.get("task_id")), toInteger(b.get("task_id")));
|
|
|
- if(ret == 0) {
|
|
|
+ .map(
|
|
|
+ pkg -> {
|
|
|
+ WmScorePackageCheckStatusExcelModel model =
|
|
|
+ new WmScorePackageCheckStatusExcelModel();
|
|
|
+
|
|
|
+ model.setDivision(
|
|
|
+ scope
|
|
|
+ .dis
|
|
|
+ .getOrDefault(Integer.valueOf(pkg.getSendPackageDeptId()), new SysDept())
|
|
|
+ .getName());
|
|
|
+ model.setProvince(pkg.getProvAbbr());
|
|
|
+ model.setCsoName(
|
|
|
+ scope
|
|
|
+ .service
|
|
|
+ .getOrDefault(Integer.valueOf(pkg.getDeptId()), new SysDept())
|
|
|
+ .getName());
|
|
|
+ model.setYear(String.format("%d年", pkg.getCreateTime().getYear()));
|
|
|
+ model.setQuarter(quarterMap.get(pkg.getCreateTime().getMonthValue() / 3 + 1));
|
|
|
+ model.setProduct(
|
|
|
+ scope
|
|
|
+ .drugtableMap
|
|
|
+ .getOrDefault(pkg.getDrugtable()[0], new WmDaDrugEntDrugtable())
|
|
|
+ .getDrugnameTy());
|
|
|
+ model.setPkgName(pkg.getScorePackageName());
|
|
|
+ model.setPkgId(pkg.getId());
|
|
|
+ int plannedQty =
|
|
|
+ scope.parentId2PkgMap.getOrDefault(pkg.getId(), new ArrayList<>()).stream()
|
|
|
+ .mapToInt(Integer::parseInt)
|
|
|
+ .reduce(
|
|
|
+ 0,
|
|
|
+ (cnt, cPkgId) -> {
|
|
|
+ cnt +=
|
|
|
+ scope.pttMap.getOrDefault(cPkgId, new ArrayList<>()).stream()
|
|
|
+ .mapToInt(WmPackageTaskTypeQty::getQty)
|
|
|
+ .sum();
|
|
|
+ return cnt;
|
|
|
+ });
|
|
|
+ model.setTaskNumPlanned(Integer.toString(plannedQty));
|
|
|
+
|
|
|
+ List<Map<String, Object>> checkList =
|
|
|
+ pkg2CheckListMap.getOrDefault(pkg.getId(), new ArrayList<>());
|
|
|
+ if (CollUtil.isEmpty(checkList)) {
|
|
|
+ log.warn("No check his found for pkg: {}", pkg.getId());
|
|
|
+ return model;
|
|
|
+ }
|
|
|
+ checkList.sort(
|
|
|
+ (a, b) -> {
|
|
|
+ int ret =
|
|
|
+ Integer.compare(toInteger(a.get("task_id")), toInteger(b.get("task_id")));
|
|
|
+ if (ret == 0) {
|
|
|
ret = Integer.compare(toInteger(a.get("seq")), toInteger(b.get("seq")));
|
|
|
}
|
|
|
return ret;
|
|
|
});
|
|
|
- int[] passed = new int[10];
|
|
|
- int[] rejected = new int[10];
|
|
|
- int[] todos = new int[10];
|
|
|
- int lastTaskId = -1;
|
|
|
- int lastSeq = -1;
|
|
|
- int lastSeq4Num = 1;
|
|
|
- boolean lastRejected = true;
|
|
|
- checkList.add(
|
|
|
+ int[] passed = new int[10];
|
|
|
+ int[] rejected = new int[10];
|
|
|
+ int[] todos = new int[10];
|
|
|
+ int lastTaskId = -1;
|
|
|
+ int lastSeq = -1;
|
|
|
+ int lastSeq4Num = 1;
|
|
|
+ boolean lastRejected = true;
|
|
|
+ checkList.add(
|
|
|
Map.ofEntries(
|
|
|
- Map.entry("task_id", Integer.valueOf(-1)),
|
|
|
- Map.entry("node_id", Integer.valueOf(0)),
|
|
|
- Map.entry("seq", Integer.valueOf(0)),
|
|
|
- Map.entry("check_result", Integer.valueOf(0))));
|
|
|
- for(Map<String, Object> record: checkList) {
|
|
|
- int taskId = toInteger(record.get("task_id"));
|
|
|
- int nodeId = toInteger(record.get("node_id"));
|
|
|
- int seq = toInteger(record.get("seq"));
|
|
|
- int checkResult = toInteger(record.get("check_result"));
|
|
|
-
|
|
|
- if(checkResult == 1) {
|
|
|
- passed[nodeId] += 1;
|
|
|
- } else {
|
|
|
- rejected[nodeId] += 1;
|
|
|
- }
|
|
|
+ Map.entry("task_id", Integer.valueOf(-1)),
|
|
|
+ Map.entry("node_id", Integer.valueOf(0)),
|
|
|
+ Map.entry("seq", Integer.valueOf(0)),
|
|
|
+ Map.entry("check_result", Integer.valueOf(0))));
|
|
|
+ for (Map<String, Object> record : checkList) {
|
|
|
+ int taskId = toInteger(record.get("task_id"));
|
|
|
+ int nodeId = toInteger(record.get("node_id"));
|
|
|
+ int seq = toInteger(record.get("seq"));
|
|
|
+ int checkResult = toInteger(record.get("check_result"));
|
|
|
+
|
|
|
+ if (checkResult == 1) {
|
|
|
+ passed[nodeId] += 1;
|
|
|
+ } else {
|
|
|
+ rejected[nodeId] += 1;
|
|
|
+ }
|
|
|
|
|
|
- if(lastTaskId != taskId) { // handle todo of last task
|
|
|
- if(!lastRejected) {
|
|
|
- if(lastSeq == 4) {
|
|
|
- if(lastSeq4Num % 8 == 0 && lastSeq4Num % 9 == 0) {
|
|
|
- todos[5] += 1;
|
|
|
- } else if(lastSeq4Num % 9 == 0) {
|
|
|
- todos[8] += 1;
|
|
|
- } else if(lastSeq4Num % 8 == 0) {
|
|
|
- todos[9] += 1;
|
|
|
- } else { // treat as 3
|
|
|
- todos[8] += 1;
|
|
|
- todos[9] += 1;
|
|
|
- }
|
|
|
- } else if(lastSeq == 3) {
|
|
|
+ if (lastTaskId != taskId) { // handle todo of last task
|
|
|
+ if (!lastRejected) {
|
|
|
+ if (lastSeq == 4) {
|
|
|
+ if (lastSeq4Num % 8 == 0 && lastSeq4Num % 9 == 0) {
|
|
|
+ todos[5] += 1;
|
|
|
+ } else if (lastSeq4Num % 9 == 0) {
|
|
|
+ todos[8] += 1;
|
|
|
+ } else if (lastSeq4Num % 8 == 0) {
|
|
|
+ todos[9] += 1;
|
|
|
+ } else { // treat as 3
|
|
|
todos[8] += 1;
|
|
|
todos[9] += 1;
|
|
|
- } else if(lastSeq != 6) {
|
|
|
- todos[lastSeq+1] += 1;
|
|
|
}
|
|
|
+ } else if (lastSeq == 3) {
|
|
|
+ todos[8] += 1;
|
|
|
+ todos[9] += 1;
|
|
|
+ } else if (lastSeq != 6) {
|
|
|
+ todos[lastSeq + 1] += 1;
|
|
|
}
|
|
|
- lastTaskId = taskId;
|
|
|
- lastRejected = false;
|
|
|
- lastSeq4Num = 1;
|
|
|
}
|
|
|
+ lastTaskId = taskId;
|
|
|
+ lastRejected = false;
|
|
|
+ lastSeq4Num = 1;
|
|
|
+ }
|
|
|
|
|
|
- if(checkResult == 0) {
|
|
|
- lastRejected = true;
|
|
|
- }
|
|
|
- lastSeq = seq;
|
|
|
- lastSeq4Num *= nodeId > 7 && checkResult == 1 ? nodeId : 1;
|
|
|
+ if (checkResult == 0) {
|
|
|
+ lastRejected = true;
|
|
|
}
|
|
|
+ lastSeq = seq;
|
|
|
+ lastSeq4Num *= nodeId > 7 && checkResult == 1 ? nodeId : 1;
|
|
|
+ }
|
|
|
|
|
|
- model.setTaskNumSubmitted(Integer.toString(passed[1]));
|
|
|
- model.setNode2PassedNum(Integer.toString(passed[2]));
|
|
|
- model.setNode2RejectNum(Integer.toString(rejected[2]));
|
|
|
- model.setNode2TodoNum(Integer.toString(todos[2]));
|
|
|
- if(!scope.operatorRoleIds.contains(43)) { // 非地市
|
|
|
- model.setNode3PassedNum(Integer.toString(passed[3]));
|
|
|
- model.setNode3RejectNum(Integer.toString(rejected[3]));
|
|
|
- model.setNode3TodoNum(Integer.toString(todos[3]));
|
|
|
- if(!scope.operatorRoleIds.contains(4)) { // 非区域
|
|
|
- if(!scope.operatorRoleIds.contains(40)) { // 非商务
|
|
|
- model.setNode8PassedNum(Integer.toString(passed[8]));
|
|
|
- model.setNode8RejectNum(Integer.toString(rejected[8]));
|
|
|
- model.setNode8TodoNum(Integer.toString(todos[8]));
|
|
|
- }
|
|
|
- if(!scope.operatorRoleIds.contains(42)) { // 非市场
|
|
|
- model.setNode9PassedNum(Integer.toString(passed[9]));
|
|
|
- model.setNode9RejectNum(Integer.toString(rejected[9]));
|
|
|
- model.setNode9TodoNum(Integer.toString(todos[9]));
|
|
|
- }
|
|
|
- if(scope.operatorRoleIds.contains(41) || scope.operatorRoleIds.contains(39) || scope.operatorRoleIds.contains(3)) { // 分管领导 & 总经理 & 运营
|
|
|
- model.setNode5PassedNum(Integer.toString(passed[5]));
|
|
|
- model.setNode5RejectNum(Integer.toString(rejected[5]));
|
|
|
- model.setNode5TodoNum(Integer.toString(todos[5]));
|
|
|
- if(scope.operatorRoleIds.contains(39) || scope.operatorRoleIds.contains(3)) { // 总经理 & 运营
|
|
|
- model.setNode6PassedNum(Integer.toString(passed[6]));
|
|
|
- model.setNode6RejectNum(Integer.toString(rejected[6]));
|
|
|
- model.setNode6TodoNum(Integer.toString(todos[6]));
|
|
|
- }
|
|
|
+ model.setTaskNumSubmitted(Integer.toString(passed[1]));
|
|
|
+ model.setNode2PassedNum(Integer.toString(passed[2]));
|
|
|
+ model.setNode2RejectNum(Integer.toString(rejected[2]));
|
|
|
+ model.setNode2TodoNum(Integer.toString(todos[2]));
|
|
|
+ if (!scope.operatorRoleIds.contains(43)) { // 非地市
|
|
|
+ model.setNode3PassedNum(Integer.toString(passed[3]));
|
|
|
+ model.setNode3RejectNum(Integer.toString(rejected[3]));
|
|
|
+ model.setNode3TodoNum(Integer.toString(todos[3]));
|
|
|
+ if (!scope.operatorRoleIds.contains(4)) { // 非区域
|
|
|
+ if (!scope.operatorRoleIds.contains(40)) { // 非商务
|
|
|
+ model.setNode8PassedNum(Integer.toString(passed[8]));
|
|
|
+ model.setNode8RejectNum(Integer.toString(rejected[8]));
|
|
|
+ model.setNode8TodoNum(Integer.toString(todos[8]));
|
|
|
+ }
|
|
|
+ if (!scope.operatorRoleIds.contains(42)) { // 非市场
|
|
|
+ model.setNode9PassedNum(Integer.toString(passed[9]));
|
|
|
+ model.setNode9RejectNum(Integer.toString(rejected[9]));
|
|
|
+ model.setNode9TodoNum(Integer.toString(todos[9]));
|
|
|
+ }
|
|
|
+ if (scope.operatorRoleIds.contains(41)
|
|
|
+ || scope.operatorRoleIds.contains(39)
|
|
|
+ || scope.operatorRoleIds.contains(3)) { // 分管领导 & 总经理 & 运营
|
|
|
+ model.setNode5PassedNum(Integer.toString(passed[5]));
|
|
|
+ model.setNode5RejectNum(Integer.toString(rejected[5]));
|
|
|
+ model.setNode5TodoNum(Integer.toString(todos[5]));
|
|
|
+ if (scope.operatorRoleIds.contains(39)
|
|
|
+ || scope.operatorRoleIds.contains(3)) { // 总经理 & 运营
|
|
|
+ model.setNode6PassedNum(Integer.toString(passed[6]));
|
|
|
+ model.setNode6RejectNum(Integer.toString(rejected[6]));
|
|
|
+ model.setNode6TodoNum(Integer.toString(todos[6]));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- model.setAllRejectNum(Integer.toString(rejected[2]+rejected[3]+rejected[8]+rejected[9]+rejected[5]+rejected[6]));
|
|
|
- model.setAlllTodoNum(Integer.toString(todos[2]+todos[3]+todos[8]+todos[9]+todos[5]+todos[6]));
|
|
|
- return model;
|
|
|
}
|
|
|
- ).forEach(model -> {result.add(model); });
|
|
|
+ model.setAllRejectNum(
|
|
|
+ Integer.toString(
|
|
|
+ rejected[2]
|
|
|
+ + rejected[3]
|
|
|
+ + rejected[8]
|
|
|
+ + rejected[9]
|
|
|
+ + rejected[5]
|
|
|
+ + rejected[6]));
|
|
|
+ model.setAlllTodoNum(
|
|
|
+ Integer.toString(
|
|
|
+ todos[2] + todos[3] + todos[8] + todos[9] + todos[5] + todos[6]));
|
|
|
+ return model;
|
|
|
+ })
|
|
|
+ .forEach(
|
|
|
+ model -> {
|
|
|
+ result.add(model);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
return result;
|
|
@@ -1327,23 +1411,33 @@ public class WmPackageManager {
|
|
|
}
|
|
|
|
|
|
// 分别过滤区域和服务商
|
|
|
- List<Integer> parentDeptIds = operatorRoleIds.contains(37) ? //服务商的区域ID
|
|
|
- sysDeptRelationMapper.selectList(
|
|
|
- Wrappers.<SysDeptRelation>lambdaQuery()
|
|
|
- .ne(SysDeptRelation::getAncestor, SecurityUtils.getUser().getDeptId())
|
|
|
- .eq(SysDeptRelation::getDescendant, SecurityUtils.getUser().getDeptId()))
|
|
|
- .stream().map(SysDeptRelation::getAncestor).collect(Collectors.toList())
|
|
|
- : new ArrayList<>();
|
|
|
+ List<Integer> parentDeptIds =
|
|
|
+ operatorRoleIds.contains(37)
|
|
|
+ ? // 服务商的区域ID
|
|
|
+ sysDeptRelationMapper
|
|
|
+ .selectList(
|
|
|
+ Wrappers.<SysDeptRelation>lambdaQuery()
|
|
|
+ .ne(SysDeptRelation::getAncestor, SecurityUtils.getUser().getDeptId())
|
|
|
+ .eq(SysDeptRelation::getDescendant, SecurityUtils.getUser().getDeptId()))
|
|
|
+ .stream()
|
|
|
+ .map(SysDeptRelation::getAncestor)
|
|
|
+ .collect(Collectors.toList())
|
|
|
+ : new ArrayList<>();
|
|
|
if (operatorRoleIds.contains(37) && CollUtil.isEmpty(parentDeptIds)) {
|
|
|
throw new RuntimeException("没有找到对应的区域");
|
|
|
}
|
|
|
- List<Integer> childDeptIds = operatorRoleIds.contains(4) ? //区域的服务商ID
|
|
|
- sysDeptRelationMapper.selectList(
|
|
|
- Wrappers.<SysDeptRelation>lambdaQuery()
|
|
|
- .eq(SysDeptRelation::getAncestor, SecurityUtils.getUser().getDeptId())
|
|
|
- .ne(SysDeptRelation::getDescendant, SecurityUtils.getUser().getDeptId()))
|
|
|
- .stream().map(SysDeptRelation::getDescendant).collect(Collectors.toList())
|
|
|
- : new ArrayList<>();
|
|
|
+ List<Integer> childDeptIds =
|
|
|
+ operatorRoleIds.contains(4)
|
|
|
+ ? // 区域的服务商ID
|
|
|
+ sysDeptRelationMapper
|
|
|
+ .selectList(
|
|
|
+ Wrappers.<SysDeptRelation>lambdaQuery()
|
|
|
+ .eq(SysDeptRelation::getAncestor, SecurityUtils.getUser().getDeptId())
|
|
|
+ .ne(SysDeptRelation::getDescendant, SecurityUtils.getUser().getDeptId()))
|
|
|
+ .stream()
|
|
|
+ .map(SysDeptRelation::getDescendant)
|
|
|
+ .collect(Collectors.toList())
|
|
|
+ : new ArrayList<>();
|
|
|
if (operatorRoleIds.contains(4) && CollUtil.isEmpty(childDeptIds)) {
|
|
|
throw new RuntimeException("没有找到对应的服务商");
|
|
|
}
|
|
@@ -1351,16 +1445,40 @@ public class WmPackageManager {
|
|
|
Map<Integer, SysDept> dis =
|
|
|
depts.stream()
|
|
|
.filter(d -> d.getLevel() == 3)
|
|
|
- .filter(d -> !operatorRoleIds.contains(4) || operatorRoleIds.contains(4) && d.getDeptId().equals(SecurityUtils.getUser().getDeptId())) //区域管理员
|
|
|
- .filter(d -> !operatorRoleIds.contains(43) || operatorRoleIds.contains(43) && d.getDeptId().equals(SecurityUtils.getUser().getDeptId())) //地市管理员
|
|
|
- .filter(d -> !operatorRoleIds.contains(37) || operatorRoleIds.contains(37) && parentDeptIds.contains(d.getDeptId())) //服务商管理员
|
|
|
+ .filter(
|
|
|
+ d ->
|
|
|
+ !operatorRoleIds.contains(4)
|
|
|
+ || operatorRoleIds.contains(4)
|
|
|
+ && d.getDeptId().equals(SecurityUtils.getUser().getDeptId())) // 区域管理员
|
|
|
+ .filter(
|
|
|
+ d ->
|
|
|
+ !operatorRoleIds.contains(43)
|
|
|
+ || operatorRoleIds.contains(43)
|
|
|
+ && d.getDeptId().equals(SecurityUtils.getUser().getDeptId())) // 地市管理员
|
|
|
+ .filter(
|
|
|
+ d ->
|
|
|
+ !operatorRoleIds.contains(37)
|
|
|
+ || operatorRoleIds.contains(37)
|
|
|
+ && parentDeptIds.contains(d.getDeptId())) // 服务商管理员
|
|
|
.collect(Collectors.toMap(SysDept::getDeptId, Function.identity()));
|
|
|
Map<Integer, SysDept> service =
|
|
|
depts.stream()
|
|
|
.filter(d -> d.getLevel() == 4)
|
|
|
- .filter(d -> !operatorRoleIds.contains(4) || operatorRoleIds.contains(4) && childDeptIds.contains(d.getDeptId())) //区域管理员
|
|
|
- .filter(d -> !operatorRoleIds.contains(43) || operatorRoleIds.contains(43) && childDeptIds.contains(d.getDeptId())) //地市管理员
|
|
|
- .filter(d -> !operatorRoleIds.contains(37) || operatorRoleIds.contains(37) && d.getDeptId().equals(SecurityUtils.getUser().getDeptId())) //服务商管理员
|
|
|
+ .filter(
|
|
|
+ d ->
|
|
|
+ !operatorRoleIds.contains(4)
|
|
|
+ || operatorRoleIds.contains(4)
|
|
|
+ && childDeptIds.contains(d.getDeptId())) // 区域管理员
|
|
|
+ .filter(
|
|
|
+ d ->
|
|
|
+ !operatorRoleIds.contains(43)
|
|
|
+ || operatorRoleIds.contains(43)
|
|
|
+ && childDeptIds.contains(d.getDeptId())) // 地市管理员
|
|
|
+ .filter(
|
|
|
+ d ->
|
|
|
+ !operatorRoleIds.contains(37)
|
|
|
+ || operatorRoleIds.contains(37)
|
|
|
+ && d.getDeptId().equals(SecurityUtils.getUser().getDeptId())) // 服务商管理员
|
|
|
.collect(Collectors.toMap(SysDept::getDeptId, Function.identity()));
|
|
|
|
|
|
if (CollUtil.isEmpty(dis) || CollUtil.isEmpty(service)) {
|
|
@@ -1379,10 +1497,12 @@ public class WmPackageManager {
|
|
|
.map(String::valueOf)
|
|
|
.sorted()
|
|
|
.collect(Collectors.toList())));
|
|
|
- if(operatorRoleIds.contains(37)) {
|
|
|
- pkgs = pkgs.stream()
|
|
|
- .filter(p -> p.getDeptId().equals(Integer.toString(SecurityUtils.getUser().getDeptId())))
|
|
|
- .collect(Collectors.toList());
|
|
|
+ if (operatorRoleIds.contains(37)) {
|
|
|
+ pkgs =
|
|
|
+ pkgs.stream()
|
|
|
+ .filter(
|
|
|
+ p -> p.getDeptId().equals(Integer.toString(SecurityUtils.getUser().getDeptId())))
|
|
|
+ .collect(Collectors.toList());
|
|
|
}
|
|
|
if (CollUtil.isEmpty(pkgs)) {
|
|
|
throw new BizException(
|
|
@@ -1424,13 +1544,13 @@ public class WmPackageManager {
|
|
|
|
|
|
// 获取下发的
|
|
|
List<WmPackageTaskTypeQty> taskTypeQties =
|
|
|
- packageTaskTypeQtyService.listPkgTaskTypeQtyByPkgIds(
|
|
|
- cPkgIds.stream()
|
|
|
- .mapToInt(Integer::parseInt)
|
|
|
- .boxed()
|
|
|
- .distinct()
|
|
|
- .sorted()
|
|
|
- .collect(Collectors.toList()));
|
|
|
+ packageTaskTypeQtyService.listPkgTaskTypeQtyByPkgIds(
|
|
|
+ cPkgIds.stream()
|
|
|
+ .mapToInt(Integer::parseInt)
|
|
|
+ .boxed()
|
|
|
+ .distinct()
|
|
|
+ .sorted()
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
|
|
if (CollUtil.isEmpty(taskTypeQties)) {
|
|
|
throw new BizException("没有找到可导出的任务下发记录");
|
|
@@ -1452,8 +1572,16 @@ public class WmPackageManager {
|
|
|
: wmDaDrugEntDrugtableMapper.selectBatchIds(drugIds).stream()
|
|
|
.collect(Collectors.toMap(WmDaDrugEntDrugtable::getId, Function.identity()));
|
|
|
|
|
|
- return new WmPackageExportScope(dis, service, pkgs, drugtableMap, operatorRoleIds,
|
|
|
- childrenPkgs, cPkgIds, parentId2PkgMap, pttMap);
|
|
|
+ return new WmPackageExportScope(
|
|
|
+ dis,
|
|
|
+ service,
|
|
|
+ pkgs,
|
|
|
+ drugtableMap,
|
|
|
+ operatorRoleIds,
|
|
|
+ childrenPkgs,
|
|
|
+ cPkgIds,
|
|
|
+ parentId2PkgMap,
|
|
|
+ pttMap);
|
|
|
}
|
|
|
|
|
|
private Integer toInteger(Object obj) {
|