# 科技部总经理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()` 方法 - 在循环外部定义时间格式化字符串,避免重复计算 ```csharp // 修复前: 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) ```csharp await _db.Updateable(recordsToUpdate) .IgnoreColumns(x => x.CreateTime) .IgnoreColumns(x => x.CreateUser) .ExecuteCommandAsync(); ``` ### 3. 添加详细日志 - 添加计算开始日志 - 添加关键门店计算日志 - 添加更新前/后的值对比日志 - 添加跳过更新的警告日志 ### 4. 强制更新UpdateTime ```csharp 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. 重新编译(已完成) ```bash cd netcore dotnet clean src/Application/NCC.API/NCC.API.csproj dotnet build src/Application/NCC.API/NCC.API.csproj ``` **结果**:编译成功 ✅ ### 2. 重启服务(必须执行) ⚠️ **重要**:代码修改后必须完全重启服务才能生效 ### 3. 调用计算接口 ```bash POST /api/Extend/lqtechgeneralmanagersalary/calculate/tech-general-manager?year=2025&month=12 ``` ### 4. 验证结果 ```sql 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. **查看服务日志**确认是否有错误信息