|
|
@@ -45,6 +45,7 @@ using Amazon.Runtime.Internal.Transform;
|
|
|
using System.IO.Compression;
|
|
|
using System.Collections;
|
|
|
using System.Data.SqlTypes;
|
|
|
+using Microsoft.EntityFrameworkCore.Diagnostics;
|
|
|
|
|
|
namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
@@ -336,16 +337,93 @@ namespace Business.ResourceExamineManagement
|
|
|
SnowFlake snow = new SnowFlake();
|
|
|
long bangid = snow.NextId();
|
|
|
|
|
|
+ input.tenantId = 102;
|
|
|
+ input.factoryId = 10201;
|
|
|
+
|
|
|
+ //数据准备
|
|
|
+ //await SaveChangesCompletedEventData()
|
|
|
+
|
|
|
//数据库快照-同步mysql库数据到mongoDB中
|
|
|
- await SyncData(input.tenantId,input.factoryId,bangid);
|
|
|
+ //await SyncData(input.tenantId, input.factoryId, bangid);
|
|
|
|
|
|
//产能检查
|
|
|
- await ProductiveExamine(1353957529328291842, 1000);
|
|
|
-
|
|
|
- //await GenerateMorder(14);
|
|
|
+ //await ProductiveExamine(1353957529328291842, 1000);
|
|
|
+ var id = Save(input.tenantId, input.factoryId);
|
|
|
+ await GenerateMorder(id);
|
|
|
return null;
|
|
|
throw new NotImplementedException();
|
|
|
}
|
|
|
+ public long Save(long tenantId, long factoryId)
|
|
|
+ {
|
|
|
+ //销售订单
|
|
|
+ crm_seorder crm_Seorder = new crm_seorder()
|
|
|
+ {
|
|
|
+ IsDeleted = false,
|
|
|
+ bill_no = "SO201900000020",
|
|
|
+ order_type = 1,
|
|
|
+ trade_type = 1,
|
|
|
+ sale_style = 1,
|
|
|
+ custom_id = 1001,
|
|
|
+ custom_name = "温州正泰电器科技有限公司",
|
|
|
+ custom_no = "01.0098",
|
|
|
+ date = DateTime.Now.Date,
|
|
|
+ currency = 1,
|
|
|
+ exchange_rate = 1,
|
|
|
+ biller = "张晓延",
|
|
|
+ emp_no = "8604",
|
|
|
+ emp_name = "王劲松",
|
|
|
+ auditor = "邹晓燕",
|
|
|
+ audit_date = DateTime.Now.Date,
|
|
|
+ status = 1,
|
|
|
+ closed = true,
|
|
|
+ op_time = DateTime.Now.Date,
|
|
|
+ tenant_id = tenantId,
|
|
|
+ factory_id = factoryId,
|
|
|
+ org_id = tenantId
|
|
|
+ };
|
|
|
+ crm_Seorder.GenerateNewId();
|
|
|
+ crm_seorderentry crm_Seorderentry = new crm_seorderentry()
|
|
|
+ {
|
|
|
+ IsDeleted = false,
|
|
|
+ seorder_id = crm_Seorder.Id,
|
|
|
+ bill_no = "SO201900000020",
|
|
|
+ entry_seq = 1,
|
|
|
+ map_name = "自动转换开关电器",
|
|
|
+ map_number = "L6.733036.5",
|
|
|
+ item_number = "9.1.03.01.0541",
|
|
|
+ item_name = "自动转换开关电器",
|
|
|
+ fms_number = "988123",
|
|
|
+ specification = "FDQ3-RMQ6-63/4JC1R_基本型",
|
|
|
+ bom_number = "BOM00042070",
|
|
|
+ unit = "台",
|
|
|
+ qty = 1000,
|
|
|
+ price = 100,
|
|
|
+ tax_price = 0,
|
|
|
+ amount = 0,
|
|
|
+ tax_rate = 13,
|
|
|
+ discount_amount = 0,
|
|
|
+ discount_rate = 0,
|
|
|
+ aux_price_discount = 70,
|
|
|
+ total_amount = 0,
|
|
|
+ plan_date = DateTime.Parse("2023-04-29 00:00:00"),
|
|
|
+ planner_name = "钱萍萍",
|
|
|
+ planner_no = "9022",
|
|
|
+ state = true,
|
|
|
+ rstate = 0,
|
|
|
+ is_checked = true,
|
|
|
+ deliver_count = 0,
|
|
|
+ deliver_notice_count = 0,
|
|
|
+ tenant_id = tenantId,
|
|
|
+ factory_id = factoryId,
|
|
|
+ org_id = tenantId,
|
|
|
+ };
|
|
|
+ crm_Seorderentry.GenerateNewId();
|
|
|
+
|
|
|
+ _mysql_crm_seorder.InsertAsync(crm_Seorder);
|
|
|
+ _mysql_crm_seorderentry.InsertAsync(crm_Seorderentry);
|
|
|
+
|
|
|
+ return crm_Seorderentry.Id;
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 数据库快照
|
|
|
@@ -358,31 +436,31 @@ namespace Business.ResourceExamineManagement
|
|
|
if (icitemStokc.Count > 0)
|
|
|
{
|
|
|
//设置当前计算bangid
|
|
|
- icitemStokc.ForEach(item => { item.bang_id = bangid; });
|
|
|
+ //icitemStokc.ForEach(item => { item.bang_id = bangid; });
|
|
|
//插入数据
|
|
|
await _ic_item_stock.InsertMany(icitemStokc);
|
|
|
}
|
|
|
- ////在制工单占用记录表
|
|
|
- //var mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
|
|
|
- //if (mes_mooccupy.Count > 0)
|
|
|
- //{
|
|
|
- // mes_mooccupy.ForEach(item => { item.bang_id = bangid; });
|
|
|
- // await _mes_mooccupy.InsertMany(mes_mooccupy);
|
|
|
- //}
|
|
|
- ////工单主表
|
|
|
- //var mes_morder = _mysql_mes_morder.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
|
|
|
- //if (mes_morder.Count > 0)
|
|
|
- //{
|
|
|
- // mes_morder.ForEach(item => { item.bang_id = bangid; });
|
|
|
- // await _mes_morder.InsertMany(mes_morder);
|
|
|
- //}
|
|
|
- ////工单子表
|
|
|
- //var mes_moentry = _mysql_mes_moentry.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
|
|
|
- //if (mes_moentry.Count > 0)
|
|
|
- //{
|
|
|
- // mes_moentry.ForEach(item => { item.bang_id = bangid; });
|
|
|
- // await _mes_moentry.InsertMany(mes_moentry);
|
|
|
- //}
|
|
|
+ //在制工单占用记录表
|
|
|
+ var mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
|
|
|
+ if (mes_mooccupy.Count > 0)
|
|
|
+ {
|
|
|
+ //mes_mooccupy.ForEach(item => { item.bang_id = bangid; });
|
|
|
+ await _mes_mooccupy.InsertMany(mes_mooccupy);
|
|
|
+ }
|
|
|
+ //工单主表
|
|
|
+ var mes_morder = _mysql_mes_morder.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
|
|
|
+ if (mes_morder.Count > 0)
|
|
|
+ {
|
|
|
+ //mes_morder.ForEach(item => { item.bang_id = bangid; });
|
|
|
+ await _mes_morder.InsertMany(mes_morder);
|
|
|
+ }
|
|
|
+ //工单子表
|
|
|
+ var mes_moentry = _mysql_mes_moentry.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
|
|
|
+ if (mes_moentry.Count > 0)
|
|
|
+ {
|
|
|
+ //mes_moentry.ForEach(item => { item.bang_id = bangid; });
|
|
|
+ await _mes_moentry.InsertMany(mes_moentry);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -528,7 +606,9 @@ namespace Business.ResourceExamineManagement
|
|
|
//获取销售订单信息
|
|
|
var seorder = await _mysql_crm_seorder.FindAsync(x => x.Id == seorderentry.seorder_id);
|
|
|
//物料BOM
|
|
|
- var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number && x.factory_id == seorderentry.factory_id).Result.FirstOrDefault();
|
|
|
+ // var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number && x.factory_id == seorderentry.factory_id).Result.FirstOrDefault();
|
|
|
+
|
|
|
+ var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number).Result.FirstOrDefault();
|
|
|
|
|
|
mes_morder mes_Morder = new mes_morder();
|
|
|
mes_Morder.GenerateNewId();
|
|
|
@@ -914,7 +994,8 @@ namespace Business.ResourceExamineManagement
|
|
|
//递归将替代关系组装出来。
|
|
|
SubstitutePretreatment(sl, sal, dtl, item, returnlist, icitemlist, bomlist, bomchildlist, type);
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
//将主料赋值上属性
|
|
|
var dtlitem = returnlist.Find(s => s.item_id == dtl.icitem_id && s.level == item.level);
|
|
|
dtlitem.substitute_all_num = sal.order_num;//群组优先级
|
|
|
@@ -1022,7 +1103,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
public void calcTest(List<BomChildExamineDto> returnlist, long bangid, long orderid)
|
|
|
{
|
|
|
@@ -1092,7 +1173,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
|
|
|
public void calcTest2(BomChildExamineDto parent, List<BomChildExamineDto> bzlist, List<BomChildExamineDto> returnlist, List<ic_item_stockoccupy> sockoccupyList)
|
|
|
{
|
|
|
@@ -1109,7 +1190,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//循环计算群组,看哪个群组满足要求,然后使用此群组,将群组的库存和子物料占用掉。
|
|
|
//计算此次群组是否有符合
|
|
|
MaterialCalc(sublist, returnlist, sockoccupyList);
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1151,13 +1232,15 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
g.kz = Math.Floor(g.sqty / g.qty);//自己不是BOM的情况下,算一下自己可制父级可以制造多少个,这个可制只是基于父级BOM才用来运算。
|
|
|
//todo:申老师说,如果是苏州工厂,原材料有可能也是自制的。
|
|
|
//所以这里在计算时,还可以直接拿缺料数量,去丢给苏州计算方法,得出原材料的库存加可制。
|
|
|
}
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
boolCount++;
|
|
|
}
|
|
|
}
|