统一进位规则
This commit is contained in:
parent
0f1473801e
commit
11cbf23b8f
|
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue