using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.Simple;
using NewPdaSqlServer.entity;
using SqlSugar;
namespace NewPdaSqlServer.service.Simple;
///
/// ¿´°å²Ëµ¥ÒµÎñ¹ÜÀíÆ÷
/// ʵÏÖÓëJava°æ±¾MesSimpleServiceImplÍêȫһÖµÄÒµÎñÂß¼
///
public class SimpleManager : Repository
{
///
/// »ñÈ¡Ê÷Ðβ˵¥
/// ¶ÔÓ¦Java: getTree()
///
/// Ê÷Ðβ˵¥Êý¾Ý
public ResultDto> GetTree()
{
try
{
var tree = ToTree();
return ResultDto>.Ok(tree, tree.Count);
}
catch (Exception ex)
{
return ResultDto>.Error(ex.Message);
}
}
///
/// ת»»ÎªÊ÷Ðνṹ
/// ¶ÔÓ¦Java: toTree()
///
/// Ê÷ÐÎÊÓͼÁбí
public List ToTree()
{
return ConvertToTreeViewList(GetTopList());
}
///
/// »ñÈ¡²Ëµ¥Áбí
/// ¶ÔÓ¦Java: getMenuList()
/// ²éѯÌõ¼þ: disabled=0 ÇÒ isTop>0 (Åųý¸ù½Úµã)
///
/// ²Ëµ¥Áбí
public ResultDto> GetMenuList()
{
try
{
var list = Db.Queryable()
.Where(m => m.Disabled == 0 && m.IsTop > 0)
.Select(m => new MesSimpleDto
{
Id = m.Id,
IsTop = m.IsTop,
Fid = m.Fid,
Title = m.Title,
Field = m.Field,
Href = m.Href,
Spread = m.Spread,
Disabled = m.Disabled,
Lbtime = m.Lbtime
})
.ToList();
return ResultDto>.Ok(list, list.Count);
}
catch (Exception ex)
{
return ResultDto>.Error(ex.Message);
}
}
///
/// ¸ù¾Ý²Ëµ¥ID»ñÈ¡BIÊÓͼÁбí
/// ¶ÔÓ¦Java: getBiViewsByMenuId()
///
/// ²Ëµ¥ID
/// BIÊÓͼÁбí
public ResultDto> GetBiViewsByMenuId(int menuId)
{
try
{
// ²éѯָ¶¨²Ëµ¥ÏµÄËùÓÐBIÊÓͼ
var list = Db.Queryable()
.Where(b => b.Pid == menuId && b.Href != null)
.Select(b => new BiViewDto
{
Id = b.Id,
Pid = b.Pid,
Name = b.Name,
Href = b.Href,
Lbtime = b.Lbtime
})
.ToList();
// Èç¹ûÓÐÊý¾Ý£¬»ñÈ¡¸¸²Ëµ¥µÄÂÖ²¥Ê±¼äÅäÖò¢¸³Öµ¸øËùÓÐBIÊÓͼ
if (list.Count > 0)
{
var simple = Db.Queryable()
.Where(m => m.Id == menuId)
.First();
if (simple != null)
{
// ½«¸¸²Ëµ¥µÄlbtime¸³Öµ¸øËùÓÐBIÊÓͼ
list.ForEach(biView => biView.Lbtime = simple.Lbtime);
}
}
return ResultDto>.Ok(list, list.Count);
}
catch (Exception ex)
{
return ResultDto>.Error(ex.Message);
}
}
#region ˽Óз½·¨
///
/// »ñÈ¡¸ù½ÚµãÁбí
/// ²éѯÌõ¼þ: isTop=0 ÇÒ disabled=0
///
/// ¸ù½ÚµãÁбí
private List GetTopList()
{
return Db.Queryable()
.Where(m => m.IsTop == 0 && m.Disabled == 0)
.ToList();
}
///
/// ת»»ÎªÊ÷ÐÎÊÓͼÁбí
/// ¶ÔÓ¦Java: convertToTreeViewList()
/// ʹÓò¢Ðд¦ÀíÌáÉýÐÔÄÜ
///
/// ¸ù½ÚµãÁбí
/// Ê÷ÐÎÊÓͼÁбí
private List ConvertToTreeViewList(List mesSimpleList)
{
// ʹÓÃParallel.ForEachʵÏÖ²¢Ðд¦Àí£¬ÀàËÆJavaµÄCompletableFuture
var treeViews = new List();
var lockObj = new object();
Parallel.ForEach(mesSimpleList, mesSimple =>
{
var treeView = ConvertToTreeView(mesSimple);
lock (lockObj)
{
treeViews.Add(treeView);
}
});
return treeViews;
}
///
/// ת»»µ¥¸ö²Ëµ¥ÏîΪÊ÷ÐÎÊÓͼ
/// ¶ÔÓ¦Java: convertToTreeView()
///
/// ²Ëµ¥ÊµÌå
/// Ê÷ÐÎÊÓͼ
private TreeViewDto ConvertToTreeView(MesSimple mesSimple)
{
var treeView = new TreeViewDto
{
Id = mesSimple.Id,
Title = mesSimple.Title,
Field = mesSimple.Field,
Spread = mesSimple.Spread == 1
};
// ²éѯ×Ó½Úµã
var childList = Db.Queryable()
.Where(m => m.Disabled == 0 && m.Fid == mesSimple.Id)
.ToList();
// ת»»×Ó½Úµã
var childrenList = new List();
foreach (var child in childList)
{
var children = new ChildrenDto
{
Id = child.Id,
Title = child.Title,
Field = child.Field
};
// ´¦Àíhref×Ö¶Î
// Èç¹ûhrefֵΪ"ÂÖ²¥"£¬Ôò×Ô¶¯Éú³ÉÂÖ²¥Ò³ÃæÁ´½Ó
if ("ÂÖ²¥".Equals(child.Href))
{
children.Href = $"bi_view.html?menuId={child.Id}&lbsj={child.Lbtime}";
}
else
{
children.Href = child.Href;
}
childrenList.Add(children);
}
treeView.Children = childrenList;
return treeView;
}
#endregion
}