From b7308bba3d7ffad271ce7fc7a93c8c45d76be87d Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期五, 13 六月 2025 17:21:03 +0800 Subject: [PATCH] 优化印尼佳通-硫化胚胎出入库逻辑策略优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/App_Start/SwaggerControllerDescProvider.cs | 82 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 82 insertions(+), 0 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/App_Start/SwaggerControllerDescProvider.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/App_Start/SwaggerControllerDescProvider.cs new file mode 100644 index 0000000..10ba610 --- /dev/null +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/App_Start/SwaggerControllerDescProvider.cs @@ -0,0 +1,82 @@ +锘縰sing Swashbuckle.Swagger; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Xml; + +namespace HH.WCS.Mobox3.FJJT { + /// <summary> + /// swagger 鏄剧ず鎺у埗鍣ㄧ殑鎻忚堪 + /// </summary> + public class SwaggerCacheProvider : ISwaggerProvider + { + private readonly ISwaggerProvider _swaggerProvider; + private static ConcurrentDictionary<string, SwaggerDocument> _cache = new ConcurrentDictionary<string, SwaggerDocument>(); + private readonly string _xmlPath; + + /// <summary> + /// + /// </summary> + /// <param name="swaggerProvider"></param> + /// <param name="xmlpath">xml鏂囨。璺緞</param> + public SwaggerCacheProvider(ISwaggerProvider swaggerProvider, string xmlpath) + { + _swaggerProvider = swaggerProvider; + _xmlPath = xmlpath; + } + + public SwaggerDocument GetSwagger(string rootUrl, string apiVersion) + { + var cacheKey = string.Format("{0}_{1}", rootUrl, apiVersion); + //鍙鍙栦竴娆�+ if (!_cache.TryGetValue(cacheKey, out SwaggerDocument srcDoc)) + { + srcDoc = _swaggerProvider.GetSwagger(rootUrl, apiVersion); + + srcDoc.vendorExtensions = new Dictionary<string, object> + { + { "ControllerDesc", GetControllerDesc() } + }; + _cache.TryAdd(cacheKey, srcDoc); + } + return srcDoc; + } + + /// <summary> + /// 浠嶢PI鏂囨。涓鍙栨帶鍒跺櫒鎻忚堪 + /// </summary> + /// <returns>鎵�湁鎺у埗鍣ㄦ弿杩�/returns> + public ConcurrentDictionary<string, string> GetControllerDesc() + { + ConcurrentDictionary<string, string> controllerDescDict = new ConcurrentDictionary<string, string>(); + if (File.Exists(_xmlPath)) + { + XmlDocument xmldoc = new XmlDocument(); + xmldoc.Load(_xmlPath); + + string[] arrPath; + int cCount = "Controller".Length; + foreach (XmlNode node in xmldoc.SelectNodes("//member")) + { + string type = node.Attributes["name"].Value; + if (type.StartsWith("T:")) + { + arrPath = type.Split('.'); + string controllerName = arrPath[arrPath.Length - 1]; + if (controllerName.EndsWith("Controller")) //鎺у埗鍣�+ { + //鑾峰彇鎺у埗鍣ㄦ敞閲�+ XmlNode summaryNode = node.SelectSingleNode("summary"); + string key = controllerName.Remove(controllerName.Length - cCount, cCount); + if (summaryNode != null && !string.IsNullOrEmpty(summaryNode.InnerText) && !controllerDescDict.ContainsKey(key)) + { + controllerDescDict.TryAdd(key, summaryNode.InnerText.Trim()); + } + } + } + } + } + return controllerDescDict; + } + } +} -- Gitblit v1.9.1