合作成本在店长工资计算中未统计问题分析.md
6.06 KB
合作成本在店长工资计算中未统计问题分析
📋 问题描述
使用2025年12月的数据,发现合作成本在店长工资计算时没有被统计进去。
🔍 代码逻辑分析
店长工资计算中的合作成本统计逻辑
代码位置:LqStoreManagerSalaryService.cs 第346-354行
// 1.10 合作项目成本统计
var cooperationCostList = await _db.Queryable<LqCooperationCostEntity>()
.Where(x => x.Year == year && x.Month == monthStr && x.IsEffective == StatusEnum.有效.GetHashCode())
.Select(x => new { x.StoreId, x.TotalAmount })
.ToListAsync();
var cooperationCostDict = cooperationCostList
.Where(x => !string.IsNullOrEmpty(x.StoreId))
.GroupBy(x => x.StoreId)
.ToDictionary(g => g.Key, g => g.Sum(x => x.TotalAmount));
查询条件:
F_Year = year(年份,如:2025)F_Month = monthStr(月份,格式:YYYYMM,如:"202512")F_IsEffective = StatusEnum.有效.GetHashCode()(有效记录,值为1)
使用位置:第558行
salary.CooperationCost = cooperationCostDict.ContainsKey(storeId) ? cooperationCostDict[storeId] : 0;
📊 数据检查结果
1. 合作成本表数据检查
查询条件:F_Year = 2025 AND F_Month = '202512' AND F_IsEffective = 1
查询结果:0条记录
发现:
- 2025年12月的合作成本数据不存在
- 2025年只有以下月份的数据:
F_Month = "202511"(11月,59条记录,总金额490,151.00元)F_Month = "252511"(数据异常,90条记录,总金额1,054,810.49元)
2. 店长工资表中的合作成本字段
查询条件:F_StatisticsMonth = '202512'
查询结果:
- 总计21条店长工资记录
- 所有记录的合作成本(F_CooperationCost)都是0.00
- 有合作成本值的记录数:0条
3. 数据格式检查
合作成本表中的月份格式:
F_Month = "202511"(YYYYMM格式,正确)F_Month = "252511"(数据异常,可能是录入错误)
店长工资计算查询条件:
F_Month = "202512"(YYYYMM格式,正确)
🎯 问题根本原因
原因:2025年12月的合作成本数据不存在
分析:
代码逻辑是正确的:
- 查询条件:
F_Year = 2025 AND F_Month = '202512' AND F_IsEffective = 1 - 查询逻辑:按门店ID分组,汇总总金额
- 使用逻辑:从字典中获取对应门店的合作成本
- 查询条件:
数据问题:
- 2025年12月的合作成本数据在数据库中不存在
- 查询结果为空,所以
cooperationCostDict为空字典 - 所有门店的
CooperationCost都被设置为 0
数据格式验证:
- 代码期望的格式:
F_Month = "202512"(YYYYMM格式) - 数据库中11月的数据格式:
F_Month = "202511"(格式正确) - 说明数据格式本身是正确的
- 代码期望的格式:
📝 验证查询
验证1:检查是否有2025年12月的数据
SELECT COUNT(*) as Count, SUM(F_TotalAmount) as TotalAmount
FROM lq_cooperation_cost
WHERE F_Year = 2025
AND F_Month = '202512'
AND F_IsEffective = 1;
结果:0条记录
验证2:检查店长工资表中的合作成本值
SELECT
COUNT(*) as TotalCount,
COUNT(CASE WHEN F_CooperationCost > 0 THEN 1 END) as HasCooperationCostCount,
SUM(F_CooperationCost) as TotalCooperationCost
FROM lq_store_manager_salary_statistics
WHERE F_StatisticsMonth = '202512';
结果:
- 总记录数:21条
- 有合作成本的记录数:0条
- 合作成本总和:0.00
验证3:检查其他月份的数据格式
SELECT DISTINCT F_Month
FROM lq_cooperation_cost
WHERE F_Year = 2025
ORDER BY F_Month;
结果:
F_Month = "202511"(11月,格式正确)F_Month = "252511"(数据异常,可能是录入错误)
🔍 问题总结
核心问题
2025年12月的合作成本数据在数据库中不存在
问题表现
- 合作成本表:没有
F_Year = 2025 AND F_Month = '202512'的记录 - 店长工资表:所有2025年12月的店长工资记录,
F_CooperationCost都是 0.00 - 代码逻辑:代码逻辑是正确的,查询条件也是正确的
可能的原因
- 数据未录入:2025年12月的合作成本数据还没有录入到系统中
- 数据录入错误:数据可能被录入到了其他月份(如录入到了11月)
- 数据被删除或作废:数据可能被标记为无效(
F_IsEffective != 1)或删除
验证方法
检查是否有无效数据:
SELECT COUNT(*) FROM lq_cooperation_cost WHERE F_Year = 2025 AND F_Month = '202512' AND F_IsEffective != 1;检查是否有其他格式的数据:
SELECT F_Month, COUNT(*) FROM lq_cooperation_cost WHERE F_Year = 2025 AND F_Month LIKE '%12%' GROUP BY F_Month;检查11月的数据(对比参考):
SELECT F_StoreId, F_TotalAmount FROM lq_cooperation_cost WHERE F_Year = 2025 AND F_Month = '202511' AND F_IsEffective = 1;
💡 建议
确认数据是否存在:
- 检查是否有2025年12月的合作成本数据需要录入
- 检查数据是否被录入到了其他月份
如果数据确实不存在:
- 这是正常的业务情况(该月没有合作成本)
- 代码逻辑是正确的,不需要修改
如果数据应该存在但未录入:
- 需要补充录入2025年12月的合作成本数据
- 录入后重新计算店长工资
如果数据格式有问题:
- 检查数据录入时月份格式是否正确
- 确保月份格式为 YYYYMM(如:"202512")
📋 结论
问题原因:2025年12月的合作成本数据在数据库中不存在,导致店长工资计算时无法统计到合作成本。
代码逻辑:代码逻辑是正确的,查询条件也是正确的。
解决方案:
- 如果该月确实没有合作成本,则当前结果是正确的
- 如果该月应该有合作成本但未录入,则需要补充录入数据后重新计算工资