feat(P17A-1,P17A-2): 新增采购模型权限与系统种子
这个提交包含在:
@@ -0,0 +1,135 @@
|
||||
-- CreateEnum
|
||||
CREATE TYPE "PurchaseRequestStatus" AS ENUM ('draft', 'reviewing', 'approved', 'rejected', 'cancelled');
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "purchase_requests" (
|
||||
"id" UUID NOT NULL,
|
||||
"request_no" TEXT,
|
||||
"applicant_id" UUID NOT NULL,
|
||||
"submitter_id" UUID,
|
||||
"department_id" UUID NOT NULL,
|
||||
"legal_entity_id" UUID,
|
||||
"cost_center_id" UUID,
|
||||
"supplier_id" UUID,
|
||||
"document_category_id" UUID,
|
||||
"budget_pool_id" UUID,
|
||||
"title" TEXT NOT NULL DEFAULT '',
|
||||
"reason" TEXT,
|
||||
"currency_code" VARCHAR(8) NOT NULL DEFAULT 'CNY',
|
||||
"total_amount" DECIMAL(14,2) NOT NULL DEFAULT 0,
|
||||
"expected_delivery_date" DATE,
|
||||
"status" "PurchaseRequestStatus" NOT NULL DEFAULT 'draft',
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"created_by" UUID,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||
"updated_by" UUID,
|
||||
|
||||
CONSTRAINT "purchase_requests_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "purchase_request_items" (
|
||||
"id" UUID NOT NULL,
|
||||
"purchase_request_id" UUID NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"specification" TEXT,
|
||||
"quantity" DECIMAL(14,2) NOT NULL,
|
||||
"unit_price" DECIMAL(14,2) NOT NULL,
|
||||
"line_amount" DECIMAL(14,2) NOT NULL,
|
||||
"is_asset_candidate" BOOLEAN NOT NULL DEFAULT false,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"created_by" UUID,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||
"updated_by" UUID,
|
||||
|
||||
CONSTRAINT "purchase_request_items_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "purchase_attachments" (
|
||||
"id" UUID NOT NULL,
|
||||
"purchase_request_id" UUID NOT NULL,
|
||||
"storage_path" TEXT NOT NULL,
|
||||
"original_name" TEXT NOT NULL,
|
||||
"mime_type" TEXT NOT NULL,
|
||||
"file_size" INTEGER NOT NULL,
|
||||
"uploaded_by" UUID NOT NULL,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "purchase_attachments_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "purchase_requests_request_no_key" ON "purchase_requests"("request_no");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_requests_applicant_status_updated" ON "purchase_requests"("applicant_id", "status", "updated_at");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_requests_submitter" ON "purchase_requests"("submitter_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_requests_department" ON "purchase_requests"("department_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_requests_legal_entity" ON "purchase_requests"("legal_entity_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_requests_cost_center" ON "purchase_requests"("cost_center_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_requests_supplier" ON "purchase_requests"("supplier_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_requests_document_category" ON "purchase_requests"("document_category_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_requests_budget_pool" ON "purchase_requests"("budget_pool_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_requests_status" ON "purchase_requests"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_request_items_request" ON "purchase_request_items"("purchase_request_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_attachments_request_created" ON "purchase_attachments"("purchase_request_id", "created_at");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "idx_purchase_attachments_uploader" ON "purchase_attachments"("uploaded_by");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "purchase_requests" ADD CONSTRAINT "purchase_requests_applicant_id_fkey" FOREIGN KEY ("applicant_id") REFERENCES "employees"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "purchase_requests" ADD CONSTRAINT "purchase_requests_submitter_id_fkey" FOREIGN KEY ("submitter_id") REFERENCES "employees"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "purchase_requests" ADD CONSTRAINT "purchase_requests_department_id_fkey" FOREIGN KEY ("department_id") REFERENCES "departments"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "purchase_requests" ADD CONSTRAINT "purchase_requests_legal_entity_id_fkey" FOREIGN KEY ("legal_entity_id") REFERENCES "legal_entities"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "purchase_requests" ADD CONSTRAINT "purchase_requests_cost_center_id_fkey" FOREIGN KEY ("cost_center_id") REFERENCES "cost_centers"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "purchase_requests" ADD CONSTRAINT "purchase_requests_supplier_id_fkey" FOREIGN KEY ("supplier_id") REFERENCES "suppliers"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "purchase_requests" ADD CONSTRAINT "purchase_requests_document_category_id_fkey" FOREIGN KEY ("document_category_id") REFERENCES "document_categories"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "purchase_requests" ADD CONSTRAINT "purchase_requests_budget_pool_id_fkey" FOREIGN KEY ("budget_pool_id") REFERENCES "budget_pools"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "purchase_request_items" ADD CONSTRAINT "purchase_request_items_purchase_request_id_fkey" FOREIGN KEY ("purchase_request_id") REFERENCES "purchase_requests"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "purchase_attachments" ADD CONSTRAINT "purchase_attachments_purchase_request_id_fkey" FOREIGN KEY ("purchase_request_id") REFERENCES "purchase_requests"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "purchase_attachments" ADD CONSTRAINT "purchase_attachments_uploaded_by_fkey" FOREIGN KEY ("uploaded_by") REFERENCES "employees"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "workflow_instances" ADD CONSTRAINT "workflow_instances_purchase_request_id_fkey" FOREIGN KEY ("purchase_request_id") REFERENCES "purchase_requests"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
在新工单中引用
屏蔽一个用户