CREATE TABLE `efcode_cp_plan`
(
    `id`                      varchar(50)   NOT NULL COMMENT '主键ID' primary key,
    `plan_type`               tinyint       NOT NULL COMMENT '计划类别:1=日常计划,2=专项计划',

    `plan_date`               datetime      NOT NULL COMMENT '计划执行日期（如 2025-05-08）',
    `plan_time`               tinyint       NOT NULL COMMENT '执行时段:1=上午,2=下午,3=其他',

    `plan_actual_date`        datetime      NOT NULL COMMENT '经过预约后最终的计划执行日期（如 2025-05-08）',
    `plan_actual_time`        tinyint       NOT NULL COMMENT '经过预约后最终的执行时段:1=上午,2=下午,3=其他',

    `enforce_content`         varchar(1000) NOT NULL COMMENT '执法事项（最多1000字）',

    `enterprise_name`         varchar(200)  NOT NULL COMMENT '被检查企业/机构名称',
    `enterprise_number`       varchar(200)  NOT NULL COMMENT '被检查企业/机构信用代码',
    `enterprise_id`           varchar(200)  NOT NULL COMMENT '被检查企业/机构Id',

    `enforce_user_names`      varchar(512)  NOT NULL COMMENT '执法人员姓名（多个逗号分隔）',
    `enforce_user_ids`        varchar(512)  NOT NULL COMMENT '执法人员姓名（多个逗号分隔）',
    `enforce_user_codes`      varchar(512)  NOT NULL COMMENT '执法人员证件编号（多个逗号分隔）',

    `is_public`               tinyint       NOT NULL DEFAULT 1 COMMENT '是否公开:1=是,0=否',
    `is_union`                tinyint       NOT NULL DEFAULT 1 COMMENT '是否联合执法:1=是,0=否',
    `union_bureau_dept_names` varchar(500)           DEFAULT NULL COMMENT '联合执法单位（多个逗号分隔）',

    `reserve_status`          tinyint       NOT NULL DEFAULT 0 COMMENT '预约状态:0=草稿,1=待预约,2=预约中,3=预约完成',
    `system_reserved`         tinyint       NOT NULL DEFAULT 0 COMMENT '是否已经经过系统推荐预约:1=是,0=否',
    `manual_reserved`         tinyint       NOT NULL DEFAULT 0 COMMENT '是否已经经过手动预约:1=是,0=否',
    `edit_enable`             tinyint       NOT NULL DEFAULT 1 COMMENT '是否可以修改:1=是,0=否',

    `bureau_dept_id`          varchar(50)   NOT NULL COMMENT '执法单位ID',
    `bureau_dept_name`        varchar(100)  NOT NULL COMMENT '执法单位名称',
    `organ_id`                varchar(50)   NOT NULL COMMENT '市认证机构ID',
    `organ_name`              varchar(100)  NOT NULL COMMENT '市认证机构名称',
    `dept_id`                 varchar(50)   NOT NULL COMMENT '市认证部门ID',
    `dept_name`               varchar(100)  NOT NULL COMMENT '市认证部门名称',

    `create_by`               varchar(64)            DEFAULT '' COMMENT '创建者',
    `create_dept`             varchar(64)            DEFAULT NULL COMMENT '创建人部门',
    `update_by`               varchar(64)            DEFAULT '' COMMENT '更新者',
    `create_time`             datetime               DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time`             datetime               DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_delete`               tinyint       NOT NULL DEFAULT 0 COMMENT '是否删除 0=否 1=是',
    `remark`                  varchar(500)           DEFAULT NULL COMMENT '备注',
    `my_remark`               varchar(500)           DEFAULT NULL COMMENT '私有备注',
    KEY                       `idx_dept_id` (`bureau_dept_id`),
    KEY                       `idx_reserve_status` (`reserve_status`)
) comment '行政执法检查计划-计划表' row_format = DYNAMIC;

