diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/EosIncomingBackgroundWorker.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/EosIncomingBackgroundWorker.cs index 159dad81a..3835ef772 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/EosIncomingBackgroundWorker.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.EosAgent/Incoming/EosIncomingBackgroundWorker.cs @@ -51,13 +51,13 @@ public class EosIncomingBackgroundWorker : AsyncPeriodicBackgroundWorkerBase //转换Ship await shipConverter.ConvertAsync(shipsFromExternalList).ConfigureAwait(false); - //Logger.LogInformation($"读取 产品"); - //var productHandleService = workerContext.ServiceProvider.GetRequiredService(); - //var productConverter = workerContext.ServiceProvider.GetRequiredService(); - ////读取并保持Product - //var productsFromExternalList = await productHandleService.ReadAsync().ConfigureAwait(false); - //// 转换Product - //await productConverter.ConvertAsync(productsFromExternalList).ConfigureAwait(false); + Logger.LogInformation($"读取 产品"); + var productHandleService = workerContext.ServiceProvider.GetRequiredService(); + var productConverter = workerContext.ServiceProvider.GetRequiredService(); + //读取并保持Product + var productsFromExternalList = await productHandleService.ReadAsync().ConfigureAwait(false); + // 转换Product + await productConverter.ConvertAsync(productsFromExternalList).ConfigureAwait(false); Logger.LogInformation($"Completed: Handling {Incoming}"); } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs index ccdbdcaf8..76218bb62 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDTO.cs @@ -19,6 +19,12 @@ public class KittingDTO : EntityDto, IHasCode, IHasName [Display(Name = "底盘打包数量")] public decimal ChassisQty { get; set; } + [Display(Name = "备注")] + public string Remark { get; set; } + [Display(Name = "创建时间")] + public virtual DateTime CreationTime { get; set; } + [Display(Name = "最后修改时间")] + public virtual DateTime? LastModificationTime { get; set; } [Display(Name = "明细")] public List Details { set; get; }= new List(); diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDetailDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDetailDTO.cs index 694434bdb..c2440820e 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDetailDTO.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/DTOs/KittingDetailDTO.cs @@ -46,11 +46,6 @@ public class KittingDetailDTO: AuditedEntityDto, IMultiTenant, IRemark [Display(Name = "包装数量")] public decimal Qty { set; get; } - /// - /// 配置 - /// - [Display(Name = "配置")] - public string Conf { set; get; } [Display(Name = "配置")] public string Configuration { get; set; } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingDetailInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingDetailInput.cs index 1e036718a..d674666bd 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingDetailInput.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingDetailInput.cs @@ -47,11 +47,6 @@ public class KittingDetailInput: EntityDto, IMultiTenant, IRemark /// [Display(Name = "包装数量")] public decimal Qty { set; get; } - /// - /// 配置 - /// - [Display(Name = "配置")] - public string Conf { set; get; } [Display(Name = "租户ID")] public Guid? TenantId { set; get; } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingImportInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingImportInput.cs index 4130690bf..7a9783df7 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingImportInput.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Kittings/Inputs/KittingImportInput.cs @@ -22,6 +22,7 @@ public class KittingImportInput : SfsBaseDataImportInputBase /// [Display(Name = "物料编码")] + [Required(ErrorMessage = "{0}是必填项")] public string ItemCode { set; get; } /// /// 描述1 @@ -51,12 +52,10 @@ public class KittingImportInput : SfsBaseDataImportInputBase [Required(ErrorMessage = "{0}是必填项")] public decimal Qty { set; get; } - /// - /// 配置 - /// - [Display(Name = "配置")] - public string Conf { set; get; } - [Display(Name = "底盘打包数量")] + [Required(ErrorMessage = "{0}是必填项")] public decimal ChassisQty { get; set; } + + [Display(Name = "备注")] + public string Remark { get; set; } } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAppService.cs index ebab0bc02..77dbbbde3 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Kittings/KittingAppService.cs @@ -246,7 +246,7 @@ public class KittingAppService : SfsBaseDataWithCodeAppServiceBase x.Details) .Ignore(x => x.TenantId) .Ignore(x => x.ExtraProperties) - .Ignore(x => x.Remark) .Ignore(x => x.ConcurrencyStamp) .Ignore(x => x.Id); diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingDetail.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingDetail.cs index 853ba5629..35f8c0ef4 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingDetail.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Kittings/KittingDetail.cs @@ -43,11 +43,6 @@ public class KittingDetail : AuditedEntity, IMultiTenant, IRemark /// public decimal Qty { set; get; } - /// - /// 配置 - /// - public string Conf { set; get; } - public Guid? TenantId { set; get; } public string Remark { get; set; } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/InspectJobs/InspectJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/InspectJobs/InspectJobAppService.cs index 39e27bc58..5df4a8596 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/InspectJobs/InspectJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/InspectJobs/InspectJobAppService.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp; +using Volo.Abp.Users; using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.FileStorage.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts; @@ -23,13 +24,15 @@ public class InspectJobAppService { private readonly IInspectJobManager _inspectJobManager; private readonly IFileAppService _fileAppService; + private readonly ICurrentUser _currentUser; public InspectJobAppService( IInspectJobRepository repository, IInspectJobManager inspectJobManager - , IFileAppService fileAppService) : base(repository, inspectJobManager) + , IFileAppService fileAppService, ICurrentUser currentUser) : base(repository, inspectJobManager) { _inspectJobManager = inspectJobManager; _fileAppService = fileAppService; + _currentUser = currentUser; } /// 【创建】质检任务 @@ -40,6 +43,17 @@ public class InspectJobAppService { var entity = ObjectMapper.Map(input); + if (_currentUser != null) + { + foreach (var item in entity.SummaryDetails) + { + if (item.InspectUser.IsNullOrEmpty()) + { + item.InspectUser = _currentUser.UserName; + } + } + } + var result = await _inspectJobManager.AddAsync(entity).ConfigureAwait(false); var dto = ObjectMapper.Map(result); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/NoOkConvertOKNotes/NoOkConvertOKNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/NoOkConvertOKNotes/NoOkConvertOKNoteAppService.cs index edd67d454..9af291a3c 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/NoOkConvertOKNotes/NoOkConvertOKNoteAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/NoOkConvertOKNotes/NoOkConvertOKNoteAppService.cs @@ -1,9 +1,14 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Win_in.Sfs.Wms.Inventory.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain.Shared; +using System.Linq; +using Volo.Abp; +using Win_in.Sfs.Wms.Inventory.Domain.Acl.Location; +using Win_in.Sfs.Shared.Domain.Shared; namespace Win_in.Sfs.Wms.Store.Application; @@ -25,11 +30,16 @@ public class NoOkConvertOkNoteAppService : INoOkConvertOkNoteAppService { private readonly INoOkConvertOkNoteManager _nOOkConvertOKNoteManager; + private readonly IBalanceAppService _balanceAppService; + private readonly ILocationAclService _locationAclService; + public NoOkConvertOkNoteAppService( - INoOkConvertOkNoteRepository repository, INoOkConvertOkNoteManager nOOkConvertOkNoteManager) : base(repository) + INoOkConvertOkNoteRepository repository, INoOkConvertOkNoteManager nOOkConvertOkNoteManager, IBalanceAppService balanceAppService, ILocationAclService locationAclService) : base(repository) { _nOOkConvertOKNoteManager = nOOkConvertOkNoteManager; + _balanceAppService = balanceAppService; + _locationAclService = locationAclService; } /// @@ -40,7 +50,20 @@ public class NoOkConvertOkNoteAppService : [HttpPost("")] //[Authorize(NoOkConvertOkNotePermissions.Create)] public override async Task CreateAsync(NoOkConvertOkNoteEditInput input) - { + { + #region 判断隔离库中是否有库存 + var locationInfo = await _locationAclService.GetFirstByTypeAsync(EnumLocationType.HOLD).ConfigureAwait(false); + + var packingCodeLst = input.Details.Select(itm => itm.ToPackingCode).ToList(); + var balanceLst = await _balanceAppService.GetListByPackingCodesAsync(packingCodeLst).ConfigureAwait(false); + bool allOK = (balanceLst.Count == packingCodeLst.Count + && balanceLst.All(itm => itm.LocationCode.ToUpper() == locationInfo.Code && itm.Status == EnumInventoryStatus.NOK)); + if (allOK == false) + { + throw new UserFriendlyException("隔离库中不存在如下箱码(或者其中之一)" + string.Join(",", packingCodeLst)); + } + #endregion + var createEntity = ObjectMapper.Map(input); var entity = await _nOOkConvertOKNoteManager.CreateAsync(createEntity).ConfigureAwait(false); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/PutawayNotes/PutawayNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/PutawayNotes/PutawayNoteAppService.cs index e02b12a82..ff3e8c52e 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/PutawayNotes/PutawayNoteAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/PutawayNotes/PutawayNoteAppService.cs @@ -127,7 +127,8 @@ public class PutawayNoteAppService : { var inspectJobDto = await _inspectJobAppService .GetInspectNoteDetailByPackingCodeAsync(detail.ToPackingCode).ConfigureAwait(false); - if (inspectJobDto.JobStatus != EnumJobStatus.Done) + var sumitem= inspectJobDto.SummaryDetails.FirstOrDefault(r => r.ItemCode == purchasereDetail.ItemCode); + if (sumitem.SummaryInspectStatus != EnumSummaryInspectStatus.OverInspect) { throw new UserFriendlyException($"包含【{detail.ToPackingCode}】箱码的报检单,尚未完成质检"); }