using Business.Core.MongoDBHelper;
using Business.Core.Utilities;
using Business.Model.MES.IC;
using Business.Model.SRM;
using Business.Model.Tech;
using Business.MongoModel.MES.IC;
using Business.MongoModel.SRM;
using Business.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_group;
private IRepository _mysql_ic_substitute_group;
///
/// 物料替代多群组明细
///
private readonly IMongoDB _ic_substitute_group_detail;
private IRepository _mysql_ic_substitute_group_detail;
///
/// 供应商
///
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 _srm_purchase;
private IRepository _mysql_srm_purchase;
///
/// 雪花算法
///
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_group,
IMongoDB ic_substitute_group_detail,
IMongoDB srm_supplier,
IMongoDB mes_technique,
IMongoDB mes_process,
IMongoDB mes_tech_process,
IMongoDB ic_factory_details,
IMongoDB srm_purchase,
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_group,
IRepository mysql_ic_substitute_group_detail,
IRepository mysql_srm_supplier,
IRepository mysql_mes_technique,
IRepository mysql_mes_process,
IRepository mysql_mes_tech_process,
IRepository mysql_ic_factory_details,
IRepository mysql_srm_purchase,
IRepository mysql_ic_plan
)
{
_ic_bom= ic_bom;
_ic_bom_child= ic_bom_child;
_ic_item= ic_item;
_ic_substitute= ic_substitute;
_ic_substitute_group= ic_substitute_group;
_ic_substitute_group_detail = ic_substitute_group_detail;
_srm_supplier= srm_supplier;
_mes_technique = mes_technique;
_mes_process= mes_process;
_mes_tech_process = mes_tech_process;
_ic_factory_details = ic_factory_details;
_srm_purchase = srm_purchase;
_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_group= mysql_ic_substitute_group;
_mysql_ic_substitute_group_detail= mysql_ic_substitute_group_detail;
_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_srm_purchase = mysql_srm_purchase;
_mysql_ic_plan = mysql_ic_plan;
}
///
/// 同步基础数据到mongodb
///
///
///
public async void SyncBaseDataToMongoDB()
{
//同步物料Bom数据
var icBoms = _mysql_ic_bom.GetListAsync().Result;
if (icBoms.Count > 0)
{
//先清空表数据
await _ic_bom.Delete(p => p.mysql_id != -1);
var moIcBoms = ObjectMapper.Map, List>(icBoms);
moIcBoms.ForEach(s => s.id = help.NextId());
//插入数据
await _ic_bom.InsertMany(moIcBoms);
}
//同步物料BOM明细数据
var icbom_childs = _mysql_ic_bom_child.GetListAsync().Result;
if (icbom_childs.Count > 0)
{
//先清空表数据
await _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());
//插入数据
await _ic_bom_child.InsertMany(moIcbom_childs);
}
//工厂物料明细表
var ic_factory_details = _mysql_ic_factory_details.GetListAsync().Result;
if (ic_factory_details.Count > 0)
{
//先清空表数据
await _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());
await _ic_factory_details.InsertMany(moIc_factory_details);
}
//同步物料数据
var icItems = _mysql_ic_item.GetListAsync().Result;
if (icItems.Count > 0)
{
//先清空表数据
await _ic_item.Delete(p => p.mysql_id != -1);
var moIcItems = ObjectMapper.Map, List>(icItems);
moIcItems.ForEach(s => s.id = help.NextId());
//插入数据
await _ic_item.InsertMany(moIcItems);
}
//同步替代群组数据
var subtitutes = _mysql_ic_substitute.GetListAsync().Result;
if (subtitutes.Count > 0)
{
//先清空表数据
await _ic_substitute.Delete(p => p.mysql_id != -1);
var moSubtitutes = ObjectMapper.Map, List>(subtitutes);
moSubtitutes.ForEach(s => s.id = help.NextId());
//插入数据
await _ic_substitute.InsertMany(moSubtitutes);
}
//同步物料替代多群组数据
var subAlls = _mysql_ic_substitute_group.GetListAsync().Result;
if (subAlls.Count > 0)
{
//先清空表数据
await _ic_substitute_group.Delete(p => p.mysql_id != -1);
var moSubAlls = ObjectMapper.Map, List>(subAlls);
moSubAlls.ForEach(s => s.id = help.NextId());
//插入数据
await _ic_substitute_group.InsertMany(moSubAlls);
}
//同步物料替代多群组明细数据
var subAllDtls = _mysql_ic_substitute_group_detail.GetListAsync().Result;
if (subAllDtls.Count > 0)
{
//先清空表数据
await _ic_substitute_group_detail.Delete(p => p.mysql_id != -1);
var moSubAllDtls = ObjectMapper.Map, List>(subAllDtls);
moSubAllDtls.ForEach(s => s.id = help.NextId());
//插入数据
await _ic_substitute_group_detail.InsertMany(moSubAllDtls);
}
//同步供应商数据
var suppliers = _mysql_srm_supplier.GetListAsync().Result;
if (suppliers.Count > 0)
{
//先清空表数据
await _srm_supplier.Delete(p => p.mysql_id != -1);
var moSuppliers = ObjectMapper.Map, List>(suppliers);
moSuppliers.ForEach(s => s.id = help.NextId());
//插入数据
await _srm_supplier.InsertMany(moSuppliers);
}
//同步工艺路径数据
var techs = _mysql_mes_technique.GetListAsync().Result;
if (techs.Count > 0)
{
//先清空表数据
await _mes_technique.Delete(p => p.mysql_id != -1);
var moTechs = ObjectMapper.Map, List>(techs);
moTechs.ForEach(s => s.id = help.NextId());
//插入数据
await _mes_technique.InsertMany(moTechs);
}
//同步工序数据
var processes = _mysql_mes_process.GetListAsync().Result;
if (suppliers.Count > 0)
{
//先清空表数据
await _mes_process.Delete(p => p.mysql_id != -1);
var moProcesses = ObjectMapper.Map, List>(processes);
moProcesses.ForEach(s => s.id = help.NextId());
//插入数据
await _mes_process.InsertMany(moProcesses);
}
//同步工艺关联工序数据
var tech_procs = _mysql_mes_tech_process.GetListAsync().Result;
if (tech_procs.Count > 0)
{
//先清空表数据
await _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());
//插入数据
await _mes_tech_process.InsertMany(moTech_procs);
}
//物料采购计划表
var ic_plan = _mysql_ic_plan.GetListAsync().Result;
if (ic_plan.Count > 0)
{
//先清空表数据
await _ic_plan.Delete(p => p.mysql_id != -1);
var moIc_plan = ObjectMapper.Map, List>(ic_plan);
moIc_plan.ForEach(s => s.id = help.NextId());
await _ic_plan.InsertMany(moIc_plan);
}
//物料采购报价单
var srm_purchase = _mysql_srm_purchase.GetListAsync().Result;
if (srm_purchase.Count > 0)
{
//先清空表数据
await _srm_purchase.Delete(p => p.mysql_id != -1);
var mosrm_purchase = ObjectMapper.Map, List>(srm_purchase);
mosrm_purchase.ForEach(s => s.id = help.NextId());
await _srm_purchase.InsertMany(mosrm_purchase);
}
}
}
}