using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Repositories; using Business.Models; using Microsoft.AspNetCore.Authorization; using Business.Permissions; using XCZ; using Business.ResourceExamineManagement.Dto; using Bussiness.Model.MES.IC; using AutoMapper.Internal.Mappers; using Bussiness.Model.Tech; using Bussiness.Model.Production; using Business.Core.MongoDBHelper; using Business.Core.Utilities; using Hangfire.Storage.Monitoring; using Business.BookManagement.Dto; using Volo.Abp.ObjectMapping; using Volo.Abp.Application.Services; using ZstdSharp.Unsafe; using System.Transactions; using NUglify.JavaScript.Syntax; using System.Linq.Expressions; using XCZ.Extensions; using System.ComponentModel; using System.Reflection.Emit; using NUglify.Helpers; using Microsoft.AspNetCore.SignalR.Protocol; using System.ComponentModel.Design; using Volo.Abp.Validation.StringValues; using System.Runtime.CompilerServices; using MongoDB.Driver; using Volo.Abp.Validation.Localization; using Hangfire.Annotations; using System.Globalization; using MongoDB.Driver.Linq; using Bussiness.Model.SRM; using System.ComponentModel.DataAnnotations; using Bussiness.Model.Sale; using Amazon.Runtime.Internal.Transform; using System.IO.Compression; using System.Collections; using System.Data.SqlTypes; using Bussiness.Model.SystemData; 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; #endregion /// /// 构造函数 /// public SyncMySQLDataAppService( IMongoDB ic_bom, IMongoDB ic_bom_child, 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, IRepository mysql_ic_bom, IRepository mysql_ic_bom_child, 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 ) { _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; _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; } /// /// 同步基础数据到mongodb /// /// /// public async Task SyncBaseDataToMongoDB() { //同步物料Bom数据 var icBoms = await _mysql_ic_bom.GetListAsync(); if (icBoms.Count > 0) { //先清空表数据(删除mongodb中的集合) await _ic_bom.DeleteAll(); //插入数据 await _ic_bom.InsertMany(icBoms); } //同步物料BOM明细数据 var icbom_childs = await _mysql_ic_bom_child.GetListAsync(); if (icbom_childs.Count > 0) { //先清空表数据(删除mongodb中的集合) await _ic_bom_child.DeleteAll(); //插入数据 await _ic_bom_child.InsertMany(icbom_childs); } //同步物料数据 var icItems = await _mysql_ic_item.GetListAsync(); if (icItems.Count > 0) { //先清空表数据(删除mongodb中的集合) await _ic_item.DeleteAll(); //插入数据 await _ic_item.InsertMany(icItems); } //同步替代群组数据 var subtitutes = await _mysql_ic_substitute.GetListAsync(); if (subtitutes.Count > 0) { //先清空表数据(删除mongodb中的集合) await _ic_substitute.DeleteAll(); //插入数据 await _ic_substitute.InsertMany(subtitutes); } //同步物料替代多群组数据 var subAlls = await _mysql_ic_substitute_all.GetListAsync(); if (subAlls.Count > 0) { //先清空表数据(删除mongodb中的集合) await _ic_substitute_all.DeleteAll(); //插入数据 await _ic_substitute_all.InsertMany(subAlls); } //同步物料替代多群组明细数据 var subAllDtls = await _mysql_ic_substitute_all_dtl.GetListAsync(); if (subAllDtls.Count > 0) { //先清空表数据(删除mongodb中的集合) await _ic_substitute_all_dtl.DeleteAll(); //插入数据 await _ic_substitute_all_dtl.InsertMany(subAllDtls); } //同步供应商数据 var suppliers = await _mysql_srm_supplier.GetListAsync(); if (suppliers.Count > 0) { //先清空表数据(删除mongodb中的集合) await _srm_supplier.DeleteAll(); //插入数据 await _srm_supplier.InsertMany(suppliers); } //同步工艺路径数据 var techs = await _mysql_mes_technique.GetListAsync(); if (techs.Count > 0) { //先清空表数据(删除mongodb中的集合) await _mes_technique.DeleteAll(); //插入数据 await _mes_technique.InsertMany(techs); } //同步工序数据 var processes = await _mysql_mes_process.GetListAsync(); if (suppliers.Count > 0) { //先清空表数据(删除mongodb中的集合) await _mes_process.DeleteAll(); //插入数据 await _mes_process.InsertMany(processes); } //同步工艺关联工序数据 var tech_procs = await _mysql_mes_tech_process.GetListAsync(); if (tech_procs.Count > 0) { //先清空表数据(删除mongodb中的集合) await _mes_tech_process.DeleteAll(); //插入数据 await _mes_tech_process.InsertMany(tech_procs); } } } }