Пример #1
0
        /// <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
        }
Пример #2
0
        /// 同步不良数据
        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
        }
Пример #3
0
        /// <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);
        }