|
|
@@ -165,13 +165,26 @@ namespace Business.ResourceExamineManagement
|
|
|
/// </summary>
|
|
|
private readonly IMongoDB<mes_mooccupy> _mes_mooccupy;
|
|
|
/// <summary>
|
|
|
+ /// mysql在制工单占用表
|
|
|
+ /// </summary>
|
|
|
+ private readonly IRepository<mes_mooccupy, long> _mysql_mes_mooccupy;
|
|
|
+ /// <summary>
|
|
|
/// 销售工单
|
|
|
/// </summary>
|
|
|
- private readonly IRepository<crm_seorder> _mysql_crm_seorder;
|
|
|
+ private readonly IRepository<crm_seorder, long> _mysql_crm_seorder;
|
|
|
/// <summary>
|
|
|
/// 销售工单
|
|
|
/// </summary>
|
|
|
- private readonly IRepository<crm_seorderentry> _mysql_crm_seorderentry;
|
|
|
+ private readonly IRepository<crm_seorderentry, long> _mysql_crm_seorderentry;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 生产工单主表
|
|
|
+ /// </summary>
|
|
|
+ private readonly IRepository<mes_morder, long> _mysql_mes_morder;
|
|
|
+ /// <summary>
|
|
|
+ /// 生产工单子表
|
|
|
+ /// </summary>
|
|
|
+ private readonly IRepository<mes_moentry, long> _mysql_mes_moentry;
|
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -208,7 +221,10 @@ namespace Business.ResourceExamineManagement
|
|
|
IRepository<ic_item_stock, long> mysql_ic_item_stock,
|
|
|
IRepository<ic_factory_details, long> mysql_ic_factory_details,
|
|
|
IRepository<mes_oorder, long> mysql_mes_oorder,
|
|
|
- IRepository<srm_pr_main, long> mysql_srm_pr_main
|
|
|
+ IRepository<srm_pr_main, long> mysql_srm_pr_main,
|
|
|
+ IRepository<mes_mooccupy, long> mysql_mes_mooccupy,
|
|
|
+ IRepository<mes_morder, long> mysql_mes_morder,
|
|
|
+ IRepository<mes_moentry, long> mysql_mes_moentry
|
|
|
|
|
|
|
|
|
)
|
|
|
@@ -222,9 +238,9 @@ namespace Business.ResourceExamineManagement
|
|
|
_ic_bom_child = ic_bom_child;
|
|
|
_ic_item_stock = ic_item_stock;
|
|
|
_ic_check = ic_check;
|
|
|
- _ic_factory_details= ic_factory_details;
|
|
|
- _mes_oorder= mes_oorder;
|
|
|
- _srm_pr_main= srm_pr_main;
|
|
|
+ _ic_factory_details = ic_factory_details;
|
|
|
+ _mes_oorder = mes_oorder;
|
|
|
+ _srm_pr_main = srm_pr_main;
|
|
|
//_ic_substitute = ic_substitute;
|
|
|
//_ic_substitute_all = ic_substitute_all;
|
|
|
//_ic_substitute_all_dtl = ic_substitute_all_dtl;
|
|
|
@@ -239,9 +255,12 @@ namespace Business.ResourceExamineManagement
|
|
|
_mysql_crm_seorderentry = mysql_crm_seorderentry;
|
|
|
_mysql_mes_technique = mysql_mes_technique;
|
|
|
_mysql_ic_item_stock = mysql_ic_item_stock;
|
|
|
- _mysql_ic_factory_details= mysql_ic_factory_details;
|
|
|
- _mysql_mes_oorder= mysql_mes_oorder;
|
|
|
- _mysql_srm_pr_main= mysql_srm_pr_main;
|
|
|
+ _mysql_ic_factory_details = mysql_ic_factory_details;
|
|
|
+ _mysql_mes_oorder = mysql_mes_oorder;
|
|
|
+ _mysql_srm_pr_main = mysql_srm_pr_main;
|
|
|
+ _mysql_mes_mooccupy = mysql_mes_mooccupy;
|
|
|
+ _mysql_mes_morder = mysql_mes_morder;
|
|
|
+ _mysql_mes_moentry = mysql_mes_moentry;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -306,16 +325,16 @@ namespace Business.ResourceExamineManagement
|
|
|
public async Task<PschedDto> ReceiveResult(SeorderentryDto input)
|
|
|
{
|
|
|
//数据库快照-同步mysql库数据到mongoDB中
|
|
|
- //await SyncData(input.factoryId);
|
|
|
+ await SyncData(input.factoryId);
|
|
|
//生成当前计算bangid
|
|
|
//SnowFlake snow = new SnowFlake();
|
|
|
//long bangid = snow.NextId();
|
|
|
-
|
|
|
+
|
|
|
//产能检查
|
|
|
- await ProductiveExamine(1735281284746956800, 1000);
|
|
|
+ // await ProductiveExamine(1735281284746956800, 1000);
|
|
|
//await ProductiveExamine(1733221167209762816, 100);
|
|
|
|
|
|
- await GenerateMorder(14);
|
|
|
+ //await GenerateMorder(14);
|
|
|
return null;
|
|
|
throw new NotImplementedException();
|
|
|
}
|
|
|
@@ -332,8 +351,30 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
await _ic_item_stock.InsertMany(icitemStokc);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+ //物料BOM
|
|
|
+ var icBom = _mysql_ic_bom.GetListAsync(x => x.factory_id == factoryId).Result;
|
|
|
+ if (icBom.Count > 0)
|
|
|
+ {
|
|
|
+ await _ic_bom.InsertMany(icBom);
|
|
|
+ }
|
|
|
+ //在制工单占用记录表
|
|
|
+ var mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => x.factory_id == factoryId).Result;
|
|
|
+ if (mes_mooccupy.Count > 0)
|
|
|
+ {
|
|
|
+ await _mes_mooccupy.InsertMany(mes_mooccupy);
|
|
|
+ }
|
|
|
+ //工单主表
|
|
|
+ var mes_morder = _mysql_mes_morder.GetListAsync(x => x.factory_id == factoryId).Result;
|
|
|
+ if (mes_morder.Count > 0)
|
|
|
+ {
|
|
|
+ await _mes_morder.InsertMany(mes_morder);
|
|
|
+ }
|
|
|
+ //工单子表
|
|
|
+ var mes_moentry = _mysql_mes_moentry.GetListAsync(x => x.factory_id == factoryId).Result;
|
|
|
+ if (mes_moentry.Count > 0)
|
|
|
+ {
|
|
|
+ await _mes_moentry.InsertMany(mes_moentry);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -351,7 +392,8 @@ namespace Business.ResourceExamineManagement
|
|
|
#region 1、数据准备
|
|
|
//1.1、获取工艺路径数据
|
|
|
mes_technique tech = await _mes_technique.GetOneByID(tech_id);
|
|
|
- if (tech == null) {
|
|
|
+ if (tech == null)
|
|
|
+ {
|
|
|
throw new NotImplementedException("请先配置工艺路径!");
|
|
|
}
|
|
|
|
|
|
@@ -366,11 +408,11 @@ namespace Business.ResourceExamineManagement
|
|
|
//FilterDefinition<mes_process> filter = Builders<mes_process>.Filter.In(s => s.Id, tech_Processes.Select(m => m.proc_id).ToList());
|
|
|
//List<mes_process> process = await _mes_process.GetManyByIds(filter);
|
|
|
List<long> procIds = tech_Processes.Select(m => m.proc_id).ToList();
|
|
|
- List<mes_process> process = await _mes_process.GetManyByCondition(p=> procIds.Contains(p.Id));
|
|
|
+ List<mes_process> process = await _mes_process.GetManyByCondition(p => procIds.Contains(p.Id));
|
|
|
|
|
|
//1.3、获取工艺工序关联工位信息
|
|
|
List<long> techProcIds = tech_Processes.Select(m => m.Id).ToList();
|
|
|
- List<mes_tech_proc_workshop> tech_Proc_Workshops = await _mes_tech_proc_workshop.GetManyByCondition(p=> techProcIds.Contains(p.tech_proc_id));
|
|
|
+ List<mes_tech_proc_workshop> tech_Proc_Workshops = await _mes_tech_proc_workshop.GetManyByCondition(p => techProcIds.Contains(p.tech_proc_id));
|
|
|
#endregion
|
|
|
|
|
|
#region 计算产能,得到耗时
|
|
|
@@ -452,11 +494,11 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
//2.每一个销售订单行对应一个工单。
|
|
|
//查询销售订单子表数据
|
|
|
- var seorderentry = _mysql_crm_seorderentry.GetListAsync(x => x.Id == seorderentry_id).Result.FirstOrDefault();
|
|
|
+ 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);
|
|
|
//物料BOM
|
|
|
- var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number && x.tenant_id == seorderentry.tenant_id).Result.FirstOrDefault();
|
|
|
+ var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number && x.factory_id == seorderentry.factory_id).Result.FirstOrDefault();
|
|
|
|
|
|
mes_morder mes_Morder = new mes_morder();
|
|
|
mes_Morder.GenerateNewId();
|
|
|
@@ -479,6 +521,7 @@ namespace Business.ResourceExamineManagement
|
|
|
mes_Morder.morder_need_time = ProductiveDate.Result;
|
|
|
mes_Morder.moentry_startup_status = 0;
|
|
|
mes_Morder.tenant_id = seorderentry.tenant_id;
|
|
|
+ mes_Morder.factory_id = seorderentry.factory_id;
|
|
|
mes_Morder.product_code = seorderentry.item_number;
|
|
|
mes_Morder.product_name = seorderentry.item_name;
|
|
|
mes_Morder.project_name = seorder.project_name;
|
|
|
@@ -508,6 +551,7 @@ namespace Business.ResourceExamineManagement
|
|
|
mes_Moentry.morder_production_number = seorderentry.qty;
|
|
|
mes_Moentry.need_number = seorderentry.qty;
|
|
|
mes_Moentry.remaining_number = 0;
|
|
|
+ mes_Moentry.factory_id = seorderentry.factory_id;
|
|
|
using (TransactionScope scope = new TransactionScope())
|
|
|
{
|
|
|
await _mes_morder.InsertOne(mes_Morder);
|
|
|
@@ -866,7 +910,7 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
//List<BomChildExamineDto> returnlist = new List<BomChildExamineDto>();
|
|
|
var dto = new BomChildExamineDto();
|
|
|
- var bom = bomlist.WhereIf(true,s => s.icitem_id == dtl.icitem_id).FirstOrDefault();
|
|
|
+ var bom = bomlist.WhereIf(true, s => s.icitem_id == dtl.icitem_id).FirstOrDefault();
|
|
|
var icitem = icitemlist.Find(s => s.Id == dtl.icitem_id);
|
|
|
if (icitem == null)
|
|
|
{
|
|
|
@@ -1091,13 +1135,13 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
|
|
|
//根据物料id获取物料3个提前期
|
|
|
- private Task<List<ICItemLeadTimeDto>> GetLeadTime(List<BomChildExamineDto> returnlist,long factoryid)
|
|
|
+ private Task<List<ICItemLeadTimeDto>> GetLeadTime(List<BomChildExamineDto> returnlist, long factoryid)
|
|
|
{
|
|
|
//ToDo:企业Id
|
|
|
ProjectionDefinitionBuilder<ic_factory_details> project = new ProjectionDefinitionBuilder<ic_factory_details>();
|
|
|
return _ic_factory_details.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.factory_id == factoryid,
|
|
|
project.Include(p => p.icitem_id).Include(p => p.production_leadtime).Include(p => p.stock_leadtime).Include(p => p.transportation_leadtime)).Result.
|
|
|
- Select(x => new ICItemLeadTimeDto { item_id = x.icitem_id,transportation_leadtime=x.transportation_leadtime,stock_leadtime=x.stock_leadtime,production_leadtime=x.production_leadtime }).AsQueryable<ICItemLeadTimeDto>().ToListAsync();
|
|
|
+ Select(x => new ICItemLeadTimeDto { item_id = x.icitem_id, transportation_leadtime = x.transportation_leadtime, stock_leadtime = x.stock_leadtime, production_leadtime = x.production_leadtime }).AsQueryable<ICItemLeadTimeDto>().ToListAsync();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -1112,7 +1156,7 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
mes_oorder oOrder = new mes_oorder();
|
|
|
oOrder.GenerateNewId();
|
|
|
- oOrder.oorder_no =getOrderNum("WW");//生产工单编号
|
|
|
+ oOrder.oorder_no = getOrderNum("WW");//生产工单编号
|
|
|
oOrder.oorder_type = "委外工单";//生产工单类型
|
|
|
oOrder.oorder_date = DateTime.Now;//委外订单日期
|
|
|
oOrder.oorder_state = "已提交";//订单状态
|
|
|
@@ -1127,10 +1171,10 @@ namespace Business.ResourceExamineManagement
|
|
|
oOrder.product_code = "产品代码";//产品代码
|
|
|
oOrder.ffms_number = "1000";//fms旧料号
|
|
|
oOrder.product_name = "test";//产品名称
|
|
|
- oOrder.specification_model ="";//规格型号
|
|
|
+ oOrder.specification_model = "";//规格型号
|
|
|
oOrder.bom_number = "";//bom编码
|
|
|
- oOrder.unit ="";//单位
|
|
|
- oOrder.morder_progress ="";//工单进度
|
|
|
+ oOrder.unit = "";//单位
|
|
|
+ oOrder.morder_progress = "";//工单进度
|
|
|
oOrder.morder_production_number = 120;//工单生产数量(计划数量)
|
|
|
oOrder.need_number = 11;//需求数量
|
|
|
oOrder.remaining_number = 11;//剩余可用数量
|
|
|
@@ -1140,14 +1184,14 @@ namespace Business.ResourceExamineManagement
|
|
|
oOrder.inventory_number = 22;//入库数量
|
|
|
oOrder.notice_qty = 22;//已开通知单数量
|
|
|
oOrder.moentry_on = 22;//启动状态
|
|
|
- oOrder.start_time =DateTime.Now;//开始时间
|
|
|
+ oOrder.start_time = DateTime.Now;//开始时间
|
|
|
oOrder.pause_time = DateTime.Now;//最近暂停时间
|
|
|
oOrder.restart_time = DateTime.Now;//最近重启时间
|
|
|
oOrder.project_name = "22";//项目名称
|
|
|
oOrder.sent_status = 22;//发料状态 1-待发料 2-已发料
|
|
|
oOrder.production_unit = "ge";//加工单位
|
|
|
oOrder.production_unit_code = "元";//加工单位编码
|
|
|
- oOrder.need_icitem_status =1;//所需物料是否充足 1-充足 0-缺料
|
|
|
+ oOrder.need_icitem_status = 1;//所需物料是否充足 1-充足 0-缺料
|
|
|
oOderList.Add(oOrder);
|
|
|
}
|
|
|
_mes_oorder.InsertMany(oOderList);
|
|
|
@@ -1160,10 +1204,10 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="returnlist"></param>
|
|
|
/// <param name="factoryid"></param>
|
|
|
/// <param name="orderType">1委外采购申请单,2采购申请单</param>
|
|
|
- private void CreateSRMPR(List<BomChildExamineDto> returnlist, long factoryid,int orderType)
|
|
|
+ private void CreateSRMPR(List<BomChildExamineDto> returnlist, long factoryid, int orderType)
|
|
|
{
|
|
|
- List<srm_pr_main> prList=new List<srm_pr_main>();
|
|
|
- foreach(var item in returnlist)
|
|
|
+ List<srm_pr_main> prList = new List<srm_pr_main>();
|
|
|
+ foreach (var item in returnlist)
|
|
|
{
|
|
|
srm_pr_main srm_Pr = new srm_pr_main();
|
|
|
srm_Pr.GenerateNewId();
|