/// <summary> /// 同步机台状态值到数据库 /// </summary> public void SyncRealStatus(SystemProjectPlantDTO customerModel, DateTime startTime, DateTime endTime, string currentDay, int ShiftTimeID, string TimeInterval, List <OEE_MachineInfo> allMachines) { #region 步状态数据 try { if (DateTime.Now < endTime) { endTime = DateTime.Now; /// 截止到执行时间为准 } var InsertLists = new List <OEE_MachineStatus>(); List <OEE_MachineStatusD> StatusLists = OEE_OutputRepository.getOEEStatusDatas(customerModel.Plant, startTime, endTime); var CurrentDate = Convert.ToDateTime(currentDay); foreach (var item in StatusLists) { OEE_MachineStatus InsertItem = new OEE_MachineStatus(); var currentItem = allMachines.Find(o => o.MachineNo == item.MachineName); if (currentItem == null) { continue; } //得到当前机台所在的工站 var CurrentStationUID = currentItem.GL_Station.StationID; InsertItem.OEE_MachineInfo_UID = currentItem.OEE_MachineInfo_UID; //InsertItem.Plant_Organization_UID = currentItem.Plant_Organization_UID; InsertItem.ShiftTimeID = ShiftTimeID; InsertItem.Product_Date = CurrentDate; InsertItem.StartTime = item.StartTime; InsertItem.StatusID = item.StatusID; InsertItem.StatusDuration = item.StatusDuration; InsertItem.UpdateTime = DateTime.Now; InsertItem.EndTime = item.EndTIme; InsertLists.Add(InsertItem); } //先删掉当前班次的数据然后新增 var DeleteItemList = Oee_MachineStatusRepository.GetMany(o => o.Product_Date == CurrentDate && o.ShiftTimeID == ShiftTimeID); Oee_MachineStatusRepository.DeleteList(DeleteItemList.ToList()); Oee_MachineStatusRepository.AddList(InsertLists); unitOfWork.Commit(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); //后续记录到失败日志表 } #endregion }
/// 同步不良数据 public List <int> SyncDefect(SystemProjectPlantDTO customerModel, DateTime TimeIntervalStart, DateTime TimeIntervalEnd, string currentDay, int ShiftTimeID, string TimeInterval, List <OEE_MachineInfo> allMachines) { #region 步不良数据 List <int> MissingDefectCodeUIDList = new List <int>(); try { if (customerModel.Plant == "CTU_M" || customerModel.Plant == "CTU") { //获取停机id List <OEE_StationDefectCode> DefectCodeLists = OEE_OutputRepository.getAllErrorCodeByProject(customerModel.Project_UID); //先判断当天当班次是否已经有数据,有数据为Update List <OEE_DefectCodeDailyNum> DefectRocordLists = OEE_OutputRepository.GetOEEDefectRord(customerModel.Project_UID, currentDay, ShiftTimeID, TimeInterval); //先判断当天当班次是否已经有数据,有数据为Update List <OEE_DefectCodeDailySum> DefectSumLists = OEE_OutputRepository.GetOEEDefectSum(customerModel.Project_UID, currentDay, ShiftTimeID); //d待插入的数据集 var InsertLists = new List <OEE_DefectCodeDailyNum>(); var UPdatesLists = new List <OEE_DefectCodeDailyNum>(); //不良当前时段数据 List <LoacalMachineDefect> MachineDefectList = OEE_OutputRepository.GetDefectInterval(TimeIntervalStart, TimeIntervalEnd); //将当前时段的数据插入或者更新到数据库 OEE_StationDefectCode CurrentCode; List <OEE_EveryDayMachineDTCode> MissingDTList = new List <OEE_EveryDayMachineDTCode>(); foreach (var item in MachineDefectList) { OEE_DefectCodeDailyNum InsertItem = new OEE_DefectCodeDailyNum(); var currentItem = allMachines.Find(o => o.MachineNo == item.MachineNo); if (currentItem == null) { continue; } //得到当前机台所在的工站 var CurrentStationUID = currentItem.GL_Station.StationID; InsertItem.BG_Organization_UID = currentItem.BG_Organization_UID; InsertItem.Plant_Organization_UID = currentItem.Plant_Organization_UID; InsertItem.FunPlant_Organization_UID = currentItem.FunPlant_Organization_UID; InsertItem.OEE_MachineInfo_UID = currentItem.OEE_MachineInfo_UID; ///找到当前的代码 CurrentCode = DefectCodeLists.Find(o => o.StationID == currentItem.GL_Station.StationID && o.Defect_Code == item.DefectCode); //若机台提供的不良代码不在用户配置的数据中,系统需记录, if (CurrentCode != null) { InsertItem.OEE_StationDefectCode_UID = CurrentCode.OEE_StationDefectCode_UID; } else { OEE_EveryDayMachineDTCode MissingItem = new OEE_EveryDayMachineDTCode(); MissingItem.OEE_MachineInfo_UID = currentItem.OEE_MachineInfo_UID; MissingItem.DFCode = item.DefectCode; MissingItem.Product_Date = Convert.ToDateTime(currentDay); MissingItem.ShiftTimeID = ShiftTimeID; MissingItem.Create_Date = DateTime.Now; MissingItem.Is_Enable = true; MissingItem.Modified_Date = DateTime.Now; MissingItem.Modified_UID = 90004; //SA表设计问题导致这里弄的默认值 MissingDTList.Add(MissingItem); MissingDefectCodeUIDList.Add(currentItem.OEE_MachineInfo_UID); continue; } InsertItem.ProductDate = Convert.ToDateTime(currentDay); InsertItem.ShiftTimeID = ShiftTimeID; InsertItem.TimeInterval = TimeInterval; InsertItem.DefectNum = item.DownTime; InsertItem.Modify_Date = DateTime.Now; //判断是否该机台该天是否已经写入数据库 var DefectDownItem = DefectRocordLists.Find(o => o.OEE_MachineInfo_UID == currentItem.OEE_MachineInfo_UID && o.OEE_StationDefectCode_UID == CurrentCode.OEE_StationDefectCode_UID); if (DefectDownItem != null) { InsertItem.OEE_DefectCodeDailyNum_UID = DefectDownItem.OEE_DefectCodeDailyNum_UID; UPdatesLists.Add(InsertItem); } else { InsertLists.Add(InsertItem); } //OEE_MachineDailyDownRecordRepository.Add(InsertItem); //单个添加的上下文是很慢的,如果使用Save Changes 更慢。需要批量 } OEE_DefectCodeDailyNumDTORepository.AddList(InsertLists); OEE_DefectCodeDailyNumDTORepository.UpdateList(UPdatesLists); OEE_EveryDayMachineDTCodeRepository.AddList(MissingDTList); unitOfWork.Commit(); ////同步不良汇总数据 OEE_OutputRepository.setDefectSums(currentDay, ShiftTimeID, customerModel.Organization_UID); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); //后续记录到失败日志表 } return(MissingDefectCodeUIDList); #endregion }
/// <summary> /// 同步停机数据 /// </summary> /// <param name="customerModel"></param> /// <param name="startTimeDate"></param> /// <param name="endTimeDate"></param> /// <param name="currentDay"></param> /// <param name="ShiftTimeID"></param> /// <param name="TimeInterval"></param> /// <param name="allMachines"></param> /// <returns></returns> public List <int> SyncDT(SystemProjectPlantDTO customerModel, DateTime startTimeDate, DateTime endTimeDate, string currentDay, int ShiftTimeID, string TimeInterval, List <OEE_MachineInfo> allMachines) { if (DateTime.Now < endTimeDate) { endTimeDate = DateTime.Now; /// 截止到执行时间为准 } List <int> MissingDownMachineUIDList = new List <int>(); #region 步停机数据 try { //先获取Local DB的停机数据。 //获取停机id List <OEE_DownTimeCode> DownCodeLists = OEE_OutputRepository.getAllDownCodeByProject(customerModel.Project_UID); //先判断当天当班次是否已经有数据,有数据为Update List <OEE_MachineDailyDownRecord> DownRocordLists = OEE_OutputRepository.GetOEEDownRocord(customerModel.Project_UID, currentDay, ShiftTimeID); //d待插入的数据集 var InsertLists = new List <OEE_MachineDailyDownRecord>(); var UPdatesLists = new List <OEE_MachineDailyDownRecord>(); List <OEE_DownRecordsDTO> DownLists = OEE_OutputRepository.getOEELocalDatas(customerModel.Plant, startTimeDate, endTimeDate); OEE_DownTimeCode CurrentCode; List <OEE_EveryDayDFcodeMissing> MissingDFList = new List <OEE_EveryDayDFcodeMissing>(); var DBMissingDFList = OEE_EveryDayDFcodeMissingRepository.getDFMissingList(currentDay, ShiftTimeID); foreach (var item in DownLists) { OEE_MachineDailyDownRecord InsertItem = new OEE_MachineDailyDownRecord(); var currentItem = allMachines.Find(o => o.MachineNo == item.MachineName); if (currentItem == null) { continue; } //得到当前机台所在的工站 var CurrentStationUID = currentItem.GL_Station.StationID; InsertItem.BG_Organization_UID = currentItem.BG_Organization_UID; InsertItem.DownDate = Convert.ToDateTime(currentDay); InsertItem.DownTime = item.count; InsertItem.EndTIme = Convert.ToDateTime(item.EndTIme); InsertItem.FunPlant_Organization_UID = currentItem.FunPlant_Organization_UID; ///找到当前的代码 CurrentCode = DownCodeLists.Find(o => (o.StationID == null && o.Error_Code == item.ErrorCode) || (o.StationID != null && o.StationID == currentItem.GL_Station.StationID && o.Error_Code == item.ErrorCode)); //若机台提供的停机代码不在用户配置的数据中,系统需记录,用户还未明确记录格式,当前未完成 if (CurrentCode != null) { InsertItem.OEE_DownTimeCode_UID = CurrentCode.OEE_DownTimeCode_UID; } else { #region 插入停机名称漏失表 //先判断是否已经插入数据库,没有插入数据库的才需要插入数据库 if (DBMissingDFList.Find(o => o.DownTimeCode == item.ErrorCode) != null) { continue; } OEE_EveryDayDFcodeMissing MissingItem = new OEE_EveryDayDFcodeMissing(); MissingItem.BG_Organization_UID = currentItem.BG_Organization_UID; MissingItem.Plant_Organization_UID = currentItem.Plant_Organization_UID; MissingItem.FunPlant_Organization_UID = currentItem.FunPlant_Organization_UID; MissingItem.OEE_MachineInfo_UID = currentItem.OEE_MachineInfo_UID; MissingItem.DownTimeCode = item.ErrorCode; MissingItem.Product_Date = Convert.ToDateTime(currentDay); MissingItem.ShiftTimeID = ShiftTimeID; MissingItem.Create_Date = DateTime.Now; MissingItem.Is_Enable = true; MissingItem.Modified_Date = DateTime.Now; MissingDFList.Add(MissingItem); MissingDownMachineUIDList.Add(currentItem.OEE_MachineInfo_UID); #endregion continue; } InsertItem.OEE_MachineInfo_UID = currentItem.OEE_MachineInfo_UID; InsertItem.Plant_Organization_UID = currentItem.Plant_Organization_UID; InsertItem.ShiftTimeID = ShiftTimeID; InsertItem.StartTime = Convert.ToDateTime(item.StartTime); InsertItem.StationID = currentItem.StationID; //判断是否该机台该天是否已经写入数据库 // var CurrentDownItem = DownRocordLists.Find(o => o.OEE_MachineInfo_UID == currentItem.OEE_MachineInfo_UID && o.OEE_DownTimeCode_UID == CurrentCode.OEE_DownTimeCode_UID); //if (CurrentDownItem != null) //{ // InsertItem.OEE_MachineDailyDownRecord_UID = CurrentDownItem.OEE_MachineDailyDownRecord_UID; // UPdatesLists.Add(InsertItem); //} //else //{ InsertLists.Add(InsertItem); // } //OEE_MachineDailyDownRecordRepository.Add(InsertItem); //单个添加的上下文是很慢的,如果使用Save Changes 更慢。需要批量 } if (InsertLists.Count != 0) { //先删掉当前数据,然后新增插入数据 OEE_OutputRepository.DeleteDownRocords(customerModel.Project_UID, currentDay, ShiftTimeID); OEE_MachineDailyDownRecordRepository.AddList(InsertLists); } //if (UPdatesLists.Count != 0) // OEE_MachineDailyDownRecordRepository.UpdateList(UPdatesLists); if (MissingDFList.Count != 0) { OEE_EveryDayDFcodeMissingRepository.AddList(MissingDFList); } unitOfWork.Commit(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); //后续记录到失败日志表 } #endregion return(MissingDownMachineUIDList); }