This commit is contained in:
2021-05-20 09:58:58 +08:00
6 changed files with 107 additions and 15 deletions

View File

@@ -15,6 +15,18 @@ namespace Ewide.Core
[Comment("字典类型表")]
public class SysDictType : DEntityBase, IEntityTypeBuilder<SysDictType>
{
/// <summary>
/// 父Id
/// </summary>
[Comment("父Id")]
[Column("Pid", TypeName = "varchar(36)")]
public string Pid { get; set; }
/// <summary>
/// 父Ids
/// </summary>
[Comment("父Ids")]
public string Pids { get; set; }
/// <summary>
/// 名称
/// </summary>

View File

@@ -680,6 +680,16 @@
字典类型表
</summary>
</member>
<member name="P:Ewide.Core.SysDictType.Pid">
<summary>
父Id
</summary>
</member>
<member name="P:Ewide.Core.SysDictType.Pids">
<summary>
父Ids
</summary>
</member>
<member name="P:Ewide.Core.SysDictType.Name">
<summary>
名称
@@ -3994,6 +4004,11 @@
状态(字典 0正常 1停用 2删除
</summary>
</member>
<member name="P:Ewide.Core.Service.AddDictTypeInput.Pid">
<summary>
父Id
</summary>
</member>
<member name="P:Ewide.Core.Service.AddDictTypeInput.Name">
<summary>
名称
@@ -4056,6 +4071,13 @@
<param name="input"></param>
<returns></returns>
</member>
<member name="M:Ewide.Core.Service.SysDictDataService.DeleteDictDataBatch(System.Collections.Generic.List{System.String})">
<summary>
删除字典值 id数组传入
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:Ewide.Core.Service.SysDictDataService.UpdateDictData(Ewide.Core.Service.UpdateDictDataInput)">
<summary>
更新字典值
@@ -4162,6 +4184,15 @@
</summary>
<returns></returns>
</member>
<member name="M:Ewide.Core.Service.SysDictTypeService.CreateNewPids(System.String)">
<summary>
创建Pids格式
如果pid是0顶级节点pids就是 [0];
如果pid不是顶级节点pids就是 pid菜单的 pids + [pid] + ,
</summary>
<param name="pid"></param>
<returns></returns>
</member>
<member name="T:Ewide.Core.Service.EmpExtOrgPosOutput">
<summary>
附属机构和职位参数

View File

@@ -35,6 +35,11 @@ namespace Ewide.Core.Service
public class AddDictTypeInput : DictTypeInput
{
/// <summary>
/// 父Id
/// </summary>
public string Pid { get; set; }
/// <summary>
/// 名称
/// </summary>
@@ -44,7 +49,6 @@ namespace Ewide.Core.Service
/// <summary>
/// 编码
/// </summary>
[Required(ErrorMessage = "字典类型编码不能为空")]
public override string Code { get; set; }
}

View File

@@ -21,9 +21,10 @@ namespace Ewide.Core.Service
public class SysDictDataService : ISysDictDataService, IDynamicApiController, ITransient
{
private readonly IRepository<SysDictData> _sysDictDataRep; // 字典类型表仓储
public SysDictDataService(IRepository<SysDictData> sysDictDataRep)
private readonly IRepository<SysDictType> _sysDictTypeRep;
public SysDictDataService(IRepository<SysDictData> sysDictDataRep, IRepository<SysDictType> sysDictTypeRep)
{
_sysDictTypeRep = sysDictTypeRep;
_sysDictDataRep = sysDictDataRep;
}
@@ -68,7 +69,9 @@ namespace Ewide.Core.Service
{
var isExist = await _sysDictDataRep.AnyAsync(u => (u.Code == input.Code || u.Value == input.Value) && u.TypeId == input.TypeId, false);
if (isExist) throw Oops.Oh(ErrorCode.D3003);
//datatype 的code 为null 则不能添加
var dataType = _sysDictTypeRep.Where(s => s.Id == input.TypeId).FirstOrDefault();
if (string.IsNullOrEmpty(dataType.Code)) throw new Exception("此处类型不能添加数据");
var dictData = input.Adapt<SysDictData>();
await _sysDictDataRep.InsertAsync(dictData);
}
@@ -86,7 +89,21 @@ namespace Ewide.Core.Service
await dictData.DeleteAsync();
}
/// <summary>
/// 删除字典值 id数组传入
/// </summary>
/// <param name="idList"></param>
/// <returns></returns>
[HttpPost("/sysDictData/deleteBatch")]
public async Task DeleteDictDataBatch(List<string> idList)
{
var dictDataList = await _sysDictDataRep.Where(s => idList.Contains(s.Id)).ToListAsync();
if (dictDataList.Count == 0) throw Oops.Oh(ErrorCode.D3004);
dictDataList.ForEach(s =>
{
s.DeleteAsync();
});
}
/// <summary>
/// 更新字典值
/// </summary>

View File

@@ -93,10 +93,13 @@ namespace Ewide.Core.Service
[HttpPost("/sysDictType/add")]
public async Task AddDictType(AddDictTypeInput input)
{
var isExist = await _sysDictTypeRep.AnyAsync(u => u.Name == input.Name || u.Code == input.Code, false);
var isExist = await _sysDictTypeRep.AnyAsync(u => u.Name == input.Name, false);
if (isExist) throw Oops.Oh(ErrorCode.D3001);
var dictTypeEntity = _sysDictTypeRep.Where(s => s.Pid == input.Pid).FirstOrDefault();
if (dictTypeEntity != null && dictTypeEntity.Code != null) throw new Exception("此类型下不能添加子类型");
var dictType = input.Adapt<SysDictType>();
dictType.Pids = await CreateNewPids(input.Pid);
if (input.Code == string.Empty) dictType.Code = null;
await _sysDictTypeRep.InsertAsync(dictType);
}
@@ -125,15 +128,19 @@ namespace Ewide.Core.Service
[HttpPost("/sysDictType/edit"),]
public async Task UpdateDictType(UpdateDictTypeInput input)
{
var isExist = await _sysDictTypeRep.AnyAsync(u => u.Id == input.Id, false);
if (!isExist) throw Oops.Oh(ErrorCode.D3000);
// 排除自己并且判断与其他是否相同
isExist = await _sysDictTypeRep.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id, false);
if (isExist) throw Oops.Oh(ErrorCode.D3001);
if (input.Id == input.Pid) throw Oops.Oh(ErrorCode.D4006);
var result = _sysDictTypeRep.Where(u => u.Id == input.Id).Select(s => new { s.Name, s.Id, s.Code }).ToList().First();
if (result == null) throw Oops.Oh(ErrorCode.D3000);
if (result.Name == input.Name) throw Oops.Oh(ErrorCode.D3001);
// 如果是编辑父id不能为自己的子节点
//var childIdList = await _sysDictTypeRep.DetachedEntities.Where(u => u.Pids.Contains(input.Id.ToString()))
// .Select(u => u.Id).ToListAsync();
//if (childIdList.Contains(input.Pid)) throw Oops.Oh(ErrorCode.D4006);
var dictType = input.Adapt<SysDictType>();
await _sysDictTypeRep.UpdateAsync(dictType, ignoreNullValues: true);
dictType.Pids = await CreateNewPids(input.Pid);
dictType.Code = input.Code == string.Empty ? null : input.Code;
await dictType.UpdateIncludeAsync(new string[] { nameof(SysDictType.Pid), nameof(SysDictType.Pids), nameof(SysDictType.Name), nameof(SysDictType.Code), nameof(SysDictType.Sort), nameof(SysDictType.Remark) }, false);
}
/// <summary>
@@ -185,5 +192,24 @@ namespace Ewide.Core.Service
}).ToList()
}).ToListAsync();
}
/// <summary>
/// 创建Pids格式
/// 如果pid是0顶级节点pids就是 [0];
/// 如果pid不是顶级节点pids就是 pid菜单的 pids + [pid] + ,
/// </summary>
/// <param name="pid"></param>
/// <returns></returns>
private async Task<string> CreateNewPids(string pid)
{
if (pid.Equals(System.Guid.Empty.ToString()))
{
return "[" + System.Guid.Empty + "],";
}
else
{
var dtype = await _sysDictTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == pid);
return dtype.Pids + "[" + pid + "],";
}
}
}
}

View File

@@ -123,6 +123,8 @@ namespace Ewide.Core.Util
{
if (item.Name == currentAssemblyName)
{
var queryList = item.GetDirectories().Where(s => s.Name == appConfigPath);
if (!queryList.Any()) item.CreateSubdirectory(appConfigPath);
targetPath = item.GetDirectories(appConfigPath).FirstOrDefault().FullName;
break;
}
@@ -150,7 +152,7 @@ namespace Ewide.Core.Util
foreach (Type type in types)
{
//if (type.Name.EndsWith("SeedData"))
if(type.Name.EndsWith("SysEmpExtOrgPos"))
if (type.Name.EndsWith("SysEmpExtOrgPos"))
{
object obHelper = Activator.CreateInstance(type);
MethodInfo methodinfo = type.GetMethod("HasData");