Переглянути джерело

修改
1、应收报表实际金额逻辑调整

liangwenxuan 2 місяців тому
батько
коміт
6858587079

+ 10 - 16
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/order/OrderApiImpl.java

@@ -273,7 +273,6 @@ public class OrderApiImpl implements OrderApi {
                     ? BigDecimal.ZERO : expenseOrderItemDO.getTotalAmount();
 
             BigDecimal billedStandardAmount = standardAmount;
-            BigDecimal billedActualAmount = actualAmount;
 
             if (billYm != null) {
                 int daysInBillMonth = billYm.lengthOfMonth();
@@ -297,15 +296,10 @@ public class OrderApiImpl implements OrderApi {
                 long actualDays = ChronoUnit.DAYS.between(overlapStart, overlapEnd) + 1;
                 if (daysInBillMonth > 0 && actualDays > 0 && actualDays != daysInBillMonth) {
                     BigDecimal dayStandard = standardAmount
-                            .divide(BigDecimal.valueOf(daysInBillMonth), 8, RoundingMode.DOWN);
-                    BigDecimal dayActual = actualAmount
-                            .divide(BigDecimal.valueOf(daysInBillMonth), 8, RoundingMode.DOWN);
+                            .divide(BigDecimal.valueOf(daysInBillMonth), 8, RoundingMode.HALF_UP);
                     billedStandardAmount = dayStandard
                             .multiply(BigDecimal.valueOf(actualDays))
-                            .setScale(2, RoundingMode.DOWN);
-                    billedActualAmount = dayActual
-                            .multiply(BigDecimal.valueOf(actualDays))
-                            .setScale(2, RoundingMode.DOWN);
+                            .setScale(2, RoundingMode.HALF_UP);
                 }
             }
 
@@ -313,16 +307,16 @@ public class OrderApiImpl implements OrderApi {
             if ((type != null  && 1 == type) || expenseItemDO.getItemName().contains("床位费")) {
                 dto.setBedItemName(expenseItemDO.getItemName());
                 dto.setBedAmount(dto.getBedAmount().add(billedStandardAmount));
-                dto.setBedActualAmount(dto.getBedActualAmount().add(billedActualAmount));
+                dto.setBedActualAmount(dto.getBedActualAmount().add(actualAmount));
             } else if ((type != null  && 2 == type) || expenseItemDO.getItemName().contains("护理费")) {
                 dto.setNurseAmount(dto.getNurseAmount().add(billedStandardAmount));
-                dto.setNurseActualAmount(dto.getNurseActualAmount().add(billedActualAmount));
+                dto.setNurseActualAmount(dto.getNurseActualAmount().add(actualAmount));
             } else if ((type != null  && 3 == type) || expenseItemDO.getItemName().contains("餐饮费")) {
                 dto.setMealAmount(dto.getMealAmount().add(billedStandardAmount));
-                dto.setMealActualAmount(dto.getMealActualAmount().add(billedActualAmount));
+                dto.setMealActualAmount(dto.getMealActualAmount().add(actualAmount));
             } else if ((type != null  && 7 == type) ||  expenseItemDO.getItemName().contains("服务费")) {
                 dto.setServiceAmount(dto.getServiceAmount().add(billedStandardAmount));
-                dto.setServiceActualAmount(dto.getServiceActualAmount().add(billedActualAmount));
+                dto.setServiceActualAmount(dto.getServiceActualAmount().add(actualAmount));
             }
         }
     }
@@ -464,10 +458,10 @@ public class OrderApiImpl implements OrderApi {
         dto.setTotalAmount(standardTotal);
 
         BigDecimal actualTotal = dto.getBedActualAmount()
-                .add(dto.getMealActualAmount())
-                .add(dto.getServiceActualAmount())
-                .add(dto.getNurseActualAmount())
-                .add(dto.getExtraServiceAmount() == null ? BigDecimal.ZERO : dto.getExtraServiceAmount());
+                .add(dto.getMealActualAmount().setScale(2, RoundingMode.HALF_UP))
+                .add(dto.getServiceActualAmount().setScale(2, RoundingMode.HALF_UP))
+                .add(dto.getNurseActualAmount().setScale(2, RoundingMode.HALF_UP))
+                .add(dto.getExtraServiceAmount() == null ? BigDecimal.ZERO : dto.getExtraServiceAmount().setScale(2, RoundingMode.HALF_UP));
         dto.setTotalActualAmount(actualTotal);
 
         String actualProportion = "0%";