Browse Source

Merge branch 'dev' of http://123.60.180.165:4647/ZZYDOP/DOPCore into dev

tangdi 2 years ago
parent
commit
5fbf850e59

+ 43 - 39
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -3237,7 +3237,7 @@ namespace Business.Replenishment
         }
 
         /// <summary>
-        /// 根据月度计划生成周计划
+        /// 根据周计划生成周工单
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
@@ -3315,19 +3315,24 @@ namespace Business.Replenishment
                 moentryList[i].moentry_mono = morder_noList[i].NbrResult;
                 weekplans[i].ProductionOrder = morder_noList[i].NbrResult;
             }
-            await PlanOrderResourceCheck(moList.OrderBy(a => a.moentry_sys_stime).ToList(), moentryList, bang_id, "",false);
-
-            var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
             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);
+
+            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())
             {
-                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);
@@ -3356,44 +3361,43 @@ namespace Business.Replenishment
                 _businessDbContext.BulkInsert(workOrdDetails);
             }
 
-            weekplans.ForEach(a =>
+            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 =>
             {
-                if (a.IsReplenishmentModel == "N")
+                var moItem = examine_resultList.Find(b => b.morder_no == a.ProductionOrder);
+                List<RoutingOpDetail> routingOp = routingOps.Where(x => x.RoutingCode == a.ItemNumber).ToList();
+                //组装标准工时
+                var Assembly = routingOp.Where(x => x.Ufld1 == "组装" && x.MilestoneOp).FirstOrDefault();
+                //热封标准工时
+                var HeatSealing = routingOp.Where(x => x.Ufld1 == "热封" && x.MilestoneOp).FirstOrDefault();
+                //包装标准工时
+                var Packaging = routingOp.Where(x => x.Descr == "包装" && x.MilestoneOp).FirstOrDefault();
+                if (moItem != null && moItem.kitting_times < a.PlanStartDate)
+                {
+                    a.ItemStatus = "齐套";
+                    a.PlanKittingDate = moItem.kitting_times;
+                    a.AssembleHours = Assembly == null ? 0 : Assembly.RunTime * a.Qty;
+                    a.HeatSealHours = HeatSealing == null ? 0 : HeatSealing.RunTime * a.Qty;
+                    a.PackageHours = Packaging == null ? 0 : Packaging.RunTime * a.Qty;
+                    a.TotalHours = a.AssembleHours + a.HeatSealHours + a.PackageHours;
+                }
+                else
                 {
-                    var moItem = examine_resultList.Find(b => b.morder_no == a.ProductionOrder);
-                    List<RoutingOpDetail> routingOp = routingOps.Where(x => x.RoutingCode == a.ItemNumber).ToList();
-                    //组装标准工时
-                    var Assembly = routingOp.Where(x => x.Ufld1 == "组装" && x.MilestoneOp).FirstOrDefault();
-                    //热封标准工时
-                    var HeatSealing = routingOp.Where(x => x.Ufld1 == "热封" && x.MilestoneOp).FirstOrDefault();
-                    //包装标准工时
-                    var Packaging = routingOp.Where(x => x.Descr == "包装" && x.MilestoneOp).FirstOrDefault();
-                    if (moItem != null && moItem.kitting_times < a.PlanStartDate)
-                    {
-                        a.ItemStatus = "齐套";
-                        a.PlanKittingDate = moItem.kitting_times;
-                        a.AssembleHours = Assembly == null ? 0 : Assembly.RunTime * a.Qty;
-                        a.HeatSealHours = HeatSealing == null ? 0 : HeatSealing.RunTime * a.Qty;
-                        a.PackageHours = Packaging == null ? 0 : Packaging.RunTime * a.Qty;
-                        a.TotalHours = a.AssembleHours + a.HeatSealHours + a.PackageHours;
-                    }
-                    else
-                    {
-                        a.ItemStatus = "欠料";
-                        a.PlanKittingDate = moItem.kitting_times;
-                        a.AssembleHours = Assembly == null ? 0 : Assembly.RunTime * a.Qty;
-                        a.HeatSealHours = HeatSealing == null ? 0 : HeatSealing.RunTime * a.Qty;
-                        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;
-                    }
+                    a.ItemStatus = "欠料";
+                    a.PlanKittingDate = moItem.kitting_times;
+                    a.AssembleHours = Assembly == null ? 0 : Assembly.RunTime * a.Qty;
+                    a.HeatSealHours = HeatSealing == null ? 0 : HeatSealing.RunTime * a.Qty;
+                    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(weekplans);
+            await _businessDbContext.BulkUpdateAsync(weekplanList);
             return "OK";
         }
 

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

@@ -5742,11 +5742,11 @@ namespace Business.ResourceExamineManagement
                 int adddays = weekday==0?1:8-weekday;
                 DateTime beginTime = Convert.ToDateTime(DateTime.Now.AddDays(adddays).ToString("yyyy-MM-dd 00:00:00.000"));
                 DateTime endTime = Convert.ToDateTime(DateTime.Now.AddDays(adddays+21+28+6).ToString("yyyy-MM-dd 23:59:59.999"));
-                var workords=_workOrdMaster.Select(a => a.OrdDate >= beginTime && a.OrdDate <= endTime && a.Domain == domain && a.Status!="C");
+                var workords=_workOrdMaster.Select(a => a.OrdDate >= beginTime && a.OrdDate <= endTime && a.Domain == domain && (string.IsNullOrEmpty(a.Status)|| a.Status.ToUpper()=="P"));
                 var workordList = workords.Select(x => x.WorkOrd).Distinct().ToList();
 
                 //存在提前开工的情况
-                var workordsPickBill = _workOrdMaster.Select(a => a.OrdDate < beginTime && (a.Status=="R"|| a.Status=="W") && a.Domain == domain);
+                var workordsPickBill = _workOrdMaster.Select(a =>(!string.IsNullOrEmpty(a.Status) && a.Status!="C" && a.Status!="P") && a.Domain == domain);
                 var workordListPickBill = workordsPickBill.Select(x => x.WorkOrd).Distinct().ToList();
                 if(workordList.Count>0)
                 {
@@ -5761,7 +5761,7 @@ namespace Business.ResourceExamineManagement
                 //需要测试工单没有做资源检查会不会报错
                 var examineIds = workExamineResult.Select(s => s.examineId).ToList();
                 var examines=_mysql_bom_child_examine.GetListAsync(a => examineIds.Contains(a.examine_id.Value) && (a.erp_cls==3 || a.erp_cls==2) && a.is_use && a.factory_id.ToString() == domain).Result;
-                var pickBills = _nbrDetail.Select(a => workordListPickBill.Contains(a.WorkOrd) && a.Type.ToUpper()=="SM" && (a.QtyOrd - a.QtyRec)>0 && a.Domain == domain);
+                var pickBills = _nbrDetail.Select(a => workordListPickBill.Contains(a.WorkOrd) && a.Type.ToUpper()=="SM" && (a.QtyOrd - a.QtyRec)>0 && a.Domain == domain && a.Status.ToUpper()!="C");
                 var dsList=_srm_polist_ds.Select(a => a.requestdate <= endTime && a.domain==domain && a.isactive==1);
                 var items = examines.Select(e => e.item_number).Distinct().ToList();
                 var itempickbills=pickBills.Select(s => s.ItemNum);