科技部总经理Cell金额计算问题修复总结.md
3.94 KB
科技部总经理Cell金额计算问题修复总结
问题描述
科技部总经理工资计算接口中,Cell金额计算不正确。预期值:69,838.00 元,实际值:60,994.30 元。
问题分析
1. SQL查询验证
直接SQL查询结果正确:
- 绿纤静居寺店 (1649328471923847173): 46,110.00 元(数据库中:37,400.00)
- 绿纤468店 (1649328471923847175): 0.00 元(数据库中:66.30)
- 绿纤明信店 (1649328471923847187): 2,200.00 元(数据库中:2,000.00)
2. 根本原因
- 时间格式化问题:代码中使用字符串插值格式化DateTime时可能有问题
- 更新机制问题:SqlSugar的Updateable可能只更新有变化的字段
已修复的问题
1. 时间格式化修复
- 将字符串插值中的时间格式化改为使用
.ToString()方法 - 在循环外部定义时间格式化字符串,避免重复计算
// 修复前:
AND yjsj <= '{endDateTime:yyyy-MM-dd HH:mm:ss}'
// 修复后:
var startDateStr = startDate.ToString("yyyy-MM-dd HH:mm:ss");
var endDateTimeStr = endDateTime.ToString("yyyy-MM-dd HH:mm:ss");
AND yjsj <= '{endDateTimeStr}'
2. 强制更新机制
- 添加
IgnoreColumns确保强制更新所有字段(除了CreateTime和CreateUser)
await _db.Updateable(recordsToUpdate)
.IgnoreColumns(x => x.CreateTime)
.IgnoreColumns(x => x.CreateUser)
.ExecuteCommandAsync();
3. 添加详细日志
- 添加计算开始日志
- 添加关键门店计算日志
- 添加更新前/后的值对比日志
- 添加跳过更新的警告日志
4. 强制更新UpdateTime
salary.UpdateTime = DateTime.Now; // 强制更新UpdateTime
修改的文件
LqTechGeneralManagerSalaryService.cs
- 行236:修复日志中的时间格式化
- 行330-331:在循环外部定义时间格式化字符串
- 行333-342:修复溯源金额SQL的时间格式化
- 行357-374:修复Cell金额SQL的时间格式化,并添加调试日志
- 行547:添加跳过更新的警告日志
- 行559:强制设置UpdateTime
- 行559-562:添加IgnoreColumns确保强制更新
验证步骤
1. 重新编译(已完成)
cd netcore
dotnet clean src/Application/NCC.API/NCC.API.csproj
dotnet build src/Application/NCC.API/NCC.API.csproj
结果:编译成功 ✅
2. 重启服务(必须执行)
⚠️ 重要:代码修改后必须完全重启服务才能生效
3. 调用计算接口
POST /api/Extend/lqtechgeneralmanagersalary/calculate/tech-general-manager?year=2025&month=12
4. 验证结果
SELECT F_EmployeeName, F_StatisticsMonth, F_CellAmount, F_UpdateTime
FROM lq_tech_general_manager_salary_statistics
WHERE F_EmployeeName LIKE '%夏萍%' AND F_StatisticsMonth = '202512'
预期结果:
- Cell金额:69,838.00 元
- UpdateTime:当前时间
门店明细预期值
| 门店ID | 门店名称 | 当前值 | 预期值 | 差异 |
|---|---|---|---|---|
| 1649328471923847173 | 绿纤静居寺店 | 37,400.00 | 46,110.00 | +8,710.00 |
| 1649328471923847175 | 绿纤468店 | 66.30 | 0.00 | -66.30 |
| 1649328471923847187 | 绿纤明信店 | 2,000.00 | 2,200.00 | +200.00 |
合计差异:+8,843.70 元
注意事项
- 服务重启:代码修改后必须完全重启服务才能生效
- 日志查看:查看服务日志中是否有 "已更新 X 条科技部总经理工资记录" 的日志
- 数据验证:验证UpdateTime是否更新为当前时间
- 对比验证:Cell金额应该与
/api/Extend/LqTechDepartmentDashboard/GetStatistics接口返回的值一致
当前状态
- ✅ 代码已修复
- ✅ 编译成功
- ⚠️ 需要重启服务并重新测试
下一步操作
- 重启服务(必须)
- 调用计算接口进行测试
- 验证数据库结果是否更新为69,838.00
- 查看服务日志确认是否有错误信息