Blame view

fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java 10.4 KB
e2386ce2   姜超   feature(*): 考评计算得分修改
1
2
3
4
  package cn.fw.morax.service.biz.eval;
  
  import cn.fw.ehr.sdk.api.enums.StaffShopTypeEnum;
  import cn.fw.morax.common.utils.PublicUtil;
71e4eae7   姜超   feature(*): 绩效分数展示修改
5
6
7
  import cn.fw.morax.domain.db.eval.*;
  import cn.fw.morax.domain.enums.EvalScopeEnum;
  import cn.fw.morax.domain.enums.EvalShopPoolStatusEnum;
e2386ce2   姜超   feature(*): 考评计算得分修改
8
9
10
11
12
  import cn.fw.morax.rpc.ehr.EhrRpcService;
  import cn.fw.morax.rpc.ehr.dto.StaffBaseInfoDTO;
  import cn.fw.morax.rpc.ehr.dto.StaffShopInfoDTO;
  import cn.fw.morax.rpc.oop.OopRpcService;
  import cn.fw.morax.rpc.oop.dto.ShopDTO;
71e4eae7   姜超   feature(*): 绩效分数展示修改
13
  import cn.fw.morax.service.data.eval.EvalGroupRewardDimService;
e2386ce2   姜超   feature(*): 考评计算得分修改
14
15
16
17
18
19
  import cn.fw.morax.service.data.eval.EvalShopPoolService;
  import cn.fw.morax.service.data.eval.EvalUserPoolService;
  import cn.fw.morax.service.data.salary.SalaryGroupUserService;
  import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  import lombok.AllArgsConstructor;
  import lombok.extern.slf4j.Slf4j;
9f43aee0   姜超   feature(*): 计算考评修改
20
  import org.apache.commons.collections4.map.MultiKeyMap;
e2386ce2   姜超   feature(*): 考评计算得分修改
21
22
23
24
  import org.springframework.stereotype.Service;
  import org.springframework.transaction.annotation.Transactional;
  
  import java.math.BigDecimal;
e2386ce2   姜超   feature(*): 考评计算得分修改
25
26
  import java.time.LocalDate;
  import java.time.YearMonth;
e2386ce2   姜超   feature(*): 考评计算得分修改
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
  import java.util.*;
  import java.util.function.Function;
  import java.util.stream.Collectors;
  
  /**
   * @author : kurisu
   * @version : 1.0
   * @className : SalaryPoolCommonService
   * @description : 绩效池公用方法
   * @date : 2022-09-27 11:40
   */
  @Slf4j
  @Service
  @AllArgsConstructor
  public class EvalPoolCommonService {
  
      private SalaryGroupUserService salaryGroupUserService;
      private EvalUserPoolService evalUserPoolService;
71e4eae7   姜超   feature(*): 绩效分数展示修改
45
      private EvalGroupRewardDimService evalGroupRewardDimService;
e2386ce2   姜超   feature(*): 考评计算得分修改
46
47
48
49
      private EvalShopPoolService evalShopPoolService;
      private EhrRpcService ehrRpcService;
      private OopRpcService oopRpcService;
  
6216249c   姜超   feature(*): 修改bug
50
      public Map<Long, EvalUserPool> inspectionUserPoolMap(EvalGroup evalGroup, EvalGroupRankStage evalGroupRankStage, List<EvalGroupUser> users, LocalDate localDate) {
e1206478   姜超   feature(*): 修改考评审批
51
52
53
          if (PublicUtil.isEmpty(users)) {
              return new HashMap<>();
          }
da42a3d8   姜超   feature(*): 计算考评代码优化
54
          Set<Long> userIds = users.stream().map(EvalGroupUser::getUserId).collect(Collectors.toSet());
e2386ce2   姜超   feature(*): 考评计算得分修改
55
          List<EvalUserPool> pools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery()
6216249c   姜超   feature(*): 修改bug
56
                  .eq(EvalUserPool::getEvalGroupRankStageId, evalGroupRankStage.getId())
d83a50ee   姜超   feature(*): 查询修改
57
                  .eq(EvalUserPool::getMonthly, YearMonth.from(localDate))
e2386ce2   姜超   feature(*): 考评计算得分修改
58
59
60
61
                  .in(EvalUserPool::getUserId, userIds)
                  .eq(EvalUserPool::getYn, Boolean.TRUE)
          );
  
9f43aee0   姜超   feature(*): 计算考评修改
62
63
64
65
66
          //人员可能在考评组中出现多次(调岗)
          MultiKeyMap<Long, EvalUserPool> userShopPostShopIdMap = new MultiKeyMap<>();
          for (EvalUserPool pool : pools) {
              userShopPostShopIdMap.put(pool.getUserId(), pool.getShopId(), pool.getPostId(), pool);
          }
e2386ce2   姜超   feature(*): 考评计算得分修改
67
68
  
          for (EvalGroupUser user : users) {
9f43aee0   姜超   feature(*): 计算考评修改
69
              if (! userShopPostShopIdMap.containsKey(user.getUserId(), user.getShopId(), user.getPostId())) {
e2386ce2   姜超   feature(*): 考评计算得分修改
70
                  EvalUserPool userPool = inspectionUserPool(user);
9f43aee0   姜超   feature(*): 计算考评修改
71
                  userShopPostShopIdMap.put(user.getUserId(), user.getShopId(), user.getPostId(), userPool);
e2386ce2   姜超   feature(*): 考评计算得分修改
72
73
              }
          }
9f43aee0   姜超   feature(*): 计算考评修改
74
75
76
77
78
79
  
          Map<Long, EvalUserPool> userPoolMap = userShopPostShopIdMap.values().stream().collect(Collectors.toMap(EvalUserPool::getUserId, Function.identity(), (v1, v2) -> {
              log.error("同一个考评组、考评人员出现两条考评池数据。用户id:{},考评组:{}", v1.getUserId(), evalGroup);
              return v1;
          }));
  
da42a3d8   姜超   feature(*): 计算考评代码优化
80
          return userPoolMap;
e2386ce2   姜超   feature(*): 考评计算得分修改
81
82
      }
  
