# 送洗记录金额修复执行说明 ## 📋 修复概述 **问题描述**:部分送出记录(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前,请先备份数据库。 ```bash # 备份命令示例(根据实际情况调整) mysqldump -u用户名 -p密码 数据库名 > backup_送洗记录修复_$(date +%Y%m%d_%H%M%S).sql ``` ### 2. 确认修复范围 执行检查SQL,确认会修复的记录: ```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. 统计修复信息 ```sql 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 ```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. 检查是否还有异常记录 ```sql 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. 验证修复后的记录 ```sql 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. 统计修复后的总金额 ```sql 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元 - **执行人**:待填写 - **验证结果**:待验证