public MES_PIS_HandSyncBus() { ProcessIDTRSConfigService process_Service = new ProcessIDTRSConfigService ( new UnitOfWork(_DatabaseFactory), new EnumerationRepository(_DatabaseFactory), new ProcessIDTRSConfigRepository(_DatabaseFactory), new ProductInputRepository(_DatabaseFactory), new MES_PIS_SyncFailedRecordRepository(_DatabaseFactory), new FlowChartDetailRepository(_DatabaseFactory) ); MesDataSyncService mes_Service = new MesDataSyncService ( new UnitOfWork(_DatabaseFactory), new EnumerationRepository(_DatabaseFactory), new MesDataSyncRepository(_DatabaseFactory), new ProductInputRepository(_DatabaseFactory), new ProcessIDTRSConfigRepository(_DatabaseFactory) ); LogMessageRecordService Log_Service = new LogMessageRecordService ( new UnitOfWork(_DatabaseFactory), new LogMessageRecodeRepository(_DatabaseFactory) ); MES_PIS_SyncFailedRecordService SyncFailedLogServer = new MES_PIS_SyncFailedRecordService ( new MES_PIS_SyncFailedRecordRepository(_DatabaseFactory), new UnitOfWork(_DatabaseFactory) ); _LogService = Log_Service; _mes_Service = mes_Service; _process_Service = process_Service; _SyncFailedLogServer = SyncFailedLogServer; }
static void Main(string[] args) { MachineYieldReportService machineYieldReportService = new MachineYieldReportService( new Machine_YieldRepository(_DatabaseFactory), new UnitOfWork(_DatabaseFactory), new Machine_Schedule_ConfigRepository(_DatabaseFactory), new Machine_StationRepository(_DatabaseFactory), new Machine_CustomerRepository(_DatabaseFactory) ); MES_PIS_SyncFailedRecordService SyncFailedLogServer = new MES_PIS_SyncFailedRecordService ( new MES_PIS_SyncFailedRecordRepository(_DatabaseFactory), new UnitOfWork(_DatabaseFactory) ); LogMessageRecordService Log_Service = new LogMessageRecordService ( new UnitOfWork(_DatabaseFactory), new LogMessageRecodeRepository(_DatabaseFactory) ); _LogService = Log_Service; _SyncFailedLogServer = SyncFailedLogServer; //获取站点配置参数。 var machine_Schedule_ConfigDTOs = machineYieldReportService.GetMachine_Schedule_ConfigDTO(); DateTime datetime = DateTime.Now; // DateTime datetime =Convert.ToDateTime("2018-05-18 14:20"); // DateTime datetime = Convert.ToDateTime("2018-05-14 13:20"); var nomachine_Schedule_ConfigDTOs = machineYieldReportService.GetNOMachine_Schedule_ConfigDTO(); var timeQuantum = GetTimeQuantum(datetime); //获取到的时候得到的数据,及有过排程的时候。 if (machine_Schedule_ConfigDTOs.Count > 0) { //循环站点数据 foreach (var item in machine_Schedule_ConfigDTOs) { if (item.EndTime == timeQuantum.StartTime) { //30分钟 SetMachine_Yield(timeQuantum.StartTime, item.MES_Customer_Name, item.MES_Station_Name, 1, item.Machine_Station_UID); } else if (item.EndTime == timeQuantum.StartTime.AddMinutes(-30)) { //60分钟调用2次 SetMachine_Yield(timeQuantum.StartTime.AddMinutes(-30), item.MES_Customer_Name, item.MES_Station_Name, 2, item.Machine_Station_UID); } else if (item.EndTime == timeQuantum.StartTime.AddMinutes(-60)) { //90分钟调用3次 SetMachine_Yield(timeQuantum.StartTime.AddMinutes(-60), item.MES_Customer_Name, item.MES_Station_Name, 3, item.Machine_Station_UID); } else //if (item.EndTime <= timeQuantum.StartTime.AddMinutes(-90)) { //120分钟调用4次 SetMachine_Yield(timeQuantum.StartTime.AddMinutes(-90), item.MES_Customer_Name, item.MES_Station_Name, 4, item.Machine_Station_UID); } } //获取所有已经同步的过得站点ID。 List <int> yesMachine_Station_UIDs = machine_Schedule_ConfigDTOs.Select(o => o.Machine_Station_UID).ToList(); //获取所有没有同步过得站点 var nmachine_Schedule_ConfigDTOs = nomachine_Schedule_ConfigDTOs.Where(o => yesMachine_Station_UIDs.Contains(o.Machine_Station_UID) == false).ToList(); foreach (var item in nmachine_Schedule_ConfigDTOs) { SetMachine_Yield(timeQuantum.StartTime, item.MES_Customer_Name, item.MES_Station_Name, 1, item.Machine_Station_UID); } } else { //从来没有排程的时候执行下面的排程 machine_Schedule_ConfigDTOs = nomachine_Schedule_ConfigDTOs; foreach (var item in machine_Schedule_ConfigDTOs) { SetMachine_Yield(timeQuantum.StartTime, item.MES_Customer_Name, item.MES_Station_Name, 1, item.Machine_Station_UID); } } }
static void Main(string[] args) { //NewmMes_Service.SynchronizeMesInfo(syncParam); //mes_Service.SynchronizeMesInfo(syncParam); ProcessIDTRSConfigService process_Service = new ProcessIDTRSConfigService ( new UnitOfWork(_DatabaseFactory), new EnumerationRepository(_DatabaseFactory), new ProcessIDTRSConfigRepository(_DatabaseFactory), new ProductInputRepository(_DatabaseFactory), new MES_PIS_SyncFailedRecordRepository(_DatabaseFactory), new FlowChartDetailRepository(_DatabaseFactory) ); MesDataSyncService mes_Service = new MesDataSyncService ( new UnitOfWork(_DatabaseFactory), new EnumerationRepository(_DatabaseFactory), new MesDataSyncRepository(_DatabaseFactory), new ProductInputRepository(_DatabaseFactory), new ProcessIDTRSConfigRepository(_DatabaseFactory) ); LogMessageRecordService Log_Service = new LogMessageRecordService ( new UnitOfWork(_DatabaseFactory), new LogMessageRecodeRepository(_DatabaseFactory) ); MES_PIS_SyncFailedRecordService SyncFailedLogServer = new MES_PIS_SyncFailedRecordService ( new MES_PIS_SyncFailedRecordRepository(_DatabaseFactory), new UnitOfWork(_DatabaseFactory) ); MES_SNOriginalService SNOriginalService = new MES_SNOriginalService ( new UnitOfWork(_DatabaseFactory), new MES_SNOriginalRepository(_DatabaseFactory), new Mes_StationColorRepository(_DatabaseFactory), new ShipMentRepository(_DatabaseFactory) ); _LogService = Log_Service; _SyncFailedLogServer = SyncFailedLogServer; EnumerationRepository enumration = new EnumerationRepository(_DatabaseFactory); //一 获取枚举表-构造参数 //二 获取临时表的数据 //三 获取配置表的数据判断是否需要同步 //四 判断数据是插入还是更新 //1 获取当前日期和时段 //测试代码 //var starttime = DateTime.Now; if (false) { var i = 0; while (true) { Thread t1 = new Thread(new ThreadStart(AddData)); t1.Start(); Thread.Sleep(60000); Console.Write(++i + ", "); } } else { var startTime = string.Empty; var endTime = string.Empty; var current_Date = string.Empty; var current_TimeInterval = string.Empty; var _currentDateTime = DateTime.Now.AddMinutes(-10); //var _currentDateTime = Convert.ToDateTime("2018/09/28 10:10"); //while (_currentDateTime.AddMinutes(10) < Convert.ToDateTime("2018/09/28 15:10")) //{ // _currentDateTime = _currentDateTime.AddMinutes(10); var currentDateInfoModel = GetCurrentTime(_currentDateTime); current_TimeInterval = currentDateInfoModel.CurrentInterval; current_Date = currentDateInfoModel.CurrentDay; startTime = currentDateInfoModel.CurrentStartMinute; endTime = currentDateInfoModel.CurrentEndMinute; //获取需要同步的专案 var projectList = enumration.GetMES_Project("MES_ProjectType"); //2 获取配置表需要同步的制程 var ProcessConfList = process_Service.GetSyscProcessConfig(); foreach (var project in projectList) { #region List <MES_StationDataRecordDTO> MesPeocessInfoList = new List <MES_StationDataRecordDTO>(); var requestParam = project.Enum_Value.Split(','); var SqlServer = requestParam[0].ToString(); var Database = requestParam[1].ToString(); var UserID_ID = int.Parse(requestParam[2]); var customerIDString = requestParam[5].ToString(); var assemblyIDString = requestParam[6].ToString(); var customerNameString = requestParam[7].ToString(); //获取专案下面最新的一条数据 var LastDatemodel = mes_Service.GetLastSyncDate(customerIDString); var model = new MES_StationDataRecordDTO(); Recordset resultMesData = new Recordset(); //第一条数据直接滴啊用接口 if (LastDatemodel == null) { MesRequestParamModel mesRequest = new MesRequestParamModel() { SqlServer = SqlServer, Database = Database, UserID_ID = UserID_ID, StartDate = startTime, EndDate = endTime, CustomerIDString = customerIDString, AssemblyIDString = assemblyIDString }; resultMesData = GetMesAPIData(mesRequest); if (resultMesData.RecordCount == 0) { AddLog("MES-无数据数据", "RequestMESAPI", mesRequest); continue; } MesPeocessInfoList = ConvertMesDateToPis(resultMesData, customerNameString); AddMES_PIS(mes_Service, MesPeocessInfoList, ProcessConfList, currentDateInfoModel, mesRequest); } else { //当前同步的开始时间=已经同步的结束的时间 if (LastDatemodel.EndTimeInterval == startTime) { MesRequestParamModel mesRequest = new MesRequestParamModel() { SqlServer = SqlServer, Database = Database, UserID_ID = UserID_ID, StartDate = startTime, EndDate = endTime, CustomerIDString = customerIDString, AssemblyIDString = assemblyIDString }; resultMesData = GetMesAPIData(mesRequest); if (resultMesData.RecordCount == 0) { AddLog("MES-无数据数据", "RequestMESAPI", mesRequest); continue; } MesPeocessInfoList = ConvertMesDateToPis(resultMesData, customerNameString); AddMES_PIS(mes_Service, MesPeocessInfoList, ProcessConfList, currentDateInfoModel, mesRequest); } else { for (int i = 12; i >= 0; i--) { Recordset resultMesDataForFail = new Recordset(); //往前面推10分钟-最多查询前面一个小时数据 var tempTineModel = GetCurrentTime(_currentDateTime.AddMinutes(-(10 * i))); if (Convert.ToDateTime(LastDatemodel.EndTimeInterval) > Convert.ToDateTime(tempTineModel.CurrentStartMinute)) { continue; } else { current_Date = tempTineModel.CurrentDay; current_TimeInterval = tempTineModel.CurrentInterval; startTime = tempTineModel.CurrentStartMinute; endTime = tempTineModel.CurrentEndMinute; MesRequestParamModel mesRequest = new MesRequestParamModel() { SqlServer = SqlServer, Database = Database, UserID_ID = UserID_ID, StartDate = startTime, EndDate = endTime, CustomerIDString = customerIDString, AssemblyIDString = assemblyIDString }; resultMesDataForFail = GetMesAPIData(mesRequest); if (resultMesDataForFail.RecordCount == 0) { AddLog("MES-无数据数据", "RequestMESAPI", mesRequest); //记日志或者发邮件 continue; } MesPeocessInfoList = ConvertMesDateToPis(resultMesDataForFail, customerNameString); //AddMES_PIS(mes_Service, MesPeocessInfoList, ProcessConfList, tempTineModel, mesRequest); //找到相等时的时段执行完直接跳出 } //原逻辑 #region //if (LastDatemodel.EndTimeInterval == tempTineModel.CurrentStartMinute) //{ // current_Date = tempTineModel.CurrentDay; // current_TimeInterval = tempTineModel.CurrentInterval; // startTime = tempTineModel.CurrentStartMinute; // endTime = tempTineModel.CurrentEndMinute; // MesRequestParamModel mesRequest = new MesRequestParamModel() // { // SqlServer = SqlServer, // Database = Database, // UserID_ID = UserID_ID, // StartDate = startTime, // EndDate = endTime, // CustomerIDString = customerIDString, // AssemblyIDString = assemblyIDString // }; // resultMesDataForFail = GetMesAPIData(mesRequest); // if (resultMesDataForFail.RecordCount == 0) // { // AddLog("MES-无数据数据", "RequestMESAPI", mesRequest); // //记日志或者发邮件 // continue; // } // //MesPeocessInfoList = ConvertMesDateToPis(resultMesDataForFail); // //AddMES_PIS(mes_Service, MesPeocessInfoList, ProcessConfList, tempTineModel, mesRequest); // //找到相等时的时段执行完直接跳出 // break; //} //else //{ // current_Date = tempTineModel.CurrentDay; // current_TimeInterval = tempTineModel.CurrentInterval; // startTime = tempTineModel.CurrentStartMinute; // endTime = tempTineModel.CurrentEndMinute; // MesRequestParamModel mesRequest = new MesRequestParamModel() // { // SqlServer = SqlServer, // Database = Database, // UserID_ID = UserID_ID, // StartDate = startTime, // EndDate = endTime, // CustomerIDString = customerIDString, // AssemblyIDString = assemblyIDString // }; // resultMesDataForFail = GetMesAPIData(mesRequest); // if (resultMesDataForFail.RecordCount == 0) // { // AddLog("MES-无数据数据", "RequestMESAPI", mesRequest); // //记日志或者发邮件 // continue; // } // //MesPeocessInfoList = ConvertMesDateToPis(resultMesDataForFail); // //AddMES_PIS(mes_Service, MesPeocessInfoList, ProcessConfList, tempTineModel, mesRequest); //} #endregion //} } #endregion } } //测试代码 //var endtime = DateTime.Now; //Console.WriteLine("总耗时毫秒:" + (endtime - starttime).TotalMilliseconds); //Console.WriteLine("总耗时秒:" + (endtime - starttime).Milliseconds); //Console.WriteLine("总耗时分:" + (endtime - starttime).TotalMinutes); //Console.ReadKey(); } } }