Commit af2405d28f7b6d3f69017f4d319d4ba5809d5670
1 parent
4e522dc0
feature(*): 试用期上班天数、上班天数使用考勤系统上报数据
试用期上班天数、上班天数使用考勤系统上报数据
Showing
4 changed files
with
60 additions
and
34 deletions
fw-morax-server/src/main/resources/application.yml
fw-morax-service/src/main/java/cn/fw/morax/service/biz/CommonService.java
... | ... | @@ -9,21 +9,19 @@ import cn.fw.morax.domain.db.SettingDraft; |
9 | 9 | import cn.fw.morax.domain.db.eval.EvalGroupRewardRankLog; |
10 | 10 | import cn.fw.morax.domain.db.eval.EvalIndicatorValue; |
11 | 11 | import cn.fw.morax.domain.db.kpi.IndicatorUserValue; |
12 | -import cn.fw.morax.domain.db.kpi.KpiGroup; | |
13 | 12 | import cn.fw.morax.domain.dto.AbstractLaddersDto; |
14 | 13 | import cn.fw.morax.domain.enums.*; |
15 | 14 | import cn.fw.morax.domain.vo.kpi.IndicatorUserValueVO; |
16 | -import cn.fw.morax.domain.vo.kpi.KpiIndicatorRankStaffVO; | |
17 | 15 | import cn.fw.morax.rpc.ehr.EhrRpcService; |
18 | 16 | import cn.fw.morax.rpc.ehr.dto.StaffBaseInfoDTO; |
19 | 17 | import cn.fw.morax.rpc.erp.ErpRpcService; |
20 | 18 | import cn.fw.morax.rpc.erp.dto.RpcUserRoleInfoDTO; |
21 | 19 | import cn.fw.morax.service.data.SettingDraftService; |
20 | +import cn.fw.morax.service.data.kpi.IndicatorUserValueService; | |
22 | 21 | import cn.hutool.core.io.IoUtil; |
23 | 22 | import cn.hutool.poi.excel.ExcelUtil; |
24 | 23 | import cn.hutool.poi.excel.ExcelWriter; |
25 | 24 | import com.alibaba.fastjson.JSONObject; |
26 | -import com.baomidou.mybatisplus.core.conditions.Wrapper; | |
27 | 25 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
28 | 26 | import com.google.common.collect.Lists; |
29 | 27 | import lombok.RequiredArgsConstructor; |
... | ... | @@ -51,6 +49,7 @@ public class CommonService { |
51 | 49 | private final ErpRpcService erpRpcService; |
52 | 50 | private final EhrRpcService ehrRpcService; |
53 | 51 | private final SettingDraftService settingDraftService; |
52 | + private final IndicatorUserValueService indicatorUserValueService; | |
54 | 53 | |
55 | 54 | /** |
56 | 55 | * 检查阶梯 |
... | ... | @@ -252,6 +251,27 @@ public class CommonService { |
252 | 251 | } |
253 | 252 | |
254 | 253 | /** |
254 | + * 查询指标值 | |
255 | + * | |
256 | + * @param userId | |
257 | + * @param groupId | |
258 | + * @param dataDate | |
259 | + * @param indicatorCode | |
260 | + * @return | |
261 | + */ | |
262 | + public BigDecimal queryIndicatorValue(Long userId, Long groupId, LocalDate dataDate, String indicatorCode) { | |
263 | + IndicatorUserValue indicatorUserValue = indicatorUserValueService.getOne(Wrappers.<IndicatorUserValue>lambdaQuery() | |
264 | + .eq(IndicatorUserValue::getUserId, userId) | |
265 | + .eq(IndicatorUserValue::getIndicatorCode, indicatorCode) | |
266 | + .eq(IndicatorUserValue::getDataDate, dataDate) | |
267 | + .eq(IndicatorUserValue::getYn, Boolean.TRUE) | |
268 | + .eq(IndicatorUserValue::getGroupId, groupId) | |
269 | + , Boolean.FALSE | |
270 | + ); | |
271 | + return this.queryIndicatorValue(indicatorCode, indicatorUserValue); | |
272 | + } | |
273 | + | |
274 | + /** | |
255 | 275 | * 查询具体指标值 |
256 | 276 | * @param indicatorCode |
257 | 277 | * @param indicatorUserValue | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryCalcService.java
... | ... | @@ -11,6 +11,7 @@ import cn.fw.morax.domain.enums.SalaryCalMethodEnum; |
11 | 11 | import cn.fw.morax.domain.enums.SalaryTypeEnum; |
12 | 12 | import cn.fw.morax.rpc.ehr.EhrRpcService; |
13 | 13 | import cn.fw.morax.rpc.oop.OopRpcService; |
14 | +import cn.fw.morax.service.biz.CommonService; | |
14 | 15 | import cn.fw.morax.service.biz.calculator.salary.SalaryBaseCalculator; |
15 | 16 | import cn.fw.morax.service.biz.kpi.KpiPoolCommonService; |
16 | 17 | import cn.fw.morax.service.data.salary.*; |
... | ... | @@ -30,8 +31,6 @@ import org.springframework.transaction.annotation.Transactional; |
30 | 31 | import java.math.BigDecimal; |
31 | 32 | import java.math.RoundingMode; |
32 | 33 | import java.time.LocalDate; |
33 | -import java.time.YearMonth; | |
34 | -import java.time.temporal.TemporalAdjuster; | |
35 | 34 | import java.time.temporal.TemporalAdjusters; |
36 | 35 | import java.util.*; |
37 | 36 | import java.util.concurrent.RejectedExecutionException; |
... | ... | @@ -63,6 +62,7 @@ public class SalaryCalcService { |
63 | 62 | private final SalaryPoolCommonService salaryPoolCommonService; |
64 | 63 | private final KpiPoolCommonService kpiPoolCommonService; |
65 | 64 | private final SalaryConfirmBizService salaryConfirmBizService; |
65 | + private final CommonService commonService; | |
66 | 66 | private static final List<ExtraSalaryTypeEnum> EXTRA_SALARY_TYPE_ENUM_LIST = ListUtil.toList(ExtraSalaryTypeEnum.AWARD, ExtraSalaryTypeEnum.PENALTY, |
67 | 67 | ExtraSalaryTypeEnum.NECESSARY, ExtraSalaryTypeEnum.SUBSIDY, ExtraSalaryTypeEnum.PERSON_TAX); |
68 | 68 | @Value("${spring.cache.custom.global-prefix}:calculable:salary-group") |
... | ... | @@ -74,6 +74,9 @@ public class SalaryCalcService { |
74 | 74 | @Value("${spring.cache.custom.global-prefix}:salary-change:salary-recalculate") |
75 | 75 | @Getter |
76 | 76 | private String retrySalaryCalcKey; |
77 | + @Value("${special-indicator-code.probation-base-salary}") | |
78 | + @Getter | |
79 | + private String probationBaseSalary; | |
77 | 80 | private final Map<SalaryCalMethodEnum, SalaryBaseCalculator> calculatorMap; |
78 | 81 | |
79 | 82 | @Autowired |
... | ... | @@ -88,6 +91,7 @@ public class SalaryCalcService { |
88 | 91 | final StringRedisTemplate stringRedisTemplate, EhrRpcService ehrRpcService, |
89 | 92 | final SalaryConfirmBizService salaryConfirmBizService, |
90 | 93 | final OopRpcService oopRpcService, |
94 | + final CommonService commonService, | |
91 | 95 | final List<SalaryBaseCalculator> salaryCalculatorList) { |
92 | 96 | this.salaryGeneralSettinService = salaryGeneralSettinService; |
93 | 97 | this.salaryGroupService = salaryGroupService; |
... | ... | @@ -100,6 +104,7 @@ public class SalaryCalcService { |
100 | 104 | this.stringRedisTemplate = stringRedisTemplate; |
101 | 105 | this.ehrRpcService = ehrRpcService; |
102 | 106 | this.oopRpcService = oopRpcService; |
107 | + this.commonService = commonService; | |
103 | 108 | this.salaryConfirmBizService = salaryConfirmBizService; |
104 | 109 | this.calculatorMap = salaryCalculatorList.stream().collect(Collectors.toMap(SalaryBaseCalculator::getCalMethod, v -> v)); |
105 | 110 | } |
... | ... | @@ -488,11 +493,11 @@ public class SalaryCalcService { |
488 | 493 | if (count <= 0) { |
489 | 494 | return; |
490 | 495 | } |
491 | - int lengthOfMonth = YearMonth.from(user.getDataDate()).lengthOfMonth(); | |
492 | - BigDecimal dayP = new BigDecimal(count).divide(new BigDecimal(lengthOfMonth), 2, RoundingMode.DOWN); | |
496 | + BigDecimal probation = commonService.queryIndicatorValue(user.getUserId(), user.getGroupId(), user.getDataDate(), getProbationBaseSalary()); | |
497 | + | |
493 | 498 | BigDecimal baseValue = ehrRpcService.queryProbationerSalary(user.getUserId(), user.getDataDate()); |
494 | 499 | BV.notNull(baseValue, () -> "试用期工资查询失败"); |
495 | - BigDecimal probationSalary = baseValue.multiply(dayP).divide(BigDecimal.ONE, 2, RoundingMode.DOWN); | |
500 | + BigDecimal probationSalary = baseValue.multiply(probation).divide(BigDecimal.ONE, 2, RoundingMode.DOWN); | |
496 | 501 | SalaryPoolDetail detail = createDetail(pool, user.getDataDate()); |
497 | 502 | detail.setType(SalaryTypeEnum.PROBATION); |
498 | 503 | detail.setSalaryAmount(probationSalary); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryGroupUserBizService.java
... | ... | @@ -48,9 +48,9 @@ public class SalaryGroupUserBizService { |
48 | 48 | @Value("${special-indicator-code.work-age}") |
49 | 49 | @Getter |
50 | 50 | private String workAgeCode; |
51 | - @Value("${special-indicator-code.base-salary}") | |
52 | - @Getter | |
53 | - private String baseSalaryCode; | |
51 | +// @Value("${special-indicator-code.base-salary}") | |
52 | +// @Getter | |
53 | +// private String baseSalaryCode; | |
54 | 54 | @Value("${special-indicator-code.work-day-proportion}") |
55 | 55 | @Getter |
56 | 56 | private String workDayProportion; |
... | ... | @@ -135,7 +135,7 @@ public class SalaryGroupUserBizService { |
135 | 135 | for (PerformanceStaffDTO staff : staffs) { |
136 | 136 | BigDecimal workDayProportion = salaryPoolCommonService.getWorkDayProportion(staff.getId(), sgc, date); |
137 | 137 | saveRawData(staff, date, BigDecimal.valueOf(staff.getWorkAge()), workDayProportion); |
138 | - saveRawData(staff, date, workDayProportion); | |
138 | +// saveRawData(staff, date, workDayProportion); | |
139 | 139 | } |
140 | 140 | |
141 | 141 | } |
... | ... | @@ -147,28 +147,28 @@ public class SalaryGroupUserBizService { |
147 | 147 | * @param date |
148 | 148 | * @param indicatorValue |
149 | 149 | */ |
150 | - private void saveRawData(PerformanceStaffDTO staff, LocalDate date, BigDecimal indicatorValue) { | |
151 | - String salaryCode = getBaseSalaryCode(); | |
152 | - IndicatorUserValue rawData = new IndicatorUserValue(); | |
153 | - rawData.setIndicatorCode(salaryCode); | |
154 | - Map<String, BigDecimal> map = new HashMap<>(1); | |
155 | - map.put(salaryCode, indicatorValue); | |
156 | - rawData.setIndicatorValue(JSONObject.toJSONString(map)); | |
157 | - rawData.setValueType(IndicatorValueTypeEnum.RATIO); | |
158 | - rawData.setDataDate(date); | |
159 | - rawData.setUserId(staff.getId()); | |
160 | - rawData.setGroupId(staff.getGroupId()); | |
161 | - rawData.setYn(Boolean.TRUE); | |
162 | - | |
163 | - indicatorUserValueService.remove(Wrappers.<IndicatorUserValue>lambdaQuery() | |
164 | - .eq(IndicatorUserValue::getUserId, staff.getId()) | |
165 | - .eq(IndicatorUserValue::getIndicatorCode, salaryCode) | |
166 | - .eq(IndicatorUserValue::getDataDate, date) | |
167 | - .eq(IndicatorUserValue::getGroupId, staff.getGroupId()) | |
168 | - ); | |
169 | - | |
170 | - indicatorUserValueService.save(rawData); | |
171 | - } | |
150 | +// private void saveRawData(PerformanceStaffDTO staff, LocalDate date, BigDecimal indicatorValue) { | |
151 | +// String salaryCode = getBaseSalaryCode(); | |
152 | +// IndicatorUserValue rawData = new IndicatorUserValue(); | |
153 | +// rawData.setIndicatorCode(salaryCode); | |
154 | +// Map<String, BigDecimal> map = new HashMap<>(1); | |
155 | +// map.put(salaryCode, indicatorValue); | |
156 | +// rawData.setIndicatorValue(JSONObject.toJSONString(map)); | |
157 | +// rawData.setValueType(IndicatorValueTypeEnum.RATIO); | |
158 | +// rawData.setDataDate(date); | |
159 | +// rawData.setUserId(staff.getId()); | |
160 | +// rawData.setGroupId(staff.getGroupId()); | |
161 | +// rawData.setYn(Boolean.TRUE); | |
162 | +// | |
163 | +// indicatorUserValueService.remove(Wrappers.<IndicatorUserValue>lambdaQuery() | |
164 | +// .eq(IndicatorUserValue::getUserId, staff.getId()) | |
165 | +// .eq(IndicatorUserValue::getIndicatorCode, salaryCode) | |
166 | +// .eq(IndicatorUserValue::getDataDate, date) | |
167 | +// .eq(IndicatorUserValue::getGroupId, staff.getGroupId()) | |
168 | +// ); | |
169 | +// | |
170 | +// indicatorUserValueService.save(rawData); | |
171 | +// } | |
172 | 172 | |
173 | 173 | private void saveRawData(PerformanceStaffDTO staff, LocalDate date, BigDecimal indicatorValue, BigDecimal workProportion) { |
174 | 174 | String indicatorCode = getWorkAgeCode(); | ... | ... |