送洗记录金额修复执行说明.md 5.06 KB

送洗记录金额修复执行说明

📋 修复概述

问题描述:部分送出记录(F_FlowType = 0)存在总价为0的异常情况,但单价和数量都不为0。

修复范围

  • 需要修复的记录数量:45条
  • 应修复的总金额:2,442.40元
  • 修复条件:F_FlowType = 0 AND F_IsEffective = 1 AND F_TotalPrice = 0 AND F_Quantity > 0 AND F_LaundryPrice > 0

修复逻辑:重新计算总价 = 数量 × 单价

⚠️ 执行前准备

1. 数据库备份

必须执行:在执行修复SQL前,请先备份数据库。

# 备份命令示例(根据实际情况调整)
mysqldump -u用户名 -p密码 数据库名 > backup_送洗记录修复_$(date +%Y%m%d_%H%M%S).sql

2. 确认修复范围

执行检查SQL,确认会修复的记录:

-- 查看需要修复的记录详情
SELECT 
    F_Id as 记录ID,
    F_BatchNumber as 批次号,
    F_StoreId as 门店ID,
    F_ProductType as 产品类型,
    F_Quantity as 数量,
    F_LaundryPrice as 单价,
    F_TotalPrice as 当前总价,
    (F_Quantity * F_LaundryPrice) as 应修复为总价,
    F_CreateTime as 创建时间
FROM lq_laundry_flow
WHERE F_FlowType = 0
    AND F_IsEffective = 1
    AND F_TotalPrice = 0
    AND F_Quantity > 0
    AND F_LaundryPrice > 0
ORDER BY F_CreateTime;

3. 统计修复信息

SELECT 
    COUNT(*) as 需要修复的记录数量,
    SUM(F_Quantity * F_LaundryPrice) as 应修复的总金额
FROM lq_laundry_flow
WHERE F_FlowType = 0
    AND F_IsEffective = 1
    AND F_TotalPrice = 0
    AND F_Quantity > 0
    AND F_LaundryPrice > 0;

🔧 执行修复

修复SQL

UPDATE lq_laundry_flow
SET F_TotalPrice = F_Quantity * F_LaundryPrice
WHERE F_FlowType = 0
    AND F_IsEffective = 1
    AND F_TotalPrice = 0
    AND F_Quantity > 0
    AND F_LaundryPrice > 0;

执行说明

  • 此SQL会更新所有符合条件的记录
  • 更新字段:F_TotalPrice
  • 更新逻辑:F_TotalPrice = F_Quantity * F_LaundryPrice

✅ 执行后验证

1. 检查是否还有异常记录

SELECT 
    COUNT(*) as 剩余异常记录数量
FROM lq_laundry_flow
WHERE F_FlowType = 0
    AND F_IsEffective = 1
    AND F_TotalPrice = 0
    AND F_Quantity > 0
    AND F_LaundryPrice > 0;

预期结果:剩余异常记录数量应该为 0

2. 验证修复后的记录

SELECT 
    F_Id as 记录ID,
    F_BatchNumber as 批次号,
    F_ProductType as 产品类型,
    F_Quantity as 数量,
    F_LaundryPrice as 单价,
    F_TotalPrice as 修复后总价,
    (F_Quantity * F_LaundryPrice) as 验证计算值,
    CASE 
        WHEN F_TotalPrice = (F_Quantity * F_LaundryPrice) THEN '正确'
        ELSE '异常'
    END as 验证结果
FROM lq_laundry_flow
WHERE F_FlowType = 0
    AND F_IsEffective = 1
    AND F_TotalPrice > 0
    AND F_CreateTime >= '2025-12-01'
    AND F_CreateTime < '2026-01-01'
ORDER BY F_CreateTime DESC
LIMIT 20;

预期结果:所有记录的"验证结果"应该都是"正确"

3. 统计修复后的总金额

SELECT 
    COUNT(*) as 修复后的记录数量,
    SUM(F_TotalPrice) as 修复后的总金额
FROM lq_laundry_flow
WHERE F_FlowType = 0
    AND F_IsEffective = 1
    AND F_TotalPrice > 0
    AND F_CreateTime >= '2025-12-01'
    AND F_CreateTime < '2026-01-01';

📊 修复影响分析

1. 对工资计算的影响

影响范围

  • 店长工资计算
  • 主任工资计算
  • 事业部总经理工资计算

影响说明

  • 这些工资计算都使用送出记录的总价(F_FlowType = 0)来计算洗毛巾费用
  • 修复后,这些记录的总价会从0变为正确的金额
  • 需要重新计算:2025年12月相关的工资数据

2. 对股份计算的影响

影响范围

  • 门店股份统计(主营成本-毛巾)

影响说明

  • 股份计算使用送出记录的总价来计算毛巾成本
  • 修复后,毛巾成本会增加2,442.40元
  • 需要重新计算:2025年12月相关的股份数据

3. 数据一致性

修复前后对比

  • 修复前:送出记录总价0.00,送回记录总价正确(数据不一致)
  • 修复后:送出记录总价正确,送回记录总价正确(数据一致)

📋 执行步骤总结

  1. 备份数据库(必须)
  2. 执行检查SQL,确认修复范围
  3. 执行修复SQL,修复异常记录
  4. 执行验证SQL,确认修复结果
  5. ⏭️ 重新计算工资数据(2025年12月)
  6. ⏭️ 重新计算股份数据(2025年12月)

⚠️ 注意事项

  1. 数据备份:执行前必须备份数据库
  2. 修复范围:只修复送出记录(F_FlowType = 0),不影响送回记录
  3. 修复条件:只修复单价>0且数量>0但总价为0的记录
  4. 后续工作:修复后需要重新计算相关的工资和股份数据
  5. 验证检查:修复后必须执行验证SQL,确认修复结果

📝 修复记录

  • 修复时间:待执行
  • 修复记录数:45条
  • 修复总金额:2,442.40元
  • 执行人:待填写
  • 验证结果:待验证