da42a3d8   姜超   feature(*): 计算考评代码优化
83
  
bc484bc4   姜超   feature(*): 定时任务发送修改
84
      public Map<Long, EvalShopPool> inspectionShopPools(EvalGroup evalGroup, LocalDate localDate, List<Long> distShopIds) {
e2386ce2   姜超   feature(*): 考评计算得分修改
85
86
          Set<Long> evalGroupShopIds = new HashSet<>(evalGroup.getShopIds());
          List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery()
71e4eae7   姜超   feature(*): 绩效分数展示修改
87
                  .eq(EvalShopPool::getEvalGroupId, evalGroup.getId())
e2386ce2   姜超   feature(*): 考评计算得分修改
88
                  .in(EvalShopPool::getShopId, evalGroupShopIds)
f88aca41   姜超   feature(*): 查询门店考...
89
                  .eq(EvalShopPool::getMonthly, YearMonth.from(localDate))
e2386ce2   姜超   feature(*): 考评计算得分修改
90
91
92
                  .eq(EvalShopPool::getYn, Boolean.TRUE)
          );
  
da42a3d8   姜超   feature(*): 计算考评代码优化
93
94
95
96
97
          Map<Long, EvalShopPool> shopPoolMap = pools.stream().collect(Collectors.toMap(EvalShopPool::getShopId, Function.identity(), (v1, v2) -> {
              log.error("同一个考评组、考评门店出现两条考评池数据。门店id:{},考评组:{}", v1.getShopId(), evalGroup);
              return v1;
          }));
  
9f43aee0   姜超   feature(*): 计算考评修改
98
          for (Long shopId : evalGroupShopIds) {
da42a3d8   姜超   feature(*): 计算考评代码优化
99
              if (! shopPoolMap.containsKey(shopId)) {
9f43aee0   姜超   feature(*): 计算考评修改
100
101
102
                  EvalShopPoolStatusEnum status = (distShopIds.contains(shopId))
                          ? EvalShopPoolStatusEnum.CALC_REWARD : EvalShopPoolStatusEnum.NO_REWARD;
                  EvalShopPool shopPool = this.createShopPoolData(shopId, evalGroup, localDate, status);
da42a3d8   姜超   feature(*): 计算考评代码优化
103
104
                  shopPoolMap.put(shopId, shopPool);
              }
e2386ce2   姜超   feature(*): 考评计算得分修改
105
          }
da42a3d8   姜超   feature(*): 计算考评代码优化
106
          return shopPoolMap;
e2386ce2   姜超   feature(*): 考评计算得分修改
107
108
      }
  
e2386ce2   姜超   feature(*): 考评计算得分修改
109
      @Transactional(rollbackFor = Exception.class)
