|
|
@@ -4747,7 +4747,7 @@ namespace Business.Replenishment
|
|
|
//删除同步Mysql后旧数据
|
|
|
await DeleteMySqlOldData(sentrys);
|
|
|
|
|
|
- List<mo_ic_bom> boms = _ic_bom.GetListAsync(p => mo_Mes_Morders.Select(m => m.bom_number).Contains(p.bom_number) && p.factory_id == input.factoryId && !p.IsDeleted).Result.ToList();
|
|
|
+ List<mo_ic_bom> boms = _ic_bom.GetListAsync(p => mo_Mes_Morders.Select(m => m.bom_number).Distinct().ToList().Contains(p.bom_number) && p.factory_id == input.factoryId && !p.IsDeleted).Result.ToList();
|
|
|
|
|
|
//物料bom
|
|
|
List<mo_ic_bom> bomlist = new List<mo_ic_bom>();
|
|
|
@@ -4765,7 +4765,7 @@ namespace Business.Replenishment
|
|
|
List<mo_ic_item_stockoccupy> sklist = new List<mo_ic_item_stockoccupy>();
|
|
|
|
|
|
//sorder=null 是因为齐套检查不需要生成工单、采购、委外等信息,所以不需要关联的工单信息传递进去。
|
|
|
- var pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
|
|
|
+ var pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => boms.Select(c => c.mysql_id).Distinct().ToList().Contains(s.sourceid)).Result;
|
|
|
List<mo_ic_bom> autoCreates = new List<mo_ic_bom>();
|
|
|
boms.ForEach(p =>
|
|
|
{
|
|
|
@@ -5506,7 +5506,6 @@ namespace Business.Replenishment
|
|
|
{
|
|
|
_businessBangDbContext.BulkInsert(purchaseoccupyList);
|
|
|
}
|
|
|
- _businessBangDbContext.SaveChanges();
|
|
|
await unitOfWork.CompleteAsync();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
@@ -5565,12 +5564,12 @@ namespace Business.Replenishment
|
|
|
//TODO:申老师明确后续需要调整 根据需要使用的字段,来同步表数据。
|
|
|
|
|
|
//同步物料库存数据 根据预处理,来只找出部分数据同步。
|
|
|
- List<long> itemIds = pretreatments.Select(s => s.item_id.GetValueOrDefault()).ToList();
|
|
|
+ List<long> itemIds = pretreatments.Select(s => s.item_id.GetValueOrDefault()).Distinct().ToList();
|
|
|
//var icitemStokc = _mysql_ic_item_stock.GetListAsync(p => p.tenant_id == tenantId && p.factory_id == factoryId).Result;
|
|
|
- var icitemStokc = _mysql_ic_item_stock.GetListAsync(p => p.company_id == companyId && itemIds.Contains(p.icitem_id)).Result;
|
|
|
+ var icitemStokc = _mysql_ic_item_stock.GetListAsync(p => itemIds.Contains(p.icitem_id) && p.company_id == companyId).Result;
|
|
|
if (icitemStokc.Count > 0)
|
|
|
{
|
|
|
- List<string> numbers = pretreatments.Select(s => s.item_number).ToList();
|
|
|
+ List<string> numbers = pretreatments.Select(s => s.item_number).Distinct().ToList();
|
|
|
var locationRange = _configurationItem.Select(x => x.FldName == "MRPLocationRange" && x.Domain == factoryId.ToString()).FirstOrDefault();
|
|
|
|
|
|
List<string> locationList = new List<string> { "1000", "1001", "5008", "8000", "8001" };
|
|
|
@@ -5579,7 +5578,7 @@ namespace Business.Replenishment
|
|
|
locationList = locationRange.Val.SplitToArray(",").ToList();
|
|
|
}
|
|
|
var locStock = _invMaster.Select(a => numbers.Contains(a.ItemNum) && a.IsActive && a.Domain == factoryId.ToString() && locationList.Contains(a.Location));
|
|
|
- var sapInvList = _SAPInv.Select(a => a.WERKS == factoryId.ToString() && numbers.Contains(a.MATNR) && (a.SOBKZ.ToUpper() == "O" || locationList.Contains(a.LGORT)));
|
|
|
+ var sapInvList = _SAPInv.Select(a => numbers.Contains(a.MATNR) && a.WERKS == factoryId.ToString() && (a.SOBKZ.ToUpper() == "O" || locationList.Contains(a.LGORT)));
|
|
|
|
|
|
//设置当前计算bangid
|
|
|
icitemStokc.ForEach(item => {
|
|
|
@@ -5601,7 +5600,7 @@ namespace Business.Replenishment
|
|
|
}
|
|
|
});
|
|
|
var moIcitemStokc = ObjectMapper.Map<List<ic_item_stock>, List<mo_ic_item_stock>>(icitemStokc);
|
|
|
- moIcitemStokc.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
+ moIcitemStokc.ForEach(item => { item.GenerateNewId(help.NextId());item.create_time = DateTime.Now;});
|
|
|
//插入数据
|
|
|
await MongoHelper<mo_ic_item_stock>.InsertManyAsync(moIcitemStokc);
|
|
|
}
|
|
|
@@ -5664,7 +5663,7 @@ namespace Business.Replenishment
|
|
|
}
|
|
|
|
|
|
//工单主表
|
|
|
- var mes_morder = _mysql_mes_morder.GetListAsync(x => string.IsNullOrEmpty(x.morder_state) == false && x.morder_state != "完成" && x.company_id == companyId && string.IsNullOrEmpty(x.analogcalcversion) == true && x.factory_id == factoryId && workordmsters.Select(c => c.WorkOrd).Contains(x.morder_no)).Result;
|
|
|
+ var mes_morder = _mysql_mes_morder.GetListAsync(x => string.IsNullOrEmpty(x.morder_state) == false && x.morder_state != "完成" && x.company_id == companyId && string.IsNullOrEmpty(x.analogcalcversion) && x.factory_id == factoryId && workordmsters.Select(c => c.WorkOrd).Contains(x.morder_no)).Result;
|
|
|
if (mes_morder.Count > 0)
|
|
|
{
|
|
|
mes_morder.ForEach(item => { item.bang_id = bangid; });
|
|
|
@@ -5707,7 +5706,7 @@ namespace Business.Replenishment
|
|
|
//订单明细--根据在途PO过滤出有效的Po_list
|
|
|
srm_po_list = srm_po_list.Where(s => srm_po_main.Select(x => x.Id).Contains(s.po_id.GetValueOrDefault())).ToList();
|
|
|
var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list);
|
|
|
- moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
+ moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid;item.create_time = DateTime.Now; });
|
|
|
await MongoHelper<mo_srm_po_list>.InsertManyAsync(moSrm_po_list);
|
|
|
}
|
|
|
//采购订单明细占用详情
|
|
|
@@ -5715,7 +5714,7 @@ namespace Business.Replenishment
|
|
|
if (srm_po_occupy.Count > 0)
|
|
|
{
|
|
|
var moSrm_po_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_po_occupy);
|
|
|
- moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
+ moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
|
|
|
await MongoHelper<mo_srm_po_occupy>.InsertManyAsync(moSrm_po_occupy);
|
|
|
}
|
|
|
}
|
|
|
@@ -5735,22 +5734,33 @@ namespace Business.Replenishment
|
|
|
if (srm_pr_main.Count > 0)
|
|
|
{
|
|
|
var moSrm_pr_main = ObjectMapper.Map<List<srm_pr_main>, List<mo_srm_pr_main>>(srm_pr_main);
|
|
|
- moSrm_pr_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
+ moSrm_pr_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
|
|
|
await MongoHelper<mo_srm_pr_main>.InsertManyAsync(moSrm_pr_main);
|
|
|
|
|
|
- //采购申请占用详情
|
|
|
- var occupyList = _businessDbContext.srm_po_occupy.Join(_businessDbContext.srm_pr_main.Where(x => x.company_id == companyId && x.factory_id == factoryId && x.state != 0 && itemIds.ToArray().Any(a => a == x.icitem_id.GetValueOrDefault())), p => p.polist_id, pr => pr.Id, (p, pr) => new { p, pr }).ToList();
|
|
|
- List<srm_po_occupy> srm_pr_occupy = new List<srm_po_occupy>();
|
|
|
- for (int i = 0; i < occupyList.Count; i++)
|
|
|
+ List<srm_po_occupy> occupylist = new List<srm_po_occupy>();
|
|
|
+ if (string.IsNullOrEmpty(analogCalcVersion))
|
|
|
+ {
|
|
|
+ var occupyListLINQ = _businessDbContext.srm_po_occupy.Where(x => x.company_id == companyId && x.factory_id == factoryId && !x.IsDeleted).Join(_businessDbContext.srm_pr_main.Where(x => x.company_id == companyId && x.factory_id == factoryId && x.state != 0 && string.IsNullOrEmpty(x.analogcalcversion) && itemIds.Contains(x.icitem_id.GetValueOrDefault())), p => p.polist_id, pr => pr.Id, (p, pr) => new { p, pr }).ToList();
|
|
|
+
|
|
|
+ for (int i = 0; i < occupyListLINQ.Count; i++)
|
|
|
+ {
|
|
|
+ occupylist.Add(occupyListLINQ[i].p);
|
|
|
+ }
|
|
|
+ }else
|
|
|
{
|
|
|
- srm_pr_occupy.Add(occupyList[i].p);
|
|
|
+ var occupyListLINQ = _businessDbContext.srm_po_occupy.Where(x => x.company_id == companyId && x.factory_id == factoryId && !x.IsDeleted).Join(_businessDbContext.srm_pr_main.Where(x => x.company_id == companyId && x.factory_id == factoryId && x.state != 0 && itemIds.Contains(x.icitem_id.GetValueOrDefault())), p => p.polist_id, pr => pr.Id, (p, pr) => new { p, pr }).ToList();
|
|
|
+
|
|
|
+ for (int i = 0; i < occupyListLINQ.Count; i++)
|
|
|
+ {
|
|
|
+ occupylist.Add(occupyListLINQ[i].p);
|
|
|
+ }
|
|
|
}
|
|
|
- //var srm_pr_occupy=_businessDbContext.srm_po_occupy.Where(x => x.company_id == companyId && x.factory_id == factoryId && srm_pr_main.Select(c => c.Id).Contains(x.polist_id.Value)).ToList();
|
|
|
- //var srm_pr_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_pr_main.Select(c => c.Id).Any(a=>a==x.polist_id.GetValueOrDefault())).Result;
|
|
|
- if (srm_pr_occupy.Count > 0)
|
|
|
+ //采购申请占用详情
|
|
|
+ //var srm_pr_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_pr_main.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
|
|
|
+ if (occupylist.Count > 0)
|
|
|
{
|
|
|
- var moSrm_pr_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_pr_occupy);
|
|
|
- moSrm_pr_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
+ var moSrm_pr_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(occupylist);
|
|
|
+ moSrm_pr_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; item.create_time = DateTime.Now; });
|
|
|
await MongoHelper<mo_srm_po_occupy>.InsertManyAsync(moSrm_pr_occupy);
|
|
|
}
|
|
|
}
|
|
|
@@ -5816,7 +5826,7 @@ namespace Business.Replenishment
|
|
|
/// <exception cref="NotImplementedException"></exception>
|
|
|
public void DataInitialization(List<mo_ic_bom> boms, long bangid, List<mo_ic_item> icitemlist, List<mo_ic_item_stock> stocklist, List<b_bom_pretreatment> pretreatments, List<mo_ic_item_stockoccupy> sklist)
|
|
|
{
|
|
|
- List<long> itemIds = pretreatments.Select(p => p.item_id.GetValueOrDefault()).ToList();
|
|
|
+ List<long> itemIds = pretreatments.Select(p => p.item_id.GetValueOrDefault()).Distinct().ToList();
|
|
|
icitemlist.AddRange(_ic_item.GetListAsync(p => itemIds.Contains(p.mysql_id) && !p.IsDeleted).Result);
|
|
|
#region 1、数据准备
|
|
|
//1.1、获取产能检查相关数据
|