diff --git a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/LisRequestPlugInsGem.cs b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/LisRequestPlugInsGem.cs new file mode 100644 index 0000000..674404d --- /dev/null +++ b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/LisRequestPlugInsGem.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shentun.Peis.PlugIns.Gem +{ + public class LisRequestPlugInsGem : LisRequestPlugInsBase + { + public LisRequestPlugInsGem(string configParm) : base(configParm) + { + } + + public override async Task Send(LisRequestPluginsInput input) + { + return await base.Send(input); + } + } +} diff --git a/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugIns.cs b/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugIns.cs index bf1a3d9..00fae32 100644 --- a/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugIns.cs +++ b/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugIns.cs @@ -8,9 +8,9 @@ namespace Shentun.Peis.PlugIns { interface IColumnReferencePlugIns { - public List GetAppColumnNames(); + public List GetAppColumns(); public string GetAppFilterColumnName(); - public List GetInterfaceColumnNames(); + public List GetInterfaceColumns(); public Task> GetAppCodeValuesAsync(); public Task> GetAppFilterCodeValuesAsync(); public Task> GetInterfaceCodeValuesAsync(); @@ -37,6 +37,12 @@ namespace Shentun.Peis.PlugIns public int DisplayOrder { get; set; } } + public class ColumnReferenceColumn + { + public string Column { get; set; } + public string Name { get; set; } + } + public class ColumnReferenceTable { public string TableName { get; set; } diff --git a/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs b/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs index 82f441e..1d3cc10 100644 --- a/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs +++ b/src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs @@ -19,8 +19,8 @@ namespace Shentun.Peis.PlugIns protected IConfiguration InterfaceConfig; protected string? ConnctionStr; protected string AppSql; - private string[] _columnNames; - private string[] _interfaceColumnNames; + private List _columnNames; + private List _interfaceColumnNames; public ColumnReferencePlugInsBase(string configParm) { @@ -37,39 +37,83 @@ namespace Shentun.Peis.PlugIns AppSql = InterfaceConfig.GetSection("App").GetSection("Sql").Value; var columnNames = InterfaceConfig.GetSection("App").GetSection("ColumnNames").Value; columnNames = columnNames.Replace(",", ","); - _columnNames = columnNames.Split(','); + var columnNameArry = columnNames.Split(','); + _columnNames = new List(); + foreach (var columnName in columnNameArry) + { + var columns = columnName.Split('='); + if(columns.Length == 2) + { + _columnNames.Add(new ColumnReferenceColumn() + { + Column = columns[0], + Name = columns[1] + }); + } + } columnNames = InterfaceConfig.GetSection("Interface").GetSection("ColumnNames").Value; columnNames = columnNames.Replace(",", ","); - _interfaceColumnNames = columnNames.Split(','); + columnNameArry = columnNames.Split(','); + _interfaceColumnNames = new List(); + foreach (var columnName in columnNameArry) + { + var columns = columnName.Split('='); + if (columns.Length == 2) + { + _interfaceColumnNames.Add(new ColumnReferenceColumn() + { + Column = columns[0], + Name = columns[1] + }); + } + } } - public virtual List GetAppColumnNames() + public virtual List GetAppColumns() { if (_columnNames == null || _columnNames.Count() == 0) { - return new List() + return new List() { - "编码", - "名称", + new ColumnReferenceColumn() + { + Column = "Code", + Name = "编码" + }, + new ColumnReferenceColumn() + { + Column = "DisplayName", + Name = "名称" + } + }; } - return _columnNames.ToList(); + return _columnNames; } - public virtual List GetInterfaceColumnNames() + public virtual List GetInterfaceColumns() { if (_interfaceColumnNames == null || _interfaceColumnNames.Count() == 0) { - return new List() + return new List() { - "编码", - "名称", + new ColumnReferenceColumn() + { + Column = "Code", + Name = "编码" + }, + new ColumnReferenceColumn() + { + Column = "DisplayName", + Name = "名称" + } + }; } - return _interfaceColumnNames.ToList(); + return _interfaceColumnNames; } public virtual async Task> GetAppCodeValuesAsync() { diff --git a/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs b/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs index 413e23d..fe024c6 100644 --- a/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs +++ b/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs @@ -186,8 +186,8 @@ namespace Shentun.Peis.ColumnReferences /// /// /// - [HttpPost("api/app/ColumnReference/GetAppColumnNames")] - public async Task> GetAppColumnNamesAsync(ColumnReferenceIdInputDto input) + [HttpPost("api/app/ColumnReference/GetAppColumns")] + public async Task> GetAppColumnsAsync(ColumnReferenceIdInputDto input) { var entity = await _repository.GetAsync(input.Id); var parmValue = entity.ParmValue; @@ -196,13 +196,9 @@ namespace Shentun.Peis.ColumnReferences var config = configurationBuilder.Build(); var assemblyName = config.GetSection("Interface").GetSection("AssemblyName").Value; var className = config.GetSection("Interface").GetSection("ClassName").Value; - object objectValue = await InvokeAsync(assemblyName, className, parmValue, "GetAppColumnNames"); - List list = new List(); + var list = await InvokeColumnsAsync(assemblyName, className, parmValue, "GetAppColumns"); + - if (objectValue is IEnumerable enumerableObject) - { - list = enumerableObject.Cast().ToList(); - } return list; } public async Task GetAppFilterColumnName(ColumnReferenceIdInputDto input) @@ -214,8 +210,8 @@ namespace Shentun.Peis.ColumnReferences /// /// /// - [HttpPost("api/app/ColumnReference/GetInterfaceColumnNames")] - public async Task> GetInterfaceColumnNamesAsync(ColumnReferenceIdInputDto input) + [HttpPost("api/app/ColumnReference/GetInterfaceColumns")] + public async Task> GetInterfaceColumnsAsync(ColumnReferenceIdInputDto input) { var entity = await _repository.GetAsync(input.Id); var parmValue = entity.ParmValue; @@ -224,13 +220,8 @@ namespace Shentun.Peis.ColumnReferences var config = configurationBuilder.Build(); var assemblyName = config.GetSection("Interface").GetSection("AssemblyName").Value; var className = config.GetSection("Interface").GetSection("ClassName").Value; - object objectValue = await InvokeAsync(assemblyName, className, parmValue, "GetInterfaceColumnNames"); - List list = new List(); - - if (objectValue is IEnumerable enumerableObject) - { - list = enumerableObject.Cast().ToList(); - } + var list = await InvokeColumnsAsync(assemblyName, className, parmValue, "GetInterfaceColumns"); + return list; } /// @@ -382,5 +373,32 @@ namespace Shentun.Peis.ColumnReferences return returnValue; } + private async Task> InvokeColumnsAsync(string assemblyName, string className, string classConstructorArg, string methodName, object[] args = null) + { + Assembly assembly = Assembly.Load(assemblyName); + Type type = assembly.GetType(className); + // 创建类的实例 + object instance = Activator.CreateInstance(type, classConstructorArg); + // 获取方法信息 + MethodInfo method = type.GetMethod(methodName); + // 调用方法,如果方法需要参数,可以传入对应的参数数组,例如: new object[] { arg1, arg2 } + List returnValue; + var isAsync = (method.ReturnType == typeof(Task) || + (method.ReturnType.IsGenericType && method.ReturnType.GetGenericTypeDefinition() == typeof(Task<>))); + if (isAsync) + { + // 使用反射调用方法 + + //object returnValue = method.Invoke(instance, args); + returnValue = await (Task>)method.Invoke(instance, args); + } + else + { + returnValue = (List)method.Invoke(instance, args); + + } + return returnValue; + } + } } diff --git a/src/Shentun.Peis.Domain/ColumnReferences/ColumnReference.cs b/src/Shentun.Peis.Domain/ColumnReferences/ColumnReference.cs index ad1840a..937aa57 100644 --- a/src/Shentun.Peis.Domain/ColumnReferences/ColumnReference.cs +++ b/src/Shentun.Peis.Domain/ColumnReferences/ColumnReference.cs @@ -30,7 +30,7 @@ namespace Shentun.Peis.Models /// 配置参数 /// [Column("parm_value")] - [StringLength(1000)] + [StringLength(2000)] public string ParmValue { get; set; } diff --git a/src/Shentun.Peis.Domain/ThirdInterfaces/ThirdInterface.cs b/src/Shentun.Peis.Domain/ThirdInterfaces/ThirdInterface.cs index bdf055e..824b703 100644 --- a/src/Shentun.Peis.Domain/ThirdInterfaces/ThirdInterface.cs +++ b/src/Shentun.Peis.Domain/ThirdInterfaces/ThirdInterface.cs @@ -33,7 +33,7 @@ namespace Shentun.Peis.ThirdInterfaces /// 配置参数 /// [Column("parm_value")] - [StringLength(1000)] + [StringLength(2000)] public string ParmValue { get; set; } /// diff --git a/test/Shentun.Peis.Application.Tests/ColumnReferenceAppServiceTest.cs b/test/Shentun.Peis.Application.Tests/ColumnReferenceAppServiceTest.cs index 9582182..105f9f9 100644 --- a/test/Shentun.Peis.Application.Tests/ColumnReferenceAppServiceTest.cs +++ b/test/Shentun.Peis.Application.Tests/ColumnReferenceAppServiceTest.cs @@ -39,12 +39,12 @@ namespace Shentun.Peis }; - var newEntity = await _appService.GetAppColumnNamesAsync(entity); + var newEntity = await _appService.GetAppColumnsAsync(entity); if(newEntity != null) { foreach(var column in newEntity) { - _output.WriteLine(column); + _output.WriteLine(column.Name); } } await unitOfWork.CompleteAsync(); @@ -63,12 +63,12 @@ namespace Shentun.Peis }; - var newEntity = await _appService.GetInterfaceColumnNamesAsync(entity); + var newEntity = await _appService.GetInterfaceColumnsAsync(entity); if (newEntity != null) { foreach (var column in newEntity) { - _output.WriteLine(column); + _output.WriteLine(column.Name); } } await unitOfWork.CompleteAsync(); diff --git a/test/Shentun.Peis.ColumnReference.Tests/ColumnReferencePlugInsTest.cs b/test/Shentun.Peis.ColumnReference.Tests/ColumnReferencePlugInsTest.cs index 295caf7..0a1b4be 100644 --- a/test/Shentun.Peis.ColumnReference.Tests/ColumnReferencePlugInsTest.cs +++ b/test/Shentun.Peis.ColumnReference.Tests/ColumnReferencePlugInsTest.cs @@ -27,7 +27,7 @@ namespace Shentun.Peis.PlugIns.Tests configParm = File.ReadAllText(filePath); var columnReferencePlugInsBase = new ColumnReferencePlugInsBase(configParm); - var items = await columnReferencePlugInsBase.GetCodeValuesAsync(); + var items = await columnReferencePlugInsBase.GetAppCodeValuesAsync(); foreach ( var item in items ) { _output.WriteLine(item.Code + item.DisplayName); diff --git a/test/Shentun.Peis.ColumnReference.Tests/appsettings.json b/test/Shentun.Peis.ColumnReference.Tests/appsettings.json index 2146bd8..a7870a0 100644 --- a/test/Shentun.Peis.ColumnReference.Tests/appsettings.json +++ b/test/Shentun.Peis.ColumnReference.Tests/appsettings.json @@ -6,7 +6,7 @@ "CorsOrigins": "https://*.Peis.com,http://localhost:4200,http://localhost:9530,http://192.168.1.108:9530,http://localhost:8080,http://localhost:8081", "RedirectAllowedUrls": "http://localhost:9530", "Sql": "select id::varchar as Code ,display_name as DisplayName ,simple_code as SimpleCode ,display_order as DisplayOrder from asbitem", - "ColumnNames": "编码,名称" + "ColumnNames": "Code=编码,DisplayName=名称" }, "Interface": { //"DbType": "SqlServer", @@ -15,7 +15,7 @@ "ConnectionStrings": "User ID=TJ_LIS;Password=TJ_LIS;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.12.34)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = HIS56)))", "Sql": "select ZHID as Code ,ZHMC as DisplayName from PORTAL56_LIS.vi_tj_testitemgroup", - "ColumnNames": "编码,名称" + "ColumnNames": "Code=编码,DisplayName=名称" }, "ConnectionStrings": { "Default": "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123;"