﻿-- ============================================================
-- 报工单升级：新增字段
-- 版本：v2.0.003  日期：2026-03-03  作者：周启威
-- ============================================================
-- 字段变更说明：
-- [已移除] report_count
--   原说明：报工数
--   原因：与现有字段 report_quantity 语义完全相同，冗余
--   现阶段：直接使用 report_quantity 表示本次报工数量
--
-- [已移除] quality_check_status
--   原说明：质检合格（合格/不合格）
--   原因：与现有字段 quality_status（B=待检验/C=已通过/D=有异常）重叠
--   现阶段：直接使用 quality_status 字段
-- ============================================================

ALTER TABLE `pro_report`
    ADD COLUMN `customer_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '客户名称（来自工单关联销售订单，新增时自动回显）',
    ADD COLUMN `customer_id`   bigint DEFAULT NULL COMMENT '客户ID（关联客户表）',
    ADD COLUMN `workpiece` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '工件/成品名称（= 工单 material_name，新增时自动回显）',
    ADD COLUMN `product_batch` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '产品批次（= 工单 batch_number，新增时自动回显）',
    ADD COLUMN `execution_standard` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '执行标准（手动填写，默认为空）',
    ADD COLUMN `process_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '工序名称（= 工单分录 process_name，新增时自动回显，持久化）',
    ADD COLUMN `process_id`   bigint DEFAULT NULL COMMENT '工序ID（持久化，关联工序表）',
    ADD COLUMN `team_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '班组名称（字典 production_team，离散/连续制造均需填写，默认为空）',
    ADD COLUMN `team_id`      bigint DEFAULT NULL COMMENT '班组ID（关联字典/班组表）',
    ADD COLUMN `report_type` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT 'NORMAL' COMMENT '报工类型（字典 production_report_type，默认：NORMAL=正常报工）',
    ADD COLUMN `plan_start_time` datetime DEFAULT NULL COMMENT '计划开始时间（= 工单 process_start_time，新增时自动回显）',
    ADD COLUMN `actual_start_time` datetime DEFAULT NULL COMMENT '实际开始时间（默认=计划开始时间，离散/连续均需填写）',
    ADD COLUMN `plan_end_time` datetime DEFAULT NULL COMMENT '计划完工时间（= 工单 process_start_time + 工单工序明细 duration（秒），新增时自动计算回显）',
    ADD COLUMN `actual_end_time` datetime DEFAULT NULL COMMENT '实际完工时间（默认=计划完工时间，离散/连续均需填写）',
    ADD COLUMN `report_submit_time` datetime DEFAULT NULL COMMENT '报工提交时间（后端保存时自动写入 NOW()，不暴露到前端）',
    ADD COLUMN `plan_count` decimal(9,3) DEFAULT NULL COMMENT '计划数（= 工单排产数量 quantity，新增时自动回显）',
    ADD COLUMN `yield_rate` decimal(5,2) DEFAULT NULL COMMENT '良品率（前端实时计算：合格数/报工数×100，保存时持久化）',
    ADD COLUMN `performance_wages` decimal(9,3) DEFAULT 0 COMMENT '绩效工资（手动填写，默认0）',
    ADD COLUMN `energy_consumption` decimal(9,3) DEFAULT 0 COMMENT '能耗（手动填写，默认0）',
    ADD COLUMN `material_consumption` decimal(9,3) DEFAULT 0 COMMENT '工耗（手动填写，默认0）',
    ADD COLUMN `other_costs` decimal(9,3) DEFAULT 0 COMMENT '其他成本（手动填写，默认0）',
    ADD COLUMN `value_added` decimal(9,3) DEFAULT 0 COMMENT '增值（手动填写，默认0）',
    ADD COLUMN `theoretical_cycle_time` decimal(9,3) DEFAULT NULL COMMENT '理论节拍（分钟/件，手动填写，用于OEE参考）',
    ADD COLUMN `station_oee` decimal(5,2) DEFAULT NULL COMMENT '工位OEE（前端计算，公式待完善，暂可手动编辑）',
    ADD COLUMN `current_benefit` decimal(9,3) DEFAULT NULL COMMENT '本次效益（前端计算：增值-能耗-工耗-其他成本，暂可手动编辑）',
    ADD COLUMN `station_exception` varchar(500) DEFAULT NULL COMMENT '工位异常情况（手动填写，默认为空）',
    ADD COLUMN `rectification_suggestion` varchar(500) DEFAULT NULL COMMENT '整改建议（手动填写，默认为空）';

-- ============================================================
-- 1. 补充 ID 列（已合并到上方 ALTER TABLE）
-- 注：customer_id / process_id / team_id 已随字段一并添加
-- ============================================================

-- ============================================================
-- 2. 修改现有字段：is_settle 和 wages 改为可编辑
-- 原说明：是否已结算工资（只读）/ 结算工资（只读）
-- 现阶段：改为可编辑字段，由用户手动填写或系统结算后更新
-- 字段已存在，无需 ALTER，仅前端去掉 :disabled="true" 即可
-- ============================================================

-- ============================================================
-- 3. 新增字典：报工类型（production_report_type）
-- ============================================================
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
VALUES ('报工类型', 'production_report_type', '0', 'admin', NOW(), '报工单报工类型');

INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
VALUES
(1, '正常报工', 'NORMAL',      'production_report_type', '', 'success', 'Y', '0', 'admin', NOW(), '正常生产报工'),
(2, '返工报工', 'REWORK',      'production_report_type', '', 'warning', 'N', '0', 'admin', NOW(), '返工生产报工'),
(3, '补报工',   'SUPPLEMENT',  'production_report_type', '', 'info',    'N', '0', 'admin', NOW(), '补录报工'),
(4, '异常补录', 'EXCEPTION',   'production_report_type', '', 'danger',  'N', '0', 'admin', NOW(), '异常情况补录');

-- ============================================================
-- 4. 新增字典：班组（production_team）
-- 注：班次（sys_shift_type）字典已存在，本次不重复创建
-- ============================================================
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
VALUES ('生产班组', 'production_team', '0', 'admin', NOW(), '生产班组列表，可在字典管理中维护');

INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
VALUES
(1, '甲班', 'GROUP_A', 'production_team', '', 'primary', 'N', '0', 'admin', NOW(), ''),
(2, '乙班', 'GROUP_B', 'production_team', '', 'primary', 'N', '0', 'admin', NOW(), ''),
(3, '丙班', 'GROUP_C', 'production_team', '', 'primary', 'N', '0', 'admin', NOW(), '');

-- ============================================================
-- 5. 索引：新增字段检索优化
-- ============================================================
ALTER TABLE `pro_report`
    ADD INDEX `idx_customer_id`  (`customer_id`),
    ADD INDEX `idx_process_id`   (`process_id`),
    ADD INDEX `idx_team_id`      (`team_id`),
    ADD INDEX `idx_report_type`  (`report_type`);
