-- 1.0.324.sql  WP-D 工序实绩落地：修正 165 PSD 贴源业务键 + 新建工序实绩表
--   D-M01：MES APP 报工产生 Period=0 影子行，实绩分散；本脚本为工序级合并提供落地表。
--   行尾必须 LF（CRLF 会导致 SHA256 与 sys_db_migration_log 不一致并阻止启动）。
SET NAMES utf8mb4;

-- 1) 修正 165 PeriodSequenceDet 贴源业务键：补 WorkOrds 与 Period，避免影子行覆盖计划行
UPDATE mdp_entity
SET biz_key_expr = 'Domain,WorkOrds,ItemNum,PlanDate,Line,Op,Period',
    remark = 'WP-D 修正业务键：补 WorkOrds/Period，避免 MES 影子行与计划行 biz_key 冲突',
    update_time = NOW()
WHERE entity_code = 'S2_PERIOD_SEQUENCE_SQLSERVER';

-- 2) 工序实绩表（工序级宽键，不受排产重排影响）
CREATE TABLE IF NOT EXISTS ado_psd_op_actual (
    id              BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键',
    tenant_id       BIGINT        NOT NULL DEFAULT 0 COMMENT '租户',
    domain          VARCHAR(80)   NOT NULL DEFAULT '' COMMENT '账套（165 Domain）',
    work_ord        VARCHAR(64)   NOT NULL COMMENT '工单号（165 PeriodSequenceDet.WorkOrds）',
    op              INT           NOT NULL DEFAULT 0 COMMENT '工序号',
    item_num        VARCHAR(30)   NULL COMMENT '物料号（取自 165 同工序任一行，仅供展示）',
    comp_qty        DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '完成数：165 同工序全部 PSD 行 SUM(CompQty)',
    reject_qty      DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '报废数：同上 SUM(RejectQty)',
    setup_time_hour DECIMAL(18,5) NOT NULL DEFAULT 0 COMMENT '装机工时，单位小时（165 SetupTime 原始单位）',
    actual_time_sec DECIMAL(18,3) NOT NULL DEFAULT 0 COMMENT '实动工时，单位秒（165 ActualTime 原始单位）',
    src_row_count   INT           NOT NULL DEFAULT 0 COMMENT '参与合并的 165 行数（便于排查影子行）',
    routing_qty     DECIMAL(18,4) NULL COMMENT '交叉校验值：165 WorkOrdRouting.QtyComplete',
    last_src_update DATETIME      NULL COMMENT '165 侧最大 UpdateTime',
    sync_time       DATETIME      NOT NULL COMMENT '本次写入时间',
    create_time     DATETIME(3)   NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
    update_time     DATETIME(3)   NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
    PRIMARY KEY (id),
    UNIQUE KEY uk_psd_op_actual (tenant_id, domain, work_ord, op),
    KEY idx_psd_op_actual_wo (work_ord, op),
    KEY idx_psd_op_actual_sync (sync_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工序实绩（165 PSD 工序级合并结果）';