瀏覽代碼

BUGFIX
1、解决项目变更时如果同一天变更并且差额为0导致变更失败的问题
2、解决如果在同一天,来回变更,对于变更的项目它只会查询到一条是没问题,但是对于不变的项目会查询出来多个

liangwenxuan 1 周之前
父節點
當前提交
683407aff8

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

@@ -512,10 +512,6 @@ public class BpmElderlyChangeApiImpl implements BpmElderlyChangeApi {
                 }
             }
         }
-
-        if (0 == currentExpense.setScale(2).compareTo(changeExpense.setScale(2))) {
-            return;
-        }
         // 获取最后一次变更的时间
 //        ElderlyChangeRecordDO currentLastRecordDO = changeRecordMapper.selectLastRecordByElderId(elderlyId,
 //                bpmType, changeType, bedChangeRecordDO.getChangeDate(), bedChangeRecordDO.getId());

+ 28 - 0
yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/ExpenseItemMapper.xml

@@ -190,6 +190,34 @@
         END AS billAmount
         FROM elderly_expense_item eei
         INNER JOIN elderly_expense ee ON eei.expense_id = ee.id
+        INNER JOIN (
+        SELECT
+        eei2.item_id,
+        MAX(eei2.create_time) AS max_create_time
+        FROM elderly_expense_item eei2
+        INNER JOIN elderly_expense ee2 ON eei2.expense_id = ee2.id
+        WHERE eei2.is_monthly_expense = 1
+        AND ee2.elder_id = #{elderId}
+        AND (
+        (DATE_FORMAT(eei2.change_start_date, '%Y-%m') <![CDATA[ <= ]]> #{billingMonth}
+        AND DATE_FORMAT(eei2.change_end_date, '%Y-%m') <![CDATA[ >= ]]> #{billingMonth})
+        OR (DATE_FORMAT(eei2.change_start_date, '%Y-%m') <![CDATA[ <= ]]> #{billingMonth}
+        AND eei2.change_end_date IS NULL)
+        )
+        AND NOT (
+        DATE_FORMAT(eei2.change_start_date, '%Y-%m') = #{billingMonth}
+        AND eei2.change_start_date > STR_TO_DATE(CONCAT(#{billingMonth}, '-01'), '%Y-%m-%d')
+        AND EXISTS (
+        SELECT 1
+        FROM elderly_change_record ecr
+        WHERE ecr.elderly_id = ee2.elder_id
+        AND ecr.expect_overhead_charge_id = eei2.item_id
+        AND DATE_FORMAT(ecr.change_date, '%Y-%m') = #{billingMonth}
+        AND ecr.deleted = 0
+        )
+        )
+        GROUP BY eei2.item_id
+        ) latest ON eei.item_id = latest.item_id AND eei.create_time = latest.max_create_time
         WHERE eei.is_monthly_expense = 1
         AND ee.elder_id = #{elderId}
         AND (