Browse Source

更新

dev_DY_CC
赵新宇 6 months ago
parent
commit
b282d93791
  1. 37
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/UnplannedIssueNotes/Inputs/UnplannedIssueNoteEditInput.cs
  2. 84
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
  3. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedIssuesNotes/UnplannedIssueNoteAppService.cs
  4. 38
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs
  5. 44
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNote.cs
  6. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNoteDetail.cs
  7. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs

37
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/UnplannedIssueNotes/Inputs/UnplannedIssueNoteEditInput.cs

@ -67,4 +67,41 @@ public class UnplannedIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase
[Display(Name = "OA单据号")]
public string OANumber { get; set; }
/// ERP料号
/// </summary>
[Display(Name = "ERP料号")]
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
[Display(Name = "物品名称")]
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
[Display(Name = "物品描述1")]
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
[Display(Name = "物品描述2")]
public string ItemDesc2 { get; set; }
/// <summary>
/// ERP储位
/// </summary>
[Display(Name = "ERP储位")]
public string FromErpLocationCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
}

84
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs

@ -94,20 +94,17 @@ public class UnplannedIssueJobAppService
throw new UserFriendlyException($"请求单号{requestDto.Number},无推荐库位请检查是否又库存!");
}
await _unplannedIssueJobManager.AddManyAsync(jobs).ConfigureAwait(false);
//await _repository.InsertManyAsync(jobs.ToList()).ConfigureAwait(false);
var first = jobs.FirstOrDefault();
var outEditInputs = await BuildExpectOutAsync(useBalancesOut).ConfigureAwait(false);
foreach (var itm in outEditInputs)
{
itm.JobNumber = first.Number;
}
await _expectOutAppService.AddManyAsync(outEditInputs).ConfigureAwait(false);
}
@ -144,6 +141,15 @@ public class UnplannedIssueJobAppService
dto.InjectFrom(item);
dto.Qty = availableToDeduct;
balanceDTOs.Add(dto);
if (enumLocationType == EnumLocationType.RAW)
{
@ -195,6 +201,8 @@ public class UnplannedIssueJobAppService
var first=locationCodes.FirstOrDefault();
var locationDto = await _locationAppService.GetByCodeAsync(first.Code).ConfigureAwait(false);
var input = new RecommendBalanceRequestInput();
switch (locationDto.Type)
{
case EnumLocationType.RAW:
@ -339,19 +347,63 @@ public class UnplannedIssueJobAppService
// Errors.Add($"{"非生产领料"+requestDto.Number+"零件号:"+requestDtoDetail.ItemCode + "库存不够" + requestDtoDetail.Qty.ToString()}");
continue;
}
foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationCode))
foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationErpCode))
{
//var locationDto = await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false);
var job = new UnplannedIssueJob();
if (locationDto.Type==EnumLocationType.RAW)
{
job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
}
else
switch (locationDto.Type)
{
job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
case EnumLocationType.SEMI:
job.IsHasPackingCode = false;
job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
break;
case EnumLocationType.CUST:
job.IsHasPackingCode = false;
job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
break;
case EnumLocationType.FG:
job.IsHasPackingCode = false;
job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
break;
case EnumLocationType.RAW:
job.IsHasPackingCode = true;
job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
break;
case EnumLocationType.THIRDPARTY:
job.IsHasPackingCode = false;
job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
break;
case EnumLocationType.OUTSIDE:
job.IsHasPackingCode = false;
job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
break;
case EnumLocationType.DimensionalStorehouse:
job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
job.IsHasPackingCode = false;
break;
case EnumLocationType.KittingWip:
job.IsHasPackingCode = false;
job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
break;
case EnumLocationType.WIP:
job.IsHasPackingCode = false;
job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
break;
}
job.ItemCode = requestDtoDetail.ItemCode;
job.ItemName = requestDtoDetail.ItemName;
job.ItemDesc1 =requestDtoDetail.ItemDesc1;
job.ItemDesc2 = requestDtoDetail.ItemDesc2;
job.FromErpLocationCode = requestDtoDetail.LocationErpCode;
job.Qty = requestDtoDetail.Qty;
job.SetId(GuidGenerator.Create());
job.UnplannedIssueRequestNumber= requestDto.Number;
job.JobType = EnumJobType.UnplannedIssueJob;
@ -412,10 +464,10 @@ public class UnplannedIssueJobAppService
jobfacDetail.Status = balanceDto.Status;
jobfacDetail.HandledQty = balanceDto.Qty;
jobfacDetail.Uom = balanceDto.Uom;
//job.Details.Add(jobDetail);
job.FacDetails.Add(jobfacDetail);
}
}
if (locationDto.Type == EnumLocationType.DimensionalStorehouse)//如果是立库的
{
await SendDimensionalStorehouseAsync().ConfigureAwait(false);
@ -503,11 +555,11 @@ public class UnplannedIssueJobAppService
var job = await _repository.GetAsync(id).ConfigureAwait(false);
var facQuery=job.FacDetails.GroupBy(p => new { p.ItemCode }).Select(p=>new {ItemCode= p.Key.ItemCode,Qty= p.Sum(itm=>itm.RecommendQty) });
var query=dto.Details.GroupBy(p => new { p.ItemCode }).Select(p => new { ItemCode = p.Key.ItemCode, Qty = p.Sum(itm => itm.HandledQty) });
var errorQuery = from itm in facQuery join itm1 in query on itm.ItemCode equals itm1.ItemCode where itm1.Qty < itm.Qty select itm.ItemCode ;
var errorQuery = from itm in facQuery join itm1 in query on itm.ItemCode equals itm1.ItemCode where itm1.Qty > itm.Qty select itm.ItemCode ;
var errorList = errorQuery.ToList();
if (errorList.Count > 0)
{
throw new UserFriendlyException($"零件{string.Join(",",errorList)}实际数量大于推荐数量!");
throw new UserFriendlyException($"零件{string.Join(",",errorList)}实际数量不能大于推荐数量!");
}
var handleDto = new UnplannedIssueJobDTO();

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedIssuesNotes/UnplannedIssueNoteAppService.cs

@ -40,6 +40,13 @@ public class UnplannedIssueNoteAppService :
{
var entity = ObjectMapper.Map<UnplannedIssueNoteEditInput, UnplannedIssueNote>(input);
entity.Qty = input.Qty;
entity.ItemCode = input.ItemCode;
entity.ItemDesc1=input.ItemDesc1;
entity.ItemDesc2=input.ItemDesc2;
entity.ItemName = input.ItemName;
entity.FromErpLocationCode = input.FromErpLocationCode;
entity.Details = new List<UnplannedIssueNoteDetail>();
foreach (var inputDetail in input.Details)

38
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs

@ -60,10 +60,46 @@ public class UnplannedIssueJob : SfsJobAggregateRootBase<UnplannedIssueJobDetail
/// </summary>
[IgnoreUpdate]
public List<UnplannedIssueJobFacDetail> FacDetails { get; set; } = new List<UnplannedIssueJobFacDetail>();
/// <summary>
/// ERP料号
/// </summary>
[Display(Name = "ERP料号")]
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
[Display(Name = "物品名称")]
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
[Display(Name = "物品描述1")]
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
[Display(Name = "物品描述2")]
public string ItemDesc2 { get; set; }
/// <summary>
/// ERP储位
/// </summary>
[Display(Name = "ERP储位")]
public string FromErpLocationCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
public bool IsHasPackingCode { get; set; }
/// <summary>
/// 设置任务明细的实际库位和实际数量

44
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNote.cs

@ -55,4 +55,48 @@ public class UnplannedIssueNote : SfsStoreAggregateRootBase<UnplannedIssueNoteDe
[Display(Name = "OA单据号")]
public string OANumber { get; set; }
/// ERP料号
/// </summary>
[Display(Name = "ERP料号")]
public string ItemCode { get; set; }
/// <summary>
/// 物品名称
/// </summary>
[Display(Name = "物品名称")]
public string ItemName { get; set; }
/// <summary>
/// 物品描述1
/// </summary>
[Display(Name = "物品描述1")]
public string ItemDesc1 { get; set; }
/// <summary>
/// 物品描述2
/// </summary>
[Display(Name = "物品描述2")]
public string ItemDesc2 { get; set; }
/// <summary>
/// ERP储位
/// </summary>
[Display(Name = "ERP储位")]
public string FromErpLocationCode { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
public decimal Qty { get; set; }
public bool IsHasPackingCode { get; set; }
}

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNoteDetail.cs

@ -39,4 +39,8 @@ public class UnplannedIssueNoteDetail : SfsStoreRecommendFromDetailWithLotPackin
/// </summary>
[Display(Name = "说明")]
public string Explain { get; set; }
}

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs

@ -83,6 +83,14 @@ public class UnplannedIssueJobEventHandler :
createInput.BuildDate=DateTime.Now;
createInput.ActiveDate=DateTime.Now;
createInput.Details.RemoveAll(p => p.Qty == 0);
createInput.ItemCode=entity.ItemCode;
createInput.ItemName=entity.ItemName;
createInput.ItemDesc1 =entity.ItemDesc1;
createInput.ItemDesc2 = entity.ItemDesc2;
createInput.Qty=entity.Qty;
createInput.Details = new List<UnplannedIssueNoteDetailInput>();

Loading…
Cancel
Save