Преглед изворни кода

修改
1、优化离住长者获取月度账单时的错误提示词
2、修改变更在1号时,账单生成需要显示旧费用+差额费用。

liangwenxuan пре 2 недеља
родитељ
комит
2e079753b4

+ 5 - 5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/biz/ExpenseOrderServiceImpl.java

@@ -3706,7 +3706,7 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
         if (latestContract != null && latestContract.getExpireTime() != null) {
             contractExpireDate = latestContract.getExpireTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
             if (contractExpireDate.isBefore(monthStart)) {
-                return collect;
+                throw exceptionCustomMsg(COMMON_ERROR,"合同已到期");
             }
             isContractExpireInBillingMonth = !contractExpireDate.isBefore(monthStart) && !contractExpireDate.isAfter(monthEnd);
         }
@@ -3734,7 +3734,7 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
                     // 原离住规则在“月初离住”会直接不计费;
                     // 但若本月合同到期,需像离住按区间计费(1号~到期日),故不提前 return
                     if (!isContractExpireInBillingMonth) {
-                        return collect;
+                        throw exceptionCustomMsg(COMMON_ERROR,"长者处于离住状态");
                     }
                 }
             }
@@ -3745,7 +3745,7 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
                     // 仍处于离住中:离院后月份不计费;
                     // 但若本月合同到期,仍需生成 1号~到期日费用
                     if (!isContractExpireInBillingMonth) {
-                        return collect;
+                        throw exceptionCustomMsg(COMMON_ERROR,"长者处于离住状态");
                     }
                 } else {
                     YearMonth comeYm = YearMonth.from(comeDate);
@@ -3753,7 +3753,7 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
                         // 返院发生在未来月份:本月仍不计费;
                         // 但若本月合同到期,仍需生成 1号~到期日费用
                         if (!isContractExpireInBillingMonth) {
-                            return collect;
+                            throw exceptionCustomMsg(COMMON_ERROR,"长者处于离住状态");
                         }
                     } else if (yearMonth.equals(comeYm)) {
                         // 返院当月:从返院日开始计费(包含当天)
@@ -3910,4 +3910,4 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
         }
         elderlyConsumerVouchersMapper.updateBatch(vouchersDOList);
     }
-}
+}

+ 31 - 9
yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/ExpenseItemMapper.xml

@@ -36,7 +36,7 @@
         expense_data.itemId,
         expense_data.itemCategoryId,
         expense_data.itemCategoryName,
-        expense_data.itemName,
+        COALESCE(soc.charge_name, expense_data.itemName) AS itemName,
         expense_data.billAmount AS amount,
         expense_data.billAmount AS actualAmount,
         expense_data.isDiscount,
@@ -72,7 +72,7 @@
         SELECT ecr.overhead_charge_id
         FROM elderly_change_record ecr
         WHERE ecr.elderly_id = ee.elder_id
-        AND ecr.overhead_charge_id = eei.item_id
+        AND (ecr.overhead_charge_id = eei.item_id OR ecr.expect_overhead_charge_id = eei.item_id)
         AND ecr.deleted = 0
         LIMIT 1
         ),
@@ -81,7 +81,7 @@
         FROM elderly_change_record ecr
         INNER JOIN elderly_price_change_record epcr ON ecr.id = epcr.change_id
         WHERE ecr.elderly_id = ee.elder_id
-        AND ecr.overhead_charge_id = eei.item_id
+        AND (ecr.overhead_charge_id = eei.item_id OR ecr.expect_overhead_charge_id = eei.item_id)
         AND ecr.deleted = 0
         AND epcr.deleted = 0
         LIMIT 1
@@ -98,7 +98,7 @@
         SELECT ecr.category_name
         FROM elderly_change_record ecr
         WHERE ecr.elderly_id = ee.elder_id
-        AND ecr.overhead_charge_id = eei.item_id
+        AND (ecr.overhead_charge_id = eei.item_id OR ecr.expect_overhead_charge_id = eei.item_id)
         AND ecr.deleted = 0
         LIMIT 1
         ),
@@ -107,7 +107,7 @@
         FROM elderly_change_record ecr
         INNER JOIN elderly_price_change_record epcr ON ecr.id = epcr.change_id
         WHERE ecr.elderly_id = ee.elder_id
-        AND ecr.overhead_charge_id = eei.item_id
+        AND (ecr.overhead_charge_id = eei.item_id OR ecr.expect_overhead_charge_id = eei.item_id)
         AND ecr.deleted = 0
         AND epcr.deleted = 0
         LIMIT 1
@@ -123,7 +123,7 @@
         SELECT ecr.original_name
         FROM elderly_change_record ecr
         WHERE ecr.elderly_id = ee.elder_id
-        AND ecr.overhead_charge_id = eei.item_id
+        AND (ecr.overhead_charge_id = eei.item_id OR ecr.expect_overhead_charge_id = eei.item_id)
         AND ecr.deleted = 0
         LIMIT 1
         ),
@@ -132,7 +132,7 @@
         FROM elderly_change_record ecr
         INNER JOIN elderly_price_change_record epcr ON ecr.id = epcr.change_id
         WHERE ecr.elderly_id = ee.elder_id
-        AND ecr.overhead_charge_id = eei.item_id
+        AND (ecr.overhead_charge_id = eei.item_id OR ecr.expect_overhead_charge_id = eei.item_id)
         AND ecr.deleted = 0
         AND epcr.deleted = 0
         LIMIT 1
@@ -172,6 +172,27 @@
         AND ecr.elderly_id = ee.elder_id
         AND pcr.deleted = 0
         AND ecr.deleted = 0
+        AND ecr.change_date = STR_TO_DATE(CONCAT(#{billingMonth}, '-01'), '%Y-%m-%d')
+        LIMIT 1
+        ),
+        (
+        SELECT pcr.original_amount
+        FROM elderly_price_change_record pcr
+        INNER JOIN elderly_change_record ecr ON pcr.change_id = ecr.id
+        WHERE pcr.original_id = eei.item_id
+        AND ecr.elderly_id = ee.elder_id
+        AND pcr.deleted = 0
+        AND ecr.deleted = 0
+        ORDER BY ecr.change_date DESC
+        LIMIT 1
+        ),
+        (
+        SELECT original_amount
+        FROM elderly_change_record ecr
+        WHERE ecr.elderly_id = ee.elder_id
+        AND (ecr.overhead_charge_id = eei.item_id OR ecr.expect_overhead_charge_id = eei.item_id)
+        AND ecr.deleted = 0
+        AND ecr.change_date = STR_TO_DATE(CONCAT(#{billingMonth}, '-01'), '%Y-%m-%d')
         ORDER BY ecr.change_date DESC
         LIMIT 1
         ),
@@ -179,7 +200,7 @@
         SELECT original_amount
         FROM elderly_change_record ecr
         WHERE ecr.elderly_id = ee.elder_id
-        AND ecr.overhead_charge_id = eei.item_id
+        AND (ecr.overhead_charge_id = eei.item_id OR ecr.expect_overhead_charge_id = eei.item_id)
         AND ecr.deleted = 0
         ORDER BY ecr.change_date DESC
         LIMIT 1
@@ -239,5 +260,6 @@
         )
         )
         ) expense_data
+        LEFT JOIN sys_overhead_charge soc ON soc.id = expense_data.itemId
     </select>
-</mapper>
+</mapper>