Murphy 2 лет назад
Родитель
Сommit
7d72b079bd

+ 38 - 31
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -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())

+ 3 - 3
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -5083,11 +5083,11 @@ namespace Business.ResourceExamineManagement
                 return "NO|工单【" + input.workord + "】不存在,请联系系统管理员!";
             }
             //计算工单优先级
-            var workInfos = _replenishmentAppService.CalcPriority(workOrds.Select(p => p.WorkOrd).ToList(), input.domain);
+            //var workInfos = _replenishmentAppService.CalcPriority(workOrds.Select(p => p.WorkOrd).ToList(), input.domain);
             workOrds.ForEach(p => {
                 p.OrdDate = p.WorkOrd == input.workord ? input.planDate : p.OrdDate;
                 p.JointTyped = p.WorkOrd == input.workord ? "B" : p.JointTyped;
-                p.Priority = p.WorkOrd == input.workord ? workInfos.First(p => p.WorkOrd == input.workord).Priority : p.Priority;
+                //p.Priority = p.WorkOrd == input.workord ? workInfos.First(p => p.WorkOrd == input.workord).Priority : p.Priority;
             });
             //执行排产
             if (workOrds.Any())
@@ -5096,7 +5096,7 @@ namespace Business.ResourceExamineManagement
             }
             //更新原工单优先级
             WorkOrdMaster workOrd = _workOrdMaster.Select(p => p.IsActive && p.Domain == input.domain && p.WorkOrd == input.workord).FirstOrDefault();
-            workOrd.Priority = workInfos.First(p => p.WorkOrd == workOrd.WorkOrd).Priority;
+            //workOrd.Priority = workInfos.First(p => p.WorkOrd == workOrd.WorkOrd).Priority;
             workOrd.JointTyped = "";
             _workOrdMaster.Update(workOrd);
             return "OK";