-- ============================================
-- 610 计件统计修复 - DDL
-- 目标库：mes_cloud_610
-- 说明：Online DDL 加字段不锁表，UPDATE 回填建议低峰执行
-- ============================================

USE mes_cloud_610;

-- 步骤1：新增 piecework_date 字段（Online DDL，不锁表）
ALTER TABLE mes_product_record
ADD COLUMN piecework_date DATETIME NULL
COMMENT '计件时间（首次加工完成时间）'
AFTER update_date;

-- 步骤2：历史数据回填（只处理 2026-05-01 至今）
-- 用 update_date 作为近似首次完成时间；早于 2026-05-01 的旧数据不回填
UPDATE mes_product_record
SET piecework_date = update_date
WHERE craft = '100000'
  AND content NOT IN ('UDF', '')
  AND piecework_date IS NULL
  AND update_date >= '2026-05-01';

-- 步骤3：验证
SELECT
    COUNT(*) AS total_100000,
    SUM(CASE WHEN piecework_date IS NOT NULL THEN 1 ELSE 0 END) AS has_piecework_date,
    SUM(CASE WHEN content = 'UDF' THEN 1 ELSE 0 END) AS udf_count,
    SUM(CASE WHEN content = 'OK'  THEN 1 ELSE 0 END) AS ok_count,
    SUM(CASE WHEN content = 'NG'  THEN 1 ELSE 0 END) AS ng_count
FROM mes_product_record
WHERE craft = '100000';

-- 预期：
-- has_piecework_date = ok_count + ng_count
-- UDF 记录 piecework_date 应为 NULL
