From e286264a833fe52862690ad06d72ad04df5c77dc Mon Sep 17 00:00:00 2001
From: huawei <huawei@2214094776>
Date: 星期三, 17 十二月 2025 16:06:20 +0800
Subject: [PATCH] 看板功能

---
 Dto/Simple/BiViewDto.cs                |   39 +++
 appsettings.json                       |    2 
 Dto/Simple/ChildrenDto.cs              |   35 ++
 entity/MesSimpleCcb.cs                 |   40 +++
 Controllers/Simple/SimpleController.cs |  127 ++++++++++
 Dto/Simple/ResultDto.cs                |   68 +++++
 entity/MesSimple.cs                    |   64 +++++
 service/Simple/SimpleManager.cs        |  212 +++++++++++++++++
 Dto/Simple/TreeViewDto.cs              |   39 +++
 Dto/Simple/MesSimpleDto.cs             |   64 +++++
 10 files changed, 689 insertions(+), 1 deletions(-)

diff --git a/Controllers/Simple/SimpleController.cs b/Controllers/Simple/SimpleController.cs
new file mode 100644
index 0000000..637df1e
--- /dev/null
+++ b/Controllers/Simple/SimpleController.cs
@@ -0,0 +1,127 @@
+using Microsoft.AspNetCore.Mvc;
+using NewPdaSqlServer.Dto.Simple;
+using NewPdaSqlServer.service.Simple;
+
+namespace NewPdaSqlServer.Controllers.Simple;
+
+/// <summary>
+///     看板目录接口控制器
+///     路由前缀: /simple (与Java版本完全一致)
+///     实现与Java SimpleController完全相同的接口
+/// </summary>
+[Route("simple")]
+[ApiController]
+public class SimpleController : ControllerBase
+{
+    private readonly SimpleManager _simpleManager = new();
+
+    /// <summary>
+    ///     获取树形菜单
+    ///     对应Java: @PostMapping("/getTree")
+    /// </summary>
+    /// <returns>树形菜单数据</returns>
+    /// <remarks>
+    ///     请求示例:
+    ///     POST /simple/getTree
+    ///     Content-Type: application/json
+    ///     
+    ///     返回数据结构:
+    ///     {
+    ///         "code": 0,
+    ///         "msg": "请求成功",
+    ///         "count": 2,
+    ///         "data": [
+    ///             {
+    ///                 "id": 1,
+    ///                 "title": "生产看板",
+    ///                 "field": "production",
+    ///                 "spread": true,
+    ///                 "children": [...]
+    ///             }
+    ///         ]
+    ///     }
+    /// </remarks>
+    /// <response code="200">成功获取树形菜单</response>
+    [HttpPost("getTree")]
+    public ResultDto<List<TreeViewDto>> GetTree()
+    {
+        return _simpleManager.GetTree();
+    }
+
+    /// <summary>
+    ///     获取菜单列表
+    ///     对应Java: @PostMapping("/list")
+    ///     注意: 此接口已基本废弃,前端改用树形菜单方式展示
+    /// </summary>
+    /// <returns>菜单列表数据</returns>
+    /// <remarks>
+    ///     请求示例:
+    ///     POST /simple/list
+    ///     Content-Type: application/json
+    ///     
+    ///     返回数据结构:
+    ///     {
+    ///         "code": 0,
+    ///         "msg": "请求成功",
+    ///         "count": 5,
+    ///         "data": [
+    ///             {
+    ///                 "id": 1,
+    ///                 "isTop": 1,
+    ///                 "fid": 0,
+    ///                 "title": "生产效率看板",
+    ///                 "field": "efficiency",
+    ///                 "href": "http://bi.example.com/dashboard1",
+    ///                 "spread": 0,
+    ///                 "disabled": 0,
+    ///                 "lbtime": 10
+    ///             }
+    ///         ]
+    ///     }
+    /// </remarks>
+    /// <response code="200">成功获取菜单列表</response>
+    [HttpPost("list")]
+    public ResultDto<List<MesSimpleDto>> GetList()
+    {
+        return _simpleManager.GetMenuList();
+    }
+
+    /// <summary>
+    ///     根据菜单ID获取BI视图列表
+    ///     对应Java: @GetMapping("/listByMenuId/{menuId}")
+    ///     核心接口:用于获取轮播页面的BI看板链接列表
+    /// </summary>
+    /// <param name="menuId">菜单ID (路径参数)</param>
+    /// <returns>BI视图列表</returns>
+    /// <remarks>
+    ///     请求示例:
+    ///     GET /simple/listByMenuId/102
+    ///     
+    ///     返回数据结构:
+    ///     {
+    ///         "code": 0,
+    ///         "msg": "请求成功",
+    ///         "count": 3,
+    ///         "data": [
+    ///             {
+    ///                 "id": 1001,
+    ///                 "pid": 102,
+    ///                 "name": "质量趋势分析",
+    ///                 "href": "http://bi.example.com/quality/trend",
+    ///                 "lbtime": 10
+    ///             }
+    ///         ]
+    ///     }
+    ///     
+    ///     业务说明:
+    ///     - 返回指定菜单下所有的BI看板链接
+    ///     - lbtime字段从父菜单继承(MES_SIMPLE表)
+    ///     - 前端使用此数据创建iframe进行轮播展示
+    /// </remarks>
+    /// <response code="200">成功获取BI视图列表</response>
+    [HttpGet("listByMenuId/{menuId}")]
+    public ResultDto<List<BiViewDto>> GetBiViews(int menuId)
+    {
+        return _simpleManager.GetBiViewsByMenuId(menuId);
+    }
+}
diff --git a/Dto/Simple/BiViewDto.cs b/Dto/Simple/BiViewDto.cs
new file mode 100644
index 0000000..23cc5b5
--- /dev/null
+++ b/Dto/Simple/BiViewDto.cs
@@ -0,0 +1,39 @@
+using Newtonsoft.Json;
+
+namespace NewPdaSqlServer.Dto.Simple;
+
+/// <summary>
+///     BI瑙嗗浘DTO - 鐢ㄤ簬杞挱椤甸潰鐨勮鍥炬暟鎹�
+/// </summary>
+public class BiViewDto
+{
+    /// <summary>
+    ///     BI瑙嗗浘涓婚敭ID
+    /// </summary>
+    [JsonProperty("id")]
+    public int Id { get; set; }
+
+    /// <summary>
+    ///     鎵�灞炵埗鑿滃崟ID
+    /// </summary>
+    [JsonProperty("pid")]
+    public int? Pid { get; set; }
+
+    /// <summary>
+    ///     BI瑙嗗浘鍚嶇О
+    /// </summary>
+    [JsonProperty("name")]
+    public string? Name { get; set; }
+
+    /// <summary>
+    ///     BI鐪嬫澘鐨勫畬鏁碪RL鍦板潃
+    /// </summary>
+    [JsonProperty("href")]
+    public string? Href { get; set; }
+
+    /// <summary>
+    ///     杞挱鏃堕棿闂撮殧(绉�)
+    /// </summary>
+    [JsonProperty("lbtime")]
+    public int? Lbtime { get; set; }
+}
diff --git a/Dto/Simple/ChildrenDto.cs b/Dto/Simple/ChildrenDto.cs
new file mode 100644
index 0000000..12ca976
--- /dev/null
+++ b/Dto/Simple/ChildrenDto.cs
@@ -0,0 +1,35 @@
+using Newtonsoft.Json;
+
+namespace NewPdaSqlServer.Dto.Simple;
+
+/// <summary>
+///     子菜单项 - 树形结构的子节点
+/// </summary>
+public class ChildrenDto
+{
+    /// <summary>
+    ///     子菜单ID
+    /// </summary>
+    [JsonProperty("id")]
+    public long Id { get; set; }
+
+    /// <summary>
+    ///     子菜单名称
+    /// </summary>
+    [JsonProperty("title")]
+    public string? Title { get; set; }
+
+    /// <summary>
+    ///     英文标识
+    /// </summary>
+    [JsonProperty("field")]
+    public string? Field { get; set; }
+
+    /// <summary>
+    ///     跳转链接
+    ///     如果值为"轮播",则自动生成bi_view.html链接
+    ///     否则使用数据库中配置的原始href
+    /// </summary>
+    [JsonProperty("href")]
+    public string? Href { get; set; }
+}
diff --git a/Dto/Simple/MesSimpleDto.cs b/Dto/Simple/MesSimpleDto.cs
new file mode 100644
index 0000000..7164606
--- /dev/null
+++ b/Dto/Simple/MesSimpleDto.cs
@@ -0,0 +1,64 @@
+using Newtonsoft.Json;
+
+namespace NewPdaSqlServer.Dto.Simple;
+
+/// <summary>
+///     菜单实体DTO - 用于列表展示
+///     与Java版本MesSimplesimple字段完全一致
+/// </summary>
+public class MesSimpleDto
+{
+    /// <summary>
+    ///     自增主键ID
+    /// </summary>
+    [JsonProperty("id")]
+    public long Id { get; set; }
+
+    /// <summary>
+    ///     是否为根节点 (0表示为根节点)
+    /// </summary>
+    [JsonProperty("isTop")]
+    public int? IsTop { get; set; }
+
+    /// <summary>
+    ///     父节点id
+    /// </summary>
+    [JsonProperty("fid")]
+    public long? Fid { get; set; }
+
+    /// <summary>
+    ///     名称
+    /// </summary>
+    [JsonProperty("title")]
+    public string? Title { get; set; }
+
+    /// <summary>
+    ///     英文名
+    /// </summary>
+    [JsonProperty("field")]
+    public string? Field { get; set; }
+
+    /// <summary>
+    ///     地址
+    /// </summary>
+    [JsonProperty("href")]
+    public string? Href { get; set; }
+
+    /// <summary>
+    ///     节点是否初始展开 (0为不展开,1为展开)
+    /// </summary>
+    [JsonProperty("spread")]
+    public int? Spread { get; set; }
+
+    /// <summary>
+    ///     节点是否为展示 (0为展示,1为不展示)
+    /// </summary>
+    [JsonProperty("disabled")]
+    public int? Disabled { get; set; }
+
+    /// <summary>
+    ///     轮播时间(秒)
+    /// </summary>
+    [JsonProperty("lbtime")]
+    public int? Lbtime { get; set; }
+}
diff --git a/Dto/Simple/ResultDto.cs b/Dto/Simple/ResultDto.cs
new file mode 100644
index 0000000..96bed90
--- /dev/null
+++ b/Dto/Simple/ResultDto.cs
@@ -0,0 +1,68 @@
+using Newtonsoft.Json;
+
+namespace NewPdaSqlServer.Dto.Simple;
+
+/// <summary>
+///     缁熶竴杩斿洖缁撴灉灏佽 - 涓嶫ava鐗堟湰瀹屽叏鍏煎
+///     瀛楁鍚嶄娇鐢╟ode/msg/count/data浠ヤ繚鎸佸墠绔吋瀹�
+/// </summary>
+/// <typeparam name="T">鏁版嵁绫诲瀷</typeparam>
+public class ResultDto<T>
+{
+    /// <summary>
+    ///     鐘舵�佺爜: 0=鎴愬姛, 500=澶辫触
+    /// </summary>
+    [JsonProperty("code")]
+    public int Code { get; set; }
+
+    /// <summary>
+    ///     杩斿洖娑堟伅
+    /// </summary>
+    [JsonProperty("msg")]
+    public string? Msg { get; set; }
+
+    /// <summary>
+    ///     杩斿洖鐨勬暟鎹�
+    /// </summary>
+    [JsonProperty("data")]
+    public T? Data { get; set; }
+
+    /// <summary>
+    ///     鏁版嵁鎬绘暟
+    /// </summary>
+    [JsonProperty("count")]
+    public int Count { get; set; }
+
+    /// <summary>
+    ///     鎴愬姛杩斿洖
+    /// </summary>
+    /// <param name="data">鏁版嵁</param>
+    /// <param name="count">鏁版嵁鎬绘暟</param>
+    /// <returns>鎴愬姛缁撴灉</returns>
+    public static ResultDto<T> Ok(T data, int count)
+    {
+        return new ResultDto<T>
+        {
+            Code = 0,
+            Msg = "璇锋眰鎴愬姛",
+            Data = data,
+            Count = count
+        };
+    }
+
+    /// <summary>
+    ///     澶辫触杩斿洖
+    /// </summary>
+    /// <param name="message">閿欒淇℃伅</param>
+    /// <returns>澶辫触缁撴灉</returns>
+    public static ResultDto<T> Error(string message)
+    {
+        return new ResultDto<T>
+        {
+            Code = 500,
+            Msg = message,
+            Data = default,
+            Count = 0
+        };
+    }
+}
diff --git a/Dto/Simple/TreeViewDto.cs b/Dto/Simple/TreeViewDto.cs
new file mode 100644
index 0000000..c5a0423
--- /dev/null
+++ b/Dto/Simple/TreeViewDto.cs
@@ -0,0 +1,39 @@
+using Newtonsoft.Json;
+
+namespace NewPdaSqlServer.Dto.Simple;
+
+/// <summary>
+///     鏍戝舰瑙嗗浘 - 鐢ㄤ簬Layui Tree缁勪欢娓叉煋
+/// </summary>
+public class TreeViewDto
+{
+    /// <summary>
+    ///     鑿滃崟椤笽D
+    /// </summary>
+    [JsonProperty("id")]
+    public long Id { get; set; }
+
+    /// <summary>
+    ///     鑿滃崟鏄剧ず鍚嶇О
+    /// </summary>
+    [JsonProperty("title")]
+    public string? Title { get; set; }
+
+    /// <summary>
+    ///     鑿滃崟鑻辨枃鏍囪瘑
+    /// </summary>
+    [JsonProperty("field")]
+    public string? Field { get; set; }
+
+    /// <summary>
+    ///     鏄惁榛樿灞曞紑瀛愯妭鐐�
+    /// </summary>
+    [JsonProperty("spread")]
+    public bool Spread { get; set; }
+
+    /// <summary>
+    ///     瀛愯彍鍗曞垪琛�
+    /// </summary>
+    [JsonProperty("children")]
+    public List<ChildrenDto>? Children { get; set; }
+}
diff --git a/appsettings.json b/appsettings.json
index 13b877d..5e8a67e 100644
--- a/appsettings.json
+++ b/appsettings.json
@@ -10,7 +10,7 @@
     "TestErpUrl": "http://192.168.1.149:8066/WebService1.asmx/MesToErpinfoTest",
     "ProductionErpUrl": "http://192.168.1.149:8066/WebService1.asmx/MesToErpinfoTest",
     //"DataBaseConn": "Data Source=192.168.1.146,12468;Initial Catalog=TEST_MES;User ID=testUser;Password =qixi1qaz@WSXtest;Encrypt=True;TrustServerCertificate=True;"
