From 38bde3e8210c41e9d0d219daba0c075cd676efce Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期四, 24 十月 2024 10:20:54 +0800 Subject: [PATCH] 优化dll加载 --- Tiger.Api/Controllers/Test/TestController.R.cs | 148 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 121 insertions(+), 27 deletions(-) diff --git a/Tiger.Api/Controllers/Test/TestController.R.cs b/Tiger.Api/Controllers/Test/TestController.R.cs index c50639e..61c346a 100644 --- a/Tiger.Api/Controllers/Test/TestController.R.cs +++ b/Tiger.Api/Controllers/Test/TestController.R.cs @@ -18,6 +18,13 @@ using Tiger.Model.Sharetronic.Shelf; using Newtonsoft.Json.Linq; using Tiger.Api.iBiz; +using System.Net; +using System.Reflection; +using Swifter.Tools; +using Tiger.Model.Entitys.MES.Position; +using Microsoft.CodeAnalysis.Options; +using System.IO; +using System.Runtime.Loader; namespace Tiger.Api.Controllers.Test { @@ -34,6 +41,21 @@ public IActionResult GetDBSchemaAsync() { return Ok(Biz.Db.DbMaintenance.GetTableInfoList()); + } + + [HttpGet] + public IActionResult GetEntitys(string AssemblyName, string NameSpace) + { + Assembly assembly = Assembly.Load(AssemblyName); + Type[] types = assembly.GetTypes(); + var entitys = types.Where(q => q.GetInterfaces().Contains(typeof(iEntity)) && q.IsClass).ToList(); + var data = entitys.Select(q => new + { + q.Namespace, + q.FullName, + Properties = q.GetProperties().Select(p => new { p.Name, Type = p.PropertyType.Name }).ToList() + }); + return Ok(data); } /// <summary> @@ -86,14 +108,19 @@ [HttpGet] public async Task<IActionResult> Get2Async(string param) { - //var auth = new AuthOption() { UserId = "admin", ByOrg = true, ByWh = true }; + var auth = new AuthOption() { UserId = "admin", ByOrg = true, ByWh = true }; //var data = await Biz.Db.Queryable<BIZ_ERP_PO>().Where(q => q.BILLTYPE == 11) // //.ByAuth("admin", DbAuth.Org | DbAuth.Wh) // .ByAuth(auth) // .ToListAsync(); //data = await Biz.Db.Queryable<BIZ_ERP_PO>().ByAuth("admin", DbAuth.Org).Where(q => q.BILLTYPE == 11).ToListAsync(); - var data = await Biz.Db.Queryable<BIZ_ERP_PO>().Where(q => q.BILLTYPE == 11).ToListAsync(); + //var data = await Biz.Db.Queryable<BIZ_ERP_PO>().Where(q => q.BILLTYPE == 11).ToListAsync(); //var dtl = await Biz.Db.Queryable<BIZ_ERP_PO_DTL>().ByAuth("admin", DbAuth.Org | DbAuth.Wh).Where(q => q.BILLCODE == "AH3301-221000108").ToListAsync(); + var query = Biz.Db.Queryable<WMS_ITEM_PKG>().ByAuth("admin", DbAuth.Org | DbAuth.Wh).Where(t => t.SN == "barcode.SN").First();// + var data = Biz.Db.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER)) + .ByAuth(auth)//.ByAuth("admin", DbAuth.Org | DbAuth.Wh) + .Where((q, s) => s.SN == "input.SN" && q.ACT_LINE == "CurLine.LINE_CODE" && (q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Release.GetValue() || q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Working.GetValue())) + .Select((q, s) => new { Batch = q, SN = s }).First(); return Ok(data); } @@ -140,9 +167,9 @@ //Biz.Db.Fastest<WMS_WAREHOUSE>().BulkUpdate(data, new string[] { "ID" }, new string[] { "UPDATE_TIME", "UPDATE_USER" }); //Biz.Db.Insertable(data, "Interface").ExecuteCommand(); - //var root = new SugarParameter("root", "system01"); - //var dt = Biz.Db.Ado.UseStoredProcedure().GetDataTable("PKG_SYS_GET_MENU", root);//杩斿洖dt - //var data = Biz.Db.Ado.UseStoredProcedure().SqlQuery<SYS_MENU>("PKG_SYS_GET_MENU", root);//杩斿洖List + var root = new SugarParameter("root", "system01"); + var dt = Biz.Db.Ado.UseStoredProcedure().GetDataTable("SP_SYS_GET_MENU", root);//杩斿洖dt + var data = Biz.Db.Ado.UseStoredProcedure().SqlQuery<SYS_MENU>("SP_SYS_GET_MENU", root);//杩斿洖List ; //var data = Biz.Db.Queryable<BIZ_SRM_DLVY>() // .IncludesAllFirstLayer() @@ -172,7 +199,7 @@ //{ // throw dbTran.ErrorException; //} - return Ok(""); + return Ok(data); } /// <summary> /// @@ -281,8 +308,9 @@ public partial class _TestController : ControllerBase { [HttpGet] - public async Task<IActionResult> DoSomething(int duration) + public async Task<IActionResult> DoSomething(int duration, string code) { + Barcode b = new("asdasd"); var begin = DateTime.Now; while ((DateTime.Now - begin).TotalSeconds <= duration) { @@ -292,9 +320,74 @@ ConsoleExt.WriteLine($"Working {begin:mmssfff} ... {(percent > 1 ? 1 : percent):P0} ...", ConsoleColor.Green); } Logger.Default.Info($"{begin:mmssfff} completed"); - return Ok($"{begin:mmssfff} completed"); + return Ok($"{begin:mmssfff} completed {b.DateCode}"); } + [HttpPost] + public async Task<IActionResult> MESSubmitAsync([FromBody] ApiAction<SubmitInput> action) + { + var data = action.Data.Data; + + var act = Biz.Db.Queryable<MES_WO_ACTION>().First(q => q.ID == data); + + + var result = act.OPTION_1?.ToString().JsonToObject<List<WipPkgItem>>(); + + return Ok(result?.ToJson()); + } + + [HttpGet] + public async Task<IActionResult> RefreashPlugin(string path) + { + var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "Tiger.Business.MES"); + // 鏌ユ壘鎸囧畾鍚嶇О鐨勭▼搴忛泦 + //var assembly = Array.Find(assemblies, a => a.GetName().Name == "Tiger.Business.MES"); + + //var ass = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + "\\Tiger.Business.MES1.dll"); + + + var mes1 = new AssemblyLoadContext("mes1", true); + var assembly1 = mes1.LoadFromAssemblyPath(AppDomain.CurrentDomain.BaseDirectory + "\\Tiger.Business1.MES.dll"); + mes1.Unloading += context => { Console.WriteLine($"褰撳墠鍗歌浇{context.Name}绋嬪簭闆嗭細" + string.Join(',', context.Assemblies.Select(x => x.FullName))); }; + assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "Tiger.Business.MES"); + + var mes2 = new AssemblyLoadContext("mes2", true); + var assembly2 = mes2.LoadFromAssemblyPath(AppDomain.CurrentDomain.BaseDirectory + "\\Tiger.Business2.MES.dll"); + mes2.Unloading += context => { Console.WriteLine($"褰撳墠鍗歌浇{context.Name}绋嬪簭闆嗭細" + string.Join(',', context.Assemblies.Select(x => x.FullName))); }; + assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "Tiger.Business.MES"); + + mes1.Unload(); + assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "Tiger.Business.MES"); + mes2.Unload(); + assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetName().Name == "Tiger.Business.MES"); + + + + + + //var newBuilder = new ContainerBuilder(); + + ////AutoFac 閰嶇疆鏂囦欢娉ㄥ叆 + //AutoFacContainer.Init(newBuilder); + //newBuilder.RegisterBuildCallback(scope => + //{ + + // AutoFacContainer.Instance = (IContainer)scope; + //}); + //var newContainer = newBuilder.Build(); + //var trans = AutoFacContainer.Instance.Resolve<ITestNode>().Init("action.ID", "Request.Host.Value", "action.Data?.USER_CODE", "OQC001"); + //var d = trans.GetDefects(); + return Ok($""); + } + } + + /// <summary> + /// MQTT娴嬭瘯鎺у埗鍣� + /// </summary> + [ApiController] + [Route("api/[controller]/[action]")] + public partial class _MqttTestController : ControllerBase + { [HttpGet] public async Task<IActionResult> DoSomething1(int duration) { @@ -308,24 +401,24 @@ /// </summary> /// <param name="action"></param> /// <returns></returns> - [HttpPost] - public async Task<IActionResult> SendMQTTAsync([FromBody] ApiAction action) - { - string msg = ""; - await Task.Run(() => - { - msg = action.ID; - MQTTHelper.Send("TestSendMQTT001", new MQTTMessage() - { - Type = "TestSendMQTT001", - Content = "TestSendMQTT001锛屾祴璇曟秷鎭紒", - Data = "", - DataType = typeof(String).Name, - IsSuccessed = true, - }); - }); - return Ok(MQTTHelper.Send(action.GetResponse(msg))); - } + //[HttpPost] + //public async Task<IActionResult> SendMQTTAsync([FromBody] ApiAction action) + //{ + // string msg = ""; + // await Task.Run(() => + // { + // msg = action.ID; + // MQTTHelper.Send("TestSendMQTT001", new MQTTMessage() + // { + // Type = "TestSendMQTT001", + // Content = "TestSendMQTT001锛屾祴璇曟秷鎭紒", + // Data = "", + // DataType = typeof(String).Name, + // IsSuccessed = true, + // }); + // }); + // return Ok(MQTTHelper.Send(action.GetResponse(msg))); + //} /// <summary> /// DeleteMQTTTopicAsync @@ -338,8 +431,9 @@ string msg = ""; await Task.Run(() => { - msg = MQTTHelper.DeleteTopic(action.ID) ? "鍒犻櫎Topic鎴愬姛" : "鍒犻櫎Topic澶辫触"; + //msg = MQTTHelper.DeleteTopic(action.ID) ? "鍒犻櫎Topic鎴愬姛" : "鍒犻櫎Topic澶辫触"; }); + return Ok(action.GetResponse(msg)); } } -- Gitblit v1.9.3