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