|
|
@@ -3155,9 +3155,7 @@ namespace Business.Replenishment
|
|
|
weekPlan[i].ProductionOrder = morder_noList[i].NbrResult;
|
|
|
weekPlan[i].OrderNO = OrderNOList[i].NbrResult;
|
|
|
}
|
|
|
- await PlanOrderResourceCheck(moList.OrderBy(a=>a.moentry_sys_stime).ToList(), moentryList, bang_id,"",false,false);
|
|
|
-
|
|
|
- var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
|
|
|
+
|
|
|
await _businessDbContext.BulkInsertAsync(moList);
|
|
|
await _businessDbContext.BulkInsertAsync(moentryList);
|
|
|
|
|
|
@@ -3167,16 +3165,14 @@ namespace Business.Replenishment
|
|
|
List<WorkOrdDetail> workOrdDetails = new List<WorkOrdDetail>();
|
|
|
if (moList.Any())
|
|
|
{
|
|
|
- moList.ForEach(s => { s.create_time = DateTime.Now; });
|
|
|
- List<b_bom_child_examine> childExamineList = _mysql_bom_child_examine.GetListAsync(c => examine_resultList.Select(x => x.Id).Contains(c.examine_id.GetValueOrDefault())).Result;
|
|
|
//同步工单
|
|
|
- CreateWorkOrdDates(moList, routingOps, workOrdSave, workOrdRoutingSave, workOrdDetails, examine_resultList, childExamineList);
|
|
|
+ CreateWorkOrdDates(moList, routingOps, workOrdSave, workOrdRoutingSave, workOrdDetails, new List<b_examine_result>(), new List<b_bom_child_examine>());
|
|
|
}
|
|
|
|
|
|
if (workOrdSave.Any())
|
|
|
{
|
|
|
- workOrdSave = CalcPriority(workOrdSave, input.factory_id.ToString());
|
|
|
_businessDbContext.BulkInsert(workOrdSave);
|
|
|
+ CalcPriority(input.factory_id.ToString());
|
|
|
}
|
|
|
var DBworkOrdList = _workOrdMaster.Select(a => workOrdSave.Count > 0 && a.Domain == workOrdSave[0].Domain && workOrdSave.Select(c => c.WorkOrd).Contains(a.WorkOrd));
|
|
|
if (workOrdRoutingSave.Any())
|
|
|
@@ -3195,6 +3191,9 @@ namespace Business.Replenishment
|
|
|
});
|
|
|
_businessDbContext.BulkInsert(workOrdDetails);
|
|
|
}
|
|
|
+ await PlanOrderResourceCheck(moList.OrderBy(a => a.moentry_sys_stime).ToList(), moentryList, bang_id, "", false, false);
|
|
|
+
|
|
|
+ var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
|
|
|
|
|
|
weekPlan.ForEach(a =>
|
|
|
{
|
|
|
@@ -3226,11 +3225,6 @@ namespace Business.Replenishment
|
|
|
a.PackageHours = Packaging == null ? 0 : Packaging.RunTime * a.Qty;
|
|
|
a.TotalHours = a.AssembleHours + a.HeatSealHours + a.PackageHours;
|
|
|
}
|
|
|
- var workOrd = workOrdSave.Find(b => b.WorkOrd == a.ProductionOrder);
|
|
|
- if (workOrd != null)
|
|
|
- {
|
|
|
- a.Priority = workOrd.Priority;
|
|
|
- }
|
|
|
}
|
|
|
});
|
|
|
await _businessDbContext.BulkInsertAsync(weekPlan);
|
|
|
@@ -3319,30 +3313,20 @@ namespace Business.Replenishment
|
|
|
await _businessDbContext.BulkInsertAsync(moList);
|
|
|
await _businessDbContext.BulkInsertAsync(moentryList);
|
|
|
|
|
|
- //2024/01/10:卫亮工单需求对齐采购需求,取所有未下达的工单做资源检查
|
|
|
- var moListCheck=_mysql_mes_morder.GetListAsync(a=>(a.morder_state==MorderEnum.Initial_state|| string.IsNullOrEmpty(a.morder_state)) && a.factory_id == input.factory_id).Result;
|
|
|
- var moEntryListCheck = _mysql_mes_moentry.GetListAsync(a => moListCheck.Select(b=>b.morder_no).ToList().Contains(a.moentry_mono) && a.factory_id == input.factory_id).Result;
|
|
|
-
|
|
|
- await PlanOrderResourceCheck(moListCheck.OrderBy(a => a.moentry_sys_stime).ToList(), moEntryListCheck, bang_id, "",false,true);
|
|
|
-
|
|
|
- var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
|
|
|
-
|
|
|
-
|
|
|
//批量保存 后期考虑子工单
|
|
|
List<WorkOrdMaster> workOrdSave = new List<WorkOrdMaster>();
|
|
|
List<WorkOrdRouting> workOrdRoutingSave = new List<WorkOrdRouting>();
|
|
|
List<WorkOrdDetail> workOrdDetails = new List<WorkOrdDetail>();
|
|
|
if (moList.Any())
|
|
|
{
|
|
|
- List<b_bom_child_examine> childExamineList = _mysql_bom_child_examine.GetListAsync(c => examine_resultList.Select(x => x.Id).Contains(c.examine_id.GetValueOrDefault())).Result;
|
|
|
//同步工单
|
|
|
- CreateWorkOrdDates(moList, routingOps, workOrdSave, workOrdRoutingSave, workOrdDetails, examine_resultList, childExamineList);
|
|
|
+ CreateWorkOrdDates(moList, routingOps, workOrdSave, workOrdRoutingSave, workOrdDetails, new List<b_examine_result>(), new List<b_bom_child_examine>());
|
|
|
}
|
|
|
|
|
|
if (workOrdSave.Any())
|
|
|
{
|
|
|
- workOrdSave = CalcPriority(workOrdSave, input.factory_id.ToString());
|
|
|
_businessDbContext.BulkInsert(workOrdSave);
|
|
|
+ CalcPriority(input.factory_id.ToString());
|
|
|
}
|
|
|
var DBworkOrdList = _workOrdMaster.Select(a => workOrdSave.Count > 0 && a.Domain == workOrdSave[0].Domain && workOrdSave.Select(c => c.WorkOrd).Contains(a.WorkOrd));
|
|
|
if (workOrdRoutingSave.Any())
|
|
|
@@ -3362,6 +3346,14 @@ namespace Business.Replenishment
|
|
|
_businessDbContext.BulkInsert(workOrdDetails);
|
|
|
}
|
|
|
|
|
|
+ //2024/01/10:卫亮工单需求对齐采购需求,取所有未下达的工单做资源检查
|
|
|
+ var moListCheck=_mysql_mes_morder.GetListAsync(a=>(a.morder_state==MorderEnum.Initial_state|| string.IsNullOrEmpty(a.morder_state)) && a.factory_id == input.factory_id).Result;
|
|
|
+ var moEntryListCheck = _mysql_mes_moentry.GetListAsync(a => moListCheck.Select(b=>b.morder_no).ToList().Contains(a.moentry_mono) && a.factory_id == input.factory_id).Result;
|
|
|
+
|
|
|
+ await PlanOrderResourceCheck(moListCheck.OrderBy(a => a.moentry_sys_stime).ToList(), moEntryListCheck, bang_id, "",false,true);
|
|
|
+
|
|
|
+ var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
|
|
|
+
|
|
|
var weekplanList = _replenishmentWeekPlan.GetListAsync(a => moListCheck.Select(b=>b.morder_no).ToList().Contains(a.ProductionOrder) && a.IsReplenishmentModel=="N" && a.factory_id == input.factory_id).Result;
|
|
|
|
|
|
weekplanList.ForEach(a =>
|
|
|
@@ -3392,11 +3384,6 @@ namespace Business.Replenishment
|
|
|
a.PackageHours = Packaging == null ? 0 : Packaging.RunTime * a.Qty;
|
|
|
a.TotalHours = a.AssembleHours + a.HeatSealHours + a.PackageHours;
|
|
|
}
|
|
|
- var workOrd = workOrdSave.Find(b => b.WorkOrd == a.ProductionOrder);
|
|
|
- if (workOrd != null)
|
|
|
- {
|
|
|
- a.Priority = workOrd.Priority;
|
|
|
- }
|
|
|
});
|
|
|
await _businessDbContext.BulkUpdateAsync(weekplanList);
|
|
|
return "OK";
|
|
|
@@ -4397,6 +4384,20 @@ namespace Business.Replenishment
|
|
|
return orderedList;
|
|
|
}
|
|
|
|
|
|
+ //所有未下达的工单按照日期排序计算优先级
|
|
|
+ public void CalcPriority(string domain)
|
|
|
+ {
|
|
|
+ var works = _workOrdMaster.Select(a =>(string.IsNullOrEmpty(a.Status) || a.Status.ToUpper()=="P") && a.Domain == domain && a.IsActive);
|
|
|
+ works = works.OrderBy(a => a.OrdDate).ToList();
|
|
|
+ decimal Priority = 1.0m;
|
|
|
+ for (int i = 0; i < works.Count; i++)
|
|
|
+ {
|
|
|
+ works[i].Priority = Priority;
|
|
|
+ Priority = Priority + 1.0m;
|
|
|
+ }
|
|
|
+ _businessDbContext.BulkUpdate(works);
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 手动调整优先级
|
|
|
/// </summary>
|
|
|
@@ -4599,6 +4600,12 @@ namespace Business.Replenishment
|
|
|
//{
|
|
|
// _businessDbContext.BulkDelete(dellist);
|
|
|
//}
|
|
|
+ //清理工单占用
|
|
|
+ List<mes_mooccupy> mooccupy = await _mysql_mes_mooccupy.GetListAsync(s => Mes_Morders.Select(c => c.Id).Contains(s.moo_id.GetValueOrDefault()));
|
|
|
+ if (mooccupy.Any())
|
|
|
+ {
|
|
|
+ _businessDbContext.BulkDelete(mooccupy);
|
|
|
+ }
|
|
|
//清理掉库存占用
|
|
|
var itemstockoccupy = _mysql_ic_item_stockoccupy.GetListAsync(s => monolist.Contains(s.morder_mo)).Result;
|
|
|
if (itemstockoccupy.Any())
|
|
|
@@ -4891,7 +4898,7 @@ namespace Business.Replenishment
|
|
|
{
|
|
|
//成品虚拟件对应关系
|
|
|
var productOpList = _productStructureOp.Select(x => mo_Mes_Morders.Select(c => c.product_code).Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
|
|
|
- var workOrds = CalcPriority(mo_Mes_Morders.Select(p => p.morder_no).ToList(), param.factoryId.ToString());
|
|
|
+ var workOrds = _workOrdMaster.Select(a => mo_Mes_Morders.Select(p => p.morder_no).ToList().Contains(a.WorkOrd) && a.Domain == param.factoryId.ToString() && a.IsActive);
|
|
|
delWorkOrddetails = _workOrdDetail.Select(x => workOrds.Select(c => c.RecID).Contains((int)x.WorkOrdMasterRecID) && x.Domain == param.factoryId.ToString());
|
|
|
foreach (var workord in mo_Mes_Morders)
|
|
|
{
|
|
|
@@ -5070,8 +5077,8 @@ namespace Business.Replenishment
|
|
|
if (workOrdSave.Any())
|
|
|
{
|
|
|
workOrdSave.ForEach(a => { a.AnalogCalcVersion = analogCalcVersion; });
|
|
|
- workOrdSave = CalcPriority(workOrdSave, input.factoryId.ToString());
|
|
|
_businessDbContext.BulkInsert(workOrdSave);
|
|
|
+ CalcPriority(input.factoryId.ToString());
|
|
|
}
|
|
|
var DBworkOrdList = _workOrdMaster.Select(a => workOrdSave.Count > 0 && a.Domain == workOrdSave[0].Domain && workOrdSave.Select(c => c.WorkOrd).Contains(a.WorkOrd));
|
|
|
if (workOrdRoutingSave.Any())
|