87 lines
3.4 KiB
SQL
87 lines
3.4 KiB
SQL
-- 场地展位图与户外招聘会展位预定
|
|
-- 瀚高数据库 / PostgreSQL 兼容
|
|
|
|
CREATE SEQUENCE IF NOT EXISTS "cms_venue_booth_id_seq" START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
|
|
CREATE TABLE IF NOT EXISTS "cms_venue_booth" (
|
|
"id" BIGINT NOT NULL DEFAULT nextval('"cms_venue_booth_id_seq"') PRIMARY KEY,
|
|
"venue_id" BIGINT NOT NULL,
|
|
"booth_number" VARCHAR(50) NOT NULL,
|
|
"position_x" INTEGER NOT NULL DEFAULT 0,
|
|
"position_y" INTEGER NOT NULL DEFAULT 0,
|
|
"create_by" VARCHAR(64) DEFAULT '',
|
|
"create_time" TIMESTAMP(0),
|
|
"update_by" VARCHAR(64) DEFAULT '',
|
|
"update_time" TIMESTAMP(0),
|
|
"remark" VARCHAR(500),
|
|
"del_flag" CHAR(1) DEFAULT '0'
|
|
);
|
|
|
|
COMMENT ON TABLE "cms_venue_booth" IS '场地展位图';
|
|
COMMENT ON COLUMN "cms_venue_booth"."venue_id" IS '场地ID';
|
|
COMMENT ON COLUMN "cms_venue_booth"."booth_number" IS '展位号';
|
|
COMMENT ON COLUMN "cms_venue_booth"."position_x" IS 'X坐标';
|
|
COMMENT ON COLUMN "cms_venue_booth"."position_y" IS 'Y坐标';
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_cms_venue_booth_number" ON "cms_venue_booth" ("venue_id", "booth_number");
|
|
CREATE INDEX IF NOT EXISTS "idx_cms_venue_booth_venue" ON "cms_venue_booth" ("venue_id");
|
|
|
|
CREATE SEQUENCE IF NOT EXISTS "cms_outdoor_fair_booth_booking_id_seq" START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
|
|
CREATE TABLE IF NOT EXISTS "cms_outdoor_fair_booth_booking" (
|
|
"id" BIGINT NOT NULL DEFAULT nextval('"cms_outdoor_fair_booth_booking_id_seq"') PRIMARY KEY,
|
|
"fair_id" BIGINT NOT NULL,
|
|
"booth_id" BIGINT NOT NULL,
|
|
"booth_number" VARCHAR(50) NOT NULL,
|
|
"company_id" BIGINT,
|
|
"company_name" VARCHAR(200),
|
|
"status" VARCHAR(30) DEFAULT 'reserved',
|
|
"create_by" VARCHAR(64) DEFAULT '',
|
|
"create_time" TIMESTAMP(0),
|
|
"update_by" VARCHAR(64) DEFAULT '',
|
|
"update_time" TIMESTAMP(0),
|
|
"remark" VARCHAR(500),
|
|
"del_flag" CHAR(1) DEFAULT '0'
|
|
);
|
|
|
|
COMMENT ON TABLE "cms_outdoor_fair_booth_booking" IS '户外招聘会展位预定';
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "uk_cms_outdoor_fair_booth_booking" ON "cms_outdoor_fair_booth_booking" ("fair_id", "booth_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_cms_outdoor_fair_booth_booking_fair" ON "cms_outdoor_fair_booth_booking" ("fair_id");
|
|
|
|
WITH target_venue AS (
|
|
SELECT "id" AS venue_id
|
|
FROM "cms_venue_info"
|
|
WHERE "venue_name" = '石河子市人民广场户外招聘区'
|
|
LIMIT 1
|
|
),
|
|
seed AS (
|
|
SELECT
|
|
target_venue.venue_id,
|
|
'KJ' || LPAD(gs::text, 2, '0') AS booth_number,
|
|
40 + ((gs - 1) % 20) * 54 AS position_x,
|
|
40 + ((gs - 1) / 20) * 54 AS position_y
|
|
FROM target_venue
|
|
CROSS JOIN generate_series(1, 80) gs
|
|
)
|
|
INSERT INTO "cms_venue_booth" ("venue_id", "booth_number", "position_x", "position_y", "create_by", "create_time", "del_flag")
|
|
SELECT seed.venue_id, seed.booth_number, seed.position_x, seed.position_y, 'system', NOW(), '0'
|
|
FROM seed
|
|
WHERE NOT EXISTS (
|
|
SELECT 1
|
|
FROM "cms_venue_booth" existing
|
|
WHERE existing."venue_id" = seed.venue_id
|
|
AND existing."booth_number" = seed.booth_number
|
|
);
|
|
|
|
UPDATE "cms_venue_info" venue
|
|
SET "floor_count" = booth_counts.total
|
|
FROM (
|
|
SELECT "venue_id", COUNT(*) AS total
|
|
FROM "cms_venue_booth"
|
|
GROUP BY "venue_id"
|
|
) booth_counts
|
|
WHERE venue."id" = booth_counts."venue_id";
|
|
|
|
UPDATE "cms_outdoor_fair" fair
|
|
SET "booth_count" = venue."floor_count"
|
|
FROM "cms_venue_info" venue
|
|
WHERE fair."venue_id" = venue."id";
|