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>
/// 创建要料申请(自动执行生成发料任务) /// 扫描位置码创建要料申请(自动执行生成发料任务)
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost("")] [HttpPost("")]
public virtual async Task CreateAsync(MaterialRequestEditInput input) public virtual async Task CreateAsync(MaterialRequestEditInput input)
{ {
_ = await _materialRequestAppService.CreateAndHandleAsync(input).ConfigureAwait(false); _ = await _materialRequestAppService.CreateAndHandleByAPIAsync(input).ConfigureAwait(false);
} }
/// <summary> /// <summary>

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

@ -32,7 +32,7 @@ public class PositionCodeAppService
[UnitOfWork] [UnitOfWork]
public override async Task<PositionCodeDTO> CreateAsync(PositionCodeEditInput input) 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) if (existEntity != null)
{ {
throw new UserFriendlyException($"{input.Code} 已存在"); throw new UserFriendlyException($"{input.Code} 已存在");
@ -44,6 +44,7 @@ public class PositionCodeAppService
var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false); var location = await LocationAppService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false);
Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在"); Check.NotNull(location, "库位代码", $"库位 {input.LocationCode} 不存在");
input.Code = "W" + input.Code;
return await base.CreateAsync(input).ConfigureAwait(false); 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"); 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.AutoSubmit = true;
input.AutoAgree = true; input.AutoAgree = true;
input.AutoHandle = true; input.AutoHandle = true;
input.AutoCompleteJob = false;
input.DirectCreateNote = false;
foreach (var detailInput in input.Details) foreach (var detailInput in input.Details)
{ {
@ -220,6 +213,7 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
CheckLocation(toLocationDto, detailInput.ToLocationCode); CheckLocation(toLocationDto, detailInput.ToLocationCode);
var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false); var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detailInput.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasicDto, detailInput.ItemCode); CheckItemBasic(itemBasicDto, detailInput.ItemCode);
detailInput.ItemDesc1 = itemBasicDto.Desc1;
var productionLineDto = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationDto.LocationGroupCode).ConfigureAwait(false); var productionLineDto = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationDto.LocationGroupCode).ConfigureAwait(false);
@ -242,7 +236,7 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
detail.ToWarehouseCode= toLocationDto.WarehouseCode; detail.ToWarehouseCode= toLocationDto.WarehouseCode;
} }
entity.UseOnTheWayLocation = true; entity.UseOnTheWayLocation = false;
var result = await _materialRequestManager.CreateBynNumberAsync(entity).ConfigureAwait(false); var result = await _materialRequestManager.CreateBynNumberAsync(entity).ConfigureAwait(false);
@ -295,6 +289,8 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase<MaterialR
input.AutoSubmit = true; input.AutoSubmit = true;
input.AutoAgree = true; input.AutoAgree = true;
input.AutoHandle = true; input.AutoHandle = true;
input.AutoCompleteJob = false;
input.DirectCreateNote = false;
var entity = ObjectMapper.Map<MaterialRequestEditInput, MaterialRequest>(input); 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) public virtual async Task UpdateDetailsAsync(MaterialRequest newEntity)
{ {
var oldEntity = await Repository.FindAsync(newEntity.Id, true).ConfigureAwait(false); var oldEntity = await Repository.FindAsync(newEntity.Id, true).ConfigureAwait(false);
if(oldEntity!=null)
foreach (var newDetail in newEntity.Details)
{ {
oldEntity.ReplaceDetail(newDetail.Id, newDetail); foreach (var newDetail in newEntity.Details)
} {
oldEntity.ReplaceDetail(newDetail.Id, newDetail);
}
foreach (var detail in oldEntity.Details) foreach (var detail in oldEntity.Details)
{ {
SetMaterialRequestDetailStatus(detail); 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) 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; var entity = eventData.Entity;
if (entity.AutoSubmit) //if (entity.AutoSubmit)
{ //{
await _materialRequestManager.SubmitAsync(entity).ConfigureAwait(false); // await _materialRequestManager.SubmitAsync(entity).ConfigureAwait(false);
} //}
} }
/// <summary> /// <summary>

Loading…
Cancel
Save