Bläddra i källkod

feat: 积分包任务详情

shc 8 månader sedan
förälder
incheckning
ad128fd15a

+ 36 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiControllerV2.java

@@ -0,0 +1,36 @@
+package com.qunzhixinxi.hnqz.admin.controller;
+
+import com.qunzhixinxi.hnqz.admin.manager.WmPackageManager;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 小程序前端控制器
+ *
+ * @author jimmy
+ * @date 2024-10-30 20:49
+ */
+@Slf4j
+@RestController
+@AllArgsConstructor
+public class ApiControllerV2 {
+
+    private final WmPackageManager packageManager;
+
+    /**
+     * 获取当前积分包任务信息详情
+     *
+     * @param pkgId 积分包ID
+     * @return 任务详情列表
+     */
+    @GetMapping(value = "/api/v2/getPkgTaskDetails")
+    public R<List<?>> listPkgTaskDetails(@RequestParam("pkgId") Integer pkgId) {
+        return R.ok(packageManager.listPkgTaskDetails(pkgId));
+    }
+}

+ 55 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmPackageManager.java

@@ -9,13 +9,17 @@ import com.qunzhixinxi.hnqz.admin.api.dto.WmPkgDTO;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysCheckChainNodeCheckHistory;
 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.service.SysCheckChainNodeCheckHistoryService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserRoleService;
 import com.qunzhixinxi.hnqz.admin.service.WmPackageRedemptionNoticeService;
+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.exception.BizException;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import lombok.AllArgsConstructor;
@@ -50,8 +54,10 @@ public class WmPackageManager {
     private final WmScorePackageService scorePackageService;
     private final SysUserRoleService userRoleService;
     private final WmTaskService taskService;
+    private final WmTaskTypeService taskTypeService;
     private final SysCheckChainNodeCheckHistoryService checkChainNodeCheckHistoryService;
     private final WmPackageRedemptionNoticeService packageRedemptionNoticeService;
+    private final WmPackageTaskTypeQtyService pkgTaskTypeQtyService;
 
     /**
      * 创建执行包兑付通知
@@ -209,5 +215,54 @@ public class WmPackageManager {
 
         return result;
     }
+
+    /**
+     * 获取积分包任务信息详情
+     *
+     * @param pkgId 积分包ID
+     * @return 积分包任务信息详情
+     */
+    public List<Map<String, Object>> listPkgTaskDetails(Integer pkgId) {
+
+        // 获取积分包拆解信息
+        List<WmPackageTaskTypeQty> packageTaskTypeQtyList = pkgTaskTypeQtyService.listPkgTaskTypeQtyByPkgIds(Collections.singletonList(pkgId));
+
+        if (CollUtil.isEmpty(packageTaskTypeQtyList)) {
+            return Collections.emptyList();
+        }
+
+        // 获取任务类型
+        List<WmTaskType> taskTypes = taskTypeService.listParentTaskType();
+        Map<String, WmTaskType> taskTypeName2EntityMap = taskTypes.stream().collect(Collectors.toMap(WmTaskType::getTaskTypeName, Function.identity(), (v1, v2) -> v2));
+
+        // 获取完成的任务数量
+        List<WmTask> tasks = taskService.listPkgTasks(pkgId.toString());
+        Map<String, List<WmTask>> taskTypeId2TaskMap = tasks.stream().collect(Collectors.groupingBy(WmTask::getTaskTypeId));
+
+
+        return packageTaskTypeQtyList.stream().map(ttq -> {
+            Map<String, Object> result = new HashMap<>(5);
+            result.put("taskTypeName", ttq.getTaskTypeName());
+            result.put("qty", ttq.getQty());
+            result.put("price", ttq.getPrice());
+
+            WmTaskType taskType = taskTypeName2EntityMap.get(ttq.getTaskTypeName());
+            long count = 0L;
+            String baseId = null;
+            if (taskType != null) {
+                baseId = taskType.getBaseId();
+                List<WmTask> wmTasks = taskTypeId2TaskMap.get(taskType.getId());
+                if (CollUtil.isNotEmpty(wmTasks)) {
+                    count = wmTasks.stream().filter(t -> "3".equals(t.getTaskStatus())).count();
+                }
+            }
+            result.put("baseId", baseId);
+            result.put("count", count);
+            return result;
+
+        }).collect(Collectors.toList());
+
+
+    }
 }
 

