diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ThirdLocationJobController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ThirdLocationJobController.cs
index ab4a124cc..9f8ae9759 100644
--- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ThirdLocationJobController.cs
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ThirdLocationJobController.cs
@@ -8,6 +8,7 @@ using Polly.Caching;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
+using Volo.Abp.Domain.Repositories;
using Win_in.Sfs.Auth.Application.Contracts;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
@@ -181,6 +182,17 @@ public class ThirdLocationJobController : AbpController
await _thirdLocationJobAppService.CancelAcceptAsync(id).ConfigureAwait(false);
}
+ ///
+ /// 关闭任务
+ ///
+ ///
+ ///
+ [HttpPost("close-job/{id}")]
+ public virtual async Task CloseJobAsync(Guid id)
+ {
+ await _thirdLocationJobAppService.CloseJobAsync(id).ConfigureAwait(false);
+ }
+
///
/// 执行任务
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/DTOs/ThirdLocationJobDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/DTOs/ThirdLocationJobDetailDTO.cs
index ee8aff47d..809f36e13 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/DTOs/ThirdLocationJobDetailDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/DTOs/ThirdLocationJobDetailDTO.cs
@@ -55,12 +55,12 @@ public class ThirdLocationJobDetailDTO : SfsJobRecommendFromDetailDTOBase, IHasT
///
[Display(Name = "在途库库位")]
public string OnTheWayLocationCode { get; set; }
-
+
///
- /// 生产线
+ /// 收货单件码
///
- [Display(Name = "生产线")]
- public string ProdLine { get; set; }
+ [Display(Name = "收货单件码")]
+ public string SingleCodeJob { get; set; }
///
/// 工作中心
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/IThirdLocationJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/IThirdLocationJobAppService.cs
index 8bb1eef89..6f8a4fa50 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/IThirdLocationJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/IThirdLocationJobAppService.cs
@@ -1,3 +1,4 @@
+using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
@@ -16,6 +17,7 @@ public interface IThirdLocationJobAppService
bool includeDetails = false, CancellationToken cancellationToken = default);
Task> GetByRequestNumberAsync(string requestNumber);
+ Task CloseJobAsync(Guid id);
///
/// 保存拆箱时涉及的明细修改
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/Inputs/ThirdLocationJobDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/Inputs/ThirdLocationJobDetailInput.cs
index d57e227fd..1dccfbc08 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/Inputs/ThirdLocationJobDetailInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ThirdLocationJobs/Inputs/ThirdLocationJobDetailInput.cs
@@ -67,11 +67,11 @@ public class ThirdLocationJobDetailInput : SfsJobRecommendFromDetailInputBase, I
public string OnTheWayLocationCode { get; set; }
///
- /// 生产线
+ /// 收货单件码
///
- [Display(Name = "生产线")]
+ [Display(Name = "收货单件码")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ProdLine { get; set; }
+ public string SingleCodeJob { get; set; }
///
/// 工作中心
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/DTOs/ThirdLocationRequestDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/DTOs/ThirdLocationRequestDetailDTO.cs
index 7b205cdaa..714896f0a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/DTOs/ThirdLocationRequestDetailDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/DTOs/ThirdLocationRequestDetailDTO.cs
@@ -26,6 +26,12 @@ public class ThirdLocationRequestDetailDTO : SfsStoreDetailWithQtyDTOBase
[Display(Name = "来源库位")]
public string FromLocationCode { get; set; }
+ ///
+ /// 申请单件码
+ ///
+ [Display(Name = "申请单件码")]
+ public string SingleCodeRequest { get; set; }
+
///
/// 来源库区
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/Inputs/ThirdLocationRequestDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/Inputs/ThirdLocationRequestDetailInput.cs
index aec149364..f4c6af449 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/Inputs/ThirdLocationRequestDetailInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/Inputs/ThirdLocationRequestDetailInput.cs
@@ -29,11 +29,11 @@ public class ThirdLocationRequestDetailInput : SfsStoreDetailWithQtyInputBase
public string FromLocationArea { get; set; }
///
- /// 生产线
+ /// 申请单件码
///
- [Display(Name = "生产线")]
+ [Display(Name = "申请单件码")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string ProdLine { get; set; }
+ public string SingleCodeRequest { get; set; }
///
/// 工作中心
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/Inputs/ThirdLocationRequestImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/Inputs/ThirdLocationRequestImportInput.cs
index ab15491c1..42f12ab08 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/Inputs/ThirdLocationRequestImportInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ThirdLocationRequests/Inputs/ThirdLocationRequestImportInput.cs
@@ -8,13 +8,10 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class ThirdLocationRequestImportInput : SfsStoreImportInputBase
{
///
- /// 叫料类型
+ /// 类型
///
- [Display(Name = "叫料类型")]
- [Required(ErrorMessage = "{0}是必填项")]
- [ImporterHeader(Name = "叫料类型")]
- [ExporterHeader(DisplayName = "叫料类型")]
- [ValueMapping("人工拉动", EnumMaterialRequestType.Issue_Manual)]
+ [Display(Name = "类型")]
+ [Required(ErrorMessage = "{0}是必填项")]
public string Type { get; set; }
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/ThirdLocationJobs/ThirdLocationJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/ThirdLocationJobs/ThirdLocationJobAppService.cs
index 55281ef5f..1709eb245 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/ThirdLocationJobs/ThirdLocationJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/ThirdLocationJobs/ThirdLocationJobAppService.cs
@@ -52,18 +52,21 @@ public class ThirdLocationJobAppService
}
if(dto.Details.Count==0)
{
- throw new UserFriendlyException($"任务错误:编号为【{job.Number} 的任务未包含明细");
+ throw new UserFriendlyException($"任务错误:编号为【{dto.Number} 的任务未包含明细");
}
else
{
- if (dto.Details[0].HandledQty > job.Details[0].RecommendQty)
+ var jobDetail= job.Details.FirstOrDefault(p => p.ItemCode == dto.Details[0].ItemCode);
+
+ if (jobDetail.HandledQty + dto.Details[0].HandledQty > jobDetail.RecommendQty)
{
- throw new UserFriendlyException($"任务错误:编号为【{job.Number}】的实际数量【{dto.Details[0].HandledQty}】不能大于申请数量【{dto.Details[0].RecommendQty}】");
+ throw new UserFriendlyException($"任务错误:编号为【{job.Number}】的实际数量【{jobDetail.HandledQty + dto.Details[0].HandledQty}】不能大于申请数量【{dto.Details[0].RecommendQty}】");
}
- if(dto.Details[0].ToLocationCode != job.Details[0].ToLocationCode)
+ if (jobDetail.ToLocationCode != dto.Details[0].ToLocationCode)
{
- throw new UserFriendlyException($"任务错误:编号为【{job.Number}】的实际目标库位【{dto.Details[0].ToLocationCode}】与申请目标库位【{job.Details[0].ToLocationCode}】不一致");
- }
+ throw new UserFriendlyException($"任务错误:编号为【{job.Number}】的实际目标库位【{dto.Details[0].ToLocationCode}】与申请目标库位【{jobDetail.ToLocationCode}】不一致");
+ }
+
}
@@ -77,6 +80,18 @@ public class ThirdLocationJobAppService
return handleDto;
}
+ [HttpPost("close-job/{id}")]
+ public virtual async Task CloseJobAsync(Guid id)
+ {
+ var thirdLocationJob = await _repository.GetAsync(id).ConfigureAwait(false);
+ if (thirdLocationJob == null)
+ {
+ throw new UserFriendlyException($"未找到ID为 {id} 的任务");
+ }
+
+ await _thirdLocationJobManager.CloseAsync(thirdLocationJob).ConfigureAwait(false);
+ }
+
///
/// 根据物品和库位 检查是否存在发料任务
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAppService.cs
index 7cbf1dcaf..3f1d823c1 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/KittingIssueRequests/KittingIssueRequestAppService.cs
@@ -73,7 +73,7 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase x.ToLocationArea)
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.ItemName).Ignore(x => x.ItemDesc1).Ignore(x => x.ItemDesc2)
- .Ignore(x => x.ProdLine)
+ .Ignore(x => x.SingleCodeRequest)
.Ignore(x => x.WorkStation)
.Ignore(x => x.ExpiredTime)
.Ignore(x => x.IssuedQty)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ThirdLocationJobs/ThirdLocationJobDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ThirdLocationJobs/ThirdLocationJobDetail.cs
index ab2930675..6f00ffed2 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ThirdLocationJobs/ThirdLocationJobDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ThirdLocationJobs/ThirdLocationJobDetail.cs
@@ -47,9 +47,9 @@ public class ThirdLocationJobDetail : SfsJobRecommendFromDetailEntityBase, IHasT
public string OnTheWayLocationCode { get; set; }
///
- /// 生产线
+ /// 收货单件码
///
- public string ProdLine { get; set; }
+ public string SingleCodeJob { get; set; }
///
/// 工作中心
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ThirdLocationJobs/ThirdLocationJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ThirdLocationJobs/ThirdLocationJobManager.cs
index f9b8dc84a..fa2a182ba 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ThirdLocationJobs/ThirdLocationJobManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ThirdLocationJobs/ThirdLocationJobManager.cs
@@ -20,7 +20,7 @@ public class ThirdLocationJobManager : SfsJobManagerBase
- /// 执行任务 发料任务
+ /// 执行三方库任务
///
///
///
@@ -32,7 +32,7 @@ public class ThirdLocationJobManager : SfsJobManagerBase p.ItemCode == entity.Details[0].ItemCode);
+ if (jobDetail.RecommendQty == jobDetail.HandledQty + input.Details[0].HandledQty)
+ {
+ jobDetail.HandledQty += input.Details[0].HandledQty;
+ isDone = true;
+ }
+ else
+ {
+ jobDetail.HandledQty = input.Details[0].HandledQty;
+ isDone = false;
+ }
+
+ foreach (var item in entity.Details.FindAll(p => p.ItemCode != entity.Details[0].ItemCode))
+ {
+ if (item.RecommendQty == item.HandledQty)
+ {
+ isDone = true;
+ }
+ else
+ {
+ isDone = false;
+ }
+ }
+
+ if (isDone)
+ {
+ return await base.CompleteAsync(entity, user).ConfigureAwait(false);
+ }
+ else
+ {
+ entity.JobStatus = EnumJobStatus.Partial;
+ await PublishCompletedAsync(input).ConfigureAwait(false);
+ return await Repository.UpdateAsync(entity).ConfigureAwait(false);
+ }
}
public override void CheckDetails(ThirdLocationJob entity, AbpValidationResult result)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestDetail.cs
index dbea45ed9..f63e5298b 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ThirdLocationRequests/ThirdLocationRequestDetail.cs
@@ -53,9 +53,9 @@ public class ThirdLocationRequestDetail : SfsStoreDetailWithQtyEntityBase, IHasT
public string OnTheWayLocationCode { get; set; }
///
- /// 生产线
+ /// 申请单件码
///
- public string ProdLine { get; set; }
+ public string SingleCodeRequest { get; set; }
///
/// 工作中心
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/ThirdLocationJobs/ThirdLocationJobDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/ThirdLocationJobs/ThirdLocationJobDbContextModelCreatingExtensions.cs
index b4c3b9ac4..48bb34baa 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/ThirdLocationJobs/ThirdLocationJobDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/ThirdLocationJobs/ThirdLocationJobDbContextModelCreatingExtensions.cs
@@ -50,7 +50,7 @@ public static class ThirdLocationJobDbContextModelCreatingExtensions
b.Property(q => q.ToLocationGroup).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.FromLocationCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.FromLocationArea).HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.SingleCodeJob).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.WorkStation).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Operation).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.DistributionType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/ThirdLocationRequests/ThirdLocationRequestDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/ThirdLocationRequests/ThirdLocationRequestDbContextModelCreatingExtensions.cs
index a3c84d51e..48f48e92e 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/ThirdLocationRequests/ThirdLocationRequestDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/ThirdLocationRequests/ThirdLocationRequestDbContextModelCreatingExtensions.cs
@@ -50,7 +50,7 @@ public static class ThirdLocationRequestDbContextModelCreatingExtensions
b.Property(q => q.FromLocationArea).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.OnTheWayLocationCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ExpiredTime).IsRequired();
- b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.SingleCodeRequest).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.WorkStation).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.IssuedQty).HasPrecision(18, 6);
b.Property(q => q.ReceivedQty).HasPrecision(18, 6);
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/ThirdLocationJobAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/ThirdLocationJobAutoMapperProfile.cs
index 308e7c130..1d8d5fe6e 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/ThirdLocationJobAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/ThirdLocationJobAutoMapperProfile.cs
@@ -44,6 +44,7 @@ public partial class StoreEventAutoMapperProfile : Profile
.ForMember(x => x.FromWarehouseCode, y => y.MapFrom(d => d.HandledFromWarehouseCode))
.ForMember(x => x.ToLocationCode, y => y.MapFrom(d => d.ToLocationCode))
.Ignore(x => x.ToLocationArea)
+ .Ignore(x => x.ProdLine)
.Ignore(x => x.ToLocationGroup)
.Ignore(x => x.ToLocationErpCode)
;
@@ -87,6 +88,7 @@ public partial class StoreEventAutoMapperProfile : Profile
.ForMember(x => x.FromWarehouseCode, y => y.MapFrom(d => d.HandledFromWarehouseCode))
.ForMember(x => x.FromStatus, y => y.MapFrom(d => d.Status))
.ForMember(x => x.ToStatus, y => y.MapFrom(d => d.Status))
+ .Ignore(x => x.ProdLine)
;
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/ThirdLocationRequestAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/ThirdLocationRequestAutoMapperProfile.cs
index 5c9c76f3b..91b8bbbee 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/ThirdLocationRequestAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/ThirdLocationRequestAutoMapperProfile.cs
@@ -61,6 +61,7 @@ public partial class StoreEventAutoMapperProfile : Profile
CreateMap()
.ForMember(x => x.FromLocationCode, y => y.MapFrom(d => d.FromLocationCode))
+ .Ignore(x => x.SingleCodeJob)
.Ignore(x => x.RecommendFromLocationArea)
.Ignore(x => x.RecommendFromLocationGroup)
.Ignore(x => x.HandledFromLocationArea)
@@ -126,7 +127,7 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.HandledFromWarehouseCode)
.Ignore(x => x.FromLocationCode)
.Ignore(x => x.ToLocationCode)
- .Ignore(x => x.ProdLine)
+ .Ignore(x => x.SingleCodeJob)
.Ignore(x => x.WorkStation)
.Ignore(x => x.HandledContainerCode)
.Ignore(x => x.HandledExpireDate)
@@ -150,7 +151,7 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.DeliveryQty)
.Ignore(x => x.FromLocationCode)
.Ignore(x => x.ToLocationCode)
- .Ignore(x => x.ProdLine)
+ .Ignore(x => x.SingleCodeJob)
.Ignore(x => x.WorkStation)
.Ignore(x => x.PositionCode)
.Ignore(x => x.RecommendType)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/ThirdLocationJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/ThirdLocationJobEventHandler.cs
index 18d70ef66..b22884a92 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/ThirdLocationJobEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/ThirdLocationJobEventHandler.cs
@@ -7,6 +7,7 @@ using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
+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;
@@ -15,17 +16,21 @@ namespace Win_in.Sfs.Wms.Store.Event.BusinessJob;
public class ThirdLocationJobEventHandler :
StoreEventHandlerBase
- , ILocalEventHandler>,ILocalEventHandler>
+ , ILocalEventHandler>,ILocalEventHandler>, ILocalEventHandler>
{
private const EnumTransType TransType = EnumTransType.Issue;
private readonly IThirdLocationNoteAppService _thirdLocationNoteAppService;
private readonly ILocationAppService _locationAppService;
+ private readonly IThirdLocationRequestManager _thirdLocationRequestManager;
+ private readonly ITransferLogAppService _transferLogAppService;
- public ThirdLocationJobEventHandler(IThirdLocationNoteAppService thirdLocationNoteAppService, ILocationAppService locationAppService)
+ public ThirdLocationJobEventHandler(IThirdLocationNoteAppService thirdLocationNoteAppService, ITransferLogAppService transferLogAppService, IThirdLocationRequestManager thirdLocationRequestManager, ILocationAppService locationAppService)
{
_thirdLocationNoteAppService = thirdLocationNoteAppService;
_locationAppService = locationAppService;
+ _thirdLocationRequestManager = thirdLocationRequestManager;
+ _transferLogAppService = transferLogAppService;
}
///
@@ -104,6 +109,75 @@ public class ThirdLocationJobEventHandler :
}
+ ///
+ /// 关闭任务后
+ ///
+ ///
+ ///
+ [UnitOfWork]
+ public virtual async Task HandleEventAsync(SfsClosedEntityEventData eventData)
+ {
+ var entity = eventData.Entity;
+
+ if (!string.IsNullOrEmpty(entity.RequestNumber))
+ {
+ var thirdLocationRequest = await _thirdLocationRequestManager.GetByNumberAsync(entity.RequestNumber).ConfigureAwait(false);
+
+
+ var transferLogs = new List();
+ transferLogs.AddRange(await BuildCancelTransferLogsAsync(thirdLocationRequest).ConfigureAwait(false));
+
+ await _transferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false);
+
+ thirdLocationRequest.RequestStatus = EnumRequestStatus.Abort;
+ await _thirdLocationRequestManager.UpdateAsync(thirdLocationRequest).ConfigureAwait(false);
+
+ }
+
+ }
+
+ private async Task> BuildCancelTransferLogsAsync(ThirdLocationRequest thirdLocationRequest)
+ {
+ var transferLogs = new List();
+ foreach (var detail in thirdLocationRequest.Details.Where(detail => detail.IssuedQty-detail.ReceivedQty != 0))
+ {
+ var transferLog = ObjectMapper.Map(detail);
+
+ LocationDTO fromLocationDTO = null;
+ LocationDTO toLocationDTO = null;
+
+ fromLocationDTO = await _locationAppService.GetByCodeAsync(detail.OnTheWayLocationCode).ConfigureAwait(false);
+ toLocationDTO = await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
+
+ transferLog.FromLocationCode = fromLocationDTO.Code;
+ transferLog.FromLocationArea = fromLocationDTO.AreaCode;
+ transferLog.FromLocationErpCode = fromLocationDTO.ErpLocationCode;
+ transferLog.FromLocationGroup = fromLocationDTO.LocationGroupCode;
+ transferLog.FromWarehouseCode = fromLocationDTO.WarehouseCode;
+
+ transferLog.ToLocationCode = toLocationDTO.Code;
+ transferLog.ToLocationArea = toLocationDTO.AreaCode;
+ transferLog.ToLocationErpCode = toLocationDTO.ErpLocationCode;
+ transferLog.ToLocationGroup = toLocationDTO.LocationGroupCode;
+ transferLog.ToWarehouseCode = toLocationDTO.WarehouseCode;
+ transferLog.TransSubType = Enum.Parse(thirdLocationRequest.Type);
+ transferLog.TransType = TransType;
+ transferLog.DocNumber = thirdLocationRequest.Number;
+ transferLog.JobNumber = "";
+ transferLog.Qty = detail.IssuedQty - detail.ReceivedQty;
+
+ transferLog.FromPackingCode = "";
+ transferLog.FromLot = "";
+ transferLog.ToPackingCode = "";
+ transferLog.ToLot = "";
+ transferLog.FromStatus = EnumInventoryStatus.OK;
+ transferLog.ToStatus = EnumInventoryStatus.OK;
+ transferLogs.Add(transferLog);
+ }
+
+ return transferLogs;
+ }
+
///
/// 去除箱码 托码 批次
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ThirdLocationRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ThirdLocationRequestEventHandler.cs
index 43b5d8fa0..1144fe96c 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ThirdLocationRequestEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ThirdLocationRequestEventHandler.cs
@@ -381,9 +381,7 @@ public class ThirdLocationRequestEventHandler
private async Task BuildThirdLocationJobDetailAsync(ThirdLocationRequestDetail thirdLocationRequestDetail, BalanceDTO balance, string toLocationGroupCode)
{
-
- //ProductionLineDTO prodLine = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationGroupCode).ConfigureAwait(false);
-
+
var detail = ObjectMapper.Map(balance);
detail.WorkStation = thirdLocationRequestDetail.WorkStation;
@@ -427,12 +425,9 @@ public class ThirdLocationRequestEventHandler
else
{
throw new UserFriendlyException($"未获取到在途库代码");
- }
-
-
-
- //detail.ProdLine = prodLine == null ? toLocationGroupCode : prodLine.Code;
- detail.ProdLine = toLocationGroupCode;
+ }
+
+
await Task.CompletedTask.ConfigureAwait(false);
return detail;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ThirdLocationNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ThirdLocationNoteEventHandler.cs
index 8f4df6c85..5f9a819e3 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ThirdLocationNoteEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ThirdLocationNoteEventHandler.cs
@@ -51,27 +51,39 @@ public class ThirdLocationNoteEventHandler
{
//var thirdLocationRequest = await _thirdLocationRequestManager.GetByNumberAsync(entity.RequestNumber).ConfigureAwait(false);
- var entities = await _ThirdLocationRequestRepository.GetListAsync(p => p.Number == entity.RequestNumber, "Number", true).ConfigureAwait(false);
- if(entities.Count>0)
+ var requestEntities = await _ThirdLocationRequestRepository.GetListAsync(p => p.Number == entity.RequestNumber, "Number", true).ConfigureAwait(false);
+ if(requestEntities.Count>0 && entity.Details.Count>0)
{
- foreach (var item in entities[0].Details)
+ bool isDone = false;
+ var requestDetail = requestEntities[0].Details.FirstOrDefault(p => p.ItemCode == entity.Details[0].ItemCode);
+ if(requestDetail != null)
{
- //item.IssuedQty = entity.Details[0].RecommendQty;
- item.ReceivedQty = entity.Details[0].HandledQty;
- }
- foreach(var item in entity.Details)
+ requestDetail.ReceivedQty += entity.Details[0].HandledQty;
+ if(requestDetail.IssuedQty == requestDetail.ReceivedQty)
+ {
+ isDone = true;
+ }
+ }
+
+ foreach(var item in requestEntities[0].Details.FindAll(p=>p.ItemCode!= entity.Details[0].ItemCode))
{
- if(item.Qty == item.HandledQty)
+ if(item.IssuedQty == item.ReceivedQty)
{
- await _thirdLocationRequestManager.CompleteAsync(entities[0]).ConfigureAwait(false);
+ isDone = true;
}
else
{
- await _thirdLocationRequestManager.UpdateAsync(entities[0]).ConfigureAwait(false);
+ isDone = false;
}
}
-
-
+ if (isDone)
+ {
+ await _thirdLocationRequestManager.CompleteAsync(requestEntities[0]).ConfigureAwait(false);
+ }
+ else
+ {
+ await _thirdLocationRequestManager.UpdateAsync(requestEntities[0]).ConfigureAwait(false);
+ }
}