Commit af2405d28f7b6d3f69017f4d319d4ba5809d5670

Authored by 姜超
1 parent 4e522dc0

feature(*): 试用期上班天数、上班天数使用考勤系统上报数据

试用期上班天数、上班天数使用考勤系统上报数据
fw-morax-server/src/main/resources/application.yml
... ... @@ -153,6 +153,7 @@ special-indicator-code:
153 153 work-age: '1093027AFb124440'
154 154 work-day-proportion: 'Work_Day_Proportion'
155 155 car-series: 'C660EDC7330a43f9'
  156 + probation-base-salary: '8817Da44122d4f13'
156 157  
157 158 role-code:
158 159 hr-operation: 'HR'
... ...
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();
... ...