Browse Source

为PDA创建叫料申请并自动创建发料任务,位置码增加前缀

dev_DY_CC
周红军 1 year ago
parent
commit
21860fc06c
  1. 4
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/MaterialRequestController.cs
  2. 3
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs
  3. 18
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs
  4. 23
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/MaterialRequestManager.cs
  5. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/MaterialRequestEventHandler.cs

4
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/MaterialRequestController.cs

@ -25,14 +25,14 @@ public class MaterialRequestController : AbpController
}
/// <summary>
/// 创建要料申请(自动执行生成发料任务)
/// 扫描位置码创建要料申请(自动执行生成发料任务)
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("")]
public virtual async Task CreateAsync(MaterialRequestEditInput input)
{
_ = await _materialRequestAppService.CreateAndHandleAsync(input).ConfigureAwait(false);
_ = await _materialRequestAppService.CreateAndHandleByAPIAsync(input).ConfigureAwait(false);
}
/// <summary>

3
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs

@ -32,7 +32,7 @@ public class PositionCodeAppService
[UnitOfWork]
public override async Task<PositionCodeDTO> CreateAsync(PositionCodeEditInput input)
{
var existEntity = await GetByCodeAsync(input.Code).ConfigureAwait(false);
var existEntity = await GetByCodeAsync("W"+input.Code).ConfigureAwait(false);
if (existEntity != null)
{
throw new UserFriendlyException($"{input.Code} 已存在");
@ -44,6 +44,7 @@ public class PositionCodeAppService
var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false);
Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在");
input.Code = "W" + input.Code;
return await base.CreateAsync(input).ConfigureAwait(false);
}
}

18
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs

@ -199,20 +199,13 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
throw new UserFriendlyException($"{item.ItemCode} 物料的需求量必须大于 0");
}
}
//检验备料计划是否存在要料请求
if (!string.IsNullOrWhiteSpace(input.PreparationPlanNumber))
{
var exist = await CheckExistByPreparationPlanAsync(input.PreparationPlanNumber).ConfigureAwait(false);
if (exist.Count > 0)
{
throw new UserFriendlyException($"{input.PreparationPlanNumber} 备料计划已存在要料申请");
}
}
input.AutoSubmit = true;
input.AutoAgree = true;
input.AutoHandle = true;
input.AutoCompleteJob = false;
input.DirectCreateNote = false;
foreach (var detailInput in input.Details)
{
@ -220,6 +213,7 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
CheckLocation(toLocationDto, detailInput.ToLocationCode);
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detailInput.ItemCode);
detailInput.ItemDesc1 = itemBasicDto.Desc1;
var productionLineDto = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationDto.LocationGroupCode).ConfigureAwait(false);
@ -242,7 +236,7 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
detail.ToWarehouseCode= toLocationDto.WarehouseCode;
}
entity.UseOnTheWayLocation = true;
entity.UseOnTheWayLocation = false;
var result = await _materialRequestManager.CreateBynNumberAsync(entity).ConfigureAwait(false);
@ -295,6 +289,8 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
input.AutoSubmit = true;
input.AutoAgree = true;
input.AutoHandle = true;
input.AutoCompleteJob = false;
input.DirectCreateNote = false;
var entity = ObjectMapper.Map<MaterialRequestEditInput, MaterialRequest>(input);

23
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/MaterialRequestManager.cs

@ -46,20 +46,23 @@ public class MaterialRequestManager
public virtual async Task UpdateDetailsAsync(MaterialRequest newEntity)
{
var oldEntity = await Repository.FindAsync(newEntity.Id, true).ConfigureAwait(false);
foreach (var newDetail in newEntity.Details)
if(oldEntity!=null)
{
oldEntity.ReplaceDetail(newDetail.Id, newDetail);
}
foreach (var newDetail in newEntity.Details)
{
oldEntity.ReplaceDetail(newDetail.Id, newDetail);
}
foreach (var detail in oldEntity.Details)
{
SetMaterialRequestDetailStatus(detail);
}
foreach (var detail in oldEntity.Details)
{
SetMaterialRequestDetailStatus(detail);
}
await SetMaterialRequestStatus(oldEntity).ConfigureAwait(false);
await SetMaterialRequestStatus(oldEntity).ConfigureAwait(false);
await Repository.UpdateAsync(oldEntity).ConfigureAwait(false);
await Repository.UpdateAsync(oldEntity).ConfigureAwait(false);
}
}
private void SetMaterialRequestDetailStatus(MaterialRequestDetail detail)

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/MaterialRequestEventHandler.cs

@ -52,10 +52,10 @@ public class MaterialRequestEventHandler
{
var entity = eventData.Entity;
if (entity.AutoSubmit)
{
await _materialRequestManager.SubmitAsync(entity).ConfigureAwait(false);
}
//if (entity.AutoSubmit)
//{
// await _materialRequestManager.SubmitAsync(entity).ConfigureAwait(false);
//}
}
/// <summary>

Loading…
Cancel
Save