|
|
@@ -128,14 +128,12 @@ namespace Business.Replenishment
|
|
|
private readonly IRepository<mes_moentry, long> _mysql_mes_moentry;
|
|
|
private readonly ISqlRepository<WorkOrdDetail> _workOrdDetail;
|
|
|
private readonly IRepository<mo_srm_po_list, long> _srm_po_list;
|
|
|
- private readonly IRepository<srm_po_list, long> _mysql_srm_po_list;
|
|
|
private readonly ISqlRepository<RoutingOpDetail> _routingOpDetail;
|
|
|
private readonly ISqlRepository<ProductStructureMaster> _productStructureMaster;
|
|
|
private readonly ISqlRepository<ShopCalendarWorkCtr> _shopCalendarWorkCtr;
|
|
|
private readonly ISqlRepository<QualityLineWorkDetail> _qualityLineWorkDetail;
|
|
|
private readonly ISqlRepository<CustMaster> _custMaster;
|
|
|
private readonly IRepository<mo_srm_po_main, long> _srm_po_main;
|
|
|
- private readonly IRepository<srm_po_main, long> _mysql_srm_po_main;
|
|
|
private readonly IRepository<mo_srm_purchase, long> _srm_purchase;
|
|
|
private readonly IRepository<srm_purchase, long> _mysql_srm_purchase;
|
|
|
private readonly IRepository<mes_morder, long> _mysql_mes_morder;
|
|
|
@@ -326,7 +324,6 @@ namespace Business.Replenishment
|
|
|
IRepository<mes_moentry, long> mysql_mes_moentry,
|
|
|
ISqlRepository<WorkOrdDetail> workOrdDetail,
|
|
|
IRepository<mo_srm_po_list, long> srm_po_list,
|
|
|
- IRepository<srm_po_list, long> mysql_srm_po_list,
|
|
|
ISqlRepository<RoutingOpDetail> routingOpDetail,
|
|
|
ISqlRepository<ProductStructureMaster> productStructureMaster,
|
|
|
ISqlRepository<ShopCalendarWorkCtr> shopCalendarWorkCtr,
|
|
|
@@ -334,7 +331,6 @@ namespace Business.Replenishment
|
|
|
ISqlRepository<QualityLineWorkDetail> qualityLineWorkDetail,
|
|
|
ISqlRepository<ScheduleResultOpMaster> scheduleResultOpMaster,
|
|
|
IRepository<mo_srm_po_main, long> srm_po_main,
|
|
|
- IRepository<srm_po_main, long> mysql_srm_po_main,
|
|
|
IRepository<mo_srm_purchase, long> srm_purchase,
|
|
|
IRepository<srm_purchase, long> mysql_srm_purchase,
|
|
|
IRepository<mes_morder, long> mysql_mes_morder,
|
|
|
@@ -431,13 +427,11 @@ namespace Business.Replenishment
|
|
|
_mysql_mes_moentry = mysql_mes_moentry;
|
|
|
_workOrdDetail = workOrdDetail;
|
|
|
_srm_po_list = srm_po_list;
|
|
|
- _mysql_srm_po_list = mysql_srm_po_list;
|
|
|
_routingOpDetail = routingOpDetail;
|
|
|
_productStructureMaster = productStructureMaster;
|
|
|
_shopCalendarWorkCtr = shopCalendarWorkCtr;
|
|
|
_qualityLineWorkDetail = qualityLineWorkDetail;
|
|
|
_srm_po_main = srm_po_main;
|
|
|
- _mysql_srm_po_main = mysql_srm_po_main;
|
|
|
_srm_purchase = srm_purchase;
|
|
|
_mysql_srm_purchase = mysql_srm_purchase;
|
|
|
_mysql_mes_morder = mysql_mes_morder;
|
|
|
@@ -3786,26 +3780,27 @@ namespace Business.Replenishment
|
|
|
}
|
|
|
}
|
|
|
//通过要删除的要货令明细,删除采购申请,然后根据删除的采购申请,删除srm_po_list
|
|
|
- var delpolist = _mysql_srm_po_main.GetListAsync(x => delMstlist.Select(c => c.PurOrd).Contains(x.po_billno) && x.factory_id.ToString() == domain).Result;
|
|
|
- var podtllist = _mysql_srm_po_list.GetListAsync(x => delDtllist.Select(c => c.PurOrd).Contains(x.po_billno) && x.factory_id.ToString() == domain).Result;
|
|
|
- List<srm_po_list> delpllist = new List<srm_po_list>();
|
|
|
- foreach (var pl in podtllist)
|
|
|
- {
|
|
|
- if (delDtllist.Exists(x => x.PurOrd == pl.po_billno && x.ItemNum == pl.ItemNum && x.Line == pl.polist_row.GetValueOrDefault()))
|
|
|
- {
|
|
|
- delpllist.Add(pl);
|
|
|
- }
|
|
|
- }
|
|
|
- var delocclist = _mysql_srm_po_occupy.GetListAsync(x => delpllist.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
|
|
|
- var delprlist = _mysql_srm_pr_main.GetListAsync(x => delpllist.Select(c => c.pr_id).Contains(x.Id)).Result;
|
|
|
+ //var delpolist = _PurOrdMaster.Select(x => delMstlist.Select(c => c.PurOrd).Contains(x.PurOrd) && x.Domain == domain).ToList();
|
|
|
+ //var podtllist = _PurOrdDetail.Select(x => delDtllist.Select(c => c.PurOrd).Contains(x.PurOrd) && x.Domain == domain).ToList();
|
|
|
+ //List<PurOrdDetail> delpllist = new List<PurOrdDetail>();
|
|
|
+ //foreach (var pl in podtllist)
|
|
|
+ //{
|
|
|
+ // if (delDtllist.Exists(x => x.PurOrd == pl.PurOrd && x.ItemNum == pl.ItemNum && x.Line == pl.Line))
|
|
|
+ // {
|
|
|
+ // delpllist.Add(pl);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ var delocclist = _mysql_srm_po_occupy.GetListAsync(x => delMstlist.Select(c => (long)c.RecID).Contains(x.polist_id.GetValueOrDefault())).Result;
|
|
|
+ var delPrBillnos = delDtllist.Where(c => !string.IsNullOrEmpty(c.Req)).Select(c => c.Req).Distinct().ToList();
|
|
|
+ var delprlist = _mysql_srm_pr_main.GetListAsync(x => delPrBillnos.Contains(x.pr_billno)).Result;
|
|
|
using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
_businessDbContext.RemoveRange(delMstlist); _businessDbContext.SaveChanges();
|
|
|
_businessDbContext.RemoveRange(delDtllist); _businessDbContext.SaveChanges();
|
|
|
- _businessDbContext.RemoveRange(delpolist); _businessDbContext.SaveChanges();
|
|
|
- _businessDbContext.RemoveRange(delpllist); _businessDbContext.SaveChanges();
|
|
|
+ //_businessDbContext.RemoveRange(delpolist); _businessDbContext.SaveChanges();
|
|
|
+ //_businessDbContext.RemoveRange(delpllist); _businessDbContext.SaveChanges();
|
|
|
_businessDbContext.RemoveRange(delocclist); _businessDbContext.SaveChanges();
|
|
|
_businessDbContext.RemoveRange(delprlist); _businessDbContext.SaveChanges();
|
|
|
await unitOfWork.CompleteAsync();
|
|
|
@@ -6447,27 +6442,75 @@ namespace Business.Replenishment
|
|
|
await MongoHelper<mo_mes_mooccupy>.InsertManyAsync(moMes_mooccupy);
|
|
|
}
|
|
|
}
|
|
|
- //根据物料信息,只同步在途未关闭的采购订单和采购申请
|
|
|
+ //根据物料信息,只同步在途未关闭的采购订单和采购申请
|
|
|
|
|
|
- //采购订单明细
|
|
|
- var srm_po_list = _mysql_srm_po_list.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && itemIds.Contains(x.icitem_id.GetValueOrDefault())).Result;
|
|
|
- if (srm_po_list.Count > 0)
|
|
|
+ //采购订单明细 - 需要通过ItemNum关联ic_item获取物料ID
|
|
|
+ var itemList = _mysql_ic_item.GetListAsync(x => x.factory_id == factoryId && x.company_id == companyId && itemIds.Contains(x.Id)).Result;
|
|
|
+ var itemNumbers = itemList.Select(x => x.number).ToList();
|
|
|
+ var purOrdDetails = _PurOrdDetail.Select(x => x.Domain == factoryId.ToString() && itemNumbers.Contains(x.ItemNum)).ToList();
|
|
|
+ if (purOrdDetails.Count > 0)
|
|
|
{
|
|
|
//采购订单--取出状态为在途的PO
|
|
|
- var srm_po_main = _mysql_srm_po_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_po_list.Select(c => c.po_id).Contains(x.Id) && x.state != 3).Result;
|
|
|
- if (srm_po_main.Count > 0)
|
|
|
+ var purOrdMasters = _PurOrdMaster.Select(x => x.Domain == factoryId.ToString() && purOrdDetails.Select(c => c.PurOrdRecID).Contains(x.RecID) && (x.Status == null || x.Status.ToUpper() != "C")).ToList();
|
|
|
+ if (purOrdMasters.Count > 0)
|
|
|
{
|
|
|
- var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main);
|
|
|
+ List<srm_po_main> srm_po_main_list = new List<srm_po_main>();
|
|
|
+ foreach (var master in purOrdMasters)
|
|
|
+ {
|
|
|
+ srm_po_main_list.Add(new srm_po_main
|
|
|
+ {
|
|
|
+ po_billno = master.PurOrd,
|
|
|
+ supplier_no = master.Supp,
|
|
|
+ po_ssend_date = master.OrdDate,
|
|
|
+ po_tax_rate = master.Tax1,
|
|
|
+ supplier_type = master.USAGE,
|
|
|
+ currency = master.Curr == "CNY" ? 1 : 0,
|
|
|
+ suppliertelephone = master.CustPhone,
|
|
|
+ supplierdddress = master.CustAddress,
|
|
|
+ state = master.Status == null || master.Status.ToUpper() != "C" ? 1 : 3,
|
|
|
+ factory_id = factoryId,
|
|
|
+ company_id = companyId,
|
|
|
+ tenant_id = companyId
|
|
|
+ });
|
|
|
+ }
|
|
|
+ var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main_list);
|
|
|
moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
await MongoHelper<mo_srm_po_main>.InsertManyAsync(moSrm_po_main);
|
|
|
//订单明细--根据在途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);
|
|
|
+ purOrdDetails = purOrdDetails.Where(s => purOrdMasters.Select(x => x.RecID).Contains(s.PurOrdRecID)).ToList();
|
|
|
+ List<srm_po_list> srm_po_list_data = new List<srm_po_list>();
|
|
|
+ foreach (var detail in purOrdDetails)
|
|
|
+ {
|
|
|
+ var icitem = itemList.Find(a => a.number == detail.ItemNum);
|
|
|
+ srm_po_list_data.Add(new srm_po_list
|
|
|
+ {
|
|
|
+ po_id = detail.PurOrdRecID,
|
|
|
+ po_billno = detail.PurOrd,
|
|
|
+ polist_row = detail.Line,
|
|
|
+ ItemNum = detail.ItemNum,
|
|
|
+ qty = detail.QtyOrded,
|
|
|
+ plan_qty = detail.QtyOrded,
|
|
|
+ rqty = detail.RctQty,
|
|
|
+ rarrdate = detail.DueDate,
|
|
|
+ price = detail.PurCost.GetValueOrDefault(),
|
|
|
+ netprice = detail.PurCost.GetValueOrDefault(),
|
|
|
+ total_price = detail.QtyOrded * detail.PurCost.GetValueOrDefault(),
|
|
|
+ netmoney = detail.QtyOrded * detail.PurCost.GetValueOrDefault(),
|
|
|
+ rate = detail.TaxRate,
|
|
|
+ state = detail.Status == null || detail.Status.ToUpper() != "C" ? 1 : 0,
|
|
|
+ pr_billno = detail.Req,
|
|
|
+ icitem_id = icitem?.Id,
|
|
|
+ factory_id = factoryId,
|
|
|
+ company_id = companyId,
|
|
|
+ tenant_id = companyId
|
|
|
+ });
|
|
|
+ }
|
|
|
+ var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list_data);
|
|
|
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);
|
|
|
}
|
|
|
//采购订单明细占用详情
|
|
|
- var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_po_list.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
|
|
|
+ var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && purOrdDetails.Select(c => (long)c.RecID).Contains(x.polist_id.GetValueOrDefault())).Result;
|
|
|
if (srm_po_occupy.Count > 0)
|
|
|
{
|
|
|
var moSrm_po_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_po_occupy);
|