using Business.Core.MongoDBHelper;
using Business.Core.Utilities;
using Bussiness.Model.MES.IC;
using Bussiness.Model.SystemData;
using Bussiness.Model.Tech;
using Bussiness.MongoModel.MES.IC;
using Bussiness.MongoModel.SystemData;
using Bussiness.MongoModel.Tech;
using System;
using System.Collections.Generic;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
namespace Business.SyncDataManagement
{
///
/// 同步mysql数据到mongodb
///
public class SyncMySQLDataAppService : ApplicationService
{
#region 服务
///
/// 物料bom
///
private readonly IMongoDB _ic_bom;
private IRepository _mysql_ic_bom;
///
/// 物料bom子表
///
private readonly IMongoDB _ic_bom_child;
private IRepository _mysql_ic_bom_child;
///
/// 物料
///
private readonly IMongoDB _ic_item;
private IRepository _mysql_ic_item;
///
/// 替代群组
///
private readonly IMongoDB _ic_substitute;
private IRepository _mysql_ic_substitute;
///
/// 物料替代多群组
///
private readonly IMongoDB _ic_substitute_all;
private IRepository _mysql_ic_substitute_all;
///
/// 物料替代多群组明细
///
private readonly IMongoDB _ic_substitute_all_dtl;
private IRepository _mysql_ic_substitute_all_dtl;
///
/// 供应商
///
private readonly IMongoDB _srm_supplier;
private IRepository _mysql_srm_supplier;
///
/// 工艺路径
///
private readonly IMongoDB _mes_technique;
private IRepository _mysql_mes_technique;
///
/// 工序
///
private readonly IMongoDB _mes_process;
private IRepository _mysql_mes_process;
///
/// 工艺路径关联工序
///
private readonly IMongoDB _mes_tech_process;
private IRepository _mysql_mes_tech_process;
///
/// 物料采购计划表
///
private readonly IMongoDB _ic_plan;
private IRepository _mysql_ic_plan;
///
/// 物料工厂明细表
///
private readonly IMongoDB _ic_factory_details;
private IRepository _mysql_ic_factory_details;
///
/// 物料采购报价单
///
private readonly IMongoDB _ic_item_pur;
private IRepository _mysql_ic_item_pur;
///
/// 雪花算法
///
SnowFlake help = new SnowFlake();
#endregion
///
/// 构造函数
///
public SyncMySQLDataAppService(
IMongoDB ic_bom,
IMongoDB ic_bom_child,
IMongoDB ic_check,
IMongoDB ic_item,
IMongoDB ic_substitute,
IMongoDB ic_substitute_all,
IMongoDB ic_substitute_all_dtl,
IMongoDB srm_supplier,
IMongoDB mes_technique,
IMongoDB mes_process,
IMongoDB mes_tech_process,
IMongoDB ic_factory_details,
IMongoDB ic_item_pur,
IMongoDB ic_plan,
IRepository mysql_ic_bom,
IRepository mysql_ic_bom_child,
IRepository mysql_ic_check,
IRepository mysql_ic_item,
IRepository mysql_ic_substitute,
IRepository mysql_ic_substitute_all,
IRepository mysql_ic_substitute_all_dtl,
IRepository mysql_srm_supplier,
IRepository mysql_mes_technique,
IRepository mysql_mes_process,
IRepository mysql_mes_tech_process,
IRepository mysql_ic_factory_details,
IRepository mysql_ic_item_pur,
IRepository mysql_ic_plan
)
{
_ic_bom= ic_bom;
_ic_bom_child= ic_bom_child;
_ic_item= ic_item;
_ic_substitute= ic_substitute;
_ic_substitute_all= ic_substitute_all;
_ic_substitute_all_dtl= ic_substitute_all_dtl;
_srm_supplier= srm_supplier;
_mes_technique = mes_technique;
_mes_process= mes_process;
_mes_tech_process = mes_tech_process;
_ic_factory_details = ic_factory_details;
_ic_item_pur = ic_item_pur;
_ic_plan = ic_plan;
_mysql_ic_bom = mysql_ic_bom;
_mysql_ic_bom_child= mysql_ic_bom_child;
_mysql_ic_item= mysql_ic_item;
_mysql_ic_substitute= mysql_ic_substitute;
_mysql_ic_substitute_all= mysql_ic_substitute_all;
_mysql_ic_substitute_all_dtl= mysql_ic_substitute_all_dtl;
_mysql_srm_supplier= mysql_srm_supplier;
_mysql_mes_technique= mysql_mes_technique;
_mysql_mes_process= mysql_mes_process;
_mysql_mes_tech_process= mysql_mes_tech_process;
_mysql_ic_factory_details = mysql_ic_factory_details;
_mysql_ic_item_pur = mysql_ic_item_pur;
_mysql_ic_plan = mysql_ic_plan;
}
///
/// 同步基础数据到mongodb
///
///
///
public void SyncBaseDataToMongoDB()
{
//同步物料Bom数据
var icBoms = _mysql_ic_bom.GetListAsync().Result;
if (icBoms.Count > 0)
{
//先清空表数据
_ic_bom.Delete(p=>p.mysql_id != -1);
var moIcBoms = ObjectMapper.Map, List>(icBoms);
moIcBoms.ForEach(s => s.id = help.NextId());
//插入数据
_ic_bom.InsertMany(moIcBoms);
}
//同步物料BOM明细数据
var icbom_childs = _mysql_ic_bom_child.GetListAsync().Result;
if (icbom_childs.Count > 0)
{
//先清空表数据
_ic_bom_child.Delete(p => p.mysql_id != -1);
var moIcbom_childs = ObjectMapper.Map, List>(icbom_childs);
moIcbom_childs.ForEach(s => s.id = help.NextId());
//插入数据
_ic_bom_child.InsertMany(moIcbom_childs);
}
//工厂物料明细表
var ic_factory_details = _mysql_ic_factory_details.GetListAsync().Result;
if (ic_factory_details.Count > 0)
{
//先清空表数据
_ic_factory_details.Delete(p => p.mysql_id != -1);
var moIc_factory_details = ObjectMapper.Map, List>(ic_factory_details);
moIc_factory_details.ForEach(s => s.id = help.NextId());
_ic_factory_details.InsertMany(moIc_factory_details);
}
//同步物料数据
var icItems = _mysql_ic_item.GetListAsync().Result;
if (icItems.Count > 0)
{
//先清空表数据
_ic_item.Delete(p => p.mysql_id != -1);
var moIcItems = ObjectMapper.Map, List>(icItems);
moIcItems.ForEach(s => s.id = help.NextId());
//插入数据
_ic_item.InsertMany(moIcItems);
}
//同步替代群组数据
var subtitutes = _mysql_ic_substitute.GetListAsync().Result;
if (subtitutes.Count > 0)
{
//先清空表数据
_ic_substitute.Delete(p => p.mysql_id != -1);
var moSubtitutes = ObjectMapper.Map, List>(subtitutes);
moSubtitutes.ForEach(s => s.id = help.NextId());
//插入数据
_ic_substitute.InsertMany(moSubtitutes);
}
//同步物料替代多群组数据
var subAlls = _mysql_ic_substitute_all.GetListAsync().Result;
if (subAlls.Count > 0)
{
//先清空表数据
_ic_substitute_all.Delete(p => p.mysql_id != -1);
var moSubAlls = ObjectMapper.Map, List>(subAlls);
moSubAlls.ForEach(s => s.id = help.NextId());
//插入数据
_ic_substitute_all.InsertMany(moSubAlls);
}
//同步物料替代多群组明细数据
var subAllDtls = _mysql_ic_substitute_all_dtl.GetListAsync().Result;
if (subAllDtls.Count > 0)
{
//先清空表数据
_ic_substitute_all_dtl.Delete(p => p.mysql_id != -1);
var moSubAllDtls = ObjectMapper.Map, List>(subAllDtls);
moSubAllDtls.ForEach(s => s.id = help.NextId());
//插入数据
_ic_substitute_all_dtl.InsertMany(moSubAllDtls);
}
//同步供应商数据
var suppliers = _mysql_srm_supplier.GetListAsync().Result;
if (suppliers.Count > 0)
{
//先清空表数据
_srm_supplier.Delete(p => p.mysql_id != -1);
var moSuppliers = ObjectMapper.Map, List>(suppliers);
moSuppliers.ForEach(s => s.id = help.NextId());
//插入数据
_srm_supplier.InsertMany(moSuppliers);
}
//同步工艺路径数据
var techs = _mysql_mes_technique.GetListAsync().Result;
if (techs.Count > 0)
{
//先清空表数据
_mes_technique.Delete(p => p.mysql_id != -1);
var moTechs = ObjectMapper.Map, List>(techs);
moTechs.ForEach(s => s.id = help.NextId());
//插入数据
_mes_technique.InsertMany(moTechs);
}
//同步工序数据
var processes = _mysql_mes_process.GetListAsync().Result;
if (suppliers.Count > 0)
{
//先清空表数据
_mes_process.Delete(p => p.mysql_id != -1);
var moProcesses = ObjectMapper.Map, List>(processes);
moProcesses.ForEach(s => s.id = help.NextId());
//插入数据
_mes_process.InsertMany(moProcesses);
}
//同步工艺关联工序数据
var tech_procs = _mysql_mes_tech_process.GetListAsync().Result;
if (tech_procs.Count > 0)
{
//先清空表数据
_mes_tech_process.Delete(p => p.mysql_id != -1);
var moTech_procs = ObjectMapper.Map, List>(tech_procs);
moTech_procs.ForEach(s => s.id = help.NextId());
//插入数据
_mes_tech_process.InsertMany(moTech_procs);
}
//物料采购计划表
var ic_plan = _mysql_ic_plan.GetListAsync().Result;
if (ic_plan.Count > 0)
{
//先清空表数据
_ic_plan.Delete(p => p.mysql_id != -1);
var moIc_plan = ObjectMapper.Map, List>(ic_plan);
moIc_plan.ForEach(s => s.id = help.NextId());
_ic_plan.InsertMany(moIc_plan);
}
//物料采购报价单
var ic_item_pur = _mysql_ic_item_pur.GetListAsync().Result;
if (ic_item_pur.Count > 0)
{
//先清空表数据
_ic_item_pur.Delete(p => p.mysql_id != -1);
var moIc_item_pur = ObjectMapper.Map, List>(ic_item_pur);
moIc_item_pur.ForEach(s => s.id = help.NextId());
_ic_item_pur.InsertMany(moIc_item_pur);
}
}
}
}