This commit is contained in:
tongfei
2024-03-14 15:28:39 +08:00
parent 02ddf49310
commit c3e0d4908f

View File

@@ -1,6 +1,7 @@
using AutoMapper; using AutoMapper;
using Microsoft.EntityFrameworkCore.Storage; using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -519,15 +520,18 @@ namespace WMS.Web.Domain.Services
// erp_list.RemoveAll(a => a.BillNo == b.BillNo); // erp_list.RemoveAll(a => a.BillNo == b.BillNo);
//} //}
//2.1遍历任务单明细:改变已有的值和要添加的明细 //2.1遍历任务单明细:改变已有的值和要添加的明细
foreach (var data_item in data_list) _logger.LogInformation("拉取金蝶数据SysnDataNew1->" + JsonConvert.SerializeObject(data_list));
foreach (var det in data_list.SelectMany(t => t.Details))
{ {
foreach (var det in data_item.Details) var order= data_list.Where(o => o.Id == det.Fid).FirstOrDefault();
if (order != null)
{ {
var erp_data = erp_list.FirstOrDefault(a => a.ErpDetailId == det.ErpDetailId && a.BillNo == data_item.SourceBillNo); var erp_data = erp_list.FirstOrDefault(a => a.ErpDetailId == det.ErpDetailId && a.BillNo == order.SourceBillNo);
if (erp_data != null) if (erp_data != null)
{ {
if (erp_data.MaterialId == det.MaterialId) if (erp_data.MaterialId == det.MaterialId)
{ {
_logger.LogInformation("拉取金蝶数据SysnDataNew2->" + JsonConvert.SerializeObject(erp_data));
//物料相同的,就改变数值 //物料相同的,就改变数值
det.Remark = erp_data.Remark; det.Remark = erp_data.Remark;
det.AccruedQty = erp_data.Qty; det.AccruedQty = erp_data.Qty;
@@ -536,15 +540,17 @@ namespace WMS.Web.Domain.Services
} }
else else
{ {
_logger.LogInformation("拉取金蝶数据SysnDataNew3->" + JsonConvert.SerializeObject(erp_data));
//老物料应收数量修改为0 //老物料应收数量修改为0
det.AccruedQty = 0; det.AccruedQty = 0;
} }
//操作完后剔除 //操作完后剔除
erp_removeList.Add(erp_data); erp_removeList.Add(erp_data);
} }
}
} }
}
//2.1.1当物料相同,仓库不同或者物料不同,就新增一条明细 //2.1.1当物料相同,仓库不同或者物料不同,就新增一条明细
foreach (var erp_data in erp_list) foreach (var erp_data in erp_list)
@@ -574,10 +580,10 @@ namespace WMS.Web.Domain.Services
//当应入库数量大于实际入库数量:状态就部分入库 //当应入库数量大于实际入库数量:状态就部分入库
//当应入库数量小于等于实际入库数量:状态就已入库 //当应入库数量小于等于实际入库数量:状态就已入库
var AccruedQtyTotal = order.Details.Where(x => x.AccruedQty != 0).Sum(x => x.AccruedQty); var AccruedQtyTotal = order.Details.Where(x => x.AccruedQty != 0).Sum(x => x.AccruedQty);
var RealityQtyTotal = order.Details.Where(x=>x.AccruedQty!=0).Sum(x => x.RealityQty); var RealityQtyTotal = order.Details.Where(x => x.AccruedQty != 0).Sum(x => x.RealityQty);
if(RealityQtyTotal!=0 && AccruedQtyTotal > RealityQtyTotal) if (RealityQtyTotal != 0 && AccruedQtyTotal > RealityQtyTotal)
order.Status = InstockStatus.Part; order.Status = InstockStatus.Part;
else if(AccruedQtyTotal<= RealityQtyTotal) else if (AccruedQtyTotal <= RealityQtyTotal)
order.Status = InstockStatus.Already; order.Status = InstockStatus.Already;
}); });
@@ -585,17 +591,23 @@ namespace WMS.Web.Domain.Services
//2.4金蝶删除的明细要把任务单里的明细应入库数量改为0 //2.4金蝶删除的明细要把任务单里的明细应入库数量改为0
data_list.SelectMany(x => x.Details).Where(c => !erp_list.Any(a => a.ErpDetailId == c.ErpDetailId)).ToList().ForEach(x => { x.AccruedQty = 0; }); data_list.SelectMany(x => x.Details).Where(c => !erp_list.Any(a => a.ErpDetailId == c.ErpDetailId)).ToList().ForEach(x => { x.AccruedQty = 0; });
} _logger.LogInformation("拉取金蝶数据SysnDataNew4->" + JsonConvert.SerializeObject(data_list));
//2.3.提交任务单的修改 //2.3.提交任务单的修改
var isSuccess = await _inStockTaskRepositories.UpdateRange(data_list, isTransaction); var isSuccess = await _inStockTaskRepositories.UpdateRange(data_list, isTransaction);
if (!isSuccess) if (!isSuccess)
return Result.ReFailure(ResultCodes.DateWriteError); return Result.ReFailure(ResultCodes.DateWriteError);
}
//2.4剔除:已修改的单据 //2.4剔除:已修改的单据
foreach (var item in erp_removeList.Distinct().ToList()) foreach (var item in erp_removeList.Distinct().ToList())
erp_list.Remove(item); erp_list.Remove(item);
_logger.LogInformation("拉取金蝶数据SysnDataNew5->" + JsonConvert.SerializeObject(erp_list));
//3.wms任务单的来源单据编号不存在于erp中那么就新增 //3.wms任务单的来源单据编号不存在于erp中那么就新增
if (erp_list.Count != 0) if (erp_list.Count != 0)
{ {