|
@@ -792,7 +792,16 @@ namespace Business.ResourceExamineManagement
|
|
|
rtn.item_stockoccupy_list = sklist;
|
|
rtn.item_stockoccupy_list = sklist;
|
|
|
|
|
|
|
|
//检查结果写入数据库
|
|
//检查结果写入数据库
|
|
|
- var b_Examine_Results = ObjectMapper.Map<List<ExamineResult>, List<b_examine_result>>(rtn.examines);
|
|
|
|
|
|
|
+ await ExamineResultInsertDBAsync(rtn.examines);
|
|
|
|
|
+
|
|
|
|
|
+ //清空快照数据
|
|
|
|
|
+ await ClearSnapShot(bangid);
|
|
|
|
|
+ return JsonConvert.SerializeObject("ok");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public async Task ExamineResultInsertDBAsync(List<ExamineResult> examines)
|
|
|
|
|
+ {
|
|
|
|
|
+ //检查结果写入数据库
|
|
|
List<b_examine_result> examineList = new List<b_examine_result>();
|
|
List<b_examine_result> examineList = new List<b_examine_result>();
|
|
|
List<b_bom_child_examine> bomExamineList = new List<b_bom_child_examine>();
|
|
List<b_bom_child_examine> bomExamineList = new List<b_bom_child_examine>();
|
|
|
List<b_mo_occupy> mooccupyList = new List<b_mo_occupy>();
|
|
List<b_mo_occupy> mooccupyList = new List<b_mo_occupy>();
|
|
@@ -801,7 +810,7 @@ namespace Business.ResourceExamineManagement
|
|
|
List<b_purchase> purchaseList = new List<b_purchase>();
|
|
List<b_purchase> purchaseList = new List<b_purchase>();
|
|
|
List<b_purchase_occupy> purchaseoccupyList = new List<b_purchase_occupy>();
|
|
List<b_purchase_occupy> purchaseoccupyList = new List<b_purchase_occupy>();
|
|
|
|
|
|
|
|
- foreach (var ex in rtn.examines)
|
|
|
|
|
|
|
+ foreach (var ex in examines)
|
|
|
{
|
|
{
|
|
|
var b_ex = ObjectMapper.Map<ExamineResult, b_examine_result>(ex);
|
|
var b_ex = ObjectMapper.Map<ExamineResult, b_examine_result>(ex);
|
|
|
b_ex.GenerateNewId(help.NextId());// = help.NextId();
|
|
b_ex.GenerateNewId(help.NextId());// = help.NextId();
|
|
@@ -884,7 +893,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
- using (var unitOfWork = _unitOfWorkManager.Begin(false,true))
|
|
|
|
|
|
|
+ using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
|
|
|
{
|
|
{
|
|
|
try
|
|
try
|
|
|
{
|
|
{
|
|
@@ -916,20 +925,17 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
{
|
|
|
_businessBangDbContext.BulkInsert(purchaseoccupyList);
|
|
_businessBangDbContext.BulkInsert(purchaseoccupyList);
|
|
|
}
|
|
}
|
|
|
- await unitOfWork.CompleteAsync();
|
|
|
|
|
|
|
+ await unitOfWork.CompleteAsync();
|
|
|
}
|
|
}
|
|
|
catch (Exception e)
|
|
catch (Exception e)
|
|
|
{
|
|
{
|
|
|
new NLogHelper("ResourceExamineAppService").WriteLog("ReceiveResult", "资源检查计算结果相关数据更新失败:" + e.Message, _currentTenant.Id.ToString());
|
|
new NLogHelper("ResourceExamineAppService").WriteLog("ReceiveResult", "资源检查计算结果相关数据更新失败:" + e.Message, _currentTenant.Id.ToString());
|
|
|
unitOfWork.Dispose();
|
|
unitOfWork.Dispose();
|
|
|
- return e.Message;
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- //清空快照数据
|
|
|
|
|
- await ClearSnapShot(bangid);
|
|
|
|
|
- return JsonConvert.SerializeObject("ok");
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
//PR手动合并
|
|
//PR手动合并
|
|
|
public async Task<string> PrMerge(string ids)
|
|
public async Task<string> PrMerge(string ids)
|
|
|
{
|
|
{
|
|
@@ -1728,27 +1734,24 @@ namespace Business.ResourceExamineManagement
|
|
|
var mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
var mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
|
if (mes_mooccupy.Count > 0)
|
|
if (mes_mooccupy.Count > 0)
|
|
|
{
|
|
{
|
|
|
- mes_mooccupy.ForEach(item => { item.bang_id = bangid; });
|
|
|
|
|
var moMes_mooccupy = ObjectMapper.Map<List<mes_mooccupy>, List<mo_mes_mooccupy>>(mes_mooccupy);
|
|
var moMes_mooccupy = ObjectMapper.Map<List<mes_mooccupy>, List<mo_mes_mooccupy>>(mes_mooccupy);
|
|
|
- moMes_mooccupy.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
|
|
|
|
+ moMes_mooccupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
await _mes_mooccupy.InsertManyAsync(moMes_mooccupy);
|
|
await _mes_mooccupy.InsertManyAsync(moMes_mooccupy);
|
|
|
}
|
|
}
|
|
|
//工单主表
|
|
//工单主表
|
|
|
var mes_morder = _mysql_mes_morder.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
var mes_morder = _mysql_mes_morder.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
|
if (mes_morder.Count > 0)
|
|
if (mes_morder.Count > 0)
|
|
|
{
|
|
{
|
|
|
- mes_morder.ForEach(item => { item.bang_id = bangid; });
|
|
|
|
|
var moMes_morder = ObjectMapper.Map<List<mes_morder>, List<mo_mes_morder>>(mes_morder);
|
|
var moMes_morder = ObjectMapper.Map<List<mes_morder>, List<mo_mes_morder>>(mes_morder);
|
|
|
- moMes_morder.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
|
|
|
|
+ moMes_morder.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
await _mes_morder.InsertManyAsync(moMes_morder);
|
|
await _mes_morder.InsertManyAsync(moMes_morder);
|
|
|
}
|
|
}
|
|
|
//工单子表
|
|
//工单子表
|
|
|
var mes_moentry = _mysql_mes_moentry.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
var mes_moentry = _mysql_mes_moentry.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
|
if (mes_moentry.Count > 0)
|
|
if (mes_moentry.Count > 0)
|
|
|
{
|
|
{
|
|
|
- mes_moentry.ForEach(item => { item.bang_id = bangid; });
|
|
|
|
|
var moMes_moentry = ObjectMapper.Map<List<mes_moentry>, List<mo_mes_moentry>>(mes_moentry);
|
|
var moMes_moentry = ObjectMapper.Map<List<mes_moentry>, List<mo_mes_moentry>>(mes_moentry);
|
|
|
- moMes_moentry.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
|
|
|
|
+ moMes_moentry.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
await _mes_moentry.InsertManyAsync(moMes_moentry);
|
|
await _mes_moentry.InsertManyAsync(moMes_moentry);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1757,9 +1760,8 @@ namespace Business.ResourceExamineManagement
|
|
|
var srm_po_main = _mysql_srm_po_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
var srm_po_main = _mysql_srm_po_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
|
if (srm_po_main.Count > 0)
|
|
if (srm_po_main.Count > 0)
|
|
|
{
|
|
{
|
|
|
- srm_po_main.ForEach(item => { item.bang_id = bangid; });
|
|
|
|
|
var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main);
|
|
var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main);
|
|
|
- moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
|
|
|
|
+ moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
await _srm_po_main.InsertManyAsync(moSrm_po_main);
|
|
await _srm_po_main.InsertManyAsync(moSrm_po_main);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1767,9 +1769,8 @@ namespace Business.ResourceExamineManagement
|
|
|
var srm_po_list = _mysql_srm_po_list.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
var srm_po_list = _mysql_srm_po_list.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
|
if (srm_po_list.Count > 0)
|
|
if (srm_po_list.Count > 0)
|
|
|
{
|
|
{
|
|
|
- srm_po_list.ForEach(item => { item.bang_id = bangid; });
|
|
|
|
|
var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list);
|
|
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()); });
|
|
|
|
|
|
|
+ moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
await _srm_po_list.InsertManyAsync(moSrm_po_list);
|
|
await _srm_po_list.InsertManyAsync(moSrm_po_list);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1777,9 +1778,8 @@ namespace Business.ResourceExamineManagement
|
|
|
var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
|
if (srm_po_occupy.Count > 0)
|
|
if (srm_po_occupy.Count > 0)
|
|
|
{
|
|
{
|
|
|
- srm_po_occupy.ForEach(item => { item.bang_id = bangid; });
|
|
|
|
|
var moSrm_po_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_po_occupy);
|
|
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()); });
|
|
|
|
|
|
|
+ moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
await _srm_po_occupy.InsertManyAsync(moSrm_po_occupy);
|
|
await _srm_po_occupy.InsertManyAsync(moSrm_po_occupy);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -2184,14 +2184,53 @@ namespace Business.ResourceExamineManagement
|
|
|
Mes_Morders.ForEach(s => { s.moentry_sys_stime = DateTime.Now.Date.AddDays((double)lookDay + 1); });
|
|
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();
|
|
List<string> monolist = Mes_Morders.Select(c => c.morder_no).ToList();
|
|
|
//清理PR的占用。
|
|
//清理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));
|
|
List<srm_po_occupy> occupy = await _mysql_srm_po_occupy.GetListAsync(s => monolist.Contains(s.morder_mo));
|
|
|
_businessDbContext.BulkDelete(occupy);
|
|
_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 {
|
|
else {
|
|
|
return JsonConvert.SerializeObject("未查找到对应的计划工单,请联系管理员。");
|
|
return JsonConvert.SerializeObject("未查找到对应的计划工单,请联系管理员。");
|
|
@@ -2199,6 +2238,42 @@ namespace Business.ResourceExamineManagement
|
|
|
return "ok";
|
|
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>
|
|
/// <summary>
|
|
|
/// 按未来N天工单齐套检查
|
|
/// 按未来N天工单齐套检查
|
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -2701,25 +2776,24 @@ namespace Business.ResourceExamineManagement
|
|
|
morder.moentry_sys_stime = wod.OrdDate;
|
|
morder.moentry_sys_stime = wod.OrdDate;
|
|
|
morder.moentry_sys_etime = wod.DueDate;
|
|
morder.moentry_sys_etime = wod.DueDate;
|
|
|
|
|
|
|
|
- var exa = rtn.examines.Find(s => s.morder_no == wod.WorkOrd);
|
|
|
|
|
- exa.latest_times = morder.moentry_sys_etime.GetValueOrDefault().Date.AddDays(1);
|
|
|
|
|
|
|
+ /*var exa = rtn.examines.Find(s => s.morder_no == wod.WorkOrd);
|
|
|
|
|
+ exa.latest_times = morder.moentry_sys_etime.GetValueOrDefault().Date.AddDays(1);*/
|
|
|
//根据排产后得日期,反推PR。
|
|
//根据排产后得日期,反推PR。
|
|
|
var wkordPrList = prmainlist.Where(s => s.pr_mono == wod.WorkOrd).ToList();
|
|
var wkordPrList = prmainlist.Where(s => s.pr_mono == wod.WorkOrd).ToList();
|
|
|
|
|
|
|
|
- //反算所有的PR,根据时间减去提前期
|
|
|
|
|
|
|
+ //反算所有的PR,根据时间减去提前期 //按最大预处理时间倒排
|
|
|
|
|
+ var moIcitems = icitemlist.Where(s => wkordPrList.Select(c => c.icitem_id).Contains(s.Id)).ToList();
|
|
|
|
|
+ var maxTime = moIcitems.Max(s => s.clean_leadtime.GetValueOrDefault());
|
|
|
wkordPrList.ForEach(pr =>
|
|
wkordPrList.ForEach(pr =>
|
|
|
{
|
|
{
|
|
|
var ts = pr.pr_parrive_date - pr.pr_psend_date;
|
|
var ts = pr.pr_parrive_date - pr.pr_psend_date;
|
|
|
- var icitem = icitemlist.Find(s => s.mysql_id == pr.icitem_id);
|
|
|
|
|
- if (icitem != null)
|
|
|
|
|
|
|
+ //var icitem = icitemlist.Find(s => s.mysql_id == pr.icitem_id);
|
|
|
|
|
+ //var bce = exa.BomChildExamineList.Find(s => s.item_id == pr.icitem_id && s.num == pr.num);
|
|
|
|
|
+ pr.pr_sarrive_date = morder.moentry_sys_stime.Value.AddDays((double)(0 - maxTime - 1));//到货还需要向前推 物料的预处理时间。到货日期必须提前一天到
|
|
|
|
|
+ pr.pr_ssend_date = pr.pr_sarrive_date.GetValueOrDefault().AddDays(0 - ts.Value.Days);
|
|
|
|
|
+ if (pr.pr_ssend_date < DateTime.Now.Date.AddDays(1))
|
|
|
{
|
|
{
|
|
|
- var bce = exa.BomChildExamineList.Find(s => s.item_id == pr.icitem_id && s.num == pr.num);
|
|
|
|
|
- pr.pr_sarrive_date = morder.moentry_sys_stime.Value.AddDays((double)(0 - bce.pre_time.GetValueOrDefault() - 1 - icitem.clean_leadtime.GetValueOrDefault()));//到货还需要向前推 物料的预处理时间。到货日期必须提前一天到
|
|
|
|
|
- pr.pr_ssend_date = pr.pr_sarrive_date.GetValueOrDefault().AddDays(0 - ts.Value.Days);
|
|
|
|
|
- if (pr.pr_ssend_date < DateTime.Now.Date.AddDays(1))
|
|
|
|
|
- {
|
|
|
|
|
- pr.pr_ssend_date = DateTime.Now.Date.AddDays(1);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ pr.pr_ssend_date = DateTime.Now.Date.AddDays(1);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
@@ -2748,141 +2822,9 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //检查结果写入数据库
|
|
|
|
|
- var b_Examine_Results = ObjectMapper.Map<List<ExamineResult>, List<b_examine_result>>(rtn.examines);
|
|
|
|
|
- List<b_examine_result> examineList = new List<b_examine_result>();
|
|
|
|
|
- List<b_bom_child_examine> bomExamineList = new List<b_bom_child_examine>();
|
|
|
|
|
- List<b_mo_occupy> mooccupyList = new List<b_mo_occupy>();
|
|
|
|
|
- List<b_mo_order> moorderList = new List<b_mo_order>();
|
|
|
|
|
- List<b_ooder> ooderList = new List<b_ooder>();
|
|
|
|
|
- List<b_purchase> purchaseList = new List<b_purchase>();
|
|
|
|
|
- List<b_purchase_occupy> purchaseoccupyList = new List<b_purchase_occupy>();
|
|
|
|
|
-
|
|
|
|
|
- foreach (var ex in rtn.examines)
|
|
|
|
|
- {
|
|
|
|
|
- var b_ex = ObjectMapper.Map<ExamineResult, b_examine_result>(ex);
|
|
|
|
|
- b_ex.GenerateNewId(help.NextId());// = help.NextId();
|
|
|
|
|
- if (_CalcBomViewAppService.mordersInsertList.Any())
|
|
|
|
|
- {
|
|
|
|
|
- var moentry = _CalcBomViewAppService.moentriesInsertList.Where(s => s.soentry_id == b_ex.sentry_id).FirstOrDefault();
|
|
|
|
|
- if (moentry != null)
|
|
|
|
|
- {
|
|
|
|
|
- var sentryMo = _CalcBomViewAppService.mordersInsertList.Where(s => s.mysql_id == moentry.moentry_moid).FirstOrDefault();
|
|
|
|
|
- if (sentryMo != null)
|
|
|
|
|
- {
|
|
|
|
|
- b_ex.morder_id = sentryMo.mysql_id;
|
|
|
|
|
- b_ex.morder_no = sentryMo.morder_no;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- b_ex.create_time = DateTime.Now;
|
|
|
|
|
- b_ex.company_id = param.company_id;
|
|
|
|
|
- b_ex.factory_id = param.factoryId;
|
|
|
|
|
- examineList.Add(b_ex);
|
|
|
|
|
- ex.BomChildExamineList.ForEach(s =>
|
|
|
|
|
- {
|
|
|
|
|
- var bc_ex = ObjectMapper.Map<BomChildExamineDto, b_bom_child_examine>(s);
|
|
|
|
|
- bc_ex.GenerateNewId(help.NextId());
|
|
|
|
|
- bc_ex.examine_id = b_ex.Id;
|
|
|
|
|
- bc_ex.company_id = param.company_id;
|
|
|
|
|
- bc_ex.factory_id = param.factoryId;
|
|
|
|
|
- bc_ex.create_time = DateTime.Now;
|
|
|
|
|
- bomExamineList.Add(bc_ex);
|
|
|
|
|
-
|
|
|
|
|
- if (s.mo_occupy_list != null)
|
|
|
|
|
- {
|
|
|
|
|
- var olist = ObjectMapper.Map<List<mo_occupy>, List<b_mo_occupy>>(s.mo_occupy_list);
|
|
|
|
|
- olist.ForEach(o =>
|
|
|
|
|
- {
|
|
|
|
|
- o.bom_child_examine_id = bc_ex.Id; o.company_id = param.company_id;
|
|
|
|
|
- o.factory_id = param.factoryId;
|
|
|
|
|
- });
|
|
|
|
|
- mooccupyList.AddRange(olist);
|
|
|
|
|
- }
|
|
|
|
|
- if (s.make_list != null)
|
|
|
|
|
- {
|
|
|
|
|
- var mlist = ObjectMapper.Map<List<moorder>, List<b_mo_order>>(s.make_list);
|
|
|
|
|
- mlist.ForEach(o =>
|
|
|
|
|
- {
|
|
|
|
|
- o.bom_child_examine_id = bc_ex.Id; o.company_id = param.company_id;
|
|
|
|
|
- o.factory_id = param.factoryId;
|
|
|
|
|
- });
|
|
|
|
|
- moorderList.AddRange(mlist);
|
|
|
|
|
- }
|
|
|
|
|
- if (s.subcontracting_list != null)
|
|
|
|
|
- {
|
|
|
|
|
- var slist = ObjectMapper.Map<List<ooder>, List<b_ooder>>(s.subcontracting_list);
|
|
|
|
|
- slist.ForEach(o =>
|
|
|
|
|
- {
|
|
|
|
|
- o.bom_child_examine_id = bc_ex.Id; o.company_id = param.company_id;
|
|
|
|
|
- o.factory_id = param.factoryId;
|
|
|
|
|
- });
|
|
|
|
|
- ooderList.AddRange(slist);
|
|
|
|
|
- }
|
|
|
|
|
- if (s.purchase_list != null)
|
|
|
|
|
- {
|
|
|
|
|
- var plist = ObjectMapper.Map<List<purchase>, List<b_purchase>>(s.purchase_list);
|
|
|
|
|
- plist.ForEach(o =>
|
|
|
|
|
- {
|
|
|
|
|
- o.bom_child_examine_id = bc_ex.Id; o.company_id = param.company_id;
|
|
|
|
|
- o.factory_id = param.factoryId;
|
|
|
|
|
- });
|
|
|
|
|
- purchaseList.AddRange(plist);
|
|
|
|
|
- }
|
|
|
|
|
- if (s.purchase_occupy_list != null)
|
|
|
|
|
- {
|
|
|
|
|
- var purlist = ObjectMapper.Map<List<purchase_occupy>, List<b_purchase_occupy>>(s.purchase_occupy_list);
|
|
|
|
|
- purlist.ForEach(o =>
|
|
|
|
|
- {
|
|
|
|
|
- o.bom_child_examine_id = bc_ex.Id; o.company_id = param.company_id;
|
|
|
|
|
- o.factory_id = param.factoryId;
|
|
|
|
|
- });
|
|
|
|
|
- purchaseoccupyList.AddRange(purlist);
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
|
|
|
|
|
- {
|
|
|
|
|
- try
|
|
|
|
|
- {
|
|
|
|
|
- if (examineList.Any())
|
|
|
|
|
- {
|
|
|
|
|
- _businessBangDbContext.BulkInsert(examineList);
|
|
|
|
|
- }
|
|
|
|
|
- if (bomExamineList.Any())
|
|
|
|
|
- {
|
|
|
|
|
- _businessBangDbContext.BulkInsert(bomExamineList.OrderBy(s => s.num_order).ToList());
|
|
|
|
|
- }
|
|
|
|
|
- if (mooccupyList.Any())
|
|
|
|
|
- {
|
|
|
|
|
- _businessBangDbContext.BulkInsert(mooccupyList);
|
|
|
|
|
- }
|
|
|
|
|
- if (moorderList.Any())
|
|
|
|
|
- {
|
|
|
|
|
- _businessBangDbContext.BulkInsert(moorderList);
|
|
|
|
|
- }
|
|
|
|
|
- if (ooderList.Any())
|
|
|
|
|
- {
|
|
|
|
|
- _businessBangDbContext.BulkInsert(ooderList);
|
|
|
|
|
- }
|
|
|
|
|
- if (purchaseList.Any())
|
|
|
|
|
- {
|
|
|
|
|
- _businessBangDbContext.BulkInsert(purchaseList);
|
|
|
|
|
- }
|
|
|
|
|
- if (purchaseoccupyList.Any())
|
|
|
|
|
- {
|
|
|
|
|
- _businessBangDbContext.BulkInsert(purchaseoccupyList);
|
|
|
|
|
- }
|
|
|
|
|
- await unitOfWork.CompleteAsync();
|
|
|
|
|
- }
|
|
|
|
|
- catch (Exception e)
|
|
|
|
|
- {
|
|
|
|
|
- new NLogHelper("ResourceExamineAppService").WriteLog("OrderKittingCheck", "工单检查资源检查计算结果数据更新失败:" + e.Message, _currentTenant.Id.ToString());
|
|
|
|
|
- unitOfWork.Dispose();
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ //检查结果写入数据库
|
|
|
|
|
+ await ExamineResultInsertDBAsync(examines);
|
|
|
//清空快照数据
|
|
//清空快照数据
|
|
|
await ClearSnapShot(bangid);
|
|
await ClearSnapShot(bangid);
|
|
|
return rtn;
|
|
return rtn;
|
|
@@ -3082,29 +3024,47 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
{
|
|
|
if (dbPeriodSequences.Any())
|
|
if (dbPeriodSequences.Any())
|
|
|
{
|
|
{
|
|
|
|
|
+ List<string> AllLines = dbPeriodSequences.Where(a => workOrdMasters.Select(b=>b.WorkOrd).Contains(a.WorkOrds)).Select(a => a.Line).Distinct().ToList();
|
|
|
|
|
+ List<LineMaster> AllLineMasters = _lineMaster.Select(p => AllLines.Contains(p.Line) && p.Domain == workOrdMasters[0].Domain && p.IsActive);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
//按照工单领料,一个工单一个领料单,之前是按照排产日期和产线分别领料
|
|
//按照工单领料,一个工单一个领料单,之前是按照排产日期和产线分别领料
|
|
|
foreach (var workord in workOrdMasters)
|
|
foreach (var workord in workOrdMasters)
|
|
|
{
|
|
{
|
|
|
Dictionary<string, decimal> dictItemQty = new Dictionary<string, decimal>();
|
|
Dictionary<string, decimal> dictItemQty = new Dictionary<string, decimal>();
|
|
|
List<string> lines = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).Select(a => a.Line).Distinct().ToList();
|
|
List<string> lines = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).Select(a => a.Line).Distinct().ToList();
|
|
|
- List<LineMaster> lineMasters = _lineMaster.Select(p => lines.Contains(p.Line) && p.Domain == "1001" && p.IsActive);
|
|
|
|
|
|
|
+ List<LineMaster> lineMasters = AllLineMasters.Where(p => lines.Contains(p.Line) && p.Domain == workord.Domain && p.IsActive).ToList();
|
|
|
List<ProductStructureMaster> itemList = GetProductStructure(dbPeriodSequences.First(a => a.WorkOrds == workord.WorkOrd).ItemNum);
|
|
List<ProductStructureMaster> itemList = GetProductStructure(dbPeriodSequences.First(a => a.WorkOrds == workord.WorkOrd).ItemNum);
|
|
|
var childrenList = itemList.Select(a => a.ComponentItem).Distinct().ToList();
|
|
var childrenList = itemList.Select(a => a.ComponentItem).Distinct().ToList();
|
|
|
- List<ItemMaster> itemLocList = _itemMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == "1001" && p.IsActive).Distinct().ToList();
|
|
|
|
|
- List<ItemPackMaster> itemPackList = _itemPackMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == "1001" && p.IsActive).Distinct().ToList();
|
|
|
|
|
|
|
+ List<ItemMaster> itemLocList = _itemMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == workord.Domain && p.IsActive).Distinct().ToList();
|
|
|
|
|
+ var dopIcitems = _ic_item.GetListAsync(s => itemLocList.Select(c => c.ItemNum).Contains(s.number)).Result;
|
|
|
|
|
+ //获取预处理提前期最大值
|
|
|
|
|
+ decimal cleanTime = 0;
|
|
|
|
|
+ if (dopIcitems.Any())
|
|
|
|
|
+ {
|
|
|
|
|
+ cleanTime = dopIcitems.Max(s => s.clean_leadtime.GetValueOrDefault());
|
|
|
|
|
+ }
|
|
|
|
|
+ List<ItemPackMaster> itemPackList = _itemPackMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == workord.Domain && p.IsActive).Distinct().ToList();
|
|
|
var Nbr = GetMaxSerialNumber(417416915624005);
|
|
var Nbr = GetMaxSerialNumber(417416915624005);
|
|
|
//根据某一产线汇总即该工单的总数
|
|
//根据某一产线汇总即该工单的总数
|
|
|
decimal QtyOrdSum = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd && a.Line == lines[0]).Sum(a => a.OrdQty.GetValueOrDefault());
|
|
decimal QtyOrdSum = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd && a.Line == lines[0]).Sum(a => a.OrdQty.GetValueOrDefault());
|
|
|
string LocationTo= lineMasters.FirstOrDefault()?.Location;
|
|
string LocationTo= lineMasters.FirstOrDefault()?.Location;
|
|
|
|
|
+ DateTime eff = workord.OrdDate.GetValueOrDefault().Date.AddDays(-1);
|
|
|
|
|
+ DateTime start = eff.AddDays((double)(0 - cleanTime - 1));
|
|
|
|
|
+ if (start <= DateTime.Now.Date)
|
|
|
|
|
+ {
|
|
|
|
|
+ start = DateTime.Now.Date;
|
|
|
|
|
+ }
|
|
|
nbrMasterList.Add(new NbrMaster
|
|
nbrMasterList.Add(new NbrMaster
|
|
|
{
|
|
{
|
|
|
Domain = "1001",
|
|
Domain = "1001",
|
|
|
Type = "SM",
|
|
Type = "SM",
|
|
|
Nbr = Nbr,
|
|
Nbr = Nbr,
|
|
|
Remark = "下达自动领料",
|
|
Remark = "下达自动领料",
|
|
|
- Date = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).Min(a => a.PlanDate),
|
|
|
|
|
|
|
+ //Date = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).Min(a => a.PlanDate),
|
|
|
//ProdLine = item.Line,
|
|
//ProdLine = item.Line,
|
|
|
- EffDate = workord.OrdDate.GetValueOrDefault().Date.AddDays(-1),
|
|
|
|
|
|
|
+ EffDate = eff,
|
|
|
|
|
+ Date = start,
|
|
|
Status = "",
|
|
Status = "",
|
|
|
WorkOrd = workord.WorkOrd,
|
|
WorkOrd = workord.WorkOrd,
|
|
|
QtyOrd = QtyOrdSum,
|
|
QtyOrd = QtyOrdSum,
|