瀏覽代碼

产销协同需求调整

Murphy 2 年之前
父節點
當前提交
a4a42b9609

+ 14 - 4
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -557,7 +557,7 @@ namespace Business.Replenishment
                 decimal ProduceQty = 0.00m;
                 //判断库存是否满足需要,满足则不用生产
                 var num = (locationSum.Value + frontQtySum) - frontYearDemand.Sum(m => m.Qty) + 0 - item.Qty / 2;
-                if (num < 0||pcpl!=0)
+                if (num > 0 && pcpl!=0)
                 {
                     ProduceQty = pcpl * Math.Ceiling((-(locationSum.Value + frontQtySum) + (frontYearDemand.Sum(m => m.Qty) + 0) + item.Qty / 2)/ pcpl);
                 }
@@ -574,12 +574,13 @@ namespace Business.Replenishment
                 annualProductionOutline.Area = item.Area;
                 annualProductionOutline.ProdLine = item.ProdLine;
                 annualProductionOutline.ProdRange = item.ProdRange;
-                if(prodLine == null)
+                if(prodLine == null|| lineMasters.Find(b => b.Line == prodLine.Line)==null)
                 {
                     annualProductionOutline.WorkshopLine ="";
                 }
                 else
                 {
+
                     annualProductionOutline.WorkshopLine = lineMasters.Find(b => b.Line == prodLine.Line).Describe;
                 }
                 
@@ -2705,9 +2706,18 @@ namespace Business.Replenishment
         {
             DateTime nextWeekMonday = getPreWeekStartTime().AddDays(14);
             DateTime next2WeekMonday = getPreWeekStartTime().AddDays(28);
+            //主工单发布,子工单需要一起发布
             var weekPlan = _replenishmentWeekPlan.GetListAsync(a => a.PlanStartDate >= nextWeekMonday && a.PlanStartDate < next2WeekMonday && a.IsReplenishmentModel == "N" && a.ProductionStatus=="").Result.OrderBy(a => a.Priority).ToList();
-            List<WorkOrdMaster> workMasters = _workOrdMaster.Select(a => weekPlan.Select(s => s.ItemNumber).Contains(a.ItemNum) && weekPlan.Select(p => p.ProductionOrder).Contains(a.WorkOrd) && a.Domain == input.factory_id.ToString());
-            List<mes_morder> mes_Morders = _mysql_mes_morder.GetListAsync(a => workMasters.Select(b => b.WorkOrd).ToList().Contains(a.morder_no) && a.factory_id == input.factory_id).Result;
+            List<mes_morder> mes_Morders = _mysql_mes_morder.GetListAsync(a => weekPlan.Select(p => p.ProductionOrder).ToList().Contains(a.morder_no) && a.factory_id == input.factory_id).Result;
+            if(mes_Morders!=null&& mes_Morders.Count>0)
+            {
+                List<mes_morder> mes_Morders_sub=_mysql_mes_morder.GetListAsync(a => mes_Morders.Select(p => p.Id).ToList().Contains(a.parent_id.GetValueOrDefault()) && a.factory_id == input.factory_id).Result;
+                if (mes_Morders_sub != null && mes_Morders_sub.Count > 0)
+                {
+                    mes_Morders.AddRange(mes_Morders_sub);
+                }
+            }
+            List<WorkOrdMaster> workMasters = _workOrdMaster.Select(a => mes_Morders.Select(m=>m.morder_no).ToList().Contains(a.WorkOrd) && a.Domain == input.factory_id.ToString());
             decimal priority = 1;
             for(int i=0;i<weekPlan.Count;i++)
             {