zhengly 3 лет назад
Родитель
Сommit
a34af67ff4

+ 15 - 6
MicroServices/Business/Business.Application/ResourceExamineManagement/MorderAppService.cs

@@ -183,7 +183,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="DeliverDate">交付日期</param>
         /// <param name="seorderentry_id">销售订单子表ID</param>
         /// <returns></returns>
-        public async Task<List<mes_mooccupy>> CheckMorder(string bomNumber, decimal? Quantity, DateTime DeliverDate, crm_seorderentry seorderentry, ic_item ic_Item)
+        public async Task<List<mes_mooccupy>> CheckMorder(string bomNumber, decimal Quantity, DateTime DeliverDate, crm_seorderentry seorderentry, ic_item ic_Item)
         {
             if (string.IsNullOrEmpty(bomNumber) || Quantity == null)
             {
@@ -204,7 +204,7 @@ namespace Business.ResourceExamineManagement
 
             //工单已被占用后要与占用表关联查询...减去占用量后 剩下生产数量可供下个销售工单使用。
             var mes_mooccupyList = await _mes_mooccupy.GetManyByCondition(x => x.moo_state == 1 && !x.IsDeleted && x.tenant_id == seorderentry.tenant_id
-            && x.fitem_number == seorderentry.item_number);
+            && x.fitem_number == ic_Item.number);
 
             //首先满足需求数量工单其次判断是否满足交付日期、当数量不满足时继续查找最早交付日期订单 工单数量累加。
             //当前工单计划日期-1天 小于交付日期 && 计算生产数量-入库数据并且大于需求产品数量。
@@ -216,6 +216,7 @@ namespace Business.ResourceExamineManagement
             {
                 morderDataList = morderList.Where(x => x.moentry_sys_etime.GetValueOrDefault().AddDays(-1) < DeliverDate).OrderByDescending(x => x.planner_end_date).ToList();
             }
+            var QuantityNumber = 0.00m;
             //存在此数据满足当前BOM交付找到最早日期工单,则返回无需后续继续检查。
             foreach (var item in morderDataList)
             {
@@ -269,16 +270,24 @@ namespace Business.ResourceExamineManagement
                     //}
 
                     #endregion
-                    var Sum = item.morder_production_number - item.inventory_number - Sumqty;
+                    var Sum = item.morder_production_number - item.inventory_number - Sumqty;//1000 Quantity:1100  //500 
                     //剩余需要数量= 需要数量 -(计划数量 - 入库数量 - 已占用量)
-                    Quantity = Quantity - (item.morder_production_number - item.inventory_number - Sumqty);
-                    var mes_Mooccupy = GetMooccupies(seorderentry, ic_Item, item, Sum);
+                    if (Sum - Quantity < 0)
+                    {
+                        QuantityNumber = Sum.GetValueOrDefault();
+                    }
+                    else
+                    {
+                        QuantityNumber = Quantity;
+                    }
+                    var mes_Mooccupy = GetMooccupies(seorderentry, ic_Item, item, QuantityNumber);
                     mes_Mooccupies.Add(mes_Mooccupy);
                     //当剩余需要数量大于0则继续寻找可占用工单,已满足需要数量停止循环查找
-                    if (Quantity <= 0)
+                    if (Quantity - Sum <= 0)
                     {
                         break;
                     }
+                    Quantity = Quantity - Sum.GetValueOrDefault();
                 }
 
             }