|
@@ -8,13 +8,18 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.dto.WmPkgDTO;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysCheckChainNodeCheckHistory;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.SysImplementPlan;
|
|
|
+import com.qunzhixinxi.hnqz.admin.api.entity.SysPlanPkg;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysUserRole;
|
|
|
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.mapper.SysPlanPkgMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysCheckChainNodeCheckHistoryService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.SysImplementPlanService;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.SysPlanPkgService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysUserRoleService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmPackageRedemptionNoticeService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.WmPackageTaskTypeQtyService;
|
|
@@ -63,6 +68,8 @@ public class WmPackageManager {
|
|
|
private final SysCheckChainNodeCheckHistoryService checkChainNodeCheckHistoryService;
|
|
|
private final WmPackageRedemptionNoticeService packageRedemptionNoticeService;
|
|
|
private final WmPackageTaskTypeQtyService pkgTaskTypeQtyService;
|
|
|
+ private final SysPlanPkgService planPkgService;
|
|
|
+ private final SysImplementPlanService implementPlanService;
|
|
|
|
|
|
/**
|
|
|
* 创建执行包兑付通知
|
|
@@ -204,20 +211,41 @@ public class WmPackageManager {
|
|
|
*/
|
|
|
public Map<String, Object> getRedemptionValueStat(Integer packageId, HnqzUser user) {
|
|
|
|
|
|
+ // 获取积分包
|
|
|
WmScorePackage scorePackage = scorePackageService.getById(packageId);
|
|
|
+
|
|
|
+ // 获取服务计划
|
|
|
+ List<SysPlanPkg> list = planPkgService.list(Wrappers.<SysPlanPkg>lambdaQuery().eq(SysPlanPkg::getPkgId, packageId));
|
|
|
+
|
|
|
+ long planScore = 0L;
|
|
|
+
|
|
|
+ if (CollUtil.isNotEmpty(list)) {
|
|
|
+
|
|
|
+ SysImplementPlan plan = implementPlanService.getById(list.get(0).getPlanId());
|
|
|
+
|
|
|
+ if (plan != null) {
|
|
|
+ planScore = plan.getPlanScore();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取积分包中的任务
|
|
|
List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().eq(WmTask::getScorePackageId, packageId));
|
|
|
+ Map<String, WmTask> taskId2EntityMap = tasks.stream().collect(Collectors.toMap(WmTask::getId, Function.identity()));
|
|
|
+
|
|
|
Set<Integer> taskIds = tasks.stream().map(WmTask::getId).mapToInt(Integer::valueOf).boxed().collect(Collectors.toSet());
|
|
|
|
|
|
+ // 审核通过的记录
|
|
|
List<SysCheckChainNodeCheckHistory> okTasks = CollUtil.isNotEmpty(tasks) ? checkChainNodeCheckHistoryService.list(Wrappers.<SysCheckChainNodeCheckHistory>lambdaQuery().eq(SysCheckChainNodeCheckHistory::getNodeId, OK_CHAIN_TASK_NODE)
|
|
|
.in(SysCheckChainNodeCheckHistory::getTargetId, taskIds)) : Collections.emptyList();
|
|
|
|
|
|
-
|
|
|
+ // 兑付信息
|
|
|
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())
|
|
|
.orderByDesc(WmPackageRedemptionNotice::getCreateTime));
|
|
|
|
|
|
- Map<String, Object> result = new HashMap<>(10);
|
|
|
+ Map<String, Object> result = new HashMap<>(11);
|
|
|
result.put("id", packageId);
|
|
|
result.put("pkgSn", scorePackage.getPackageSn());
|
|
|
result.put("pkgName", scorePackage.getScorePackageName());
|
|
@@ -225,11 +253,35 @@ public class WmPackageManager {
|
|
|
result.put("nextStep", CollUtil.isNotEmpty(notices) ? notices.get(0).getStep() + 1 : 1);
|
|
|
|
|
|
int taskTotalCount = tasks.size();
|
|
|
+
|
|
|
+ // 任务
|
|
|
result.put("taskTotalCount", taskTotalCount);
|
|
|
- result.put("servicePlanDeviationRate", "10");
|
|
|
+
|
|
|
+ // 服务项目完成度
|
|
|
+ long okTaskScoreSum = 0L;
|
|
|
+
|
|
|
+ for (SysCheckChainNodeCheckHistory node : okTasks){
|
|
|
+ WmTask wmTask = taskId2EntityMap.get(node.getTargetId().toString());
|
|
|
+ if (wmTask != null){
|
|
|
+ okTaskScoreSum += wmTask.getScore();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ result.put("servicePlanDeviationRate", String.format("%.2f", okTaskScoreSum * 100.0 / ((planScore == 0) ? 1 : planScore)) );
|
|
|
+
|
|
|
+ // 任务完成比例
|
|
|
result.put("taskCompleteRate", String.format("%.2f", okTasks.size() * 100.0 / ((taskTotalCount == 0) ? 1 : taskTotalCount)));
|
|
|
- result.put("marketCustomerContactRate", "3");
|
|
|
+
|
|
|
+ // 客户接洽率
|
|
|
+ // result.put("marketCustomerContactRate", "3");
|
|
|
+
|
|
|
+ // 执行包数量
|
|
|
+ result.put("pkgQty", 1);
|
|
|
+
|
|
|
+ // 发包企业
|
|
|
result.put("fromEntId", scorePackage.getSendPackageDeptId());
|
|
|
+
|
|
|
+ // 接包企业
|
|
|
result.put("toEntId", scorePackage.getDeptId());
|
|
|
|
|
|
|