|
@@ -3,7 +3,6 @@ package com.qunzhixinxi.hnqz.admin.manager;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.date.DatePattern;
|
|
import cn.hutool.core.date.DatePattern;
|
|
-import cn.hutool.core.util.ObjectUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
@@ -12,8 +11,6 @@ import com.qunzhixinxi.hnqz.admin.api.constant.UpmsState;
|
|
import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
|
|
import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
|
|
import com.qunzhixinxi.hnqz.admin.api.constant.enums.EnableEnum;
|
|
import com.qunzhixinxi.hnqz.admin.api.constant.enums.EnableEnum;
|
|
import com.qunzhixinxi.hnqz.admin.api.dto.WmPkgDTO;
|
|
import com.qunzhixinxi.hnqz.admin.api.dto.WmPkgDTO;
|
|
-import com.qunzhixinxi.hnqz.admin.api.dto.WmPkgDTO.OnOwnerReplace;
|
|
|
|
-import com.qunzhixinxi.hnqz.admin.api.dto.WmPkgDTO.OnStop;
|
|
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysAreaEntity;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysAreaEntity;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysCheckChainNodeCheckHistory;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysCheckChainNodeCheckHistory;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
|
|
import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
|
|
@@ -36,12 +33,10 @@ import com.qunzhixinxi.hnqz.admin.api.model.excel.WmScorePackageInfoExcelModel;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysCheckChainNodeCheckHistoryMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysCheckChainNodeCheckHistoryMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysDeptRelationMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysDeptRelationMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmDaDrugEntDrugtableMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmDaDrugEntDrugtableMapper;
|
|
-import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageMapper;
|
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageStatusMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageStatusMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
|
|
import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysAreaEntityService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysAreaEntityService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysCheckChainNodeCheckHistoryService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysCheckChainNodeCheckHistoryService;
|
|
-import com.qunzhixinxi.hnqz.admin.service.SysDeptRelationService;
|
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysEnterpriseAreaService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysEnterpriseAreaService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysImplementPlanService;
|
|
import com.qunzhixinxi.hnqz.admin.service.SysImplementPlanService;
|
|
@@ -54,13 +49,16 @@ import com.qunzhixinxi.hnqz.admin.service.WmPackageTaskTypeQtyService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
|
|
import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
|
|
|
|
+import com.qunzhixinxi.hnqz.common.core.constant.CacheConstants;
|
|
import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
|
|
import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
|
|
import com.qunzhixinxi.hnqz.common.core.exception.BizException;
|
|
import com.qunzhixinxi.hnqz.common.core.exception.BizException;
|
|
import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
|
|
import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
|
|
import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
|
|
|
|
+
|
|
import javax.validation.Valid;
|
|
import javax.validation.Valid;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -78,7 +76,6 @@ import java.util.Map;
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
import java.util.function.Function;
|
|
import java.util.function.Function;
|
|
-import java.util.stream.Collector;
|
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -97,6 +94,7 @@ public class WmPackageManager {
|
|
private static final int DIST_ADMIN_ROLE = 4;
|
|
private static final int DIST_ADMIN_ROLE = 4;
|
|
private static final int OK_CHAIN_TASK_NODE = 6;
|
|
private static final int OK_CHAIN_TASK_NODE = 6;
|
|
|
|
|
|
|
|
+ private final RedisTemplate redisTemplate;
|
|
private final WmScorePackageService scorePackageService;
|
|
private final WmScorePackageService scorePackageService;
|
|
private final WmTaskMapper taskMapper;
|
|
private final WmTaskMapper taskMapper;
|
|
private final WmScorePackageStatusMapper scorePackageStatusMapper;
|
|
private final WmScorePackageStatusMapper scorePackageStatusMapper;
|
|
@@ -159,6 +157,11 @@ public class WmPackageManager {
|
|
|
|
|
|
Page<WmPackageRedemptionNotice> page = new Page<>(query.getCurrent(), query.getSize());
|
|
Page<WmPackageRedemptionNotice> page = new Page<>(query.getCurrent(), query.getSize());
|
|
LambdaQueryWrapper<WmPackageRedemptionNotice> queryWrapper = Wrappers.lambdaQuery();
|
|
LambdaQueryWrapper<WmPackageRedemptionNotice> queryWrapper = Wrappers.lambdaQuery();
|
|
|
|
+ queryWrapper.eq(query.getCheckState() != null, WmPackageRedemptionNotice::getCheckState,
|
|
|
|
+ query.getCheckState().getState());
|
|
|
|
+ queryWrapper.eq(query.getNoticeState() != null, WmPackageRedemptionNotice::getNoticeState,
|
|
|
|
+ query.getNoticeState().getState());
|
|
|
|
+ queryWrapper.eq(query.getStep() != null, WmPackageRedemptionNotice::getStep, query.getStep());
|
|
|
|
|
|
// 根据用户角色判断是管理员还是服务商
|
|
// 根据用户角色判断是管理员还是服务商
|
|
// 区域管理员
|
|
// 区域管理员
|
|
@@ -206,11 +209,17 @@ public class WmPackageManager {
|
|
.sorted()
|
|
.sorted()
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
- List<WmScorePackage> pkgs =
|
|
|
|
- scorePackageService.list(
|
|
|
|
- Wrappers.<WmScorePackage>lambdaQuery()
|
|
|
|
- .in(WmScorePackage::getSendPackageDeptId, entIds)
|
|
|
|
- .in(WmScorePackage::getDrugtable, drugIds));
|
|
|
|
|
|
+ // 计算服务包查询周期
|
|
|
|
+ Map<String, LocalDate> pkgPeriod = this.calcPkgPeriod(query.getYear(), query.getQuarter());
|
|
|
|
+ LocalDate issueDate = pkgPeriod.get("issueDate");
|
|
|
|
+ LocalDate expiryDate = pkgPeriod.get("expiryDate");
|
|
|
|
+
|
|
|
|
+ List<WmScorePackage> pkgs = scorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery()
|
|
|
|
+ .eq(StrUtil.isNotBlank(query.getPkgId()), WmScorePackage::getId, query.getPkgId())
|
|
|
|
+ .eq(StrUtil.isNotBlank(query.getPkgName()), WmScorePackage::getScorePackageName, query.getPkgName())
|
|
|
|
+ .eq(StrUtil.isNotBlank(query.getProvAbbr()), WmScorePackage::getProvAbbr, query.getProvAbbr())
|
|
|
|
+ .in(WmScorePackage::getSendPackageDeptId, entIds).in(WmScorePackage::getDrugtable, drugIds)
|
|
|
|
+ .between(WmScorePackage::getStartTime, issueDate, expiryDate));
|
|
|
|
|
|
if (CollUtil.isEmpty(pkgs)) {
|
|
if (CollUtil.isEmpty(pkgs)) {
|
|
return res;
|
|
return res;
|
|
@@ -279,6 +288,73 @@ public class WmPackageManager {
|
|
return res;
|
|
return res;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 计算积分包周期
|
|
|
|
+ private Map<String, LocalDate> calcPkgPeriod(String yearStr, String quarterStr) {
|
|
|
|
+
|
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
|
+ LocalDate issue;
|
|
|
|
+ LocalDate expiry;
|
|
|
|
+ int year;
|
|
|
|
+ int month;
|
|
|
|
+ boolean annual = false;
|
|
|
|
+
|
|
|
|
+ // 没有参数 就查询当前日期的全年
|
|
|
|
+ if (StrUtil.isAllBlank(yearStr, quarterStr)) {
|
|
|
|
+ year = today.getYear();
|
|
|
|
+ month = 1;
|
|
|
|
+ annual = true;
|
|
|
|
+ } else {
|
|
|
|
+ year = StrUtil.isBlank(yearStr) ? today.getYear() : Integer.parseInt(yearStr);
|
|
|
|
+
|
|
|
|
+ if (StrUtil.isBlank(quarterStr)) {
|
|
|
|
+ month = 1;
|
|
|
|
+ annual = true;
|
|
|
|
+ } else {
|
|
|
|
+ month = getMonthValue(quarterStr);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ issue = LocalDate.of(year, month, 1);
|
|
|
|
+ expiry = issue.plusMonths(annual ? 12 : 3).minusDays(1);
|
|
|
|
+ Map<String, LocalDate> pkgPeriod = new HashMap<>(2);
|
|
|
|
+ pkgPeriod.put("issueDate", issue);
|
|
|
|
+ pkgPeriod.put("expiryDate", expiry);
|
|
|
|
+ return pkgPeriod;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 计算季度开始月份
|
|
|
|
+ private int getMonthValue(String quarterStr) {
|
|
|
|
+ return Integer.parseInt(quarterStr) * 3 - 2;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 获取关联产品
|
|
|
|
+ private List<String> getSkuIds(String mahName, String skuId) {
|
|
|
|
+
|
|
|
|
+ if (StrUtil.isNotBlank(skuId)) {
|
|
|
|
+ return Collections.singletonList(skuId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (StrUtil.isNotBlank(mahName)) {
|
|
|
|
+ List<WmDaDrugEntDrugtable> range =
|
|
|
|
+ redisTemplate.opsForList().range(CacheConstants.DRUG_KEY, 0, -1);
|
|
|
|
+
|
|
|
|
+ if (CollUtil.isNotEmpty(range)) {
|
|
|
|
+ List<String> collect =
|
|
|
|
+ range.stream()
|
|
|
|
+ .filter(drugtable -> StrUtil.equals(drugtable.getDrugEntName(), mahName))
|
|
|
|
+ .map(WmDaDrugEntDrugtable::getId)
|
|
|
|
+ .distinct()
|
|
|
|
+ .sorted()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ return collect;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return Collections.emptyList();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 阅读通知
|
|
* 阅读通知
|
|
*
|
|
*
|