From f5432e77f687c1efb8c1f488c9032f73616efb23 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周四, 15 5月 2025 09:02:56 +0800 Subject: [PATCH] 2 --- PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs | 413 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 214 insertions(+), 199 deletions(-) diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs index a4b95f8..af37ddd 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs @@ -10,12 +10,7 @@ using Volo.Abp.Data; using Volo.Abp.ObjectExtending; using Volo.Abp.ObjectMapping; -using CMS.Plugin.FormulaManagement.Abstractions; -using CMS.Plugin.OrderManagement.Abstractions.Enums; -using CMS.Plugin.OrderManagement.Abstractions.Models; -using CMS.Plugin.OrderManagement.Abstractions; -using CMS.Plugin.ProductManagement.Abstractions; -using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Users; namespace CMS.Plugin.PipeLineLems.Application.Implements; @@ -24,19 +19,18 @@ /// </summary> public class WorkPlanAppService : CMSPluginAppService, IWorkPlanAppService { - private readonly IWorkPlanRepository workPlanRepository; - private readonly IServiceProvider _serviceProvider; + private readonly IWorkPlanRepository _workPlanRepository; private readonly SharedService _sharedService; - + private readonly IServiceProvider _serviceProvider; /// <summary> /// Initializes a new instance of the <see cref="WorkPlanAppService"/> class. /// </summary> /// <param name="WorkPlanRepository">The task job repository.</param> - public WorkPlanAppService(IWorkPlanRepository _WorkPlanRepository, IServiceProvider serviceProvider, SharedService sharedService) + public WorkPlanAppService(IWorkPlanRepository workPlanRepository, SharedService sharedService, IServiceProvider serviceProvider) { - workPlanRepository = _WorkPlanRepository; - _serviceProvider = serviceProvider; + _workPlanRepository = workPlanRepository; _sharedService = sharedService; + _serviceProvider = serviceProvider; } /// <summary> @@ -46,7 +40,18 @@ /// <returns></returns> public virtual async Task<WorkPlanDto> GetAsync(Guid id) { - return ObjectMapper.Map<WorkPlan, WorkPlanDto>(await workPlanRepository.GetAsync(id)); + return ObjectMapper.Map<WorkPlan, WorkPlanDto>(await _workPlanRepository.GetAsync(id)); + } + + /// <summary> + /// 鎸夌収 鍘熸枡鏍囪 鏌ユ壘浣滀笟璁″垝琛� + /// </summary> + /// <param name="name"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public virtual async Task<List<WorkPlan>> FindByDataIdentifierAsync(string dataIdentifier) + { + return await _workPlanRepository.FindByDataIdentifierAsync(dataIdentifier); } /// <summary> @@ -70,8 +75,8 @@ #endregion - var count = await workPlanRepository.GetCountAsync(whereConditions); - var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); + var count = await _workPlanRepository.GetCountAsync(whereConditions); + var list = await _workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); return new PagedResultDto<WorkPlanDto>(count, ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list)); } @@ -109,20 +114,21 @@ { await CheckCreateOrUpdateDtoAsync(input); - var exist = await workPlanRepository.NameExistAsync(input.TaskCode); + var exist = await _workPlanRepository.NameExistAsync(input.TaskCode); if (exist) { throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]); } - var maxSort = await workPlanRepository.GetMaxSortAsync(); + var maxSort = await _workPlanRepository.GetMaxSortAsync(); var sort = input.Sort ?? maxSort; var insertObj = ObjectMapper.Map<WorkPlanCreateDto, WorkPlan>(input); insertObj.Sort = sort; + insertObj.CreatorName = "SuperAdmin"; input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); - await workPlanRepository.InsertAsync(insertObj); + await _workPlanRepository.InsertAsync(insertObj); //if (input.Sort.HasValue && insertObj.Sort != maxSort) //{ @@ -143,8 +149,8 @@ { await CheckCreateOrUpdateDtoAsync(input); - var updateObj = await workPlanRepository.GetAsync(id); - var exist = await workPlanRepository.NameExistAsync(input.TaskCode, updateObj.Id); + var updateObj = await _workPlanRepository.GetAsync(id); + var exist = await _workPlanRepository.NameExistAsync(input.TaskCode, updateObj.Id); if (exist) { throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskCode]); @@ -154,6 +160,8 @@ input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); updateObj.TaskCode = input.TaskCode; + updateObj.WorkPlanStatus = input.WorkPlanStatus; + updateObj.CallMaterialStatus = input.CallMaterialStatus; updateObj.DataIdentifier = input.DataIdentifier; updateObj.MaterialMode = input.MaterialMode; updateObj.Length = input.Length; @@ -180,7 +188,6 @@ updateObj.OuterDiameter = input.OuterDiameter; updateObj.Thickness = input.Thickness; updateObj.Material = input.Material; - updateObj.ProcessRouteNumber = input.ProcessRouteNumber; updateObj.PlannedStartTime = input.PlannedStartTime; updateObj.PlannedEndTime = input.PlannedEndTime; @@ -189,7 +196,7 @@ updateObj.Remark = input.Remark; - await workPlanRepository.UpdateAsync(updateObj); + await _workPlanRepository.UpdateAsync(updateObj); return ObjectMapper.Map<WorkPlan, WorkPlanDto>(updateObj); } @@ -241,7 +248,7 @@ /// <returns></returns> public virtual Task DeleteAsync(Guid id) { - return workPlanRepository.DeleteAsync(id); + return _workPlanRepository.DeleteAsync(id); } /// <summary> @@ -265,7 +272,7 @@ /// <returns></returns> public virtual async Task AdjustSortAsync(Guid id, int sort) { - var list = await workPlanRepository.GetListAsync(null, nameof(WorkPlan.Sort)); + var list = await _workPlanRepository.GetListAsync(null, nameof(WorkPlan.Sort)); if (list != null && list.Any()) { var initSort = 1; @@ -292,7 +299,7 @@ } } - await workPlanRepository.UpdateManyAsync(list); + await _workPlanRepository.UpdateManyAsync(list); } /// <summary> @@ -301,184 +308,167 @@ /// <param name="input"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> - public async Task ImportAsync(WorkPlansImportModel input) + public async Task ImportAsync(WorkPlansImportModel input, string userId, string userAccount) { - //杞崲鏁版嵁 var result = ObjectMapper.Map<List<WorkPlansImportModel.WorkPlanImportModel>, List<WorkPlanInput>>(input.WorkPlans); //await CreatebyApsAsync(result); - await _sharedService.CommonCreatebyApsAsync(result, _serviceProvider, this); + await _sharedService.CommonCreatebyApsAsync(result, _serviceProvider, this, userId, userAccount); + // Check.NotNull(input, nameof(input)); + + // var workPlanCreateDtos = new List<(int RowIndex, WorkPlanCreateDto Item)>(); + // var workPlanUpdateDtos = new List<(int RowIndex, Guid Id, WorkPlanUpdateDto Item)>(); + // var importItems = input.WorkPlans; + + // if (importItems != null && importItems.Any()) + // { + // #region 瀵煎叆鏍¢獙 + + // // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶� + // var duplicateWorkPlans = importItems.GroupBy(x => x.TaskCode).Where(x => x.Count() > 1).ToList(); + // if (duplicateWorkPlans?.Any() == true) + // { + // var duplicateWorkPlanMsgs = duplicateWorkPlans.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅"); + // var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWorkPlanMsgs)}锛岀粓姝㈠鍏�"; + // throw new UserFriendlyException(errorMsg); + // } + + // #endregion + + // foreach (var impItem in importItems) + // { + // if (impItem.TaskCode.IsNullOrWhiteSpace()) + // { + // continue; + // } + + // if (impItem.TaskCode.IsNullOrWhiteSpace()) + // { + // var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊impItem.RowIndex}琛岋細WorkPlan鍚嶇О涓嶈兘涓虹┖"; + // throw new UserFriendlyException(errorMsg); + // } + + // var oldWorkPlan = await workPlanRepository.FindByNameAsync(impItem.TaskCode); + // if (oldWorkPlan != null) + // { + // var workPlanUpdateDto = new WorkPlanUpdateDto + // { + // TaskCode = impItem.TaskCode, + //WorkPlanStatus = impItem.WorkPlanStatus, + //CallMaterialStatus = impItem.CallMaterialStatus, + //DataIdentifier = impItem.DataIdentifier, + //MaterialMode = impItem.MaterialMode, + //Length = impItem.Length, + //MarkingContent = impItem.MarkingContent, + //MarkingPosition = impItem.MarkingPosition, + //CuttingPosition = impItem.CuttingPosition, + //Quantity = impItem.Quantity, + //FlangeThickness = impItem.FlangeThickness, + //FlangeInnerDiameter = impItem.FlangeInnerDiameter, + //WeldingHeatInput = impItem.WeldingHeatInput, + //PipeAllowableStress = impItem.PipeAllowableStress, + //PipeDiameter = impItem.PipeDiameter, + //PipeWallThickness = impItem.PipeWallThickness, + //FactoryCode = impItem.FactoryCode, + //ProductCode = impItem.ProductCode, + //WorkstationCode = impItem.WorkstationCode, + //EquipmentCode = impItem.EquipmentCode, + //WorkpieceName = impItem.WorkpieceName, + //ProcessName = impItem.ProcessName, + //PipeFittingCode = impItem.PipeFittingCode, + //PreSerialNumber = impItem.PreSerialNumber, + //PipeSpecCode = impItem.PipeSpecCode, + //PipeSectionName = impItem.PipeSectionName, + //OuterDiameter = impItem.OuterDiameter, + //Thickness = impItem.Thickness, + //Material = impItem.Material, + //ProcessRouteNumber = impItem.ProcessRouteNumber, + //PlannedStartTime = impItem.PlannedStartTime, + //PlannedEndTime = impItem.PlannedEndTime, + //TeamInfo = impItem.TeamInfo, + //Timestamp = impItem.Timestamp, + //Remark = impItem.Remark, + + // }; + + // workPlanUpdateDtos.Add((impItem.RowIndex, oldWorkPlan.Id, workPlanUpdateDto)); + // } + // else + // { + // var workPlanCreateDto = new WorkPlanCreateDto + // { + // TaskCode = impItem.TaskCode, + //WorkPlanStatus = impItem.WorkPlanStatus, + //CallMaterialStatus = impItem.CallMaterialStatus, + //DataIdentifier = impItem.DataIdentifier, + //MaterialMode = impItem.MaterialMode, + //Length = impItem.Length, + //MarkingContent = impItem.MarkingContent, + //MarkingPosition = impItem.MarkingPosition, + //CuttingPosition = impItem.CuttingPosition, + //Quantity = impItem.Quantity, + //FlangeThickness = impItem.FlangeThickness, + //FlangeInnerDiameter = impItem.FlangeInnerDiameter, + //WeldingHeatInput = impItem.WeldingHeatInput, + //PipeAllowableStress = impItem.PipeAllowableStress, + //PipeDiameter = impItem.PipeDiameter, + //PipeWallThickness = impItem.PipeWallThickness, + //FactoryCode = impItem.FactoryCode, + //ProductCode = impItem.ProductCode, + //WorkstationCode = impItem.WorkstationCode, + //EquipmentCode = impItem.EquipmentCode, + //WorkpieceName = impItem.WorkpieceName, + //ProcessName = impItem.ProcessName, + //PipeFittingCode = impItem.PipeFittingCode, + //PreSerialNumber = impItem.PreSerialNumber, + //PipeSpecCode = impItem.PipeSpecCode, + //PipeSectionName = impItem.PipeSectionName, + //OuterDiameter = impItem.OuterDiameter, + //Thickness = impItem.Thickness, + //Material = impItem.Material, + //ProcessRouteNumber = impItem.ProcessRouteNumber, + //PlannedStartTime = impItem.PlannedStartTime, + //PlannedEndTime = impItem.PlannedEndTime, + //TeamInfo = impItem.TeamInfo, + //Timestamp = impItem.Timestamp, + //Remark = impItem.Remark, + + // }; + + // workPlanCreateDtos.Add((impItem.RowIndex, workPlanCreateDto)); + // } + // } + // } + + // // 鏂板 + // foreach (var workPlanDto in workPlanCreateDtos) + // { + // try + // { + // await CreateAsync(workPlanDto.Item); + // } + // catch (Exception e) + // { + // var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊workPlanDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; + // throw new UserFriendlyException(errorMsg); + // } + // } + + // // 鏇存柊 + // foreach (var workPlanDto in workPlanUpdateDtos) + // { + // try + // { + // await UpdateAsync(workPlanDto.Id, workPlanDto.Item); + // } + // catch (Exception e) + // { + // var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊workPlanDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; + // throw new UserFriendlyException(errorMsg); + // } + // } } - - - public async Task<MesOrderResponse> CreatebyApsAsync(List<WorkPlanInput> input) - { - var response=await _sharedService.CommonCreatebyApsAsync(input, _serviceProvider, this); - - return response; - } - - ///// <summary> - ///// 瀵煎叆浣滀笟璁″垝琛� - ///// </summary> - ///// <param name="input"></param> - ///// <returns></returns> - ///// <exception cref="UserFriendlyException"></exception> - //public async Task ImportAsync(WorkPlansImportModel input) - //{ - // Check.NotNull(input, nameof(input)); - - // var workPlanCreateDtos = new List<(int RowIndex, WorkPlanCreateDto Item)>(); - // var workPlanUpdateDtos = new List<(int RowIndex, Guid Id, WorkPlanUpdateDto Item)>(); - // var importItems = input.WorkPlans; - - // if (importItems != null && importItems.Any()) - // { - // #region 瀵煎叆鏍¢獙 - - // // 鍒ゆ柇鍚嶇О鏄惁閲嶅锛屽苟杈撳嚭绗嚑琛岄噸澶� - // var duplicateWorkPlans = importItems.GroupBy(x => x.TaskCode).Where(x => x.Count() > 1).ToList(); - // if (duplicateWorkPlans?.Any() == true) - // { - // var duplicateWorkPlanMsgs = duplicateWorkPlans.Select(x => $"绗� {string.Join(",", x.Select(x => x.RowIndex))} 琛岋細{x.Key} 鍚嶇О閲嶅"); - // var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝 {string.Join(",", duplicateWorkPlanMsgs)}锛岀粓姝㈠鍏�"; - // throw new UserFriendlyException(errorMsg); - // } - - // #endregion - - // foreach (var impItem in importItems) - // { - // if (impItem.TaskCode.IsNullOrWhiteSpace()) - // { - // continue; - // } - - // if (impItem.TaskCode.IsNullOrWhiteSpace()) - // { - // var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊impItem.RowIndex}琛岋細WorkPlan鍚嶇О涓嶈兘涓虹┖"; - // throw new UserFriendlyException(errorMsg); - // } - - // var oldWorkPlan = await workPlanRepository.FindByNameAsync(impItem.TaskCode); - // if (oldWorkPlan != null) - // { - // var workPlanUpdateDto = new WorkPlanUpdateDto - // { - // TaskCode = impItem.TaskCode, - // DataIdentifier = impItem.DataIdentifier, - // MaterialMode = impItem.MaterialMode, - // Length = impItem.Length, - // MarkingContent = impItem.MarkingContent, - // MarkingPosition = impItem.MarkingPosition, - // CuttingPosition = impItem.CuttingPosition, - // Quantity = impItem.Quantity, - // FlangeThickness = impItem.FlangeThickness, - // FlangeInnerDiameter = impItem.FlangeInnerDiameter, - // WeldingHeatInput = impItem.WeldingHeatInput, - // PipeAllowableStress = impItem.PipeAllowableStress, - // PipeDiameter = impItem.PipeDiameter, - // PipeWallThickness = impItem.PipeWallThickness, - // FactoryCode = impItem.FactoryCode, - // ProductCode = impItem.ProductCode, - // WorkstationCode = impItem.WorkstationCode, - // EquipmentCode = impItem.EquipmentCode, - // WorkpieceName = impItem.WorkpieceName, - // ProcessName = impItem.ProcessName, - // PipeFittingCode = impItem.PipeFittingCode, - // PreSerialNumber = impItem.PreSerialNumber, - // PipeSpecCode = impItem.PipeSpecCode, - // PipeSectionName = impItem.PipeSectionName, - // OuterDiameter = impItem.OuterDiameter, - // Thickness = impItem.Thickness, - // Material = impItem.Material, - // HasMainSignature = impItem.HasMainSignature, - // ProcessRouteNumber = impItem.ProcessRouteNumber, - // PlannedStartTime = impItem.PlannedStartTime, - // PlannedEndTime = impItem.PlannedEndTime, - // TeamInfo = impItem.TeamInfo, - // Timestamp = impItem.Timestamp, - // Remark = impItem.Remark, - - // }; - - // workPlanUpdateDtos.Add((impItem.RowIndex, oldWorkPlan.Id, workPlanUpdateDto)); - // } - // else - // { - // var workPlanCreateDto = new WorkPlanCreateDto - // { - // TaskCode = impItem.TaskCode, - // DataIdentifier = impItem.DataIdentifier, - // MaterialMode = impItem.MaterialMode, - // Length = impItem.Length, - // MarkingContent = impItem.MarkingContent, - // MarkingPosition = impItem.MarkingPosition, - // CuttingPosition = impItem.CuttingPosition, - // Quantity = impItem.Quantity, - // FlangeThickness = impItem.FlangeThickness, - // FlangeInnerDiameter = impItem.FlangeInnerDiameter, - // WeldingHeatInput = impItem.WeldingHeatInput, - // PipeAllowableStress = impItem.PipeAllowableStress, - // PipeDiameter = impItem.PipeDiameter, - // PipeWallThickness = impItem.PipeWallThickness, - // FactoryCode = impItem.FactoryCode, - // ProductCode = impItem.ProductCode, - // WorkstationCode = impItem.WorkstationCode, - // EquipmentCode = impItem.EquipmentCode, - // WorkpieceName = impItem.WorkpieceName, - // ProcessName = impItem.ProcessName, - // PipeFittingCode = impItem.PipeFittingCode, - // PreSerialNumber = impItem.PreSerialNumber, - // PipeSpecCode = impItem.PipeSpecCode, - // PipeSectionName = impItem.PipeSectionName, - // OuterDiameter = impItem.OuterDiameter, - // Thickness = impItem.Thickness, - // Material = impItem.Material, - // HasMainSignature = impItem.HasMainSignature, - // ProcessRouteNumber = impItem.ProcessRouteNumber, - // PlannedStartTime = impItem.PlannedStartTime, - // PlannedEndTime = impItem.PlannedEndTime, - // TeamInfo = impItem.TeamInfo, - // Timestamp = impItem.Timestamp, - // Remark = impItem.Remark, - - // }; - - // workPlanCreateDtos.Add((impItem.RowIndex, workPlanCreateDto)); - // } - // } - // } - - // // 鏂板 - // foreach (var workPlanDto in workPlanCreateDtos) - // { - // try - // { - // await CreateAsync(workPlanDto.Item); - // } - // catch (Exception e) - // { - // var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊workPlanDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; - // throw new UserFriendlyException(errorMsg); - // } - // } - - // // 鏇存柊 - // foreach (var workPlanDto in workPlanUpdateDtos) - // { - // try - // { - // await UpdateAsync(workPlanDto.Id, workPlanDto.Item); - // } - // catch (Exception e) - // { - // var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊workPlanDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; - // throw new UserFriendlyException(errorMsg); - // } - // } - //} /// <summary> /// 瀵煎嚭浣滀笟璁″垝琛� @@ -502,7 +492,7 @@ #endregion - var list = await workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); + var list = await _workPlanRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); var result = ObjectMapper.Map<List<WorkPlan>, List<WorkPlanDto>>(list); var sheets = new Dictionary<string, object> @@ -523,6 +513,8 @@ { Check.NotNull(input, nameof(input)); Check.NotNullOrWhiteSpace(input.TaskCode, "浠诲姟缂栫爜", 256); + Check.NotNull(input.WorkPlanStatus, "璁″垝鐘舵��"); + Check.NotNull(input.CallMaterialStatus, "鍙枡鐘舵��"); Check.NotNull(input.Length, "闀垮害(mm)"); Check.NotNull(input.MarkingPosition, "鎵撶爜浣嶇疆"); Check.NotNull(input.CuttingPosition, "鍒囧壊浣嶇疆"); @@ -533,8 +525,31 @@ Check.NotNull(input.PipeWallThickness, "濂楃鐩村緞(mm)"); Check.NotNull(input.OuterDiameter, "澶栧緞(mm)"); Check.NotNull(input.Thickness, "澹佸帤(mm)"); - Check.NotNull(input.HasMainSignature, "鏄惁涓绘敮绠�"); return Task.CompletedTask; } + + /// <summary> + /// 鏍规嵁鏉′欢鑾峰彇浣滀笟璁″垝琛ㄥ垪琛� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public async Task<List<WorkPlan>> GetListByFilterAsync(Expression<Func<WorkPlan, bool>> whereConditions, CancellationToken cancellationToken = default) + { + return await _workPlanRepository.GetListByFilterAsync(whereConditions); + } + + /// <summary> + /// 鏍规嵁鏉′欢鑾峰彇鍗曚釜浣滀笟璁″垝琛� + /// </summary> + /// <param name="whereConditions"></param> + /// <param name="isMultipleThrowException">鏄惁鏌ヨ鍑哄鏉″氨鎶ラ敊</param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + /// <exception cref="UserFriendlyException"></exception> + public async Task<WorkPlan> GetSingleByFilterAsync(Expression<Func<WorkPlan, bool>> whereConditions, bool is鈥婱ultipleThrowException = false, CancellationToken cancellationToken = default) + { + return await _workPlanRepository.GetSingleByFilterAsync(whereConditions, is鈥婱ultipleThrowException); + } } -- Gitblit v1.9.3