科技部总经理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. 根本原因

  1. 时间格式化问题:代码中使用字符串插值格式化DateTime时可能有问题
  2. 更新机制问题: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

  1. 行236:修复日志中的时间格式化
  2. 行330-331:在循环外部定义时间格式化字符串
  3. 行333-342:修复溯源金额SQL的时间格式化
  4. 行357-374:修复Cell金额SQL的时间格式化,并添加调试日志
  5. 行547:添加跳过更新的警告日志
  6. 行559:强制设置UpdateTime
  7. 行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 元

注意事项

  1. 服务重启:代码修改后必须完全重启服务才能生效
  2. 日志查看:查看服务日志中是否有 "已更新 X 条科技部总经理工资记录" 的日志
  3. 数据验证:验证UpdateTime是否更新为当前时间
  4. 对比验证:Cell金额应该与 /api/Extend/LqTechDepartmentDashboard/GetStatistics 接口返回的值一致

当前状态

  • ✅ 代码已修复
  • ✅ 编译成功
  • ⚠️ 需要重启服务并重新测试

下一步操作

  1. 重启服务(必须)
  2. 调用计算接口进行测试
  3. 验证数据库结果是否更新为69,838.00
  4. 查看服务日志确认是否有错误信息