feat: complete signature and drainage reporting workflows
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
ALTER TABLE "ChannelSignatureReportTask"
|
||||
ADD COLUMN "reportType" TEXT NOT NULL DEFAULT 'signature',
|
||||
ADD COLUMN "drainageItemId" TEXT;
|
||||
|
||||
CREATE INDEX "ChannelSignatureReportTask_signatureId_drainageItemId_channelId_idx"
|
||||
ON "ChannelSignatureReportTask"("signatureId", "drainageItemId", "channelId");
|
||||
|
||||
CREATE INDEX "ChannelSignatureReportTask_reportType_status_idx"
|
||||
ON "ChannelSignatureReportTask"("reportType", "status");
|
||||
@@ -0,0 +1,45 @@
|
||||
INSERT INTO "ChannelSignatureReportTask" (
|
||||
"id", "tenantId", "signatureId", "channelId", "reportType", "drainageItemId", "status", "createdAt", "updatedAt"
|
||||
)
|
||||
SELECT
|
||||
'drainage_' || md5(random()::text || clock_timestamp()::text || material."id"),
|
||||
signature."tenantId",
|
||||
material."signatureId",
|
||||
material."channelId",
|
||||
'drainage',
|
||||
material."drainageItemId",
|
||||
'pending',
|
||||
CURRENT_TIMESTAMP,
|
||||
CURRENT_TIMESTAMP
|
||||
FROM (
|
||||
SELECT DISTINCT ON ("signatureId", "drainageItemId", "channelId")
|
||||
"id", "signatureId", "drainageItemId", "channelId"
|
||||
FROM "DrainageReportMaterial"
|
||||
ORDER BY "signatureId", "drainageItemId", "channelId", "createdAt"
|
||||
) material
|
||||
JOIN "SmsSignature" signature ON signature."id" = material."signatureId"
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM "ChannelSignatureReportTask" task
|
||||
WHERE task."signatureId" = material."signatureId"
|
||||
AND task."channelId" = material."channelId"
|
||||
AND task."reportType" = 'drainage'
|
||||
AND task."drainageItemId" = material."drainageItemId"
|
||||
);
|
||||
|
||||
INSERT INTO "ChannelSignatureReportRecord" (
|
||||
"id", "taskId", "channelId", "action", "statusAfter", "reason", "createdAt"
|
||||
)
|
||||
SELECT
|
||||
'drainage_record_' || md5(random()::text || clock_timestamp()::text || task."id"),
|
||||
task."id",
|
||||
task."channelId",
|
||||
'migration_backfill',
|
||||
task."status",
|
||||
'从已有引流报备材料回填任务',
|
||||
CURRENT_TIMESTAMP
|
||||
FROM "ChannelSignatureReportTask" task
|
||||
WHERE task."reportType" = 'drainage'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM "ChannelSignatureReportRecord" record WHERE record."taskId" = task."id"
|
||||
);
|
||||
@@ -0,0 +1,7 @@
|
||||
CREATE UNIQUE INDEX "ChannelSignatureReportTask_target_key"
|
||||
ON "ChannelSignatureReportTask"(
|
||||
"signatureId",
|
||||
"channelId",
|
||||
"reportType",
|
||||
COALESCE("drainageItemId", '')
|
||||
);
|
||||
@@ -720,6 +720,8 @@ model ChannelSignatureReportTask {
|
||||
tenantId String
|
||||
signatureId String
|
||||
channelId String
|
||||
reportType String @default("signature")
|
||||
drainageItemId String?
|
||||
status String @default("pending")
|
||||
reason String?
|
||||
createdById String?
|
||||
@@ -734,6 +736,8 @@ model ChannelSignatureReportTask {
|
||||
|
||||
@@index([tenantId, status])
|
||||
@@index([signatureId, channelId])
|
||||
@@index([signatureId, drainageItemId, channelId])
|
||||
@@index([reportType, status])
|
||||
}
|
||||
|
||||
model ChannelSignatureReportRecord {
|
||||
|
||||
Reference in New Issue
Block a user