diff --git a/src/test/java/com/gxwebsoft/support/ApprovalTestData.java b/src/test/java/com/gxwebsoft/support/ApprovalTestData.java index 884bca9..d93527c 100644 --- a/src/test/java/com/gxwebsoft/support/ApprovalTestData.java +++ b/src/test/java/com/gxwebsoft/support/ApprovalTestData.java @@ -170,14 +170,41 @@ public class ApprovalTestData { } private void deleteInstance(Long instanceId) { - master.update("DELETE FROM approval_attachment WHERE instance_id = ?", instanceId); - master.update("DELETE FROM approval_record WHERE instance_id = ?", instanceId); - master.update("DELETE FROM approval_task WHERE instance_id = ?", instanceId); - master.update("DELETE FROM approval_completion_form WHERE instance_id = ?", instanceId); - master.update("DELETE FROM approval_coordination_form WHERE instance_id = ?", instanceId); + for (String table : INSTANCE_CHILD_TABLES) { + try { + master.update("DELETE FROM " + table + " WHERE instance_id = ?", instanceId); + } catch (Exception ignored) { + // 该单据的表尚未在当前环境创建:跳过,不阻断清理 + } + } master.update("DELETE FROM approval_instance WHERE id = ?", instanceId); } + /** + * 按实例外键清理的子表清单:新增单据表时在此追加,否则用例数据会残留在共享库。 + * + *

明细子表也带 {@code instance_id},与业务主表一样按实例删除。

+ */ + private static final String[] INSTANCE_CHILD_TABLES = { + "approval_attachment", + "approval_field_change", + "approval_record", + "approval_task", + "approval_completion_form", + "approval_coordination_form", + // 二期单据(表不存在时下面会跳过) + "approval_settlement_item", + "approval_settlement_form", + "approval_receipt_form", + "approval_vehicle_item", + "approval_vehicle_form", + "approval_venue_form", + "approval_coupon_item", + "approval_coupon_form", + "approval_facility_item", + "approval_facility_form" + }; + private Integer insert(JdbcTemplate jdbcTemplate, String sql, Object... args) { KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(connection -> {