|
|
@@ -233,7 +233,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//同步数据测试方法
|
|
|
//await SyncData();
|
|
|
|
|
|
- await ProductiveExamine(1733221167209762816,100);
|
|
|
+ await ProductiveExamine(1733221167209762816, 100);
|
|
|
return null;
|
|
|
throw new NotImplementedException();
|
|
|
}
|
|
|
@@ -244,7 +244,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <returns></returns>
|
|
|
public async Task SyncData()
|
|
|
{
|
|
|
- var query = _mysql_mes_technique.GetQueryableAsync().Result.ToListAsync().Result;
|
|
|
+ var query = _mysql_mes_technique.GetQueryableAsync().Result.ToListAsync().Result;
|
|
|
await _mes_technique.InsertMany(query);
|
|
|
}
|
|
|
|
|
|
@@ -255,7 +255,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="packages">需要生产产品件数</param>
|
|
|
public async Task<DateTime> ProductiveExamine(long tech_id, int packages)
|
|
|
{
|
|
|
- if (packages <=0)
|
|
|
+ if (packages <= 0)
|
|
|
{
|
|
|
throw new NotImplementedException("产能计算参数有误!");
|
|
|
}
|
|
|
@@ -423,6 +423,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//TODO:获取销售订单信息
|
|
|
//var seorder = await _crm_seorder.FindAsync(x => x.Id == OrderId);
|
|
|
var seorderentry = await _crm_seorderentry.FindAsync(x => x.seorder_id == OrderId);
|
|
|
+ var mysql_ic_item = await _mysql_ic_item.FindAsync(x => x.number == bomNumber);
|
|
|
|
|
|
//工单已被占用后要与占用表关联查询...减去占用量后 剩下生产数量可供下个销售工单使用。
|
|
|
Expression<Func<mes_mooccupy, bool>> mooccupyfilter = x => x.moo_state == 1 && x.IsDeleted == false;
|
|
|
@@ -436,27 +437,8 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
//存在此数据满足当前BOM交付找到最早日期工单,则返回无需后续继续检查。
|
|
|
var morder = morderDataList.OrderByDescending(x => x.planner_end_date).FirstOrDefault();
|
|
|
-
|
|
|
- //生成mes_mooccupy工单占用表数据,代表此工单被某个销售订单已占用。
|
|
|
- mes_mooccupy mes_Mooccupy = new mes_mooccupy();
|
|
|
- mes_Mooccupy.GenerateNewId();
|
|
|
- mes_Mooccupy.moo_id_type = "分配";
|
|
|
- mes_Mooccupy.moo_id_billid = 0;//销售订单ID
|
|
|
- mes_Mooccupy.fbill_no = "0";//销售订单号
|
|
|
- mes_Mooccupy.fentry_id = 0;//销售订单行
|
|
|
- mes_Mooccupy.fitem_name = string.Empty;//物料名称
|
|
|
- mes_Mooccupy.fitem_number = bomNumber;
|
|
|
- mes_Mooccupy.fmodel = string.Empty;//规格型号
|
|
|
- mes_Mooccupy.moo_moid = morder.Id;
|
|
|
- mes_Mooccupy.moo_mo = morder.morder_no;
|
|
|
- mes_Mooccupy.moo_qty = Quantity;
|
|
|
- mes_Mooccupy.moo_stime = DateTime.Now;
|
|
|
- mes_Mooccupy.moo_etime = DateTime.Now;//日期来源需确定
|
|
|
- mes_Mooccupy.moo_state = 1;
|
|
|
- mes_Mooccupy.moo_cbr = string.Empty;
|
|
|
- //mes_Mooccupy.moo_ctime = ;
|
|
|
- mes_Mooccupy.moo_creason = string.Empty;
|
|
|
- mes_Mooccupy.tenant_id = 0;
|
|
|
+ var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == morder.Id).ToList();
|
|
|
+ var mes_Mooccupy = GetMooccupies(seorderentry, mysql_ic_item, morder, mooccupies);
|
|
|
await _mes_mooccupy.InsertOne(mes_Mooccupy);
|
|
|
}
|
|
|
else
|
|
|
@@ -468,34 +450,13 @@ namespace Business.ResourceExamineManagement
|
|
|
//TODO:后期处理无在制工单返回内容
|
|
|
throw new NotImplementedException("无可用在制工单!");
|
|
|
}
|
|
|
- List<mes_morder> mes_Morders = new List<mes_morder>();
|
|
|
List<mes_mooccupy> mes_Mooccupies = new List<mes_mooccupy>();
|
|
|
decimal? number = Quantity;
|
|
|
foreach (var item in morderListData)
|
|
|
{
|
|
|
//查询出工单已占用总数量
|
|
|
- var mes_mooccupy = mes_mooccupyList.Where(x => x.moo_moid == item.Id).ToList();
|
|
|
- //生成mes_mooccupy工单占用表数据,代表多个工单被某个销售订单已占用。
|
|
|
- mes_mooccupy mes_Mooccupy = new mes_mooccupy();
|
|
|
- mes_Mooccupy.GenerateNewId();
|
|
|
- mes_Mooccupy.moo_id_type = "分配";
|
|
|
- mes_Mooccupy.moo_id_billid = seorderentry.seorder_id;//销售订单ID
|
|
|
- mes_Mooccupy.fbill_no = seorderentry.bill_no;//销售订单号
|
|
|
- mes_Mooccupy.fentry_id = seorderentry.entry_seq.Value;//销售订单行
|
|
|
- mes_Mooccupy.fitem_name = string.Empty;//物料名称
|
|
|
- mes_Mooccupy.fitem_number = bomNumber;
|
|
|
- mes_Mooccupy.fmodel = seorderentry.specification;//规格型号
|
|
|
- mes_Mooccupy.moo_moid = item.Id;
|
|
|
- mes_Mooccupy.moo_mo = item.morder_no;
|
|
|
- //占用量=生产计划数量-入库数量-已被占用数量
|
|
|
- mes_Mooccupy.moo_qty = item.morder_production_number - item.inventory_number - mes_mooccupy.Sum(x => x.moo_qty);
|
|
|
- mes_Mooccupy.moo_stime = DateTime.Now;
|
|
|
- mes_Mooccupy.moo_etime = DateTime.Now;//日期来源需确定
|
|
|
- mes_Mooccupy.moo_state = 1;
|
|
|
- mes_Mooccupy.moo_cbr = string.Empty;
|
|
|
- //mes_Mooccupy.moo_ctime = ;
|
|
|
- mes_Mooccupy.moo_creason = string.Empty;
|
|
|
- mes_Mooccupy.tenant_id = 0;
|
|
|
+ var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == item.Id).ToList();
|
|
|
+ var mes_Mooccupy = GetMooccupies(seorderentry, mysql_ic_item, item, mooccupies);
|
|
|
mes_Mooccupies.Add(mes_Mooccupy);
|
|
|
//需求数量-占用量后小于或等于0 停止循环占用工单
|
|
|
if (number - mes_Mooccupy.moo_qty <= 0)
|
|
|
@@ -526,6 +487,44 @@ namespace Business.ResourceExamineManagement
|
|
|
#endregion
|
|
|
}
|
|
|
/// <summary>
|
|
|
+ /// 拼接工单占用表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="seorderentry">销售订单子表</param>
|
|
|
+ /// <param name="mysql_ic_item">物料详情表</param>
|
|
|
+ /// <param name="item">工单表</param>
|
|
|
+ /// <param name="mes_mooccupy">占用工单表</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public mes_mooccupy GetMooccupies(crm_seorderentry seorderentry, ic_item mysql_ic_item, mes_morder item, List<mes_mooccupy> mes_mooccupy)
|
|
|
+ {
|
|
|
+ decimal? Sumqty = 0;
|
|
|
+ if (mes_mooccupy.Count > 0)
|
|
|
+ {
|
|
|
+ Sumqty = mes_mooccupy.Sum(x => x.moo_qty);
|
|
|
+ }
|
|
|
+ //生成mes_mooccupy工单占用表数据,代表多个工单被某个销售订单已占用。
|
|
|
+ mes_mooccupy mes_Mooccupy = new mes_mooccupy();
|
|
|
+ mes_Mooccupy.GenerateNewId();
|
|
|
+ mes_Mooccupy.moo_id_type = "分配";
|
|
|
+ mes_Mooccupy.moo_id_billid = seorderentry.seorder_id;//销售订单ID
|
|
|
+ mes_Mooccupy.fbill_no = seorderentry.bill_no;//销售订单号
|
|
|
+ mes_Mooccupy.fentry_id = seorderentry.entry_seq.Value;//销售订单行
|
|
|
+ mes_Mooccupy.fitem_name = mysql_ic_item.name;//物料名称
|
|
|
+ mes_Mooccupy.fitem_number = mysql_ic_item.number;
|
|
|
+ mes_Mooccupy.fmodel = mysql_ic_item.model;//规格型号
|
|
|
+ mes_Mooccupy.moo_moid = item.Id;
|
|
|
+ mes_Mooccupy.moo_mo = item.morder_no;
|
|
|
+ //占用量=生产计划数量-入库数量-已被占用数量
|
|
|
+ mes_Mooccupy.moo_qty = item.morder_production_number - item.inventory_number - Sumqty;
|
|
|
+ mes_Mooccupy.moo_stime = DateTime.Now;
|
|
|
+ mes_Mooccupy.moo_etime = DateTime.Now;//日期来源需确定
|
|
|
+ mes_Mooccupy.moo_state = 1;
|
|
|
+ mes_Mooccupy.moo_cbr = string.Empty;
|
|
|
+ //mes_Mooccupy.moo_ctime = ;
|
|
|
+ mes_Mooccupy.moo_creason = string.Empty;
|
|
|
+ mes_Mooccupy.tenant_id = 0;
|
|
|
+ return mes_Mooccupy;
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
/// BOM预处理
|
|
|
/// </summary>
|
|
|
/// <param name="orderid"></param>
|