| | |
| | | using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType; |
| | | using CMS.Plugin.HIAWms.Application.Contracts.Services; |
| | | using CMS.Plugin.HIAWms.Domain.Shared; |
| | | using CmsQueryExtensions; |
| | | using CMS.Plugin.HIAWms.Domain.WmsMaterialType; |
| | | using CmsQueryExtensions.Extension; |
| | | using System.Linq.Expressions; |
| | | using Volo.Abp; |
| | | using Volo.Abp.Application.Dtos; |
| | | using Volo.Abp.Data; |
| | | using Volo.Abp.ObjectExtending; |
| | | using Volo.Abp.ObjectMapping; |
| | | using CmsQueryExtensions.Entitys; |
| | | |
| | | namespace CMS.Plugin.HIAWms.Application.Implements; |
| | | |
| | | using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType; |
| | | using CMS.Plugin.HIAWms.Application.Contracts.Services; |
| | | using CMS.Plugin.HIAWms.Domain.Shared; |
| | | using CmsQueryExtensions; |
| | | using CmsQueryExtensions.Extension; |
| | | using System.Linq.Expressions; |
| | | using Volo.Abp; |
| | | using Volo.Abp.Application.Dtos; |
| | | using Volo.Abp.Data; |
| | | using Volo.Abp.ObjectExtending; |
| | | using CmsQueryExtensions.Entitys; |
| | | using CMS.Plugin.HIAWms.Domain.WmsMaterialTypes; |
| | | |
| | | namespace CMS.Plugin.HIAWms.Application.Implements; |
| | | |
| | | /// <summary> |
| | | /// ç©ælç±»åä¿¡æ¯åºç¨æå¡ |
| | | /// </summary> |
| | | public class WmsMaterialTypeAppService : CMSPluginAppService, IWmsMaterialTypeAppService |
| | | { |
| | | private readonly IWmsMaterialTypeRepository _WmsMaterialTypeRepository; |
| | | |
| | | public class WmsMaterialTypeAppService : CMSPluginAppService, IWmsMaterialTypeAppService |
| | | { |
| | | private readonly IWmsMaterialTypeRepository _WmsMaterialTypeRepository; |
| | | |
| | | /// <summary> |
| | | /// Initializes a new instance of the <see cref="WmsMaterialTypeAppService"/> class. |
| | | /// </summary> |
| | | /// <param name="WmsMaterialTypeRepository">The task job repository.</param> |
| | | public WmsMaterialTypeAppService(IWmsMaterialTypeRepository WmsMaterialTypeRepository) |
| | | { |
| | | _WmsMaterialTypeRepository = WmsMaterialTypeRepository; |
| | | } |
| | | |
| | | public WmsMaterialTypeAppService(IWmsMaterialTypeRepository WmsMaterialTypeRepository) |
| | | { |
| | | _WmsMaterialTypeRepository = WmsMaterialTypeRepository; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åæå®ç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <returns></returns> |
| | | public virtual async Task<WmsMaterialTypeDto> GetAsync(Guid id) |
| | | { |
| | | return ObjectMapper.Map<WmsMaterialType, WmsMaterialTypeDto>(await _WmsMaterialTypeRepository.GetAsync(id)); |
| | | } |
| | | |
| | | public virtual async Task<WmsMaterialTypeDto> GetAsync(Guid id) |
| | | { |
| | | return ObjectMapper.Map<WmsMaterialType, WmsMaterialTypeDto>(await _WmsMaterialTypeRepository.GetAsync(id)); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å页è·åç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | public virtual async Task<PagedResultDto<WmsMaterialTypeDto>> GetListAsync(GetWmsMaterialTypeInput input) |
| | | { |
| | | Check.NotNull(input, nameof(input)); |
| | | |
| | | if (input.Sorting.IsNullOrWhiteSpace()) |
| | | { |
| | | input.Sorting = nameof(WmsMaterialType.Sort); |
| | | } |
| | | |
| | | public virtual async Task<PagedResultDto<WmsMaterialTypeDto>> GetListAsync(GetWmsMaterialTypeInput input) |
| | | { |
| | | Check.NotNull(input, nameof(input)); |
| | | |
| | | if (input.Sorting.IsNullOrWhiteSpace()) |
| | | { |
| | | input.Sorting = nameof(WmsMaterialType.Sort); |
| | | } |
| | | |
| | | #region 卿æé æ¥è¯¢æ¡ä»¶ |
| | | |
| | | |
| | | //卿æé æ¥è¯¢æ¡ä»¶ |
| | | var whereConditions = DynamicGetQueryParams(input); |
| | | |
| | | #endregion |
| | | |
| | | var count = await _WmsMaterialTypeRepository.GetCountAsync(whereConditions); |
| | | var list = await _WmsMaterialTypeRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); |
| | | |
| | | return new PagedResultDto<WmsMaterialTypeDto>(count, ObjectMapper.Map<List<WmsMaterialType>, List<WmsMaterialTypeDto>>(list)); |
| | | } |
| | | |
| | | var whereConditions = DynamicGetQueryParams(input); |
| | | |
| | | #endregion |
| | | |
| | | var count = await _WmsMaterialTypeRepository.GetCountAsync(whereConditions); |
| | | var list = await _WmsMaterialTypeRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); |
| | | |
| | | return new PagedResultDto<WmsMaterialTypeDto>(count, ObjectMapper.Map<List<WmsMaterialType>, List<WmsMaterialTypeDto>>(list)); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 卿æé æ¥è¯¢æ¡ä»¶ |
| | | /// </summary> |
| | | /// <param name="input">è¾å
¥åæ°</param> |
| | | /// <returns></returns> |
| | | private FunReturnResultModel<Expression<Func<WmsMaterialType, bool>>> DynamicGetQueryParams(GetWmsMaterialTypeInput input) |
| | | { |
| | | private FunReturnResultModel<Expression<Func<WmsMaterialType, bool>>> DynamicGetQueryParams(GetWmsMaterialTypeInput input) |
| | | { |
| | | //卿æé æ¥è¯¢æ¡ä»¶ |
| | | var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsMaterialType, GetWmsMaterialTypeInput>(input); |
| | | if (!whereConditions.IsSuccess) |
| | | { |
| | | throw new Exception("卿æé æ¥è¯¢æ¡ä»¶å¤±è´¥:" + whereConditions.ErrMsg); |
| | | } |
| | | |
| | | var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsMaterialType, GetWmsMaterialTypeInput>(input); |
| | | if (!whereConditions.IsSuccess) |
| | | { |
| | | throw new Exception("卿æé æ¥è¯¢æ¡ä»¶å¤±è´¥:" + whereConditions.ErrMsg); |
| | | } |
| | | |
| | | //ä¹å¯å次èªå®ä¹æå»ºæ¥è¯¢æ¡ä»¶ |
| | | Expression<Func<WmsMaterialType, bool>> extendExpression = a => a.IsDeleted == false; |
| | | Expression<Func<WmsMaterialType, bool>> extendExpression = a => a.IsDeleted == false; |
| | | // ä½¿ç¨ System.Linq.PredicateBuilder ç And |
| | | var pres = (System.Linq.Expressions.Expression<Func<WmsMaterialType, bool>>)(whereConditions.data); |
| | | whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); |
| | | |
| | | return whereConditions; |
| | | } |
| | | |
| | | var pres = (System.Linq.Expressions.Expression<Func<WmsMaterialType, bool>>)(whereConditions.data); |
| | | whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); |
| | | |
| | | return whereConditions; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ°å»ºç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="UserFriendlyException"></exception> |
| | | public virtual async Task<WmsMaterialTypeDto> CreateAsync(WmsMaterialTypeCreateDto input) |
| | | { |
| | | await CheckCreateOrUpdateDtoAsync(input); |
| | | |
| | | var exist = await _WmsMaterialTypeRepository.NameExistAsync(input.MaterialTypeCode); |
| | | if (exist) |
| | | { |
| | | throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialTypeCode]); |
| | | } |
| | | |
| | | var maxSort = await _WmsMaterialTypeRepository.GetMaxSortAsync(); |
| | | var sort = input.Sort ?? maxSort; |
| | | |
| | | var insertObj = ObjectMapper.Map<WmsMaterialTypeCreateDto, WmsMaterialType>(input); |
| | | insertObj.Sort = sort; |
| | | input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); |
| | | |
| | | public virtual async Task<WmsMaterialTypeDto> CreateAsync(WmsMaterialTypeCreateDto input) |
| | | { |
| | | await CheckCreateOrUpdateDtoAsync(input); |
| | | |
| | | var exist = await _WmsMaterialTypeRepository.NameExistAsync(input.MaterialTypeCode); |
| | | if (exist) |
| | | { |
| | | throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialTypeCode]); |
| | | } |
| | | |
| | | var maxSort = await _WmsMaterialTypeRepository.GetMaxSortAsync(); |
| | | var sort = input.Sort ?? maxSort; |
| | | |
| | | var insertObj = ObjectMapper.Map<WmsMaterialTypeCreateDto, WmsMaterialType>(input); |
| | | insertObj.Sort = sort; |
| | | input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); |
| | | |
| | | insertObj.CreatorName = input.CreatorName;//å建人 |
| | | await _WmsMaterialTypeRepository.InsertAsync(insertObj); |
| | | |
| | | await _WmsMaterialTypeRepository.InsertAsync(insertObj); |
| | | |
| | | //if (input.Sort.HasValue && insertObj.Sort != maxSort) |
| | | //{ |
| | | // await AdjustSortAsync(insertObj.Id, insertObj.Sort); |
| | | //} |
| | | |
| | | return ObjectMapper.Map<WmsMaterialType, WmsMaterialTypeDto>(insertObj); |
| | | } |
| | | |
| | | |
| | | return ObjectMapper.Map<WmsMaterialType, WmsMaterialTypeDto>(insertObj); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°ç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="UserFriendlyException"></exception> |
| | | public virtual async Task<WmsMaterialTypeDto> UpdateAsync(Guid id, WmsMaterialTypeUpdateDto input) |
| | | { |
| | | await CheckCreateOrUpdateDtoAsync(input); |
| | | |
| | | var updateObj = await _WmsMaterialTypeRepository.GetAsync(id); |
| | | var exist = await _WmsMaterialTypeRepository.NameExistAsync(input.MaterialTypeCode, updateObj.Id); |
| | | if (exist) |
| | | { |
| | | throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialTypeCode]); |
| | | } |
| | | |
| | | updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); |
| | | input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); |
| | | |
| | | updateObj.MaterialTypeDesc = input.MaterialTypeDesc; |
| | | public virtual async Task<WmsMaterialTypeDto> UpdateAsync(Guid id, WmsMaterialTypeUpdateDto input) |
| | | { |
| | | await CheckCreateOrUpdateDtoAsync(input); |
| | | |
| | | var updateObj = await _WmsMaterialTypeRepository.GetAsync(id); |
| | | var exist = await _WmsMaterialTypeRepository.NameExistAsync(input.MaterialTypeCode, updateObj.Id); |
| | | if (exist) |
| | | { |
| | | throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialTypeCode]); |
| | | } |
| | | |
| | | updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); |
| | | input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); |
| | | |
| | | updateObj.MaterialTypeDesc = input.MaterialTypeDesc; |
| | | updateObj.MaterialTypeCode = input.MaterialTypeCode; |
| | | updateObj.Remark = input.Remark; |
| | | |
| | | |
| | | |
| | | |
| | | updateObj.LastModifierName = input.LastModifierName;//ä¿®æ¹äºº |
| | | |
| | | await _WmsMaterialTypeRepository.UpdateAsync(updateObj); |
| | | |
| | | return ObjectMapper.Map<WmsMaterialType, WmsMaterialTypeDto>(updateObj); |
| | | } |
| | | |
| | | |
| | | await _WmsMaterialTypeRepository.UpdateAsync(updateObj); |
| | | |
| | | return ObjectMapper.Map<WmsMaterialType, WmsMaterialTypeDto>(updateObj); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å
éç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="ids"></param> |
| | | /// <returns></returns> |
| | | public async Task<List<WmsMaterialTypeDto>> CloneAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser) |
| | | { |
| | | public async Task<List<WmsMaterialTypeDto>> CloneAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser) |
| | | { |
| | | //var WmsMaterialTypes = new List<WmsMaterialType>(); |
| | | //if (ids != null) |
| | | //{ |
| | |
| | | // name += WmsMaterialTypeConsts.CloneTag; |
| | | // continue; |
| | | // } |
| | | |
| | | |
| | | // notExist = true; |
| | | // } |
| | | |
| | | |
| | | // //WmsMaterialType = await _WmsMaterialTypeRepository.InsertAsync(WmsMaterialType.Clone(GuidGenerator.Create(), name, sort++)); |
| | | // WmsMaterialTypes.Add(WmsMaterialType); |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | |
| | | //return ObjectMapper.Map<List<WmsMaterialType>, List<WmsMaterialTypeDto>>(WmsMaterialTypes); |
| | | return new List<WmsMaterialTypeDto>(); |
| | | } |
| | | |
| | | return new List<WmsMaterialTypeDto>(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å é¤åä¸ªç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <returns></returns> |
| | | public virtual Task DeleteAsync(Guid id) |
| | | { |
| | | return _WmsMaterialTypeRepository.DeleteAsync(id); |
| | | } |
| | | |
| | | public virtual Task DeleteAsync(Guid id) |
| | | { |
| | | return _WmsMaterialTypeRepository.DeleteAsync(id); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å é¤å¤ä¸ªç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="ids"></param> |
| | | /// <returns></returns> |
| | | public async Task DeleteManyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser) |
| | | { |
| | | foreach (var id in ids) |
| | | { |
| | | await DeleteAsync(id); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | public async Task DeleteManyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser) |
| | | { |
| | | foreach (var id in ids) |
| | | { |
| | | await DeleteAsync(id); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ç©çå é¤ç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="id">主é®ID</param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public virtual async Task DeletePermanentlyAsync(Guid id, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default) |
| | | { |
| | | _WmsMaterialTypeRepository.DeletePermanentlyAsync(id); |
| | | } |
| | | |
| | | public virtual async Task DeletePermanentlyAsync(Guid id, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default) |
| | | { |
| | | _WmsMaterialTypeRepository.DeletePermanentlyAsync(id); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¹éç©çå é¤ç©ælç±»åä¿¡æ¯ï¼ç´æ¥å é¤ï¼ä¸è½¯å é¤ï¼ |
| | | /// </summary> |
| | | /// <param name="ids">è¦å é¤ç主é®IDå表</param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public virtual async Task BatchDeletePermanentlyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default) |
| | | { |
| | | _WmsMaterialTypeRepository.BatchDeletePermanentlyAsync(ids); |
| | | } |
| | | |
| | | public virtual async Task BatchDeletePermanentlyAsync(IEnumerable<Guid> ids, MyCurrentUser myCurrentUser, CancellationToken cancellationToken = default) |
| | | { |
| | | _WmsMaterialTypeRepository.BatchDeletePermanentlyAsync(ids); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è°æ´æåºç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="id"></param> |
| | | /// <param name="sort"></param> |
| | | /// <returns></returns> |
| | | public virtual async Task AdjustSortAsync(Guid id, int sort) |
| | | { |
| | | var list = await _WmsMaterialTypeRepository.GetListAsync(null, nameof(WmsMaterialType.Sort)); |
| | | if (list != null && list.Any()) |
| | | { |
| | | var initSort = 1; |
| | | list.ForEach(x => x.AdjustSort(initSort++)); |
| | | var entity = list.FirstOrDefault(x => x.Id == id); |
| | | if (entity != null) |
| | | { |
| | | if (sort == 1) |
| | | { |
| | | list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); |
| | | } |
| | | else if (entity.Sort > sort) |
| | | { |
| | | list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); |
| | | list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); |
| | | } |
| | | else if (entity.Sort < sort) |
| | | { |
| | | list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); |
| | | list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); |
| | | } |
| | | |
| | | entity.AdjustSort(sort); |
| | | } |
| | | } |
| | | |
| | | await _WmsMaterialTypeRepository.UpdateManyAsync(list); |
| | | } |
| | | |
| | | public virtual async Task AdjustSortAsync(Guid id, int sort) |
| | | { |
| | | var list = await _WmsMaterialTypeRepository.GetListAsync(null, nameof(WmsMaterialType.Sort)); |
| | | if (list != null && list.Any()) |
| | | { |
| | | var initSort = 1; |
| | | list.ForEach(x => x.AdjustSort(initSort++)); |
| | | var entity = list.FirstOrDefault(x => x.Id == id); |
| | | if (entity != null) |
| | | { |
| | | if (sort == 1) |
| | | { |
| | | list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); |
| | | } |
| | | else if (entity.Sort > sort) |
| | | { |
| | | list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); |
| | | list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); |
| | | } |
| | | else if (entity.Sort < sort) |
| | | { |
| | | list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1)); |
| | | list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1)); |
| | | } |
| | | |
| | | entity.AdjustSort(sort); |
| | | } |
| | | } |
| | | |
| | | await _WmsMaterialTypeRepository.UpdateManyAsync(list); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 导å
¥ç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="UserFriendlyException"></exception> |
| | | public async Task ImportAsync(WmsMaterialTypesImportModel input, MyCurrentUser myCurrentUser) |
| | | { |
| | | Check.NotNull(input, nameof(input)); |
| | | |
| | | var WmsMaterialTypeCreateDtos = new List<(int RowIndex, WmsMaterialTypeCreateDto Item)>(); |
| | | var WmsMaterialTypeUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialTypeUpdateDto Item)>(); |
| | | var importItems = input.WmsMaterialTypes; |
| | | |
| | | if (importItems != null && importItems.Any()) |
| | | { |
| | | public async Task ImportAsync(WmsMaterialTypesImportModel input, MyCurrentUser myCurrentUser) |
| | | { |
| | | Check.NotNull(input, nameof(input)); |
| | | |
| | | var WmsMaterialTypeCreateDtos = new List<(int RowIndex, WmsMaterialTypeCreateDto Item)>(); |
| | | var WmsMaterialTypeUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialTypeUpdateDto Item)>(); |
| | | var importItems = input.WmsMaterialTypes; |
| | | |
| | | if (importItems != null && importItems.Any()) |
| | | { |
| | | #region 导å
¥æ ¡éª |
| | | |
| | | |
| | | // 夿åç§°æ¯å¦éå¤ï¼å¹¶è¾åºç¬¬å è¡éå¤ |
| | | var duplicateWmsMaterialTypes = importItems.GroupBy(x => x.MaterialTypeCode).Where(x => x.Count() > 1).ToList(); |
| | | if (duplicateWmsMaterialTypes?.Any() == true) |
| | | { |
| | | var duplicateWmsMaterialTypeMsgs = duplicateWmsMaterialTypes.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} è¡ï¼{x.Key} åç§°éå¤"); |
| | | var errorMsg = $"导å
¥å¤±è´¥ï¼é
ç½®ï¼ {string.Join(",", duplicateWmsMaterialTypeMsgs)}ï¼ç»æ¢å¯¼å
¥"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | foreach (var impItem in importItems) |
| | | { |
| | | if (impItem.MaterialTypeCode.IsNullOrWhiteSpace()) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | if (impItem.MaterialTypeCode.IsNullOrWhiteSpace()) |
| | | { |
| | | var errorMsg = $"导å
¥å¤±è´¥ï¼é
ç½®ï¼ç¬¬{impItem.RowIndex}è¡ï¼WmsMaterialTypeåç§°ä¸è½ä¸ºç©º"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | |
| | | var oldWmsMaterialType = await _WmsMaterialTypeRepository.FindByNameAsync(impItem.MaterialTypeCode); |
| | | if (oldWmsMaterialType != null) |
| | | { |
| | | var WmsMaterialTypeUpdateDto = new WmsMaterialTypeUpdateDto |
| | | { |
| | | var duplicateWmsMaterialTypes = importItems.GroupBy(x => x.MaterialTypeCode).Where(x => x.Count() > 1).ToList(); |
| | | if (duplicateWmsMaterialTypes?.Any() == true) |
| | | { |
| | | var duplicateWmsMaterialTypeMsgs = duplicateWmsMaterialTypes.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} è¡ï¼{x.Key} åç§°éå¤"); |
| | | var errorMsg = $"导å
¥å¤±è´¥ï¼é
ç½®ï¼ {string.Join(",", duplicateWmsMaterialTypeMsgs)}ï¼ç»æ¢å¯¼å
¥"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | foreach (var impItem in importItems) |
| | | { |
| | | if (impItem.MaterialTypeCode.IsNullOrWhiteSpace()) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | if (impItem.MaterialTypeCode.IsNullOrWhiteSpace()) |
| | | { |
| | | var errorMsg = $"导å
¥å¤±è´¥ï¼é
ç½®ï¼ç¬¬{impItem.RowIndex}è¡ï¼WmsMaterialTypeåç§°ä¸è½ä¸ºç©º"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | |
| | | var oldWmsMaterialType = await _WmsMaterialTypeRepository.FindByNameAsync(impItem.MaterialTypeCode); |
| | | if (oldWmsMaterialType != null) |
| | | { |
| | | var WmsMaterialTypeUpdateDto = new WmsMaterialTypeUpdateDto |
| | | { |
| | | MaterialTypeDesc = impItem.MaterialTypeDesc, |
| | | MaterialTypeCode = impItem.MaterialTypeCode, |
| | | Remark = impItem.Remark, |
| | | |
| | | }; |
| | | |
| | | WmsMaterialTypeUpdateDtos.Add((impItem.RowIndex, oldWmsMaterialType.Id, WmsMaterialTypeUpdateDto)); |
| | | } |
| | | else |
| | | { |
| | | var WmsMaterialTypeCreateDto = new WmsMaterialTypeCreateDto |
| | | { |
| | | MaterialTypeCode = impItem.MaterialTypeCode, |
| | | Remark = impItem.Remark, |
| | | |
| | | }; |
| | | |
| | | WmsMaterialTypeUpdateDtos.Add((impItem.RowIndex, oldWmsMaterialType.Id, WmsMaterialTypeUpdateDto)); |
| | | } |
| | | else |
| | | { |
| | | var WmsMaterialTypeCreateDto = new WmsMaterialTypeCreateDto |
| | | { |
| | | MaterialTypeDesc = impItem.MaterialTypeDesc, |
| | | MaterialTypeCode = impItem.MaterialTypeCode, |
| | | Remark = impItem.Remark, |
| | | |
| | | }; |
| | | |
| | | WmsMaterialTypeCreateDtos.Add((impItem.RowIndex, WmsMaterialTypeCreateDto)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | MaterialTypeCode = impItem.MaterialTypeCode, |
| | | Remark = impItem.Remark, |
| | | |
| | | }; |
| | | |
| | | WmsMaterialTypeCreateDtos.Add((impItem.RowIndex, WmsMaterialTypeCreateDto)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // æ°å¢ |
| | | foreach (var WmsMaterialTypeDto in WmsMaterialTypeCreateDtos) |
| | | { |
| | | try |
| | | { |
| | | foreach (var WmsMaterialTypeDto in WmsMaterialTypeCreateDtos) |
| | | { |
| | | try |
| | | { |
| | | WmsMaterialTypeDto.Item.CreatorName = myCurrentUser.UserAccount;//å建人 |
| | | await CreateAsync(WmsMaterialTypeDto.Item); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | var errorMsg = $"导å
¥å¤±è´¥ï¼é
ç½®ï¼ç¬¬{WmsMaterialTypeDto.RowIndex}è¡ï¼{e.Message}ï¼ç»æ¢å¯¼å
¥"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | } |
| | | |
| | | await CreateAsync(WmsMaterialTypeDto.Item); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | var errorMsg = $"导å
¥å¤±è´¥ï¼é
ç½®ï¼ç¬¬{WmsMaterialTypeDto.RowIndex}è¡ï¼{e.Message}ï¼ç»æ¢å¯¼å
¥"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | } |
| | | |
| | | // æ´æ° |
| | | foreach (var WmsMaterialTypeDto in WmsMaterialTypeUpdateDtos) |
| | | { |
| | | try |
| | | { |
| | | foreach (var WmsMaterialTypeDto in WmsMaterialTypeUpdateDtos) |
| | | { |
| | | try |
| | | { |
| | | WmsMaterialTypeDto.Item.LastModifierName = myCurrentUser.UserAccount;//ä¿®æ¹äºº |
| | | await UpdateAsync(WmsMaterialTypeDto.Id, WmsMaterialTypeDto.Item); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | var errorMsg = $"导å
¥å¤±è´¥ï¼é
ç½®ï¼ç¬¬{WmsMaterialTypeDto.RowIndex}è¡ï¼{e.Message}ï¼ç»æ¢å¯¼å
¥"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | } |
| | | } |
| | | |
| | | await UpdateAsync(WmsMaterialTypeDto.Id, WmsMaterialTypeDto.Item); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | var errorMsg = $"导å
¥å¤±è´¥ï¼é
ç½®ï¼ç¬¬{WmsMaterialTypeDto.RowIndex}è¡ï¼{e.Message}ï¼ç»æ¢å¯¼å
¥"; |
| | | throw new UserFriendlyException(errorMsg); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 导åºç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsMaterialTypeInput input) |
| | | { |
| | | Check.NotNull(input, nameof(input)); |
| | | |
| | | if (input.Sorting.IsNullOrWhiteSpace()) |
| | | { |
| | | input.Sorting = nameof(WmsMaterialType.Sort); |
| | | } |
| | | |
| | | public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsMaterialTypeInput input) |
| | | { |
| | | Check.NotNull(input, nameof(input)); |
| | | |
| | | if (input.Sorting.IsNullOrWhiteSpace()) |
| | | { |
| | | input.Sorting = nameof(WmsMaterialType.Sort); |
| | | } |
| | | |
| | | #region 卿æé æ¥è¯¢æ¡ä»¶ |
| | | |
| | | |
| | | //卿æé æ¥è¯¢æ¡ä»¶ |
| | | var whereConditions = DynamicGetQueryParams(input); |
| | | |
| | | #endregion |
| | | |
| | | |
| | | var list = await _WmsMaterialTypeRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); |
| | | var result = ObjectMapper.Map<List<WmsMaterialType>, List<WmsMaterialTypeDto>>(list); |
| | | |
| | | var sheets = new Dictionary<string, object> |
| | | { |
| | | ["é
ç½®"] = ExportHelper.ConvertListToExportData(result), |
| | | }; |
| | | |
| | | var fileName = "ç©æç±»å"; |
| | | return (sheets, fileName); |
| | | } |
| | | |
| | | var whereConditions = DynamicGetQueryParams(input); |
| | | |
| | | #endregion |
| | | |
| | | |
| | | var list = await _WmsMaterialTypeRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); |
| | | var result = ObjectMapper.Map<List<WmsMaterialType>, List<WmsMaterialTypeDto>>(list); |
| | | |
| | | var sheets = new Dictionary<string, object> |
| | | { |
| | | ["é
ç½®"] = ExportHelper.ConvertListToExportData(result), |
| | | }; |
| | | |
| | | var fileName = "ç©æç±»å"; |
| | | return (sheets, fileName); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¡éªç©ælç±»åä¿¡æ¯ï¼å½æ°å»ºææ´æ°æ¶ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | protected Task CheckCreateOrUpdateDtoAsync(WmsMaterialTypeCreateOrUpdateDtoBase input) |
| | | { |
| | | Check.NotNull(input, nameof(input)); |
| | | Check.NotNullOrWhiteSpace(input.MaterialTypeDesc, "ç±»åæè¿°", 128); |
| | | protected Task CheckCreateOrUpdateDtoAsync(WmsMaterialTypeCreateOrUpdateDtoBase input) |
| | | { |
| | | Check.NotNull(input, nameof(input)); |
| | | Check.NotNullOrWhiteSpace(input.MaterialTypeDesc, "ç±»åæè¿°", 128); |
| | | Check.NotNullOrWhiteSpace(input.MaterialTypeCode, "ç±»åç¼ç ", 64); |
| | | |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | /// <summary> |
| | | |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®æ¡ä»¶è·åç©ælç±»åä¿¡æ¯å表 |
| | | /// </summary> |
| | | /// <param name="whereConditions"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<List<WmsMaterialType>> GetListByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, CancellationToken cancellationToken = default) |
| | | { |
| | | return await _WmsMaterialTypeRepository.GetListByFilterAsync(whereConditions); |
| | | } |
| | | |
| | | public async Task<List<WmsMaterialType>> GetListByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, CancellationToken cancellationToken = default) |
| | | { |
| | | return await _WmsMaterialTypeRepository.GetListByFilterAsync(whereConditions); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®æ¡ä»¶è·ååä¸ªç©ælç±»åä¿¡æ¯ |
| | | /// </summary> |
| | |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="UserFriendlyException"></exception> |
| | | public async Task<WmsMaterialType> GetSingleByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, bool isâMultipleThrowException = false, CancellationToken cancellationToken = default) |
| | | { |
| | | return await _WmsMaterialTypeRepository.GetSingleByFilterAsync(whereConditions, isâMultipleThrowException); |
| | | } |
| | | } |
| | | public async Task<WmsMaterialType> GetSingleByFilterAsync(Expression<Func<WmsMaterialType, bool>> whereConditions, bool isâMultipleThrowException = false, CancellationToken cancellationToken = default) |
| | | { |
| | | return await _WmsMaterialTypeRepository.GetSingleByFilterAsync(whereConditions, isâMultipleThrowException); |
| | | } |
| | | } |