|
|
@@ -2184,14 +2184,53 @@ namespace Business.ResourceExamineManagement
|
|
|
Mes_Morders.ForEach(s => { s.moentry_sys_stime = DateTime.Now.Date.AddDays((double)lookDay + 1); });
|
|
|
List<string> monolist = Mes_Morders.Select(c => c.morder_no).ToList();
|
|
|
//清理PR的占用。
|
|
|
+ //如果PR没有转PO,则PR没有合并,就删除,有合并,就减少合并后的PR的数量。
|
|
|
+ var prlist = _mysql_srm_pr_main.GetListAsync(s => monolist.Contains(s.pr_mono)).Result;
|
|
|
+ List<srm_pr_main> alllist = new List<srm_pr_main>();
|
|
|
+ List<srm_pr_main> updatelist = new List<srm_pr_main>();
|
|
|
+ List<srm_pr_main> dellist = new List<srm_pr_main>();
|
|
|
+ RecursionGetDbPr2(prlist, alllist);
|
|
|
+ foreach (var pr in prlist)
|
|
|
+ {
|
|
|
+ //找到没有关闭的PR,如果关联上的PR都是已关闭,则说明已经转了PO。
|
|
|
+ var getPr = RerunPr(pr, alllist);
|
|
|
+ if (getPr != null)
|
|
|
+ {
|
|
|
+ getPr.pr_aqty = getPr.pr_aqty - pr.pr_aqty;
|
|
|
+ if (getPr.pr_aqty <= 0)
|
|
|
+ {
|
|
|
+ //删除这个pr,没有小于0则是更新
|
|
|
+ dellist.Add(getPr);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ updatelist.Add(getPr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
List<srm_po_occupy> occupy = await _mysql_srm_po_occupy.GetListAsync(s => monolist.Contains(s.morder_mo));
|
|
|
_businessDbContext.BulkDelete(occupy);
|
|
|
+ if (updatelist.Any())
|
|
|
+ {
|
|
|
+ _businessDbContext.BulkUpdate(updatelist);
|
|
|
+ }
|
|
|
+ if (dellist.Any())
|
|
|
+ {
|
|
|
+ _businessDbContext.BulkDelete(dellist);
|
|
|
+ }
|
|
|
|
|
|
- //清理锁定期外的排程数据
|
|
|
- _periodSequenceDet.Delete(s => monolist.Contains(s.WorkOrds));
|
|
|
- _scheduleResultOpMaster.Delete(s => monolist.Contains(s.WorkOrd));
|
|
|
+ //清理锁定期外的排程数据.
|
|
|
+ var periodList = _periodSequenceDet.Select(s => monolist.Contains(s.WorkOrds));
|
|
|
+ if (periodList.Any())
|
|
|
+ {
|
|
|
+ _periodSequenceDet.Delete(s => monolist.Contains(s.WorkOrds));
|
|
|
+ }
|
|
|
+ var schedulList = _scheduleResultOpMaster.Select(s => monolist.Contains(s.WorkOrd));
|
|
|
+ if (schedulList.Any())
|
|
|
+ {
|
|
|
+ _scheduleResultOpMaster.Delete(s => monolist.Contains(s.WorkOrd));
|
|
|
+ }
|
|
|
//只走计划工单
|
|
|
- await OrderKittingCheck(Mes_Morders, true);
|
|
|
+ var rtn = await OrderKittingCheck(Mes_Morders, true);
|
|
|
}
|
|
|
else {
|
|
|
return JsonConvert.SerializeObject("未查找到对应的计划工单,请联系管理员。");
|
|
|
@@ -2199,6 +2238,42 @@ namespace Business.ResourceExamineManagement
|
|
|
return "ok";
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 递归寻找PR,找到合并后的PR
|
|
|
+ /// </summary>
|
|
|
+ public void RecursionGetDbPr2(List<srm_pr_main> list, List<srm_pr_main> referlist)
|
|
|
+ {
|
|
|
+ List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => list.Select(c => c.refer_pr_billno).Contains(s.pr_billno)).Result;
|
|
|
+ if (prlist.Any())
|
|
|
+ {
|
|
|
+ referlist.AddRange(prlist);
|
|
|
+ RecursionGetDbPr2(prlist, referlist);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //找到没有关闭的PR,做数量的减少
|
|
|
+ public srm_pr_main RerunPr(srm_pr_main pr, List<srm_pr_main> referlist)
|
|
|
+ {
|
|
|
+ //如果当前PR已经关闭,则检查合并数据
|
|
|
+ if (pr.state == 0)
|
|
|
+ {
|
|
|
+ //已关闭,并且没有关联数据,则代表转PO了。
|
|
|
+ var refPr = referlist.Find(s => s.pr_billno == pr.refer_pr_billno);
|
|
|
+ //如果有关联,继续往下查
|
|
|
+ if (refPr != null)
|
|
|
+ {
|
|
|
+ return RerunPr(refPr, referlist);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return pr;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 按未来N天工单齐套检查
|
|
|
/// </summary>
|
|
|
@@ -2747,7 +2822,7 @@ namespace Business.ResourceExamineManagement
|
|
|
new NLogHelper("ResourceExamineAppService").WriteLog("OrderKittingCheck", "工单检查数据更新失败:" + e.Message, _currentTenant.Id.ToString());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//检查结果写入数据库
|
|
|
var b_Examine_Results = ObjectMapper.Map<List<ExamineResult>, List<b_examine_result>>(rtn.examines);
|
|
|
List<b_examine_result> examineList = new List<b_examine_result>();
|