😎修复软删除修改后对应不上的字典值
This commit is contained in:
parent
381724ab81
commit
8cb0417685
@ -119,7 +119,7 @@ public class SysEnumService : IDynamicApiController, ITransient
|
||||
var updatedEnumCodes = sysDictTypeList.Select(u => u.Code);
|
||||
var updatedEnumType = enumTypeList.Where(u => updatedEnumCodes.Contains(u.TypeName)).ToList();
|
||||
var sysDictTypeDict = sysDictTypeList.ToDictionary(u => u.Code, u => u);
|
||||
var (updatedDictTypes, updatedDictDatas, newSysDictDatas) = GetUpdatedDicts(updatedEnumType, sysDictTypeDict);
|
||||
var (updatedDictTypes, updatedDictDatas, newSysDictDatas, delDataIds) = GetUpdatedDicts(updatedEnumType, sysDictTypeDict);
|
||||
|
||||
// 新增的枚举转换字典
|
||||
var newEnumType = enumTypeList.Where(u => !updatedEnumCodes.Contains(u.TypeName)).ToList();
|
||||
@ -132,6 +132,12 @@ public class SysEnumService : IDynamicApiController, ITransient
|
||||
// or SqlSugar.DbType.GaussDB
|
||||
// or SqlSugar.DbType.Kdbndp;
|
||||
|
||||
// 软删除多余的枚举字典
|
||||
if (delDataIds != null && delDataIds.Any())
|
||||
await _db.Updateable<SysDictData>().Where(u => delDataIds.Contains(u.Id))
|
||||
.SetColumns(u => u.IsDelete, true)
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
// 执行数据库操作
|
||||
if (updatedDictTypes.Count > 0)
|
||||
{
|
||||
@ -242,11 +248,12 @@ public class SysEnumService : IDynamicApiController, ITransient
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
private (List<SysDictType>, List<SysDictData>, List<SysDictData>) GetUpdatedDicts(List<EnumTypeOutput> updatedEnumType, Dictionary<string, SysDictType> sysDictTypeDict)
|
||||
private (List<SysDictType>, List<SysDictData>, List<SysDictData>, List<long>) GetUpdatedDicts(List<EnumTypeOutput> updatedEnumType, Dictionary<string, SysDictType> sysDictTypeDict)
|
||||
{
|
||||
var updatedSysDictTypes = new List<SysDictType>();
|
||||
var updatedSysDictData = new List<SysDictData>();
|
||||
var newSysDictData = new List<SysDictData>();
|
||||
var deleteDictDataIds = new List<long>();
|
||||
foreach (var e in updatedEnumType)
|
||||
{
|
||||
if (!sysDictTypeDict.TryGetValue(e.TypeName, out var value))
|
||||
@ -299,9 +306,11 @@ public class SysEnumService : IDynamicApiController, ITransient
|
||||
}
|
||||
}
|
||||
|
||||
// 删除的情况暂不处理
|
||||
// 删除的情况处理
|
||||
var ids = updatedDictData.Where(u => e.EnumEntities.All(v => v.Name != u.Code || v.Value.ToString() != u.Value)).Select(u => u.Id).ToList();
|
||||
if (ids.Count > 0) deleteDictDataIds.AddRange(ids);
|
||||
}
|
||||
|
||||
return (updatedSysDictTypes, updatedSysDictData, newSysDictData);
|
||||
return (updatedSysDictTypes, updatedSysDictData, newSysDictData, deleteDictDataIds);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user