-    "DataBaseConn": "Data Source=192.168.8.8;Initial Catalog=YS_MES;User ID=sa;Password =JianHui@2025;Encrypt=True;TrustServerCertificate=True;"
+    "DataBaseConn": "Data Source=192.168.8.8;Initial Catalog=GS_MES;User ID=sa;Password =JianHui@2025;Encrypt=True;TrustServerCertificate=True;"
   },
   "Version": "1.0.0",
   "X-KDApi-AcctID": "6244701c616bff",
diff --git a/entity/MesSimple.cs b/entity/MesSimple.cs
new file mode 100644
index 0000000..46377f8
--- /dev/null
+++ b/entity/MesSimple.cs
@@ -0,0 +1,64 @@
+using SqlSugar;
+
+namespace NewPdaSqlServer.entity;
+
+/// <summary>
+///     菜单维护表
+/// </summary>
+[SugarTable("MES_SIMPLE")]
+public class MesSimple
+{
+    /// <summary>
+    ///     自增列主键
+    /// </summary>
+    [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)]
+    public long Id { get; set; }
+
+    /// <summary>
+    ///     是否为根节点 (0表示为根节点)
+    /// </summary>
+    [SugarColumn(ColumnName = "is_top")]
+    public int? IsTop { get; set; }
+
+    /// <summary>
+    ///     父节点id
+    /// </summary>
+    [SugarColumn(ColumnName = "fid")]
+    public long? Fid { get; set; }
+
+    /// <summary>
+    ///     名称
+    /// </summary>
+    [SugarColumn(ColumnName = "title")]
+    public string? Title { get; set; }
+
+    /// <summary>
+    ///     英文名
+    /// </summary>
+    [SugarColumn(ColumnName = "field")]
+    public string? Field { get; set; }
+
+    /// <summary>
+    ///     地址
+    /// </summary>
+    [SugarColumn(ColumnName = "href")]
+    public string? Href { get; set; }
+
+    /// <summary>
+    ///     节点是否初始展开 (0为不展开,1为展开)
+    /// </summary>
+    [SugarColumn(ColumnName = "spread")]
+    public int? Spread { get; set; }
+
+    /// <summary>
+    ///     节点是否为展示 (0为展示,1为不展示)
+    /// </summary>
+    [SugarColumn(ColumnName = "disabled")]
+    public int? Disabled { get; set; }
+
+    /// <summary>
+    ///     轮播时间(秒)
+    /// </summary>
+    [SugarColumn(ColumnName = "lbtime")]
+    public int? Lbtime { get; set; }
+}
diff --git a/entity/MesSimpleCcb.cs b/entity/MesSimpleCcb.cs
new file mode 100644
index 0000000..364d7bd
--- /dev/null
+++ b/entity/MesSimpleCcb.cs
@@ -0,0 +1,40 @@
+using SqlSugar;
+
+namespace NewPdaSqlServer.entity;
+
+/// <summary>
+///     BI视图表 - 存储每个菜单下具体的BI看板链接
+/// </summary>
+[SugarTable("MES_SIMPLE_CCB")]
+public class MesSimpleCcb
+{
+    /// <summary>
+    ///     主键ID
+    /// </summary>
+    [SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
+    public int Id { get; set; }
+
+    /// <summary>
+    ///     父节点ID (关联MES_SIMPLE.id)
+    /// </summary>
+    [SugarColumn(ColumnName = "pid")]
+    public int? Pid { get; set; }
+
+    /// <summary>
+    ///     BI视图名称
+    /// </summary>
+    [SugarColumn(ColumnName = "name")]
+    public string? Name { get; set; }
+
+    /// <summary>
+    ///     BI看板完整URL地址
+    /// </summary>
+    [SugarColumn(ColumnName = "href")]
+    public string? Href { get; set; }
+
+    /// <summary>
+    ///     轮播时间(秒) - 实际使用时会被父菜单的lbtime覆盖
+    /// </summary>
+    [SugarColumn(ColumnName = "lbtime")]
+    public int? Lbtime { get; set; }
+}
diff --git a/service/Simple/SimpleManager.cs b/service/Simple/SimpleManager.cs
new file mode 100644
index 0000000..91c46a2
--- /dev/null
+++ b/service/Simple/SimpleManager.cs
@@ -0,0 +1,212 @@
+using NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.Simple;
+using NewPdaSqlServer.entity;
+using SqlSugar;
+
+namespace NewPdaSqlServer.service.Simple;
+
+/// <summary>
+///     看板菜单业务管理器
+///     实现与Java版本MesSimpleServiceImpl完全一致的业务逻辑
+/// </summary>
+public class SimpleManager : Repository<MesSimple>
+{
+    /// <summary>
+    ///     获取树形菜单
+    ///     对应Java: getTree()
+    /// </summary>
+    /// <returns>树形菜单数据</returns>
+    public ResultDto<List<TreeViewDto>> GetTree()
+    {
+        try
+        {
+            var tree = ToTree();
+            return ResultDto<List<TreeViewDto>>.Ok(tree, tree.Count);
+        }
+        catch (Exception ex)
+        {
+            return ResultDto<List<TreeViewDto>>.Error(ex.Message);
+        }
+    }
+
+    /// <summary>
+    ///     转换为树形结构
+    ///     对应Java: toTree()
+    /// </summary>
+    /// <returns>树形视图列表</returns>
+    public List<TreeViewDto> ToTree()
+    {
+        return ConvertToTreeViewList(GetTopList());
+    }
+
+    /// <summary>
+    ///     获取菜单列表
+    ///     对应Java: getMenuList()
+    ///     查询条件: disabled=0 且 isTop>0 (排除根节点)
+    /// </summary>
+    /// <returns>菜单列表</returns>
+    public ResultDto<List<MesSimpleDto>> GetMenuList()
+    {
+        try
+        {
+            var list = Db.Queryable<MesSimple>()
+                .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<List<MesSimpleDto>>.Ok(list, list.Count);
+        }
+        catch (Exception ex)
+        {
+            return ResultDto<List<MesSimpleDto>>.Error(ex.Message);
+        }
+    }
+
+    /// <summary>
+    ///     根据菜单ID获取BI视图列表
+    ///     对应Java: getBiViewsByMenuId()
+    /// </summary>
+    /// <param name="menuId">菜单ID</param>
+    /// <returns>BI视图列表</returns>
+    public ResultDto<List<BiViewDto>> GetBiViewsByMenuId(int menuId)
+    {
+        try
+        {
+            // 查询指定菜单下的所有BI视图
+            var list = Db.Queryable<MesSimpleCcb>()
+                .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<MesSimple>()
+                    .Where(m => m.Id == menuId)
+                    .First();
+
+                if (simple != null)
+                {
+                    // 将父菜单的lbtime赋值给所有BI视图
+                    list.ForEach(biView => biView.Lbtime = simple.Lbtime);
+                }
+            }
+
+            return ResultDto<List<BiViewDto>>.Ok(list, list.Count);
+        }
+        catch (Exception ex)
+        {
+            return ResultDto<List<BiViewDto>>.Error(ex.Message);
+        }
+    }
+
+    #region 私有方法
+
+    /// <summary>
+    ///     获取根节点列表
+    ///     查询条件: isTop=0 且 disabled=0
+    /// </summary>
+    /// <returns>根节点列表</returns>
+    private List<MesSimple> GetTopList()
+    {
+        return Db.Queryable<MesSimple>()
+            .Where(m => m.IsTop == 0 && m.Disabled == 0)
+            .ToList();
+    }
+
+    /// <summary>
+    ///     转换为树形视图列表
+    ///     对应Java: convertToTreeViewList()
+    ///     使用并行处理提升性能
+    /// </summary>
+    /// <param name="mesSimpleList">根节点列表</param>
+    /// <returns>树形视图列表</returns>
+    private List<TreeViewDto> ConvertToTreeViewList(List<MesSimple> mesSimpleList)
+    {
+        // 使用Parallel.ForEach实现并行处理,类似Java的CompletableFuture
+        var treeViews = new List<TreeViewDto>();
+        var lockObj = new object();
+
+        Parallel.ForEach(mesSimpleList, mesSimple =>
+        {
+            var treeView = ConvertToTreeView(mesSimple);
+            lock (lockObj)
+            {
+                treeViews.Add(treeView);
+            }
+        });
+
+        return treeViews;
+    }
+
+    /// <summary>
+    ///     转换单个菜单项为树形视图
+    ///     对应Java: convertToTreeView()
+    /// </summary>
+    /// <param name="mesSimple">菜单实体</param>
+    /// <returns>树形视图</returns>
+    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<MesSimple>()
+            .Where(m => m.Disabled == 0 && m.Fid == mesSimple.Id)
+            .ToList();
+
+        // 转换子节点
+        var childrenList = new List<ChildrenDto>();
+        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
+}

--
Gitblit v1.9.3