76f266645d
含 Phase 1.1 IM seq 排序、断线重连、多端已读同步与微信式语音转文字 UI。 排除 node_modules、构建产物、安装包与 .env 密钥。 Co-authored-by: Cursor <cursoragent@cursor.com>
62 lines
1.7 KiB
PL/PgSQL
62 lines
1.7 KiB
PL/PgSQL
\set ON_ERROR_STOP on
|
|
|
|
BEGIN;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (
|
|
SELECT 1 FROM "ExpenseClaim"
|
|
WHERE "tenantId" = '1' AND "claimNo" = 'BX-20260809-002'
|
|
) THEN
|
|
RAISE EXCEPTION 'Expense BX-20260809-002 already exists';
|
|
END IF;
|
|
END $$;
|
|
|
|
WITH restored AS (
|
|
INSERT INTO "ExpenseClaim" (
|
|
id, "tenantId", "claimNo", "applicantId", "costType",
|
|
"budgetCategory", "projectId", "expenseCategory", purpose,
|
|
amount, status, "submittedAt", "createdAt"
|
|
)
|
|
SELECT
|
|
gen_random_uuid()::text,
|
|
'1',
|
|
'BX-20260809-002',
|
|
applicant.id,
|
|
'PROJECT',
|
|
'TRAVEL',
|
|
project.id,
|
|
'办公',
|
|
'日常办公(江苏风影)',
|
|
689.08,
|
|
'DRAFT',
|
|
TIMESTAMP '2026-08-09 21:39:30',
|
|
TIMESTAMP '2026-08-09 21:39:30'
|
|
FROM "User" applicant
|
|
CROSS JOIN "Project" project
|
|
WHERE applicant."displayName" = '戴永康'
|
|
AND project."projectNo" = 'XM-20260609-002'
|
|
RETURNING id
|
|
)
|
|
INSERT INTO "ExpenseLine" (
|
|
id, "tenantId", "claimId", kind, amount, remark, "sortNo", "createdAt"
|
|
)
|
|
SELECT gen_random_uuid()::text, '1', restored.id, line.kind, line.amount,
|
|
line.remark, line.sort_no, TIMESTAMP '2026-08-09 21:39:30'
|
|
FROM restored
|
|
CROSS JOIN (
|
|
VALUES
|
|
('OFFICE', 122.65::numeric, 'OA平台短信通知费用', 1),
|
|
('OFFICE', 566.43::numeric, 'OA云服务器及流量费用', 2)
|
|
) AS line(kind, amount, remark, sort_no);
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF (SELECT count(*) FROM "ExpenseClaim" WHERE "claimNo" = 'BX-20260809-002') <> 1
|
|
OR (SELECT count(*) FROM "ExpenseLine" line JOIN "ExpenseClaim" claim ON claim.id = line."claimId" WHERE claim."claimNo" = 'BX-20260809-002') <> 2 THEN
|
|
RAISE EXCEPTION 'Expense BX-20260809-002 restore verification failed';
|
|
END IF;
|
|
END $$;
|
|
|
|
COMMIT;
|