| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600 |
- -- =====================================================================
- -- 应急与指挥调度模块(dispatch)改造脚本 —— 建表 / 加列 / 字典 seed
- -- 数据库:KingbaseES(PG 兼容模式),业务 schema = app_user
- --
- -- 目的:
- -- 1) 事件域由「按操作拆 9 张表」收敛为 dis_event(主表)+ dis_event_log(日志表)
- -- 2) 预案域由 dis_event_plan + dis_plan_approval 两套收敛为
- -- dis_plan + dis_plan_version + dis_plan_log
- -- 3) dis_event_grade 字段字典化并补业务编号列
- -- 4) 事件来源/渠道/管网类型/类别/等级/区域、预案类型/等级等全部落 sys_dict_data
- --
- -- 设计口径(2026-10-14 与业务确认):
- -- · 事件等级:3 级 —— Ⅰ级(紧急) / Ⅱ级(较大) / Ⅲ级(一般)(原型口径)
- -- · 事件类别、事件等级分别使用 dis_event_category / dis_event_level
- -- · 事件状态:5 态 —— 0 待核实 / 1 已核实 / 2 处置中 / 3 已解除 / 4 不实事件
- -- 存量「待受理」归 0、「已关闭」归 3
- --
- -- 幂等性:本脚本可重复执行。
- -- 建表用 CREATE TABLE IF NOT EXISTS;加列用 ADD COLUMN IF NOT EXISTS;
- -- 字典先 DELETE 同 dict_type 再 INSERT。
- --
- -- 本版同时完成 dis_plan_library 的字段收敛:将类型/等级统一为字典编码,
- -- 并删除已废弃的 event_region / topic / plan_summary 列。
- -- =====================================================================
- BEGIN;
- -- =====================================================================
- -- 一、事件域
- -- =====================================================================
- -- ---------------------------------------------------------------------
- -- 1.1 dis_event 事件主表(全生命周期当前值)
- -- 表若已存在(旧版),下列 ADD COLUMN 只会补齐缺失列;
- -- 旧列 source / category / level 的搬迁见第四节「存量数据迁移」。
- -- ---------------------------------------------------------------------
- CREATE TABLE IF NOT EXISTS app_user.dis_event (
- id int8 GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
- event_no varchar(32),
- description text,
- event_source varchar(20),
- channel varchar(20),
- location varchar(255),
- longitude numeric(12,6),
- latitude numeric(12,6),
- happen_time timestamp,
- reporter_phone varchar(20),
- event_category varchar(20),
- event_level varchar(20),
- status int2 NOT NULL DEFAULT 0,
- verify_result int2,
- verifier varchar(64),
- verify_time timestamp,
- verify_opinion varchar(500),
- handler varchar(64),
- handler_phone varchar(20),
- department varchar(128),
- dispose_time timestamp,
- release_time timestamp,
- release_reason varchar(20),
- release_note varchar(500),
- last_visit_time timestamp,
- next_visit_time timestamp,
- need_upgrade int2,
- create_user_id int8,
- create_time timestamp DEFAULT CURRENT_TIMESTAMP,
- update_user_id int8,
- update_time timestamp DEFAULT CURRENT_TIMESTAMP,
- del_flag char(1) DEFAULT '0'
- );
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS event_no varchar(32);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS description text;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS event_source varchar(20);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS channel varchar(20);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS location varchar(255);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS longitude numeric(12,6);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS latitude numeric(12,6);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS happen_time timestamp;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS reporter_phone varchar(20);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS event_category varchar(20);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS event_level varchar(20);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS status int2 DEFAULT 0;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS verify_result int2;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS verifier varchar(64);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS verify_time timestamp;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS verify_opinion varchar(500);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS handler varchar(64);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS handler_phone varchar(20);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS department varchar(128);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS dispose_time timestamp;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS release_time timestamp;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS release_reason varchar(20);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS release_note varchar(500);
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS last_visit_time timestamp;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS next_visit_time timestamp;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS need_upgrade int2;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS create_user_id int8;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS create_time timestamp DEFAULT CURRENT_TIMESTAMP;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS update_user_id int8;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS update_time timestamp DEFAULT CURRENT_TIMESTAMP;
- ALTER TABLE app_user.dis_event ADD COLUMN IF NOT EXISTS del_flag char(1) DEFAULT '0';
- COMMENT ON TABLE app_user.dis_event IS '应急事件主表:一个事件一行,承载全生命周期当前值;过程留痕见 dis_event_log';
- COMMENT ON COLUMN app_user.dis_event.id IS '主键ID,int8 自增';
- COMMENT ON COLUMN app_user.dis_event.event_no IS '事件编号(业务序号:SJ+yyyyMMddHHmmss+4位随机,后端保存前生成,普通更新不可修改)';
- COMMENT ON COLUMN app_user.dis_event.description IS '事件描述';
- COMMENT ON COLUMN app_user.dis_event.event_source IS '事件来源:字典 dis_event_source';
- COMMENT ON COLUMN app_user.dis_event.channel IS '来源渠道:字典 dis_event_channel';
- COMMENT ON COLUMN app_user.dis_event.location IS '发生地点';
- COMMENT ON COLUMN app_user.dis_event.longitude IS '经度(发生地点地理编码得到)';
- COMMENT ON COLUMN app_user.dis_event.latitude IS '纬度(发生地点地理编码得到)';
- COMMENT ON COLUMN app_user.dis_event.happen_time IS '发生时间';
- COMMENT ON COLUMN app_user.dis_event.reporter_phone IS '上报人联系电话';
- COMMENT ON COLUMN app_user.dis_event.event_category IS '事件类别:字典 dis_event_category(管道泄漏/路面积水/设施损坏/管道堵塞)';
- COMMENT ON COLUMN app_user.dis_event.event_level IS '事件等级:字典 dis_event_level(1-Ⅰ级紧急 2-Ⅱ级较大 3-Ⅲ级一般)';
- COMMENT ON COLUMN app_user.dis_event.status IS '事件状态:EventStatusEnum —— 0-待核实 1-已核实 2-处置中 3-已解除 4-不实事件;终态为 3、4';
- COMMENT ON COLUMN app_user.dis_event.verify_result IS '核实结论:0-真实 1-不实;仅 status in (1,4) 时有值';
- COMMENT ON COLUMN app_user.dis_event.verifier IS '核验人';
- COMMENT ON COLUMN app_user.dis_event.verify_time IS '核实时间';
- COMMENT ON COLUMN app_user.dis_event.verify_opinion IS '核实意见;判定为不实时填核销原因(字典 dis_event_false_reason)';
- COMMENT ON COLUMN app_user.dis_event.handler IS '责任处置人(后续工作催办的催办对象)';
- COMMENT ON COLUMN app_user.dis_event.handler_phone IS '责任处置人联系电话';
- COMMENT ON COLUMN app_user.dis_event.department IS '责任单位 / 转接接收部门';
- COMMENT ON COLUMN app_user.dis_event.dispose_time IS '开始处置时间(status 1→2 时写入)';
- COMMENT ON COLUMN app_user.dis_event.release_time IS '解除时间(status 2→3 时写入)';
- COMMENT ON COLUMN app_user.dis_event.release_reason IS '解除原因:字典 dis_event_release_reason';
- COMMENT ON COLUMN app_user.dis_event.release_note IS '解除说明 / 处置结果补充';
- COMMENT ON COLUMN app_user.dis_event.last_visit_time IS '最近回访时间(取最近一次处置跟踪的跟踪时间)';
- COMMENT ON COLUMN app_user.dis_event.next_visit_time IS '下次回访时间(取最近一次处置跟踪填写的值)';
- COMMENT ON COLUMN app_user.dis_event.need_upgrade IS '是否需要升级:字典 dis_yes_no(0-否 1-是),取最近一次处置跟踪填写的值';
- COMMENT ON COLUMN app_user.dis_event.del_flag IS '删除标志(0=正常 2=删除)';
- ALTER TABLE app_user.dis_event
- DROP COLUMN IF EXISTS reporter,
- DROP COLUMN IF EXISTS reporter_id,
- DROP COLUMN IF EXISTS report_time,
- DROP COLUMN IF EXISTS create_by,
- DROP COLUMN IF EXISTS update_by,
- DROP COLUMN IF EXISTS loss_amount,
- DROP COLUMN IF EXISTS plan_id,
- DROP COLUMN IF EXISTS event_type,
- DROP COLUMN IF EXISTS event_region,
- DROP COLUMN IF EXISTS before_url,
- DROP COLUMN IF EXISTS after_url;
- CREATE UNIQUE INDEX IF NOT EXISTS uk_dis_event_no ON app_user.dis_event(event_no);
- CREATE INDEX IF NOT EXISTS idx_dis_event_status ON app_user.dis_event(status);
- CREATE INDEX IF NOT EXISTS idx_dis_event_create_time ON app_user.dis_event(create_time DESC);
- CREATE INDEX IF NOT EXISTS idx_dis_event_source ON app_user.dis_event(event_source);
- CREATE INDEX IF NOT EXISTS idx_dis_event_level ON app_user.dis_event(event_level);
- -- ---------------------------------------------------------------------
- -- 1.2 dis_event_log 事件日志表
- -- 一张表承载全部环节留痕:接报登记 / 初判核实 / 不实核销 / 电话转接 /
- -- 上报报送 / 开始处置 / 处置跟踪 / 事件解除 / 工作催办 / 信息修改。
- -- 替代旧 dis_event_transfer_log + dis_event_track_log + dis_event_urge_detail。
- -- 日志完全由业务代码写入,不使用触发器/自定义函数。
- -- ---------------------------------------------------------------------
- CREATE TABLE IF NOT EXISTS app_user.dis_event_log (
- id int8 GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
- event_id int8 NOT NULL,
- event_no varchar(32),
- oper_type int2 NOT NULL CHECK (oper_type BETWEEN 0 AND 9),
- oper_desc text,
- status_from int2,
- status_to int2,
- targets varchar(500),
- receiver_dept varchar(128),
- receiver_phone varchar(20),
- method varchar(20),
- urge_result varchar(20),
- trend varchar(20),
- need_upgrade int2,
- next_visit_time timestamp,
- attach_url text,
- oper_user_id int8,
- oper_user_name varchar(128),
- oper_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
- );
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS event_no varchar(32);
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS oper_desc text;
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS status_from int2;
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS status_to int2;
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS targets varchar(500);
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS receiver_dept varchar(128);
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS receiver_phone varchar(20);
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS method varchar(20);
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS urge_result varchar(20);
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS trend varchar(20);
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS need_upgrade int2;
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS next_visit_time timestamp;
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS attach_url text;
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS oper_user_id int8;
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS oper_user_name varchar(128);
- ALTER TABLE app_user.dis_event_log ADD COLUMN IF NOT EXISTS oper_time timestamp DEFAULT CURRENT_TIMESTAMP;
- COMMENT ON TABLE app_user.dis_event_log IS '应急事件操作日志:一个事件 N 行,记录全部环节动作与状态变更轨迹;仅由业务代码写入';
- COMMENT ON COLUMN app_user.dis_event_log.event_id IS '关联 dis_event.id';
- COMMENT ON COLUMN app_user.dis_event_log.event_no IS '事件编号(冗余,便于按编号单独查日志)';
- COMMENT ON COLUMN app_user.dis_event_log.oper_type IS 'EventLogOperTypeEnum:0-接报登记 1-初判核实 2-不实核销 3-电话转接 4-上报报送 5-开始处置 6-处置跟踪 7-事件解除 8-工作催办 9-信息修改';
- COMMENT ON COLUMN app_user.dis_event_log.oper_desc IS '操作说明/备注:跟踪内容、催办内容、核实意见、解除说明等';
- COMMENT ON COLUMN app_user.dis_event_log.status_from IS '变更前事件状态;不改状态的动作为 NULL';
- COMMENT ON COLUMN app_user.dis_event_log.status_to IS '变更后事件状态;不改状态的动作为 NULL';
- COMMENT ON COLUMN app_user.dis_event_log.targets IS '操作对象:转接/报送部门名称(多个逗号分隔);工作催办时填目标接收人';
- COMMENT ON COLUMN app_user.dis_event_log.receiver_dept IS '催办接收部门(oper_type=8)';
- COMMENT ON COLUMN app_user.dis_event_log.receiver_phone IS '催办接收人电话(oper_type=8)';
- COMMENT ON COLUMN app_user.dis_event_log.method IS '催办方式:字典 dis_event_urge_method(oper_type=8)';
- COMMENT ON COLUMN app_user.dis_event_log.urge_result IS '催办结果:字典 dis_event_urge_result(oper_type=8)';
- COMMENT ON COLUMN app_user.dis_event_log.trend IS '态势评估:字典 dis_event_trend(oper_type=6 处置跟踪)';
- COMMENT ON COLUMN app_user.dis_event_log.need_upgrade IS '是否需要升级:字典 dis_yes_no(oper_type=6 处置跟踪)';
- COMMENT ON COLUMN app_user.dis_event_log.next_visit_time IS '下次回访时间(oper_type=6 处置跟踪)';
- COMMENT ON COLUMN app_user.dis_event_log.attach_url IS '附件URL,多个使用逗号分隔';
- COMMENT ON COLUMN app_user.dis_event_log.oper_user_id IS '操作人ID,系统操作可为空';
- COMMENT ON COLUMN app_user.dis_event_log.oper_user_name IS '操作人昵称(sys_user.nick_name);自动操作使用系统名称';
- COMMENT ON COLUMN app_user.dis_event_log.oper_time IS '操作时间';
- CREATE INDEX IF NOT EXISTS idx_dis_event_log_event ON app_user.dis_event_log(event_id, oper_time, id);
- CREATE INDEX IF NOT EXISTS idx_dis_event_log_type ON app_user.dis_event_log(oper_type);
- CREATE INDEX IF NOT EXISTS idx_dis_event_log_no ON app_user.dis_event_log(event_no);
- -- =====================================================================
- -- 二、预案域(编辑与审批合并为同一套数据)
- -- =====================================================================
- -- ---------------------------------------------------------------------
- -- 2.1 dis_plan 预案主表
- -- ---------------------------------------------------------------------
- CREATE SEQUENCE IF NOT EXISTS app_user.dis_plan_id_seq
- START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
- CREATE TABLE IF NOT EXISTS app_user.dis_plan (
- id int8 NOT NULL DEFAULT nextval('app_user.dis_plan_id_seq'::regclass) PRIMARY KEY,
- plan_no varchar(32),
- plan_name varchar(200) NOT NULL,
- plan_type varchar(20),
- plan_level varchar(20),
- compile_unit varchar(128),
- publish_unit varchar(128),
- publish_date varchar(20),
- is_template int2 NOT NULL DEFAULT 0,
- version varchar(20),
- content text,
- approve_result varchar(20),
- approve_time timestamp,
- approve_note varchar(500),
- create_by varchar(64),
- create_time timestamp DEFAULT CURRENT_TIMESTAMP,
- update_by varchar(64),
- update_time timestamp DEFAULT CURRENT_TIMESTAMP,
- del_flag char(1) DEFAULT '0'
- );
- -- 不在此处执行 OWNED BY:存量 Kingbase 表的 id 可能仍是 Identity,
- -- Identity 列不能直接重新绑定序列。存量库请执行对应的序列迁移脚本
- --(例如 dispatch_plan_version_id_sequence.sql)后再绑定所有权。
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS plan_no varchar(32);
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS plan_type varchar(20);
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS plan_level varchar(20);
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS compile_unit varchar(128);
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS publish_unit varchar(128);
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS publish_date varchar(20);
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS is_template int2 DEFAULT 0;
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS status int2 DEFAULT 0;
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS version varchar(20);
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS content text;
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS approve_result varchar(20);
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS approve_time timestamp;
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS approve_note varchar(500);
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS create_by varchar(64);
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS create_time timestamp DEFAULT CURRENT_TIMESTAMP;
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS update_by varchar(64);
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS update_time timestamp DEFAULT CURRENT_TIMESTAMP;
- ALTER TABLE app_user.dis_plan ADD COLUMN IF NOT EXISTS del_flag char(1) DEFAULT '0';
- -- 正文富文本承载图片附件,移除历史独立附件字段。
- ALTER TABLE app_user.dis_plan
- DROP COLUMN IF EXISTS attach_name,
- DROP COLUMN IF EXISTS attach_path;
- COMMENT ON TABLE app_user.dis_plan IS '应急预案主表:预案编辑与预案审批共用同一套数据,状态流转 草稿→待审核→已通过/已驳回';
- COMMENT ON COLUMN app_user.dis_plan.plan_no IS '预案编号(业务序号:YA+yyyyMMdd+4位随机)';
- COMMENT ON COLUMN app_user.dis_plan.plan_name IS '预案名称';
- COMMENT ON COLUMN app_user.dis_plan.plan_type IS '预案类型:字典 dis_plan_type(综合/专项/现场处置)';
- COMMENT ON COLUMN app_user.dis_plan.plan_level IS '预案等级:字典 dis_plan_level(Ⅰ级/Ⅱ级/Ⅲ级)';
- COMMENT ON COLUMN app_user.dis_plan.compile_unit IS '编制单位';
- COMMENT ON COLUMN app_user.dis_plan.publish_unit IS '发布单位';
- COMMENT ON COLUMN app_user.dis_plan.publish_date IS '发布日期';
- COMMENT ON COLUMN app_user.dis_plan.is_template IS '是否预案模板:0-否 1-是(新建预案时可套用模板的章节结构)';
- COMMENT ON COLUMN app_user.dis_plan.status IS 'PlanStatusEnum:0-草稿 1-待审核 2-已通过 3-已驳回';
- COMMENT ON COLUMN app_user.dis_plan.version IS '当前生效版本号;尚未审批通过时为空';
- COMMENT ON COLUMN app_user.dis_plan.content IS '当前正文(富文本 HTML);生效正文以版本表快照为准';
- COMMENT ON COLUMN app_user.dis_plan.approve_result IS '审批结果:通过 / 不通过';
- COMMENT ON COLUMN app_user.dis_plan.approve_time IS '审批完成时间';
- COMMENT ON COLUMN app_user.dis_plan.approve_note IS '审批意见;不通过时为驳回原因(必填)';
- CREATE UNIQUE INDEX IF NOT EXISTS uk_dis_plan_no ON app_user.dis_plan(plan_no);
- CREATE INDEX IF NOT EXISTS idx_dis_plan_status ON app_user.dis_plan(status);
- CREATE INDEX IF NOT EXISTS idx_dis_plan_template ON app_user.dis_plan(is_template);
- -- ---------------------------------------------------------------------
- -- 2.2 dis_plan_version 预案版本快照表
- -- ---------------------------------------------------------------------
- CREATE SEQUENCE IF NOT EXISTS app_user.dis_plan_version_id_seq
- START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
- CREATE TABLE IF NOT EXISTS app_user.dis_plan_version (
- id int8 NOT NULL DEFAULT nextval('app_user.dis_plan_version_id_seq'::regclass) PRIMARY KEY,
- plan_id int8 NOT NULL,
- plan_no varchar(32),
- version varchar(20) NOT NULL,
- content text,
- change_note varchar(500),
- editor varchar(64),
- edit_time timestamp,
- ver_status int2 NOT NULL DEFAULT 0
- );
- ALTER TABLE app_user.dis_plan_version ADD COLUMN IF NOT EXISTS plan_no varchar(32);
- ALTER TABLE app_user.dis_plan_version ADD COLUMN IF NOT EXISTS content text;
- ALTER TABLE app_user.dis_plan_version ADD COLUMN IF NOT EXISTS change_note varchar(500);
- ALTER TABLE app_user.dis_plan_version ADD COLUMN IF NOT EXISTS editor varchar(64);
- ALTER TABLE app_user.dis_plan_version ADD COLUMN IF NOT EXISTS edit_time timestamp;
- ALTER TABLE app_user.dis_plan_version ADD COLUMN IF NOT EXISTS ver_status int2 DEFAULT 0;
- ALTER TABLE app_user.dis_plan_version
- DROP COLUMN IF EXISTS attach_name,
- DROP COLUMN IF EXISTS attach_path;
- COMMENT ON TABLE app_user.dis_plan_version IS '应急预案版本快照:审核通过后的正文落地为版本;修订已通过预案先生成「审核中」候选版本,旧版本仍生效';
- COMMENT ON COLUMN app_user.dis_plan_version.plan_id IS '关联 dis_plan.id';
- COMMENT ON COLUMN app_user.dis_plan_version.version IS '版本号,如 v3.1';
- COMMENT ON COLUMN app_user.dis_plan_version.content IS '该版本正文快照(富文本 HTML)';
- COMMENT ON COLUMN app_user.dis_plan_version.change_note IS '变更说明;修订已通过预案时必填';
- COMMENT ON COLUMN app_user.dis_plan_version.editor IS '修订人';
- COMMENT ON COLUMN app_user.dis_plan_version.edit_time IS '修订时间';
- COMMENT ON COLUMN app_user.dis_plan_version.ver_status IS 'PlanVersionStatusEnum:0-历史 1-当前生效 2-审核中 3-已驳回';
- CREATE INDEX IF NOT EXISTS idx_dis_plan_version_plan ON app_user.dis_plan_version(plan_id, ver_status);
- CREATE UNIQUE INDEX IF NOT EXISTS uk_dis_plan_version ON app_user.dis_plan_version(plan_id, version);
- -- ---------------------------------------------------------------------
- -- 2.3 dis_plan_log 预案操作日志表
- -- 替代旧 dis_plan_approval + dis_plan_approval_step(原型审批为单环节)
- -- ---------------------------------------------------------------------
- CREATE SEQUENCE IF NOT EXISTS app_user.dis_plan_log_id_seq
- START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
- CREATE TABLE IF NOT EXISTS app_user.dis_plan_log (
- id int8 NOT NULL DEFAULT nextval('app_user.dis_plan_log_id_seq'::regclass) PRIMARY KEY,
- plan_id int8 NOT NULL,
- plan_no varchar(32),
- oper_type int2 NOT NULL CHECK (oper_type BETWEEN 0 AND 4),
- oper_desc text,
- version varchar(20),
- status_from int2,
- status_to int2,
- oper_user_id int8,
- oper_user_name varchar(128),
- oper_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
- );
- ALTER TABLE app_user.dis_plan_log ADD COLUMN IF NOT EXISTS plan_no varchar(32);
- ALTER TABLE app_user.dis_plan_log ADD COLUMN IF NOT EXISTS oper_desc text;
- ALTER TABLE app_user.dis_plan_log ADD COLUMN IF NOT EXISTS version varchar(20);
- ALTER TABLE app_user.dis_plan_log ADD COLUMN IF NOT EXISTS status_from int2;
- ALTER TABLE app_user.dis_plan_log ADD COLUMN IF NOT EXISTS status_to int2;
- ALTER TABLE app_user.dis_plan_log ADD COLUMN IF NOT EXISTS oper_user_id int8;
- ALTER TABLE app_user.dis_plan_log ADD COLUMN IF NOT EXISTS oper_user_name varchar(128);
- ALTER TABLE app_user.dis_plan_log ADD COLUMN IF NOT EXISTS oper_time timestamp DEFAULT CURRENT_TIMESTAMP;
- COMMENT ON TABLE app_user.dis_plan_log IS '应急预案操作日志:新建/提交审核/审批通过/审批驳回/修订全部留痕';
- COMMENT ON COLUMN app_user.dis_plan_log.oper_type IS 'PlanLogOperTypeEnum:0-新建 1-提交审核 2-审批通过 3-审批驳回 4-修订';
- COMMENT ON COLUMN app_user.dis_plan_log.oper_desc IS '操作说明/审批意见';
- COMMENT ON COLUMN app_user.dis_plan_log.version IS '本次操作涉及的版本号';
- COMMENT ON COLUMN app_user.dis_plan_log.status_from IS '变更前预案状态';
- COMMENT ON COLUMN app_user.dis_plan_log.status_to IS '变更后预案状态';
- CREATE INDEX IF NOT EXISTS idx_dis_plan_log_plan ON app_user.dis_plan_log(plan_id, oper_time, id);
- -- ---------------------------------------------------------------------
- -- 2.4 dis_plan_library 数字预案库字段收敛
- -- event_type / event_level 与 dis_plan 使用同一套字典编码;
- -- event_region、topic、plan_summary 已不再参与模板匹配,直接移除。
- -- 创建人统一使用 create_user_id,移除 create_by 登录名快照。
- -- ---------------------------------------------------------------------
- ALTER TABLE app_user.dis_plan_library
- ALTER COLUMN event_type TYPE varchar(20),
- ALTER COLUMN event_level TYPE varchar(20);
- -- 将历史上保存的中文标签转换为 dis_plan_type / dis_plan_level 的字典值。
- UPDATE app_user.dis_plan_library
- SET event_type = CASE trim(event_type)
- WHEN '综合' THEN '1'
- WHEN '专项' THEN '2'
- WHEN '现场处置' THEN '3'
- WHEN '供水' THEN '2'
- WHEN '燃气' THEN '2'
- WHEN '排水' THEN '2'
- ELSE event_type END,
- event_level = CASE trim(event_level)
- WHEN 'Ⅰ级' THEN '1'
- WHEN 'I级' THEN '1'
- WHEN '1级' THEN '1'
- WHEN 'Ⅱ级' THEN '2'
- WHEN 'II级' THEN '2'
- WHEN '2级' THEN '2'
- WHEN 'Ⅲ级' THEN '3'
- WHEN 'III级' THEN '3'
- WHEN '3级' THEN '3'
- ELSE event_level END;
- ALTER TABLE app_user.dis_plan_library
- DROP COLUMN IF EXISTS event_region,
- DROP COLUMN IF EXISTS topic,
- DROP COLUMN IF EXISTS plan_summary,
- DROP COLUMN IF EXISTS create_by;
- COMMENT ON COLUMN app_user.dis_plan_library.event_type
- IS '预案类型:字典 dis_plan_type,与 dis_plan.plan_type 使用同一编码';
- COMMENT ON COLUMN app_user.dis_plan_library.event_level
- IS '预案等级:字典 dis_plan_level,与 dis_plan.plan_level 使用同一编码';
- CREATE INDEX IF NOT EXISTS idx_dis_plan_library_type_level
- ON app_user.dis_plan_library(event_type, event_level);
- -- =====================================================================
- -- 三、事件分级(保留原表,字段字典化 + 补业务编号)
- -- =====================================================================
- CREATE SEQUENCE IF NOT EXISTS app_user.dis_event_grade_id_seq
- START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
- CREATE TABLE IF NOT EXISTS app_user.dis_event_grade (
- id int8 NOT NULL DEFAULT nextval('app_user.dis_event_grade_id_seq'::regclass) PRIMARY KEY,
- event_category varchar(20),
- event_level varchar(20),
- criteria text,
- response varchar(500),
- remark varchar(500),
- create_time timestamp DEFAULT CURRENT_TIMESTAMP,
- update_time timestamp DEFAULT CURRENT_TIMESTAMP,
- del_flag char(1) DEFAULT '0'
- );
- ALTER TABLE app_user.dis_event_grade ADD COLUMN IF NOT EXISTS event_category varchar(20);
- ALTER TABLE app_user.dis_event_grade ADD COLUMN IF NOT EXISTS event_level varchar(20);
- ALTER TABLE app_user.dis_event_grade ADD COLUMN IF NOT EXISTS criteria text;
- ALTER TABLE app_user.dis_event_grade ADD COLUMN IF NOT EXISTS response varchar(500);
- ALTER TABLE app_user.dis_event_grade ADD COLUMN IF NOT EXISTS remark varchar(500);
- ALTER TABLE app_user.dis_event_grade ADD COLUMN IF NOT EXISTS create_time timestamp DEFAULT CURRENT_TIMESTAMP;
- ALTER TABLE app_user.dis_event_grade ADD COLUMN IF NOT EXISTS update_time timestamp DEFAULT CURRENT_TIMESTAMP;
- ALTER TABLE app_user.dis_event_grade ADD COLUMN IF NOT EXISTS del_flag char(1) DEFAULT '0';
- -- 分级标准不再单独保存管网类型,清理存量库中的历史遗留列。
- ALTER TABLE app_user.dis_event_grade DROP COLUMN IF EXISTS event_type;
- ALTER TABLE app_user.dis_event_grade DROP COLUMN IF EXISTS status;
- ALTER TABLE app_user.dis_event_grade DROP COLUMN IF EXISTS create_by;
- ALTER TABLE app_user.dis_event_grade DROP COLUMN IF EXISTS update_by;
- COMMENT ON TABLE app_user.dis_event_grade IS '应急事件分级分类标准,同时作为初判核实的辅助核实依据';
- COMMENT ON COLUMN app_user.dis_event_grade.event_category IS '事件类别:字典 dis_event_category';
- COMMENT ON COLUMN app_user.dis_event_grade.event_level IS '事件等级:字典 dis_event_level';
- ALTER TABLE app_user.dis_event_grade DROP COLUMN IF EXISTS sub_category;
- ALTER TABLE app_user.dis_event_grade DROP COLUMN IF EXISTS scenario;
- COMMENT ON COLUMN app_user.dis_event_grade.criteria IS '分级分类判断标准';
- COMMENT ON COLUMN app_user.dis_event_grade.response IS '响应要求,如:30 分钟内启动预案';
- CREATE INDEX IF NOT EXISTS idx_dis_event_grade_query ON app_user.dis_event_grade(event_category, event_level);
- -- =====================================================================
- -- 四、存量数据迁移 —— 见独立文件 dispatch_refactor_migrate.sql
- -- 本脚本只负责建表 / 加列 / 字典,可安全用于全新库与既有库。
- -- 存量数据搬迁依赖旧表旧列(source / level / category / dis_event_report 等),
- -- 在新库上必然因缺列缺表报错,因此单独拆出,只在有存量数据的环境执行。
- -- =====================================================================
- -- =====================================================================
- -- 五、字典(sys_dict_type / sys_dict_data)
- -- 编码口径:dict_value 存编码,dict_label 存中文,list_class 配徽标色。
- -- =====================================================================
- DELETE FROM app_user.sys_dict_data
- WHERE dict_type IN ('dis_event_source','dis_event_channel','dis_event_category',
- 'dis_event_level','dis_event_urge_method','dis_event_urge_result',
- 'dis_event_trend','dis_event_false_reason','dis_event_release_reason',
- 'dis_transfer_dept','dis_report_target',
- 'dis_plan_type','dis_plan_level','dis_yes_no');
- DELETE FROM app_user.sys_dict_type
- WHERE dict_type IN ('dis_event_type', 'dis_event_region');
- INSERT INTO app_user.sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
- SELECT v.dict_name, v.dict_type, '0', 'admin', CURRENT_TIMESTAMP, v.remark
- FROM (VALUES
- ('应急事件来源', 'dis_event_source', '应急事件来源:1巡查上报 2呼叫中心 3视频监控 4上级下达'),
- ('应急事件来源渠道', 'dis_event_channel', '应急事件来源渠道'),
- ('应急事件类别', 'dis_event_category', '应急事件类别:故障类别'),
- ('应急事件等级', 'dis_event_level', '应急事件等级:1Ⅰ级紧急 2Ⅱ级较大 3Ⅲ级一般'),
- ('工作催办方式', 'dis_event_urge_method', '工作催办方式:1电话 2短信 3系统消息'),
- ('工作催办结果', 'dis_event_urge_result', '工作催办结果:0未反馈 1已反馈'),
- ('处置态势评估', 'dis_event_trend', '处置跟踪的态势评估:1趋于平稳 2仍在发展 3明显恶化'),
- ('不实事件核销原因', 'dis_event_false_reason', '初判核实判定不实时的核销原因'),
- ('事件解除原因', 'dis_event_release_reason', '事件解除原因'),
- ('转接报送部门', 'dis_transfer_dept', '电话转接 / 上报报送的接收部门'),
- ('上报报送层级', 'dis_report_target', '上报报送的层级对象'),
- ('应急预案类型', 'dis_plan_type', '应急预案类型:1综合 2专项 3现场处置'),
- ('应急预案等级', 'dis_plan_level', '应急预案等级:1Ⅰ级 2Ⅱ级 3Ⅲ级'),
- ('通用是否', 'dis_yes_no', '通用是否:0否 1是')
- ) AS v(dict_name, dict_type, remark)
- WHERE NOT EXISTS (SELECT 1 FROM app_user.sys_dict_type t WHERE t.dict_type = v.dict_type);
- INSERT INTO app_user.sys_dict_data
- (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
- VALUES
- -- 事件来源
- (1, '巡查上报', '1', 'dis_event_source', '', 'primary', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '应急事件来源:巡查上报'),
- (2, '呼叫中心', '2', 'dis_event_source', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '应急事件来源:呼叫中心'),
- (3, '视频监控', '3', 'dis_event_source', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '应急事件来源:视频监控'),
- (4, '上级下达', '4', 'dis_event_source', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '应急事件来源:上级下达'),
- -- 来源渠道
- (1, '12345市民热线', '1', 'dis_event_channel', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '来源渠道:12345市民热线'),
- (2, '移动终端巡查系统', '2', 'dis_event_channel', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '来源渠道:移动终端巡查系统'),
- (3, '省应急管理厅平台', '3', 'dis_event_channel', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '来源渠道:省应急管理厅平台'),
- (4, '交警监控共享平台', '4', 'dis_event_channel', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '来源渠道:交警监控共享平台'),
- (5, '其他', '9', 'dis_event_channel', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '来源渠道:其他'),
- -- 管网类型
- -- 事件类别
- (1, '管道泄漏', '1', 'dis_event_category', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '事件类别:管道泄漏'),
- (2, '路面积水', '2', 'dis_event_category', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '事件类别:路面积水'),
- (3, '设施损坏', '3', 'dis_event_category', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '事件类别:设施损坏'),
- (4, '管道堵塞', '4', 'dis_event_category', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '事件类别:管道堵塞'),
- -- 事件等级(3 级口径)
- (1, 'Ⅰ级(紧急)', '1', 'dis_event_level', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '事件等级:Ⅰ级紧急'),
- (2, 'Ⅱ级(较大)', '2', 'dis_event_level', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '事件等级:Ⅱ级较大'),
- (3, 'Ⅲ级(一般)', '3', 'dis_event_level', '', 'info', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '事件等级:Ⅲ级一般'),
- -- 发生区域(按实际片区维护,以下为占位默认值)
- -- 催办方式
- (1, '电话', '1', 'dis_event_urge_method', '', '', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '催办方式:电话'),
- (2, '短信', '2', 'dis_event_urge_method', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '催办方式:短信'),
- (3, '系统消息', '3', 'dis_event_urge_method', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '催办方式:系统消息'),
- -- 催办结果
- (1, '未反馈', '0', 'dis_event_urge_result', '', 'info', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '催办结果:未反馈'),
- (2, '已反馈', '1', 'dis_event_urge_result', '', 'success','N', '0', 'admin', CURRENT_TIMESTAMP, '催办结果:已反馈'),
- -- 态势评估
- (1, '趋于平稳', '1', 'dis_event_trend', '', 'success', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '态势评估:趋于平稳'),
- (2, '仍在发展', '2', 'dis_event_trend', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '态势评估:仍在发展'),
- (3, '明显恶化', '3', 'dis_event_trend', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '态势评估:明显恶化'),
- -- 不实核销原因
- (1, '误报', '1', 'dis_event_false_reason', '', 'info', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '核销原因:误报'),
- (2, '重复上报', '2', 'dis_event_false_reason', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '核销原因:重复上报'),
- (3, '演练测试', '3', 'dis_event_false_reason', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '核销原因:演练测试'),
- (4, '其他', '9', 'dis_event_false_reason', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '核销原因:其他'),
- -- 解除原因
- (1, '事件已处置完成', '1', 'dis_event_release_reason', '', 'success', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '解除原因:事件已处置完成'),
- (2, '事件不存在', '2', 'dis_event_release_reason', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '解除原因:事件不存在'),
- (3, '误报', '3', 'dis_event_release_reason', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '解除原因:误报'),
- (4, '其他原因', '9', 'dis_event_release_reason', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '解除原因:其他原因'),
- -- 转接报送部门(转接弹窗多选、列表按责任单位筛选共用)
- (1, '市政部门', '1', 'dis_transfer_dept', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '转接部门:市政部门'),
- (2, '消防部门', '2', 'dis_transfer_dept', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '转接部门:消防部门'),
- (3, '排水管理部', '3', 'dis_transfer_dept', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '转接部门:排水管理部'),
- (4, '管网维护部', '4', 'dis_transfer_dept', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '转接部门:管网维护部'),
- (5, '设备运维部', '5', 'dis_transfer_dept', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '转接部门:设备运维部'),
- (6, '安全管理部', '6', 'dis_transfer_dept', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '转接部门:安全管理部'),
- -- 上报报送层级(报送弹窗多选)
- (1, '区级应急办', '1', 'dis_report_target', '', '', 'N', '0', 'admin', CURRENT_TIMESTAMP, '报送层级:区级应急办'),
- (2, '市级应急办', '2', 'dis_report_target', '', 'primary', 'N', '0', 'admin', CURRENT_TIMESTAMP, '报送层级:市级应急办'),
- (3, '省级应急厅', '3', 'dis_report_target', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '报送层级:省级应急厅'),
- (4, '国务院应急管理部', '4', 'dis_report_target', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '报送层级:国务院应急管理部'),
- -- 预案类型
- (1, '综合', '1', 'dis_plan_type', '', 'primary', 'N', '0', 'admin', CURRENT_TIMESTAMP, '预案类型:综合'),
- (2, '专项', '2', 'dis_plan_type', '', 'success', 'N', '0', 'admin', CURRENT_TIMESTAMP, '预案类型:专项'),
- (3, '现场处置', '3', 'dis_plan_type', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '预案类型:现场处置'),
- -- 预案等级
- (1, 'Ⅰ级', '1', 'dis_plan_level', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '预案等级:Ⅰ级'),
- (2, 'Ⅱ级', '2', 'dis_plan_level', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '预案等级:Ⅱ级'),
- (3, 'Ⅲ级', '3', 'dis_plan_level', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, '预案等级:Ⅲ级'),
- -- 通用是否
- (1, '否', '0', 'dis_yes_no', '', 'info', 'Y', '0', 'admin', CURRENT_TIMESTAMP, '通用是否:否'),
- (2, '是', '1', 'dis_yes_no', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '通用是否:是');
- COMMIT;
- -- =====================================================================
- -- 六、执行后自检
- -- =====================================================================
- -- 1) 新表是否齐全(用 to_regclass,避免 information_schema.tables 触发
- -- sys_freespace 权限校验;在部分 KingbaseES 实例上普通账号会报权限错误)
- -- SELECT to_regclass('app_user.dis_event'), to_regclass('app_user.dis_event_log'),
- -- to_regclass('app_user.dis_event_grade'), to_regclass('app_user.dis_plan'),
- -- to_regclass('app_user.dis_plan_version'), to_regclass('app_user.dis_plan_log');
- -- 2) 字典是否写入
- -- SELECT dict_type, count(*) FROM app_user.sys_dict_data
- -- WHERE dict_type LIKE 'dis_%' GROUP BY dict_type ORDER BY dict_type;
- -- 3) 事件状态分布是否符合预期(只应是 0~4)
- -- SELECT status, count(*) FROM app_user.dis_event GROUP BY status ORDER BY status;
- -- 4) 日志是否迁移到位
- -- SELECT oper_type, count(*) FROM app_user.dis_event_log GROUP BY oper_type ORDER BY oper_type;
|