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

Merged
hy merged 1 commits from dev into staging 2025-12-08 18:13:36 +08:00
3 changed files with 45 additions and 22 deletions
Showing only changes of commit 1920c6ba9c - Show all commits

View File

@ -138,7 +138,6 @@ namespace Learn.Archives.API.Controllers
//处理数据
var errorExcelInfo = new List<SchoolBusinessImportError>();
var insertInfo = new List<SchoolBusiness>();
var db = schoolService.Context;
foreach (var imp in dataList)
{
var school = await schoolService.GetFirstAsync(s => s.Name == imp.School);
@ -167,7 +166,8 @@ namespace Learn.Archives.API.Controllers
.Select(s => s.Name).ToArrayAsync();
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);
continue;
}

View File

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

View File

@ -14,7 +14,7 @@
"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=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",
"UpdateTable": false
},