CREATE TABLE `efcode_cp_task`
(
    `id`             varchar(50)  NOT NULL COMMENT '主键ID' primary key,
    `task_name`      varchar(200) NOT NULL COMMENT '任务名称',
    `bureau_dept_id` varchar(50)  NOT NULL COMMENT '执法单位ID',
    `create_by`      varchar(64) DEFAULT '' COMMENT '创建者',
    `create_dept`    varchar(64) DEFAULT NULL COMMENT '创建人部门',
    `update_by`      varchar(64) DEFAULT '' COMMENT '更新者',
    `create_time`    datetime    DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time`    datetime    DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) comment '行政执法检查计划-任务表' row_format = DYNAMIC;

CREATE TABLE `efcode_cp_plan_users`
(
    `id`          varchar(50)  NOT NULL COMMENT '主键ID' primary key,
    `plan_id`     varchar(50)  NOT NULL COMMENT '计划ID',
    `user_id`     varchar(50)  NOT NULL COMMENT '用户ID',
    `user_name`   varchar(100) NOT NULL COMMENT '用户名称',
    `create_by`   varchar(64) DEFAULT '' COMMENT '创建者',
    `create_dept` varchar(64) DEFAULT NULL COMMENT '创建人部门',
    `update_by`   varchar(64) DEFAULT '' COMMENT '更新者',
    `create_time` datetime    DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` datetime    DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) comment '行政执法检查计划-计划参与人员表' row_format = DYNAMIC;

CREATE TABLE `efcode_cp_reserve`
(
    `id`           varchar(50)  NOT NULL COMMENT '主键ID' primary key,
    `plan_id`      varchar(50)  NOT NULL COMMENT '计划ID',
    `reserve_time` datetime     NOT NULL COMMENT '预约时间',

    `op_status`    tinyint      NOT NULL COMMENT '操作状态' DEFAULT 3 COMMENT '操作状态:1=同意,2=拒绝,3=待确认,4=超期取消',
    `op_order`     int          NOT NULL COMMENT '联合时用户的操作顺序',
    `op_time`      datetime     NOT NULL COMMENT '联合时用户的操作时间',
    `op_message`   varchar(500) NOT NULL COMMENT '联合时用户输入的操作消息',
    `op_set_date`  datetime     NOT NULL COMMENT '联合时用户选择的操作时间',
    `op_set_time`  tinyint      NOT NULL COMMENT '执行时段:1=上午,2=下午,3=其他',

    `from`         tinyint      NOT NULL COMMENT '来自' COMMENT '来自:系统匹配=1,手动匹配=0',
    `create_by`    varchar(64) DEFAULT '' COMMENT '创建者',
    `create_dept`  varchar(64) DEFAULT NULL COMMENT '创建人部门',
    `update_by`    varchar(64) DEFAULT '' COMMENT '更新者',
    `create_time`  datetime    DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time`  datetime    DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) comment '行政执法检查计划-预约表' row_format = DYNAMIC;

CREATE TABLE `efcode_cp_notice`
(
    `id`                  varchar(50)   NOT NULL COMMENT '主键ID',
    `plan_id`             bigint                 DEFAULT NULL COMMENT '导入的计划ID（关联执法计划表）',
    `enforce_date`        varchar(16)   NOT NULL COMMENT '执法日期',
    `enforce_period`      tinyint       NOT NULL COMMENT '执法时段:1=上午,2=下午,3=其他',

    `bureau_dept_id`      varchar(50)   NOT NULL COMMENT '执法单位ID',
    `bureau_dept_name`    varchar(100)  NOT NULL COMMENT '执法单位名称',
    `organ_id`            varchar(50)   NOT NULL COMMENT '市认证机构ID',
    `organ_name`          varchar(100)  NOT NULL COMMENT '市认证机构名称',
    `dept_id`             varchar(50)   NOT NULL COMMENT '市认证部门ID',
    `dept_name`           varchar(100)  NOT NULL COMMENT '市认证部门名称',

    `enforce_user_names`  varchar(512)  NOT NULL COMMENT '执法人员姓名（多个逗号分隔）',
    `enforce_user_ids`    varchar(512)  NOT NULL COMMENT '执法人员姓名（多个逗号分隔）',
    `enforce_user_codes`  varchar(512)  NOT NULL COMMENT '执法人员证件编号（多个逗号分隔）',

    `enterprise_id`       varchar(50)   NOT NULL COMMENT '被检查企业ID',
    `enterprise_name`     varchar(200)  NOT NULL COMMENT '被检查企业名称',
    `enterprise_number`   varchar(32)            DEFAULT NULL COMMENT '企业统一社会信用代码',

    `contact_person`      varchar(100)  NOT NULL COMMENT '企业联系人',
    `contact_phone`       varchar(200)  NOT NULL COMMENT '企业联系电话',

    `enforce_content`     varchar(1000) NOT NULL COMMENT '执法事项',
    `enforce_requirement` varchar(1000) NOT NULL COMMENT '执法要求',
    `publish_time`        datetime               DEFAULT NULL COMMENT '预告发布时间',
    `status`              tinyint       NOT NULL DEFAULT 0 COMMENT '预告状态:0=草稿,1=已发布,2=已取消,3=已执行',
    `create_by`           varchar(64)            DEFAULT '' COMMENT '创建者',
    `create_dept`         varchar(64)            DEFAULT NULL COMMENT '创建人部门',
    `update_by`           varchar(64)            DEFAULT '' COMMENT '更新者',
    `create_time`         datetime               DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time`         datetime               DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_delete`           tinyint       NOT NULL DEFAULT 0 COMMENT '是否删除:0=否,1=是',
    `remark`              varchar(500)           DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`id`),
    KEY                   `idx_dept_id` (`dept_id`),
    KEY                   `idx_enterprise_id` (`enterprise_id`),
    KEY                   `idx_enterprise_number` (`enterprise_number`)
) comment '行政执法检查计划-预告表' row_format = DYNAMIC;

CREATE TABLE `efcode_cp_notice_users`
(
    `id`          varchar(50)  NOT NULL COMMENT '主键ID' primary key,
    `notice_id`   varchar(50)  NOT NULL COMMENT '计划ID',
    `user_id`     varchar(50)  NOT NULL COMMENT '用户ID',
    `user_name`   varchar(100) NOT NULL COMMENT '用户名称',
    `create_by`   varchar(64) DEFAULT '' COMMENT '创建者',
    `create_dept` varchar(64) DEFAULT NULL COMMENT '创建人部门',
    `update_by`   varchar(64) DEFAULT '' COMMENT '更新者',
    `create_time` datetime    DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` datetime    DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) comment '行政执法检查计划-预告参与人员表' row_format = DYNAMIC;

