添加消耗功能加班字段.sql 5.22 KB
-- ============================================
-- 为消耗功能添加加班相关字段
-- ============================================
-- 说明:此脚本为消耗功能添加加班标识、加班系数以及原始值、加班值、最终值的字段
-- 执行顺序:按照表的主从关系依次执行

-- ============================================
-- 1. lq_xh_hyhk(耗卡主表) - 添加加班相关字段
-- ============================================
-- 说明:F_OvertimeCoefficient 为 NULL 或 0 表示非加班单,大于 0 表示加班单
ALTER TABLE lq_xh_hyhk 
ADD COLUMN F_OvertimeCoefficient DECIMAL(18,2) NULL DEFAULT NULL COMMENT '加班系数(NULL或0表示非加班单,大于0表示加班单,如 0.5、1、1.5)' AFTER F_CancelRemark,
ADD COLUMN F_OriginalSgfy DECIMAL(18,2) NULL COMMENT '原始手工费(用户输入的原始值)' AFTER F_OvertimeCoefficient,
ADD COLUMN F_OvertimeSgfy DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班手工费(加班计算后的增量值)' AFTER F_OriginalSgfy;

-- 为现有数据设置默认值
UPDATE lq_xh_hyhk 
SET F_OvertimeCoefficient = NULL,
    F_OriginalSgfy = COALESCE(sgfy, 0),
    F_OvertimeSgfy = 0
WHERE F_OvertimeCoefficient IS NULL;

-- ============================================
-- 2. lq_xh_pxmx(耗卡品项明细表) - 添加加班相关字段
-- ============================================
ALTER TABLE lq_xh_pxmx 
ADD COLUMN F_OriginalProjectNumber DECIMAL(18,2)  NULL COMMENT '原始项目次数(用户输入的原始值)' AFTER F_ProjectNumber,
ADD COLUMN F_OvertimeProjectNumber DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班项目次数(加班计算后的增量值)' AFTER F_OriginalProjectNumber;

-- 为现有数据设置默认值
UPDATE lq_xh_pxmx 
SET F_OriginalProjectNumber = COALESCE(F_ProjectNumber, 0),
    F_OvertimeProjectNumber = 0
WHERE F_OriginalProjectNumber IS NULL;

-- ============================================
-- 3. lq_xh_jksyj(耗卡健康师业绩表) - 添加加班相关字段
-- ============================================
ALTER TABLE lq_xh_jksyj 
ADD COLUMN F_OriginalKdpxNumber DECIMAL(18,2) NULL COMMENT '原始耗卡品项次数(原始值)' AFTER F_kdpxNumber,
ADD COLUMN F_OvertimeKdpxNumber DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班耗卡品项次数(加班计算后的增量值)' AFTER F_OriginalKdpxNumber,
ADD COLUMN F_OriginalLaborCost DECIMAL(18,2) NULL COMMENT '原始手工费(原始值)' AFTER F_LaborCost,
ADD COLUMN F_OvertimeLaborCost DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班手工费(加班计算后的增量值)' AFTER F_OriginalLaborCost;

-- 为现有数据设置默认值
UPDATE lq_xh_jksyj 
SET F_OriginalKdpxNumber = COALESCE(F_kdpxNumber, 0),
    F_OvertimeKdpxNumber = 0,
    F_OriginalLaborCost = COALESCE(F_LaborCost, 0),
    F_OvertimeLaborCost = 0
WHERE F_OriginalKdpxNumber IS NULL;

-- ============================================
-- 4. lq_xh_kjbsyj(耗卡科技部老师业绩表) - 添加加班相关字段
-- ============================================
ALTER TABLE lq_xh_kjbsyj 
ADD COLUMN F_OriginalHdpxNumber DECIMAL(18,2) NULL COMMENT '原始耗卡品相次数(原始值)' AFTER F_hdpxNumber,
ADD COLUMN F_OvertimeHdpxNumber DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班耗卡品相次数(加班计算后的增量值)' AFTER F_OriginalHdpxNumber,
ADD COLUMN F_OriginalLaborCost DECIMAL(18,2) NULL COMMENT '原始手工费(原始值)' AFTER F_LaborCost,
ADD COLUMN F_OvertimeLaborCost DECIMAL(18,2) NULL DEFAULT 0 COMMENT '加班手工费(加班计算后的增量值)' AFTER F_OriginalLaborCost;

-- 为现有数据设置默认值
UPDATE lq_xh_kjbsyj 
SET F_OriginalHdpxNumber = COALESCE(F_hdpxNumber, 0),
    F_OvertimeHdpxNumber = 0,
    F_OriginalLaborCost = COALESCE(F_LaborCost, 0),
    F_OvertimeLaborCost = 0
WHERE F_OriginalHdpxNumber IS NULL;

-- ============================================
-- 5. 创建索引(可选,用于优化查询)
-- ============================================
-- 为加班系数创建索引,方便查询加班单(系数大于0的记录)
CREATE INDEX idx_xh_hyhk_overtime_coefficient ON lq_xh_hyhk(F_OvertimeCoefficient);

-- ============================================
-- 6. 验证字段创建
-- ============================================
-- 验证 lq_xh_hyhk 表
-- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT 
-- FROM INFORMATION_SCHEMA.COLUMNS 
-- WHERE TABLE_NAME = 'lq_xh_hyhk' 
--   AND (COLUMN_NAME LIKE 'F_%Overtime%' OR COLUMN_NAME LIKE 'F_Original%');

-- 验证 lq_xh_pxmx 表
-- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT 
-- FROM INFORMATION_SCHEMA.COLUMNS 
-- WHERE TABLE_NAME = 'lq_xh_pxmx' 
--   AND (COLUMN_NAME LIKE 'F_%Overtime%' OR COLUMN_NAME LIKE 'F_Original%');

-- 验证 lq_xh_jksyj 表
-- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT 
-- FROM INFORMATION_SCHEMA.COLUMNS 
-- WHERE TABLE_NAME = 'lq_xh_jksyj' 
--   AND (COLUMN_NAME LIKE 'F_%Overtime%' OR COLUMN_NAME LIKE 'F_Original%');

-- 验证 lq_xh_kjbsyj 表
-- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT 
-- FROM INFORMATION_SCHEMA.COLUMNS 
-- WHERE TABLE_NAME = 'lq_xh_kjbsyj' 
--   AND (COLUMN_NAME LIKE 'F_%Overtime%' OR COLUMN_NAME LIKE 'F_Original%');