+ 4 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskService.java

@@ -232,5 +232,8 @@ public interface WmTaskService extends IService<WmTask> {
      */
     List<WmTask> listAvailableTaskForSupervision(Integer pkgId, Collection<Integer> ignoreIds);
 
-    List<Map<String, Object>> listTaskInfo(List<WmTask> taskList , String pkgId);
+    List<Map<String, Object>> listTaskInfo(List<WmTask> taskList, String pkgId);
+
+
+    List<WmTask> listPkgTasks(String pkgId);
 }

+ 7 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmTaskTypeService.java

@@ -31,4 +31,11 @@ public interface WmTaskTypeService extends IService<WmTaskType> {
     R<Map<String, Object>> getTaskTypeTree(String description);
 
     List<WmTaskTypeDeptOutput> getTaskTypeDeptList(WmTaskType query);
+
+    /**
+     * 获取平台父级任务类型
+     *
+     * @return 任务类型列表
+     */
+    List<WmTaskType> listParentTaskType();
 }

+ 29 - 24
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskServiceImpl.java

@@ -353,7 +353,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
                     wmTask1.setReportDrugApprovalOpinion("1");
                     wmTask1.setTaskStatus("3");
 
-                    //List<Map<String, Object>> wmTaskList = wmTaskMapper.selectByReportOneApprovalStatus(wmTask1);
+                    // List<Map<String, Object>> wmTaskList = wmTaskMapper.selectByReportOneApprovalStatus(wmTask1);
 
                     List<WmTask> wmTasks = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
                             .eq(WmTask::getTaskStatus, "3")
@@ -370,7 +370,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
                         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
                         String reportId = simpleDateFormat.format(date) + (int) ((Math.random() * 9 + 1) * 1000);
 
-                        //for (Map<String, Object> map : wmTasks) {
+                        // for (Map<String, Object> map : wmTasks) {
                         //    if (null != map.get("score_count")) {
                         //        total += Integer.parseInt(map.get("score_count") + "");
                         //    }
@@ -388,7 +388,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
                         totalMap.put("dept_id", deptId);
                         totalMap.put("report_id", reportId);
                         totalMap.put("description", name1);
-                        //wmTaskList.add(totalMap);
+                        // wmTaskList.add(totalMap);
 
                         return R.ok(totalMap);
                     }