CREATE TABLE `efcode_cp_notice_message`
(
    `id`          varchar(50)   NOT NULL COMMENT '主键ID' primary key,
    `notice_id`   varchar(50)   NOT NULL COMMENT '预告ID',
    `user_id`     varchar(50)   NOT NULL COMMENT '用户ID',
    `user_name`   varchar(100)  NOT NULL COMMENT '用户名称',
    `from`        tinyint       NOT NULL COMMENT '来自' COMMENT '来自:企业=1,执法单位=0',
    `message`     varchar(1000) NOT NULL COMMENT '消息内容',
    `create_by`   varchar(64) DEFAULT '' COMMENT '创建者',
    `create_dept` varchar(64) DEFAULT NULL COMMENT '创建人部门',
    `update_by`   varchar(64) DEFAULT '' COMMENT '更新者',
    `create_time` datetime    DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` datetime    DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_delete`   tinyint       NOT NULL DEFAULT 0 COMMENT '是否删除:0=否,1=是'
) comment '行政执法检查计划-预告交流表' row_format = DYNAMIC;

CREATE TABLE `efcode_cp_setting`
(
    `id`            varchar(50)  NOT NULL COMMENT '主键ID' primary key,
    `setting_name`  varchar(100) NOT NULL COMMENT '设置名称',
    `setting_value` varchar(100) NOT NULL COMMENT '设置值',
    `remark`        varchar(500) NOT NULL COMMENT '备注',
    `create_by`     varchar(64) DEFAULT '' COMMENT '创建者',
    `create_dept`   varchar(64) DEFAULT NULL COMMENT '创建人部门',
    `update_by`     varchar(64) DEFAULT '' COMMENT '更新者',
    `create_time`   datetime    DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time`   datetime    DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) comment '行政执法检查计划-设置表' row_format = DYNAMIC;


/*初始化数据*/
INSERT INTO `efcode_cp_setting` (`id`, `setting_name`, `setting_value`, `remark`, `create_by`, `create_dept`)
VALUES ('CP_SETTING_SUBMIT_DEADLINE', '下阶段计划提交最晚时间', '26', '每月几号前需提交下阶段计划<=', '0', NULL),
       ('CP_SETTING_AUTO_MATCH_START', '系统自动推荐匹配开始时间', '26', '系统自动推荐匹配的开始时间(号)>=', '0',
        NULL),
       ('CP_SETTING_MANUAL_MATCH_DAYS', '手工匹配距计划开始天数', '3', '手工匹配距离计划开始的天数>=', '0', NULL),
       ('CP_MAX_UNION_UNIT', '单次联合单位最大数量', '3', '单次联合单位最大数量>=2', '0', NULL),
       ('CP_MAX_INNER_UNIT_AC_PERSON_NUM', '单位内部单次计划最多参与人数', '3', '单位内部单次计划最多参与人数<=3', '0', NULL);
