|
|
@@ -183,14 +183,13 @@ 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,bool flag = true)
|
|
|
+ public async Task<List<mes_mooccupy>> CheckMorder(string bomNumber, decimal Quantity, DateTime DeliverDate, crm_seorderentry seorderentry, ic_item ic_Item, bool flag = true)
|
|
|
{
|
|
|
- if (string.IsNullOrEmpty(bomNumber) || Quantity == null)
|
|
|
+ if (string.IsNullOrEmpty(bomNumber))
|
|
|
{
|
|
|
//TODO:入参异常;
|
|
|
- throw new NotImplementedException("BOM编码或需求数量不能为空!");
|
|
|
+ return null;
|
|
|
}
|
|
|
- var Number = 3; //1,满足,2数量满足,时间不满足,3不满足
|
|
|
//获取销售订单信息
|
|
|
//var seorder = await _crm_seorder.FindAsync(x => x.Id == OrderId);
|
|
|
//var seorderentry = await _mysql_crm_seorderentry.FindAsync(x => x.Id == seorderentry_id);
|
|
|
@@ -204,7 +203,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 +215,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)
|
|
|
{
|
|
|
@@ -270,19 +270,28 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
#endregion
|
|
|
var Sum = item.morder_production_number - item.inventory_number - Sumqty;
|
|
|
- //剩余需要数量= 需要数量 -(计划数量 - 入库数量 - 已占用量)
|
|
|
- Quantity = Quantity - (item.morder_production_number - item.inventory_number - Sumqty);
|
|
|
- var mes_Mooccupy = GetMooccupies(seorderentry, ic_Item, item, Sum);
|
|
|
+ //工单可占用数量-需求数量小于0时 占用工单全部可占用数量
|
|
|
+ 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();
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- if (flag)
|
|
|
+ if (flag && mes_Mooccupies.Count > 0)
|
|
|
{
|
|
|
await _mes_mooccupy.InsertMany(mes_Mooccupies);
|
|
|
}
|
|
|
@@ -372,7 +381,7 @@ namespace Business.ResourceExamineManagement
|
|
|
// }
|
|
|
#endregion
|
|
|
//TODO:返回占用数据,外层每个BOM根据占用工单数据判断是否满足。
|
|
|
- return mes_Mooccupies.OrderByDescending(s=>s.moo_etime).ToList();
|
|
|
+ return mes_Mooccupies.OrderByDescending(s => s.moo_etime).ToList();
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 拼接工单占用表
|