From 8bbf65f69a4e395fa3d574c954bd35c8fe66dbc9 Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Sun, 28 Apr 2024 16:09:55 +0800 Subject: [PATCH] =?UTF-8?q?LIS=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LisRequestPlugInsBase.cs | 2 +- .../ColumnReferenceAppService.cs | 3 +- .../Enums/ThirdInterfaceTypeFlag.cs | 18 ++++++ .../LisRequests/LisRequestManager.cs | 55 ++++++++++++++++++- .../Shentun.Peis.Domain.csproj | 1 + .../ThirdInterfaces/ThirdInterface.cs | 2 +- .../ThirdInterfaceDbMapping.cs | 1 - .../EntityFrameworkCore/PeisDbContext.cs | 1 - 8 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 src/Shentun.Peis.Domain.Shared/Enums/ThirdInterfaceTypeFlag.cs diff --git a/src/Shentun.ColumnReferencePlugIns/LisRequestPlugInsBase.cs b/src/Shentun.ColumnReferencePlugIns/LisRequestPlugInsBase.cs index 97c4287e..6f138804 100644 --- a/src/Shentun.ColumnReferencePlugIns/LisRequestPlugInsBase.cs +++ b/src/Shentun.ColumnReferencePlugIns/LisRequestPlugInsBase.cs @@ -12,7 +12,7 @@ namespace Shentun.Peis.PlugIns { } - public virtual async Task Send(LisRequestPluginsInput input) + public virtual async Task SendRequest(LisRequestPluginsInput input) { var result = new LisRequestPluginsOut(); return result; diff --git a/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs b/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs index cbc61a1a..4cc8fbed 100644 --- a/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs +++ b/src/Shentun.Peis.Application/ColumnReferences/ColumnReferenceAppService.cs @@ -191,10 +191,11 @@ namespace Shentun.Peis.ColumnReferences await _manager.UpdateSortManyAsync(input); } /// - /// 跟新字段对照 + /// 更新字段对照 /// /// /// + [HttpPost("api/app/ColumnReference/UpdateInterfaceCodeValues")] public async Task UpdateInterfaceCodeValuesAsync(UpdateColumnReferenceInterfaceDto input) { var columnReferenceCode = await _columnReferenceCodeRepository.FindAsync(o => o.ColumnReferenceId == input.ColumnReferenceId && diff --git a/src/Shentun.Peis.Domain.Shared/Enums/ThirdInterfaceTypeFlag.cs b/src/Shentun.Peis.Domain.Shared/Enums/ThirdInterfaceTypeFlag.cs new file mode 100644 index 00000000..126c3171 --- /dev/null +++ b/src/Shentun.Peis.Domain.Shared/Enums/ThirdInterfaceTypeFlag.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Text; + +namespace Shentun.Peis.Enums +{ + public class ThirdInterfaceTypeFlag + { + + [Description("LIS申请")] + public const string LisRequest = "01"; + + + [Description("收费申请")] + public const string ChargeRequest = "02"; + } +} diff --git a/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs b/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs index c4c2f68a..1a65f330 100644 --- a/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs +++ b/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs @@ -1,14 +1,19 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; using Shentun.Peis.Enums; using Shentun.Peis.Models; +using Shentun.Peis.PlugIns; using Shentun.Peis.SysParmValues; using System; using System.Collections.Generic; +using System.IO; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; using Volo.Abp; +using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Services; @@ -22,6 +27,7 @@ namespace Shentun.Peis.LisRequests private readonly IRepository _sysParmValueRepository; private readonly IRepository _primarykeyBuilderRepository; private readonly IRepository _lisRequestRepository; + private readonly IRepository _thirdInterfaceRepository; private readonly SysParmValueManager _sysParmValueManager; public LisRequestManager( IRepository registerCheckAsbitemeRepository, @@ -30,7 +36,8 @@ namespace Shentun.Peis.LisRequests IRepository sysParmValueRepository, IRepository primarykeyBuilderRepository, IRepository lisRequestRepository, - SysParmValueManager sysParmValueManager + SysParmValueManager sysParmValueManager, + IRepository thirdInterfaceRepository ) { this._registerCheckAsbitemeRepository = registerCheckAsbitemeRepository; @@ -40,6 +47,7 @@ namespace Shentun.Peis.LisRequests this._primarykeyBuilderRepository = primarykeyBuilderRepository; this._lisRequestRepository = lisRequestRepository; _sysParmValueManager = sysParmValueManager; + _thirdInterfaceRepository = thirdInterfaceRepository; } @@ -250,7 +258,27 @@ namespace Shentun.Peis.LisRequests } + public async Task SendThirdLisRequest(Guid id) + { + var thirdInterfaces = (await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ChargeRequest)) + .OrderBy(o=>o.DisplayOrder).ToList(); + foreach (var thirdInterface in thirdInterfaces) + { + var lisRequestPluginsInput = new LisRequestPluginsInput() + { + LisRequestId = id + }; + var parmValue = thirdInterface.ParmValue; + var configurationBuilder = new ConfigurationBuilder() + .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue))); + var config = configurationBuilder.Build(); + var assemblyName = config.GetSection("Interface").GetSection("AssemblyName").Value; + var className = config.GetSection("Interface").GetSection("ClassName").Value; + object[] objects = [lisRequestPluginsInput]; + var LisRequestPluginsOut = await InvokeAsync(assemblyName, className, parmValue, "SendRequest", objects); + } + } @@ -385,6 +413,31 @@ namespace Shentun.Peis.LisRequests public Guid SampleGroupId { get; set; } public Guid? LisRequestId { get; set; } } + private async Task InvokeAsync(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 } + LisRequestPluginsOut 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 = (LisRequestPluginsOut)method.Invoke(instance, args); + + } + return returnValue; + } } } diff --git a/src/Shentun.Peis.Domain/Shentun.Peis.Domain.csproj b/src/Shentun.Peis.Domain/Shentun.Peis.Domain.csproj index 77944660..63a9838e 100644 --- a/src/Shentun.Peis.Domain/Shentun.Peis.Domain.csproj +++ b/src/Shentun.Peis.Domain/Shentun.Peis.Domain.csproj @@ -8,6 +8,7 @@ + diff --git a/src/Shentun.Peis.Domain/ThirdInterfaces/ThirdInterface.cs b/src/Shentun.Peis.Domain/ThirdInterfaces/ThirdInterface.cs index 824b703c..83332b33 100644 --- a/src/Shentun.Peis.Domain/ThirdInterfaces/ThirdInterface.cs +++ b/src/Shentun.Peis.Domain/ThirdInterfaces/ThirdInterface.cs @@ -8,7 +8,7 @@ using Volo.Abp.Domain.Entities.Auditing; using Volo.Abp.Domain.Entities; using System.ComponentModel.DataAnnotations; -namespace Shentun.Peis.ThirdInterfaces +namespace Shentun.Peis.Models { [Table("third_interface")] public class ThirdInterface : AuditedEntity, IDisplayName, IHasConcurrencyStamp, IDisplayOrder diff --git a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ThirdInterfaces/ThirdInterfaceDbMapping.cs b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ThirdInterfaces/ThirdInterfaceDbMapping.cs index fa1d3714..6ea80a9a 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ThirdInterfaces/ThirdInterfaceDbMapping.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ThirdInterfaces/ThirdInterfaceDbMapping.cs @@ -2,7 +2,6 @@ using Microsoft.EntityFrameworkCore.Metadata.Builders; using Shentun.Peis.EntityFrameworkCore; using Shentun.Peis.Models; -using Shentun.Peis.ThirdInterfaces; using System; using System.Collections.Generic; using System.Linq; diff --git a/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs b/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs index 30f07f0f..a5c8eed6 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs @@ -13,7 +13,6 @@ using Shentun.Peis.DbMapping.ThirdInterfaces; using Shentun.Peis.L_JYTMXX_TJs; using Shentun.Peis.Models; using Shentun.Peis.RoleMenuInfos; -using Shentun.Peis.ThirdInterfaces; using System; using System.Collections.Generic; using System.IO;