-- 已发布原生表单新增持久字段须显式迁移;不创建原生业务主子表、不插入业务记录。 ALTER TABLE dms_wenjian_bupingheng_dengji ADD COLUMN IF NOT EXISTS chongda_fasong_id varchar(64); ALTER TABLE dms_wenjian_bupingheng_dengji ADD COLUMN IF NOT EXISTS zhixing_ren_id varchar(64); COMMENT ON COLUMN dms_wenjian_bupingheng_dengji.chongda_fasong_id IS '重打发送关联H'; COMMENT ON COLUMN dms_wenjian_bupingheng_dengji.zhixing_ren_id IS '措施执行人'; -- 包括软删除记录:同一成功事件不得再次生成原生登记。 CREATE UNIQUE INDEX IF NOT EXISTS uq_dms_bupingheng_chongda ON dms_wenjian_bupingheng_dengji(f_tenant_id,chongda_fasong_id) WHERE chongda_fasong_id IS NOT NULL AND chongda_fasong_id <> ''; CREATE TABLE IF NOT EXISTS dms_wenjian_chongda_fasong ( f_id varchar(64) NOT NULL, f_tenant_id varchar(64) NOT NULL, dayin_jilu_id varchar(64) NOT NULL, dayin_renwu_id varchar(64) NOT NULL, wenjian_banben_id varchar(64) NOT NULL, fasong_ren_id varchar(64) NOT NULL, dayin_fenshu integer NOT NULL CHECK (dayin_fenshu=1), fasong_zhuangtai varchar(16) NOT NULL CHECK (fasong_zhuangtai IN ('OPEN','CONFIRMED','CLOSED','CANCELLED')), pici_neirong text NOT NULL DEFAULT '[]', haoma_neirong text NOT NULL, yuanyin varchar(255) NOT NULL CHECK (length(btrim(yuanyin))>0), biz_sign varchar(64) NOT NULL, chuangjian_shijian timestamp NOT NULL, fasong_chenggong_shijian timestamp, dengji_id varchar(64), zong_yeshu integer CHECK (zong_yeshu BETWEEN 1 AND 10000), quxiao_shijian timestamp, PRIMARY KEY (f_tenant_id,f_id), UNIQUE (f_tenant_id,biz_sign), CHECK (fasong_zhuangtai IN ('OPEN','CANCELLED') OR fasong_chenggong_shijian IS NOT NULL), CHECK ((fasong_zhuangtai='CANCELLED') = (quxiao_shijian IS NOT NULL)), CHECK (fasong_zhuangtai<>'CLOSED' OR dengji_id IS NOT NULL) ); COMMENT ON TABLE dms_wenjian_chongda_fasong IS '原流水重打发送状态;仅技术凭据,原生表单负责不平衡主子表'; CREATE UNIQUE INDEX IF NOT EXISTS uq_dms_chongda_active ON dms_wenjian_chongda_fasong(f_tenant_id,dayin_jilu_id) WHERE fasong_zhuangtai IN ('OPEN','CONFIRMED'); CREATE INDEX IF NOT EXISTS ix_dms_chongda_record ON dms_wenjian_chongda_fasong(f_tenant_id,dayin_jilu_id,fasong_zhuangtai);