所有工资服务导入问题检查报告.md 3.49 KB

所有工资服务导入问题检查报告

检查日期

2025-01-13

检查问题

问题1:循环起始索引错误

  • 问题描述:代码从 i = 1 开始循环,跳过了第一条数据行
  • 正确做法ExcelImportHelper.ToDataTable(filePath, 0, 0) 会将第一行作为标题行,数据从第二行开始,所以 DataTable.Rows[0] 是第一条数据行,应该从 i = 0 开始循环

问题2:Updateable没有使用IgnoreColumns

  • 问题描述:SqlSugar的Updateable默认只更新有变化的字段,如果Excel数据与数据库数据相同,可能不会执行更新
  • 正确做法:使用IgnoreColumns排除CreateTimeCreateUser,确保其他所有字段都被更新

检查结果

服务名称 文件 循环起始索引 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

// 修复前
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:

// 修复前
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. 确保所有服务都使用相同的修复方案,保持代码一致性