Blame view

fw-morax-service/src/main/java/cn/fw/morax/service/biz/ApprovalBizService.java 26.1 KB
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
1
2
3
  package cn.fw.morax.service.biz;
  
  import cn.fw.approval.sdk.param.InitiateApprovalParam;
358e9d65   姜超   feature(*): 绩效组审批...
4
  import cn.fw.common.web.auth.LoginAuthBean;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
5
  import cn.fw.morax.common.config.FlowVal;
347b9a76   姜超   feature(*): 考评审批
6
  import cn.fw.morax.common.utils.DateUtil;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
7
8
  import cn.fw.morax.common.utils.PublicUtil;
  import cn.fw.morax.domain.db.ApprovalRecord;
770c421f   姜超   feature(*): 草稿查询
9
  import cn.fw.morax.domain.db.SettingDraft;
f3f3553f   姜超   feature(*): 考评审批
10
  import cn.fw.morax.domain.db.eval.Eval;
347b9a76   姜超   feature(*): 考评审批
11
  import cn.fw.morax.domain.db.eval.EvalRewardDist;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
12
  import cn.fw.morax.domain.db.kpi.KpiGroup;
4b07306b   姜超   feature(*): 星级特殊调整申请
13
  import cn.fw.morax.domain.db.kpi.KpiStarSpecialRule;
3083fec7   姜超   feature(*): 薪酬组保存...
14
  import cn.fw.morax.domain.db.salary.SalaryGroup;
f3f3553f   姜超   feature(*): 考评审批
15
  import cn.fw.morax.domain.dto.eval.EvalGroupDTO;
8945afe5   姜超   feature(*): 考评保存修改
16
  import cn.fw.morax.domain.dto.eval.EvalGroupRankDTO;
770c421f   姜超   feature(*): 草稿查询
17
  import cn.fw.morax.domain.dto.kpi.KpiGroupDTO;
566a519a   姜超   feature(*): 保存绩效排名组
18
  import cn.fw.morax.domain.dto.kpi.KpiGroupRankDTO;
bdb573f7   姜超   feature(*): 草稿修改
19
  import cn.fw.morax.domain.dto.salary.SalaryGroupDTO;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
20
21
22
23
  import cn.fw.morax.domain.enums.ApprovalStatusEnum;
  import cn.fw.morax.domain.enums.ApprovalTypeEnum;
  import cn.fw.morax.rpc.approval.FlowApproveRpc;
  import cn.fw.morax.rpc.approval.dto.FlowDto;
4b07306b   姜超   feature(*): 星级特殊调整申请
24
25
  import cn.fw.morax.rpc.ehr.EhrRpcService;
  import cn.fw.morax.rpc.ehr.dto.StaffBaseInfoDTO;
358e9d65   姜超   feature(*): 绩效组审批...
26
  import cn.fw.morax.service.biz.salary.SalaryGeneralSettinBizService;
b365d22a   姜超   feature(*): 申述日期修...
27
  import cn.fw.morax.service.biz.salary.SalarySettingCommonService;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
28
  import cn.fw.morax.service.data.ApprovalRecordService;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
29
  import com.baomidou.mybatisplus.core.toolkit.Wrappers;
566a519a   姜超   feature(*): 保存绩效排名组
30
  import com.google.common.base.Joiner;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
31
32
33
  import com.google.common.collect.Lists;
  import lombok.RequiredArgsConstructor;
  import lombok.extern.slf4j.Slf4j;
f3f3553f   姜超   feature(*): 考评审批
34
  import org.apache.commons.lang3.StringUtils;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
35
  import org.springframework.stereotype.Service;
4b07306b   姜超   feature(*): 星级特殊调整申请
36
  import org.springframework.transaction.annotation.Transactional;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
37
  
358e9d65   姜超   feature(*): 绩效组审批...
38
  import java.time.LocalDate;
3083fec7   姜超   feature(*): 薪酬组保存...
39
  import java.time.LocalDateTime;
3083fec7   姜超   feature(*): 薪酬组保存...
40
  import java.time.format.DateTimeFormatter;
358e9d65   姜超   feature(*): 绩效组审批...
41
  import java.util.*;
72a45c52   姜超   feature(*): 审批修改
42
  import java.util.stream.Collectors;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
43
  
