-- 业务实体字段配置（主表 + 明细：每条明细对应一类「明细表」及其字段列表）
SET NAMES utf8mb4;

CREATE TABLE IF NOT EXISTS `mes_xsl_biz_entity_field_profile` (
  `id` varchar(32) NOT NULL COMMENT '主键',
  `business_name` varchar(200) NOT NULL COMMENT '业务名称',
  `business_code` varchar(64) NOT NULL COMMENT '业务编码（菜单 permission id，与打印 biz_code 一致，唯一）',
  `entity_class_name` varchar(512) DEFAULT NULL COMMENT '主实体 Java 全限定类名',
  `main_fields_json` text COMMENT '主表实体字段列表（JSON 数组，元素可为字符串字段名或含 name/comment/javaType 的对象）',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `tenant_id` int DEFAULT NULL COMMENT '租户ID',
  `create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(32) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_mxbefp_bcode` (`business_code`),
  KEY `idx_mxbefp_tenant` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MES业务实体字段配置-主表';

CREATE TABLE IF NOT EXISTS `mes_xsl_biz_entity_field_detail` (
  `id` varchar(32) NOT NULL COMMENT '主键',
  `profile_id` varchar(32) NOT NULL COMMENT '主表ID',
  `detail_property_name` varchar(128) DEFAULT NULL COMMENT '主实体明细属性名（与打印绑定 detailProperty 一致）',
  `detail_slot_kind` varchar(16) DEFAULT NULL COMMENT 'LIST 或 OBJECT',
  `detail_name` varchar(200) DEFAULT NULL COMMENT '明细展示名称',
  `detail_entity_class_name` varchar(512) DEFAULT NULL COMMENT '明细实体 Java 全限定类名',
  `detail_fields_json` text COMMENT '明细表字段列表（JSON 数组，规则同 main_fields_json）',
  `sort_no` int DEFAULT NULL COMMENT '排序号',
  `create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(32) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `idx_mxbefd_profile` (`profile_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MES业务实体字段配置-明细表字段清单';

-- ─── 旧表缺列时执行（见 db/mes-xsl-biz-entity-field-detail-alter-slot-columns.sql 或 Flyway V3.9.2_55）───
