From b282d9379135e860a53427c9fd45bdf59706fb39 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com>
Date: Tue, 22 Oct 2024 11:08:53 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Inputs/UnplannedIssueNoteEditInput.cs | 37 ++++++++
.../UnplannedIssueJobAppService.cs | 84 +++++++++++++++----
.../UnplannedIssueNoteAppService.cs | 7 ++
.../UnplannedIssueJobs/UnplannedIssueJob.cs | 38 ++++++++-
.../UnplannedIssueNotes/UnplannedIssueNote.cs | 44 ++++++++++
.../UnplannedIssueNoteDetail.cs | 4 +
.../Jobs/UnplannedIssueJobEventHandler.cs | 8 ++
7 files changed, 205 insertions(+), 17 deletions(-)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/UnplannedIssueNotes/Inputs/UnplannedIssueNoteEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/UnplannedIssueNotes/Inputs/UnplannedIssueNoteEditInput.cs
index a30f1c684..3b100ea3a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/UnplannedIssueNotes/Inputs/UnplannedIssueNoteEditInput.cs
+++ b/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料号
+ ///
+ [Display(Name = "ERP料号")]
+ public string ItemCode { get; set; }
+
+ ///
+ /// 物品名称
+ ///
+ [Display(Name = "物品名称")]
+ public string ItemName { get; set; }
+
+ ///
+ /// 物品描述1
+ ///
+ [Display(Name = "物品描述1")]
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ [Display(Name = "物品描述2")]
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// ERP储位
+ ///
+ [Display(Name = "ERP储位")]
+ public string FromErpLocationCode { get; set; }
+
+ ///
+ /// 数量
+ ///
+ [Display(Name = "数量")]
+ public decimal Qty { get; set; }
+
+
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
index 431be17f9..ee3aaa673 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
+++ b/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();
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedIssuesNotes/UnplannedIssueNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedIssuesNotes/UnplannedIssueNoteAppService.cs
index 864823f42..0c6db34a7 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/UnplannedIssuesNotes/UnplannedIssueNoteAppService.cs
+++ b/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(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();
foreach (var inputDetail in input.Details)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs
index 010986984..d1547b21f 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs
@@ -60,10 +60,46 @@ public class UnplannedIssueJob : SfsJobAggregateRootBase
[IgnoreUpdate]
public List FacDetails { get; set; } = new List();
-
+ ///
+ /// ERP料号
+ ///
+ [Display(Name = "ERP料号")]
+ public string ItemCode { get; set; }
+
+ ///
+ /// 物品名称
+ ///
+ [Display(Name = "物品名称")]
+ public string ItemName { get; set; }
+
+ ///
+ /// 物品描述1
+ ///
+ [Display(Name = "物品描述1")]
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ [Display(Name = "物品描述2")]
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// ERP储位
+ ///
+ [Display(Name = "ERP储位")]
+ public string FromErpLocationCode { get; set; }
+
+ ///
+ /// 数量
+ ///
+ [Display(Name = "数量")]
+ public decimal Qty { get; set; }
+
+ public bool IsHasPackingCode { get; set; }
///
/// 设置任务明细的实际库位和实际数量
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNote.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNote.cs
index f0e663527..068f1b505 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNote.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNote.cs
@@ -55,4 +55,48 @@ public class UnplannedIssueNote : SfsStoreAggregateRootBase
+ [Display(Name = "ERP料号")]
+ public string ItemCode { get; set; }
+
+ ///
+ /// 物品名称
+ ///
+ [Display(Name = "物品名称")]
+ public string ItemName { get; set; }
+
+ ///
+ /// 物品描述1
+ ///
+ [Display(Name = "物品描述1")]
+ public string ItemDesc1 { get; set; }
+
+ ///
+ /// 物品描述2
+ ///
+ [Display(Name = "物品描述2")]
+ public string ItemDesc2 { get; set; }
+
+ ///
+ /// ERP储位
+ ///
+ [Display(Name = "ERP储位")]
+ public string FromErpLocationCode { get; set; }
+
+ ///
+ /// 数量
+ ///
+ [Display(Name = "数量")]
+ public decimal Qty { get; set; }
+
+ public bool IsHasPackingCode { get; set; }
+
+
+
+
+
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNoteDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNoteDetail.cs
index 1f91489a0..6b9aaa056 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNoteDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/UnplannedIssueNotes/UnplannedIssueNoteDetail.cs
@@ -39,4 +39,8 @@ public class UnplannedIssueNoteDetail : SfsStoreRecommendFromDetailWithLotPackin
///
[Display(Name = "说明")]
public string Explain { get; set; }
+
+
+
+
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs
index d7830cd93..eb5aac397 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs
+++ b/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();