瀏覽代碼

feat: 兑付通知信息补充

shc 7 月之前
父節點
當前提交
45c182f223

+ 56 - 4
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmPackageManager.java

@@ -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());