Commit 6216249c6b7483d0e3f56cad3f1d066de59970de

Authored by 姜超
1 parent b1c2250d

feature(*): 修改bug

修改bug
fw-morax-dao/src/main/resources/mapper/eval/EvalGroupMapper.xml
... ... @@ -72,13 +72,15 @@
72 72 t3.id
73 73 FROM
74 74 eval_group_rank t1
75   - LEFT JOIN eval_group_rank_stage t2 ON t1.id = t2.eval_group_rank_id AND t2.yn = 1
76   - LEFT JOIN eval_group t3 ON t2.id = t3.eval_group_rank_stage_id AND t3.yn = 1
  75 + INNER JOIN eval_group_rank_stage t2 ON t1.id = t2.eval_group_rank_id AND t2.yn = 1
  76 + INNER JOIN eval_group t3 ON t2.id = t3.eval_group_rank_stage_id AND t3.yn = 1
  77 + INNER JOIN eval_group_reward_dim t4 ON t3.id = t4.eval_group_id AND t4.yn = 1
77 78 WHERE
78 79 t1.yn = 1
79 80 AND t1.`status` IN ( 3, 4 )
80 81 and DATE_FORMAT(t2.begin_time, '%Y-%m-%d') <= DATE_FORMAT(#{day}, '%Y-%m-%d')
81 82 and DATE_FORMAT(t2.over_time, '%Y-%m-%d') = DATE_FORMAT(#{day}, '%Y-%m-%d')
  83 + AND t4.`type` = 2
82 84 </select>
83 85  
84 86 <select id="getEffectsByRankId" resultMap="BaseResultMap">
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java
... ... @@ -105,7 +105,7 @@ public class EvalGroupUserTask {
105 105 List<EvalGroupUser> evalGroupUsers = null;
106 106 for (EvalGroup evalGroup : evalGroups) {
107 107 for (Long postId : evalGroup.getPostIds()) {
108   - evalGroupUsers = evalGroupUserBizService.fetchBuildKpiUser(postId, evalGroups, yesterday);
  108 + evalGroupUsers = evalGroupUserBizService.fetchBuildKpiUser(postId, evalGroup, yesterday);
109 109 evalGroupUsersForSave.addAll(evalGroupUsers);
110 110 }
111 111 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java
... ... @@ -184,7 +184,7 @@ public class EvalCalculateService {
184 184 log.error("考评排名组阶段[{}]不存在,终止计算!", JSON.toJSONString(evalGroup));
185 185 return;
186 186 }
187   - List<EvalGroupUserShop> userShops = this.buildEvalGroupObj(evalGroup, evalGroupRankStage.getBeginTime(), localDate, scopeType);
  187 + List<EvalGroupUserShop> userShops = this.buildEvalGroupObj(evalGroup, evalGroupRankStage, localDate, scopeType);
188 188 if (CollectionUtils.isEmpty(userShops)) {
189 189 log.error("考评组[{}]人员为空,终止计算!", evalGroupId);
190 190 return;
... ... @@ -269,16 +269,17 @@ public class EvalCalculateService {
269 269 }
270 270  
271 271  
272   - public List<EvalGroupUserShop> buildEvalGroupObj(EvalGroup evalGroup, LocalDate beginDate, LocalDate localDate, EvalScopeEnum scopeType) {
  272 + public List<EvalGroupUserShop> buildEvalGroupObj(EvalGroup evalGroup, EvalGroupRankStage evalGroupRankStage, LocalDate localDate, EvalScopeEnum scopeType) {
  273 + LocalDate beginDate = evalGroupRankStage.getBeginTime();
273 274 List<EvalGroupUserShop> userShops = new ArrayList<>();
274 275 if (EvalScopeEnum.STAFF.equals(scopeType)) {
275 276 List<EvalGroupUser> users = evalGroupUserService.list(Wrappers.<EvalGroupUser>lambdaQuery()
276   - .eq(EvalGroupUser::getEvalGroupId, evalGroup.getId())
  277 + .eq(EvalGroupUser::getEvalGroupRankStageId, evalGroupRankStage.getId())
277 278 .eq(EvalGroupUser::getDataDate, localDate)
278 279 .eq(EvalGroupUser::getYn, Boolean.TRUE)
279 280 );
280 281  
281   - Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroup, users, localDate);
  282 + Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroup, evalGroupRankStage, users, localDate);
282 283 for (EvalGroupUser user : users) {
283 284 if (Boolean.TRUE.equals(user.getIgnored())) {
284 285 continue;
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java
... ... @@ -69,24 +69,11 @@ public class EvalGroupUserBizService {
69 69 * @return
70 70 */
71 71 @Transactional(rollbackFor = Exception.class)
72   - public List<EvalGroupUser> fetchBuildKpiUser(Long postId, List<EvalGroup> evalGroups, LocalDate localDate){
73   - Set<Long> shopIds = new HashSet<>();
74   - Map<Long, EvalGroup> shopKpiGroupMap = new HashMap<>();
75   - for (EvalGroup evalGroup : evalGroups) {
76   - shopIds.addAll(evalGroup.getShopIds());
77   - for (Long shopId : evalGroup.getShopIds()) {
78   - shopKpiGroupMap.put(shopId, evalGroup);
79   - }
80   - }
81   - List<EvalGroupUser> evalGroupUsers = this.fetchPostUsers(postId, new ArrayList<>(shopIds), localDate);
  72 + public List<EvalGroupUser> fetchBuildKpiUser(Long postId, EvalGroup evalGroup, LocalDate localDate){
  73 + List<EvalGroupUser> evalGroupUsers = this.fetchPostUsers(postId, evalGroup.getShopIds(), localDate);
82 74  
83 75 //构建考评组信息
84 76 for (EvalGroupUser user : evalGroupUsers) {
85   - if (! shopKpiGroupMap.containsKey(user.getShopId())) {
86   - log.error("员工门店没有绩效组配置,门店:{},岗位:{},员工:{}", user.getShopId(), user.getPostId(), user.getId());
87   - continue;
88   - }
89   - EvalGroup evalGroup = shopKpiGroupMap.get(user.getShopId());
90 77 user.setEvalGroupRankId(evalGroup.getEvalGroupRankId());
91 78 user.setEvalGroupRankStageId(evalGroup.getEvalGroupRankStageId());
92 79 user.setEvalGroupId(evalGroup.getId());
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java
... ... @@ -46,13 +46,13 @@ public class EvalPoolCommonService {
46 46 private EhrRpcService ehrRpcService;
47 47 private OopRpcService oopRpcService;
48 48  
49   - public Map<Long, EvalUserPool> inspectionUserPoolMap(EvalGroup evalGroup, List<EvalGroupUser> users, LocalDate localDate) {
  49 + public Map<Long, EvalUserPool> inspectionUserPoolMap(EvalGroup evalGroup, EvalGroupRankStage evalGroupRankStage, List<EvalGroupUser> users, LocalDate localDate) {
50 50 if (PublicUtil.isEmpty(users)) {
51 51 return new HashMap<>();
52 52 }
53 53 Set<Long> userIds = users.stream().map(EvalGroupUser::getUserId).collect(Collectors.toSet());
54 54 List<EvalUserPool> pools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery()
55   - .eq(EvalUserPool::getEvalGroupId, evalGroup.getId())
  55 + .eq(EvalUserPool::getEvalGroupRankStageId, evalGroupRankStage.getId())
56 56 .eq(EvalUserPool::getMonthly, YearMonth.from(localDate))
57 57 .in(EvalUserPool::getUserId, userIds)
58 58 .eq(EvalUserPool::getYn, Boolean.TRUE)
... ... @@ -157,7 +157,7 @@ public class EvalPoolCommonService {
157 157 @Transactional(rollbackFor = Exception.class)
158 158 public EvalUserPool inspectionUserPool(EvalGroupUser user) {
159 159 EvalUserPool evalUserPool = evalUserPoolService.getOne(Wrappers.<EvalUserPool>lambdaQuery()
160   - .eq(EvalUserPool::getEgc, user.getEgc())
  160 + .eq(EvalUserPool::getEvalGroupRankStageId, user.getEvalGroupRankStageId())
161 161 .eq(EvalUserPool::getUserId, user.getUserId())
162 162 .eq(EvalUserPool::getMonthly, YearMonth.from(user.getDataDate()))
163 163 .eq(EvalUserPool::getYn, Boolean.TRUE)
... ... @@ -165,21 +165,21 @@ public class EvalPoolCommonService {
165 165 if (PublicUtil.isNotEmpty(evalUserPool)) {
166 166 return evalUserPool;
167 167 }
168   - evalUserPool = evalUserPoolService.getOne(Wrappers.<EvalUserPool>lambdaQuery()
169   - .eq(EvalUserPool::getEgc, user.getEgc())
170   - .eq(EvalUserPool::getUserId, user.getUserId())
171   - .eq(EvalUserPool::getMonthly, YearMonth.from(user.getDataDate()).minusMonths(1))
172   - .eq(EvalUserPool::getYn, Boolean.TRUE)
173   - , Boolean.FALSE);
174   - if (PublicUtil.isNotEmpty(evalUserPool)) {
175   - evalUserPoolService.update(Wrappers.<EvalUserPool>lambdaUpdate()
176   - .eq(EvalUserPool::getId, evalUserPool.getId())
177   - .set(EvalUserPool::getMonthly, YearMonth.from(user.getDataDate()))
178   - .set(EvalUserPool::getUpdateTime, new Date())
179   - );
180   - evalUserPool.setMonthly(YearMonth.from(user.getDataDate()));
181   - return evalUserPool;
182   - }
  168 +// evalUserPool = evalUserPoolService.getOne(Wrappers.<EvalUserPool>lambdaQuery()
  169 +// .eq(EvalUserPool::getEvalGroupRankStageId, user.getEvalGroupRankStageId())
  170 +// .eq(EvalUserPool::getUserId, user.getUserId())
  171 +// .eq(EvalUserPool::getMonthly, YearMonth.from(user.getDataDate()).minusMonths(1))
  172 +// .eq(EvalUserPool::getYn, Boolean.TRUE)
  173 +// , Boolean.FALSE);
  174 +// if (PublicUtil.isNotEmpty(evalUserPool)) {
  175 +// evalUserPoolService.update(Wrappers.<EvalUserPool>lambdaUpdate()
  176 +// .eq(EvalUserPool::getId, evalUserPool.getId())
  177 +// .set(EvalUserPool::getMonthly, YearMonth.from(user.getDataDate()))
  178 +// .set(EvalUserPool::getUpdateTime, new Date())
  179 +// );
  180 +// evalUserPool.setMonthly(YearMonth.from(user.getDataDate()));
  181 +// return evalUserPool;
  182 +// }
183 183 return this.createUserPoolData(user);
184 184 }
185 185  
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalRewardService.java
1 1 package cn.fw.morax.service.biz.eval;
2 2  
  3 +import cn.fw.backlog.sdk.api.result.FailBacklogItem;
3 4 import cn.fw.common.cache.locker.DistributedLocker;
4 5 import cn.fw.common.exception.BusinessException;
5 6 import cn.fw.common.web.auth.LoginAuthBean;
6 7 import cn.fw.morax.common.config.TodoVal;
7 8 import cn.fw.morax.common.pojo.event.ApprovalResultEvent;
  9 +import cn.fw.morax.common.utils.DateUtil;
8 10 import cn.fw.morax.common.utils.PublicUtil;
9 11 import cn.fw.morax.common.utils.ThreadPoolUtil;
10 12 import cn.fw.morax.domain.bo.eval.EvalGroupRewardDistributionBO;
11 13 import cn.fw.morax.domain.db.ApprovalRecord;
12   -import cn.fw.morax.domain.db.eval.EvalGroup;
13   -import cn.fw.morax.domain.db.eval.EvalRewardDist;
14   -import cn.fw.morax.domain.db.eval.EvalRewardDistDetail;
15   -import cn.fw.morax.domain.db.eval.EvalShopPool;
  14 +import cn.fw.morax.domain.db.eval.*;
16 15 import cn.fw.morax.domain.dto.eval.EvalRewardDistDTO;
17 16 import cn.fw.morax.domain.dto.eval.EvalRewardDistDetailDTO;
18   -import cn.fw.morax.domain.enums.ApprovalTypeEnum;
19   -import cn.fw.morax.domain.enums.EvalRewardDistStatusEnum;
20   -import cn.fw.morax.domain.enums.EvalRewardPushStatusEnum;
  17 +import cn.fw.morax.domain.enums.*;
21 18 import cn.fw.morax.domain.vo.eval.EvalRewardDistDetailVO;
22 19 import cn.fw.morax.domain.vo.eval.EvalRewardDistVO;
23 20 import cn.fw.morax.domain.vo.eval.EvalShopPoolVO;
24 21 import cn.fw.morax.rpc.backlog.TodoRpcService;
25 22 import cn.fw.morax.rpc.backlog.dto.BackLogItemDTO;
  23 +import cn.fw.morax.rpc.backlog.dto.BacklogBatchPlanItemReqDTO;
  24 +import cn.fw.morax.rpc.backlog.dto.BacklogBatchPlanReqDTO;
26 25 import cn.fw.morax.rpc.erp.ErpRpcService;
27 26 import cn.fw.morax.rpc.erp.dto.RpcUserRoleInfoDTO;
  27 +import cn.fw.morax.rpc.erp.dto.RpcUserRoleShopDTO;
28 28 import cn.fw.morax.service.biz.ApprovalBizService;
29 29 import cn.fw.morax.service.data.ApprovalRecordService;
30   -import cn.fw.morax.service.data.eval.EvalGroupService;
31   -import cn.fw.morax.service.data.eval.EvalRewardDistDetailService;
32   -import cn.fw.morax.service.data.eval.EvalRewardDistService;
33   -import cn.fw.morax.service.data.eval.EvalShopPoolService;
  30 +import cn.fw.morax.service.data.eval.*;
34 31 import com.alibaba.fastjson.JSON;
35 32 import com.alibaba.fastjson.JSONObject;
36 33 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
... ... @@ -47,11 +44,14 @@ import org.springframework.stereotype.Service;
47 44 import org.springframework.transaction.annotation.Transactional;
48 45  
49 46 import java.math.BigDecimal;
  47 +import java.text.DecimalFormat;
50 48 import java.time.LocalDate;
  49 +import java.time.LocalDateTime;
51 50 import java.util.*;
52 51 import java.util.concurrent.RejectedExecutionException;
53 52 import java.util.concurrent.ThreadPoolExecutor;
54 53 import java.util.concurrent.locks.Lock;
  54 +import java.util.stream.Collectors;
55 55  
56 56 import static cn.fw.common.businessvalidator.Validator.BV;
57 57  
... ... @@ -75,6 +75,9 @@ public class EvalRewardService {
75 75 private final EvalShopPoolService evalShopPoolService;
76 76 private final ApprovalRecordService approvalRecordService;
77 77 private final EvalRewardDistService evalRewardDistService;
  78 + private final EvalGroupRankService evalGroupRankService;
  79 + private final EvalGroupRankStageService evalGroupRankStageService;
  80 + private final EvalGroupRewardDimService evalGroupRewardDimService;
78 81 private final EvalRewardDistDetailService evalRewardDistDetailService;
79 82  
80 83 @Value("${spring.cache.custom.global-prefix}:dist:eval-reward")
... ... @@ -152,14 +155,32 @@ public class EvalRewardService {
152 155 log.info("分配奖惩的考评组:{}", evalGroupId);
153 156 EvalGroup evalGroup = evalGroupService.getById(evalGroupId);
154 157 BV.notNull(evalGroup, "考评组不存在,终止计算!");
  158 + EvalGroupRank evalGroupRank = evalGroupRankService.getById(evalGroup.getEvalGroupRankId());
  159 + BV.notNull(evalGroupRank, "考评排名组不存在,终止计算!");
  160 + EvalGroupRankStage evalGroupRankStage = evalGroupRankStageService.getById(evalGroup.getEvalGroupRankStageId());
  161 + BV.notNull(evalGroupRankStage, "考评阶段不存在,终止计算!");
  162 +
  163 +
  164 +// List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery()
  165 +// .eq(EvalShopPool::getEvalGroupId, evalGroupId)
  166 +// .eq(EvalShopPool::getYn, Boolean.TRUE)
  167 +// );
  168 +// if (PublicUtil.isEmpty(pools)) {
  169 +// log.error("考评池不存在,终止计算!");
  170 +// return;
  171 +// }
  172 +// BV.isNotEmpty(pools, "考评池不存在,终止计算!");
155 173  
156   - List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery()
157   - .eq(EvalShopPool::getEvalGroupId, evalGroupId)
158   - .eq(EvalShopPool::getYn, Boolean.TRUE)
  174 + List<EvalGroupRewardDim> shopRewardDims = evalGroupRewardDimService.list(Wrappers.<EvalGroupRewardDim>lambdaQuery()
  175 + .eq(EvalGroupRewardDim::getEvalGroupId, evalGroup.getId())
  176 + .eq(EvalGroupRewardDim::getType, EvalScopeEnum.SHOP)
  177 + .eq(EvalGroupRewardDim::getYn, Boolean.TRUE)
159 178 );
160   - BV.isNotEmpty(pools, "考评池不存在,终止计算!");
161   -
162   - sendDistRewardTodo(pools, evalGroup );
  179 + if (PublicUtil.isEmpty(shopRewardDims)) {
  180 + log.error("考评奖惩没有门店:{}", JSON.toJSONString(evalGroup));
  181 + return;
  182 + }
  183 + sendDistRewardTodo(shopRewardDims, evalGroup, evalGroupRank, evalGroupRankStage);
163 184 }
164 185  
165 186 /**
... ... @@ -168,81 +189,98 @@ public class EvalRewardService {
168 189 * @param
169 190 */
170 191 @Transactional(rollbackFor = Exception.class)
171   - public void sendDistRewardTodo(List<EvalShopPool> pools, EvalGroup evalGroup) {
172   -// Eval eval = evalService.getById(evalGroup.getEvalGroupRankId());
173   -// BV.notNull(eval, "考评配置不存在,请重试");
174   -//
175   -// DecimalFormat decimalFormat = new DecimalFormat("##########.##");
176   -// final String roleCode = evalGroup.getRoleCodes().stream().findFirst().get();
177   -// final String evalGroupName = evalGroup.getName();
178   -// final String evalName = eval.getName();
179   -// final EvalTypeEnum evalType = eval.getType();
180   -// List<Long> shopIds = evalGroup.getShopIds();
181   -//
182   -// Date expireTime = DateUtil.localDateTime2Date(LocalDateTime.now().plusDays(2L));
183   -//
184   -// List<BacklogBatchPlanItemReqDTO> itemList = new ArrayList<>();
185   -// List<RpcUserRoleInfoDTO> users = this.getUserEnableRoleInfos(roleCode, shopIds);
186   -// for (RpcUserRoleInfoDTO user : users) {
187   -// List<Long> manageShopIds = user.getRangeList().stream()
188   -// .filter(range -> shopIds.contains(range.getShopId()))
189   -// .map(RpcUserRoleShopDTO::getShopId).distinct().collect(Collectors.toList());
190   -// if (PublicUtil.isEmpty(manageShopIds)) {
191   -// continue;
192   -// }
193   -//
194   -// List<Long> poolIds = new ArrayList<>();
195   -// BigDecimal reward = BigDecimal.ZERO;
196   -// for (EvalShopPool pool : pools) {
197   -// if (manageShopIds.contains(pool.getShopId())) {
198   -// poolIds.add(pool.getId());
199   -// reward = reward.add(pool.getReward());
200   -// }
201   -// }
202   -// //奖惩为0不分配
203   -// if (BigDecimal.ZERO.compareTo(reward) == 0) {
204   -// return;
205   -// }
206   -//
207   -// EvalRewardDist rewardDist = transferPo(evalGroup);
208   -// rewardDist.setUserId(user.getUserId());
209   -// rewardDist.setEvalShopPoolIds(poolIds);
210   -// rewardDist.setShopIds(manageShopIds);
211   -// rewardDist.setEvalName(evalName);
212   -// rewardDist.setEvalType(evalType);
213   -// rewardDist.setReward(reward);
214   -// evalRewardDistService.save(rewardDist);
215   -//
216   -// BacklogBatchPlanItemReqDTO planItemReq = new BacklogBatchPlanItemReqDTO();
217   -// planItemReq.setDataId(rewardDist.getId().toString());
218   -// planItemReq.setUserId(user.getUserId());
219   -// planItemReq.setPlanTime(new Date());
220   -// planItemReq.setExpireTime(expireTime);
221   -//
222   -// Map<String, String> dynamicMap = new HashMap<>(8);
223   -// dynamicMap.put("evalGroupName", evalGroupName);
224   -// dynamicMap.put("evalName", evalName);
225   -// dynamicMap.put("evalType", evalType.getName());
226   -// dynamicMap.put("amount", decimalFormat.format(rewardDist.getReward()));
227   -// planItemReq.setDynamicMap(dynamicMap);
228   -//
229   -// Map<String, Object> extraData = new HashMap<>();
230   -// planItemReq.setExtraData(extraData);
231   -// itemList.add(planItemReq);
232   -// }
233   -//
234   -//
235   -// //推送待办
236   -// BacklogBatchPlanReqDTO batchPlanReq = new BacklogBatchPlanReqDTO(todoVal.getDistEvalReward(), itemList);
237   -// List<FailBacklogItem> failItems = Optional.ofNullable(todoRpcService.batchPush(batchPlanReq)).orElse(new ArrayList<>());
238   -// if (PublicUtil.isNotEmpty(failItems)) {
239   -// log.error("发送分配考评奖励待办失败,失败人员信息:{}", JSON.toJSONString(failItems));
240   -// }
  192 + public void sendDistRewardTodo(List<EvalGroupRewardDim> shopRewardDims, EvalGroup evalGroup,
  193 + EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage) {
  194 + String evalGroupRankName = evalGroupRank.getName();
  195 + String evalGroupRankStageName = evalGroupRankStage.getName();
  196 + DecimalFormat decimalFormat = new DecimalFormat("##########.##");
  197 + List<BacklogBatchPlanItemReqDTO> itemList = new ArrayList<>();
  198 +
  199 + List<Long> distPoolIds = new ArrayList<>();
  200 + final Date expireTime = DateUtil.localDateTime2Date(LocalDateTime.now().plusDays(2L));
  201 + for (EvalGroupRewardDim rewardDim : shopRewardDims) {
  202 + final String roleCode = rewardDim.getDistRoleCode();
  203 + List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery()
  204 + .eq(EvalShopPool::getEvalGroupId, evalGroup.getId())
  205 + .in(EvalShopPool::getShopId, rewardDim.getShopIds())
  206 + .eq(EvalShopPool::getYn, Boolean.TRUE)
  207 + );
  208 + if (PublicUtil.isEmpty(pools)) {
  209 + log.error("分配奖惩待办,未找到考评池:{}", JSON.toJSONString(rewardDim));
  210 + continue;
  211 + }
  212 + List<Long> distShopIds = pools.stream().filter(pool -> pool.getReward().compareTo(BigDecimal.ZERO) == 0)
  213 + .map(EvalShopPool::getShopId).collect(Collectors.toList());
  214 +
  215 + List<RpcUserRoleInfoDTO> users = this.getUserEnableRoleInfos(roleCode, distShopIds);
  216 + for (RpcUserRoleInfoDTO user : users) {
  217 + List<Long> manageShopIds = user.getRangeList().stream()
  218 + .filter(range -> distShopIds.contains(range.getShopId()))
  219 + .map(RpcUserRoleShopDTO::getShopId).distinct().collect(Collectors.toList());
  220 + if (PublicUtil.isEmpty(manageShopIds)) {
  221 + continue;
  222 + }
  223 + List<Long> poolIds = new ArrayList<>();
  224 + BigDecimal reward = BigDecimal.ZERO;
  225 + for (EvalShopPool pool : pools) {
  226 + if (manageShopIds.contains(pool.getShopId())) {
  227 + poolIds.add(pool.getId());
  228 + distPoolIds.add(pool.getId());
  229 + reward = reward.add(pool.getReward());
  230 + }
  231 + }
  232 + //奖惩为0不分配
  233 + if (BigDecimal.ZERO.compareTo(reward) == 0) {
  234 + return;
  235 + }
  236 +
  237 + EvalRewardDist rewardDist = transferPo(evalGroup);
  238 + rewardDist.setUserId(user.getUserId());
  239 + rewardDist.setEvalShopPoolIds(poolIds);
  240 + rewardDist.setShopIds(manageShopIds);
  241 + rewardDist.setEvalName(evalGroupRankName);
  242 +// rewardDist.setEvalType(evalType);
  243 + rewardDist.setReward(reward);
  244 + evalRewardDistService.save(rewardDist);
  245 +
  246 + BacklogBatchPlanItemReqDTO planItemReq = new BacklogBatchPlanItemReqDTO();
  247 + planItemReq.setDataId(rewardDist.getId().toString());
  248 + planItemReq.setUserId(user.getUserId());
  249 + planItemReq.setPlanTime(new Date());
  250 + planItemReq.setExpireTime(expireTime);
  251 +
  252 + Map<String, String> dynamicMap = new HashMap<>(8);
  253 + dynamicMap.put("evalGroupName", evalGroupRankName);
  254 + dynamicMap.put("evalName", evalGroupRankStageName);
  255 +// dynamicMap.put("evalType", evalType.getName());
  256 + dynamicMap.put("amount", decimalFormat.format(rewardDist.getReward()));
  257 + planItemReq.setDynamicMap(dynamicMap);
  258 +
  259 + Map<String, Object> extraData = new HashMap<>();
  260 + planItemReq.setExtraData(extraData);
  261 + itemList.add(planItemReq);
  262 + }
241 263  
242   -// if (PublicUtil.isEmpty(failItems) || itemList.size() > failItems.size()) {
243   -// pool.setStatus(EvalShopPoolStatusEnum.WAIT_DIST_REWARD);
244   -// evalShopPoolService.updateById(pool);
245   -// }
  264 + }
  265 +
  266 +
  267 + //推送待办
  268 + BacklogBatchPlanReqDTO batchPlanReq = new BacklogBatchPlanReqDTO(todoVal.getDistEvalReward(), itemList);
  269 + List<FailBacklogItem> failItems = Optional.ofNullable(todoRpcService.batchPush(batchPlanReq)).orElse(new ArrayList<>());
  270 + if (PublicUtil.isNotEmpty(failItems)) {
  271 + log.error("发送分配考评奖励待办失败,失败人员信息:{}", JSON.toJSONString(failItems));
  272 + }
  273 +
  274 + if (PublicUtil.isEmpty(failItems) || itemList.size() > failItems.size()) {
  275 + if (PublicUtil.isNotEmpty(distPoolIds)) {
  276 + evalShopPoolService.update(Wrappers.<EvalShopPool>lambdaUpdate()
  277 + .in(EvalShopPool::getId, distPoolIds)
  278 + .set(EvalShopPool::getStatus, EvalShopPoolStatusEnum.WAIT_DIST_REWARD)
  279 + .set(EvalShopPool::getYn, Boolean.FALSE)
  280 + .set(EvalShopPool::getUpdateTime, new Date())
  281 + );
  282 + }
  283 + }
246 284 }
247 285  
248 286 public EvalRewardDist transferPo(EvalGroup evalGroup) {
... ...