71e4eae7   姜超   feature(*): 绩效分数展示修改
110
      public EvalShopPool createShopPoolData(Long shopId, EvalGroup evalGroup, LocalDate localDate, EvalShopPoolStatusEnum status) {
e2386ce2   姜超   feature(*): 考评计算得分修改
111
112
113
114
          ShopDTO shopDTO = oopRpcService.queryShop(shopId);
          EvalShopPool evalShopPool = new EvalShopPool();
          evalShopPool.setEgc(evalGroup.getEgc());
          evalShopPool.setEvalGroupId(evalGroup.getId());
5e6a6922   姜超   feature(*): 筛选修改
115
116
          evalShopPool.setEvalGroupRankId(evalGroup.getEvalGroupRankId());
          evalShopPool.setEvalGroupRankStageId(evalGroup.getEvalGroupRankStageId());
8945afe5   姜超   feature(*): 考评保存修改
117
  //        evalShopPool.setEvalId(evalGroup.getEvalId());
71e4eae7   姜超   feature(*): 绩效分数展示修改
118
          evalShopPool.setStatus(status);
e2386ce2   姜超   feature(*): 考评计算得分修改
119
120
          evalShopPool.setShopId(shopId);
          evalShopPool.setShopName(shopDTO.getShortName());
08c31209   姜超   feature(*): 考评详情
121
          evalShopPool.setScore(BigDecimal.ZERO);
c1b3c16f   姜超   feature(*): 门店考评池查询
122
          evalShopPool.setScoreRatio(BigDecimal.ZERO);
f88aca41   姜超   feature(*): 查询门店考...
123
          evalShopPool.setMonthly(YearMonth.from(localDate));
e2386ce2   姜超   feature(*): 考评计算得分修改
124
125
126
127
128
129
130
131
132
133
134
135
136
          evalShopPool.setReward(BigDecimal.ZERO);
          evalShopPool.setGroupId(evalGroup.getGroupId());
          evalShopPool.setYn(Boolean.TRUE);
          evalShopPoolService.save(evalShopPool);
          return evalShopPool;
      }
  
      /**
       * 查询薪酬池
       *
       * @param user
       * @return
       */
e1206478   姜超   feature(*): 修改考评审批
137
      @Transactional(rollbackFor = Exception.class)
