Blame view

项目文档相关/docs/test-reports/所有工资服务导入问题检查报告.md 3.49 KB
08d94686   “wangming”   优化工资相关服务类和DTO类,增强...
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
  # 所有工资服务导入问题检查报告
  
  ## 检查日期
  2025-01-13
  
  ## 检查问题
  
  ### 问题1:循环起始索引错误
  - **问题描述**:代码从 `i = 1` 开始循环,跳过了第一条数据行
  - **正确做法**`ExcelImportHelper.ToDataTable(filePath, 0, 0)` 会将第一行作为标题行,数据从第二行开始,所以 `DataTable.Rows[0]` 是第一条数据行,应该从 `i = 0` 开始循环
  
  ### 问题2:Updateable没有使用IgnoreColumns
  - **问题描述**:SqlSugar的`Updateable`默认只更新有变化的字段,如果Excel数据与数据库数据相同,可能不会执行更新
  - **正确做法**:使用`IgnoreColumns`排除`CreateTime`和`CreateUser`,确保其他所有字段都被更新
  
  ## 检查结果
  
  | 服务名称 | 文件 | 循环起始索引 | Updateable | 状态 |
  |---------|------|------------|-----------|------|
  | 店助工资 | LqAssistantSalaryService.cs | ✅ i=0 (已修复) | ✅ 有IgnoreColumns (已修复) | ✅ 已修复 |
  | 健康师工资 | LqSalaryService.cs | ❌ i=1 | ❌ 无IgnoreColumns | ❌ 需要修复 |
  | 科技部老师工资 | LqTechTeacherSalaryService.cs | ❌ i=1 | ❌ 无IgnoreColumns | ❌ 需要修复 |
  | 主任工资 | LqDirectorSalaryService.cs | ❌ i=1 | ❌ 无IgnoreColumns | ❌ 需要修复 |
  | 店长工资 | LqStoreManagerSalaryService.cs | ❌ i=1 | ❌ 无IgnoreColumns | ❌ 需要修复 |
  | 大项目老师工资 | LqMajorProjectTeacherSalaryService.cs | ❌ i=1 | ❌ 无IgnoreColumns | ❌ 需要修复 |
  | 大项目主管工资 | LqMajorProjectDirectorSalaryService.cs | ❌ i=1 | ❌ 无IgnoreColumns | ❌ 需要修复 |
  | 科技部总经理工资 | LqTechGeneralManagerSalaryService.cs | ❌ i=1 | ❌ 无IgnoreColumns | ❌ 需要修复 |
  | 事业部经理工资 | LqBusinessUnitManagerSalaryService.cs | ❌ i=1 | ❌ 无IgnoreColumns | ❌ 需要修复 |
  
  ## 需要修复的文件清单
  
  1. ✅ LqAssistantSalaryService.cs - 已修复
  2. ❌ LqSalaryService.cs - 需要修复
  3. ❌ LqTechTeacherSalaryService.cs - 需要修复
  4. ❌ LqDirectorSalaryService.cs - 需要修复
  5. ❌ LqStoreManagerSalaryService.cs - 需要修复
  6. ❌ LqMajorProjectTeacherSalaryService.cs - 需要修复
  7. ❌ LqMajorProjectDirectorSalaryService.cs - 需要修复
  8. ❌ LqTechGeneralManagerSalaryService.cs - 需要修复
  9. ❌ LqBusinessUnitManagerSalaryService.cs - 需要修复
  
  ## 修复方案
  
  ### 修复1:循环起始索引
  将所有服务的循环从 `i = 1` 改为 `i = 0`
  
  ```csharp
  // 修复前
  for (int i = 1; i < dataTable.Rows.Count; i++)
  
  // 修复后
  // ExcelImportHelper.ToDataTable(filePath, 0, 0)会将第一行作为标题行,数据从第二行开始
  // 所以DataTable.Rows[0]是Excel的第一条数据行,应该从i=0开始循环
  for (int i = 0; i < dataTable.Rows.Count; i++)
  ```
  
  ### 修复2:Updateable使用IgnoreColumns
  将所有服务的Updateable更新改为使用IgnoreColumns:
  
  ```csharp
  // 修复前
  if (recordsToUpdate.Any()) await _db.Updateable(recordsToUpdate).ExecuteCommandAsync();
  
  // 修复后
  if (recordsToUpdate.Any())
  {
      // 使用IgnoreColumns排除CreateTime和CreateUser,确保其他所有字段都被更新
      await _db.Updateable(recordsToUpdate)
          .IgnoreColumns(x => x.CreateTime)
          .IgnoreColumns(x => x.CreateUser)
          .ExecuteCommandAsync();
  }
  ```
  
  ## 注意事项
  
  1. 错误信息中的行号需要调整:从 `第{i + 1}行` 改为 `第{i + 1}行`(保持不变,因为Excel行号=DataTable索引+1)
  2. 确保所有服务都使用相同的修复方案,保持代码一致性