|
|
@@ -64,6 +64,8 @@ namespace Business.SystemJobManagement
|
|
|
/// </summary>
|
|
|
private IRepository<crm_seorderentry, long> _mysql_crm_seorderentry;
|
|
|
|
|
|
+ private IRepository<srm_po_occupy, long> _mysql_srm_po_occupy;
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 雪花算法
|
|
|
/// </summary>
|
|
|
@@ -169,6 +171,7 @@ namespace Business.SystemJobManagement
|
|
|
ISqlRepository<PurOrdDetail> purOrdDetail,
|
|
|
IRepository<srm_po_main, long> srm_po_main,
|
|
|
IRepository<srm_po_list, long> srm_po_list,
|
|
|
+ IRepository<srm_po_occupy, long> mysql_srm_po_occupy,
|
|
|
ISqlRepository<NbrMaster> nbrMaster,
|
|
|
ISqlRepository<NbrDetail> nbrDetail,
|
|
|
IRepository<ic_item_stockoccupy, long> ic_item_stockoccupy,
|
|
|
@@ -210,6 +213,7 @@ namespace Business.SystemJobManagement
|
|
|
_srm_po_list = srm_po_list;
|
|
|
_nbrMaster = nbrMaster;
|
|
|
_nbrDetail = nbrDetail;
|
|
|
+ _mysql_srm_po_occupy = mysql_srm_po_occupy;
|
|
|
_ic_item_stockoccupy = ic_item_stockoccupy;
|
|
|
_ASNBOLShipperDetail = ASNBOLShipperDetail;
|
|
|
}
|
|
|
@@ -1066,12 +1070,10 @@ namespace Business.SystemJobManagement
|
|
|
var pomains = _srm_po_main.GetListAsync(x => x.factory_id.ToString() == domain && x.company_id.ToString() == companyid && masters.Select(c => c.PurOrd).Contains(x.po_billno)).Result;
|
|
|
var polists = _srm_po_list.GetListAsync(x => x.factory_id.ToString() == domain && x.company_id.ToString() == companyid && pomains.Select(c => c.Id).Contains(x.po_id.GetValueOrDefault())).Result;
|
|
|
List<ic_item> itemList = _mysql_ic_item.GetListAsync(x => x.factory_id.ToString() == domain && x.company_id.ToString() == companyid).Result;
|
|
|
- List<srm_po_main> poList = new List<srm_po_main>();
|
|
|
- List<srm_po_list> detailList = new List<srm_po_list>();
|
|
|
|
|
|
+ List<srm_po_occupy> occList = new List<srm_po_occupy>();
|
|
|
List<srm_po_main> addPo = new List<srm_po_main>();
|
|
|
List<srm_po_main> updatePo = new List<srm_po_main>();
|
|
|
-
|
|
|
List<srm_po_list> addPolist = new List<srm_po_list>();
|
|
|
List<srm_po_list> updatePolist = new List<srm_po_list>();
|
|
|
|
|
|
@@ -1125,7 +1127,6 @@ namespace Business.SystemJobManagement
|
|
|
addPo.Add(po);
|
|
|
}
|
|
|
po.state = GetPurOrdStatus(m.Status);
|
|
|
-
|
|
|
var dtls = details.Where(x => x.PurOrdRecID == m.RecID).ToList();
|
|
|
var plists = polists.Where(x => x.po_id == po.Id).ToList();
|
|
|
foreach (var dtl in dtls)
|
|
|
@@ -1133,14 +1134,16 @@ namespace Business.SystemJobManagement
|
|
|
var plist = plists.Find(x => x.number == dtl.ItemNum);
|
|
|
if (plist != null)
|
|
|
{
|
|
|
- plist.state = dtl.Status.ToUpper() == "C" ? 0 : 1;
|
|
|
+ plist.state = dtl.Status == null ? 1 : dtl.Status.ToUpper() == "C" ? 0 : 1;
|
|
|
updatePolist.Add(plist);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
plist = new srm_po_list();
|
|
|
-
|
|
|
+ plist.po_id = po.Id;
|
|
|
+ plist.po_billno = po.po_billno;
|
|
|
plist.GenerateNewId(help.NextId());
|
|
|
+ plist.polist_row = dtl.ReqLine;
|
|
|
var icitem = itemList.Find(a => a.number == dtl.ItemNum);
|
|
|
if (icitem == null)
|
|
|
{
|
|
|
@@ -1167,12 +1170,36 @@ namespace Business.SystemJobManagement
|
|
|
plist.company_id = po.company_id;
|
|
|
plist.tenant_id = po.tenant_id;
|
|
|
plist.stock_id = 1;
|
|
|
- plist.state = dtl.Status.ToUpper() == "C" ? 0 : 1;
|
|
|
+ plist.state = dtl.Status == null ? 1 : dtl.Status.ToUpper() == "C" ? 0 : 1;
|
|
|
plist.pr_billno = dtl.Req;
|
|
|
addPolist.Add(plist);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if (addPolist.Any())
|
|
|
+ {
|
|
|
+ var srmPrs = _businessDbContext.srm_pr_main.Where(s => s.company_id.ToString() == companyid && addPolist.Select(x => x.pr_billno).Contains(s.pr_billno) && s.state == 1).ToList();
|
|
|
+ var occupylist = _mysql_srm_po_occupy.GetListAsync(x => srmPrs.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
|
|
|
+ /*var occupyListLINQ = _businessDbContext.srm_po_occupy.Where(x => x.company_id.ToString() == companyid && !x.IsDeleted).Join(_businessDbContext.srm_pr_main.Where(s => s.company_id.ToString() == companyid && addPolist.Select(x => x.pr_billno).Contains(s.pr_billno) && s.state == 1), p => p.polist_id, pr => pr.Id, (p, pr) => new { p, pr }).ToList();
|
|
|
+ List<srm_po_occupy> occupylist = new List<srm_po_occupy>();
|
|
|
+ for (int i = 0; i < occupyListLINQ.Count; i++)
|
|
|
+ {
|
|
|
+ occupylist.Add(occupyListLINQ[i].p);
|
|
|
+ }*/
|
|
|
+ occupylist.ForEach(x =>
|
|
|
+ {
|
|
|
+ var pr = srmPrs.Find(c => c.Id == x.polist_id);
|
|
|
+ if (pr != null)
|
|
|
+ {
|
|
|
+ var addplist = addPolist.Find(f => f.pr_billno == pr.pr_billno);
|
|
|
+ if (addplist != null)
|
|
|
+ {
|
|
|
+ x.polist_id = addplist.Id;
|
|
|
+ occList.Add(x);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
if (addPo.Any())
|
|
|
{
|
|
|
await _businessDbContext.BulkInsertAsync(addPo);
|
|
|
@@ -1185,6 +1212,10 @@ namespace Business.SystemJobManagement
|
|
|
{
|
|
|
await _businessDbContext.BulkInsertAsync(addPolist);
|
|
|
}
|
|
|
+ if (occList.Any())
|
|
|
+ {
|
|
|
+ await _businessDbContext.BulkUpdateAsync(occList);
|
|
|
+ }
|
|
|
if (updatePolist.Any())
|
|
|
{
|
|
|
await _businessDbContext.BulkUpdateAsync(updatePolist);
|