public List <OEE_AbnormalDFCode> GetDTcodeMissingList(OEE_ReprortSearchModel serchModel)
        {
            var query = from MissingList in DataContext.OEE_EveryDayDFcodeMissing
                        where MissingList.OEE_MachineInfo.StationID == serchModel.StationID &&
                        MissingList.Product_Date == serchModel.StartTime
                        select new OEE_AbnormalDFCode
            {
                Plant_Organization_Name    = MissingList.OEE_MachineInfo.System_Organization.Organization_Name,
                BG_Organization_Name       = MissingList.OEE_MachineInfo.System_Organization1.Organization_Name,
                FunPlant_Organization_Name = MissingList.OEE_MachineInfo.System_Organization2.Organization_Name,
                ProjectName  = MissingList.OEE_MachineInfo.System_Project.Project_Name,
                LineName     = MissingList.OEE_MachineInfo.GL_Line.LineName,
                StationName  = MissingList.OEE_MachineInfo.GL_Station.StationName,
                MachineName  = MissingList.OEE_MachineInfo.MachineNo,
                Machine_UID  = MissingList.OEE_MachineInfo_UID,
                ShiftName    = MissingList.GL_ShiftTime.Shift,
                DownTimeCode = MissingList.DownTimeCode,
                ProductDate  = MissingList.Product_Date,
                CreateTime   = MissingList.Create_Date,
                ShiftTimeID  = MissingList.ShiftTimeID,
            };

            if (serchModel.ShiftTimeID != -1)
            {
                query = query.Where(p => p.ShiftTimeID == serchModel.ShiftTimeID);
            }

            return(query.ToList());
        }
        public List <OEE_MachineDailyDownRecordDTO> GetMachineDailyDownRecord(OEE_ReprortSearchModel searchModel)
        {
            var query = from downRecord in DataContext.OEE_MachineDailyDownRecord
                        where downRecord.BG_Organization_UID == searchModel.BG_Organization_UID &&
                        downRecord.Plant_Organization_UID == searchModel.Plant_Organization_UID &&
                        downRecord.StationID == searchModel.StationID &&
                        downRecord.OEE_MachineInfo_UID == searchModel.EQP_Uid &&
                        downRecord.OEE_DownTimeCode.Is_Enable == true
                        select new OEE_MachineDailyDownRecordDTO()
            {
                Plant_Organization_UID    = downRecord.Plant_Organization_UID,
                BG_Organization_UID       = downRecord.BG_Organization_UID,
                FunPlant_Organization_UID = downRecord.FunPlant_Organization_UID,
                StationID            = downRecord.StationID,
                OEE_MachineInfo_UID  = downRecord.OEE_MachineInfo_UID,
                OEE_DownTimeCode_UID = downRecord.OEE_DownTimeCode_UID,
                DownDate             = downRecord.DownDate,
                ShiftTimeID          = downRecord.ShiftTimeID,
                StartTime            = downRecord.StartTime,
                EndTIme              = downRecord.EndTIme,
                DownTime             = downRecord.DownTime,
                Is_Enable            = downRecord.OEE_DownTimeCode.Is_Enable,
                Type_Name            = downRecord.OEE_DownTimeCode.OEE_DownTimeType.Type_Name,
                OEE_DownTimeType_UID = downRecord.OEE_DownTimeCode.OEE_DownTimeType.OEE_DownTimeType_UID
            };

            query = query.Where(p => p.DownDate >= searchModel.StartTime && p.DownDate <= searchModel.EndTime);
            //全天
            if (searchModel.ShiftTimeID != -1)
            {
                query = query.Where(p => p.ShiftTimeID == searchModel.ShiftTimeID);
            }
            return(query.ToList());
        }
        public IQueryable <OEE_MachineDailyDownRecordDTO> GetDownTimeDetialsDTO(OEE_ReprortSearchModel searchModel, Page page, out int totalcount)
        {
            var query = from downRecord in DataContext.OEE_MachineDailyDownRecord
                        where downRecord.BG_Organization_UID == searchModel.BG_Organization_UID &&
                        downRecord.Plant_Organization_UID == searchModel.Plant_Organization_UID &&
                        downRecord.StationID == searchModel.StationID &&
                        downRecord.OEE_MachineInfo_UID == searchModel.EQP_Uid &&
                        downRecord.OEE_DownTimeCode.Is_Enable == true
                        select new OEE_MachineDailyDownRecordDTO()
            {
                Plant_Organization_UID    = downRecord.Plant_Organization_UID,
                BG_Organization_UID       = downRecord.BG_Organization_UID,
                FunPlant_Organization_UID = downRecord.FunPlant_Organization_UID,
                StationID            = downRecord.StationID,
                OEE_MachineInfo_UID  = downRecord.OEE_MachineInfo_UID,
                OEE_DownTimeCode_UID = downRecord.OEE_DownTimeCode_UID,
                DownDate             = downRecord.DownDate,
                ShiftTimeID          = downRecord.ShiftTimeID,
                StartTime            = downRecord.StartTime,
                EndTIme              = downRecord.EndTIme,
                DownTime             = downRecord.DownTime,
                Is_Enable            = downRecord.OEE_DownTimeCode.Is_Enable,
                Type_Name            = downRecord.OEE_DownTimeCode.OEE_DownTimeType.Type_Name,
                OEE_DownTimeType_UID = downRecord.OEE_DownTimeCode.OEE_DownTimeType.OEE_DownTimeType_UID,
                Error_Code           = downRecord.OEE_DownTimeCode.Error_Code,
                Upload_Ways          = downRecord.OEE_DownTimeCode.Upload_Ways,
                Level_Details        = downRecord.OEE_DownTimeCode.Level_Details,
            };

            query = query.Where(p => p.OEE_DownTimeType_UID == searchModel.OEE_DownTimeType_UID);
            var DownDate = Convert.ToDateTime(searchModel.StartTime.ToString("yyyy-MM-dd"));

            query = query.Where(p => p.DownDate == DownDate);
            if (searchModel.StationID != -1)
            {
                query = query.Where(p => p.StationID == searchModel.StationID);
            }
            if (searchModel.ShiftTimeID != -1)
            {
                query = query.Where(p => p.ShiftTimeID == searchModel.ShiftTimeID);
            }

            totalcount = query.Count();
            var list = query.ToList();

            List <OEE_MachineDailyDownRecordDTO> modelList = new List <OEE_MachineDailyDownRecordDTO>();
            var rrrorCodeGroup = list.GroupBy(p => p.Error_Code);

            foreach (var item in rrrorCodeGroup)
            {
                OEE_MachineDailyDownRecordDTO model = new OEE_MachineDailyDownRecordDTO();
                model.Error_Code    = item.Key;
                model.Level_Details = item.FirstOrDefault().Level_Details;
                model.DownTime      = item.Sum(p => p.DownTime);
                modelList.Add(model);
            }

            query = modelList.OrderByDescending(p => p.DownTime).AsQueryable().GetPage(page);
            return(query);
        }
        /// <summary>
        /// 获取该工站下面所有工站的数据
        /// </summary>
        /// <returns></returns>
        public List <OEE_MachineStatus> GetAllStationMachineStatusList(OEE_ReprortSearchModel serchModel)
        {
            var query = from machienStatus in DataContext.OEE_MachineStatus
                        select new OEE_MachineStatusDTO
            {
                OEE_MachineStatus_UID = machienStatus.OEE_MachineInfo_UID,
                OEE_MachineInfo_UID   = machienStatus.OEE_MachineInfo_UID,
                Product_Date          = machienStatus.Product_Date,
                ShiftTimeID           = machienStatus.ShiftTimeID,
                StatusID       = machienStatus.StatusID,
                StatusDuration = machienStatus.StatusDuration,
                UpdateTime     = machienStatus.UpdateTime,
            };

            return(null);
        }
        public List <OEE_DefectCodeDailySumDTO> GetDefectCodeDailySum(OEE_ReprortSearchModel serchModel)
        {
            var startProductDate = Convert.ToDateTime(serchModel.StartTime.ToShortDateString());
            var endProductDate   = Convert.ToDateTime(serchModel.EndTime.ToShortDateString());
            var query            = from dayOutput in DataContext.OEE_DefectCodeDailySum
                                   where dayOutput.Plant_Organization_UID == serchModel.Plant_Organization_UID &&
                                   dayOutput.BG_Organization_UID == serchModel.BG_Organization_UID &&
                                   dayOutput.OEE_MachineInfo_UID == serchModel.EQP_Uid &&
                                   dayOutput.OEE_StationDefectCode.Is_Enable == true
                                   select new OEE_DefectCodeDailySumDTO
            {
                OEE_DefectCodeDailySum_UID = dayOutput.OEE_DefectCodeDailySum_UID,
                Plant_Organization_UID     = dayOutput.Plant_Organization_UID,
                BG_Organization_UID        = dayOutput.BG_Organization_UID,
                FunPlant_Organization_UID  = dayOutput.FunPlant_Organization_UID,
                OEE_MachineInfo_UID        = dayOutput.OEE_MachineInfo_UID,
                OEE_StationDefectCode_UID  = dayOutput.OEE_StationDefectCode_UID,
                DefectNum         = dayOutput.DefectNum,
                ProductDate       = dayOutput.ProductDate,
                ShiftTimeID       = dayOutput.ShiftTimeID,
                DefectName        = dayOutput.OEE_StationDefectCode.DefectEnglishName,
                DefectChineseName = dayOutput.OEE_StationDefectCode.DefecChinesetName
            };

            query = query.Where(p => p.ProductDate >= startProductDate && p.ProductDate <= endProductDate);

            if (serchModel.ShiftTimeID == -1)
            {
                //query = query.Where(p => p.ProductDate == serchModel.StartTime);
            }
            else
            {
                query = query.Where(p => p.ShiftTimeID == serchModel.ShiftTimeID);
            }

            return(query.ToList());
        }