Blame view

fw-morax-server/src/main/java/cn/fw/morax/server/task/PayoffTask.java 3.61 KB
4020c162   张志伟   feature(*): 对接财务 ...
1
2
  package cn.fw.morax.server.task;
  
6443c00b   张志伟   feature(*): 发放工资&...
3
  import cn.fw.common.cache.locker.DistributedLocker;
b05ea76a   姜超   feature(*): 定时任务日志打印
4
  import cn.fw.morax.common.constant.TimeTaskConstant;
6443c00b   张志伟   feature(*): 发放工资&...
5
6
  import cn.fw.morax.rpc.oop.OopRpcService;
  import cn.fw.morax.rpc.oop.dto.GroupDTO;
4020c162   张志伟   feature(*): 对接财务 ...
7
  import cn.fw.morax.service.biz.salary.PayoffBizService;
6443c00b   张志伟   feature(*): 发放工资&...
8
  import cn.fw.morax.service.biz.salary.SalaryConfirmBizService;
7d59a85e   姜超   feature(*): redis...
9
  import lombok.Getter;
4020c162   张志伟   feature(*): 对接财务 ...
10
  import lombok.extern.slf4j.Slf4j;
6443c00b   张志伟   feature(*): 发放工资&...
11
  import org.redisson.api.RLock;
4020c162   张志伟   feature(*): 对接财务 ...
12
  import org.springframework.beans.factory.annotation.Autowired;
7d59a85e   姜超   feature(*): redis...
13
  import org.springframework.beans.factory.annotation.Value;
4020c162   张志伟   feature(*): 对接财务 ...
14
15
16
  import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  import org.springframework.scheduling.annotation.Scheduled;
  import org.springframework.stereotype.Component;
6443c00b   张志伟   feature(*): 发放工资&...
17
18
19
20
  import org.springframework.util.CollectionUtils;
  
  import java.util.List;
  import java.util.concurrent.locks.Lock;
4020c162   张志伟   feature(*): 对接财务 ...
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  
  /**
   * 通用定时器
   *
   * @author : kurisu
   * @version : 1.0
   * @className : PayoffTask
   * @description : 薪资发放定时器
   * @date : 2022-05-07 16:10
   */
  @Component
  @Slf4j
  @ConditionalOnProperty(prefix = "task", name = "switch", havingValue = "on")
  public class PayoffTask {
      private final PayoffBizService payoffBizService;
6443c00b   张志伟   feature(*): 发放工资&...
36
37
38
      private final DistributedLocker distributedLocker;
      private final OopRpcService oopRpcService;
      private final SalaryConfirmBizService salaryConfirmBizService;
4020c162   张志伟   feature(*): 对接财务 ...
39
  
7d59a85e   姜超   feature(*): redis...
40
41
42
43
      @Value("${spring.cache.custom.global-prefix}:createSalarySheet")
      @Getter
      private String createSalarySheetKey;
  
4020c162   张志伟   feature(*): 对接财务 ...
44
      @Autowired
6443c00b   张志伟   feature(*): 发放工资&...
45
46
47
48
      public PayoffTask(final PayoffBizService payoffBizService,
                        final DistributedLocker distributedLocker,
                        final OopRpcService oopRpcService,
                        final SalaryConfirmBizService salaryConfirmBizService) {
4020c162   张志伟   feature(*): 对接财务 ...
49
          this.payoffBizService = payoffBizService;
6443c00b   张志伟   feature(*): 发放工资&...
50
51
52
          this.distributedLocker = distributedLocker;
          this.oopRpcService = oopRpcService;
          this.salaryConfirmBizService = salaryConfirmBizService;
4020c162   张志伟   feature(*): 对接财务 ...
53
54
      }
  
3924978f   张志伟   :zap:
55
56
57
58
      /**
       * 发放工资的准备
       * [展示不对接财务]
       */
84f5badb   姜超   feature(payoff): ...
59
  //    @Scheduled(initialDelay = 1000L * 10, fixedRate = 1000L * 30)
3924978f   张志伟   :zap:
60
      public void read2payoff() {
84f5badb   姜超   feature(payoff): ...
61
  //        payoffBizService.read2payoff();
3924978f   张志伟   :zap:
62
63
64
      }
  
      /**
af367da5   张志伟   :zap:
65
       * 发放工资 [工资单数据推送财务系统]
3924978f   张志伟   :zap:
66
67
       * [暂时不对接财务]
       */
84f5badb   姜超   feature(payoff): ...
68
  //    @Scheduled(initialDelay = 1000L * 20, fixedRate = 1000L * 20)
3924978f   张志伟   :zap:
69
      public void go2pay() {
af367da5   张志伟   :zap:
70
          //  payoffBizService.go2payoff();
3924978f   张志伟   :zap:
71
72
73
      }
  
      /**
af367da5   张志伟   :zap:
74
       * 生成工资单[工资发放记录]
3924978f   张志伟   :zap:
75
76
77
78
       * 每两个小时执行
       */
      @Scheduled(cron = "0 0 0/2 * * ?")
      public void createSalarySheet() {
7d59a85e   姜超   feature(*): redis...
79
          Lock lock = distributedLocker.lock(getCreateSalarySheetKey());
3924978f   张志伟   :zap:
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
          if (((RLock) lock).isLocked()) {
              List<GroupDTO> list = oopRpcService.allGroups();
              if (!CollectionUtils.isEmpty(list)) {
                  for (GroupDTO groupDTO : list) {
                      payoffBizService.createSalarySheet(groupDTO.getId());
                  }
              }
              lock.unlock();
          }
      }
  
      /**
       * 生成工资确认待办(在申述期开始时发送工资确认待办)
       * 每隔两小时检查一次是否有未生成确认待办的薪酬池数据
       */
      @Scheduled(cron = TimeTaskConstant.SALARY_CONFIRM_TODO)
      public void createSalaryConfirmTodo() {
          List<GroupDTO> list = oopRpcService.allGroups();
          for (GroupDTO groupDTO : list) {
              salaryConfirmBizService.createSalaryConfirmTodo(groupDTO.getId());
          }
      }
  
      /**
af367da5   张志伟   :zap:
104
       * 5分钟检查待办推送
3924978f   张志伟   :zap:
105
       */
af367da5   张志伟   :zap:
106
      @Scheduled(cron = "0 0/5 * * * ?")
3924978f   张志伟   :zap:
107
108
109
      public void pushTodo() {
          salaryConfirmBizService.pushConfirm();
      }
4020c162   张志伟   feature(*): 对接财务 ...
110
  }