Commit 7d59a85e4a97ffddbb92450fdbe5f1f919dae60f

Authored by 姜超
1 parent eee77f4e

feature(*): redis锁名称修改

redis锁名称修改
doc/2023_update.sql
1 1 -- 2023年3月7日
2 2 ALTER TABLE `fw_morax`.`eval_group_reward_ladders`
3   - ADD COLUMN `rank_order_type` tinyint(4) NULL DEFAULT 1 COMMENT '排名顺序类型 1:正 2:负' AFTER `upper`;
4 3 \ No newline at end of file
  4 + ADD COLUMN `rank_order_type` tinyint(4) NULL DEFAULT 1 COMMENT '排名顺序类型 1:正 2:负' AFTER `upper`;
  5 +
  6 +CREATE TABLE `eval_group_reward_rank_log` (
  7 + `id` bigint(20) NOT NULL AUTO_INCREMENT,
  8 + `pool_id` bigint(20) DEFAULT NULL COMMENT '人员id 、门店id',
  9 + `scope_type` tinyint(4) NOT NULL COMMENT '考评范围; 1:门店考评 2:人员考评',
  10 + `refer_id` bigint(20) DEFAULT NULL COMMENT '考评奖惩 前置条件 配置id',
  11 + `target_type` tinyint(4) DEFAULT NULL COMMENT '1:参数 2:前置条件',
  12 + `value` decimal(18,4) DEFAULT NULL COMMENT '原始值',
  13 + `reach_value` decimal(18,4) DEFAULT NULL COMMENT '达成目标',
  14 + `rank` int(10) DEFAULT NULL COMMENT '排名',
  15 + `data_date` date NOT NULL COMMENT '数据日期',
  16 + `group_id` bigint(20) NOT NULL COMMENT '集团',
  17 + `create_time` datetime DEFAULT NULL,
  18 + `update_time` datetime DEFAULT NULL,
  19 + `yn` tinyint(1) DEFAULT '1',
  20 + PRIMARY KEY (`id`)
  21 +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='考评指标达成目标记录';
5 22 \ No newline at end of file
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupTask.java
... ... @@ -50,21 +50,14 @@ import java.util.stream.Collectors;
50 50 @ConditionalOnProperty(prefix = "task", name = "switch", havingValue = "on")
51 51 public class EvalGroupTask {
52 52  
53   - private final EvalRewardService evalRewardService;
54 53 private final EvalShopPoolService evalShopPoolService;
55   - private final EvalGroupRewardService evalGroupRewardService;
56   - private final EvalGroupDataService evalGroupDataService;
57   - private final EvalGroupBizService evalGroupBizService;
58 54 private final EvalGroupService evalGroupService;
59 55 private final EvalService evalService;
60 56 private final DistributedLocker distributedLocker;
61   - private final StringRedisTemplate stringRedisTemplate;
62 57  
63   - @Value("${spring.cache.custom.global-prefix}:distr:eval-group")
  58 + @Value("${spring.cache.custom.global-prefix}:eval:group")
64 59 @Getter
65   - private String distributionKey;
66   - private final static String LOCK_KEY = "eval:group";
67   - private final static String REWARD_LOCK_KEY = "eval:group:reward";
  60 + private String evalGroupDistKey;
68 61  
69 62 /**
70 63 * 每天凌晨3点
... ... @@ -75,7 +68,7 @@ public class EvalGroupTask {
75 68 @Scheduled(cron = TimeTaskConstant.EVAL)
76 69 @Transactional(rollbackFor = Exception.class)
77 70 public void processCurMonthEffectEvals() {
78   - Lock lock = distributedLocker.lock(LOCK_KEY);
  71 + Lock lock = distributedLocker.lock(getEvalGroupDistKey());
79 72 if (! ((RLock) lock).isLocked()) {
80 73 return;
81 74 }
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java
... ... @@ -11,9 +11,11 @@ import cn.fw.morax.service.data.eval.EvalGroupUserService;
11 11 import cn.hutool.core.date.StopWatch;
12 12 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
13 13 import com.google.common.collect.Lists;
  14 +import lombok.Getter;
14 15 import lombok.RequiredArgsConstructor;
15 16 import lombok.extern.slf4j.Slf4j;
16 17 import org.redisson.api.RLock;
  18 +import org.springframework.beans.factory.annotation.Value;
17 19 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
18 20 import org.springframework.scheduling.annotation.Scheduled;
19 21 import org.springframework.stereotype.Component;
... ... @@ -41,10 +43,11 @@ public class EvalGroupUserTask {
41 43  
42 44 private final EvalGroupUserBizService evalGroupUserBizService;
43 45 private final EvalGroupUserService evalGroupUserService;
44   - private final EvalGroupBizService evalGroupBizService;
45 46 private final DistributedLocker distributedLocker;
46 47  
47   - private final static String LOCK_KEY = "eval:group:user";
  48 + @Value("${spring.cache.custom.global-prefix}:eval:group:user")
  49 + @Getter
  50 + private String evalGroupUserDistKey;
48 51  
49 52 /**
50 53 * 每天凌晨30分执行(人事角色、岗位调整在5点执行)
... ... @@ -55,7 +58,7 @@ public class EvalGroupUserTask {
55 58 @Scheduled(cron = TimeTaskConstant.EVAL_GROUP_USER)
56 59 @Transactional(rollbackFor = Exception.class)
57 60 public void processEvalUser() {
58   - Lock lock = distributedLocker.lock(LOCK_KEY);
  61 + Lock lock = distributedLocker.lock(getEvalGroupUserDistKey());
59 62 if (((RLock) lock).isLocked()) {
60 63 try {
61 64 log.info("定时任务【考评组人员更新】开始执行");
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiGroupUserTask.java
... ... @@ -14,9 +14,11 @@ import com.alibaba.fastjson.JSON;
14 14 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
15 15 import com.google.common.collect.Lists;
16 16 import com.google.common.collect.Maps;
  17 +import lombok.Getter;
17 18 import lombok.RequiredArgsConstructor;
18 19 import lombok.extern.slf4j.Slf4j;
19 20 import org.redisson.api.RLock;
  21 +import org.springframework.beans.factory.annotation.Value;
20 22 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
21 23 import org.springframework.scheduling.annotation.Scheduled;
22 24 import org.springframework.stereotype.Component;
... ... @@ -45,8 +47,9 @@ public class KpiGroupUserTask {
45 47 private final KpiGroupBizService kpiGroupBizService;
46 48 private final DistributedLocker distributedLocker;
47 49  
48   - private final static String LOCK_KEY = "kpi:group:user";
49   -
  50 + @Value("${spring.cache.custom.global-prefix}:kpi:group:user")
  51 + @Getter
  52 + private String kpiGroupUserDistKey;
50 53 /**
51 54 * 每天凌晨30分执行(人事角色、岗位调整在5点执行)
52 55 * 1. 将待生效数据改为生效中
... ... @@ -56,7 +59,7 @@ public class KpiGroupUserTask {
56 59 @Scheduled(cron = TimeTaskConstant.KPI_GROUP_USER)
57 60 @Transactional(rollbackFor = Exception.class)
58 61 public void processKpiUser() {
59   - Lock lock = distributedLocker.lock(LOCK_KEY);
  62 + Lock lock = distributedLocker.lock(getKpiGroupUserDistKey());
60 63 if (((RLock) lock).isLocked()) {
61 64 try {
62 65 log.info("定时任务【绩效组人员更新】开始执行");
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiReportRatioTask.java
... ... @@ -19,10 +19,12 @@ import cn.fw.morax.service.data.kpi.KpiPoolService;
19 19 import cn.fw.morax.service.data.kpi.KpiRatioService;
20 20 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
21 21 import com.google.common.collect.Lists;
  22 +import lombok.Getter;
22 23 import lombok.RequiredArgsConstructor;
23 24 import lombok.extern.slf4j.Slf4j;
24 25 import org.apache.commons.collections4.map.MultiKeyMap;
25 26 import org.redisson.api.RLock;
  27 +import org.springframework.beans.factory.annotation.Value;
26 28 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
27 29 import org.springframework.scheduling.annotation.Scheduled;
28 30 import org.springframework.stereotype.Component;
... ... @@ -58,7 +60,9 @@ public class KpiReportRatioTask {
58 60 private final EhrRpcService ehrRpcService;
59 61 private final OopRpcService oopRpcService;
60 62  
61   - private final static String LOCK_KEY = "kpi:group:report";
  63 + @Value("${spring.cache.custom.global-prefix}:kpi:group:report")
  64 + @Getter
  65 + private String kpiGroupReportDistKey;
62 66  
63 67 /**
64 68 * 绩效报表定时任务
... ... @@ -77,7 +81,7 @@ public class KpiReportRatioTask {
77 81 */
78 82 @Transactional(rollbackFor = Exception.class)
79 83 public void kpiReport(LocalDate date) {
80   - Lock lock = distributedLocker.lock(LOCK_KEY);
  84 + Lock lock = distributedLocker.lock(getKpiGroupReportDistKey());
81 85 if (! ((RLock) lock).isLocked()) {
82 86 return;
83 87 }
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/PayoffTask.java
... ... @@ -6,9 +6,11 @@ import cn.fw.morax.rpc.oop.OopRpcService;
6 6 import cn.fw.morax.rpc.oop.dto.GroupDTO;
7 7 import cn.fw.morax.service.biz.salary.PayoffBizService;
8 8 import cn.fw.morax.service.biz.salary.SalaryConfirmBizService;
  9 +import lombok.Getter;
9 10 import lombok.extern.slf4j.Slf4j;
10 11 import org.redisson.api.RLock;
11 12 import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.beans.factory.annotation.Value;
12 14 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
13 15 import org.springframework.scheduling.annotation.Scheduled;
14 16 import org.springframework.stereotype.Component;
... ... @@ -31,11 +33,14 @@ import java.util.concurrent.locks.Lock;
31 33 @ConditionalOnProperty(prefix = "task", name = "switch", havingValue = "on")
32 34 public class PayoffTask {
33 35 private final PayoffBizService payoffBizService;
34   - private final static String LOCK_KEY = ":createSalarySheet";
35 36 private final DistributedLocker distributedLocker;
36 37 private final OopRpcService oopRpcService;
37 38 private final SalaryConfirmBizService salaryConfirmBizService;
38 39  
  40 + @Value("${spring.cache.custom.global-prefix}:createSalarySheet")
  41 + @Getter
  42 + private String createSalarySheetKey;
  43 +
39 44 @Autowired
40 45 public PayoffTask(final PayoffBizService payoffBizService,
41 46 final DistributedLocker distributedLocker,
... ... @@ -71,7 +76,7 @@ public class PayoffTask {
71 76 */
72 77 @Scheduled(cron = "0 0 0/2 * * ?")
73 78 public void createSalarySheet() {
74   - Lock lock = distributedLocker.lock(LOCK_KEY);
  79 + Lock lock = distributedLocker.lock(getCreateSalarySheetKey());
75 80 if (((RLock) lock).isLocked()) {
76 81 List<GroupDTO> list = oopRpcService.allGroups();
77 82 if (!CollectionUtils.isEmpty(list)) {
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/SalaryGroupTask.java
... ... @@ -12,9 +12,11 @@ import cn.fw.morax.service.biz.salary.SalaryGroupUserBizService;
12 12 import cn.fw.morax.service.data.salary.SalaryGroupService;
13 13 import cn.hutool.core.date.StopWatch;
14 14 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  15 +import lombok.Getter;
15 16 import lombok.RequiredArgsConstructor;
16 17 import lombok.extern.slf4j.Slf4j;
17 18 import org.redisson.api.RLock;
  19 +import org.springframework.beans.factory.annotation.Value;
18 20 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
19 21 import org.springframework.scheduling.annotation.Scheduled;
20 22 import org.springframework.stereotype.Component;
... ... @@ -44,7 +46,9 @@ public class SalaryGroupTask {
44 46 private final SalaryGroupService salaryGroupService;
45 47 private final DistributedLocker distributedLocker;
46 48  
47   - private final static String LOCK_KEY = "salary:group";
  49 + @Value("${spring.cache.custom.global-prefix}:salary:group")
  50 + @Getter
  51 + private String salaryGroupKey;
48 52  
49 53 /**
50 54 * 每个月1号凌晨3点执行
... ... @@ -55,7 +59,7 @@ public class SalaryGroupTask {
55 59 @Scheduled(cron = TimeTaskConstant.SALARY_GROUP)
56 60 @Transactional(rollbackFor = Exception.class)
57 61 public void processCurMonthEffectSalaryGroup() {
58   - Lock lock = distributedLocker.lock(LOCK_KEY);
  62 + Lock lock = distributedLocker.lock(getSalaryGroupKey());
59 63 if (((RLock) lock).isLocked()) {
60 64 try {
61 65 log.info("定时任务【每月薪酬组配置状态改变】开始执行");
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/SalaryPoolFundShopTask.java
... ... @@ -11,9 +11,11 @@ import cn.fw.morax.rpc.ehr.dto.StaffShopInfoDTO;
11 11 import cn.fw.morax.service.data.salary.SalaryPoolService;
12 12 import com.google.common.base.Functions;
13 13 import com.google.common.collect.Lists;
  14 +import lombok.Getter;
14 15 import lombok.RequiredArgsConstructor;
15 16 import lombok.extern.slf4j.Slf4j;
16 17 import org.redisson.api.RLock;
  18 +import org.springframework.beans.factory.annotation.Value;
17 19 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
18 20 import org.springframework.scheduling.annotation.Scheduled;
19 21 import org.springframework.stereotype.Component;
... ... @@ -43,7 +45,9 @@ public class SalaryPoolFundShopTask {
43 45 private final SalaryPoolService salaryPoolService;
44 46 private final EhrRpcService ehrRpcService;
45 47  
46   - private final static String LOCK_KEY = "salary:pool:fund";
  48 + @Value("${spring.cache.custom.global-prefix}:salary:pool:fund")
  49 + @Getter
  50 + private String salaryPoolFundKey;
47 51  
48 52 /**
49 53 * 每月第一天凌晨执行,薪酬池写入社保公积金门店
... ... @@ -53,7 +57,7 @@ public class SalaryPoolFundShopTask {
53 57 @Scheduled(cron = TimeTaskConstant.SALARY_POOL_FUND_SHOP)
54 58 @Transactional(rollbackFor = Exception.class)
55 59 public void dealSalaryPoolFundShop() {
56   - Lock lock = distributedLocker.lock(LOCK_KEY);
  60 + Lock lock = distributedLocker.lock(getSalaryPoolFundKey());
57 61 if (((RLock) lock).isLocked()) {
58 62 try {
59 63 log.info("定时任务【酬池写入社保公积金门店】开始执行");
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/SalaryReportTask.java
... ... @@ -21,10 +21,12 @@ import cn.fw.morax.service.data.salary.SalaryRewardService;
21 21 import com.alibaba.fastjson.JSON;
22 22 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
23 23 import com.google.common.collect.Lists;
  24 +import lombok.Getter;
24 25 import lombok.RequiredArgsConstructor;
25 26 import lombok.extern.slf4j.Slf4j;
26 27 import org.apache.commons.collections4.map.MultiKeyMap;
27 28 import org.redisson.api.RLock;
  29 +import org.springframework.beans.factory.annotation.Value;
28 30 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
29 31 import org.springframework.scheduling.annotation.Scheduled;
30 32 import org.springframework.stereotype.Component;
... ... @@ -60,7 +62,9 @@ public class SalaryReportTask {
60 62 private final OopRpcService oopRpcService;
61 63 private final DistributedLocker distributedLocker;
62 64  
63   - private final static String LOCK_KEY = "kpi:group:report";
  65 + @Value("${spring.cache.custom.global-prefix}:salary:group:report")
  66 + @Getter
  67 + private String salaryGroupReport;
64 68  
65 69 /**
66 70 * 绩效报表定时任务
... ... @@ -78,7 +82,7 @@ public class SalaryReportTask {
78 82 */
79 83 @Transactional(rollbackFor = Exception.class)
80 84 public void salaryReport(LocalDate date) {
81   - Lock lock = distributedLocker.lock(LOCK_KEY);
  85 + Lock lock = distributedLocker.lock(getSalaryGroupReport());
82 86 if (!((RLock) lock).isLocked()) {
83 87 return;
84 88 }
... ...