|
|
@@ -1,19 +1,9 @@
|
|
|
using Business.Core.Enum;
|
|
|
-using Business.Core.MongoDBHelper;
|
|
|
using Business.Core.Utilities;
|
|
|
+using Business.Domain;
|
|
|
using Business.Dto;
|
|
|
using Business.EntityFrameworkCore;
|
|
|
using Business.EntityFrameworkCore.SqlRepositories;
|
|
|
-using Business.Model.Bang;
|
|
|
-using Business.Model.MES.IC;
|
|
|
-using Business.Model.Production;
|
|
|
-using Business.Model.Sale;
|
|
|
-using Business.Model.SRM;
|
|
|
-using Business.Model.Tech;
|
|
|
-using Business.MongoModel.MES.IC;
|
|
|
-using Business.MongoModel.Production;
|
|
|
-using Business.MongoModel.SRM;
|
|
|
-using Business.MongoModel.Tech;
|
|
|
using Business.PriorityManagement;
|
|
|
using Business.ResourceExamineManagement.Dto;
|
|
|
using EFCore.BulkExtensions;
|
|
|
@@ -47,94 +37,94 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <summary>
|
|
|
/// 工艺路径
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_mes_technique> _mes_technique;
|
|
|
+ private readonly IRepository<mo_mes_technique,long> _mes_technique;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工序
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_mes_process> _mes_process;
|
|
|
+ private readonly IRepository<mo_mes_process,long> _mes_process;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工艺关联工序
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_mes_tech_process> _mes_tech_process;
|
|
|
+ private readonly IRepository<mo_mes_tech_process,long> _mes_tech_process;
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工艺工序关联工位
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_mes_tech_proc_workshop> _mes_tech_proc_workshop;
|
|
|
+ private readonly IRepository<mo_mes_tech_proc_workshop,long> _mes_tech_proc_workshop;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 物料占用记录
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_ic_item_stockoccupy> _ic_item_stockoccupy;
|
|
|
+ private readonly IRepository<mo_ic_item_stockoccupy,long> _ic_item_stockoccupy;
|
|
|
private IRepository<ic_item_stockoccupy, long> _mysql_ic_item_stockoccupy;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 物料详情
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_ic_item> _ic_item;
|
|
|
+ private readonly IRepository<mo_ic_item,long> _ic_item;
|
|
|
private IRepository<ic_item, long> _mysql_ic_item;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 物料BOM
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_ic_bom> _ic_bom;
|
|
|
+ private readonly IRepository<mo_ic_bom,long> _ic_bom;
|
|
|
private IRepository<ic_bom, long> _mysql_ic_bom;
|
|
|
/// <summary>
|
|
|
/// 物料BOM明细
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_ic_bom_child> _ic_bom_child;
|
|
|
+ private readonly IRepository<mo_ic_bom_child,long> _ic_bom_child;
|
|
|
private IRepository<ic_bom_child, long> _mysql_ic_bom_child;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 物料库存表
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_ic_item_stock> _ic_item_stock;
|
|
|
+ private readonly IRepository<mo_ic_item_stock,long> _ic_item_stock;
|
|
|
private IRepository<ic_item_stock, long> _mysql_ic_item_stock;
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 物料采购报价单
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_srm_purchase> _srm_purchase;
|
|
|
+ private readonly IRepository<mo_srm_purchase,long> _srm_purchase;
|
|
|
private IRepository<srm_purchase, long> _mysql_srm_purchase;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 采购申请单
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_srm_pr_main> _srm_pr_main;
|
|
|
+ private readonly IRepository<mo_srm_pr_main,long> _srm_pr_main;
|
|
|
private IRepository<srm_pr_main, long> _mysql_srm_pr_main;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 采购订单表
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_srm_po_main> _srm_po_main;
|
|
|
+ private readonly IRepository<mo_srm_po_main,long> _srm_po_main;
|
|
|
private IRepository<srm_po_main, long> _mysql_srm_po_main;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 采购订单明细表
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_srm_po_list> _srm_po_list;
|
|
|
+ private readonly IRepository<mo_srm_po_list,long> _srm_po_list;
|
|
|
private IRepository<srm_po_list, long> _mysql_srm_po_list;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 采购订单占用详情
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_srm_po_occupy> _srm_po_occupy;
|
|
|
+ private readonly IRepository<mo_srm_po_occupy,long> _srm_po_occupy;
|
|
|
private IRepository<srm_po_occupy, long> _mysql_srm_po_occupy;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 供应商
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_srm_supplier> _srm_supplier;
|
|
|
+ private readonly IRepository<mo_srm_supplier,long> _srm_supplier;
|
|
|
private IRepository<srm_supplier, long> _mysql_srm_supplier;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 委外工单
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_mes_oorder> _mes_oorder;
|
|
|
+ private readonly IRepository<mo_mes_oorder,long> _mes_oorder;
|
|
|
private IRepository<mes_oorder, long> _mysql_mes_oorder;
|
|
|
|
|
|
private IRepository<b_bom_pretreatment, long> _mysql_b_bom_pretreatment;
|
|
|
@@ -150,29 +140,29 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <summary>
|
|
|
/// 替代群组
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_ic_substitute> _ic_substitute;
|
|
|
+ private readonly IRepository<mo_ic_substitute,long> _ic_substitute;
|
|
|
/// <summary>
|
|
|
/// 替代群组
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_ic_substitute_group> _ic_substitute_group;
|
|
|
+ private readonly IRepository<mo_ic_substitute_group,long> _ic_substitute_group;
|
|
|
/// <summary>
|
|
|
/// 替代群组
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_ic_substitute_group_detail> _ic_substitute_group_detail;
|
|
|
+ private readonly IRepository<mo_ic_substitute_group_detail,long> _ic_substitute_group_detail;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 生产工单主表
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_mes_morder> _mes_morder;
|
|
|
+ private readonly IRepository<mo_mes_morder,long> _mes_morder;
|
|
|
/// <summary>
|
|
|
/// 生产工单子表
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_mes_moentry> _mes_moentry;
|
|
|
+ private readonly IRepository<mo_mes_moentry,long> _mes_moentry;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 在制工单占用记录表
|
|
|
/// </summary>
|
|
|
- private readonly IMongoDB<mo_mes_mooccupy> _mes_mooccupy;
|
|
|
+ private readonly IRepository<mo_mes_mooccupy,long> _mes_mooccupy;
|
|
|
/// <summary>
|
|
|
/// mysql在制工单占用表
|
|
|
/// </summary>
|
|
|
@@ -210,6 +200,11 @@ namespace Business.ResourceExamineManagement
|
|
|
/// </summary>
|
|
|
private readonly ISqlRepository<PeriodSequenceDet> _periodSequenceDet;
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 排产结果明细
|
|
|
+ /// </summary>
|
|
|
+ private ISqlRepository<ScheduleResultOpMaster> _scheduleResultOpMaster;
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 工作日历
|
|
|
/// </summary>
|
|
|
@@ -343,28 +338,28 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="icitem"></param>
|
|
|
/// <param name="icbom"></param>
|
|
|
public ResourceExamineAppService(
|
|
|
- IMongoDB<mo_mes_technique> mes_technique,
|
|
|
- IMongoDB<mo_mes_process> mes_process,
|
|
|
- IMongoDB<mo_mes_tech_process> mes_tech_process,
|
|
|
- IMongoDB<mo_mes_tech_proc_workshop> mes_tech_proc_workshop,
|
|
|
- IMongoDB<mo_ic_item> ic_item,
|
|
|
- IMongoDB<mo_ic_bom> ic_bom,
|
|
|
- IMongoDB<mo_ic_bom_child> ic_bom_child,
|
|
|
- IMongoDB<mo_ic_item_stock> ic_item_stock,
|
|
|
- IMongoDB<mo_mes_oorder> mes_oorder,
|
|
|
- IMongoDB<mo_srm_pr_main> srm_pr_main,
|
|
|
- IMongoDB<mo_srm_po_main> srm_po_main,
|
|
|
- IMongoDB<mo_srm_po_list> srm_po_list,
|
|
|
- IMongoDB<mo_srm_po_occupy> srm_po_occupy,
|
|
|
- IMongoDB<mo_srm_purchase> srm_purchase,
|
|
|
- IMongoDB<mo_ic_substitute> ic_substitute,
|
|
|
- IMongoDB<mo_ic_substitute_group> ic_substitute_group,
|
|
|
- IMongoDB<mo_ic_substitute_group_detail> ic_substitute_group_detail,
|
|
|
- IMongoDB<mo_mes_morder> mes_morder,
|
|
|
- IMongoDB<mo_mes_moentry> mes_moentry,
|
|
|
- IMongoDB<mo_mes_mooccupy> mes_mooccupy,
|
|
|
- IMongoDB<mo_ic_item_stockoccupy> ic_item_stockoccupy,
|
|
|
- IMongoDB<mo_srm_supplier> srm_supplier,
|
|
|
+ IRepository<mo_mes_technique,long> mes_technique,
|
|
|
+ IRepository<mo_mes_process,long> mes_process,
|
|
|
+ IRepository<mo_mes_tech_process,long> mes_tech_process,
|
|
|
+ IRepository<mo_mes_tech_proc_workshop,long> mes_tech_proc_workshop,
|
|
|
+ IRepository<mo_ic_item,long> ic_item,
|
|
|
+ IRepository<mo_ic_bom,long> ic_bom,
|
|
|
+ IRepository<mo_ic_bom_child,long> ic_bom_child,
|
|
|
+ IRepository<mo_ic_item_stock,long> ic_item_stock,
|
|
|
+ IRepository<mo_mes_oorder,long> mes_oorder,
|
|
|
+ IRepository<mo_srm_pr_main,long> srm_pr_main,
|
|
|
+ IRepository<mo_srm_po_main,long> srm_po_main,
|
|
|
+ IRepository<mo_srm_po_list,long> srm_po_list,
|
|
|
+ IRepository<mo_srm_po_occupy,long> srm_po_occupy,
|
|
|
+ IRepository<mo_srm_purchase,long> srm_purchase,
|
|
|
+ IRepository<mo_ic_substitute,long> ic_substitute,
|
|
|
+ IRepository<mo_ic_substitute_group,long> ic_substitute_group,
|
|
|
+ IRepository<mo_ic_substitute_group_detail,long> ic_substitute_group_detail,
|
|
|
+ IRepository<mo_mes_morder,long> mes_morder,
|
|
|
+ IRepository<mo_mes_moentry,long> mes_moentry,
|
|
|
+ IRepository<mo_mes_mooccupy,long> mes_mooccupy,
|
|
|
+ IRepository<mo_ic_item_stockoccupy,long> ic_item_stockoccupy,
|
|
|
+ IRepository<mo_srm_supplier,long> srm_supplier,
|
|
|
IRepository<ic_item, long> mysql_ic_item,
|
|
|
IRepository<ic_bom, long> mysql_ic_bom,
|
|
|
IRepository<ic_bom_child, long> mysql_ic_bom_child,
|
|
|
@@ -424,6 +419,7 @@ namespace Business.ResourceExamineManagement
|
|
|
ISqlRepository<LocationDetail> locationDetail,
|
|
|
ISqlRepository<ItemPackMaster> itemPackMaster,
|
|
|
ISqlRepository<GeneralizedCodeMaster> generalizedCodeMaster,
|
|
|
+ ISqlRepository<ScheduleResultOpMaster> scheduleResultOpMaster,
|
|
|
IUnitOfWorkManager unitOfWorkManager
|
|
|
)
|
|
|
{
|
|
|
@@ -506,6 +502,7 @@ namespace Business.ResourceExamineManagement
|
|
|
_itemPackMaster = itemPackMaster;
|
|
|
_generalizedCodeMaster = generalizedCodeMaster;
|
|
|
_unitOfWorkManager = unitOfWorkManager;
|
|
|
+ _scheduleResultOpMaster = scheduleResultOpMaster;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
@@ -591,7 +588,7 @@ namespace Business.ResourceExamineManagement
|
|
|
await DeleteMySqlOldData(sentrys);
|
|
|
|
|
|
//通过订单行的产品代码获取物料BOM数据
|
|
|
- List<mo_ic_bom> boms = _ic_bom.Find(p => sentrys.Select(m => m.item_number).Contains(p.item_number) && p.factory_id == input.factoryId && p.tenant_id == input.tenantId && !p.IsDeleted).Result.ToList();
|
|
|
+ List<mo_ic_bom> boms = _ic_bom.GetListAsync(p => sentrys.Select(m => m.item_number).Contains(p.item_number) && p.factory_id == input.factoryId && p.tenant_id == input.tenantId && !p.IsDeleted).Result.ToList();
|
|
|
//物料信息
|
|
|
List<mo_ic_item> icitemlist = new List<mo_ic_item>();
|
|
|
//物料库存表
|
|
|
@@ -739,16 +736,16 @@ namespace Business.ResourceExamineManagement
|
|
|
}*/
|
|
|
if (_CalcBomViewAppService.mordersInsertList.Any())
|
|
|
{
|
|
|
- await _mes_morder.InsertMany(_CalcBomViewAppService.mordersInsertList);
|
|
|
+ await _mes_morder.InsertManyAsync(_CalcBomViewAppService.mordersInsertList);
|
|
|
}
|
|
|
if (prmainlist.Any())
|
|
|
{
|
|
|
- await _srm_pr_main.InsertMany(prmainlist);
|
|
|
+ await _srm_pr_main.InsertManyAsync(prmainlist);
|
|
|
}
|
|
|
if (_CalcBomViewAppService.mooccupyAllInsertList.Any())
|
|
|
{
|
|
|
_CalcBomViewAppService.mooccupyAllInsertList.ForEach(s => { s.tenant_id = param.tenantId; s.factory_id = param.factoryId; });
|
|
|
- await _mes_mooccupy.InsertMany(_CalcBomViewAppService.mooccupyAllInsertList);
|
|
|
+ await _mes_mooccupy.InsertManyAsync(_CalcBomViewAppService.mooccupyAllInsertList);
|
|
|
/*var moOccupy = ObjectMapper.Map<List<mo_mes_mooccupy>, List<mes_mooccupy>>(_CalcBomViewAppService.mooccupyAllInsertList);
|
|
|
_businessDbContext.BulkInsert(moOccupy);*/
|
|
|
rtn.mooccupyAllList = _CalcBomViewAppService.mooccupyAllInsertList;
|
|
|
@@ -756,27 +753,27 @@ namespace Business.ResourceExamineManagement
|
|
|
if (_CalcBomViewAppService.moentriesInsertList.Any())
|
|
|
{
|
|
|
_CalcBomViewAppService.moentriesInsertList.ForEach(s => { s.tenant_id = param.tenantId; s.factory_id = param.factoryId; });
|
|
|
- await _mes_moentry.InsertMany(_CalcBomViewAppService.moentriesInsertList);
|
|
|
+ await _mes_moentry.InsertManyAsync(_CalcBomViewAppService.moentriesInsertList);
|
|
|
/*var mesmoentrys = ObjectMapper.Map<List<mo_mes_moentry>, List<mes_moentry>>(_CalcBomViewAppService.moentriesInsertList);
|
|
|
_businessDbContext.BulkInsert(mesmoentrys);*/
|
|
|
}
|
|
|
if (_CalcBomViewAppService.orderList.Any())
|
|
|
{
|
|
|
_CalcBomViewAppService.orderList.ForEach(s => { s.tenant_id = param.tenantId; s.factory_id = param.factoryId; });
|
|
|
- await _mes_oorder.InsertMany(_CalcBomViewAppService.orderList);
|
|
|
+ await _mes_oorder.InsertManyAsync(_CalcBomViewAppService.orderList);
|
|
|
/*var ooders = ObjectMapper.Map<List<mo_mes_oorder>, List<mes_oorder>>(_CalcBomViewAppService.orderList);
|
|
|
_businessDbContext.BulkInsert(ooders);*/
|
|
|
rtn.order_list = _CalcBomViewAppService.orderList;
|
|
|
}
|
|
|
if (_CalcBomViewAppService.newStockOccList.Any())
|
|
|
{
|
|
|
- _CalcBomViewAppService.newStockOccList.ForEach(s => { s.id = help.NextId(); s.tenant_id = param.tenantId; s.factory_id = param.factoryId; });
|
|
|
- await _ic_item_stockoccupy.InsertMany(_CalcBomViewAppService.newStockOccList);
|
|
|
+ _CalcBomViewAppService.newStockOccList.ForEach(s => {s.GenerateNewId(help.NextId()); s.tenant_id = param.tenantId; s.factory_id = param.factoryId; });
|
|
|
+ await _ic_item_stockoccupy.InsertManyAsync(_CalcBomViewAppService.newStockOccList);
|
|
|
}
|
|
|
if (_CalcBomViewAppService.srm_Po_OccupiesInsert.Any())
|
|
|
{
|
|
|
_CalcBomViewAppService.srm_Po_OccupiesInsert.ForEach(s => { s.tenant_id = param.tenantId; s.factory_id = param.factoryId; });
|
|
|
- await _srm_po_occupy.InsertMany(_CalcBomViewAppService.srm_Po_OccupiesInsert);
|
|
|
+ await _srm_po_occupy.InsertManyAsync(_CalcBomViewAppService.srm_Po_OccupiesInsert);
|
|
|
/*var poOccupies = ObjectMapper.Map<List<mo_srm_po_occupy>, List<srm_po_occupy>>(_CalcBomViewAppService.srm_Po_OccupiesInsert);
|
|
|
_businessDbContext.BulkInsert(poOccupies);*/
|
|
|
}
|
|
|
@@ -979,6 +976,7 @@ namespace Business.ResourceExamineManagement
|
|
|
srm_Pr.pr_rqty = prlist.Sum(s => s.pr_rqty);//需求数量
|
|
|
srm_Pr.pr_aqty = prlist.Sum(s => s.pr_aqty);//申请数量
|
|
|
srm_Pr.pr_sqty = prlist.Sum(s => s.pr_sqty);//建议数量
|
|
|
+ srm_Pr.pr_ssend_date= prlist.Min(s => s.pr_ssend_date);//系统建议下单日期
|
|
|
srm_Pr.pr_sarrive_date = prlist.Min(s => s.pr_sarrive_date);//系统建议到达日期(建议到货日期)
|
|
|
srm_Pr.pr_psend_date = prlist.Min(s => s.pr_psend_date);//计划下单日期
|
|
|
srm_Pr.pr_parrive_date = prlist.Min(s => s.pr_parrive_date);//计划到达日期
|
|
|
@@ -1027,8 +1025,8 @@ namespace Business.ResourceExamineManagement
|
|
|
//List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.state == 1 || s.state == 2).Result;
|
|
|
//直接按间隔多少天一次来处理数据,定时任务按周四来考虑。
|
|
|
DateTime toTime = new DateTime(2023, 7, 6);
|
|
|
- DateTime starttime = toTime.AddDays(1);
|
|
|
- DateTime endtime = toTime.AddDays(8);
|
|
|
+ DateTime starttime = toTime.Date.AddDays(8);
|
|
|
+ DateTime endtime = toTime.Date.AddDays(14);
|
|
|
List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.pr_rarrive_date >= starttime && s.pr_rarrive_date <= endtime && (s.state == 1 || s.state == 3)).Result;
|
|
|
//List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.icitem_id == 1949).Result;
|
|
|
//List<srm_purchase> purchaselist = _mysql_srm_purchase.GetListAsync(s => prlist.Select(c => c.icitem_id).Contains(s.icitem_id) && prlist.Select(c => c.pr_purchaseid).Contains(s.supplier_id)).Result;
|
|
|
@@ -1456,8 +1454,8 @@ namespace Business.ResourceExamineManagement
|
|
|
List<long> seIds = sentrys.Select(s => s.Id).ToList();
|
|
|
|
|
|
//找到当前计算周期里工单
|
|
|
- List<mo_mes_moentry> moentry = _mes_moentry.GetManyByCondition(x => seIds.Contains(x.soentry_id.Value)).Result;
|
|
|
- List<mo_mes_morder> mordersList = _mes_morder.GetManyByCondition(x => moentry.Select(p => p.moentry_moid).ToList().Contains(x.mysql_id)).Result;
|
|
|
+ List<mo_mes_moentry> moentry = _mes_moentry.GetListAsync(x => seIds.Contains(x.soentry_id.Value)).Result;
|
|
|
+ List<mo_mes_morder> mordersList = _mes_morder.GetListAsync(x => moentry.Select(p => p.moentry_moid).ToList().Contains(x.mysql_id)).Result;
|
|
|
|
|
|
List<mo_mes_moentry> WriteMoentry = new List<mo_mes_moentry>();
|
|
|
List<mo_mes_morder> WriteMorder = new List<mo_mes_morder>();
|
|
|
@@ -1517,12 +1515,12 @@ namespace Business.ResourceExamineManagement
|
|
|
CreateWorkOrdDates(moderlist, allRoutings, workOrds, workOrdRoutings, workOrdDetails);
|
|
|
}
|
|
|
//当前订单号所关联的最新计算结果里的占用记录
|
|
|
- List<mo_mes_mooccupy> mooccupyList = await _mes_mooccupy.GetManyByCondition(s => seIds.Contains(s.moo_id_billid.Value) && bangidList.Contains(s.bang_id.Value));
|
|
|
+ List<mo_mes_mooccupy> mooccupyList = await _mes_mooccupy.GetListAsync(s => seIds.Contains(s.moo_id_billid.Value) && bangidList.Contains(s.bang_id.Value));
|
|
|
//委外工单计算记录
|
|
|
- List<mo_mes_oorder> oorderList = await _mes_oorder.GetManyByCondition(s => seIds.Contains(s.sentry_id.Value) && bangidList.Contains(s.bang_id.Value));
|
|
|
+ List<mo_mes_oorder> oorderList = await _mes_oorder.GetListAsync(s => seIds.Contains(s.sentry_id.Value) && bangidList.Contains(s.bang_id.Value));
|
|
|
//PO占用记录
|
|
|
- List<mo_srm_po_occupy> po_occupy = await _srm_po_occupy.GetManyByCondition(s => seIds.Contains(s.eid.Value) && bangidList.Contains(s.bang_id.Value));
|
|
|
- List<mo_srm_pr_main> prmainlist = await _srm_pr_main.GetManyByCondition(s => seIds.Contains(s.sentry_id.Value) && bangidList.Contains(s.bang_id.Value));
|
|
|
+ List<mo_srm_po_occupy> po_occupy = await _srm_po_occupy.GetListAsync(s => seIds.Contains(s.eid.Value) && bangidList.Contains(s.bang_id.Value));
|
|
|
+ List<mo_srm_pr_main> prmainlist = await _srm_pr_main.GetListAsync(s => seIds.Contains(s.sentry_id.Value) && bangidList.Contains(s.bang_id.Value));
|
|
|
|
|
|
using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
|
|
|
{
|
|
|
@@ -1593,28 +1591,28 @@ namespace Business.ResourceExamineManagement
|
|
|
return "ok";
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 通过ic_bom获取工艺路径数据
|
|
|
- /// </summary>
|
|
|
- /// <param name="ic_Boms"></param>
|
|
|
- /// <returns></returns>
|
|
|
- public List<mo_mes_technique> GetMesTechniques(List<mo_ic_bom> ic_Boms)
|
|
|
- {
|
|
|
- List<mo_mes_technique> techniques = new List<mo_mes_technique>();
|
|
|
- var builder = Builders<mo_mes_technique>.Filter;
|
|
|
- var filters = new List<FilterDefinition<mo_mes_technique>>();
|
|
|
- ic_Boms?.ForEach(item =>
|
|
|
- {
|
|
|
- var filter = builder.Eq(x => x.bom, item.bom_number)
|
|
|
- & builder.Eq(x => x.bomver, item.version)
|
|
|
- & builder.Eq(x => x.tenant_id, param.tenantId)
|
|
|
- & builder.Eq(x => x.factory_id, param.factoryId)
|
|
|
- & builder.Eq(x => x.IsDeleted, false);
|
|
|
- filters.Add(filter);
|
|
|
- });
|
|
|
- techniques = _mes_technique.Find(builder.Or(filters)).Result;
|
|
|
- return techniques;
|
|
|
- }
|
|
|
+ ///// <summary>
|
|
|
+ ///// 通过ic_bom获取工艺路径数据
|
|
|
+ ///// </summary>
|
|
|
+ ///// <param name="ic_Boms"></param>
|
|
|
+ ///// <returns></returns>
|
|
|
+ //public List<mo_mes_technique> GetMesTechniques(List<mo_ic_bom> ic_Boms)
|
|
|
+ //{
|
|
|
+ // List<mo_mes_technique> techniques = new List<mo_mes_technique>();
|
|
|
+ // var builder = Builders<mo_mes_technique>.Filter;
|
|
|
+ // var filters = new List<FilterDefinition<mo_mes_technique>>();
|
|
|
+ // ic_Boms?.ForEach(item =>
|
|
|
+ // {
|
|
|
+ // var filter = builder.Eq(x => x.bom, item.bom_number)
|
|
|
+ // & builder.Eq(x => x.bomver, item.version)
|
|
|
+ // & builder.Eq(x => x.tenant_id, param.tenantId)
|
|
|
+ // & builder.Eq(x => x.factory_id, param.factoryId)
|
|
|
+ // & builder.Eq(x => x.IsDeleted, false);
|
|
|
+ // filters.Add(filter);
|
|
|
+ // });
|
|
|
+ // techniques = _mes_technique.Find(builder.Or(filters)).Result;
|
|
|
+ // return techniques;
|
|
|
+ //}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 递归:获取icbom,icbomchild数据
|
|
|
@@ -1638,7 +1636,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
//获取物料bom明细数据
|
|
|
//List<mo_ic_bom_child> childList = _ic_bom_child.GetManyByCondition(p => icBoms.Select(m => m.mysql_id).Contains(p.bom_id) && p.use_status == 1 && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
|
|
|
- List<mo_ic_bom_child> childList = _ic_bom_child.GetManyByCondition(p => icBoms.Select(m => m.mysql_id).Contains(p.bom_id) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
|
|
|
+ List<mo_ic_bom_child> childList = _ic_bom_child.GetListAsync(p => icBoms.Select(m => m.mysql_id).Contains(p.bom_id) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
|
|
|
//没有明细数据,终止
|
|
|
if (childList.Count == 0)
|
|
|
{
|
|
|
@@ -1652,7 +1650,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
}
|
|
|
//通过物料bom明细数据反查物料bom数据
|
|
|
- var boms = _ic_bom.GetManyByCondition(p => childList.Select(m => m.icitem_id).ToList().Contains(p.icitem_id) && p.use_status == 1 && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
|
|
|
+ var boms = _ic_bom.GetListAsync(p => childList.Select(m => m.icitem_id).ToList().Contains(p.icitem_id) && p.use_status == 1 && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
|
|
|
foreach (var chd in childList)
|
|
|
{
|
|
|
var curBoms = boms.Where(p => p.icitem_id == chd.icitem_id).ToList();
|
|
|
@@ -1723,9 +1721,9 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
});
|
|
|
var moIcitemStokc = ObjectMapper.Map<List<ic_item_stock>, List<mo_ic_item_stock>>(icitemStokc);
|
|
|
- moIcitemStokc.ForEach(item => { item.id = help.NextId(); });
|
|
|
+ moIcitemStokc.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
//插入数据
|
|
|
- await _ic_item_stock.InsertMany(moIcitemStokc);
|
|
|
+ await _ic_item_stock.InsertManyAsync(moIcitemStokc);
|
|
|
}
|
|
|
//在制工单占用记录表
|
|
|
var mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
|
|
|
@@ -1733,8 +1731,8 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
mes_mooccupy.ForEach(item => { item.bang_id = bangid; });
|
|
|
var moMes_mooccupy = ObjectMapper.Map<List<mes_mooccupy>, List<mo_mes_mooccupy>>(mes_mooccupy);
|
|
|
- moMes_mooccupy.ForEach(item => { item.id = help.NextId(); });
|
|
|
- await _mes_mooccupy.InsertMany(moMes_mooccupy);
|
|
|
+ moMes_mooccupy.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
+ await _mes_mooccupy.InsertManyAsync(moMes_mooccupy);
|
|
|
}
|
|
|
//工单主表
|
|
|
var mes_morder = _mysql_mes_morder.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
|
|
|
@@ -1742,8 +1740,8 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
mes_morder.ForEach(item => { item.bang_id = bangid; });
|
|
|
var moMes_morder = ObjectMapper.Map<List<mes_morder>, List<mo_mes_morder>>(mes_morder);
|
|
|
- moMes_morder.ForEach(item => { item.id = help.NextId(); });
|
|
|
- await _mes_morder.InsertMany(moMes_morder);
|
|
|
+ moMes_morder.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
+ await _mes_morder.InsertManyAsync(moMes_morder);
|
|
|
}
|
|
|
//工单子表
|
|
|
var mes_moentry = _mysql_mes_moentry.GetListAsync(x => x.tenant_id == tenantId && x.factory_id == factoryId).Result;
|
|
|
@@ -1751,8 +1749,8 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
mes_moentry.ForEach(item => { item.bang_id = bangid; });
|
|
|
var moMes_moentry = ObjectMapper.Map<List<mes_moentry>, List<mo_mes_moentry>>(mes_moentry);
|
|
|
- moMes_moentry.ForEach(item => { item.id = help.NextId(); });
|
|
|
- await _mes_moentry.InsertMany(moMes_moentry);
|
|
|
+ moMes_moentry.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
+ await _mes_moentry.InsertManyAsync(moMes_moentry);
|
|
|
}
|
|
|
|
|
|
//TODO:要不要根据某些条件只同步有效的数据
|
|
|
@@ -1762,8 +1760,8 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
srm_po_main.ForEach(item => { item.bang_id = bangid; });
|
|
|
var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main);
|
|
|
- moSrm_po_main.ForEach(item => { item.id = help.NextId(); });
|
|
|
- await _srm_po_main.InsertMany(moSrm_po_main);
|
|
|
+ moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
+ await _srm_po_main.InsertManyAsync(moSrm_po_main);
|
|
|
}
|
|
|
|
|
|
//采购订单明细
|
|
|
@@ -1772,8 +1770,8 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
srm_po_list.ForEach(item => { item.bang_id = bangid; });
|
|
|
var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list);
|
|
|
- moSrm_po_list.ForEach(item => { item.id = help.NextId(); });
|
|
|
- await _srm_po_list.InsertMany(moSrm_po_list);
|
|
|
+ moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
+ await _srm_po_list.InsertManyAsync(moSrm_po_list);
|
|
|
}
|
|
|
|
|
|
//采购订单占用详情
|
|
|
@@ -1782,8 +1780,8 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
srm_po_occupy.ForEach(item => { item.bang_id = bangid; });
|
|
|
var moSrm_po_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_po_occupy);
|
|
|
- moSrm_po_occupy.ForEach(item => { item.id = help.NextId(); });
|
|
|
- await _srm_po_occupy.InsertMany(moSrm_po_occupy);
|
|
|
+ moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); });
|
|
|
+ await _srm_po_occupy.InsertManyAsync(moSrm_po_occupy);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1794,10 +1792,10 @@ namespace Business.ResourceExamineManagement
|
|
|
public async Task ClearSnapShot(long bangid)
|
|
|
{
|
|
|
//清除物料库存数据
|
|
|
- await _ic_item_stock.Delete(p => p.bang_id == bangid);
|
|
|
+ await _ic_item_stock.DeleteAsync(p => p.bang_id == bangid);
|
|
|
|
|
|
//清除工单占用记录表
|
|
|
- await _mes_mooccupy.Delete(p => p.bang_id == bangid);
|
|
|
+ await _mes_mooccupy.DeleteAsync(p => p.bang_id == bangid);
|
|
|
|
|
|
//清除工单主表
|
|
|
//await _mes_morder.Delete(p => p.bang_id == bangid);
|
|
|
@@ -1806,13 +1804,13 @@ namespace Business.ResourceExamineManagement
|
|
|
//await _mes_moentry.Delete(p => p.bang_id == bangid);
|
|
|
|
|
|
//清除采购订单
|
|
|
- await _srm_po_main.Delete(p => p.bang_id == bangid);
|
|
|
+ await _srm_po_main.DeleteAsync(p => p.bang_id == bangid);
|
|
|
|
|
|
//清除采购订单明细
|
|
|
- await _srm_po_list.Delete(p => p.bang_id == bangid);
|
|
|
+ await _srm_po_list.DeleteAsync(p => p.bang_id == bangid);
|
|
|
|
|
|
//清除采购订单占用详情
|
|
|
- await _srm_po_occupy.Delete(p => p.bang_id == bangid);
|
|
|
+ await _srm_po_occupy.DeleteAsync(p => p.bang_id == bangid);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -1842,7 +1840,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//根据物料id获取物料供应商
|
|
|
private List<mo_srm_purchase> GetSupplier(List<long> icItemIds, long tenantId, long factoryid)
|
|
|
{
|
|
|
- return _srm_purchase.Find(p => icItemIds.Contains(p.icitem_id) && p.tenant_id == tenantId && p.factory_id == factoryid && !p.IsDeleted).Result;
|
|
|
+ return _srm_purchase.GetListAsync(p => icItemIds.Contains(p.icitem_id) && p.tenant_id == tenantId && p.factory_id == factoryid && !p.IsDeleted).Result;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -2149,21 +2147,33 @@ namespace Business.ResourceExamineManagement
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
- public async Task<string> PlanOrderResourceCheck(string workOrd)
|
|
|
+ public async Task<string> PlanOrderResourceCheck()
|
|
|
{
|
|
|
- List<string> workOrds = workOrd.Split(",").ToList();
|
|
|
+ /*List<string> workOrds = workOrd.Split(",").ToList();
|
|
|
if (workOrds.Count == 0)
|
|
|
{
|
|
|
return "";
|
|
|
- }
|
|
|
- List<mes_morder> mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => workOrds.Contains(x.morder_no)).Result;
|
|
|
- if (mo_Mes_Morders.Any())
|
|
|
+ }*/
|
|
|
+ List<mes_morder> Mes_Morders = _mysql_mes_morder.GetListAsync(x => x.morder_type == "计划工单").Result;
|
|
|
+ //先排除锁定期内的工单 //优先级排序
|
|
|
+ DateTime lookTime = DateTime.Now.Date.AddDays((double)8);
|
|
|
+ Mes_Morders = Mes_Morders.Where(s => s.moentry_sys_stime > lookTime).OrderBy(s => s.moentry_sys_stime).ToList();
|
|
|
+
|
|
|
+ if (Mes_Morders.Any())
|
|
|
{
|
|
|
+ List<string> monolist = Mes_Morders.Select(c => c.morder_no).ToList();
|
|
|
+ //清理PR的占用。
|
|
|
+ List<srm_po_occupy> occupy = await _mysql_srm_po_occupy.GetListAsync(s => monolist.Contains(s.morder_mo));
|
|
|
+ _businessDbContext.BulkDelete(occupy);
|
|
|
+
|
|
|
+ //清理锁定期外的排程数据
|
|
|
+ _periodSequenceDet.Delete(s => monolist.Contains(s.WorkOrds));
|
|
|
+ _scheduleResultOpMaster.Delete(s => monolist.Contains(s.WorkOrd));
|
|
|
//只走计划工单
|
|
|
- await OrderKittingCheck(mo_Mes_Morders, true);
|
|
|
+ await OrderKittingCheck(Mes_Morders, true);
|
|
|
}
|
|
|
else {
|
|
|
- JsonConvert.SerializeObject("未查找到对应的计划工单,请联系管理员。");
|
|
|
+ return JsonConvert.SerializeObject("未查找到对应的计划工单,请联系管理员。");
|
|
|
}
|
|
|
return JsonConvert.SerializeObject("ok");
|
|
|
}
|
|
|
@@ -2187,7 +2197,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => x.start_time > DateTime.Now.Date.AddDays(1) && x.start_time < DateTime.Now.Date.AddDays(day) && x.morder_state != MorderEnum.Accomplish_state && !x.IsDeleted).Result;
|
|
|
+ mo_Mes_Morders = _mysql_mes_morder.GetListAsync(x => x.start_time > DateTime.Now.Date.AddDays(1) && x.start_time < DateTime.Now.Date.AddDays(day) && x.morder_state == MorderEnum.Xd_state && !x.IsDeleted).Result;
|
|
|
}
|
|
|
//只做库存是否齐套检查
|
|
|
if (mo_Mes_Morders.Any())
|
|
|
@@ -2422,7 +2432,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//删除同步Mysql后旧数据
|
|
|
await DeleteMySqlOldData(sentrys);
|
|
|
|
|
|
- List<mo_ic_bom> boms = _ic_bom.Find(p => mo_Mes_Morders.Select(m => m.bom_number).Contains(p.bom_number) && p.factory_id == input.factoryId && p.tenant_id == input.tenantId && !p.IsDeleted).Result.ToList();
|
|
|
+ List<mo_ic_bom> boms = _ic_bom.GetListAsync(p => mo_Mes_Morders.Select(m => m.bom_number).Contains(p.bom_number) && p.factory_id == input.factoryId && p.tenant_id == input.tenantId && !p.IsDeleted).Result.ToList();
|
|
|
|
|
|
//物料bom
|
|
|
List<mo_ic_bom> bomlist = new List<mo_ic_bom>();
|
|
|
@@ -2503,7 +2513,7 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
//计算
|
|
|
_CalcBomViewAppService.CalcView(getBomList, bangid, item.need_number.GetValueOrDefault(), item.start_time, sklist, sentry, item.urgent, icitemlist);
|
|
|
-
|
|
|
+
|
|
|
//TODO:最晚开始时间
|
|
|
var curFacDtl = leadTimeList.FirstOrDefault(p => p.item_id == childBom.icitem_id);
|
|
|
//物料齐套时间
|
|
|
@@ -2534,63 +2544,71 @@ namespace Business.ResourceExamineManagement
|
|
|
if (list.Any())
|
|
|
rtn.srm_pr_list = _CalcBomViewAppService.SRMPRDtoList;
|
|
|
}
|
|
|
- var itemsupplierList = _srm_supplier.Find(a => prmainlist.Select(i => i.pr_purchaseid).Contains(a.mysql_id) && a.tenant_id == input.tenantId && a.factory_id == input.factoryId).Result;
|
|
|
- if (prmainlist.Any())
|
|
|
+
|
|
|
+
|
|
|
+ //获取工单数据
|
|
|
+ var workOrdMasters = _workOrdMaster.Select(p => mo_Mes_Morders.Select(c=>c.morder_no).Contains(p.WorkOrd));
|
|
|
+ workOrdMasters.ForEach(s => {
|
|
|
+ s.OrdDate = DateTime.Now.Date.AddDays(7);//锁定期
|
|
|
+ s.DueDate = DateTime.Now.Date.AddDays(7);
|
|
|
+ });
|
|
|
+ //优先级排序
|
|
|
+ workOrdMasters = workOrdMasters.OrderBy(s => s.OrdDate).ToList();
|
|
|
+ //排产
|
|
|
+ await _productionScheduleAppService.DoProductShcedule(workOrdMasters);
|
|
|
+
|
|
|
+ foreach (var wod in workOrdMasters)
|
|
|
{
|
|
|
- var pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prmainlist);
|
|
|
- PoActionListDto poaction = new PoActionListDto();
|
|
|
- //TODO:工单齐套检查需要调整
|
|
|
- //AutoCreatePOFromPR(prmainlist, bangid, icitemlist, itemsupplierList, poaction);
|
|
|
- using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
|
|
|
+ var morder = mo_Mes_Morders.Find(s => s.morder_no == wod.WorkOrd);
|
|
|
+ morder.moentry_sys_stime = wod.OrdDate;
|
|
|
+ morder.moentry_sys_etime = wod.DueDate;
|
|
|
+
|
|
|
+ var exa = rtn.examines.Find(s => s.morder_no == wod.WorkOrd);
|
|
|
+ //根据排产后得日期,反推PR。
|
|
|
+ var wkordPrList = prmainlist.Where(s => s.pr_mono == wod.WorkOrd).ToList();
|
|
|
+
|
|
|
+ //反算所有的PR,根据时间减去提前期
|
|
|
+ wkordPrList.ForEach(pr =>
|
|
|
{
|
|
|
- try
|
|
|
+ var ts = pr.pr_parrive_date - pr.pr_psend_date;
|
|
|
+ var icitem = icitemlist.Find(s => s.mysql_id == pr.icitem_id);
|
|
|
+ if (icitem != null)
|
|
|
{
|
|
|
- await _srm_pr_main.InsertMany(prmainlist);
|
|
|
- _businessDbContext.BulkInsert(pr_mainlist);
|
|
|
- if (poaction.mopoMain.Any())
|
|
|
- {
|
|
|
- await _srm_po_main.InsertMany(poaction.mopoMain);
|
|
|
- }
|
|
|
- if (poaction.mopolist.Any())
|
|
|
- {
|
|
|
- await _srm_po_list.InsertMany(poaction.mopolist);
|
|
|
- }
|
|
|
- if (poaction.poMain.Any())
|
|
|
- {
|
|
|
- _businessDbContext.BulkInsert(poaction.poMain);
|
|
|
- }
|
|
|
- if (poaction.polist.Any())
|
|
|
+ var bce = exa.BomChildExamineList.Find(s => s.item_id == pr.icitem_id && s.num == pr.num);
|
|
|
+ pr.pr_sarrive_date = morder.moentry_sys_stime.Value.AddDays((double)(0 - bce.pre_time.GetValueOrDefault() - 1 - icitem.clean_leadtime.GetValueOrDefault()));//到货还需要向前推 物料的预处理时间。到货日期必须提前一天到
|
|
|
+ pr.pr_ssend_date = pr.pr_sarrive_date.GetValueOrDefault().AddDays(0 - ts.Value.Days);
|
|
|
+ if (pr.pr_ssend_date > DateTime.Now)
|
|
|
{
|
|
|
- _businessDbContext.BulkInsert(poaction.polist);
|
|
|
- }
|
|
|
- if (poaction.mopoOccupiesList.Any())
|
|
|
- {
|
|
|
- var poOccupies = ObjectMapper.Map<List<mo_srm_po_occupy>, List<srm_po_occupy>>(poaction.mopoOccupiesList);
|
|
|
- _businessDbContext.BulkInsert(poOccupies);
|
|
|
+ pr.pr_ssend_date = DateTime.Now;
|
|
|
}
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
- if (poaction.poMasterList.Any())
|
|
|
- {
|
|
|
- _purOrdMaster.Insert(poaction.poMasterList);
|
|
|
- //快开平台用自增列RecId关联,所以需要插入后再查给明细表赋相应的值
|
|
|
- List<string> nbrs = poaction.poMasterList.Select(a => a.PurOrd).ToList();
|
|
|
- var nbrList = _purOrdMaster.Select(a => a.Domain == "1001" && nbrs.Contains(a.PurOrd));
|
|
|
- poaction.poDetailList.ForEach(c =>
|
|
|
- {
|
|
|
- c.PurOrdRecID = nbrList.Where(a => a.PurOrd == c.PurOrd).First().RecID;
|
|
|
- });
|
|
|
- _purOrdDetail.Insert(poaction.poDetailList);
|
|
|
- }
|
|
|
- await unitOfWork.CompleteAsync();
|
|
|
+ using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ _businessDbContext.BulkUpdate(mo_Mes_Morders);
|
|
|
+ if (prmainlist.Any())
|
|
|
+ {
|
|
|
+ var pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prmainlist);
|
|
|
+ _businessDbContext.BulkInsert(pr_mainlist);
|
|
|
}
|
|
|
- catch (Exception e)
|
|
|
+ if (_CalcBomViewAppService.srm_Po_OccupiesInsert.Any())
|
|
|
{
|
|
|
- unitOfWork.Dispose();
|
|
|
- new NLogHelper("ResourceExamineAppService").WriteLog("OrderKittingCheck", "工单检查数据更新失败:" + e.Message, _currentTenant.Id.ToString());
|
|
|
+ _CalcBomViewAppService.srm_Po_OccupiesInsert.ForEach(s => { s.tenant_id = param.tenantId; s.factory_id = param.factoryId; });
|
|
|
+ await _srm_po_occupy.InsertManyAsync(_CalcBomViewAppService.srm_Po_OccupiesInsert);
|
|
|
}
|
|
|
+ await unitOfWork.CompleteAsync();
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ unitOfWork.Dispose();
|
|
|
+ new NLogHelper("ResourceExamineAppService").WriteLog("OrderKittingCheck", "工单检查数据更新失败:" + e.Message, _currentTenant.Id.ToString());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//检查结果写入数据库
|
|
|
var b_Examine_Results = ObjectMapper.Map<List<ExamineResult>, List<b_examine_result>>(rtn.examines);
|
|
|
List<b_examine_result> examineList = new List<b_examine_result>();
|
|
|
@@ -2749,7 +2767,7 @@ namespace Business.ResourceExamineManagement
|
|
|
public void DataInitialization(List<mo_ic_bom> boms, long bangid, List<mo_ic_item> icitemlist, List<mo_ic_item_stock> stocklist, List<b_bom_pretreatment> pretreatments)
|
|
|
{
|
|
|
List<long> itemIds = pretreatments.Select(p => p.item_id.GetValueOrDefault()).ToList();
|
|
|
- icitemlist.AddRange(_ic_item.GetManyByCondition(p => itemIds.Contains(p.mysql_id) && !p.IsDeleted).Result);
|
|
|
+ icitemlist.AddRange(_ic_item.GetListAsync(p => itemIds.Contains(p.mysql_id) && !p.IsDeleted).Result);
|
|
|
#region 1、数据准备
|
|
|
//1.1、获取产能检查相关数据
|
|
|
//产品物料编码
|
|
|
@@ -2767,24 +2785,24 @@ namespace Business.ResourceExamineManagement
|
|
|
holidays = _holidayMaster.Select(p => p.Dated >= DateTime.Now.Date);
|
|
|
|
|
|
//主工单
|
|
|
- List<mo_mes_morder> mo_Mes_Morders = _mes_morder.GetManyByCondition(x => boms.Select(p => p.bom_number).Contains(x.bom_number) && (x.morder_state != MorderEnum.Accomplish_state || x.morder_state != MorderEnum.Close_state
|
|
|
+ List<mo_mes_morder> mo_Mes_Morders = _mes_morder.GetListAsync(x => boms.Select(p => p.bom_number).Contains(x.bom_number) && (x.morder_state != MorderEnum.Accomplish_state || x.morder_state != MorderEnum.Close_state
|
|
|
&& x.morder_icitem_type != MorderEnum.XgwyMorder) && x.tenant_id == param.tenantId && x.bang_id == bangid).Result;
|
|
|
List<long> moids = mo_Mes_Morders.Select(p => p.mysql_id).ToList();
|
|
|
- List<mo_mes_moentry> mo_Mes_Moentry = _mes_moentry.GetManyByCondition(x => moids.Contains(x.moentry_moid)).Result;
|
|
|
+ List<mo_mes_moentry> mo_Mes_Moentry = _mes_moentry.GetListAsync(x => moids.Contains(x.moentry_moid)).Result;
|
|
|
//工单占用表
|
|
|
- List<mo_mes_mooccupy> mes_mooccupyList = _mes_mooccupy.GetManyByCondition(x => x.moo_state == 1 && !x.IsDeleted && x.tenant_id == param.tenantId
|
|
|
+ List<mo_mes_mooccupy> mes_mooccupyList = _mes_mooccupy.GetListAsync(x => x.moo_state == 1 && !x.IsDeleted && x.tenant_id == param.tenantId
|
|
|
&& boms.Select(p => p.item_number).Contains(x.fitem_number) && x.bang_id == bangid).Result;
|
|
|
|
|
|
//物料采购订单明细
|
|
|
- var poDetailList = _srm_po_list.GetManyByCondition(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state == 1 && x.rstate == 1 && !x.IsDeleted).Result;
|
|
|
+ var poDetailList = _srm_po_list.GetListAsync(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state == 1 && x.rstate == 1 && !x.IsDeleted).Result;
|
|
|
//采购订单占用数据
|
|
|
- var poOccupys = _srm_po_occupy.GetManyByCondition(x => poDetailList.Select(p => p.id).ToList().Contains(x.polist_id) && x.bang_id == bangid && !x.IsDeleted).Result;
|
|
|
+ var poOccupys = _srm_po_occupy.GetListAsync(x => poDetailList.Select(p => p.Id).ToList().Contains(x.polist_id) && x.bang_id == bangid && !x.IsDeleted).Result;
|
|
|
#endregion
|
|
|
|
|
|
//处理一下已经插入得占用记录
|
|
|
|
|
|
//物料库存
|
|
|
- stocklist.AddRange(_ic_item_stock.GetManyByCondition(p => p.factory_id == param.factoryId && p.bang_id == bangid && itemIds.Contains(p.icitem_id)).Result);
|
|
|
+ stocklist.AddRange(_ic_item_stock.GetListAsync(p => p.factory_id == param.factoryId && p.bang_id == bangid && itemIds.Contains(p.icitem_id)).Result);
|
|
|
|
|
|
//物料提前期
|
|
|
leadTimeList = GetLeadTime(icitemlist, param.tenantId, param.factoryId);//提前期列表
|
|
|
@@ -2839,19 +2857,19 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
//根据明细集合查出所有得替代关系表数据集合
|
|
|
List<string> codeList = bomchildlist.Select(c => c.substitute_code).ToList();
|
|
|
- sublist.AddRange(_ic_substitute.GetManyByCondition(p => codeList.Contains(p.substitute_code) && !p.IsDeleted).Result);
|
|
|
+ sublist.AddRange(_ic_substitute.GetListAsync(p => codeList.Contains(p.substitute_code) && !p.IsDeleted).Result);
|
|
|
|
|
|
List<long> subidlist = sublist.Select(c => c.mysql_id).ToList();
|
|
|
- suballlist.AddRange(_ic_substitute_group.GetManyByCondition(p => subidlist.Contains(p.substitute_group_id) && !p.IsDeleted).Result);
|
|
|
+ suballlist.AddRange(_ic_substitute_group.GetListAsync(p => subidlist.Contains(p.substitute_group_id) && !p.IsDeleted).Result);
|
|
|
|
|
|
List<long> suballidlist = suballlist.Select(c => c.mysql_id).ToList();
|
|
|
- subdtllist.AddRange(_ic_substitute_group_detail.GetManyByCondition(p => suballidlist.Contains(p.substitute_group_id) && !p.IsDeleted).Result);
|
|
|
+ subdtllist.AddRange(_ic_substitute_group_detail.GetListAsync(p => suballidlist.Contains(p.substitute_group_id) && !p.IsDeleted).Result);
|
|
|
|
|
|
//获取物料数据
|
|
|
List<long> itemIds = bomlist.Select(p => p.icitem_id).ToList();
|
|
|
itemIds.AddRange(bomchildlist.Select(p => p.icitem_id).ToList());
|
|
|
itemIds.AddRange(subdtllist.Select(p => p.icitem_id).ToList());
|
|
|
- icitemlist.AddRange(_ic_item.GetManyByCondition(p => itemIds.Contains(p.mysql_id) && !p.IsDeleted).Result);
|
|
|
+ icitemlist.AddRange(_ic_item.GetListAsync(p => itemIds.Contains(p.mysql_id) && !p.IsDeleted).Result);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -2859,7 +2877,7 @@ namespace Business.ResourceExamineManagement
|
|
|
/// </summary>
|
|
|
public void AutoCreateBomBill(List<mo_ic_bom> ic_Boms = null)
|
|
|
{
|
|
|
- ic_Boms ??= _ic_bom.Find(p => p.factory_id == 10101 && p.tenant_id == 101 && !p.IsDeleted).Result.ToList();
|
|
|
+ ic_Boms ??= _ic_bom.GetListAsync(p => p.factory_id == 10101 && p.tenant_id == 101 && !p.IsDeleted).Result.ToList();
|
|
|
var pretreatment = _mysql_b_bom_pretreatment.GetListAsync(s => ic_Boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
|
|
|
|
|
|
//物料bom
|