using ce.autofac.extension;
using learun.iapplication;
using learun.util;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace learun.application
{
///
/// 版 本 EasyCode EC管理后台
/// Copyright (c) 2019-present EC管理有限公司
/// 创建人:tobin
/// 日 期:2019.09.19
/// 描 述:数据字典管理
///
public class DataItemBLL : BLLBase, DataItemIBLL, BLL
{
#region 属性
private readonly DataItemService dataItemService = new DataItemService();
#endregion 属性
#region 数据字典分类
///
/// 分类列表
///
///
public Task> GetClassifyList()
{
return dataItemService.GetClassifyList();
}
///
/// 分类列表
///
/// 关键词(名称/编码)
/// 是否只取有效
///
public async Task> GetClassifyList(string keyword, bool enabledMark = true)
{
List list = (List)await GetClassifyList();
if (enabledMark)
{
list = list.FindAll(t => t.F_EnabledMark.Equals(1));
}
if (!string.IsNullOrEmpty(keyword))
{
list = list.FindAll(t => t.F_ItemName.Contains(keyword) || t.F_ItemCode.Contains(keyword));
}
return list;
}
///
/// 获取分类树形数据
///
///
public async Task> GetClassifyTree()
{
List classifyList = (List)await GetClassifyList();
List treeList = new List();
foreach (var item in classifyList)
{
TreeModel node = new TreeModel();
node.id = item.F_ItemId;
node.text = item.F_ItemName;
node.value = item.F_ItemCode;
node.showcheck = false;
node.checkstate = 0;
node.isexpand = true;
node.parentId = item.F_ParentId;
treeList.Add(node);
}
return treeList.ToTree();
}
///
/// 保存分类数据实体
///
/// 主键
/// 实体
public async Task SaveClassifyEntity(string keyValue, DataItemEntity entity)
{
await dataItemService.SaveClassifyEntity(keyValue, entity);
}
///
/// 删除分类数据
///
/// 主键
public async Task DeleteClassify(string keyValue)
{
await dataItemService.DeleteClassify(keyValue);
}
///
/// 通过编号获取字典分类实体
///
/// 编码
///
public Task GetClassifyEntityByCode(string itemCode)
{
return dataItemService.GetClassifyEntityByCode(itemCode);
}
#endregion 数据字典分类
#region 字典明细
///
/// 获取数据字典明显
///
/// 分类编码
///
public Task> GetDetailList(string itemCode)
{
return dataItemService.GetDetailList(itemCode);
}
///
/// 获取数据字典明显
///
/// 分类编码
/// 关键词(名称/值)
///
public async Task> GetDetailList(string itemCode, string keyword)
{
List list = (List)await GetDetailList(itemCode);
if (!string.IsNullOrEmpty(keyword))
{
list = list.FindAll(t => t.F_ItemName.Contains(keyword) || t.F_ItemValue.Contains(keyword));
}
return list;
}
///
/// 获取数据字典明显
///
/// 分类编号
/// 父级主键
///
public async Task> GetDetailListByParentId(string itemCode, string parentId)
{
List list = (List)await GetDetailList(itemCode);
if (!string.IsNullOrEmpty(parentId))
{
list = list.FindAll(t => t.F_ParentId.ContainsEx(parentId));
}
else
{
list = list.FindAll(t => t.F_ParentId.ContainsEx("0"));
}
return list;
}
///
/// 获取字典明细树形数据
///
/// 分类编号
///
public async Task> GetDetailTree(string itemCode)
{
List list = (List)await GetDetailList(itemCode);
List treeList = new List();
foreach (var item in list)
{
TreeModel node = new TreeModel();
node.id = item.F_ItemDetailId;
node.text = item.F_ItemName;
node.value = item.F_ItemValue;
node.showcheck = false;
node.checkstate = 0;
node.isexpand = true;
node.parentId = item.F_ParentId == null ? "0" : item.F_ParentId;
treeList.Add(node);
}
return treeList.ToTree();
}
///
/// 项目值不能重复
///
/// 主键
/// 项目值
/// 分类编码
///
public async Task ExistDetailItemValue(string keyValue, string itemValue, string itemCode)
{
bool res = false;
List list = (List)await GetDetailList(itemCode);
if (string.IsNullOrEmpty(keyValue))
{
res = list.FindAll(t => t.F_ItemValue.Equals(itemValue)).Count <= 0;
}
else
{
res = list.FindAll(t => t.F_ItemValue.Equals(itemValue) && !t.F_ItemDetailId.Equals(keyValue)).Count <= 0;
}
return res;
}
///
/// 项目名不能重复
///
/// 主键
/// 项目名
/// 分类编码
///
public async Task ExistDetailItemName(string keyValue, string itemName, string itemCode)
{
bool res = false;
List list = (List)await GetDetailList(itemCode);
if (string.IsNullOrEmpty(keyValue))
{
res = list.FindAll(t => t.F_ItemName.Equals(itemName)).Count <= 0;
}
else
{
res = list.FindAll(t => t.F_ItemName.Equals(itemName) && !t.F_ItemDetailId.Equals(keyValue)).Count <= 0;
}
return res;
}
///
/// 保存明细数据实体
///
/// 主键
/// 实体
public async Task SaveDetailEntity(string keyValue, DataItemDetailEntity entity)
{
DataItemEntity classifyEntity = await dataItemService.GetClassifyEntityByKey(entity.F_ItemId);
if (classifyEntity.F_IsTree != 1 || string.IsNullOrEmpty(entity.F_ParentId))
{
entity.F_ParentId = "0";
}
await dataItemService.SaveDetailEntity(keyValue, entity);
}
///
/// 虚拟删除明细数据
///
/// 主键
public async Task DeleteDetail(string keyValue)
{
await dataItemService.DeleteDetail(keyValue);
}
#endregion 字典明细
}
}