Quellcode durchsuchen

feat: 新增知会/知会分页筛选接口调整

lixuesong vor 2 Monaten
Ursprung
Commit
e96de53e81

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

@@ -3659,10 +3659,7 @@ public class WmScorePackageController {
 
     @GetMapping(value = "/redemption/pkg/list")
     public R<List<WmScorePackage>> listPkgs() {
-
-        List<WmScorePackage> list = wmScorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getSendPackageDeptId, SecurityUtils.getUser().getDeptId()));
-
-        return R.ok(list);
+        return R.ok(packageManager.listPagePackages(SecurityUtils.getUser()));
     }
 
     /**

+ 86 - 6
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmPackageManager.java

@@ -141,6 +141,85 @@ public class WmPackageManager {
     return packageRedemptionNoticeService.createPackageRedemptionNotice(resource, user);
   }
 
+  /**
+   * 获取兑付通知分页存在的执行包列表
+   *
+   * @param user 用户
+   * @return {@link List }<{@link WmScorePackage }> 执行包列表
+   */
+  public List<WmScorePackage> listPagePackages(HnqzUser user) {
+
+      // 获取用户角色
+      List<Integer> roles = SecurityUtils.getRoles();
+
+      LambdaQueryWrapper<WmPackageRedemptionNotice> queryWrapper = Wrappers.lambdaQuery();
+      queryWrapper.orderByDesc(WmPackageRedemptionNotice::getCreateTime);
+
+      // 根据用户角色判断是管理员还是服务商
+      // 区域管理员
+      if (roles.contains(DIST_ADMIN_ROLE)) {
+          queryWrapper.eq(WmPackageRedemptionNotice::getFromEntId, user.getDeptId())
+              .eq(WmPackageRedemptionNotice::getCreateBy, user.getUsername());
+      }
+      // 事业部分管领导 || 所有监督角色
+      else if (CollUtil.containsAny(roles, List.of(BIZ_ADMIN_ROLE, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61))) {
+          // 只能看见所绑定药品的包的内容
+          List<SysUserDrug> userDrugs =
+              userDrugService.list(Wrappers.<SysUserDrug>lambdaQuery().eq(SysUserDrug::getUserId, user.getId()));
+
+          if (CollUtil.isEmpty(userDrugs)) {
+              return Collections.emptyList();
+          }
+
+          // 1. 获取操作可见的区域
+          List<Long> areaIds = userAreaService.listUserAreas(Long.valueOf(user.getId()));
+
+          if (CollUtil.isEmpty(areaIds)) {
+              return Collections.emptyList();
+          }
+
+          List<Long> collect = areaEntityService
+              .list(Wrappers.<SysAreaEntity>lambdaQuery().in(SysAreaEntity::getAreaId, areaIds)
+                  .eq(SysAreaEntity::getAreaType, UpmsType.AreaType.DISTRICT))
+              .stream().mapToLong(SysAreaEntity::getAreaId).boxed().collect(Collectors.toList());
+
+          List<Long> entIds = enterpriseAreaService.listAreaEnts(collect);
+
+          List<String> drugIds =
+              userDrugs.stream().map(ud -> ud.getDrugId().toString()).distinct().sorted().collect(Collectors.toList());
+
+          List<WmScorePackage> pkgs = scorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery()
+              .in(WmScorePackage::getSendPackageDeptId, entIds).in(WmScorePackage::getDrugtable, drugIds));
+
+          if (CollUtil.isEmpty(pkgs)) {
+              return Collections.emptyList();
+          }
+
+          List<Integer> pkgIds = pkgs.stream().mapToInt(p -> Integer.parseInt(p.getId())).boxed().distinct().sorted()
+              .collect(Collectors.toList());
+
+          queryWrapper.in(WmPackageRedemptionNotice::getPackageId, pkgIds);
+
+      }
+      // 服务商
+      else if (roles.contains(SERV_ADMIN_ROLE)) {
+          queryWrapper.eq(WmPackageRedemptionNotice::getCheckState, WmPackageRedemptionNotice.CheckState.PASSED)
+              .eq(WmPackageRedemptionNotice::getToEntId, user.getDeptId());
+      } else {
+          throw new BizException("角色不支持该数据查询");
+      }
+
+      List<WmPackageRedemptionNotice> redemptionNotices =
+          packageRedemptionNoticeService.list(queryWrapper.select(WmPackageRedemptionNotice::getPackageId));
+      if (CollUtil.isEmpty(redemptionNotices)) {
+          return Collections.emptyList();
+      }
+
+      List<Integer> pkgIds =
+          redemptionNotices.stream().map(WmPackageRedemptionNotice::getPackageId).collect(Collectors.toList());
+      return scorePackageService.listByIds(pkgIds);
+  }
+
   /**
    * 获取兑付通知分页
    *
@@ -162,6 +241,7 @@ public class WmPackageManager {
 
     Page<WmPackageRedemptionNotice> page = new Page<>(query.getCurrent(), query.getSize());
     LambdaQueryWrapper<WmPackageRedemptionNotice> queryWrapper = Wrappers.lambdaQuery();
+    queryWrapper.orderByDesc(WmPackageRedemptionNotice::getCreateTime);
     if (query.getCheckState() != null) {
       queryWrapper.eq(WmPackageRedemptionNotice::getCheckState, query.getCheckState().getState());
     }
@@ -193,10 +273,11 @@ public class WmPackageManager {
 
       List<WmScorePackage> pkgs = scorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery()
           .eq(StrUtil.isNotBlank(query.getPkgId()), WmScorePackage::getId, query.getPkgId())
+          .eq(StrUtil.isNotBlank(query.getPkgIds()), WmScorePackage::getId, query.getPkgIds())
           .eq(StrUtil.isNotBlank(query.getPkgName()), WmScorePackage::getScorePackageName, query.getPkgName())
           .eq(StrUtil.isNotBlank(query.getProvAbbr()), WmScorePackage::getProvAbbr, query.getProvAbbr())
           .in(CollUtil.isNotEmpty(skuIds), WmScorePackage::getDrugtable, skuIds)
-          .between(StrUtil.isAllNotBlank(query.getYear(), query.getQuarter()), WmScorePackage::getStartTime, issueDate,
+          .between(StrUtil.isNotBlank(query.getYear()), WmScorePackage::getStartTime, issueDate,
               expiryDate));
 
       if (CollUtil.isEmpty(pkgs)) {
@@ -254,11 +335,12 @@ public class WmPackageManager {
 
       List<WmScorePackage> pkgs = scorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery()
           .eq(StrUtil.isNotBlank(query.getPkgId()), WmScorePackage::getId, query.getPkgId())
+          .eq(StrUtil.isNotBlank(query.getPkgIds()), WmScorePackage::getId, query.getPkgIds())
           .eq(StrUtil.isNotBlank(query.getPkgName()), WmScorePackage::getScorePackageName, query.getPkgName())
           .eq(StrUtil.isNotBlank(query.getProvAbbr()), WmScorePackage::getProvAbbr, query.getProvAbbr())
           .in(CollUtil.isNotEmpty(skuIds), WmScorePackage::getDrugtable, skuIds)
           .in(WmScorePackage::getSendPackageDeptId, entIds).in(WmScorePackage::getDrugtable, drugIds)
-          .between(StrUtil.isAllNotBlank(query.getYear(), query.getQuarter()), WmScorePackage::getStartTime, issueDate,
+          .between(StrUtil.isNotBlank(query.getYear()), WmScorePackage::getStartTime, issueDate,
               expiryDate));
 
       if (CollUtil.isEmpty(pkgs)) {
@@ -641,7 +723,7 @@ public class WmPackageManager {
     double supervisionDeductScore = CollUtil.isEmpty(taskSupervisions) ? 0
         : taskId2EntityMap.entrySet().stream().filter(entry -> supRegTaskIds.contains(entry.getKey()))
             .mapToDouble(entry -> entry.getValue().getScore()).sum();
-    // 监督扣减分值 todo 不同阶段对应的分值
+      // 监督扣减分值
     result.put("supervisionDeductScore", supervisionDeductScore);
 
     // 一阶段兑付的分值
@@ -699,10 +781,8 @@ public class WmPackageManager {
           redemptionNotices.stream().collect(Collectors.groupingBy(WmPackageRedemptionNotice::getStep,
               Collectors.mapping(WmPackageRedemptionNotice::getPackageId, Collectors.toList())));
 
-      // 根据不同知会阶段,过滤出还未知会的包
-      List<Integer> noticedPkgIds = noticePkgMap.get(step);
-
       if (step > 1) {
+        List<Integer> noticedPkgIds = noticePkgMap.get(step - 1);
           // 二阶段、三阶段获取上一阶段已知会的包
           return packages.stream()
               .filter(

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

@@ -46,6 +46,9 @@ public class WmPackageRedemptionNoticeServiceImpl
     notice.setCurrentRedemptionRate(resource.getCurrentRedemptionRate());
     notice.setCurrentRedemptionTotalAmount(resource.getTotalAmount());
     notice.setCurrentRedemptionTotal(resource.getCurrentRedemptionTotal());
+    notice.setPassedByNode6ScoreSum(resource.getPassedByNode6ScoreSum());
+    notice.setAvailRdpScore(resource.getAvailRdpScore());
+    notice.setSupervisionDeductScore(resource.getSupervisionDeductScore());
     notice.setNoticeState(WmPackageRedemptionNotice.NoticeState.PENDING.getState());
     notice.setCheckState(WmPackageRedemptionNotice.CheckState.CKT2.getState());
     notice.setCreateBy(username);