|
|
@@ -3203,10 +3203,11 @@ namespace Business.Replenishment
|
|
|
AutoCreateBomBill(param.company_id.ToString(), autoCreates);
|
|
|
pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
|
|
|
}
|
|
|
+ AsyncItemStockFromWMS(pretreatments);
|
|
|
|
|
|
//数据库快照-同步mysql库数据到mongoDB中
|
|
|
await DbSnapShot(input.company_id, input.factoryId, bangid, pretreatments);
|
|
|
-
|
|
|
+
|
|
|
DataInitialization(boms, bangid, icitemlist, stocklist, pretreatments, sklist);
|
|
|
if (!planCheck)
|
|
|
{
|
|
|
@@ -4373,5 +4374,65 @@ namespace Business.Replenishment
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
+
|
|
|
+ public void AsyncItemStockFromWMS(List<b_bom_pretreatment> bom_Pretreatments)
|
|
|
+ {
|
|
|
+ //产品编码
|
|
|
+ var itemList = bom_Pretreatments.Select(a => a.item_number).Distinct().ToList();
|
|
|
+ List<string> itemChildList = new List<string>();
|
|
|
+ itemChildList.AddRange(itemList);
|
|
|
+ if (!itemChildList.Any())
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<string> locationList = new List<string> { "1000", "1001", "5008", "8000", "8001" };
|
|
|
+ //取出WMS物料记录
|
|
|
+ var stockList = _invMaster.Select(a => a.Domain == param.factoryId.ToString() && locationList.Contains(a.Location) && a.IsActive && itemChildList.Distinct().Contains(a.ItemNum));
|
|
|
+ //WMS物料记录汇总
|
|
|
+ var groupList = stockList.
|
|
|
+ GroupBy(m => new { m.ItemNum }).
|
|
|
+ Select(a => new { ItemNum = a.Key.ItemNum, Qty = a.Sum(c => c.QtyOnHand) }).ToList();
|
|
|
+
|
|
|
+
|
|
|
+ var itemNums = groupList.Select(b => b.ItemNum).ToList();//需要处理的dop物料编码集合
|
|
|
+ //根据WMS物料,取出DOP物料数据
|
|
|
+ var items = _mysql_ic_item.GetListAsync(a => itemNums.Contains(a.number) && a.factory_id == param.factoryId && a.company_id == param.company_id).Result;
|
|
|
+
|
|
|
+
|
|
|
+ var itemIds = items.Select(b => b.Id).ToList();//需要处理的dop物料id集合
|
|
|
+ List<ic_item_stock> mysqlStock = _mysql_ic_item_stock.GetListAsync(a => itemIds.Contains(a.Id) && a.factory_id == param.factoryId && a.company_id == param.company_id).Result;
|
|
|
+ List<ic_item_stock> needAddList = new List<ic_item_stock>();
|
|
|
+
|
|
|
+ foreach (var stockWMS in groupList)
|
|
|
+ {
|
|
|
+ var num = items.Find(x => x.number == stockWMS.ItemNum);
|
|
|
+ if (num != null)
|
|
|
+ {
|
|
|
+ var item = mysqlStock.Find(a => a.Id == num.Id);
|
|
|
+ if (item != null)
|
|
|
+ {
|
|
|
+ item.sqty = groupList.First(a => a.ItemNum == num.number).Qty;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ic_item_stock stock = new ic_item_stock();
|
|
|
+ stock.GenerateNewId(help.NextId());
|
|
|
+ stock.tenant_id = param.company_id;
|
|
|
+ stock.factory_id = param.factoryId;
|
|
|
+ stock.company_id = param.company_id;
|
|
|
+ stock.icitem_id = num.Id;
|
|
|
+ stock.icitem_number = num.number;
|
|
|
+ stock.icitem_name = num.name;
|
|
|
+ stock.sqty = groupList.First(a => a.ItemNum == num.number).Qty;
|
|
|
+ needAddList.Add(stock);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (needAddList.Count > 0)
|
|
|
+ {
|
|
|
+ _businessDbContext.BulkInsert(needAddList);
|
|
|
+ }
|
|
|
+ _businessDbContext.BulkUpdate(mysqlStock);
|
|
|
+ }
|
|
|
}
|
|
|
}
|