using Shentun.Peis.Enums; using Shentun.Peis.Models; using Shentun.Utilities; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp.Domain.Repositories; using Volo.Abp; using Volo.Abp.Domain.Services; using Shentun.Peis.HelperDto; using System.Reflection; namespace Shentun.Peis.ThirdInterfaces { public class ThirdInterfaceManager : DomainService { private readonly IRepository _thirdInterfaceRepository; public ThirdInterfaceManager( IRepository thirdInterfaceRepository ) { _thirdInterfaceRepository = thirdInterfaceRepository; } /// /// 创建 /// /// /// public async Task CreateAsync( ThirdInterface entity ) { Verify(entity); return new ThirdInterface { DisplayName = entity.DisplayName, DisplayOrder = await EntityHelper.CreateMaxDisplayOrder(_thirdInterfaceRepository), IsActive = entity.IsActive, MedicalCenterId = entity.MedicalCenterId, ParmValue = entity.ParmValue, ThirdInterfaceType = entity.ThirdInterfaceType }; } /// /// 更新 /// /// /// /// public void UpdateAsync( ThirdInterface sourceEntity, ThirdInterface targetEntity ) { DataHelper.CheckEntityIsNull(targetEntity); Verify(sourceEntity); if (sourceEntity.DisplayName != targetEntity.DisplayName) { targetEntity.DisplayName = sourceEntity.DisplayName; } targetEntity.IsActive = sourceEntity.IsActive; targetEntity.MedicalCenterId = sourceEntity.MedicalCenterId; targetEntity.ParmValue = sourceEntity.ParmValue; targetEntity.ThirdInterfaceType = sourceEntity.ThirdInterfaceType; } /// /// 删除项目时,同步删除项目结果模板( item_result_template)、参考范围(reference_range)、结果匹配(item_result_match)、组合项目包含的项目(asbitem_detail),项目模板明细(ItemTemplateDetail)。 /// /// /// /// public async Task CheckAndDeleteAsync(Guid id) { await _thirdInterfaceRepository.DeleteAsync(id); } /// /// 修改排序 置顶,置底 /// /// 需要修改的ID /// 修改方式:1 置顶 2 置底 /// public async Task UpdateManySortAsync(Guid id, int SortType) { await EntityHelper.UpdateManySortAsync(_thirdInterfaceRepository, id, SortType); } /// /// 修改排序 拖拽 /// /// /// /// /// public async Task UpdateSortManyAsync(UpdateSortManyDto input) { await EntityHelper.UpdateSortManyAsync(_thirdInterfaceRepository, input); } private void Verify(ThirdInterface entity) { DataHelper.CheckEntityIsNull(entity); DataHelper.CheckStringIsNull(entity.DisplayName, "名称"); DataHelper.CheckStringIsNull(entity.ParmValue, "配置参数"); DataHelper.CheckCharIsYOrN(entity.IsActive, "是否启用"); Type type = typeof(ThirdInterfaceTypeFlag); //从规定的约束内搜索字段 //约束有是静态成员,是公共成员,和返回父级的公共静态成员, //FieldInfo[] fields = type.GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy); //if (fields.Where(o=>o.GetValue(null) == entity.ThirdInterfaceType).Count() == 0) //{ // throw new ArgumentException($"接口类型参数为:{entity.ThirdInterfaceType},是无效值"); //} //if (entity.ThirdInterfaceType != ThirdInterfaceTypeFlag.LisRequest // && entity.ThirdInterfaceType != ThirdInterfaceTypeFlag.ChargeRequest // && entity.ThirdInterfaceType != ThirdInterfaceTypeFlag.ImportLisResult // && entity.ThirdInterfaceType != ThirdInterfaceTypeFlag.ImportPacsResult // && entity.ThirdInterfaceType != ThirdInterfaceTypeFlag.ImportPatientRegister // && entity.ThirdInterfaceType != ThirdInterfaceTypeFlag.TranToWebPeis // && entity.ThirdInterfaceType != ThirdInterfaceTypeFlag.WebAppoint) //{ // throw new ArgumentException($"接口类型参数为:{entity.ThirdInterfaceType},是无效值"); //} } } }