| Controllers/Simple/SimpleController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Dto/Simple/BiViewDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Dto/Simple/ChildrenDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Dto/Simple/MesSimpleDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Dto/Simple/ResultDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Dto/Simple/TreeViewDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| entity/MesSimple.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| entity/MesSimpleCcb.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| service/Simple/SimpleManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Controllers/Simple/SimpleController.cs
@@ -4,123 +4,26 @@ 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) public ResultDto<List<BiViewDto>> GetBiViews(long menuId) { return _simpleManager.GetBiViewsByMenuId(menuId); } Dto/Simple/BiViewDto.cs
@@ -3,37 +3,25 @@ namespace NewPdaSqlServer.Dto.Simple; /// <summary> /// BIè§å¾DTO - ç¨äºè½®æé¡µé¢çè§å¾æ°æ® /// BIè§å¾DTO - ä¸é¨ç¨äºè½®æé¡µé¢å±ç¤º (å¯¹åº NodeType = 1) /// </summary> public class BiViewDto { /// <summary> /// BIè§å¾ä¸»é®ID /// </summary> [JsonProperty("id")] public int Id { get; set; } public long Id { get; set; } [JsonProperty("parentId")] public long? ParentId { get; set; } [JsonProperty("title")] public string? Title { get; set; } [JsonProperty("url")] public string? Url { get; set; } /// <summary> /// æå±ç¶èåID /// è½®æé´é(ç§) /// </summary> [JsonProperty("pid")] public int? Pid { get; set; } /// <summary> /// BIè§å¾åç§° /// </summary> [JsonProperty("name")] public string? Name { get; set; } /// <summary> /// BIçæ¿ç宿´URLå°å /// </summary> [JsonProperty("href")] public string? Href { get; set; } /// <summary> /// è½®ææ¶é´é´é(ç§) /// </summary> [JsonProperty("lbtime")] public int? Lbtime { get; set; } [JsonProperty("duration")] public int? Duration { get; set; } } Dto/Simple/ChildrenDto.cs
ÎļþÒÑɾ³ý Dto/Simple/MesSimpleDto.cs
@@ -1,64 +1,73 @@ using Newtonsoft.Json; using System; namespace NewPdaSqlServer.Dto.Simple; /// <summary> /// èåå®ä½DTO - ç¨äºå表å±ç¤º /// ä¸Javaçæ¬MesSimplesimpleåæ®µå®å ¨ä¸è´ /// èåå®ä½DTO - å¯¹åºæ°ç MES_SIMPLE è¡¨ç»æ /// </summary> public class MesSimpleDto { /// <summary> /// èªå¢ä¸»é®ID /// </summary> [JsonProperty("id")] public long Id { get; set; } /// <summary> /// æ¯å¦ä¸ºæ ¹èç¹ (0è¡¨ç¤ºä¸ºæ ¹èç¹) /// ç¶èç¹ID (NULLä¸ºæ ¹èç¹) /// </summary> [JsonProperty("isTop")] public int? IsTop { get; set; } [JsonProperty("parentId")] public long? ParentId { get; set; } /// <summary> /// ç¶èç¹id /// èç¹ç±»å: 0=ç®å½, 1=页é¢/è½®æ /// </summary> [JsonProperty("fid")] public long? Fid { get; set; } [JsonProperty("nodeType")] public int NodeType { get; set; } /// <summary> /// åç§° /// å±çº§ (0-5) /// </summary> [JsonProperty("nodeLevel")] public int NodeLevel { get; set; } /// <summary> /// å¯ä¸ä¸å¡ç¼ç /// </summary> [JsonProperty("code")] public string? Code { get; set; } /// <summary> /// æ¾ç¤ºæ é¢ /// </summary> [JsonProperty("title")] public string? Title { get; set; } /// <summary> /// è±æå /// 跳转å°å /// </summary> [JsonProperty("field")] public string? Field { get; set; } [JsonProperty("url")] public string? Url { get; set; } /// <summary> /// å°å /// è½®ææ¶é¿(ç§) /// </summary> [JsonProperty("href")] public string? Href { get; set; } [JsonProperty("carouselDuration")] public int? CarouselDuration { get; set; } /// <summary> /// èç¹æ¯å¦åå§å±å¼ (0为ä¸å±å¼ï¼1为å±å¼) /// æ¯å¦é»è®¤å±å¼ /// </summary> [JsonProperty("spread")] public int? Spread { get; set; } [JsonProperty("isExpanded")] public bool IsExpanded { get; set; } /// <summary> /// èç¹æ¯å¦ä¸ºå±ç¤º (0为å±ç¤ºï¼1为ä¸å±ç¤º) /// æ¯å¦å¯ç¨ /// </summary> [JsonProperty("disabled")] public int? Disabled { get; set; } [JsonProperty("isEnabled")] public bool IsEnabled { get; set; } /// <summary> /// è½®ææ¶é´(ç§) /// æåº /// </summary> [JsonProperty("lbtime")] public int? Lbtime { get; set; } [JsonProperty("sortOrder")] public int SortOrder { get; set; } } Dto/Simple/ResultDto.cs
@@ -3,7 +3,6 @@ namespace NewPdaSqlServer.Dto.Simple; /// <summary> /// ç»ä¸è¿åç»æå°è£ - ä¸Javaçæ¬å®å ¨å ¼å®¹ /// åæ®µå使ç¨code/msg/count/dataä»¥ä¿æåç«¯å ¼å®¹ /// </summary> /// <typeparam name="T">æ°æ®ç±»å</typeparam> Dto/Simple/TreeViewDto.cs
@@ -1,39 +1,37 @@ using Newtonsoft.Json; using System.Collections.Generic; namespace NewPdaSqlServer.Dto.Simple; /// <summary> /// æ å½¢è§å¾ - ç¨äºLayui Treeç»ä»¶æ¸²æ /// æ å½¢ç»æDTO - éé Layui Tree ç»ä»¶ /// </summary> public class TreeViewDto { /// <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; } public string? Field { get; set; } // å¯¹åº Code /// <summary> /// æ¯å¦é»è®¤å±å¼åèç¹ /// </summary> [JsonProperty("spread")] public bool Spread { get; set; } public bool Spread { get; set; } // å¯¹åº IsExpanded /// <summary> /// åèåå表 /// è·³è½¬é¾æ¥ (Layui Treeç¹å»æ¶éè¦) /// </summary> [JsonProperty("href")] public string? Href { get; set; } // å¯¹åº Url /// <summary> /// èç¹ç±»å (åç«¯å¾æ 夿便®) /// </summary> [JsonProperty("nodeType")] public int NodeType { get; set; } [JsonProperty("children")] public List<ChildrenDto>? Children { get; set; } public List<TreeViewDto>? Children { get; set; } } entity/MesSimple.cs
@@ -1,64 +1,53 @@ using System; using SqlSugar; namespace NewPdaSqlServer.entity; /// <summary> /// èåç»´æ¤è¡¨ /// çæ¿èåé 置表 (MES_SIMPLE) /// </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; } [SugarColumn(ColumnName = "parent_id", IsNullable = true)] public long? ParentId { get; set; } /// <summary> /// ç¶èç¹id /// </summary> [SugarColumn(ColumnName = "fid")] public long? Fid { get; set; } [SugarColumn(ColumnName = "node_level")] public int NodeLevel { get; set; } /// <summary> /// åç§° /// </summary> [SugarColumn(ColumnName = "node_type")] public int NodeType { get; set; } [SugarColumn(ColumnName = "code")] public string? Code { get; set; } [SugarColumn(ColumnName = "title")] public string? Title { get; set; } /// <summary> /// è±æå /// </summary> [SugarColumn(ColumnName = "field")] public string? Field { get; set; } [SugarColumn(ColumnName = "url")] public string? Url { get; set; } /// <summary> /// å°å /// </summary> [SugarColumn(ColumnName = "href")] public string? Href { get; set; } [SugarColumn(ColumnName = "carousel_duration", IsNullable = true)] public int? CarouselDuration { get; set; } /// <summary> /// èç¹æ¯å¦åå§å±å¼ (0为ä¸å±å¼ï¼1为å±å¼) /// </summary> [SugarColumn(ColumnName = "spread")] public int? Spread { get; set; } [SugarColumn(ColumnName = "is_expanded")] public bool IsExpanded { get; set; } /// <summary> /// èç¹æ¯å¦ä¸ºå±ç¤º (0为å±ç¤ºï¼1为ä¸å±ç¤º) /// </summary> [SugarColumn(ColumnName = "disabled")] public int? Disabled { get; set; } [SugarColumn(ColumnName = "is_enabled")] public bool IsEnabled { get; set; } /// <summary> /// è½®ææ¶é´(ç§) /// </summary> [SugarColumn(ColumnName = "lbtime")] public int? Lbtime { get; set; } [SugarColumn(ColumnName = "sort_order")] public int SortOrder { get; set; } [SugarColumn(ColumnName = "is_deleted")] public bool IsDeleted { get; set; } [SugarColumn(ColumnName = "created_by")] public string? CreatedBy { get; set; } [SugarColumn(ColumnName = "created_at")] public DateTime CreatedAt { get; set; } } entity/MesSimpleCcb.cs
ÎļþÒÑɾ³ý service/Simple/SimpleManager.cs
@@ -1,67 +1,76 @@ using NewPdaSqlServer.DB; using NewPdaSqlServer.DB; // ä½ çRepositoryåºç±»æå¨çå½åç©ºé´ using NewPdaSqlServer.Dto.Simple; using NewPdaSqlServer.entity; 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(); var allNodes = Db.Queryable<MesSimple>() .Where(m => m.IsEnabled && !m.IsDeleted) .OrderBy(m => m.SortOrder) .ToList(); var tree = BuildTree(allNodes, null); return ResultDto<List<TreeViewDto>>.Ok(tree, tree.Count); } catch (Exception ex) { return ResultDto<List<TreeViewDto>>.Error(ex.Message); return ResultDto<List<TreeViewDto>>.Error("è·åæ å½¢èå失败: " + ex.Message); } } /// <summary> /// 转æ¢ä¸ºæ å½¢ç»æ /// 对åºJava: toTree() /// </summary> /// <returns>æ å½¢è§å¾å表</returns> public List<TreeViewDto> ToTree() private List<TreeViewDto> BuildTree(List<MesSimple> allNodes, long? parentId) { return ConvertToTreeViewList(GetTopList()); return allNodes .Where(x => x.ParentId == parentId) .Select(x => new TreeViewDto { Id = x.Id, Title = x.Title, Field = x.Code, Spread = x.IsExpanded, Href = x.Url, NodeType = x.NodeType, Children = BuildTree(allNodes, x.Id) }) .ToList(); } /// <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) .Where(m => m.IsEnabled && !m.IsDeleted) .OrderBy(m => m.SortOrder) .Select(m => new MesSimpleDto { Id = m.Id, IsTop = m.IsTop, Fid = m.Fid, ParentId = m.ParentId, NodeType = m.NodeType, NodeLevel = m.NodeLevel, Code = m.Code, Title = m.Title, Field = m.Field, Href = m.Href, Spread = m.Spread, Disabled = m.Disabled, Lbtime = m.Lbtime Url = m.Url, CarouselDuration = m.CarouselDuration, IsExpanded = m.IsExpanded, IsEnabled = m.IsEnabled, SortOrder = m.SortOrder }) .ToList(); @@ -74,139 +83,72 @@ } /// <summary> /// æ ¹æ®èåIDè·åBIè§å¾å表 /// 对åºJava: getBiViewsByMenuId() /// æ ¹æ®IDè·åè§å¾å表 /// é»è¾åçº§ï¼ /// 1. å æ¾åèç¹ (è½®ææ¨¡å¼) /// 2. å¦ææ²¡åèç¹ï¼ä½èªå·±æURL (å页模å¼)ï¼åè¿åèªå·± /// </summary> /// <param name="menuId">èåID</param> /// <returns>BIè§å¾å表</returns> public ResultDto<List<BiViewDto>> GetBiViewsByMenuId(int menuId) public ResultDto<List<BiViewDto>> GetBiViewsByMenuId(long menuId) { try { // æ¥è¯¢æå®èåä¸çææBIè§å¾ var list = Db.Queryable<MesSimpleCcb>() .Where(b => b.Pid == menuId && b.Href != null) .Select(b => new BiViewDto // 1. é¦å æ¥è¯¢ç¹å»çè¿ä¸ªèç¹æ¬èº« (å¿ é¡»æ¯å¯ç¨ä¸æªå é¤) var selfNode = Db.Queryable<MesSimple>() .First(m => m.Id == menuId && m.IsEnabled && !m.IsDeleted); if (selfNode == null) return ResultDto<List<BiViewDto>>.Error("该èç¹ä¸å卿已ç¦ç¨"); // å®å ¨æ£æ¥ï¼å¦æåç«¯ä¼ äº NodeType=0 ç ID è¿æ¥ï¼è¿éæ¦æª if (selfNode.NodeType == 0) return ResultDto<List<BiViewDto>>.Error("ç®å½èç¹ä¸å¯ç´æ¥é¢è§"); // 2. 夿èªå·±æ¯å¦æ URL // æé¤ç©ºå¼åå ä½ç¬¦ "è½®æ" if (!string.IsNullOrEmpty(selfNode.Url) && selfNode.Url != "è½®æ") { Id = b.Id, Pid = b.Pid, Name = b.Name, Href = b.Href, Lbtime = b.Lbtime }) var selfView = new BiViewDto { Id = selfNode.Id, ParentId = selfNode.ParentId, Title = selfNode.Title, Url = selfNode.Url, Duration = (selfNode.CarouselDuration == null || selfNode.CarouselDuration <= 0) ? 10 : selfNode.CarouselDuration }; return ResultDto<List<BiViewDto>>.Ok(new List<BiViewDto> { selfView }, 1); } // 3. èªå·±æ²¡æ URLï¼æ¥æ¾åç®å½/å项 // æ¥è¯¢ ParentId = menuId ä¸ç±»å为 2 çå项 var childNodes = Db.Queryable<MesSimple>() .Where(b => b.ParentId == menuId && b.NodeType == 2 && b.IsEnabled && !b.IsDeleted) .OrderBy(b => b.SortOrder) .ToList(); // å¦æææ°æ®ï¼è·åç¶èåçè½®ææ¶é´é 置并èµå¼ç»ææBIè§å¾ if (list.Count > 0) if (childNodes.Count > 0) { var simple = Db.Queryable<MesSimple>() .Where(m => m.Id == menuId) .First(); var resultList = childNodes.Select(b => new BiViewDto { Id = b.Id, ParentId = b.ParentId, Title = b.Title, Url = b.Url, // åé¡¹å¦ææ²¡æ¶é´ï¼ç»§æ¿å½å menuId èç¹çæ¶é´é ç½® Duration = (b.CarouselDuration == null || b.CarouselDuration <= 0) ? (selfNode.CarouselDuration ?? 10) : b.CarouselDuration }).ToList(); if (simple != null) { // å°ç¶èåçlbtimeèµå¼ç»ææBIè§å¾ list.ForEach(biView => biView.Lbtime = simple.Lbtime); } return ResultDto<List<BiViewDto>>.Ok(resultList, resultList.Count); } return ResultDto<List<BiViewDto>>.Ok(list, list.Count); // 4. èªå·±æ²¡ URL ä¸ å项乿²¡ URL // è¿å空å表ï¼å端 bi_view.html æ¶å°åä¼å¼¹åºâå½åèå䏿²¡æå¯è½®æçå 容â return ResultDto<List<BiViewDto>>.Ok(new List<BiViewDto>(), 0); } catch (Exception ex) { return ResultDto<List<BiViewDto>>.Error(ex.Message); 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 }