ソースを参照

BUGFIX
1、解决价格变更特殊场景下审批通过报错问题

liangwenxuan 8 時間 前
コミット
293f494cae

+ 7 - 7
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/bpm/BpmElderlyChangeApiImpl.java

@@ -698,7 +698,7 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
 
                     BigDecimal finalAmount = null;
 
-                    if (0 == currentExpense.setScale(2).compareTo(changeExpense.setScale(2))) {
+                    if (0 == currentExpense.compareTo(changeExpense)) {
                         finalAmount = BigDecimal.ZERO;
                     } else if(daysInCurrentMonth.equals(changeDays)){
                         finalAmount = changeExpense.subtract(currentExpense);
@@ -714,8 +714,8 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
                         // 最终价格 = 新 - 原
                         finalAmount = changeFinalAmount.subtract(currentFinalAmount);
                     }
-                    String currentRemark = String.format(PRICE_CHANGE_DAILY_PAY_REMARK, currentExpense.setScale(2),
-                            currentExpense.setScale(2), changeExpense.setScale(2), currentDays, changeDays);
+                    String currentRemark = String.format(PRICE_CHANGE_DAILY_PAY_REMARK, currentExpense.setScale(2,RoundingMode.HALF_UP),
+                            currentExpense.setScale(2,RoundingMode.HALF_UP), changeExpense.setScale(2,RoundingMode.HALF_UP), currentDays, changeDays);
                     Date currentDate = new Date();
                     // 查询已生成账单,对生效期内的已生成账单增加日常费用记录
                     List<ExpenseOrderDO> generateExpenseOrder = expenseOrderMapper.selectList(new LambdaQueryWrapperX<ExpenseOrderDO>()
@@ -731,7 +731,7 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
                             currentDailyExpensesDO.setItemCategory(itemCategory);
                             currentDailyExpensesDO.setItemName(category.getItemName());
                             currentDailyExpensesDO.setType(2);
-                            currentDailyExpensesDO.setPrice(changeExpense.setScale(2));
+                            currentDailyExpensesDO.setPrice(changeExpense.setScale(2,RoundingMode.HALF_UP));
                             if(changeRecordDO.getChangeDate().format(DateTimeFormatter.ofPattern("yyyy-MM")).equals(e.getBillingMonth())){
                                 currentDailyExpensesDO.setAmount(dailyExpensesDOAmount);
                                 currentDailyExpensesDO.setStartDate(changeRecordDO.getChangeDate());
@@ -742,8 +742,8 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
                                 YearMonth yearMonth = YearMonth.parse(e.getBillingMonth());
                                 currentDailyExpensesDO.setStartDate(yearMonth.atDay(1));
                                 currentDailyExpensesDO.setEndDate(yearMonth.atEndOfMonth());
-                                currentDailyExpensesDO.setRemarks(String.format(PRICE_CHANGE_DAILY_PAY_REMARK, currentExpense.setScale(2), currentExpense.setScale(2),
-                                        changeExpense.setScale(2), 0, yearMonth.lengthOfMonth()));
+                                currentDailyExpensesDO.setRemarks(String.format(PRICE_CHANGE_DAILY_PAY_REMARK, currentExpense.setScale(2,RoundingMode.HALF_UP), currentExpense.setScale(2,RoundingMode.HALF_UP),
+                                        changeExpense.setScale(2,RoundingMode.HALF_UP), 0, yearMonth.lengthOfMonth()));
                             }
                             currentDailyExpensesDO.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
                             currentDailyExpensesDO.setCreatedTime(currentDate);
@@ -806,7 +806,7 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
                         currentDailyExpensesDO.setItemCategory(itemCategory);
                         currentDailyExpensesDO.setItemName(category.getItemName());
                         currentDailyExpensesDO.setType(2);
-                        currentDailyExpensesDO.setPrice(changeExpense.setScale(2));
+                        currentDailyExpensesDO.setPrice(changeExpense.setScale(2,RoundingMode.HALF_UP));
                         currentDailyExpensesDO.setAmount(dailyExpensesDOAmount);
                         currentDailyExpensesDO.setRemarks(currentRemark);
                         currentDailyExpensesDO.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());