统一进位规则

This commit is contained in:
钱涛 2024-05-14 14:27:19 +08:00
parent 0f1473801e
commit 11cbf23b8f
1 changed files with 8 additions and 27 deletions

View File

@ -5,7 +5,6 @@ import com.engine.salary.entity.salaryformula.dto.SalaryFormulaEmployeeDTO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.enums.SalaryRoundingModeEnum;
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
import com.engine.salary.util.JsonUtil;
import com.engine.salary.util.SalaryEntityUtil;
@ -14,8 +13,10 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* 薪资核算公式变量
@ -32,8 +33,8 @@ public class SalaryAcctFormulaBO {
*
* @param value
* @param salaryItem
* @param salarySobBackItems 薪资账套回算项目List
* @param salarySobBackItemMap 薪资账套回算项目Map
* @param salarySobBackItems 薪资账套回算项目List
* @param salarySobBackItemMap 薪资账套回算项目Map
* @param salaryItemIdKeySalarySobItemPOMap 薪资账套下薪资项目Map
* @return
*/
@ -55,33 +56,13 @@ public class SalaryAcctFormulaBO {
.orElse(salaryItem.getRoundingMode());
Integer salaryItemPattern = Optional.ofNullable(salaryItemIdKeySalarySobItemPOMap.get(salaryItem.getId())).map(SalarySobItemPO::getPattern)
.orElse(salaryItem.getPattern());
if(CollectionUtils.isNotEmpty(salarySobBackItems) && salarySobBackItemMap.containsKey(salaryItem.getId())){
if (CollectionUtils.isNotEmpty(salarySobBackItems) && salarySobBackItemMap.containsKey(salaryItem.getId())) {
// 薪资项目是回算项目
salaryItemRoundingMode = salarySobBackItemMap.get(salaryItem.getId()).getRoundingMode();
salaryItemPattern = salarySobBackItemMap.get(salaryItem.getId()).getPattern();
}
BigDecimal bigDecimalValue = SalaryEntityUtil.empty2Zero(value);
RoundingMode roundingMode = RoundingMode.HALF_UP;
if (Objects.equals(salaryItemRoundingMode, SalaryRoundingModeEnum.ROUND_UP.getValue())) {
roundingMode = RoundingMode.UP;
}
if (Objects.equals(salaryItemRoundingMode, SalaryRoundingModeEnum.ROUND_DOWN.getValue())) {
roundingMode = RoundingMode.DOWN;
}
//见分取角只取保留小数后一位向上舍入
if (Objects.equals(salaryItemRoundingMode, SalaryRoundingModeEnum.CEILING.getValue())) {
bigDecimalValue = bigDecimalValue.setScale(salaryItemPattern + 1, RoundingMode.FLOOR);
roundingMode = RoundingMode.UP;
}
//向上取偶
if (Objects.equals(salaryItemRoundingMode, SalaryRoundingModeEnum.UP_EVEN.getValue())) {
bigDecimalValue = bigDecimalValue.setScale(0, RoundingMode.UP);
int number = bigDecimalValue.intValue();
if (number % 2 != 0) {
bigDecimalValue = bigDecimalValue.add(BigDecimal.valueOf(1));
}
}
return bigDecimalValue.setScale(salaryItemPattern, roundingMode).toPlainString();
return SalaryEntityUtil.carryRule(salaryItemPattern, salaryItemRoundingMode, bigDecimalValue).toString();
}
/**