-- ============================================================
-- 1.0.214.sql
-- S5-PRODUCTION-RECEIPT-MDP-PIPELINE-1
--
-- 业务目标：
--   1) 新建 S5 生产入库单标准层 mdp_std_production_receipt（只读数据中台，DOP 内部，扁平单表：
--      一行 = 一条 NbrDetail 明细）。源 NbrMaster(Type='WOI',IsActive=1) + NbrDetail(Domain+Nbr join)
--      + DepartmentMaster / ItemMaster / LocationMaster。不建 stg、不建 dwd；不读/不改 S2/S3/S4；不写源表。
--   2) 将「生产入库单」菜单（Id=1329015020005，仓储管理目录下）的 Component
--      由 placeholder 重指到真实页面 /aidop/s5/warehouse/productionReceiptList。
--
-- 安全保证：
--   - DDL 仅 CREATE TABLE IF NOT EXISTS，幂等；不 DROP / TRUNCATE。
--   - 菜单仅 UPDATE 该单条 Component / Remark / UpdateTime；不改 Path/Name/Pid/Title/Type/OrderNo；
--     不 INSERT/DELETE；不动 SysTenantMenu / SysRoleMenu；不动其它菜单；不碰 S7 菜单。
--   - 不动源单据表（NbrMaster/NbrDetail 等），不碰 S2 写路径，不碰退料/委外/采购收货资产。
-- ============================================================

CREATE TABLE IF NOT EXISTS mdp_std_production_receipt (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    tenant_id BIGINT NOT NULL DEFAULT 0,
    factory_id BIGINT NULL DEFAULT 1,
    source_system VARCHAR(50) NOT NULL DEFAULT 'AIDOP',
    domain VARCHAR(80) NOT NULL COMMENT '工厂/域 NbrMaster.Domain',
    master_rec_id INT NULL COMMENT '源头主键 NbrMaster.RecID',
    detail_rec_id INT NOT NULL COMMENT '源明细主键 NbrDetail.RecID（扁平粒度唯一）',
    nbr VARCHAR(24) NULL COMMENT '入库单号 NbrMaster.Nbr',
    line SMALLINT NOT NULL DEFAULT 0 COMMENT '项次 NbrDetail.Line',
    receipt_date DATETIME NULL COMMENT '入库日期 NbrMaster.Date',
    status VARCHAR(8) NULL COMMENT '状态原值 NbrMaster.Status',
    status_desc VARCHAR(20) NULL COMMENT '状态中文（本批暂=raw）',
    remark VARCHAR(200) NULL COMMENT '备注 NbrMaster.Remark（列表显示名“入库类型”，待确认）',
    prod_line VARCHAR(8) NULL COMMENT '生产线 NbrDetail.ProdLine',
    work_ord VARCHAR(64) NULL COMMENT '工单号 NbrDetail.WorkOrd',
    erp_work_ord VARCHAR(60) NULL COMMENT 'ERP工单号 NbrDetail.Address',
    department VARCHAR(8) NULL COMMENT '部门编码 NbrMaster.Department',
    department_desc VARCHAR(255) NULL COMMENT '部门（编码+DepartmentMaster.Descr）',
    applicant_name VARCHAR(12) NULL COMMENT '申请人 NbrMaster.Name',
    item_num VARCHAR(24) NULL COMMENT '物料编码 NbrDetail.ItemNum',
    item_name VARCHAR(200) NULL COMMENT '物料名称 ItemMaster.Descr',
    item_spec VARCHAR(200) NULL COMMENT '物料型号/规格 ItemMaster.Descr1',
    um VARCHAR(8) NULL COMMENT '单位 ItemMaster.UM',
    location_to VARCHAR(8) NULL COMMENT '入库库位 NbrDetail.LocationTo',
    location_to_desc VARCHAR(255) NULL COMMENT '入库库位名 LocationMaster.descr',
    lot_serial VARCHAR(120) NULL COMMENT '批序号 NbrDetail.LotSerial',
    qty_rec DECIMAL(18,5) NULL DEFAULT 0 COMMENT '数量 NbrDetail.QtyRec（列表展示）',
    qty_to DECIMAL(18,5) NULL DEFAULT 0 COMMENT '入库数量候选 NbrDetail.QtyTo（保留，本批不展示）',
    location_from VARCHAR(8) NULL COMMENT '转出库位 NbrDetail.LocationFrom（保留，不展示）',
    location_from_desc VARCHAR(255) NULL COMMENT '转出库位名 LocationMaster.descr（保留，不展示）',
    ord_nbr VARCHAR(48) NULL COMMENT '相关单号 NbrDetail.OrdNbr',
    source_biz_key VARCHAR(200) NULL COMMENT 'domain:detail_rec_id',
    sync_batch_id VARCHAR(100) NOT NULL,
    sync_time DATETIME NOT NULL,
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY uk_mdp_std_prod_receipt (tenant_id, domain, detail_rec_id),
    KEY idx_mdp_std_prod_rcpt_nbr (tenant_id, nbr),
    KEY idx_mdp_std_prod_rcpt_date (tenant_id, receipt_date),
    KEY idx_mdp_std_prod_rcpt_workord (tenant_id, work_ord),
    KEY idx_mdp_std_prod_rcpt_erp (tenant_id, erp_work_ord),
    KEY idx_mdp_std_prod_rcpt_lot (tenant_id, lot_serial),
    KEY idx_mdp_std_prod_rcpt_item (tenant_id, item_num),
    KEY idx_mdp_std_prod_rcpt_locto (tenant_id, location_to)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='S5生产入库单标准层（扁平，一行=一条明细）';

UPDATE SysMenu
SET Component  = '/aidop/s5/warehouse/productionReceiptList',
    Remark     = 'S5 生产入库单（只读扁平，数据中台标准层 mdp_std_production_receipt）',
    UpdateTime = NOW()
WHERE Id = 1329015020005;
