diff --git a/src/WMS.Web.Api/Controllers/InStockTaskController.cs b/src/WMS.Web.Api/Controllers/InStockTaskController.cs index 49a10ff2..50641b09 100644 --- a/src/WMS.Web.Api/Controllers/InStockTaskController.cs +++ b/src/WMS.Web.Api/Controllers/InStockTaskController.cs @@ -110,8 +110,11 @@ namespace WMS.Web.Api.Controllers [Route("Refresh")] public async Task Refresh([FromBody] OperateRequest dto) { + //去重 + var ids = dto.Ids.GroupBy(x => x).Select(x=>x.Key).ToList(); + //1.先找到任务单-并找到来源单集 - var tasks= await _inStockTaskRepositories.GetList(dto.Ids); + var tasks= await _inStockTaskRepositories.GetList(ids); var sourcesBillNos = tasks.Select(x => x.SourceBillNo).ToList(); //2.同步金蝶 diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs index 3d6f6d88..603cbbda 100644 --- a/src/WMS.Web.Domain/Services/InStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs @@ -266,11 +266,25 @@ namespace WMS.Web.Domain.Services var data_list = await _inStockTaskRepositories.GetListBy(SourceBillNo_list); if (data_list.Count != 0) { + data_list.ForEach(x => + { + var erp_list_dets= erp_list.Where(t => t.BillNo == x.SourceBillNo).ToList(); + if (erp_list_dets != null && erp_list_dets.Count != 0 && erp_list_dets.Count > x.Details.Count) + { + var xd_mids=x.Details.Select(xd => xd.MaterialId).ToList(); + var task_no_materials= erp_list_dets.Where(ed => !xd_mids.Contains(ed.MaterialId)).ToList(); + var Add_task_no_materials= _mapper.Map>(task_no_materials); + x.Details.AddRange(Add_task_no_materials); + } + }); + //2.1提取出wms任务单明细信息 var data_list_details = data_list.SelectMany(x => x.Details).ToList(); foreach (var item in data_list_details) { var data = data_list.Where(x => x.Id == item.Fid).FirstOrDefault(); + if (data == null) + continue; //2.1.1对比erp的物料信息 var erp_data = erp_list.Where(x => x.BillNo == data.SourceBillNo && x.MaterialId == item.MaterialId).FirstOrDefault(); @@ -278,6 +292,7 @@ namespace WMS.Web.Domain.Services { //2.1.2修改数量 item.AccruedQty = erp_data.Qty; + item.FactoryPrice = erp_data.FactoryPrice; item.DeliveredQty = erp_data.DeliveredQty> item.DeliveredQty? erp_data.DeliveredQty: item.DeliveredQty; erp_remove_billNo.Add(data.SourceBillNo); }