修复 Excel更新学生信息时 关联表无数据的更新所以导致功能为实现

This commit is contained in:
小肥羊 2025-12-08 17:55:50 +08:00
parent f2057db953
commit 1920c6ba9c
3 changed files with 45 additions and 22 deletions

View File

@ -138,7 +138,6 @@ namespace Learn.Archives.API.Controllers
//处理数据 //处理数据
var errorExcelInfo = new List<SchoolBusinessImportError>(); var errorExcelInfo = new List<SchoolBusinessImportError>();
var insertInfo = new List<SchoolBusiness>(); var insertInfo = new List<SchoolBusiness>();
var db = schoolService.Context;
foreach (var imp in dataList) foreach (var imp in dataList)
{ {
var school = await schoolService.GetFirstAsync(s => s.Name == imp.School); var school = await schoolService.GetFirstAsync(s => s.Name == imp.School);
@ -167,7 +166,8 @@ namespace Learn.Archives.API.Controllers
.Select(s => s.Name).ToArrayAsync(); .Select(s => s.Name).ToArrayAsync();
if (adminArr == null || adminArr.Length!= adminNameArr.Length) if (adminArr == null || adminArr.Length!= adminNameArr.Length)
{ {
imp.Error = $"赴校人员未能完全识别成功"; var nStr = string.Join(',', adminNameArr.Where(s => !adminArr.Contains(s)));
imp.Error = $"赴校人员未能完全识别成功 ->{nStr}";
errorExcelInfo.Add(imp); errorExcelInfo.Add(imp);
continue; continue;
} }

View File

@ -456,25 +456,48 @@ namespace Learn.Archives.API.Controllers
s.JoinTime, s.JoinTime,
s.ExitTime, s.ExitTime,
s.Remark}.Any(x => !(x == default || x == null))).ToList(); s.Remark}.Any(x => !(x == default || x == null))).ToList();
// 测试IgnoreColumns是否真实有效 //查询差异
await baseService.AsUpdateable(updateArr) var addInfoUserArr = updateArr.Select(s => s.UserCenterId).ToArray();
.UpdateColumns(s => new var hasUIdArr = await baseService.AsQueryable()
{ .Where(s => addInfoUserArr.Contains(s.UserCenterId))
s.AmountRelief, .Select(s => s.UserCenterId).ToArrayAsync();
s.ReliefApplication, var hasUIdHash = hasUIdArr.ToHashSet();
s.ReliefType, var updateData = new List<Student>(10);
s.ReliefSubTime, var InsertData = new List<Student>(10);
s.StudentType, foreach (var item in updateArr)
s.Status, {
s.JoinTime, if (hasUIdHash.Contains(item.UserCenterId))
s.ExitTime, updateData.Add(item);
s.Remark else
}) InsertData.Add(item);
//更新忽略null并且忽略默认值 (比如int默认值是0就不更新) }
.IgnoreColumns(ignoreAllNullColumns: true, ignoreAllDefaultValue: true) //开启事务
.WhereColumns(it => new { it.UserCenterId }) baseService.Context.Ado
.ExecuteCommandAsync(); .UseTran(() =>
{
baseService.InsertRange(InsertData);
baseService.AsUpdateable(updateData)
.UpdateColumns(s => new
{
s.AmountRelief,
s.ReliefApplication,
s.ReliefType,
s.ReliefSubTime,
s.StudentType,
s.Status,
s.JoinTime,
s.ExitTime,
s.Remark
})
//更新忽略null并且忽略默认值 (比如int默认值是0就不更新)
//如果修改为0会出现修改不了的问题
.IgnoreColumns(ignoreAllNullColumns: true, ignoreAllDefaultValue: true)
.WhereColumns(it => new { it.UserCenterId })
.ExecuteCommand();
return true;
}, ex => { throw ex; });
} }
//写入选科方向
if (userCenterUpdate.Count > 0) if (userCenterUpdate.Count > 0)
await userService.AsUpdateable(userCenterUpdate) await userService.AsUpdateable(userCenterUpdate)
.UpdateColumns(s => new .UpdateColumns(s => new

View File

@ -13,8 +13,8 @@
}, },
"DB": { "DB": {
"ConnectionString": "AllowLoadLocalInfile=true;Server=58.17.132.2;User ID=marking;Password=qwe123!@#;Database=learn.archives;CharSet=utf8mb4;Port=43306;pooling=true;SslMode=None;", "ConnectionString": "AllowLoadLocalInfile=true;Server=58.17.132.2;User ID=marking;Password=qwe123!@#;Database=learn.archives;CharSet=utf8mb4;Port=43306;pooling=true;SslMode=None;",
// //
//"ConnectionString": "AllowLoadLocalInfile=true;Server=rm-2vc20nd3d11g0oh6g2o.rwlb.cn-chengdu.rds.aliyuncs.com;User ID=marking;Password=poiuytPOIUYT098765)(*&^%;Port=3306;Database=learn.archives;CharSet=utf8mb4;pooling=true;SslMode=None", //"ConnectionString": "AllowLoadLocalInfile=true;Server=archives-mysql.23544.com;User ID=archives;Password=MPsSSNuvFO7wBqADXC9zweh9tdOPNwm6;Port=3306;Database=learn.archives;CharSet=utf8mb4;pooling=true;SslMode=None",
"SqlType": "MySql", "SqlType": "MySql",
"UpdateTable": false "UpdateTable": false
}, },