|
|
@@ -300,9 +300,9 @@ namespace Business.ResourceExamineManagement
|
|
|
_srm_po_list = srm_po_list;
|
|
|
_crm_seorder = crm_seorder;
|
|
|
_crm_seorderentry = crm_seorderentry;
|
|
|
- _srm_po_occupy= srm_po_occupy;
|
|
|
- _ic_item_pur= ic_item_pur;
|
|
|
- _ic_plan= ic_plan;
|
|
|
+ _srm_po_occupy = srm_po_occupy;
|
|
|
+ _ic_item_pur = ic_item_pur;
|
|
|
+ _ic_plan = ic_plan;
|
|
|
_ic_substitute = ic_substitute;
|
|
|
_ic_substitute_all = ic_substitute_all;
|
|
|
_ic_substitute_all_dtl = ic_substitute_all_dtl;
|
|
|
@@ -422,21 +422,21 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
//资源检查结果
|
|
|
PschedDto rtn = new PschedDto();
|
|
|
- rtn.sorderid = input.sorderId;
|
|
|
+ rtn.sorderid = input.sorderId;
|
|
|
|
|
|
//生成当前计算bangid
|
|
|
SnowFlake snow = new SnowFlake();
|
|
|
long bangid = snow.NextId();
|
|
|
|
|
|
//获取订单数据
|
|
|
- crm_seorder sorder = _mysql_crm_seorder.GetListAsync(p=>p.tenant_id == input.tenantId && p.factory_id == input.factoryId && p.Id == input.sorderId && p.IsDeleted ==false).Result.FirstOrDefault();
|
|
|
+ crm_seorder sorder = _mysql_crm_seorder.GetListAsync(p => p.tenant_id == input.tenantId && p.factory_id == input.factoryId && p.Id == input.sorderId && p.IsDeleted == false).Result.FirstOrDefault();
|
|
|
if (sorder == null)
|
|
|
{
|
|
|
throw new NotImplementedException("订单数据不存在!");
|
|
|
}
|
|
|
//获取订单行数据
|
|
|
List<crm_seorderentry> sentrys = _mysql_crm_seorderentry.GetListAsync(p => p.tenant_id == input.tenantId && p.factory_id == input.factoryId && p.seorder_id == input.sorderId && p.IsDeleted == false).Result;
|
|
|
-
|
|
|
+
|
|
|
//数据库快照-同步mysql库数据到mongoDB中
|
|
|
await SyncData(input.tenantId, input.factoryId, bangid);
|
|
|
|
|
|
@@ -477,6 +477,8 @@ namespace Business.ResourceExamineManagement
|
|
|
dtl.substitutes = getBomList;
|
|
|
//添加订单行开工信息
|
|
|
examines.Add(dtl);
|
|
|
+ //生成工单 TODO:0=产品数量
|
|
|
+ //GenerateMorder(o, 0);
|
|
|
}
|
|
|
#endregion
|
|
|
//订单行资源检查明细list
|
|
|
@@ -834,7 +836,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="DeliverDate">交付日期</param>
|
|
|
/// <param name="seorderentry_id">销售订单子表ID</param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task GenerateMorder(crm_seorderentry seorderentry, decimal? Quantity)
|
|
|
+ public void GenerateMorder(crm_seorderentry seorderentry, decimal? Quantity)
|
|
|
{
|
|
|
//1.库存、在制工单检查完成后 当前BOM需要自制时 产生工单。
|
|
|
|
|
|
@@ -842,7 +844,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//查询销售订单子表数据
|
|
|
//var seorderentry = await _mysql_crm_seorderentry.FindAsync(x => x.Id == seorderentry_id);
|
|
|
//获取销售订单信息
|
|
|
- var seorder = await _mysql_crm_seorder.FindAsync(x => x.Id == seorderentry.seorder_id);
|
|
|
+ var seorder = _mysql_crm_seorder.FindAsync(x => x.Id == seorderentry.seorder_id).Result;
|
|
|
//物料BOM
|
|
|
// var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number && x.factory_id == seorderentry.factory_id).Result.FirstOrDefault();
|
|
|
|
|
|
@@ -905,8 +907,8 @@ namespace Business.ResourceExamineManagement
|
|
|
mes_Moentry.factory_id = seorderentry.factory_id;
|
|
|
//using (TransactionScope scope = new TransactionScope())
|
|
|
// {
|
|
|
- await _mes_morder.InsertOne(mes_Morder);
|
|
|
- await _mes_moentry.InsertOne(mes_Moentry);
|
|
|
+ _mes_morder.InsertOne(mes_Morder);
|
|
|
+ _mes_moentry.InsertOne(mes_Moentry);
|
|
|
//scope.Complete();
|
|
|
//}
|
|
|
}
|
|
|
@@ -945,13 +947,14 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="DeliverDate">交付日期</param>
|
|
|
/// <param name="seorderentry_id">销售订单子表ID</param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task<bool> CheckMorder(string bomNumber, decimal? Quantity, DateTime DeliverDate, crm_seorderentry seorderentry)
|
|
|
+ public async Task<int> CheckMorder(string bomNumber, decimal? Quantity, DateTime DeliverDate, crm_seorderentry seorderentry)
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(bomNumber) || Quantity == null)
|
|
|
{
|
|
|
//TODO:入参异常;
|
|
|
throw new NotImplementedException("BOM编码或需求数量不能为空!");
|
|
|
}
|
|
|
+ var Number = 0; //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);
|
|
|
@@ -970,6 +973,8 @@ namespace Business.ResourceExamineManagement
|
|
|
//当前工单计划日期-1天 小于交付日期 && 计算生产数量-入库数据并且大于需求产品数量。
|
|
|
var morderDataList = morderList.Where(x => x.planner_end_date.Value.AddDays(-1) < DeliverDate &&
|
|
|
(x.morder_production_number - x.inventory_number) > Quantity).ToList();
|
|
|
+
|
|
|
+
|
|
|
if (morderDataList.Count > 0)
|
|
|
{
|
|
|
//存在此数据满足当前BOM交付找到最早日期工单,则返回无需后续继续检查。
|
|
|
@@ -977,17 +982,12 @@ namespace Business.ResourceExamineManagement
|
|
|
var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == morder.Id).ToList();
|
|
|
var mes_Mooccupy = GetMooccupies(seorderentry, ic_item, morder, mooccupies);
|
|
|
await _mes_mooccupy.InsertOne(mes_Mooccupy);
|
|
|
+ return Number = 1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// 寻找最早日期工单 && 计算生产数量-入库数据并且大于需求产品数量后累加直到满足需求产品数量
|
|
|
var morderListData = morderList.Where(x => x.planner_end_date.Value.AddDays(-1) < DeliverDate).OrderByDescending(x => x.planner_end_date).ToList();
|
|
|
- if (morderListData.Count == 0)
|
|
|
- {
|
|
|
- //TODO:后期处理无在制工单返回内容
|
|
|
- //throw new NotImplementedException("无可用在制工单!");
|
|
|
- return false;
|
|
|
- }
|
|
|
List<mes_mooccupy> mes_Mooccupies = new List<mes_mooccupy>();
|
|
|
decimal? number = Quantity;
|
|
|
foreach (var item in morderListData)
|
|
|
@@ -1002,8 +1002,21 @@ namespace Business.ResourceExamineManagement
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ var morderDatas = morderList.Where(x => x.planner_end_date.Value.AddDays(-1) > DeliverDate &&
|
|
|
+ (x.morder_production_number - x.inventory_number) > Quantity).ToList();
|
|
|
+ if (number > 0)
|
|
|
+ {
|
|
|
+ return Number = 3;
|
|
|
+ }
|
|
|
+ if (morderDatas.Count > 0)
|
|
|
+ {
|
|
|
+ return Number = 2;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return Number = 1;
|
|
|
+ }
|
|
|
}
|
|
|
- return true;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 拼接工单占用表
|
|
|
@@ -1069,7 +1082,7 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
return returnlist;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
var dto = new BomChildExamineDto();
|
|
|
dto.item_id = bom.icitem_id;
|
|
|
dto.bom_id = BomId.Value;
|
|
|
@@ -1107,7 +1120,8 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
item = icitemlist.Where(a => a.Id == bom.icitem_id).FirstOrDefault();
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
item = icitemlist.Where(a => a.Id == dto.item_id).FirstOrDefault();
|
|
|
}
|
|
|
if (item == null)
|
|
|
@@ -1548,7 +1562,8 @@ namespace Business.ResourceExamineManagement
|
|
|
//替代
|
|
|
select = sublist.Where(s => s.type == 0).ToList();
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
//取代
|
|
|
select = sublist.Where(s => s.substitute_all_num == 0).ToList();
|
|
|
}
|
|
|
@@ -1666,7 +1681,8 @@ namespace Business.ResourceExamineManagement
|
|
|
//替代
|
|
|
select = sublist.Where(s => s.type == 0).ToList();
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
//取代
|
|
|
select = sublist.Where(s => s.substitute_all_num == 0).ToList();
|
|
|
}
|