5e2b19c9   姜超   feature(*): 审批修改
44
45
  import static cn.fw.common.businessvalidator.Validator.BV;
  
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
46
47
48
49
50
  @Slf4j
  @RequiredArgsConstructor
  @Service
  public class ApprovalBizService {
  
b365d22a   姜超   feature(*): 申述日期修...
51
      private final SalarySettingCommonService salarySettingCommonService;
358e9d65   姜超   feature(*): 绩效组审批...
52
      private final SalaryGeneralSettinBizService salaryGeneralSettinBizService;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
53
54
      private final ApprovalRecordService approvalRecordService;
      private final FlowApproveRpc flowApproveRpc;
4b07306b   姜超   feature(*): 星级特殊调整申请
55
      private final EhrRpcService ehrRpcService;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
56
57
58
59
      private final FlowVal flowVal;
  
      /**
       * 提交审批
75c18249   张志伟   :construction:
60
       *
3083fec7   姜超   feature(*): 薪酬组保存...
61
62
       * @param salaryGroup
       */
bdca4a05   姜超   feature(*): 绩效审批修改
63
      @Transactional(rollbackFor = Exception.class)
75c18249   张志伟   :construction:
64
      public void applyApproveSalaryGroup(SalaryGroup salaryGroup, LoginAuthBean user, Integer staffNum) {
358e9d65   姜超   feature(*): 绩效组审批...
65
          Date expTime = PublicUtil.getExpTimeOfMonth(salaryGroup.getBeginTime());
bdca4a05   姜超   feature(*): 绩效审批修改
66
          //提交审批
72a45c52   姜超   feature(*): 审批修改
67
68
69
70
71
72
73
74
75
76
          List<InitiateApprovalParam.Condition> conditions = Lists.newArrayList();
          InitiateApprovalParam.Condition postCondition = new InitiateApprovalParam.Condition();
          postCondition.setParamName("postId");
          postCondition.setValue(salaryGroup.getPostId().toString());
          InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition();
          shopCondition.setParamName("shopId");
          List<String> shopIdsStr = salaryGroup.getShopIds().stream().map(s -> s.toString()).collect(Collectors.toList());
          shopCondition.setValue(String.join(",", shopIdsStr));
          conditions.add(postCondition);
          conditions.add(shopCondition);
bdca4a05   姜超   feature(*): 绩效审批修改
77
78
79
80
81
          Map extDataMap = new HashMap<String, Object>() {{
              put("id", salaryGroup.getId().toString());
          }};
          FlowDto flowDto = FlowDto.builder()
                  .groupId(salaryGroup.getGroupId())
5f82695a   姜超   feature(*): 审批配置文件提交
82
                  .approvalNo(flowVal.getSalaryGroupConfig())
bdca4a05   姜超   feature(*): 绩效审批修改
83
                  .briefContent(Lists.newArrayList(
358e9d65   姜超   feature(*): 绩效组审批...
84
                          "申请人:" + user.getUserName(),
bdca4a05   姜超   feature(*): 绩效审批修改
85
                          "岗位:" + salaryGroup.getPostName(),
8f08359b   姜超   feature(*): 薪酬项新增字段
86
87
88
  //                        "薪酬项目:" + salaryGroup.getProjectNum() + "个",
  //                        "适用门店:" + salaryGroup.getShopIds().size() + "个",
  //                        "适用人员:" + staffNum + "人",
bdca4a05   姜超   feature(*): 绩效审批修改
89
90
                          "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
                  ))
358e9d65   姜超   feature(*): 绩效组审批...
91
92
                  .initiatorId(user.getUserId())
                  .expTime(expTime)
bdca4a05   姜超   feature(*): 绩效审批修改
93
                  .shopIds(salaryGroup.getShopIds())
72a45c52   姜超   feature(*): 审批修改
94
                  .conditions(conditions)
bdca4a05   姜超   feature(*): 绩效审批修改
95
96
97
98
99
100
                  .extData(extDataMap)
                  .build();
          String approvalNo = flowApproveRpc.initiate(flowDto);
          ApprovalRecord approvalRecord = ApprovalRecord.builder()
                  .approvalNo(approvalNo)
                  .approvalStatus(ApprovalStatusEnum.IN_APPROVAL)
900a51f7   姜超   feature(*): 审批修改
101
                  .approvalType(ApprovalTypeEnum.SALARY)
bdca4a05   姜超   feature(*): 绩效审批修改
102
103
104
105
106
                  .dataId(salaryGroup.getId())
                  .groupId(salaryGroup.getGroupId())
                  .build();
          approvalRecordService.save(approvalRecord);
      }
3083fec7   姜超   feature(*): 薪酬组保存...
107
108
109
  
      /**
       * 提交审批
75c18249   张志伟   :construction:
110
       *
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
111
112
       * @param kpiGroup
       */
4b07306b   姜超   feature(*): 星级特殊调整申请
113
      @Transactional(rollbackFor = Exception.class)
75c18249   张志伟   :construction:
114
      public void applyApproveKpi(KpiGroup kpiGroup, LoginAuthBean user, Integer staffNum) {
358e9d65   姜超   feature(*): 绩效组审批...
115
          Date expTime = PublicUtil.getExpTimeOfMonth(kpiGroup.getBeginTime());
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
116
          //提交审批
72a45c52   姜超   feature(*): 审批修改
117
118
119
120
121
122
123
124
125
126
          List<InitiateApprovalParam.Condition> conditions = Lists.newArrayList();
          InitiateApprovalParam.Condition postCondition = new InitiateApprovalParam.Condition();
          postCondition.setParamName("postId");
          postCondition.setValue(kpiGroup.getPostId().toString());
          InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition();
          shopCondition.setParamName("shopId");
          List<String> shopIdsStr = kpiGroup.getShopIds().stream().map(s -> s.toString()).collect(Collectors.toList());
          shopCondition.setValue(String.join(",", shopIdsStr));
          conditions.add(postCondition);
          conditions.add(shopCondition);
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
127
128
129
130
131
132
133
          Map extDataMap = new HashMap<String, Object>() {{
              put("id", kpiGroup.getId().toString());
          }};
          FlowDto flowDto = FlowDto.builder()
                  .groupId(kpiGroup.getGroupId())
                  .approvalNo(flowVal.getKpiGroupConfig())
                  .briefContent(Lists.newArrayList(
358e9d65   姜超   feature(*): 绩效组审批...
134
                          "申请人:" + user.getUserName(),
3083fec7   姜超   feature(*): 薪酬组保存...
135
                          "岗位:" + kpiGroup.getPostName(),
8f08359b   姜超   feature(*): 薪酬项新增字段
136
137
138
  //                        "绩效项目:" + kpiGroup.getIndicatorNum() + "个",
  //                        "适用门店:" + kpiGroup.getShopIds().size() + "个",
  //                        "适用人员:" + staffNum + "人",
3083fec7   姜超   feature(*): 薪酬组保存...
139
                          "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
140
                  ))
358e9d65   姜超   feature(*): 绩效组审批...
141
142
                  .initiatorId(user.getUserId())
                  .expTime(expTime)
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
143
                  .shopIds(kpiGroup.getShopIds())
72a45c52   姜超   feature(*): 审批修改
144
                  .conditions(conditions)
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
145
146
147
148
149
150
151
152
153
154
155
156
157
158
                  .extData(extDataMap)
                  .build();
          String approvalNo = flowApproveRpc.initiate(flowDto);
          ApprovalRecord approvalRecord = ApprovalRecord.builder()
                  .approvalNo(approvalNo)
                  .approvalStatus(ApprovalStatusEnum.IN_APPROVAL)
                  .approvalType(ApprovalTypeEnum.KPI)
                  .dataId(kpiGroup.getId())
                  .groupId(kpiGroup.getGroupId())
                  .build();
          approvalRecordService.save(approvalRecord);
      }
  
      /**
4b07306b   姜超   feature(*): 星级特殊调整申请
159
       * 提交审批
75c18249   张志伟   :construction:
160
       *
4b07306b   姜超   feature(*): 星级特殊调整申请
161
162
163
       * @param specialRule
       */
      @Transactional(rollbackFor = Exception.class)
b365d22a   姜超   feature(*): 申述日期修...
164
      public void applyKpiStarAdjustment(KpiStarSpecialRule specialRule, LoginAuthBean user, Date expTime) {
4b07306b   姜超   feature(*): 星级特殊调整申请
165
166
167
168
          //员工基础信息
          StaffBaseInfoDTO staffInfo = ehrRpcService.queryStaffBaseInfo(specialRule.getUserId());
          //提交审批
          List<InitiateApprovalParam.Condition> conditions = Lists.newArrayList();
72a45c52   姜超   feature(*): 审批修改
169
170
171
172
173
174
175
176
          InitiateApprovalParam.Condition postCondition = new InitiateApprovalParam.Condition();
          postCondition.setParamName("postId");
          postCondition.setValue(staffInfo.getPostId().toString());
          InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition();
          shopCondition.setParamName("shopId");
          shopCondition.setValue(staffInfo.getShopId().toString());
          conditions.add(postCondition);
          conditions.add(shopCondition);
4b07306b   姜超   feature(*): 星级特殊调整申请
177
178
179
180
181
182
183
          Map extDataMap = new HashMap<String, Object>() {{
              put("id", specialRule.getId().toString());
          }};
          FlowDto flowDto = FlowDto.builder()
                  .groupId(specialRule.getGroupId())
                  .approvalNo(flowVal.getKpiStarAdjustment())
                  .briefContent(Lists.newArrayList(
e58a1def   姜超   feature(*): 绩效星级调...
184
                          "申请人:" + user.getUserName(),
5fa61474   姜超   feature(*): 保存绩效组...
185
186
187
188
189
                          "岗位:" + staffInfo.getPostName(),
                          "在职门店:" + staffInfo.getShopName(),
  //                        "调整方式:" + staffInfo.getShopName(),
                          "调整原因:" + specialRule.getReason(),
                          "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
4b07306b   姜超   feature(*): 星级特殊调整申请
190
                  ))
e58a1def   姜超   feature(*): 绩效星级调...
191
                  .initiatorId(user.getUserId())
358e9d65   姜超   feature(*): 绩效组审批...
192
                  .expTime(expTime)
4b07306b   姜超   feature(*): 星级特殊调整申请
193
194
195
196
197
198
199
200
201
202
203
204
205
                  .shopIds(Collections.singletonList(staffInfo.getShopId()))
                  .conditions(conditions)
                  .extData(extDataMap)
                  .build();
          String approvalNo = flowApproveRpc.initiate(flowDto);
          ApprovalRecord approvalRecord = ApprovalRecord.builder()
                  .approvalNo(approvalNo)
                  .approvalStatus(ApprovalStatusEnum.IN_APPROVAL)
                  .approvalType(ApprovalTypeEnum.COMPLAIN)
                  .dataId(specialRule.getId())
                  .groupId(specialRule.getGroupId())
                  .build();
          approvalRecordService.save(approvalRecord);
280563a2   姜超   feature(*): 考评组保存
206
207
208
209
210
211
      }
  
      /**
       * 提交审批
       */
      @Transactional(rollbackFor = Exception.class)
75c18249   张志伟   :construction:
212
      public void applyApproveEval(Eval eval, List<EvalGroupDTO> evalGroups, LoginAuthBean user) {
280563a2   姜超   feature(*): 考评组保存
213
          Date expTime = PublicUtil.getExpTimeOfMonth(LocalDate.now());
f3f3553f   姜超   feature(*): 考评审批
214
215
216
217
  
          Set<Long> postIds = new HashSet<>();
          Set<Long> shopIds = new HashSet<>();
          for (EvalGroupDTO evalGroupDTO : evalGroups) {
d192a480   姜超   feature(*): 考评阶段指标上报
218
  //            postIds.add(evalGroupDTO.getPostId());
f3f3553f   姜超   feature(*): 考评审批
219
220
221
              shopIds.addAll(evalGroupDTO.getShopIds());
          }
  
280563a2   姜超   feature(*): 考评组保存
222
223
          //提交审批
          List<InitiateApprovalParam.Condition> conditions = Lists.newArrayList();
f3f3553f   姜超   feature(*): 考评审批
224
  
280563a2   姜超   feature(*): 考评组保存
225
226
          InitiateApprovalParam.Condition postCondition = new InitiateApprovalParam.Condition();
          postCondition.setParamName("postId");
f3f3553f   姜超   feature(*): 考评审批
227
228
          postCondition.setValue(StringUtils.join(",", postIds));
  
280563a2   姜超   feature(*): 考评组保存
229
230
          InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition();
          shopCondition.setParamName("shopId");
f3f3553f   姜超   feature(*): 考评审批
231
232
          shopCondition.setValue(StringUtils.join(",", shopIds));
  
280563a2   姜超   feature(*): 考评组保存
233
234
235
          conditions.add(postCondition);
          conditions.add(shopCondition);
          Map extDataMap = new HashMap<String, Object>() {{
f3f3553f   姜超   feature(*): 考评审批
236
              put("id", eval.getId().toString());
280563a2   姜超   feature(*): 考评组保存
237
238
239
          }};
  
          FlowDto flowDto = FlowDto.builder()
f3f3553f   姜超   feature(*): 考评审批
240
                  .groupId(eval.getGroupId())
0a90b3d7   姜超   feature(*): 考评组审批修改
241
                  .approvalNo(flowVal.getEvalGroupConfig())
280563a2   姜超   feature(*): 考评组保存
242
243
                  .briefContent(Lists.newArrayList(
                          "申请人:" + user.getUserName(),
f3f3553f   姜超   feature(*): 考评审批
244
245
                          "考评/活动名称:" + eval.getName(),
                          "考评类型:" + eval.getType().getName(),
280563a2   姜超   feature(*): 考评组保存
246
  //                        "岗位:" + evalGroup.getPostName(),
f3f3553f   姜超   feature(*): 考评审批
247
                          "考评组:" + evalGroups.size() + "个",
280563a2   姜超   feature(*): 考评组保存
248
249
250
251
252
253
  //                        "适用门店:" + evalGroup.getShopIds().size() + "个",
  //                        "适用人员:" + staffNum + "人",
                          "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
                  ))
                  .initiatorId(user.getUserId())
                  .expTime(expTime)
f3f3553f   姜超   feature(*): 考评审批
254
                  .shopIds(new ArrayList<>(shopIds))
280563a2   姜超   feature(*): 考评组保存
255
256
257
258
259
260
261
262
                  .conditions(conditions)
                  .extData(extDataMap)
                  .build();
          String approvalNo = flowApproveRpc.initiate(flowDto);
          ApprovalRecord approvalRecord = ApprovalRecord.builder()
                  .approvalNo(approvalNo)
                  .approvalStatus(ApprovalStatusEnum.IN_APPROVAL)
                  .approvalType(ApprovalTypeEnum.EVAL)
f3f3553f   姜超   feature(*): 考评审批
263
264
                  .dataId(eval.getId())
                  .groupId(eval.getGroupId())
280563a2   姜超   feature(*): 考评组保存
265
266
                  .build();
          approvalRecordService.save(approvalRecord);
4b07306b   姜超   feature(*): 星级特殊调整申请
267
268
269
      }
  
      /**
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
270
       * 审批
75c18249   张志伟   :construction:
271
       *
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
272
273
274
       * @param approvalNo
       * @param agree
       */
4b07306b   姜超   feature(*): 星级特殊调整申请
275
      @Transactional(rollbackFor = Exception.class)
75c18249   张志伟   :construction:
276
      public ApprovalRecord closeApprove(String approvalNo, Boolean agree) {
cc9fae5a   姜超   feature(*): 保存校验修改
277
278
279
280
281
282
          ApprovalRecord approvalRecord = approvalRecordService.getOne(Wrappers.<ApprovalRecord>lambdaQuery()
                  .eq(ApprovalRecord::getApprovalNo, approvalNo));
          //记录不存在、记录已被修改返回空,不再继续执行
          if (PublicUtil.isEmpty(approvalRecord)) {
              return null;
          }
75c18249   张志伟   :construction:
283
          if (PublicUtil.isNotEmpty(approvalRecord) && (!ApprovalStatusEnum.IN_APPROVAL.equals(approvalRecord.getApprovalStatus()))) {
cc9fae5a   姜超   feature(*): 保存校验修改
284
285
286
              return null;
          }
          approvalRecordService.update(Wrappers.<ApprovalRecord>lambdaUpdate()
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
287
288
289
                  .set(ApprovalRecord::getApprovalStatus, (agree) ? ApprovalStatusEnum.PASS : ApprovalStatusEnum.REFUSE)
                  .eq(ApprovalRecord::getApprovalNo, approvalNo)
          );
29887f53   姜超   feature(*): 审批星级特...
290
          return approvalRecord;
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
291
292
      }
  
770c421f   姜超   feature(*): 草稿查询
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
      /**
       * 提交审批
       *
       * @param kpiGroup
       */
      @Transactional(rollbackFor = Exception.class)
      public void applyApproveKpiDraft(KpiGroupDTO kpiGroup, SettingDraft settingDraft, LoginAuthBean user, Integer staffNum) {
          Date expTime = PublicUtil.getExpTimeOfMonth(kpiGroup.getBeginTime());
          //提交审批
          List<InitiateApprovalParam.Condition> conditions = Lists.newArrayList();
          InitiateApprovalParam.Condition postCondition = new InitiateApprovalParam.Condition();
          postCondition.setParamName("postId");
          postCondition.setValue(kpiGroup.getPostId().toString());
          InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition();
          shopCondition.setParamName("shopId");
          List<String> shopIdsStr = kpiGroup.getShopIds().stream().map(s -> s.toString()).collect(Collectors.toList());
          shopCondition.setValue(String.join(",", shopIdsStr));
          conditions.add(postCondition);
          conditions.add(shopCondition);
          Map extDataMap = new HashMap<String, Object>() {{
bdb573f7   姜超   feature(*): 草稿修改
313
              put("id", settingDraft.getId().toString());
770c421f   姜超   feature(*): 草稿查询
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
          }};
          FlowDto flowDto = FlowDto.builder()
                  .groupId(kpiGroup.getGroupId())
                  .approvalNo(flowVal.getKpiGroupConfig())
                  .briefContent(Lists.newArrayList(
                          "申请人:" + user.getUserName(),
                          "岗位:" + kpiGroup.getPostName(),
  //                        "绩效项目:" + kpiGroup.getIndicatorNum() + "个",
  //                        "适用门店:" + kpiGroup.getShopIds().size() + "个",
  //                        "适用人员:" + staffNum + "人",
                          "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
                  ))
                  .initiatorId(user.getUserId())
                  .expTime(expTime)
                  .shopIds(kpiGroup.getShopIds())
                  .conditions(conditions)
                  .extData(extDataMap)
                  .build();
          String approvalNo = flowApproveRpc.initiate(flowDto);
          ApprovalRecord approvalRecord = ApprovalRecord.builder()
                  .approvalNo(approvalNo)
                  .approvalStatus(ApprovalStatusEnum.IN_APPROVAL)
                  .approvalType(ApprovalTypeEnum.KPI)
                  .dataId(settingDraft.getId())
                  .groupId(kpiGroup.getGroupId())
                  .build();
          approvalRecordService.save(approvalRecord);
      }
  
bdb573f7   姜超   feature(*): 草稿修改
343
344
345
      /**
       * 提交审批
       *
566a519a   姜超   feature(*): 保存绩效排名组
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
       * @param kpiGroupRank
       */
      @Transactional(rollbackFor = Exception.class)
      public void applyApproveKpiRankDraft(KpiGroupRankDTO kpiGroupRank, SettingDraft settingDraft, LoginAuthBean user) {
          List<KpiGroupDTO> kpiGroups = kpiGroupRank.getKpiGroups();
          Date expTime = PublicUtil.getExpTimeOfMonth(LocalDate.now().plusDays(7));
          //提交审批
          List<InitiateApprovalParam.Condition> conditions = Lists.newArrayList();
          InitiateApprovalParam.Condition postCondition = new InitiateApprovalParam.Condition();
          postCondition.setParamName("postId");
          InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition();
          shopCondition.setParamName("shopId");
          List<Long> postIds = kpiGroups.stream().map(KpiGroupDTO::getPostId).collect(Collectors.toList());
          List<Long> shopIds = kpiGroups.stream().map(kpiGroup -> kpiGroup.getShopIds()).collect(ArrayList::new, List::addAll, List::addAll);
          postCondition.setValue(Joiner.on(",").join(postIds));
          shopCondition.setValue(Joiner.on(",").join(shopIds));
          conditions.add(postCondition);
          conditions.add(shopCondition);
          Map extDataMap = new HashMap<String, Object>() {{
              put("id", settingDraft.getId().toString());
          }};
          FlowDto flowDto = FlowDto.builder()
                  .groupId(kpiGroupRank.getGroupId())
                  .approvalNo(flowVal.getKpiGroupConfig())
                  .briefContent(Lists.newArrayList(
                          "申请人:" + user.getUserName(),
  //                        "岗位:" + kpiGroupRank.getPostName(),
  //                        "岗位:" + kpiGroupRank.getPostName(),
  //                        "绩效项目:" + kpiGroup.getIndicatorNum() + "个",
  //                        "适用门店:" + kpiGroup.getShopIds().size() + "个",
  //                        "适用人员:" + staffNum + "人",
                          "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
                  ))
                  .initiatorId(user.getUserId())
                  .expTime(expTime)
                  .shopIds(shopIds)
                  .conditions(conditions)
                  .extData(extDataMap)
                  .build();
          String approvalNo = flowApproveRpc.initiate(flowDto);
          ApprovalRecord approvalRecord = ApprovalRecord.builder()
                  .approvalNo(approvalNo)
                  .approvalStatus(ApprovalStatusEnum.IN_APPROVAL)
a16a4772   姜超   feature(*): 考评排名组...
389
                  .approvalType(ApprovalTypeEnum.KPI_GROUP_RANK)
566a519a   姜超   feature(*): 保存绩效排名组
390
391
392
393
394
395
396
397
398
                  .dataId(settingDraft.getId())
                  .groupId(kpiGroupRank.getGroupId())
                  .build();
          approvalRecordService.save(approvalRecord);
      }
  
      /**
       * 提交审批
       *
bdb573f7   姜超   feature(*): 草稿修改
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
       * @param salaryGroup
       */
      @Transactional(rollbackFor = Exception.class)
      public void applyApproveSalaryDraft(SalaryGroupDTO salaryGroup, SettingDraft settingDraft, LoginAuthBean user) {
          Date expTime = PublicUtil.getExpTimeOfMonth(salaryGroup.getBeginTime());
          //提交审批
          List<InitiateApprovalParam.Condition> conditions = Lists.newArrayList();
          InitiateApprovalParam.Condition postCondition = new InitiateApprovalParam.Condition();
          postCondition.setParamName("postId");
          postCondition.setValue(salaryGroup.getPostId().toString());
          InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition();
          shopCondition.setParamName("shopId");
          List<String> shopIdsStr = salaryGroup.getShopIds().stream().map(s -> s.toString()).collect(Collectors.toList());
          shopCondition.setValue(String.join(",", shopIdsStr));
          conditions.add(postCondition);
          conditions.add(shopCondition);
          Map extDataMap = new HashMap<String, Object>() {{
              put("id", settingDraft.getId().toString());
          }};
          FlowDto flowDto = FlowDto.builder()
                  .groupId(salaryGroup.getGroupId())
                  .approvalNo(flowVal.getSalaryGroupConfig())
                  .briefContent(Lists.newArrayList(
                          "申请人:" + user.getUserName(),
                          "岗位:" + salaryGroup.getPostName(),
  //                        "薪酬项目:" + salaryGroup.getProjectNum() + "个",
  //                        "适用门店:" + salaryGroup.getShopIds().size() + "个",
  //                        "适用人员:" + staffNum + "人",
                          "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
                  ))
                  .initiatorId(user.getUserId())
                  .expTime(expTime)
                  .shopIds(salaryGroup.getShopIds())
                  .conditions(conditions)
                  .extData(extDataMap)
                  .build();
          String approvalNo = flowApproveRpc.initiate(flowDto);
          ApprovalRecord approvalRecord = ApprovalRecord.builder()
                  .approvalNo(approvalNo)
                  .approvalStatus(ApprovalStatusEnum.IN_APPROVAL)
                  .approvalType(ApprovalTypeEnum.SALARY)
                  .dataId(settingDraft.getId())
                  .groupId(salaryGroup.getGroupId())
                  .build();
          approvalRecordService.save(approvalRecord);
      }
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
445
  
556ff3c3   姜超   feature(*): 考评草稿
446
447
448
449
      /**
       * 提交审批
       */
      @Transactional(rollbackFor = Exception.class)
8945afe5   姜超   feature(*): 考评保存修改
450
      public void applyApproveEvalDraft(EvalGroupRankDTO evalGroupRankDto, Integer evalGroupSize, SettingDraft settingDraft, LoginAuthBean user) {
556ff3c3   姜超   feature(*): 考评草稿
451
452
          Date expTime = PublicUtil.getExpTimeOfMonth(LocalDate.now());
  
5e2b19c9   姜超   feature(*): 审批修改
453
454
455
          //员工基础信息
          StaffBaseInfoDTO staffInfo = ehrRpcService.queryStaffBaseInfo(user.getUserId());
          BV.notNull(staffInfo, "人员信息查询失败,请重试");
556ff3c3   姜超   feature(*): 考评草稿
456
457
          //提交审批
          List<InitiateApprovalParam.Condition> conditions = Lists.newArrayList();
5e2b19c9   姜超   feature(*): 审批修改
458
459
460
461
          InitiateApprovalParam.Condition postCondition = new InitiateApprovalParam.Condition();
          postCondition.setParamName("postId");
          postCondition.setValue(staffInfo.getPostId().toString());
          conditions.add(postCondition);
556ff3c3   姜超   feature(*): 考评草稿
462
463
          InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition();
          shopCondition.setParamName("shopId");
5e2b19c9   姜超   feature(*): 审批修改
464
          shopCondition.setValue(staffInfo.getShopId().toString());
556ff3c3   姜超   feature(*): 考评草稿
465
          conditions.add(shopCondition);
953eeebd   姜超   feature(*): 奖惩审批修改
466
  
556ff3c3   姜超   feature(*): 考评草稿
467
468
469
470
471
          Map extDataMap = new HashMap<String, Object>() {{
              put("id", settingDraft.getId().toString());
          }};
  
          FlowDto flowDto = FlowDto.builder()
8945afe5   姜超   feature(*): 考评保存修改
472
                  .groupId(evalGroupRankDto.getGroupId())
556ff3c3   姜超   feature(*): 考评草稿
473
474
475
                  .approvalNo(flowVal.getEvalGroupConfig())
                  .briefContent(Lists.newArrayList(
                          "申请人:" + user.getUserName(),
8945afe5   姜超   feature(*): 考评保存修改
476
477
                          "考评/活动名称:" + evalGroupRankDto.getName(),
  //                        "考评类型:" + eval.getType().getName(),
556ff3c3   姜超   feature(*): 考评草稿
478
  //                        "岗位:" + evalGroup.getPostName(),
914847ef   姜超   feature(*): 考评修改
479
                          "考评组:" + evalGroupSize + "个",
556ff3c3   姜超   feature(*): 考评草稿
480
481
482
483
484
485
  //                        "适用门店:" + evalGroup.getShopIds().size() + "个",
  //                        "适用人员:" + staffNum + "人",
                          "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
                  ))
                  .initiatorId(user.getUserId())
                  .expTime(expTime)
5e2b19c9   姜超   feature(*): 审批修改
486
                  .shopIds(new ArrayList<Long>(){{add(staffInfo.getShopId());}})
556ff3c3   姜超   feature(*): 考评草稿
487
488
489
490
491
492
493
                  .conditions(conditions)
                  .extData(extDataMap)
                  .build();
          String approvalNo = flowApproveRpc.initiate(flowDto);
          ApprovalRecord approvalRecord = ApprovalRecord.builder()
                  .approvalNo(approvalNo)
                  .approvalStatus(ApprovalStatusEnum.IN_APPROVAL)
8945afe5   姜超   feature(*): 考评保存修改
494
                  .approvalType(ApprovalTypeEnum.EVAL_GROUP_RANK)
556ff3c3   姜超   feature(*): 考评草稿
495
                  .dataId(settingDraft.getId())
8945afe5   姜超   feature(*): 考评保存修改
496
                  .groupId(evalGroupRankDto.getGroupId())
556ff3c3   姜超   feature(*): 考评草稿
497
498
499
500
                  .build();
          approvalRecordService.save(approvalRecord);
      }
  
347b9a76   姜超   feature(*): 考评审批
501
502
503
504
505
506
507
      /**
       * 提交审批
       *
       */
      @Transactional(rollbackFor = Exception.class)
      public void applyApproveDistReward(EvalRewardDist rewardDist, LoginAuthBean user) {
          Date expTime = DateUtil.localDateTime2Date(LocalDate.now().atTime(23, 59, 59).plusDays(3));
953eeebd   姜超   feature(*): 奖惩审批修改
508
509
510
          //员工基础信息
          StaffBaseInfoDTO staffInfo = ehrRpcService.queryStaffBaseInfo(user.getUserId());
          BV.notNull(staffInfo, "人员信息查询失败,请重试");
347b9a76   姜超   feature(*): 考评审批
511
512
          //提交审批
          List<InitiateApprovalParam.Condition> conditions = Lists.newArrayList();
953eeebd   姜超   feature(*): 奖惩审批修改
513
514
515
516
          InitiateApprovalParam.Condition postCondition = new InitiateApprovalParam.Condition();
          postCondition.setParamName("postId");
          postCondition.setValue(staffInfo.getPostId().toString());
          conditions.add(postCondition);
347b9a76   姜超   feature(*): 考评审批
517
518
          InitiateApprovalParam.Condition shopCondition = new InitiateApprovalParam.Condition();
          shopCondition.setParamName("shopId");
953eeebd   姜超   feature(*): 奖惩审批修改
519
          shopCondition.setValue(staffInfo.getShopId().toString());
347b9a76   姜超   feature(*): 考评审批
520
521
522
523
524
525
526
527
          Map extDataMap = new HashMap<String, Object>() {{
              put("id", rewardDist.getId().toString());
          }};
          FlowDto flowDto = FlowDto.builder()
                  .groupId(rewardDist.getGroupId())
                  .approvalNo(flowVal.getEvalShopReward())
                  .briefContent(Lists.newArrayList(
                          "申请人:" + user.getUserName(),
f945186c   姜超   feature(*): 修改个人考评
528
529
                          "考评排名组:" + rewardDist.getEvalGroupRankName(),
                          "考评排名组阶段:" + rewardDist.getEvalGroupRankStageName(),
347b9a76   姜超   feature(*): 考评审批
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
                          "门店奖惩金额:" + rewardDist.getReward(),
                          "申请时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(LocalDateTime.now())
                  ))
                  .initiatorId(user.getUserId())
                  .expTime(expTime)
                  .shopIds(rewardDist.getShopIds())
                  .conditions(conditions)
                  .extData(extDataMap)
                  .build();
          String approvalNo = flowApproveRpc.initiate(flowDto);
          ApprovalRecord approvalRecord = ApprovalRecord.builder()
                  .approvalNo(approvalNo)
                  .approvalStatus(ApprovalStatusEnum.IN_APPROVAL)
                  .approvalType(ApprovalTypeEnum.EVAL_REWARD_DIST)
                  .dataId(rewardDist.getId())
                  .groupId(rewardDist.getGroupId())
                  .build();
          approvalRecordService.save(approvalRecord);
      }
  
b0f4e55e   姜超   [jiangchao] 绩效组保存审批
550
  }