test: 清理夹具覆盖二期单据表;应用场地单 DDL

This commit is contained in:
weicw
2026-10-31 06:57:52 +08:00
parent 8af04ff41a
commit ec80639d73
@@ -170,14 +170,41 @@ public class ApprovalTestData {
} }
private void deleteInstance(Long instanceId) { private void deleteInstance(Long instanceId) {
master.update("DELETE FROM approval_attachment WHERE instance_id = ?", instanceId); for (String table : INSTANCE_CHILD_TABLES) {
master.update("DELETE FROM approval_record WHERE instance_id = ?", instanceId); try {
master.update("DELETE FROM approval_task WHERE instance_id = ?", instanceId); master.update("DELETE FROM " + table + " WHERE instance_id = ?", instanceId);
master.update("DELETE FROM approval_completion_form WHERE instance_id = ?", instanceId); } catch (Exception ignored) {
master.update("DELETE FROM approval_coordination_form WHERE instance_id = ?", instanceId); // 该单据的表尚未在当前环境创建:跳过,不阻断清理
}
}
master.update("DELETE FROM approval_instance WHERE id = ?", instanceId); master.update("DELETE FROM approval_instance WHERE id = ?", instanceId);
} }
/**
* 按实例外键清理的子表清单:新增单据表时在此追加,否则用例数据会残留在共享库。
*
* <p>明细子表也带 {@code instance_id},与业务主表一样按实例删除。</p>
*/
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) { private Integer insert(JdbcTemplate jdbcTemplate, String sql, Object... args) {
KeyHolder keyHolder = new GeneratedKeyHolder(); KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(connection -> { jdbcTemplate.update(connection -> {