Blame view

项目文档相关/docs/test-reports/科技部总经理Cell金额计算问题诊断.md 2.82 KB
0cfc43b9   “wangming”   修复科技部总经理工资计算逻辑及相关...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
  # 科技部总经理Cell金额计算问题诊断
  
  ## 问题描述
  重启服务并重新计算后,Cell金额仍然是 **60,994.30**,而不是预期的 **69,838.00**
  
  ## 诊断结果
  
  ### 1. SQL查询是正确的
  直接查询数据库,使用正确的SQL和时间范围,结果正确:
  ```sql
  SELECT COALESCE(SUM(CAST(jksyj AS DECIMAL(18,2))), 0) as Amount
  FROM lq_kd_jksyj
  WHERE F_IsEffective = 1
      AND F_StoreId IN (...)
      AND (F_BeautyType = 'cell' OR F_BeautyType = 'Cell')
      AND yjsj >= '2025-12-01 00:00:00'
      AND yjsj <= '2025-12-31 23:59:59'
  ```
  
  **查询结果**:69,838.00 元(正确)
  
  ### 2. 代码逻辑检查
  -`endDateTime` 变量已正确定义
  - ✅ SQL字符串格式化正确
  - ✅ 使用原生SQL在数据库层面转换
  - ✅ 时间范围处理正确
  
  ### 3. 问题定位
  **可能的原因**:SqlSugar 的 `Updateable` 默认只更新有变化的字段。如果计算出来的值与数据库中的值相同(或接近),可能不会触发更新。
  
  **解决方案**:添加 `IgnoreColumns` 确保强制更新所有字段(已添加)
  
  ## 已修复的问题
  
  ### 1. 添加了 IgnoreColumns
  ```csharp
  await _db.Updateable(recordsToUpdate)
      .IgnoreColumns(x => x.CreateTime)
      .IgnoreColumns(x => x.CreateUser)
      .ExecuteCommandAsync();
  ```
  
  ### 2. 添加了日志记录
  ```csharp
  _logger.LogInformation($"已更新 {recordsToUpdate.Count} 条科技部总经理工资记录(月份:{monthStr})");
  ```
  
  ## 验证步骤
  
  ### 1. 重新编译和重启服务
  ```bash
  cd netcore
  dotnet build
  # 重启服务
  ```
  
  ### 2. 重新执行计算
  ```bash
  POST /api/Extend/lqtechgeneralmanagersalary/calculate/tech-general-manager?year=2025&month=12
  ```
  
  ### 3. 验证结果
  ```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 | 门店名称 | 预期Cell金额 |
  |--------|---------|------------|
  | 1649328471923847170 | 绿纤龙湖店 | 7,140.00 |
  | 1649328471923847172 | 绿纤华润店 | 5,500.00 |
  | 1649328471923847173 | 绿纤静居寺店 | **46,110.00** (当前:37,400.00) |
  | 1649328471923847184 | 绿纤大丰店 | 8,888.00 |
  | 1649328471923847187 | 绿纤明信店 | **2,200.00** (当前:2,000.00) |
  | 1649328471923847175 | 绿纤468店 | **0.00** (当前:66.30) |
  
  ## 注意事项
  
  1. **确保服务已重启**:代码修改后必须重启服务才能生效
  2. **检查日志**:查看是否有 "已更新 X 条科技部总经理工资记录" 的日志
  3. **验证更新时间**:F_UpdateTime 应该更新为当前时间
  4. **对比科技部驾驶舱接口**:Cell金额应该与 `/api/Extend/LqTechDepartmentDashboard/GetStatistics` 接口返回的值一致