Преглед на файлове

feat: 新增知会-列出对应知会阶段的可用执行包列表

lixuesong преди 2 месеца
родител
ревизия
aa08f89bf7

+ 11 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/pkg/WmScorePackageController.java

@@ -3665,6 +3665,17 @@ public class WmScorePackageController {
         return R.ok(list);
     }
 
+    /**
+     * 列出对应知会阶段的可用执行包列表
+     *
+     * @param step 知会阶段1,2,3
+     * @return {@link R }<{@link List }<{@link WmScorePackage }>> 结果
+     */
+    @GetMapping(value = "/redemption/pkg/{step}/list")
+    public R<List<WmScorePackage>> listStepPkgs(@PathVariable("step") Integer step) {
+        return R.ok(packageManager.listStepPkgs(step, SecurityUtils.getUser()));
+    }
+
 
     // todo
     @GetMapping(value = "/ind/stat")

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

@@ -648,6 +648,45 @@ public class WmPackageManager {
     return result;
   }
 
+  /**
+   * 新增知会-可选执行包列表
+   *
+   * @param step      知会阶段
+   * @param user      用户
+   * @return {@link List }<{@link WmScorePackage }> 可选执行包列表
+   */
+  public List<WmScorePackage> listStepPkgs(Integer step, HnqzUser user) {
+
+      List<WmScorePackage> packages = scorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery()
+          .eq(WmScorePackage::getSendPackageDeptId, user.getDeptId()));
+      if (CollUtil.isEmpty(packages)) {
+          return Collections.emptyList();
+      }
+
+      List<String> packageIds = packages.stream().map(WmScorePackage::getId).collect(Collectors.toList());
+
+      // 查询已知会信息
+      List<WmPackageRedemptionNotice> redemptionNotices =
+          packageRedemptionNoticeService.list(Wrappers.<WmPackageRedemptionNotice>lambdaQuery()
+              .in(WmPackageRedemptionNotice::getPackageId, packageIds).eq(WmPackageRedemptionNotice::getStep, step)
+              .notIn(WmPackageRedemptionNotice::getCheckState, CheckState.REJECTED.getState()));
+
+      Map<Integer, List<Integer>> noticePkgMap =
+          redemptionNotices.stream().collect(Collectors.groupingBy(WmPackageRedemptionNotice::getStep,
+              Collectors.mapping(WmPackageRedemptionNotice::getPackageId, Collectors.toList())));
+
+      // 根据不同知会阶段,过滤出还未知会的包
+      List<Integer> noticedPkgIds = noticePkgMap.get(step);
+
+      if (CollUtil.isNotEmpty(noticedPkgIds)) {
+        return packages.stream()
+                .filter(pkg -> !noticedPkgIds.contains(Integer.parseInt(pkg.getId())))
+                .collect(Collectors.toList());
+      }
+
+      return packages;
+  }
+
   /**
    * 获取积分包任务信息详情
    *