HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs
@@ -1,4 +1,5 @@ using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CmsQueryExtensions; using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Entities; HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordDto.cs
@@ -1,4 +1,5 @@ using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CmsQueryExtensions; using Volo.Abp.Application.Dtos; using Volo.Abp.Data; using Volo.Abp.Domain.Entities; HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterialStocks/WmsMaterialStockDto.cs
@@ -1,4 +1,5 @@ using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CmsQueryExtensions; using System.Runtime.CompilerServices; using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Entities; HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterials/WmsMaterialDto.cs
@@ -1,4 +1,5 @@ using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CmsQueryExtensions; using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Entities; HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceDto.cs
@@ -1,4 +1,5 @@ using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CmsQueryExtensions; using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Entities; HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsTask/WmsTaskDto.cs
@@ -1,205 +1,205 @@ using CMS.Plugin.HIAWms.Domain.Shared.Enums; using Volo.Abp.Application.Dtos; using Volo.Abp.Data; using Volo.Abp.Domain.Entities; namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsTask; using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CmsQueryExtensions; using Volo.Abp.Application.Dtos; using Volo.Abp.Data; using Volo.Abp.Domain.Entities; namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsTask; /// <summary> /// Wms任务管理表数据参数对象 /// </summary> public class WmsTaskDto: ExtensibleEntityDto<Guid>, IHasConcurrencyStamp { /// <summary> /// 巷道 /// </summary> public int? Aisle { get; set; } public class WmsTaskDto : ExtensibleEntityDto<Guid>, IHasConcurrencyStamp { /// <summary> /// 巷道 /// </summary> public int? Aisle { get; set; } /// <summary> /// /// </summary> public string? ConcurrencyStamp { get; set; } /// <summary> /// /// </summary> public string? ConcurrencyStamp { get; set; } /// <summary> /// 托盘编号 /// </summary> public string? ContainerNo { get; set; } /// <summary> /// 托盘编号 /// </summary> public string? ContainerNo { get; set; } /// <summary> /// /// </summary> public DateTime CreationTime { get; set; } /// <summary> /// /// </summary> public DateTime CreationTime { get; set; } /// <summary> /// /// </summary> public string? CreatorId { get; set; } /// <summary> /// /// </summary> public string? CreatorId { get; set; } /// <summary> /// /// </summary> public string? DeleterId { get; set; } /// <summary> /// /// </summary> public string? DeleterId { get; set; } /// <summary> /// /// </summary> public DateTime? DeletionTime { get; set; } /// <summary> /// /// </summary> public DateTime? DeletionTime { get; set; } /// <summary> /// 堆垛机ID /// </summary> public int? DodeviceId { get; set; } /// <summary> /// 堆垛机ID /// </summary> public int? DodeviceId { get; set; } /// <summary> /// 设备类型 /// </summary> public int Dodevicetype { get; set; } /// <summary> /// 设备类型 /// </summary> public int Dodevicetype { get; set; } /// <summary> /// /// </summary> public ExtraPropertyDictionary? ExtraProperties { get; set; } /// <summary> /// /// </summary> public ExtraPropertyDictionary? ExtraProperties { get; set; } /// <summary> /// /// </summary> public bool IsDeleted { get; set; } /// <summary> /// /// </summary> public bool IsDeleted { get; set; } /// <summary> /// 是否禁用 /// </summary> public bool? IsDisabled { get; set; } /// <summary> /// 是否禁用 /// </summary> public bool? IsDisabled { get; set; } /// <summary> /// 下个任务是否生成成功 /// </summary> public int? IsNextTask { get; set; } /// <summary> /// 下个任务是否生成成功 /// </summary> public int? IsNextTask { get; set; } /// <summary> /// WCS是否可以读取 /// </summary> public bool IsRead { get; set; } /// <summary> /// WCS是否可以读取 /// </summary> public bool IsRead { get; set; } /// <summary> /// /// </summary> public DateTime? LastModificationTime { get; set; } /// <summary> /// /// </summary> public DateTime? LastModificationTime { get; set; } /// <summary> /// /// </summary> public string? LastModifierId { get; set; } /// <summary> /// /// </summary> public string? LastModifierId { get; set; } /// <summary> /// 可变变量1 /// </summary> public string? MutableParam1 { get; set; } /// <summary> /// 可变变量1 /// </summary> public string? MutableParam1 { get; set; } /// <summary> /// 可变变量2 /// </summary> public string? MutableParam2 { get; set; } /// <summary> /// 可变变量2 /// </summary> public string? MutableParam2 { get; set; } /// <summary> /// 可变变量3 /// </summary> public string? MutableParam3 { get; set; } /// <summary> /// 可变变量3 /// </summary> public string? MutableParam3 { get; set; } /// <summary> /// 子任务类型 /// </summary> public SonTaskTypeEnum? SonTaskType { get; set; } /// <summary> /// 子任务类型 /// </summary> public SonTaskTypeEnum? SonTaskType { get; set; } /// <summary> /// 子任务类型 /// </summary> public string? SonTaskTypeDesc { get { return GetEnumDescriptionUtil.GetEnumDescription(SonTaskType); } } /// <summary> /// 排序 /// </summary> public int Sort { get; set; } /// <summary> /// 子任务类型 /// </summary> public string? SonTaskTypeDesc { get { return GetEnumDescriptionUtil.GetEnumDescription(SonTaskType); } } /// <summary> /// 排序 /// </summary> public int Sort { get; set; } /// <summary> /// 来源单据号 /// </summary> public string? SourceOrderNo { get; set; } /// <summary> /// 来源单据号 /// </summary> public string? SourceOrderNo { get; set; } /// <summary> /// 起始库位 /// </summary> public string? SourcePlace { get; set; } /// <summary> /// 起始库位 /// </summary> public string? SourcePlace { get; set; } /// <summary> /// 设备任务状态 /// </summary> public int TaskDodeviceStatus { get; set; } /// <summary> /// 设备任务状态 /// </summary> public int TaskDodeviceStatus { get; set; } /// <summary> /// 任务等级 /// </summary> public int TaskLevel { get; set; } /// <summary> /// 任务等级 /// </summary> public int TaskLevel { get; set; } /// <summary> /// 任务号 /// </summary> public string TaskNo { get; set; } /// <summary> /// 任务号 /// </summary> public string TaskNo { get; set; } /// <summary> /// 任务状态 /// </summary> public WmsTaskStatus TaskStatus { get; set; } /// <summary> /// 任务状态 /// </summary> public WmsTaskStatus TaskStatus { get; set; } /// <summary> /// 任务状态 /// </summary> public string TaskStatusDesc { get { return GetEnumDescriptionUtil.GetEnumDescription(TaskStatus); } } /// <summary> /// 任务类型 /// </summary> public TaskTypeEnum TaskType { get; set; } /// <summary> /// 任务状态 /// </summary> public string TaskStatusDesc { get { return GetEnumDescriptionUtil.GetEnumDescription(TaskStatus); } } /// <summary> /// 任务类型 /// </summary> public TaskTypeEnum TaskType { get; set; } /// <summary> /// 任务类型 /// </summary> public string TaskTypeDesc { get { return GetEnumDescriptionUtil.GetEnumDescription(TaskType); } } /// <summary> /// 目标库位 /// </summary> public string? ToPlace { get; set; } /// <summary> /// 任务类型 /// </summary> public string TaskTypeDesc { get { return GetEnumDescriptionUtil.GetEnumDescription(TaskType); } } /// <summary> /// 目标库位 /// </summary> public string? ToPlace { get; set; } /// <summary> /// Gets the export data. /// </summary> /// <returns></returns> public Dictionary<string, object> GetExportData() { var exportData = new Dictionary<string, object>(); foreach (var property in this.GetType().GetProperties()) { exportData.Add(property.Name, property.GetValue(this)); } return exportData; } } public Dictionary<string, object> GetExportData() { var exportData = new Dictionary<string, object>(); foreach (var property in this.GetType().GetProperties()) { exportData.Add(property.Name, property.GetValue(this)); } return exportData; } } HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs
@@ -1,12 +1,6 @@ using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto; using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStores; using CMS.Plugin.HIAWms.Domain.Shared.Util; using CmsQueryExtensions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsAreas.WmsAreaCreateOrUpdateDtoBase; using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces.WmsPlaceCreateOrUpdateDtoBase; HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs
@@ -7,8 +7,8 @@ using Volo.Abp.Application.Dtos; using Volo.Abp.Data; using Volo.Abp.ObjectExtending; using CMS.Plugin.HIAWms.Domain.Shared.Util; using CMS.Plugin.HIAWms.Domain.WmsStores; using CmsQueryExtensions; namespace CMS.Plugin.HIAWms.Application.Implements; HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs
@@ -1,13 +1,13 @@ using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers; using CMS.Plugin.HIAWms.Application.Contracts.Services; using CMS.Plugin.HIAWms.Domain.WmsContainers; using CMS.Plugin.HIAWms.Domain.Shared; using CMS.Plugin.HIAWms.Domain.Shared.WmsContainers; using CMS.Plugin.HIAWms.Domain.WmsContainers; using CmsQueryExtensions; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.Data; using Volo.Abp.ObjectExtending; using CMS.Plugin.HIAWms.Domain.Shared.Util; namespace CMS.Plugin.HIAWms.Application.Implements; HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockRecordAppService.cs
@@ -1,123 +1,123 @@ using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord; using CMS.Plugin.HIAWms.Application.Contracts.Services; using CMS.Plugin.HIAWms.Domain.Shared; using CMS.Plugin.HIAWms.Domain.Shared.Util; using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsInOutStockRecord; using CMS.Plugin.HIAWms.Application.Contracts.Services; using CMS.Plugin.HIAWms.Domain.Shared; using CMS.Plugin.HIAWms.Domain.WmsInOutStockRecord; 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 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 Volo.Abp.ObjectMapping; namespace CMS.Plugin.HIAWms.Application.Implements; /// <summary> /// 出入库记录表应用服务 /// </summary> public class WmsInOutStockRecordAppService : CMSPluginAppService, IWmsInOutStockRecordAppService { private readonly IWmsInOutStockRecordRepository _wmsInOutStockRecordRepository; public class WmsInOutStockRecordAppService : CMSPluginAppService, IWmsInOutStockRecordAppService { private readonly IWmsInOutStockRecordRepository _wmsInOutStockRecordRepository; /// <summary> /// Initializes a new instance of the <see cref="WmsInOutStockRecordAppService"/> class. /// </summary> /// <param name="WmsInOutStockRecordRepository">The task job repository.</param> public WmsInOutStockRecordAppService(IWmsInOutStockRecordRepository wmsInOutStockRecordRepository) { _wmsInOutStockRecordRepository = wmsInOutStockRecordRepository; } public WmsInOutStockRecordAppService(IWmsInOutStockRecordRepository wmsInOutStockRecordRepository) { _wmsInOutStockRecordRepository = wmsInOutStockRecordRepository; } /// <summary> /// 获取指定出入库记录表 /// </summary> /// <param name="id"></param> /// <returns></returns> public virtual async Task<WmsInOutStockRecordDto> GetAsync(Guid id) { return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(await _wmsInOutStockRecordRepository.GetAsync(id)); } public virtual async Task<WmsInOutStockRecordDto> GetAsync(Guid id) { return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(await _wmsInOutStockRecordRepository.GetAsync(id)); } /// <summary> /// 分页获取出入库记录表 /// </summary> /// <param name="input"></param> /// <returns></returns> public virtual async Task<PagedResultDto<WmsInOutStockRecordDto>> GetListAsync(GetWmsInOutStockRecordInput input) { Check.NotNull(input, nameof(input)); if (input.Sorting.IsNullOrWhiteSpace()) { input.Sorting = nameof(WmsInOutStockRecord.Sort); } public virtual async Task<PagedResultDto<WmsInOutStockRecordDto>> GetListAsync(GetWmsInOutStockRecordInput input) { Check.NotNull(input, nameof(input)); if (input.Sorting.IsNullOrWhiteSpace()) { input.Sorting = nameof(WmsInOutStockRecord.Sort); } #region 动态构造查询条件 //动态构造查询条件 var whereConditions = DynamicGetQueryParams(input); #endregion var count = await _wmsInOutStockRecordRepository.GetCountAsync(whereConditions); var list = await _wmsInOutStockRecordRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); return new PagedResultDto<WmsInOutStockRecordDto>(count, ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(list)); } var whereConditions = DynamicGetQueryParams(input); #endregion var count = await _wmsInOutStockRecordRepository.GetCountAsync(whereConditions); var list = await _wmsInOutStockRecordRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); return new PagedResultDto<WmsInOutStockRecordDto>(count, ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(list)); } /// <summary> /// 动态构造查询条件 /// </summary> /// <param name="input">输入参数</param> /// <returns></returns> private FunReturnResultModel<Expression<Func<WmsInOutStockRecord, bool>>> DynamicGetQueryParams(GetWmsInOutStockRecordInput input) { private FunReturnResultModel<Expression<Func<WmsInOutStockRecord, bool>>> DynamicGetQueryParams(GetWmsInOutStockRecordInput input) { //动态构造查询条件 var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsInOutStockRecord, GetWmsInOutStockRecordInput>(input); if (!whereConditions.IsSuccess) { throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg); } var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsInOutStockRecord, GetWmsInOutStockRecordInput>(input); if (!whereConditions.IsSuccess) { throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg); } //也可再次自定义构建查询条件 Expression<Func<WmsInOutStockRecord, bool>> extendExpression = a => a.IsDeleted == false; Expression<Func<WmsInOutStockRecord, bool>> extendExpression = a => a.IsDeleted == false; // 使用 System.Linq.PredicateBuilder 的 And var pres = (System.Linq.Expressions.Expression<Func<WmsInOutStockRecord, bool>>)(whereConditions.data); whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); return whereConditions; } var pres = (System.Linq.Expressions.Expression<Func<WmsInOutStockRecord, 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<WmsInOutStockRecordDto> CreateAsync(WmsInOutStockRecordCreateDto input) { await CheckCreateOrUpdateDtoAsync(input); var maxSort = await _wmsInOutStockRecordRepository.GetMaxSortAsync(); var sort = input.Sort ?? maxSort; var insertObj = ObjectMapper.Map<WmsInOutStockRecordCreateDto, WmsInOutStockRecord>(input); insertObj.Sort = sort; input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); await _wmsInOutStockRecordRepository.InsertAsync(insertObj); if (input.Sort.HasValue && insertObj.Sort != maxSort) { await AdjustSortAsync(insertObj.Id, insertObj.Sort); } return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(insertObj); } public virtual async Task<WmsInOutStockRecordDto> CreateAsync(WmsInOutStockRecordCreateDto input) { await CheckCreateOrUpdateDtoAsync(input); var maxSort = await _wmsInOutStockRecordRepository.GetMaxSortAsync(); var sort = input.Sort ?? maxSort; var insertObj = ObjectMapper.Map<WmsInOutStockRecordCreateDto, WmsInOutStockRecord>(input); insertObj.Sort = sort; input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); await _wmsInOutStockRecordRepository.InsertAsync(insertObj); if (input.Sort.HasValue && insertObj.Sort != maxSort) { await AdjustSortAsync(insertObj.Id, insertObj.Sort); } return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(insertObj); } /// <summary> /// 更新出入库记录表 /// </summary> @@ -125,17 +125,17 @@ /// <param name="input"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> public virtual async Task<WmsInOutStockRecordDto> UpdateAsync(Guid id, WmsInOutStockRecordUpdateDto input) { await CheckCreateOrUpdateDtoAsync(input); var updateObj = await _wmsInOutStockRecordRepository.GetAsync(id); updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); updateObj.OrderNo = input.OrderNo; public virtual async Task<WmsInOutStockRecordDto> UpdateAsync(Guid id, WmsInOutStockRecordUpdateDto input) { await CheckCreateOrUpdateDtoAsync(input); var updateObj = await _wmsInOutStockRecordRepository.GetAsync(id); updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); updateObj.OrderNo = input.OrderNo; updateObj.MaterialName = input.MaterialName; updateObj.MaterialNo = input.MaterialNo; updateObj.StockType = input.StockType; @@ -147,20 +147,20 @@ updateObj.TaskNo = input.TaskNo; updateObj.SourcePlace = input.SourcePlace; updateObj.ToPlace = input.ToPlace; await _wmsInOutStockRecordRepository.UpdateAsync(updateObj); return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(updateObj); } await _wmsInOutStockRecordRepository.UpdateAsync(updateObj); return ObjectMapper.Map<WmsInOutStockRecord, WmsInOutStockRecordDto>(updateObj); } /// <summary> /// 克隆出入库记录表 /// </summary> /// <param name="ids"></param> /// <returns></returns> public async Task<List<WmsInOutStockRecordDto>> CloneAsync(IEnumerable<Guid> ids) { public async Task<List<WmsInOutStockRecordDto>> CloneAsync(IEnumerable<Guid> ids) { //var wmsInOutStockRecords = new List<WmsInOutStockRecord>(); //if (ids != null) //{ @@ -180,140 +180,140 @@ // name += WmsInOutStockRecordConsts.CloneTag; // continue; // } // notExist = true; // } // //WmsInOutStockRecord = await wmsInOutStockRecordRepository.InsertAsync(WmsInOutStockRecord.Clone(GuidGenerator.Create(), name, sort++)); // wmsInOutStockRecords.Add(WmsInOutStockRecord); // } // } //} //return ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(wmsInOutStockRecords); return new List<WmsInOutStockRecordDto>(); } return new List<WmsInOutStockRecordDto>(); } /// <summary> /// 删除单个出入库记录表 /// </summary> /// <param name="id"></param> /// <returns></returns> public virtual Task DeleteAsync(Guid id) { return _wmsInOutStockRecordRepository.DeleteAsync(id); } public virtual Task DeleteAsync(Guid id) { return _wmsInOutStockRecordRepository.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 _wmsInOutStockRecordRepository.GetListAsync(null, nameof(WmsInOutStockRecord.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 _wmsInOutStockRecordRepository.UpdateManyAsync(list); } public virtual async Task AdjustSortAsync(Guid id, int sort) { var list = await _wmsInOutStockRecordRepository.GetListAsync(null, nameof(WmsInOutStockRecord.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 _wmsInOutStockRecordRepository.UpdateManyAsync(list); } /// <summary> /// 导入出入库记录表 /// </summary> /// <param name="input"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> public async Task ImportAsync(WmsInOutStockRecordsImportModel input) { } public async Task ImportAsync(WmsInOutStockRecordsImportModel input) { } /// <summary> /// 导出出入库记录表 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockRecordInput input) { Check.NotNull(input, nameof(input)); if (input.Sorting.IsNullOrWhiteSpace()) { input.Sorting = nameof(WmsInOutStockRecord.Sort); } public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsInOutStockRecordInput input) { Check.NotNull(input, nameof(input)); if (input.Sorting.IsNullOrWhiteSpace()) { input.Sorting = nameof(WmsInOutStockRecord.Sort); } #region 动态构造查询条件 //动态构造查询条件 var whereConditions = DynamicGetQueryParams(input); #endregion var list = await _wmsInOutStockRecordRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); var result = ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(list); var sheets = new Dictionary<string, object> { ["配置"] = ExportHelper.ConvertListToExportData(result), }; var fileName = result.Count > 1 ? "WmsInOutStockRecord列表" : result.Count == 1 ? result[0]?.MaterialName : "WmsInOutStockRecord模版"; return (sheets, fileName); } var whereConditions = DynamicGetQueryParams(input); #endregion var list = await _wmsInOutStockRecordRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); var result = ObjectMapper.Map<List<WmsInOutStockRecord>, List<WmsInOutStockRecordDto>>(list); var sheets = new Dictionary<string, object> { ["配置"] = ExportHelper.ConvertListToExportData(result), }; var fileName = result.Count > 1 ? "WmsInOutStockRecord列表" : result.Count == 1 ? result[0]?.MaterialName : "WmsInOutStockRecord模版"; return (sheets, fileName); } /// <summary> /// 校验出入库记录表,当新建或更新时 /// </summary> /// <param name="input"></param> /// <returns></returns> protected Task CheckCreateOrUpdateDtoAsync(WmsInOutStockRecordCreateOrUpdateDtoBase input) { Check.NotNull(input, nameof(input)); Check.NotNullOrWhiteSpace(input.OrderNo, "单据编号", 50); protected Task CheckCreateOrUpdateDtoAsync(WmsInOutStockRecordCreateOrUpdateDtoBase input) { Check.NotNull(input, nameof(input)); Check.NotNullOrWhiteSpace(input.OrderNo, "单据编号", 50); Check.NotNullOrWhiteSpace(input.MaterialNo, "物料件号", 50); Check.NotNull(input.StockType, "操作类型"); Check.NotNullOrWhiteSpace(input.MaterialId, "物料ID", 50); Check.NotNullOrWhiteSpace(input.TaskNo, "任务号", 50); return Task.CompletedTask; } } return Task.CompletedTask; } } HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs
@@ -1,9 +1,9 @@ using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterials; using CMS.Plugin.HIAWms.Application.Contracts.Services; using CMS.Plugin.HIAWms.Domain.Shared; using CMS.Plugin.HIAWms.Domain.Shared.Util; using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterials; using CMS.Plugin.HIAWms.Domain.WmsMaterials; using CmsQueryExtensions; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.Data; HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialInfoAppService.cs
@@ -8,6 +8,7 @@ using Volo.Abp.Data; using Volo.Abp.ObjectExtending; using Volo.Abp.ObjectMapping; using CmsQueryExtensions; namespace CMS.Plugin.HIAWms.Application.Implements; @@ -328,7 +329,7 @@ var sheets = new Dictionary<string, object> { ["配置"] = result.Select(x => x.GetExportData()).ToList(), ["配置"] = ExportHelper.ConvertListToExportData(result), }; var fileName = result.Count > 1 ? "WmsMaterialInfo列表" : result.Count == 1 ? result.First()?.MaterialNo : "WmsMaterialInfo模版"; HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs
@@ -1,13 +1,13 @@ using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces; using CMS.Plugin.HIAWms.Application.Contracts.Services; using CMS.Plugin.HIAWms.Domain.WmsPlaces; using CMS.Plugin.HIAWms.Domain.Shared; using CMS.Plugin.HIAWms.Domain.Shared.WmsPlaces; using CMS.Plugin.HIAWms.Domain.WmsPlaces; using CmsQueryExtensions; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.Data; using Volo.Abp.ObjectExtending; using CMS.Plugin.HIAWms.Domain.Shared.Util; namespace CMS.Plugin.HIAWms.Application.Implements; HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsStoreAppService.cs
@@ -7,7 +7,7 @@ using Volo.Abp.Application.Dtos; using Volo.Abp.Data; using Volo.Abp.ObjectExtending; using CMS.Plugin.HIAWms.Domain.Shared.Util; using CmsQueryExtensions; namespace CMS.Plugin.HIAWms.Application.Implements; HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsTaskAppService.cs
@@ -1,127 +1,127 @@ using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsTask; using CMS.Plugin.HIAWms.Application.Contracts.Services; using CMS.Plugin.HIAWms.Domain.Shared; using CMS.Plugin.HIAWms.Domain.Shared.Util; using CMS.Plugin.HIAWms.Domain.WmsTask; 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.WmsTask; using CMS.Plugin.HIAWms.Application.Contracts.Services; using CMS.Plugin.HIAWms.Domain.Shared; using CMS.Plugin.HIAWms.Domain.WmsTask; 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 Volo.Abp.ObjectMapping; namespace CMS.Plugin.HIAWms.Application.Implements; /// <summary> /// Wms任务管理表应用服务 /// </summary> public class WmsTaskAppService : CMSPluginAppService, IWmsTaskAppService { private readonly IWmsTaskRepository wmsTaskRepository; public class WmsTaskAppService : CMSPluginAppService, IWmsTaskAppService { private readonly IWmsTaskRepository wmsTaskRepository; /// <summary> /// Initializes a new instance of the <see cref="WmsTaskAppService"/> class. /// </summary> /// <param name="WmsTaskRepository">The task job repository.</param> public WmsTaskAppService(IWmsTaskRepository _WmsTaskRepository) { wmsTaskRepository = _WmsTaskRepository; } public WmsTaskAppService(IWmsTaskRepository _WmsTaskRepository) { wmsTaskRepository = _WmsTaskRepository; } /// <summary> /// 获取指定Wms任务管理表 /// </summary> /// <param name="id"></param> /// <returns></returns> public virtual async Task<WmsTaskDto> GetAsync(Guid id) { return ObjectMapper.Map<WmsTask, WmsTaskDto>(await wmsTaskRepository.GetAsync(id)); } public virtual async Task<WmsTaskDto> GetAsync(Guid id) { return ObjectMapper.Map<WmsTask, WmsTaskDto>(await wmsTaskRepository.GetAsync(id)); } /// <summary> /// 分页获取Wms任务管理表 /// </summary> /// <param name="input"></param> /// <returns></returns> public virtual async Task<PagedResultDto<WmsTaskDto>> GetListAsync(GetWmsTaskInput input) { Check.NotNull(input, nameof(input)); if (input.Sorting.IsNullOrWhiteSpace()) { input.Sorting = nameof(WmsTask.Sort); } public virtual async Task<PagedResultDto<WmsTaskDto>> GetListAsync(GetWmsTaskInput input) { Check.NotNull(input, nameof(input)); if (input.Sorting.IsNullOrWhiteSpace()) { input.Sorting = nameof(WmsTask.Sort); } #region 动态构造查询条件 //动态构造查询条件 var whereConditions = DynamicGetQueryParams(input); #endregion var count = await wmsTaskRepository.GetCountAsync(whereConditions); var list = await wmsTaskRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); return new PagedResultDto<WmsTaskDto>(count, ObjectMapper.Map<List<WmsTask>, List<WmsTaskDto>>(list)); } var whereConditions = DynamicGetQueryParams(input); #endregion var count = await wmsTaskRepository.GetCountAsync(whereConditions); var list = await wmsTaskRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); return new PagedResultDto<WmsTaskDto>(count, ObjectMapper.Map<List<WmsTask>, List<WmsTaskDto>>(list)); } /// <summary> /// 动态构造查询条件 /// </summary> /// <param name="input">输入参数</param> /// <returns></returns> private FunReturnResultModel<Expression<Func<WmsTask, bool>>> DynamicGetQueryParams(GetWmsTaskInput input) { private FunReturnResultModel<Expression<Func<WmsTask, bool>>> DynamicGetQueryParams(GetWmsTaskInput input) { //动态构造查询条件 var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsTask, GetWmsTaskInput>(input); if (!whereConditions.IsSuccess) { throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg); } var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsTask, GetWmsTaskInput>(input); if (!whereConditions.IsSuccess) { throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg); } //也可再次自定义构建查询条件 Expression<Func<WmsTask, bool>> extendExpression = a => a.IsDeleted == false; Expression<Func<WmsTask, bool>> extendExpression = a => a.IsDeleted == false; // 使用 System.Linq.PredicateBuilder 的 And var pres = (System.Linq.Expressions.Expression<Func<WmsTask, bool>>)(whereConditions.data); whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); return whereConditions; } var pres = (System.Linq.Expressions.Expression<Func<WmsTask, bool>>)(whereConditions.data); whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression); return whereConditions; } /// <summary> /// 新建Wms任务管理表 /// </summary> /// <param name="input"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> public virtual async Task<WmsTaskDto> CreateAsync(WmsTaskCreateDto input) { await CheckCreateOrUpdateDtoAsync(input); var exist = await wmsTaskRepository.NameExistAsync(input.TaskNo); if (exist) { throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskNo]); } var maxSort = await wmsTaskRepository.GetMaxSortAsync(); var sort = input.Sort ?? maxSort; var insertObj = ObjectMapper.Map<WmsTaskCreateDto, WmsTask>(input); insertObj.Sort = sort; input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); await wmsTaskRepository.InsertAsync(insertObj); if (input.Sort.HasValue && insertObj.Sort != maxSort) { await AdjustSortAsync(insertObj.Id, insertObj.Sort); } return ObjectMapper.Map<WmsTask, WmsTaskDto>(insertObj); } public virtual async Task<WmsTaskDto> CreateAsync(WmsTaskCreateDto input) { await CheckCreateOrUpdateDtoAsync(input); var exist = await wmsTaskRepository.NameExistAsync(input.TaskNo); if (exist) { throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskNo]); } var maxSort = await wmsTaskRepository.GetMaxSortAsync(); var sort = input.Sort ?? maxSort; var insertObj = ObjectMapper.Map<WmsTaskCreateDto, WmsTask>(input); insertObj.Sort = sort; input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); await wmsTaskRepository.InsertAsync(insertObj); if (input.Sort.HasValue && insertObj.Sort != maxSort) { await AdjustSortAsync(insertObj.Id, insertObj.Sort); } return ObjectMapper.Map<WmsTask, WmsTaskDto>(insertObj); } /// <summary> /// 更新Wms任务管理表 /// </summary> @@ -129,21 +129,21 @@ /// <param name="input"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> public virtual async Task<WmsTaskDto> UpdateAsync(Guid id, WmsTaskUpdateDto input) { await CheckCreateOrUpdateDtoAsync(input); var updateObj = await wmsTaskRepository.GetAsync(id); var exist = await wmsTaskRepository.NameExistAsync(input.TaskNo, updateObj.Id); if (exist) { throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskNo]); } updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); updateObj.Aisle = input.Aisle; public virtual async Task<WmsTaskDto> UpdateAsync(Guid id, WmsTaskUpdateDto input) { await CheckCreateOrUpdateDtoAsync(input); var updateObj = await wmsTaskRepository.GetAsync(id); var exist = await wmsTaskRepository.NameExistAsync(input.TaskNo, updateObj.Id); if (exist) { throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.TaskNo]); } updateObj.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); input.MapExtraPropertiesTo(updateObj, MappingPropertyDefinitionChecks.None); updateObj.Aisle = input.Aisle; updateObj.ContainerNo = input.ContainerNo; updateObj.DodeviceId = input.DodeviceId; updateObj.Dodevicetype = input.Dodevicetype; @@ -162,20 +162,20 @@ updateObj.TaskStatus = input.TaskStatus; updateObj.TaskType = input.TaskType; updateObj.ToPlace = input.ToPlace; await wmsTaskRepository.UpdateAsync(updateObj); return ObjectMapper.Map<WmsTask, WmsTaskDto>(updateObj); } await wmsTaskRepository.UpdateAsync(updateObj); return ObjectMapper.Map<WmsTask, WmsTaskDto>(updateObj); } /// <summary> /// 克隆Wms任务管理表 /// </summary> /// <param name="ids"></param> /// <returns></returns> public async Task<List<WmsTaskDto>> CloneAsync(IEnumerable<Guid> ids) { public async Task<List<WmsTaskDto>> CloneAsync(IEnumerable<Guid> ids) { //var wmsTasks = new List<WmsTask>(); //if (ids != null) //{ @@ -195,262 +195,262 @@ // name += WmsTaskConsts.CloneTag; // continue; // } // notExist = true; // } // //WmsTask = await wmsTaskRepository.InsertAsync(WmsTask.Clone(GuidGenerator.Create(), name, sort++)); // wmsTasks.Add(WmsTask); // } // } //} //return ObjectMapper.Map<List<WmsTask>, List<WmsTaskDto>>(wmsTasks); return new List<WmsTaskDto>(); } return new List<WmsTaskDto>(); } /// <summary> /// 删除单个Wms任务管理表 /// </summary> /// <param name="id"></param> /// <returns></returns> public virtual Task DeleteAsync(Guid id) { return wmsTaskRepository.DeleteAsync(id); } public virtual Task DeleteAsync(Guid id) { return wmsTaskRepository.DeleteAsync(id); } /// <summary> /// 删除多个Wms任务管理表 /// </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> /// 调整排序Wms任务管理表 /// </summary> /// <param name="id"></param> /// <param name="sort"></param> /// <returns></returns> public virtual async Task AdjustSortAsync(Guid id, int sort) { var list = await wmsTaskRepository.GetListAsync(null, nameof(WmsTask.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 wmsTaskRepository.UpdateManyAsync(list); } public virtual async Task AdjustSortAsync(Guid id, int sort) { var list = await wmsTaskRepository.GetListAsync(null, nameof(WmsTask.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 wmsTaskRepository.UpdateManyAsync(list); } /// <summary> /// 导入Wms任务管理表 /// </summary> /// <param name="input"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> public async Task ImportAsync(WmsTasksImportModel input) { Check.NotNull(input, nameof(input)); var wmsTaskCreateDtos = new List<(int RowIndex, WmsTaskCreateDto Item)>(); var wmsTaskUpdateDtos = new List<(int RowIndex, Guid Id, WmsTaskUpdateDto Item)>(); var importItems = input.WmsTasks; if (importItems != null && importItems.Any()) { public async Task ImportAsync(WmsTasksImportModel input) { Check.NotNull(input, nameof(input)); var wmsTaskCreateDtos = new List<(int RowIndex, WmsTaskCreateDto Item)>(); var wmsTaskUpdateDtos = new List<(int RowIndex, Guid Id, WmsTaskUpdateDto Item)>(); var importItems = input.WmsTasks; if (importItems != null && importItems.Any()) { #region 导入校验 // 判断名称是否重复,并输出第几行重复 var duplicateWmsTasks = importItems.GroupBy(x => x.TaskNo).Where(x => x.Count() > 1).ToList(); if (duplicateWmsTasks?.Any() == true) { var duplicateWmsTaskMsgs = duplicateWmsTasks.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} 行:{x.Key} 名称重复"); var errorMsg = $"导入失败!配置, {string.Join(",", duplicateWmsTaskMsgs)},终止导入"; throw new UserFriendlyException(errorMsg); } #endregion foreach (var impItem in importItems) { if (impItem.TaskNo.IsNullOrWhiteSpace()) { continue; } if (impItem.TaskNo.IsNullOrWhiteSpace()) { var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:WmsTask名称不能为空"; throw new UserFriendlyException(errorMsg); } var oldWmsTask = await wmsTaskRepository.FindByNameAsync(impItem.TaskNo); if (oldWmsTask != null) { var wmsTaskUpdateDto = new WmsTaskUpdateDto { var duplicateWmsTasks = importItems.GroupBy(x => x.TaskNo).Where(x => x.Count() > 1).ToList(); if (duplicateWmsTasks?.Any() == true) { var duplicateWmsTaskMsgs = duplicateWmsTasks.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} 行:{x.Key} 名称重复"); var errorMsg = $"导入失败!配置, {string.Join(",", duplicateWmsTaskMsgs)},终止导入"; throw new UserFriendlyException(errorMsg); } #endregion foreach (var impItem in importItems) { if (impItem.TaskNo.IsNullOrWhiteSpace()) { continue; } if (impItem.TaskNo.IsNullOrWhiteSpace()) { var errorMsg = $"导入失败!配置,第{impItem.RowIndex}行:WmsTask名称不能为空"; throw new UserFriendlyException(errorMsg); } var oldWmsTask = await wmsTaskRepository.FindByNameAsync(impItem.TaskNo); if (oldWmsTask != null) { var wmsTaskUpdateDto = new WmsTaskUpdateDto { Aisle = impItem.Aisle, ContainerNo = impItem.ContainerNo, DodeviceId = impItem.DodeviceId, Dodevicetype = impItem.Dodevicetype, IsDisabled = impItem.IsDisabled, IsNextTask = impItem.IsNextTask, IsRead = impItem.IsRead, MutableParam1 = impItem.MutableParam1, MutableParam2 = impItem.MutableParam2, MutableParam3 = impItem.MutableParam3, SonTaskType = impItem.SonTaskType, SourceOrderNo = impItem.SourceOrderNo, SourcePlace = impItem.SourcePlace, TaskDodeviceStatus = impItem.TaskDodeviceStatus, TaskLevel = impItem.TaskLevel, TaskNo = impItem.TaskNo, TaskStatus = impItem.TaskStatus, TaskType = impItem.TaskType, ToPlace = impItem.ToPlace, }; wmsTaskUpdateDtos.Add((impItem.RowIndex, oldWmsTask.Id, wmsTaskUpdateDto)); } else { var wmsTaskCreateDto = new WmsTaskCreateDto { ContainerNo = impItem.ContainerNo, DodeviceId = impItem.DodeviceId, Dodevicetype = impItem.Dodevicetype, IsDisabled = impItem.IsDisabled, IsNextTask = impItem.IsNextTask, IsRead = impItem.IsRead, MutableParam1 = impItem.MutableParam1, MutableParam2 = impItem.MutableParam2, MutableParam3 = impItem.MutableParam3, SonTaskType = impItem.SonTaskType, SourceOrderNo = impItem.SourceOrderNo, SourcePlace = impItem.SourcePlace, TaskDodeviceStatus = impItem.TaskDodeviceStatus, TaskLevel = impItem.TaskLevel, TaskNo = impItem.TaskNo, TaskStatus = impItem.TaskStatus, TaskType = impItem.TaskType, ToPlace = impItem.ToPlace, }; wmsTaskUpdateDtos.Add((impItem.RowIndex, oldWmsTask.Id, wmsTaskUpdateDto)); } else { var wmsTaskCreateDto = new WmsTaskCreateDto { Aisle = impItem.Aisle, ContainerNo = impItem.ContainerNo, DodeviceId = impItem.DodeviceId, Dodevicetype = impItem.Dodevicetype, IsDisabled = impItem.IsDisabled, IsNextTask = impItem.IsNextTask, IsRead = impItem.IsRead, MutableParam1 = impItem.MutableParam1, MutableParam2 = impItem.MutableParam2, MutableParam3 = impItem.MutableParam3, SonTaskType = impItem.SonTaskType, SourceOrderNo = impItem.SourceOrderNo, SourcePlace = impItem.SourcePlace, TaskDodeviceStatus = impItem.TaskDodeviceStatus, TaskLevel = impItem.TaskLevel, TaskNo = impItem.TaskNo, TaskStatus = impItem.TaskStatus, TaskType = impItem.TaskType, ToPlace = impItem.ToPlace, }; wmsTaskCreateDtos.Add((impItem.RowIndex, wmsTaskCreateDto)); } } } ContainerNo = impItem.ContainerNo, DodeviceId = impItem.DodeviceId, Dodevicetype = impItem.Dodevicetype, IsDisabled = impItem.IsDisabled, IsNextTask = impItem.IsNextTask, IsRead = impItem.IsRead, MutableParam1 = impItem.MutableParam1, MutableParam2 = impItem.MutableParam2, MutableParam3 = impItem.MutableParam3, SonTaskType = impItem.SonTaskType, SourceOrderNo = impItem.SourceOrderNo, SourcePlace = impItem.SourcePlace, TaskDodeviceStatus = impItem.TaskDodeviceStatus, TaskLevel = impItem.TaskLevel, TaskNo = impItem.TaskNo, TaskStatus = impItem.TaskStatus, TaskType = impItem.TaskType, ToPlace = impItem.ToPlace, }; wmsTaskCreateDtos.Add((impItem.RowIndex, wmsTaskCreateDto)); } } } // 新增 foreach (var wmsTaskDto in wmsTaskCreateDtos) { try { await CreateAsync(wmsTaskDto.Item); } catch (Exception e) { var errorMsg = $"导入失败!配置,第{wmsTaskDto.RowIndex}行:{e.Message},终止导入"; throw new UserFriendlyException(errorMsg); } } foreach (var wmsTaskDto in wmsTaskCreateDtos) { try { await CreateAsync(wmsTaskDto.Item); } catch (Exception e) { var errorMsg = $"导入失败!配置,第{wmsTaskDto.RowIndex}行:{e.Message},终止导入"; throw new UserFriendlyException(errorMsg); } } // 更新 foreach (var wmsTaskDto in wmsTaskUpdateDtos) { try { await UpdateAsync(wmsTaskDto.Id, wmsTaskDto.Item); } catch (Exception e) { var errorMsg = $"导入失败!配置,第{wmsTaskDto.RowIndex}行:{e.Message},终止导入"; throw new UserFriendlyException(errorMsg); } } } foreach (var wmsTaskDto in wmsTaskUpdateDtos) { try { await UpdateAsync(wmsTaskDto.Id, wmsTaskDto.Item); } catch (Exception e) { var errorMsg = $"导入失败!配置,第{wmsTaskDto.RowIndex}行:{e.Message},终止导入"; throw new UserFriendlyException(errorMsg); } } } /// <summary> /// 导出Wms任务管理表 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsTaskInput input) { Check.NotNull(input, nameof(input)); if (input.Sorting.IsNullOrWhiteSpace()) { input.Sorting = nameof(WmsTask.Sort); } public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWmsTaskInput input) { Check.NotNull(input, nameof(input)); if (input.Sorting.IsNullOrWhiteSpace()) { input.Sorting = nameof(WmsTask.Sort); } #region 动态构造查询条件 //动态构造查询条件 var whereConditions = DynamicGetQueryParams(input); #endregion var list = await wmsTaskRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); var result = ObjectMapper.Map<List<WmsTask>, List<WmsTaskDto>>(list); var sheets = new Dictionary<string, object> { ["配置"] = ExportHelper.ConvertListToExportData(result), }; var fileName = result.Count > 1 ? "Wms任务管理表列表" : result.Count == 1 ? result[0]?.TaskNo : "WmsTask模版"; return (sheets, fileName); } var whereConditions = DynamicGetQueryParams(input); #endregion var list = await wmsTaskRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); var result = ObjectMapper.Map<List<WmsTask>, List<WmsTaskDto>>(list); var sheets = new Dictionary<string, object> { ["配置"] = ExportHelper.ConvertListToExportData(result), }; var fileName = result.Count > 1 ? "Wms任务管理表列表" : result.Count == 1 ? result[0]?.TaskNo : "WmsTask模版"; return (sheets, fileName); } /// <summary> /// 校验Wms任务管理表,当新建或更新时 /// </summary> /// <param name="input"></param> /// <returns></returns> protected Task CheckCreateOrUpdateDtoAsync(WmsTaskCreateOrUpdateDtoBase input) { Check.NotNull(input, nameof(input)); Check.NotNull(input.Dodevicetype, "设备类型"); protected Task CheckCreateOrUpdateDtoAsync(WmsTaskCreateOrUpdateDtoBase input) { Check.NotNull(input, nameof(input)); Check.NotNull(input.Dodevicetype, "设备类型"); Check.NotNull(input.IsRead, "WCS是否可以读取"); Check.NotNull(input.TaskDodeviceStatus, "设备任务状态"); Check.NotNull(input.TaskLevel, "任务等级"); Check.NotNullOrWhiteSpace(input.TaskNo, "任务号", 50); Check.NotNull(input.TaskStatus, "任务状态"); Check.NotNull(input.TaskType, "任务类型"); return Task.CompletedTask; } } return Task.CompletedTask; } }