diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java index 41b38d5e0..546b1036b 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java @@ -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(); } /**