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 f2d0afa9e..a91937eb5 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
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
+using System.Reflection;
using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
using Irony;
@@ -84,6 +85,68 @@ public class UnplannedIssueJobAppService
+ ///
+ /// 根据储位推荐
+ ///
+ ///
+ //[HttpPost("add-detail")]
+ //public async Task AddDetailsAsync(UnplannedIssueJobDTO jobInput)
+ //{
+ // var entity=await _repository.GetAsync(p=>p.Id==jobInput.Id).ConfigureAwait(false);
+ // var details=ObjectMapper.Map, List>(jobInput.Details);
+
+ // var balances=new List();
+
+
+ // foreach (var itm in entity.Details)
+ // {
+ // entity.RemoveDetail(itm.Id);
+ // }
+ // //var strs=GetAllFields(typeof(UnplannedIssueJobDetail));
+ // foreach (var detail in details)//明细
+ // {
+ // //_locationAppService.get detail.HandledFromLocationCode
+ // var input = new RecommendBalanceRequestInput
+ // {
+ // ItemCode = detail.ItemCode,
+ // Qty = detail.HandledQty,
+ // Statuses = new EditableList { EnumInventoryStatus.OK },
+ // Locations = new List() { detail.RecommendFromLocationCode },
+ // IsPackingCode = false
+ // };
+ // var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);//获取推荐库存
+ // usableList = usableList
+ // .OrderBy(p => p.Lot)
+ // .ThenBy(p => p.PutInTime)
+ // .ThenBy(p => p.Qty) //2023-9-14 苑静雯 从小数开始发料
+ // .ThenBy(p => p.LocationCode)
+ // .ThenBy(p => p.PackingCode)
+ // .ToList();
+ // decimal qty = 0;
+ // //实际要用库存
+ // var returnlist = DeductInventory(usableList, detail.HandledQty);
+ // balances.AddRange(returnlist);
+ // //useBalancesOut.AddRange(returnlist);
+ // entity.AddDetail(detail);
+ // }
+ // var outEditInputs = await BuildExpectOutAsync(balances).ConfigureAwait(false);
+ // foreach (var itm in outEditInputs)
+ // {
+ // itm.JobNumber = jobInput.Number;
+ // }
+ // await _expectOutAppService.AddManyAsync(outEditInputs).ConfigureAwait(false);
+ //}
+ public static string[] GetAllFields(Type type)
+ {
+ // 获取公共实例字段
+ var fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
+
+ // 返回字段名称
+ return fields.Select(f => f.Name).ToArray();
+ }
+
+
+
private List DeductInventory(List inventory, decimal quantityToDeduct)
{
List balanceDTOs = new List();
@@ -110,30 +173,6 @@ public class UnplannedIssueJobAppService
-
- //public override async Task GetAsync(Guid id)
- //{
- // var entity=await _repository.GetAsync(id).ConfigureAwait(false);
- // var entityDTO=ObjectMapper.Map(entity);
- // var details=ObjectMapper.Map, List>(entity.Details);
- // var facDetails=ObjectMapper.Map, List>(entity.FacDetails);
- // entityDTO.Details = details;
- // entityDTO.FacDetails = facDetails;
- // return entityDTO;
- // // var inspectJob = await _repository.FindAsync(id).ConfigureAwait(false);
- //}
-
-
-
-
-
-
-
-
-
-
-
-
private async Task> BuildUnplannedIssueJobAsync(UnplannedIssueRequest requestDto, List useBalancesOut)
{
List jobs = new EditableList();
@@ -165,8 +204,6 @@ public class UnplannedIssueJobAppService
useBalances.AddRange(returnlist);
useBalancesOut.AddRange(returnlist);
-
-
//foreach (var balanceDto in usableList)
//{
// decimal availableToDeduct = Math.Min(balanceDto.Qty, balanceDto.Qty - qty);
@@ -215,39 +252,48 @@ public class UnplannedIssueJobAppService
foreach (var balanceDto in balanceDtoGroup)
{
- var jobDetail = new UnplannedIssueJobDetail();
-
- jobDetail.Number = job.Number;
- jobDetail.SetIdAndNumber(GuidGenerator,job.Id,job.Number);
-
- jobDetail.CaseCode = requestDtoDetail.CaseCode;
- jobDetail.Explain = requestDtoDetail.Explain;
- jobDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode;
- jobDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode;
- //jobDetail.ReasonCode = requestDtoDetail.ReasonCode;
- jobDetail.ItemCode = requestDtoDetail.ItemCode;
- jobDetail.ItemDesc1 = requestDtoDetail.ItemDesc1;
- jobDetail.ItemDesc2 = requestDtoDetail.ItemDesc2;
- jobDetail.ItemName = requestDtoDetail.ItemName;
- jobDetail.RecommendArriveDate = balanceDto.ArriveDate;
- jobDetail.RecommendContainerCode = string.Empty;
- jobDetail.RecommendExpireDate = balanceDto.ExpireDate;
- jobDetail.RecommendLot = balanceDto.Lot;
- jobDetail.RecommendPackingCode = balanceDto.PackingCode;
- jobDetail.RecommendProduceDate = balanceDto.ProduceDate;
- jobDetail.RecommendQty = balanceDto.Qty;
- jobDetail.RecommendSupplierBatch = balanceDto.SupplierBatch;
- jobDetail.StdPackQty = requestDtoDetail.StdPackQty;
- jobDetail.RecommendPackingCode = balanceDto.PackingCode;
- jobDetail.HandledPackingCode = balanceDto.PackingCode;
- jobDetail.RecommendFromLocationArea = balanceDto.LocationArea;
- jobDetail.RecommendFromLocationCode = balanceDto.LocationCode;
- jobDetail.RecommendFromLocationErpCode = balanceDto.LocationErpCode;
- jobDetail.RecommendFromLocationGroup = balanceDto.LocationGroup;
- jobDetail.RecommendFromWarehouseCode = balanceDto.WarehouseCode;
- jobDetail.HandledQty = balanceDto.Qty;
-
-
+ //var jobDetail = new UnplannedIssueJobDetail();
+ //jobDetail.Number = job.Number;
+ //jobDetail.SetIdAndNumber(GuidGenerator,job.Id,job.Number);
+ //jobDetail.CaseCode = requestDtoDetail.CaseCode;
+ //jobDetail.Explain = requestDtoDetail.Explain;
+ //jobDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode;
+ //jobDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode;
+ ////jobDetail.ReasonCode = requestDtoDetail.ReasonCode;
+ //jobDetail.ItemCode = requestDtoDetail.ItemCode;
+ //jobDetail.ItemDesc1 = requestDtoDetail.ItemDesc1;
+ //jobDetail.ItemDesc2 = requestDtoDetail.ItemDesc2;
+ //jobDetail.ItemName = requestDtoDetail.ItemName;
+ //jobDetail.RecommendArriveDate = balanceDto.ArriveDate;
+ //jobDetail.RecommendContainerCode = string.Empty;
+ //jobDetail.RecommendExpireDate = balanceDto.ExpireDate;
+ //jobDetail.RecommendLot = balanceDto.Lot;
+ //jobDetail.RecommendPackingCode = balanceDto.PackingCode;
+ //jobDetail.RecommendProduceDate = balanceDto.ProduceDate;
+ //jobDetail.RecommendQty = balanceDto.Qty;
+ //jobDetail.RecommendSupplierBatch = balanceDto.SupplierBatch;
+ //jobDetail.StdPackQty = requestDtoDetail.StdPackQty;
+ //jobDetail.RecommendPackingCode = balanceDto.PackingCode;
+ //jobDetail.HandledPackingCode = balanceDto.PackingCode;
+ //jobDetail.RecommendFromLocationArea = balanceDto.LocationArea;
+ //jobDetail.RecommendFromLocationCode = balanceDto.LocationCode;
+ //jobDetail.RecommendFromLocationErpCode = balanceDto.LocationErpCode;
+ //jobDetail.RecommendFromLocationGroup = balanceDto.LocationGroup;
+ //jobDetail.RecommendFromWarehouseCode = balanceDto.WarehouseCode;
+ //jobDetail.HandledFromLocationGroup = balanceDto.LocationGroup;
+ //jobDetail.HandledFromLocationArea = balanceDto.LocationArea;
+ //jobDetail.HandledFromLocationCode = balanceDto.LocationCode;
+ //jobDetail.HandledFromLocationErpCode = balanceDto.LocationErpCode;
+ //jobDetail.HandledFromWarehouseCode = balanceDto.WarehouseCode;
+ //jobDetail.HandledQty = balanceDto.Qty;
+ //jobDetail.HandledSupplierBatch = balanceDto.Lot;
+ //jobDetail.HandledArriveDate = balanceDto.ArriveDate;
+ //jobDetail.HandledProduceDate = balanceDto.ProduceDate;
+ //jobDetail.HandledExpireDate = balanceDto.ExpireDate;
+ //jobDetail.HandledContainerCode = balanceDto.ContainerCode;
+ //jobDetail.HandledLot = balanceDto.Lot;
+ //jobDetail.HandledPackingCode = balanceDto.PackingCode;
+ //jobDetail.Uom = balanceDto.Uom;
var jobfacDetail = new UnplannedIssueJobFacDetail();
@@ -272,17 +318,29 @@ public class UnplannedIssueJobAppService
jobfacDetail.RecommendSupplierBatch = balanceDto.SupplierBatch;
jobfacDetail.StdPackQty = requestDtoDetail.StdPackQty;
jobfacDetail.RecommendPackingCode = balanceDto.PackingCode;
- jobfacDetail.HandledPackingCode = balanceDto.PackingCode;
-
+ jobfacDetail.HandledFromLocationGroup = balanceDto.LocationGroup;
+ jobfacDetail.HandledFromLocationArea = balanceDto.LocationArea;
+ jobfacDetail.HandledFromLocationCode = balanceDto.LocationCode;
+ jobfacDetail.HandledFromLocationErpCode = balanceDto.LocationErpCode;
+ jobfacDetail.HandledFromWarehouseCode = balanceDto.WarehouseCode;
+ jobfacDetail.HandledQty = balanceDto.Qty;
+ jobfacDetail.HandledSupplierBatch = balanceDto.Lot;
+ jobfacDetail.HandledArriveDate = balanceDto.ArriveDate;
+ jobfacDetail.HandledProduceDate = balanceDto.ProduceDate;
+ jobfacDetail.HandledExpireDate = balanceDto.ExpireDate;
+ jobfacDetail.HandledContainerCode =balanceDto.ContainerCode ;
+ jobfacDetail.HandledLot = balanceDto.Lot;
+ jobfacDetail.HandledPackingCode =balanceDto.PackingCode;
jobfacDetail.RecommendFromLocationArea = balanceDto.LocationArea;
jobfacDetail.RecommendFromLocationCode = balanceDto.LocationCode;
jobfacDetail.RecommendFromLocationErpCode = balanceDto.LocationErpCode;
jobfacDetail.RecommendFromLocationGroup = balanceDto.LocationGroup;
jobfacDetail.RecommendFromWarehouseCode = balanceDto.WarehouseCode;
+ jobfacDetail.Status = balanceDto.Status;
jobfacDetail.HandledQty = balanceDto.Qty;
-
+ jobfacDetail.Uom = balanceDto.Uom;
- job.Details.Add(jobDetail);
+ //job.Details.Add(jobDetail);
job.FacDetails.Add(jobfacDetail);
}
if (locationDto.Type == EnumLocationType.DimensionalStorehouse)//如果是立库的
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 36faf9345..864823f42 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
@@ -50,7 +50,8 @@ public class UnplannedIssueNoteAppService :
entity.Details.Add(detail);
//2023-10-20 袁静雯要求修改计划外出入库 Worker为userName
- var userName = await _userAppService.GetUserNameByUserAsync(input.Worker).ConfigureAwait(false);
+ var userName = input.Worker;
+ //await _userAppService.GetUserNameByUserAsync(input.Worker).ConfigureAwait(false);
entity.Worker = userName;
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
index 97585bfcc..b67c76e45 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
@@ -86,7 +86,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
///
///
[HttpPost("import-dongyang")]
- public async Task ImportDYAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file)
+ public async Task ImportDYAsync([FromForm] SfsImportRequestInput requestInput, [Required] IFormFile file)
{
try
@@ -205,7 +205,10 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
packingcode =string.IsNullOrEmpty(detail.PackingCode)?"99999999":detail.PackingCode;
- detail.PackingCode = packingcode;
+ detail.PackingCode = packingcode;
+
+ detail.Status = EnumInventoryStatus.OK;
+
}
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 922a5f395..010986984 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
@@ -101,4 +101,7 @@ public class UnplannedIssueJob : SfsJobAggregateRootBase
/// 执行任务 发料任务
///
- ///
- ///
- ///
+ ///
+ ///
+ ///
///
public override async Task CompleteAsync(UnplannedIssueJob input, ICurrentUser user)
{
- UnplannedIssueJob entity = await Repository.FindAsync(input.Id).ConfigureAwait(false);
+ var entity = await Repository.GetAsync(input.Id).ConfigureAwait(false);
entity.BuildDate = input.BuildDate;
entity.DeptCode = input.DeptCode;
entity.DeptName = input.DeptName;
entity.CompleteUserName = input.CompleteUserName;
entity.CompleteUserId = input.CompleteUserId;
+
+ var first= entity.FacDetails.FirstOrDefault();
+
+
foreach (var detail in input.Details)
{
- //发料子任务 赋值实际转移
- await entity.BuildDetail(detail.Id, detail.HandledFromLocationGroup, detail.HandledFromLocationArea,detail.HandledFromLocationCode, detail.HandledFromLocationErpCode, detail.HandledFromWarehouseCode, detail.HandledQty, detail.HandledSupplierBatch, detail.HandledArriveDate, detail.HandledProduceDate, detail.HandledExpireDate,
- detail.HandledContainerCode, detail.HandledLot, detail.HandledPackingCode, detail.ExtraProperties).ConfigureAwait(false);
+ detail.SetIdAndNumber(GuidGenerator, input.Id, input.Number);
+ detail.ReasonCode = first.ReasonCode;
+ detail.CaseCode = first.CaseCode;
+ detail.ProjCapacityCode = first.ProjCapacityCode;
+ detail.OnceBusiCode = first.OnceBusiCode;
+ detail.Explain = first.Explain;
+ detail.Status = EnumInventoryStatus.OK;
+ entity.AddDetail(detail);
+ //发料子任务 赋值实际转移
}
-
return await base.CompleteAsync(entity, user).ConfigureAwait(false);
}
@@ -52,7 +65,7 @@ public class UnplannedIssueJobManager : SfsJobManagerBase
///// 临时修改 解决补料无法拿到订阅错误
/////
- /////
+ /////
/////
//public virtual async Task> AddByEtoAsync(MaterialRequestHandledETO eventData)
//{
@@ -89,7 +102,7 @@ public class UnplannedIssueJobManager : SfsJobManagerBase GetAsync(Expression> expression)
{
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 142ce0be1..d9d76b371 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
@@ -1,3 +1,7 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
@@ -63,22 +67,73 @@ public class UnplannedIssueJobEventHandler :
private UnplannedIssueNoteEditInput BuildUnplannedIssueNoteCreateInput(UnplannedIssueJob entity)
{
var createInput = ObjectMapper.Map(entity);
- createInput.Details.RemoveAll(p => p.Qty == 0);
-
- /*
createInput.Details = new List();
+ //var strs= GetDifferentPropertyNames(typeof(UnplannedIssueJobDetail), typeof(UnplannedIssueNoteDetailInput));
+ //var strs1 = GetDifferentPropertyNames(typeof(UnplannedIssueNoteDetailInput), typeof(UnplannedIssueJobDetail));
+
+
foreach (var inputDetail in entity.Details)
{
- var detail = ObjectMapper.Map(inputDetail);
+ if (inputDetail.HandledQty > 0)
+ {
+ var detail = ObjectMapper.Map(inputDetail);
+ detail.LocationCode = inputDetail.HandledFromLocationCode;
+ detail.LocationArea = inputDetail.HandledFromLocationArea;
+ detail.LocationGroup=inputDetail.HandledFromLocationGroup;
+ detail.LocationErpCode = inputDetail.HandledFromLocationErpCode;
+ detail.WarehouseCode = inputDetail.HandledFromWarehouseCode;
+ detail.PackingCode = inputDetail.HandledPackingCode;
+ detail.ContainerCode=inputDetail.HandledContainerCode;
+ detail.Qty=inputDetail.HandledQty;
+ detail.Lot=inputDetail.HandledLot;
+ detail.SupplierBatch = inputDetail.HandledSupplierBatch;
+ detail.ArriveDate=inputDetail.HandledArriveDate;
+ detail.ProduceDate = inputDetail.HandledProduceDate;
+ detail.ExpireDate=inputDetail.HandledExpireDate;
+ detail.Uom = inputDetail.Uom;
+ detail.ExtraProperties = inputDetail.ExtraProperties;
+ createInput.Details.Add(detail);
+ }
+ }
+ return createInput;
+ }
- detail.ExtraProperties = inputDetail.ExtraProperties;
+ //public static string[] GetDifferentFieldNames(Type type1, Type type2)
+ //{
+ // // 获取两个类型的字段
+ // var fields1 = type1.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
+ // var fields2 = type2.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
- createInput.Details.Add(detail);
- }
- */
+ // // 获取字段名称
+ // var fieldNames1 = fields1.Select(f => f.Name).ToArray();
+ // var fieldNames2 = fields2.Select(f => f.Name).ToArray();
- return createInput;
+ // // 找出不同的字段名称
+ // var differentFields = fieldNames1.Except(fieldNames2).ToArray();
+
+
+ // return differentFields;
+ //}
+
+
+ public static string[] GetDifferentPropertyNames(Type type1, Type type2)
+ {
+ // 获取两个类型的属性
+ var properties1 = type1.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
+ var properties2 = type2.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
+
+ // 获取属性名称
+ var propertyNames1 = properties1.Select(p => p.Name).ToArray();
+ var propertyNames2 = properties2.Select(p => p.Name).ToArray();
+
+ // 找出不同的属性名称
+ var differentProperties = propertyNames1.Except(propertyNames2)
+ .ToArray();
+
+ return differentProperties;
}
+
+
}