e2386ce2   姜超   feature(*): 考评计算得分修改
138
139
      public EvalUserPool inspectionUserPool(EvalGroupUser user) {
          EvalUserPool evalUserPool = evalUserPoolService.getOne(Wrappers.<EvalUserPool>lambdaQuery()
6216249c   姜超   feature(*): 修改bug
140
                          .eq(EvalUserPool::getEvalGroupRankStageId, user.getEvalGroupRankStageId())
e2386ce2   姜超   feature(*): 考评计算得分修改
141
                          .eq(EvalUserPool::getUserId, user.getUserId())
9f43aee0   姜超   feature(*): 计算考评修改
142
143
                          .eq(EvalUserPool::getPostId, user.getPostId())
                          .eq(EvalUserPool::getShopId, user.getShopId())
e2386ce2   姜超   feature(*): 考评计算得分修改
144
145
146
                          .eq(EvalUserPool::getMonthly, YearMonth.from(user.getDataDate()))
                          .eq(EvalUserPool::getYn, Boolean.TRUE)
                  , Boolean.FALSE);
d83a50ee   姜超   feature(*): 查询修改
147
148
          if (PublicUtil.isNotEmpty(evalUserPool)) {
              return evalUserPool;
e2386ce2   姜超   feature(*): 考评计算得分修改
149
          }
6216249c   姜超   feature(*): 修改bug
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
  //        evalUserPool = evalUserPoolService.getOne(Wrappers.<EvalUserPool>lambdaQuery()
  //                        .eq(EvalUserPool::getEvalGroupRankStageId, user.getEvalGroupRankStageId())
  //                        .eq(EvalUserPool::getUserId, user.getUserId())
  //                        .eq(EvalUserPool::getMonthly, YearMonth.from(user.getDataDate()).minusMonths(1))
  //                        .eq(EvalUserPool::getYn, Boolean.TRUE)
  //                , Boolean.FALSE);
  //        if (PublicUtil.isNotEmpty(evalUserPool)) {
  //            evalUserPoolService.update(Wrappers.<EvalUserPool>lambdaUpdate()
  //                    .eq(EvalUserPool::getId, evalUserPool.getId())
  //                    .set(EvalUserPool::getMonthly, YearMonth.from(user.getDataDate()))
  //                    .set(EvalUserPool::getUpdateTime, new Date())
  //            );
  //            evalUserPool.setMonthly(YearMonth.from(user.getDataDate()));
  //            return evalUserPool;
  //        }
d83a50ee   姜超   feature(*): 查询修改
165
          return this.createUserPoolData(user);
e2386ce2   姜超   feature(*): 考评计算得分修改
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
      }
  
      /**
       * 获取员工社保公积金门店
       *
       * @param userId
       */
      private StaffShopInfoDTO getFundShopInfo(Long userId) {
          StaffBaseInfoDTO staff = ehrRpcService.queryStaffBaseInfo(userId);
          if (PublicUtil.isEmpty(staff) || PublicUtil.isEmpty(staff.getStaffShopList())) {
              log.error("员工没有社保公积金门店,userId:{}", userId);
          }
          return staff.getStaffShopList().stream()
                  .filter(shop -> StaffShopTypeEnum.FUND_SHOP.getValue().equals(shop.getType()))
                  .findFirst()
                  .orElse(null);
  
      }
  
      @Transactional(rollbackFor = Exception.class)
      public EvalUserPool modifyPoolData(EvalUserPool pool, EvalGroupUser user) {
          pool.setEvalGroupId(user.getEvalGroupId());
          pool.setShopId(user.getShopId());
          pool.setShopName(user.getShopName());
          pool.setEgc(user.getEgc());
          evalUserPoolService.updateById(pool);
          return pool;
      }
  
      @Transactional(rollbackFor = Exception.class)
      public EvalUserPool createUserPoolData(EvalGroupUser user) {
          EvalUserPool evalUserPool = new EvalUserPool();
f727712b   姜超   feature(*): 考评阶段指标上报
198
  //        evalUserPool.setEvalId(user.getEvalGroupRankId());
e2386ce2   姜超   feature(*): 考评计算得分修改
199
200
          evalUserPool.setEgc(user.getEgc());
          evalUserPool.setEvalGroupId(user.getEvalGroupId());
5e6a6922   姜超   feature(*): 筛选修改
201
202
          evalUserPool.setEvalGroupRankId(user.getEvalGroupRankId());
          evalUserPool.setEvalGroupRankStageId(user.getEvalGroupRankStageId());
e2386ce2   姜超   feature(*): 考评计算得分修改
203
204
205
206
207
208
          evalUserPool.setUserId(user.getUserId());
          evalUserPool.setUserName(user.getUserName());
          evalUserPool.setPostId(user.getPostId());
          evalUserPool.setPostName(user.getPostName());
          evalUserPool.setShopId(user.getShopId());
          evalUserPool.setShopName(user.getShopName());
da42a3d8   姜超   feature(*): 计算考评代码优化
209
          evalUserPool.setScore(BigDecimal.ZERO);
c1b3c16f   姜超   feature(*): 门店考评池查询
210
          evalUserPool.setScoreRatio(BigDecimal.ZERO);
bdcc7a51   姜超   feature(*): 查询指标排名
211
          evalUserPool.setInclusion(Boolean.FALSE.equals(user.getIgnored()));
da42a3d8   姜超   feature(*): 计算考评代码优化
212
  //        evalUserPool.setScoreRatio(BigDecimal.ZERO);
e2386ce2   姜超   feature(*): 考评计算得分修改
213
214
          evalUserPool.setReward(BigDecimal.ZERO);
          evalUserPool.setMonthly(YearMonth.from(user.getDataDate()));
da42a3d8   姜超   feature(*): 计算考评代码优化
215
  //        evalUserPool.setRegular(Boolean.FALSE);
e2386ce2   姜超   feature(*): 考评计算得分修改
216
217
218
219
220
221
222
223
224
225
226
          evalUserPool.setGroupId(user.getGroupId());
          evalUserPool.setYn(Boolean.TRUE);
          StaffShopInfoDTO staffShopInfoDTO = this.getFundShopInfo(user.getUserId());
          if (PublicUtil.isNotEmpty(staffShopInfoDTO)) {
              evalUserPool.setFundShopId(staffShopInfoDTO.getShopId());
              evalUserPool.setFundShopName(staffShopInfoDTO.getShopName());
          }
          evalUserPoolService.save(evalUserPool);
          return evalUserPool;
      }
  
e2386ce2   姜超   feature(*): 考评计算得分修改
227
  }