|  |  |  | 
|---|
|  |  |  | using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; | 
|---|
|  |  |  | using CMS.Plugin.HIAWms.Application.Contracts.Services; | 
|---|
|  |  |  | using CMS.Plugin.HIAWms.Domain.Shared; | 
|---|
|  |  |  | using CmsQueryExtensions; | 
|---|
|  |  |  | using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrder; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | namespace CMS.Plugin.HIAWms.Application.Implements; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockOrder; | 
|---|
|  |  |  | using CMS.Plugin.HIAWms.Application.Contracts.Services; | 
|---|
|  |  |  | using CMS.Plugin.HIAWms.Domain.Shared; | 
|---|
|  |  |  | using CmsQueryExtensions; | 
|---|
|  |  |  | using CMS.Plugin.HIAWms.Domain.WmsInOutStockOrder; | 
|---|
|  |  |  | 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 CMS.Plugin.HIAWms.Domain.WmsMaterials; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | namespace CMS.Plugin.HIAWms.Application.Implements; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 出入库单据应用服务 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | public class WmsInOutStockOrderAppService : CMSPluginAppService, IWmsInOutStockOrderAppService | 
|---|
|  |  |  | { | 
|---|
|  |  |  | private readonly IWmsInOutStockOrderRepository wmsInOutStockOrderRepository; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public class WmsInOutStockOrderAppService : CMSPluginAppService, IWmsInOutStockOrderAppService | 
|---|
|  |  |  | { | 
|---|
|  |  |  | private readonly IWmsInOutStockOrderRepository wmsInOutStockOrderRepository; | 
|---|
|  |  |  | private readonly IWmsMaterialRepository _wmsMaterialRepository; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// Initializes a new instance of the <see cref="WmsInOutStockOrderAppService"/> class. | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="WmsInOutStockOrderRepository">The task job repository.</param> | 
|---|
|  |  |  | public WmsInOutStockOrderAppService(IWmsInOutStockOrderRepository _WmsInOutStockOrderRepository) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | wmsInOutStockOrderRepository = _WmsInOutStockOrderRepository; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public WmsInOutStockOrderAppService(IWmsInOutStockOrderRepository _WmsInOutStockOrderRepository, IWmsMaterialRepository wmsMaterialRepository) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | wmsInOutStockOrderRepository = _WmsInOutStockOrderRepository; | 
|---|
|  |  |  | _wmsMaterialRepository = wmsMaterialRepository; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 获取指定出入库单据 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="id"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | public virtual async Task<WmsInOutStockOrderDto> GetAsync(Guid id) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(await wmsInOutStockOrderRepository.GetAsync(id)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public virtual async Task<WmsInOutStockOrderDto> GetAsync(Guid id) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(await wmsInOutStockOrderRepository.GetAsync(id)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 分页获取出入库单据 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="input"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | public virtual async Task<PagedResultDto<WmsInOutStockOrderDto>> GetListAsync(GetWmsInOutStockOrderInput input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Check.NotNull(input, nameof(input)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (input.Sorting.IsNullOrWhiteSpace()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | input.Sorting = nameof(WmsInOutStockOrder.Sort); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public virtual async Task<PagedResultDto<WmsInOutStockOrderDto>> GetListAsync(GetWmsInOutStockOrderInput input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Check.NotNull(input, nameof(input)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (input.Sorting.IsNullOrWhiteSpace()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | input.Sorting = nameof(WmsInOutStockOrder.Sort); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #region 动态构造查询条件 | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //动态构造查询条件 | 
|---|
|  |  |  | var whereConditions = DynamicGetQueryParams(input); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var count = await wmsInOutStockOrderRepository.GetCountAsync(whereConditions); | 
|---|
|  |  |  | var list = await wmsInOutStockOrderRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return new PagedResultDto<WmsInOutStockOrderDto>(count, ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(list)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var whereConditions = DynamicGetQueryParams(input); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var count = await wmsInOutStockOrderRepository.GetCountAsync(whereConditions); | 
|---|
|  |  |  | var list = await wmsInOutStockOrderRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return new PagedResultDto<WmsInOutStockOrderDto>(count, ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(list)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 动态构造查询条件 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="input">输入参数</param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | private FunReturnResultModel<Expression<Func<WmsInOutStockOrder, bool>>> DynamicGetQueryParams(GetWmsInOutStockOrderInput input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | private FunReturnResultModel<Expression<Func<WmsInOutStockOrder, bool>>> DynamicGetQueryParams(GetWmsInOutStockOrderInput input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //动态构造查询条件 | 
|---|
|  |  |  | var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsInOutStockOrder, GetWmsInOutStockOrderInput>(input); | 
|---|
|  |  |  | if (!whereConditions.IsSuccess) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsInOutStockOrder, GetWmsInOutStockOrderInput>(input); | 
|---|
|  |  |  | if (!whereConditions.IsSuccess) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //也可再次自定义构建查询条件 | 
|---|
|  |  |  | Expression<Func<WmsInOutStockOrder, bool>> extendExpression = a => a.IsDeleted == false; | 
|---|
|  |  |  | Expression<Func<WmsInOutStockOrder, bool>> extendExpression = a => a.IsDeleted == false; | 
|---|
|  |  |  | // 使用 System.Linq.PredicateBuilder 的 And | 
|---|
|  |  |  | var pres = (System.Linq.Expressions.Expression<Func<WmsInOutStockOrder, bool>>)(whereConditions.data); | 
|---|
|  |  |  | whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return whereConditions; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var pres = (System.Linq.Expressions.Expression<Func<WmsInOutStockOrder, bool>>)(whereConditions.data); | 
|---|
|  |  |  | whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return whereConditions; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 新建出入库单据 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="input"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | /// <exception cref="UserFriendlyException"></exception> | 
|---|
|  |  |  | public virtual async Task<WmsInOutStockOrderDto> CreateAsync(WmsInOutStockOrderCreateDto input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | await CheckCreateOrUpdateDtoAsync(input); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var exist = await wmsInOutStockOrderRepository.NameExistAsync(input.OrderNo); | 
|---|
|  |  |  | if (exist) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.OrderNo]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var maxSort = await wmsInOutStockOrderRepository.GetMaxSortAsync(); | 
|---|
|  |  |  | var sort = input.Sort ?? maxSort; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var insertObj = ObjectMapper.Map<WmsInOutStockOrderCreateDto, WmsInOutStockOrder>(input); | 
|---|
|  |  |  | insertObj.Sort = sort; | 
|---|
|  |  |  | input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | await wmsInOutStockOrderRepository.InsertAsync(insertObj); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public virtual async Task<WmsInOutStockOrderDto> CreateAsync(WmsInOutStockOrderCreateDto input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | await CheckCreateOrUpdateDtoAsync(input); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var material = await _wmsMaterialRepository.FindByNameAsync(input.MaterialNo); | 
|---|
|  |  |  | if (material == null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new UserFriendlyException("物料信息不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var exist = await wmsInOutStockOrderRepository.NameExistAsync(input.OrderNo); | 
|---|
|  |  |  | if (exist) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.OrderNo]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var maxSort = await wmsInOutStockOrderRepository.GetMaxSortAsync(); | 
|---|
|  |  |  | var sort = input.Sort ?? maxSort; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var maxPriority = await wmsInOutStockOrderRepository.GetMaxPriorityAsync(); | 
|---|
|  |  |  | var priority = input.Priority > 0 ? input.Priority : maxPriority; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var insertObj = ObjectMapper.Map<WmsInOutStockOrderCreateDto, WmsInOutStockOrder>(input); | 
|---|
|  |  |  | insertObj.MaterialName = material.MaterialName; | 
|---|
|  |  |  | insertObj.MaterialModel = material.MaterialModel; | 
|---|
|  |  |  | insertObj.OrderStatus = Domain.Shared.Enums.OrderStatusEnum.NoStart; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var type = "RK-"; | 
|---|
|  |  |  | insertObj.StockType = Domain.Shared.Enums.StockTypeEnum.InBound; | 
|---|
|  |  |  | if (input.OrderType == Domain.Shared.Enums.OrderTypeEnum.PRODUCTCALL || input.OrderType == Domain.Shared.Enums.OrderTypeEnum.PERSONOT) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | type = "CK-"; | 
|---|
|  |  |  | insertObj.StockType = Domain.Shared.Enums.StockTypeEnum.OutBound; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | insertObj.OrderNo = string.IsNullOrEmpty(input.OrderNo) ? type + DateTime.Now.ToString("yyyyMMddHHmmssfff") : input.OrderNo; | 
|---|
|  |  |  | insertObj.Sort = sort; | 
|---|
|  |  |  | insertObj.Priority = priority; | 
|---|
|  |  |  | input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | await wmsInOutStockOrderRepository.InsertAsync(insertObj); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //if (input.Sort.HasValue && insertObj.Sort != maxSort) | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    await AdjustSortAsync(insertObj.Id, insertObj.Sort); | 
|---|
|  |  |  | //} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(insertObj); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(insertObj); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 更新出入库单据 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | 
|---|
|  |  |  | /// <param name="input"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | /// <exception cref="UserFriendlyException"></exception> | 
|---|
|  |  |  | public virtual async Task<WmsInOutStockOrderDto> UpdateAsync(Guid id, WmsInOutStockOrderUpdateDto input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | await CheckCreateOrUpdateDtoAsync(input); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var updateObj = await wmsInOutStockOrderRepository.GetAsync(id); | 
|---|
|  |  |  | var exist = await wmsInOutStockOrderRepository.NameExistAsync(input.OrderNo, updateObj.Id); | 
|---|
|  |  |  | if (exist) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.OrderNo]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); | 
|---|
|  |  |  | input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | updateObj.OrderNo = input.OrderNo; | 
|---|
|  |  |  | public virtual async Task<WmsInOutStockOrderDto> UpdateAsync(Guid id, WmsInOutStockOrderUpdateDto input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | await CheckCreateOrUpdateDtoAsync(input); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var updateObj = await wmsInOutStockOrderRepository.GetAsync(id); | 
|---|
|  |  |  | var exist = await wmsInOutStockOrderRepository.NameExistAsync(input.OrderNo, updateObj.Id); | 
|---|
|  |  |  | if (exist) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.OrderNo]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); | 
|---|
|  |  |  | input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | updateObj.OrderNo = input.OrderNo; | 
|---|
|  |  |  | updateObj.OrderStatus = input.OrderStatus; | 
|---|
|  |  |  | updateObj.MaterialName = input.MaterialName; | 
|---|
|  |  |  | updateObj.MaterialNo = input.MaterialNo; | 
|---|
|  |  |  | 
|---|
|  |  |  | updateObj.OperateTime = input.OperateTime; | 
|---|
|  |  |  | updateObj.Remark = input.Remark; | 
|---|
|  |  |  | updateObj.IsDisabled = input.IsDisabled; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | await wmsInOutStockOrderRepository.UpdateAsync(updateObj); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(updateObj); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | await wmsInOutStockOrderRepository.UpdateAsync(updateObj); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ObjectMapper.Map<WmsInOutStockOrder, WmsInOutStockOrderDto>(updateObj); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 克隆出入库单据 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="ids"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | public async Task<List<WmsInOutStockOrderDto>> CloneAsync(IEnumerable<Guid> ids) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public async Task<List<WmsInOutStockOrderDto>> CloneAsync(IEnumerable<Guid> ids) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //var wmsInOutStockOrders = new List<WmsInOutStockOrder>(); | 
|---|
|  |  |  | //if (ids != null) | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | 
|---|
|  |  |  | //                    name += WmsInOutStockOrderConsts.CloneTag; | 
|---|
|  |  |  | //                    continue; | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //                notExist = true; | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //            //WmsInOutStockOrder = await wmsInOutStockOrderRepository.InsertAsync(WmsInOutStockOrder.Clone(GuidGenerator.Create(), name, sort++)); | 
|---|
|  |  |  | //            wmsInOutStockOrders.Add(WmsInOutStockOrder); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  | //} | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //return ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(wmsInOutStockOrders); | 
|---|
|  |  |  | return new List<WmsInOutStockOrderDto>(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return new List<WmsInOutStockOrderDto>(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 删除单个出入库单据 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="id"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | public virtual Task DeleteAsync(Guid id) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return wmsInOutStockOrderRepository.DeleteAsync(id); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public virtual async Task DeleteAsync(Guid id) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var order = await wmsInOutStockOrderRepository.GetAsync(id); | 
|---|
|  |  |  | if(order != null && order.OrderStatus != Domain.Shared.Enums.OrderStatusEnum.NoStart) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new UserFriendlyException("只能删除未开始的单据"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | await wmsInOutStockOrderRepository.DeleteAsync(id); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 删除多个出入库单据 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="ids"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | public async Task DeleteManyAsync(IEnumerable<Guid> ids) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | foreach (var id in ids) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | await DeleteAsync(id); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public async Task DeleteManyAsync(IEnumerable<Guid> ids) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | foreach (var id in ids) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | await DeleteAsync(id); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 调整排序出入库单据 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="id"></param> | 
|---|
|  |  |  | /// <param name="sort"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | public virtual async Task AdjustSortAsync(Guid id, int sort) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var list = await wmsInOutStockOrderRepository.GetListAsync(null, nameof(WmsInOutStockOrder.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 wmsInOutStockOrderRepository.UpdateManyAsync(list); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public virtual async Task AdjustSortAsync(Guid id, int sort) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var list = await wmsInOutStockOrderRepository.GetListAsync(null, nameof(WmsInOutStockOrder.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 wmsInOutStockOrderRepository.UpdateManyAsync(list); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 导入出入库单据 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="input"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | /// <exception cref="UserFriendlyException"></exception> | 
|---|
|  |  |  | public async Task ImportAsync(WmsInOutStockOrdersImportModel input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Check.NotNull(input, nameof(input)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var wmsInOutStockOrderCreateDtos = new List<(int RowIndex, WmsInOutStockOrderCreateDto Item)>(); | 
|---|
|  |  |  | var wmsInOutStockOrderUpdateDtos = new List<(int RowIndex, Guid Id, WmsInOutStockOrderUpdateDto Item)>(); | 
|---|
|  |  |  | var importItems = input.WmsInOutStockOrders; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (importItems != null && importItems.Any()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public async Task ImportAsync(WmsInOutStockOrdersImportModel input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Check.NotNull(input, nameof(input)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var wmsInOutStockOrderCreateDtos = new List<(int RowIndex, WmsInOutStockOrderCreateDto Item)>(); | 
|---|
|  |  |  | var wmsInOutStockOrderUpdateDtos = new List<(int RowIndex, Guid Id, WmsInOutStockOrderUpdateDto Item)>(); | 
|---|
|  |  |  | var importItems = input.WmsInOutStockOrders; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (importItems != null && importItems.Any()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | #region 导入校验 | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 判断名称是否重复,并输出第几行重复 | 
|---|
|  |  |  | var duplicateWmsInOutStockOrders = importItems.GroupBy(x => x.OrderNo).Where(x => x.Count() > 1).ToList(); | 
|---|
|  |  |  | if (duplicateWmsInOutStockOrders?.Any() == true) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var duplicateWmsInOutStockOrderMsgs = duplicateWmsInOutStockOrders.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} 行:{x.Key}  名称重复"); | 
|---|
|  |  |  | var errorMsg = $"导入失败!配置, {string.Join(",", duplicateWmsInOutStockOrderMsgs)},终止导入"; | 
|---|
|  |  |  | throw new UserFriendlyException(errorMsg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  | foreach (var impItem in importItems) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (impItem.OrderNo.IsNullOrWhiteSpace()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (impItem.OrderNo.IsNullOrWhiteSpace()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:WmsInOutStockOrder名称不能为空"; | 
|---|
|  |  |  | throw new UserFriendlyException(errorMsg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var oldWmsInOutStockOrder = await wmsInOutStockOrderRepository.FindByNameAsync(impItem.OrderNo); | 
|---|
|  |  |  | if (oldWmsInOutStockOrder != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var wmsInOutStockOrderUpdateDto = new WmsInOutStockOrderUpdateDto | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var duplicateWmsInOutStockOrders = importItems.GroupBy(x => x.OrderNo).Where(x => x.Count() > 1).ToList(); | 
|---|
|  |  |  | if (duplicateWmsInOutStockOrders?.Any() == true) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var duplicateWmsInOutStockOrderMsgs = duplicateWmsInOutStockOrders.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} 行:{x.Key}  名称重复"); | 
|---|
|  |  |  | var errorMsg = $"导入失败!配置, {string.Join(",", duplicateWmsInOutStockOrderMsgs)},终止导入"; | 
|---|
|  |  |  | throw new UserFriendlyException(errorMsg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  | foreach (var impItem in importItems) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (impItem.OrderNo.IsNullOrWhiteSpace()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (impItem.OrderNo.IsNullOrWhiteSpace()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:WmsInOutStockOrder名称不能为空"; | 
|---|
|  |  |  | throw new UserFriendlyException(errorMsg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var oldWmsInOutStockOrder = await wmsInOutStockOrderRepository.FindByNameAsync(impItem.OrderNo); | 
|---|
|  |  |  | if (oldWmsInOutStockOrder != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var wmsInOutStockOrderUpdateDto = new WmsInOutStockOrderUpdateDto | 
|---|
|  |  |  | { | 
|---|
|  |  |  | OrderNo = impItem.OrderNo, | 
|---|
|  |  |  | OrderStatus = impItem.OrderStatus, | 
|---|
|  |  |  | MaterialName = impItem.MaterialName, | 
|---|
|  |  |  | MaterialNo = impItem.MaterialNo, | 
|---|
|  |  |  | MaterialModel = impItem.MaterialModel, | 
|---|
|  |  |  | MaterialBatch = impItem.MaterialBatch, | 
|---|
|  |  |  | OrderType = impItem.OrderType, | 
|---|
|  |  |  | StockType = impItem.StockType, | 
|---|
|  |  |  | MaterialNumber = impItem.MaterialNumber, | 
|---|
|  |  |  | DistributeNumber = impItem.DistributeNumber, | 
|---|
|  |  |  | CompleteNumber = impItem.CompleteNumber, | 
|---|
|  |  |  | Priority = impItem.Priority, | 
|---|
|  |  |  | PlanNo = impItem.PlanNo, | 
|---|
|  |  |  | OperateTime = impItem.OperateTime, | 
|---|
|  |  |  | Remark = impItem.Remark, | 
|---|
|  |  |  | IsDisabled = impItem.IsDisabled, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wmsInOutStockOrderUpdateDtos.Add((impItem.RowIndex, oldWmsInOutStockOrder.Id, wmsInOutStockOrderUpdateDto)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var wmsInOutStockOrderCreateDto = new WmsInOutStockOrderCreateDto | 
|---|
|  |  |  | { | 
|---|
|  |  |  | OrderStatus = impItem.OrderStatus, | 
|---|
|  |  |  | MaterialName = impItem.MaterialName, | 
|---|
|  |  |  | MaterialNo = impItem.MaterialNo, | 
|---|
|  |  |  | MaterialModel = impItem.MaterialModel, | 
|---|
|  |  |  | MaterialBatch = impItem.MaterialBatch, | 
|---|
|  |  |  | OrderType = impItem.OrderType, | 
|---|
|  |  |  | StockType = impItem.StockType, | 
|---|
|  |  |  | MaterialNumber = impItem.MaterialNumber, | 
|---|
|  |  |  | DistributeNumber = impItem.DistributeNumber, | 
|---|
|  |  |  | CompleteNumber = impItem.CompleteNumber, | 
|---|
|  |  |  | Priority = impItem.Priority, | 
|---|
|  |  |  | PlanNo = impItem.PlanNo, | 
|---|
|  |  |  | OperateTime = impItem.OperateTime, | 
|---|
|  |  |  | Remark = impItem.Remark, | 
|---|
|  |  |  | IsDisabled = impItem.IsDisabled, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wmsInOutStockOrderUpdateDtos.Add((impItem.RowIndex, oldWmsInOutStockOrder.Id, wmsInOutStockOrderUpdateDto)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var wmsInOutStockOrderCreateDto = new WmsInOutStockOrderCreateDto | 
|---|
|  |  |  | { | 
|---|
|  |  |  | OrderNo = impItem.OrderNo, | 
|---|
|  |  |  | OrderStatus = impItem.OrderStatus, | 
|---|
|  |  |  | MaterialName = impItem.MaterialName, | 
|---|
|  |  |  | MaterialNo = impItem.MaterialNo, | 
|---|
|  |  |  | MaterialModel = impItem.MaterialModel, | 
|---|
|  |  |  | MaterialBatch = impItem.MaterialBatch, | 
|---|
|  |  |  | OrderType = impItem.OrderType, | 
|---|
|  |  |  | StockType = impItem.StockType, | 
|---|
|  |  |  | MaterialNumber = impItem.MaterialNumber, | 
|---|
|  |  |  | DistributeNumber = impItem.DistributeNumber, | 
|---|
|  |  |  | CompleteNumber = impItem.CompleteNumber, | 
|---|
|  |  |  | Priority = impItem.Priority, | 
|---|
|  |  |  | PlanNo = impItem.PlanNo, | 
|---|
|  |  |  | OperateTime = impItem.OperateTime, | 
|---|
|  |  |  | Remark = impItem.Remark, | 
|---|
|  |  |  | IsDisabled = impItem.IsDisabled, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wmsInOutStockOrderCreateDtos.Add((impItem.RowIndex, wmsInOutStockOrderCreateDto)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | OrderStatus = impItem.OrderStatus, | 
|---|
|  |  |  | MaterialName = impItem.MaterialName, | 
|---|
|  |  |  | MaterialNo = impItem.MaterialNo, | 
|---|
|  |  |  | MaterialModel = impItem.MaterialModel, | 
|---|
|  |  |  | MaterialBatch = impItem.MaterialBatch, | 
|---|
|  |  |  | OrderType = impItem.OrderType, | 
|---|
|  |  |  | StockType = impItem.StockType, | 
|---|
|  |  |  | MaterialNumber = impItem.MaterialNumber, | 
|---|
|  |  |  | DistributeNumber = impItem.DistributeNumber, | 
|---|
|  |  |  | CompleteNumber = impItem.CompleteNumber, | 
|---|
|  |  |  | Priority = impItem.Priority, | 
|---|
|  |  |  | PlanNo = impItem.PlanNo, | 
|---|
|  |  |  | OperateTime = impItem.OperateTime, | 
|---|
|  |  |  | Remark = impItem.Remark, | 
|---|
|  |  |  | IsDisabled = impItem.IsDisabled, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wmsInOutStockOrderCreateDtos.Add((impItem.RowIndex, wmsInOutStockOrderCreateDto)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 新增 | 
|---|
|  |  |  | foreach (var wmsInOutStockOrderDto in wmsInOutStockOrderCreateDtos) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | await CreateAsync(wmsInOutStockOrderDto.Item); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var errorMsg = $"导入失败!配置,第{wmsInOutStockOrderDto.RowIndex}行:{e.Message},终止导入"; | 
|---|
|  |  |  | throw new UserFriendlyException(errorMsg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | foreach (var wmsInOutStockOrderDto in wmsInOutStockOrderCreateDtos) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | await CreateAsync(wmsInOutStockOrderDto.Item); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var errorMsg = $"导入失败!配置,第{wmsInOutStockOrderDto.RowIndex}行:{e.Message},终止导入"; | 
|---|
|  |  |  | throw new UserFriendlyException(errorMsg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新 | 
|---|
|  |  |  | foreach (var wmsInOutStockOrderDto in wmsInOutStockOrderUpdateDtos) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | await UpdateAsync(wmsInOutStockOrderDto.Id, wmsInOutStockOrderDto.Item); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var errorMsg = $"导入失败!配置,第{wmsInOutStockOrderDto.RowIndex}行:{e.Message},终止导入"; | 
|---|
|  |  |  | throw new UserFriendlyException(errorMsg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | foreach (var wmsInOutStockOrderDto in wmsInOutStockOrderUpdateDtos) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | await UpdateAsync(wmsInOutStockOrderDto.Id, wmsInOutStockOrderDto.Item); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var errorMsg = $"导入失败!配置,第{wmsInOutStockOrderDto.RowIndex}行:{e.Message},终止导入"; | 
|---|
|  |  |  | throw new UserFriendlyException(errorMsg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 导出出入库单据 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="input"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockOrderInput input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Check.NotNull(input, nameof(input)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (input.Sorting.IsNullOrWhiteSpace()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | input.Sorting = nameof(WmsInOutStockOrder.Sort); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockOrderInput input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Check.NotNull(input, nameof(input)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (input.Sorting.IsNullOrWhiteSpace()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | input.Sorting = nameof(WmsInOutStockOrder.Sort); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #region 动态构造查询条件 | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //动态构造查询条件 | 
|---|
|  |  |  | var whereConditions = DynamicGetQueryParams(input); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var list = await wmsInOutStockOrderRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); | 
|---|
|  |  |  | var result = ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(list); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var sheets = new Dictionary<string, object> | 
|---|
|  |  |  | { | 
|---|
|  |  |  | ["配置"] = ExportHelper.ConvertListToExportData(result), | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var fileName = result.Count > 1 ? "出入库单据列表" : result.Count == 1 ? result[0]?.OrderNo : "WmsInOutStockOrder模版"; | 
|---|
|  |  |  | return (sheets, fileName); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var whereConditions = DynamicGetQueryParams(input); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var list = await wmsInOutStockOrderRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); | 
|---|
|  |  |  | var result = ObjectMapper.Map<List<WmsInOutStockOrder>, List<WmsInOutStockOrderDto>>(list); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var sheets = new Dictionary<string, object> | 
|---|
|  |  |  | { | 
|---|
|  |  |  | ["配置"] = ExportHelper.ConvertListToExportData(result), | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var fileName = result.Count > 1 ? "出入库单据列表" : result.Count == 1 ? result[0]?.OrderNo : "WmsInOutStockOrder模版"; | 
|---|
|  |  |  | return (sheets, fileName); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 校验出入库单据,当新建或更新时 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | /// <param name="input"></param> | 
|---|
|  |  |  | /// <returns></returns> | 
|---|
|  |  |  | protected Task CheckCreateOrUpdateDtoAsync(WmsInOutStockOrderCreateOrUpdateDtoBase input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Check.NotNull(input, nameof(input)); | 
|---|
|  |  |  | Check.NotNullOrWhiteSpace(input.OrderNo, "单据编号", 50); | 
|---|
|  |  |  | Check.NotNull(input.OrderStatus, "单据状态"); | 
|---|
|  |  |  | Check.NotNullOrWhiteSpace(input.MaterialNo, "物料件号", 50); | 
|---|
|  |  |  | protected Task CheckCreateOrUpdateDtoAsync(WmsInOutStockOrderCreateOrUpdateDtoBase input) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Check.NotNull(input, nameof(input)); | 
|---|
|  |  |  | Check.NotNullOrWhiteSpace(input.MaterialNo, "物料编号", 50); | 
|---|
|  |  |  | Check.NotNullOrWhiteSpace(input.MaterialBatch, "批次号", 50); | 
|---|
|  |  |  | Check.NotNull(input.OrderType, "单据类型"); | 
|---|
|  |  |  | Check.NotNull(input.StockType, "操作类型(枚举值)"); | 
|---|
|  |  |  | Check.NotNull(input.StockType, "操作类型"); | 
|---|
|  |  |  | Check.NotNull(input.MaterialNumber, "单据数量"); | 
|---|
|  |  |  | Check.NotNull(input.DistributeNumber, "下发数量"); | 
|---|
|  |  |  | Check.NotNull(input.CompleteNumber, "完成数量"); | 
|---|
|  |  |  | Check.NotNull(input.Priority, "优先级"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return Task.CompletedTask; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return Task.CompletedTask; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|