@@ -396,7 +396,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
             }
         } else if (sysDept.getLevel() == 4) {
             // 二级CSO
-            //if (Objects.nonNull(wmScorePackage.getDrugEntId())) {
+            // if (Objects.nonNull(wmScorePackage.getDrugEntId())) {
             //    // 通过drugEntId为空,判断是否为药企发来的包,即药企->一级CSO->二级CSO的包
             //    // 药企->一级CSO->二级CSO的大包,只能由一级CSO提交报告审批,二级CSO在任务中心中,点击生成报告按钮应提示没有权限
             //    return R.ok(0);
@@ -1146,7 +1146,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
                         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
                         String reportId = simpleDateFormat.format(date) + (int) ((Math.random() * 9 + 1) * 1000);
 
-                        //for (Map<String, Object> map : wmTaskList) {
+                        // for (Map<String, Object> map : wmTaskList) {
                         //    if (null != map.get("score_count")) {
                         //        total += Integer.parseInt(map.get("score_count") + "");
                         //    }
@@ -1462,10 +1462,10 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
     @Override
     public R<?> getWmTaskList(Page page, WmTask wmTask) {
         WmScorePackage wmScorePackage1 = wmScorePackageService.getById(wmTask.getScorePackageId());
-        if (wmScorePackage1.getTypeid().equals("1")) {//药企给一代发的包
+        if (wmScorePackage1.getTypeid().equals("1")) {// 药企给一代发的包
             wmTask.setScorePackageDrugId(wmTask.getScorePackageId());
             wmTask.setScorePackageId(null);
-        } else if (wmScorePackage1.getTypeid().equals("2")) {//一代给二代发的包
+        } else if (wmScorePackage1.getTypeid().equals("2")) {// 一代给二代发的包
             wmTask.setScorePackageLevel1Id(wmTask.getScorePackageId());
             wmTask.setScorePackageId(null);
         }
@@ -1497,7 +1497,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
                 // 任务类型的名称
                 String taskTypeId = task.getTaskTypeId();
                 WmTaskType taskType = taskTypeService.getById(taskTypeId);
-                if (Objects.nonNull(taskType)){
+                if (Objects.nonNull(taskType)) {
                     task.setTaskTypeName(taskType.getTaskTypeName());
                 }
             }
@@ -1653,8 +1653,8 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
     @SuppressWarnings("unchecked")
     @Transactional(rollbackFor = Exception.class)
     public R<?> approvalTask(WmTask wmTask) {
-        //要循环判断,每一个接单用户,所有用户完成,审核通过,才算是积分包完成
-        //有没有什么问题,例如,个人包收回,影响积分包的积分值
+        // 要循环判断,每一个接单用户,所有用户完成,审核通过,才算是积分包完成
+        // 有没有什么问题,例如,个人包收回,影响积分包的积分值
         String[] ids = wmTask.getId().split(",");
         if (ids.length <= 0) {
             return R.failed("缺少参数!");
@@ -1782,7 +1782,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
             WmScorePackageStatus scorePackageStatus = new WmScorePackageStatus();
             scorePackageStatus.setPackageId(wmScorePackage.getId());
             scorePackageStatus.setUserId(task.getTaskUserId());
-            scorePackageStatus.setStatus("2");//接单审核通过
+            scorePackageStatus.setStatus("2");// 接单审核通过
             List<WmScorePackageStatus> scorePackageStatusList = wmScorePackageStatusService.list(Wrappers.query(scorePackageStatus));
 
             if (CollectionUtil.isNotEmpty(scorePackageStatusList)) {
@@ -1791,8 +1791,8 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
             }
         });
 
-        //判断已审核的任务积分值,或者积分个数是否满了,如果满了,就将所有未审核的任务,更新成审核不通过
-        //即,将real_flag=9更新成real_flag=1,将task_status=2更新成task_status=4
+        // 判断已审核的任务积分值,或者积分个数是否满了,如果满了,就将所有未审核的任务,更新成审核不通过
+        // 即,将real_flag=9更新成real_flag=1,将task_status=2更新成task_status=4
         wmScorePackageStatusService.updateScorePackageStatus(scorePackageId);
 
         return R.ok("审核成功");
@@ -1812,7 +1812,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
         query.setTaskUserId(wmTask.getTaskUserId());
         query.setDelFlag("0");
         query.setEnableFlag("0");
-        query.setTaskStatus("3");//审核通过
+        query.setTaskStatus("3");// 审核通过
         List<WmTask> wmTasks = wmTaskMapper.selectList(Wrappers.query(query));
         if (CollectionUtils.isNotEmpty(wmTasks) &&
                 new BigDecimal(wmScorePackage1.getTaskNum()).compareTo(new BigDecimal(wmTasks.size())) < 1) {
@@ -1823,7 +1823,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 
         wmTask.setDeptId(wmScorePackage1.getDeptId());
         wmTask.setDrugEntId(wmScorePackage1.getDrugEntId());
-        wmTask.setTaskStatus("3");//审核通过
+        wmTask.setTaskStatus("3");// 审核通过
         wmTask.setDelFlag("0");
         wmTask.setEnableFlag("0");
         wmTask.setTaskFrom("2");
@@ -2180,7 +2180,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
             errorMap(errorMap, info, String.join(";", idList));
 
         } else {
-            //校验创建人结算信息税邦云信息是否配置完全
+            // 校验创建人结算信息税邦云信息是否配置完全
             SysDeptSub sysDeptSub = sysDeptSubService.getOne(Wrappers.<SysDeptSub>lambdaQuery()
                             .eq(SysDeptSub::getDeptId, creator.getDeptId())
                     //.eq(SysDeptSub::getSubjectType, SubjectTypeEnum.TYPE_SHUIBANGYUN.getCode())
@@ -2270,7 +2270,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
                 }
                 preUserSettleAmountMap.put(user, tmp);
 
-                //errorInfo = checkoutSettleLimit(user, sysDeptSub.getLimitAmount(), tmp, scorePackage.getLocation() );
+                // errorInfo = checkoutSettleLimit(user, sysDeptSub.getLimitAmount(), tmp, scorePackage.getLocation() );
                 if (StringUtils.isNotEmpty(errorInfo)) {
                     log.error(errorInfo);
                     errorMap(errorMap, errorInfo, commonEvidenceDTO.getId());
@@ -2279,15 +2279,15 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
 
                 // todo
                 //// 获取发票类目
-                //InvoiceInfo invoiceInfo = InvoiceInfo.resolveByCategory(commonEvidenceDTO.getInvoiceCategory());
+                // InvoiceInfo invoiceInfo = InvoiceInfo.resolveByCategory(commonEvidenceDTO.getInvoiceCategory());
                 //
-                //if (invoiceInfo == null) {
+                // if (invoiceInfo == null) {
                 //	log.error("发票类目不存在");
                 //	errorMap(errorMap, "发票类目不存在", commonEvidenceDTO.getId());
                 //	return;
                 //}
                 //
-                //commonEvidenceDTO.setInvoiceType(invoiceInfo.getTypeId());
+                // commonEvidenceDTO.setInvoiceType(invoiceInfo.getTypeId());
                 // 添加正确的数据
                 commonEvidenceDTO.setCreatorId(creator.getId());
                 commonEvidenceDTO.setDeptId(creator.getDeptId());
@@ -2473,7 +2473,7 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
             note.setSettleNo(settleNo);
             note.setTaskId(task.getId());
             // todo
-            //wmScorePackageSettleNoteService.save(note);
+            // wmScorePackageSettleNoteService.save(note);
         }
     }
 
@@ -2658,9 +2658,9 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
     /**
      * 快速批量任务审核
      *
-     * @param taskIdToNodeIdMap         任务id列表
-     * @param taskStatus     审核状态(3-通过,4-不通过)
-     * @param taskStatusInfo 审批说明
+     * @param taskIdToNodeIdMap 任务id列表
+     * @param taskStatus        审核状态(3-通过,4-不通过)
+     * @param taskStatusInfo    审批说明
      * @return 审核结果
      */
     @Override
@@ -3154,6 +3154,11 @@ public class WmTaskServiceImpl extends ServiceImpl<WmTaskMapper, WmTask> impleme
         return resultList;
     }
 
+    @Override
+    public List<WmTask> listPkgTasks(String pkgId) {
+        return this.list(Wrappers.<WmTask>lambdaQuery().eq(WmTask::getScorePackageId, pkgId));
+    }
+
     /**
      * 移除图片缓存
      *

+ 11 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTaskTypeServiceImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.csp.sentinel.util.StringUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskTypeTree;
 import com.qunzhixinxi.hnqz.admin.api.model.output.WmTaskTypeDeptOutput;
@@ -38,6 +39,16 @@ public class WmTaskTypeServiceImpl extends ServiceImpl<WmTaskTypeMapper, WmTaskT
         return wmTaskTypeMapper.getTaskTypeDeptList(query);
     }
 
+    /**
+     * 获取平台父级任务类型
+     *
+     * @return 任务类型列表
+     */
+    @Override
+    public List<WmTaskType> listParentTaskType() {
+        return this.list(Wrappers.<WmTaskType>lambdaQuery().le(WmTaskType::getId, "100"));
+    }
+
     @Override
     public int getWmTaskTypeByEnt(WmTaskType wmTaskType) {
         wmTaskType.setDelFlag("0");