public void ProcessRequest(HttpContext context)
        {
            //机台生产状态
            Int32 workId = 0;

            if (Int32.TryParse(context.Request["workId"], out workId))
            {
            }
            else
            {
                return;
            }
            int LocationID = workId;//车间位置主键ID
            List <DeviceStateInfo> deviceStateInfos = new List <DeviceStateInfo>();

            using (JDJS_WMS_DB_USEREntities wms = new  JDJS_WMS_DB_USEREntities())
            {
                var devices = wms.JDJS_WMS_Device_Info.Where(r => r.Position == LocationID);
                foreach (var item in devices)
                {
                    int             cncID           = item.ID;
                    DeviceStateInfo deviceStateInfo = new DeviceStateInfo();
                    deviceStateInfo.CncNum = item.MachNum;
                    var realstate = wms.JDJS_WMS_Device_RealTime_Data.Where(r => r.CncID == cncID);
                    if (realstate.Count() > 0)
                    {
                        deviceStateInfo.state = Convert.ToInt32(realstate.FirstOrDefault().ProgState);
                    }

                    var processing = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 2);
                    if (processing.Count() > 0)
                    {
                        int    id         = Convert.ToInt32(processing.FirstOrDefault().ProcessID);
                        int    processNum = Convert.ToInt32(wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == id).FirstOrDefault().ProcessID);
                        string OrderNum   = wms.JDJS_WMS_Order_Entry_Table.Where(r => r.Order_ID == processing.FirstOrDefault().OrderID).FirstOrDefault().Order_Number.ToString();

                        deviceStateInfo.CurrTask = OrderNum + "-" + processNum.ToString() + "序";
                        var pro3 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.ProcessID == id && r.isFlag == 3 && r.CncID == cncID);
                        var pro1 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.ProcessID == id && r.isFlag == 1 && r.CncID == cncID);
                        var pro2 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.ProcessID == id && r.isFlag == 2 && r.CncID == cncID);

                        deviceStateInfo.CurrTaskRate = (pro3.Count() / (pro1.Count() + pro2.Count() + pro3.Count())).ToString();

                        var nextTask = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 1 && r.ProcessID != processing.FirstOrDefault().ProcessID).OrderBy(r => r.StartTime);
                        if (nextTask.Count() > 0)
                        {
                            int    ids         = Convert.ToInt32(nextTask.FirstOrDefault().ProcessID);
                            int    processNums = Convert.ToInt32(wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == ids).FirstOrDefault().ProcessID);
                            string OrderNums   = wms.JDJS_WMS_Order_Entry_Table.Where(r => r.Order_ID == nextTask.FirstOrDefault().OrderID).FirstOrDefault().Order_Number.ToString();
                            deviceStateInfo.NextTask = OrderNums + "-" + processNums.ToString() + "序";
                        }
                    }
                    else
                    {
                        processing = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 1).OrderBy(r => r.StartTime);
                        if (processing.Count() > 0)
                        {
                            if (processing.Count() > 1)
                            {
                                var    pro        = processing.ToList();
                                int    id         = Convert.ToInt32(processing.FirstOrDefault().ProcessID);
                                int    processNum = Convert.ToInt32(wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == id).FirstOrDefault().ProcessID);
                                string OrderNum   = wms.JDJS_WMS_Order_Entry_Table.Where(r => r.Order_ID == processing.FirstOrDefault().OrderID).FirstOrDefault().Order_Number.ToString();

                                deviceStateInfo.CurrTask = OrderNum + "-" + processNum.ToString() + "序";
                                var pro3 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.ProcessID == id && r.isFlag == 3 && r.CncID == cncID);
                                var pro1 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.ProcessID == id && r.isFlag == 1 && r.CncID == cncID);
                                var pro2 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.ProcessID == id && r.isFlag == 2 && r.CncID == cncID);

                                deviceStateInfo.CurrTaskRate = (pro3.Count() / (pro1.Count() + pro2.Count() + pro3.Count())).ToString();

                                var willdo = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.ProcessID == processing.FirstOrDefault().ProcessID&& r.isFlag == 1);



                                int processID = Convert.ToInt32(pro[1].ProcessID);

                                var nextTask = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 1 && r.ProcessID != processID).OrderBy(r => r.StartTime);
                                if (nextTask.Count() > 0)
                                {
                                    int    idss         = Convert.ToInt32(nextTask.FirstOrDefault().ProcessID);
                                    int    processNumss = Convert.ToInt32(wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == idss).FirstOrDefault().ProcessID);
                                    string OrderNumss   = wms.JDJS_WMS_Order_Entry_Table.Where(r => r.Order_ID == nextTask.FirstOrDefault().OrderID).FirstOrDefault().Order_Number.ToString();
                                    deviceStateInfo.NextTask = OrderNumss + "-" + processNumss.ToString() + "序";
                                }
                            }
                            else
                            {
                                int    id         = Convert.ToInt32(processing.FirstOrDefault().ProcessID);
                                int    processNum = Convert.ToInt32(wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == id).FirstOrDefault().ProcessID);
                                string OrderNum   = wms.JDJS_WMS_Order_Entry_Table.Where(r => r.Order_ID == processing.FirstOrDefault().OrderID).FirstOrDefault().Order_Number.ToString();

                                deviceStateInfo.CurrTask = OrderNum + "-" + processNum.ToString() + "序";
                                var willdo = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.ProcessID == processing.FirstOrDefault().ProcessID&& r.isFlag == 1);
                            }
                        }
                    }
                    DateTime timenow = DateTime.Now;
                    var      jdjs    = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 3);
                    foreach (var real in jdjs)
                    {
                        DateTime endtime = Convert.ToDateTime(real.EndTime);
                        if (endtime.Date == timenow.Date)
                        {
                            deviceStateInfo.WorkPieceCount++;
                        }
                    }
                    DateTime         nowTime        = DateTime.Now;
                    DateTime         toDayTimeBegin = DateTime.Now.Date;
                    var              states         = wms.JDJS_WMS_Device_ProgState_Info.Where(r => (r.CncID == cncID) && (r.StartTime > toDayTimeBegin || r.EndTime > toDayTimeBegin || r.EndTime == null));
                    List <progState> progStates     = new List <progState>();
                    foreach (var real in states)
                    {
                        progState progState = new progState();
                        progState.ProgState = Convert.ToInt32(real.ProgState);
                        progState.startTime = Convert.ToDateTime(real.StartTime);
                        if (Convert.ToDateTime(real.StartTime) < toDayTimeBegin)
                        {
                            progState.startTime = toDayTimeBegin;
                        }
                        if (real.EndTime == null)
                        {
                            progState.EndTime = nowTime;
                        }
                        else
                        {
                            progState.EndTime = Convert.ToDateTime(real.EndTime);
                        }
                        progStates.Add(progState);
                    }
                    double runTime  = 0;
                    double openTime = 0;
                    foreach (var real in progStates)
                    {
                        if (real.ProgState != -1)
                        {
                            openTime += Convert.ToDouble((real.EndTime - real.startTime).Minutes);
                        }
                        if (real.ProgState == 1)
                        {
                            runTime += Convert.ToDouble((real.EndTime - real.startTime).Minutes);
                        }
                    }
                    double time = (nowTime - toDayTimeBegin).Minutes;
                    deviceStateInfo.OpenRate    = (openTime / time).ToString("0.0000");
                    deviceStateInfo.RunRate     = (runTime / time).ToString("0.0000");
                    deviceStateInfo.ProcessRate = (runTime / openTime).ToString("0.0000");
                    deviceStateInfo.OpenTime    = openTime.ToString("0.0000");
                    deviceStateInfo.RunTime     = runTime.ToString("0.0000");
                    deviceStateInfos.Add(deviceStateInfo);
                }
            }
            System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            var json = serializer.Serialize(deviceStateInfos);

            context.Response.Write(json);
        }
Exemplo n.º 2
0
        public void ProcessRequest(HttpContext context)
        {
            //设备利用占比
            Int32 workId = 0;

            if (Int32.TryParse(context.Request["workId"], out workId))
            {
            }
            else
            {
                return;
            }

            List <DeviceUseRate> deviceUseRates = new List <DeviceUseRate>();
            List <string>        timeList       = new List <string>();

            using (JDJS_WMS_DB_USEREntities wms = new JDJS_WMS_DB_USEREntities())
            {
                var realTime = wms.JDJS_WMS_Device_ProgState_Info;
                List <progState> progStates = new List <progState>();
                foreach (var item in realTime)
                {
                    progState state = new progState();
                    if (item.EndTime == null)
                    {
                        state.EndTime = DateTime.Now;
                    }
                    else
                    {
                        state.EndTime = Convert.ToDateTime(item.EndTime);
                    }
                    state.startTime = Convert.ToDateTime(item.StartTime);
                    state.ProgState = Convert.ToInt32(item.ProgState);
                    DateTime startTime = state.startTime;
                    DateTime endtime   = state.startTime;
                    int      day       = 1;
                    while (startTime.Date != endtime.Date)
                    {
                        progState progState = new progState();
                        progState.ProgState = Convert.ToInt32(item.ProgState);
                        progState.startTime = state.startTime;
                        progState.EndTime   = state.startTime.AddDays(1).Date.AddSeconds(-1);
                        progStates.Add(progState);
                        state.startTime = state.startTime.AddDays(1).Date;
                        startTime       = state.startTime;
                        day++;
                    }
                    progState progStateover = new progState();
                    progStateover.startTime = state.startTime;
                    progStateover.EndTime   = state.EndTime;
                    progStateover.ProgState = state.ProgState;
                    progStates.Add(progStateover);
                }
                progStates.OrderByDescending(r => r.startTime);
                foreach (var item in progStates)
                {
                    double time    = (item.EndTime - item.startTime).TotalMinutes;
                    string timestr = item.startTime.Year.ToString() + "-" + item.startTime.Month.ToString() + "-" + item.startTime.Day.ToString();
                    if (timeList.Contains(timestr))
                    {
                        var rate = deviceUseRates.Where(r => r.time == timestr).FirstOrDefault();
                        switch (item.ProgState)
                        {
                        case -1:
                            rate.other += time;
                            break;

                        case 0:
                            rate.stop = +time;
                            break;

                        case 1:
                            rate.run += time;
                            break;

                        case 2:
                            rate.other += time;
                            break;

                        case 3:
                            rate.stop += time;
                            break;

                        case 4:
                            rate.alarm += time;

                            break;

                        default:
                            break;
                        }
                    }
                    else
                    {
                        timeList.Add(timestr);
                        DeviceUseRate deviceUseRate = new DeviceUseRate();
                        deviceUseRate.time = timestr;
                        switch (item.ProgState)
                        {
                        case -1:
                            deviceUseRate.other = time;
                            break;

                        case 0:
                            deviceUseRate.stop = time;
                            break;

                        case 1:
                            deviceUseRate.run = time;
                            break;

                        case 2:
                            deviceUseRate.other = time;
                            break;

                        case 3:
                            deviceUseRate.stop = time;
                            break;

                        case 4:
                            deviceUseRate.alarm = time;

                            break;

                        default:
                            break;
                        }
                        deviceUseRates.Add(deviceUseRate);
                    }
                }
            }
            System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            var json = serializer.Serialize(deviceUseRates);

            context.Response.Write(json);
        }
        public void ProcessRequest(HttpContext context)
        {
            if (context.Request["workId"] == "全部")
            {
                {
                    //稼动率top5
                    //int LocationID = workId;
                    List <CropMobility> cropMobilitiesUse = new List <CropMobility>();

                    List <CropMobility> cropMobilities = new List <CropMobility>();
                    using (JDJS_WMS_DB_USEREntities wms = new JDJS_WMS_DB_USEREntities())
                    {
                        var devices = wms.JDJS_WMS_Device_Info;
                        foreach (var item in devices)
                        {
                            CropMobility crops  = new CropMobility();
                            int          cncID  = Convert.ToInt32(item.ID);
                            string       cncNum = item.MachNum;
                            crops.cncNum = cncNum;
                            DateTime CancleStartTime = DateTime.Now.AddDays(-1); //计算稼动率的开始时间
                            DateTime CancleEndTime   = DateTime.Now;             //计算稼动率的结束时间

                            double           runTime    = 0;
                            double           openTime   = 0;
                            var              states     = wms.JDJS_WMS_Device_ProgState_Info.Where(r => r.CncID == cncID && ((r.StartTime >= CancleStartTime && r.StartTime <= CancleEndTime) || (r.EndTime >= CancleStartTime && r.EndTime <= CancleEndTime) || (r.StartTime <= CancleStartTime && r.EndTime >= CancleEndTime)));
                            List <progState> progStates = new List <progState>();
                            foreach (var real in states)
                            {
                                progState progState = new progState();
                                progState.ProgState = Convert.ToInt32(real.ProgState);
                                progState.startTime = Convert.ToDateTime(real.StartTime);
                                if (Convert.ToDateTime(real.StartTime) < CancleStartTime)
                                {
                                    progState.startTime = CancleStartTime;
                                }
                                if (real.EndTime == null)
                                {
                                    progState.EndTime = DateTime.Now;
                                }
                                else
                                {
                                    if (real.EndTime > CancleEndTime)
                                    {
                                        progState.EndTime = Convert.ToDateTime(CancleEndTime);
                                    }
                                    else
                                    {
                                        progState.EndTime = Convert.ToDateTime(real.EndTime);
                                    }
                                }
                                progStates.Add(progState);
                            }

                            foreach (var real in progStates)
                            {
                                if (real.ProgState != -1)
                                {
                                    openTime += Convert.ToDouble((real.EndTime - real.startTime).TotalMinutes);
                                }
                                if (real.ProgState == 1)
                                {
                                    runTime += Convert.ToDouble((real.EndTime - real.startTime).TotalMinutes);
                                }
                            }
                            if (openTime != 0)
                            {
                                crops.progress = runTime / openTime;
                            }
                            else
                            {
                                crops.progress = 0;
                            }
                            cropMobilities.Add(crops);
                        }
                    }

                    cropMobilities = cropMobilities.OrderByDescending(r => r.progress).ToList();

                    for (int i = 0; i < 5; i++)
                    {
                        if (cropMobilities.Count() > i)
                        {
                            CropMobility crop = new CropMobility();
                            crop.cncNum   = cropMobilities[i].cncNum;
                            crop.progress = Math.Round(cropMobilities[i].progress, 4);
                            cropMobilitiesUse.Add(crop);
                        }
                        else
                        {
                            CropMobility crop = new CropMobility();
                            crop.cncNum   = "";
                            crop.progress = 0;
                            cropMobilitiesUse.Add(crop);
                        }
                    }

                    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                    var model = new { code = 0, data = cropMobilitiesUse };
                    var json  = serializer.Serialize(model);
                    context.Response.Write("data:" + json + "\n\n");
                    context.Response.ContentType = "text/event-stream";
                }
            }
            else if (context.Request["workId"] == "34台")
            {
                {
                    List <int> cncIDs = new List <int>();
                    for (int i = 95; i < 112; i++)
                    {
                        cncIDs.Add(i);
                    }
                    for (int i = 122; i < 139; i++)
                    {
                        cncIDs.Add(i);
                    }
                    //稼动率top5
                    //int LocationID = workId;
                    List <CropMobility> cropMobilitiesUse = new List <CropMobility>();

                    List <CropMobility> cropMobilities = new List <CropMobility>();
                    using (JDJS_WMS_DB_USEREntities wms = new JDJS_WMS_DB_USEREntities())
                    {
                        var devices = wms.JDJS_WMS_Device_Info;
                        foreach (var item in devices)
                        {
                            CropMobility crops = new CropMobility();
                            int          cncID = Convert.ToInt32(item.ID);
                            if (cncIDs.Contains(cncID))
                            {
                                string cncNum = item.MachNum;
                                crops.cncNum = cncNum;
                                DateTime CancleStartTime = DateTime.Now.AddDays(-1); //计算稼动率的开始时间
                                DateTime CancleEndTime   = DateTime.Now;             //计算稼动率的结束时间

                                double           runTime    = 0;
                                double           openTime   = 0;
                                var              states     = wms.JDJS_WMS_Device_ProgState_Info.Where(r => r.CncID == cncID && ((r.StartTime >= CancleStartTime && r.StartTime <= CancleEndTime) || (r.EndTime >= CancleStartTime && r.EndTime <= CancleEndTime) || (r.StartTime <= CancleStartTime && r.EndTime >= CancleEndTime)));
                                List <progState> progStates = new List <progState>();
                                foreach (var real in states)
                                {
                                    progState progState = new progState();
                                    progState.ProgState = Convert.ToInt32(real.ProgState);
                                    progState.startTime = Convert.ToDateTime(real.StartTime);
                                    if (Convert.ToDateTime(real.StartTime) < CancleStartTime)
                                    {
                                        progState.startTime = CancleStartTime;
                                    }
                                    if (real.EndTime == null)
                                    {
                                        progState.EndTime = DateTime.Now;
                                    }
                                    else
                                    {
                                        if (real.EndTime > CancleEndTime)
                                        {
                                            progState.EndTime = Convert.ToDateTime(CancleEndTime);
                                        }
                                        else
                                        {
                                            progState.EndTime = Convert.ToDateTime(real.EndTime);
                                        }
                                    }
                                    progStates.Add(progState);
                                }

                                foreach (var real in progStates)
                                {
                                    if (real.ProgState != -1)
                                    {
                                        openTime += Convert.ToDouble((real.EndTime - real.startTime).TotalMinutes);
                                    }
                                    if (real.ProgState == 1)
                                    {
                                        runTime += Convert.ToDouble((real.EndTime - real.startTime).TotalMinutes);
                                    }
                                }
                                if (openTime != 0)
                                {
                                    crops.progress = runTime / openTime;
                                }
                                else
                                {
                                    crops.progress = 0;
                                }
                                cropMobilities.Add(crops);
                            }
                        }
                    }

                    cropMobilities = cropMobilities.OrderByDescending(r => r.progress).ToList();

                    for (int i = 0; i < 5; i++)
                    {
                        if (cropMobilities.Count() > i)
                        {
                            CropMobility crop = new CropMobility();
                            crop.cncNum   = cropMobilities[i].cncNum;
                            crop.progress = Math.Round(cropMobilities[i].progress, 4);
                            cropMobilitiesUse.Add(crop);
                        }
                        else
                        {
                            CropMobility crop = new CropMobility();
                            crop.cncNum   = "";
                            crop.progress = 0;
                            cropMobilitiesUse.Add(crop);
                        }
                    }

                    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                    var model = new { code = 0, data = cropMobilitiesUse };
                    var json  = serializer.Serialize(model);
                    context.Response.Write("data:" + json + "\n\n");
                    context.Response.ContentType = "text/event-stream";
                }
            }
            else
            {
                var workId = int.Parse(context.Request["workId"]);
                {
                    //稼动率top5
                    int LocationID = workId;
                    List <CropMobility> cropMobilitiesUse = new List <CropMobility>();

                    List <CropMobility> cropMobilities = new List <CropMobility>();
                    using (JDJS_WMS_DB_USEREntities wms = new JDJS_WMS_DB_USEREntities())
                    {
                        var works  = wms.JDJS_WMS_Location_Info.ToList();
                        var device = wms.JDJS_WMS_Device_Info.ToList();
                        List <WebApplication2.Kanban.现场.CncRead> objs = new List <WebApplication2.Kanban.现场.CncRead>();
                        List <int> workIds = new List <int>();
                        WebApplication2.Kanban.现场.机台状态 funs = new WebApplication2.Kanban.现场.机台状态();
                        var devices = funs.fun(workId, works, device, objs, workIds);


                        //var devices = wms.JDJS_WMS_Device_Info.Where(r => r.Position == LocationID);

                        foreach (var item in devices)
                        {
                            CropMobility crops  = new CropMobility();
                            int          cncID  = Convert.ToInt32(item.ID);
                            string       cncNum = item.MachNum;
                            crops.cncNum = cncNum;
                            DateTime CancleStartTime = DateTime.Now.AddDays(-1); //计算稼动率的开始时间
                            DateTime CancleEndTime   = DateTime.Now;             //计算稼动率的结束时间

                            double           runTime    = 0;
                            double           openTime   = 0;
                            var              states     = wms.JDJS_WMS_Device_ProgState_Info.Where(r => r.CncID == cncID && ((r.StartTime >= CancleStartTime && r.StartTime <= CancleEndTime) || (r.EndTime >= CancleStartTime && r.EndTime <= CancleEndTime) || (r.StartTime <= CancleStartTime && r.EndTime >= CancleEndTime)));
                            List <progState> progStates = new List <progState>();
                            foreach (var real in states)
                            {
                                progState progState = new progState();
                                progState.ProgState = Convert.ToInt32(real.ProgState);
                                progState.startTime = Convert.ToDateTime(real.StartTime);
                                if (Convert.ToDateTime(real.StartTime) < CancleStartTime)
                                {
                                    progState.startTime = CancleStartTime;
                                }
                                if (real.EndTime == null)
                                {
                                    progState.EndTime = DateTime.Now;
                                }
                                else
                                {
                                    if (real.EndTime > CancleEndTime)
                                    {
                                        progState.EndTime = Convert.ToDateTime(CancleEndTime);
                                    }
                                    else
                                    {
                                        progState.EndTime = Convert.ToDateTime(real.EndTime);
                                    }
                                }
                                progStates.Add(progState);
                            }

                            foreach (var real in progStates)
                            {
                                if (real.ProgState != -1)
                                {
                                    openTime += Convert.ToDouble((real.EndTime - real.startTime).TotalMinutes);
                                }
                                if (real.ProgState == 1)
                                {
                                    runTime += Convert.ToDouble((real.EndTime - real.startTime).TotalMinutes);
                                }
                            }
                            if (openTime != 0)
                            {
                                crops.progress = runTime / openTime;
                            }
                            else
                            {
                                crops.progress = 0;
                            }
                            cropMobilities.Add(crops);
                        }
                    }

                    cropMobilities = cropMobilities.OrderByDescending(r => r.progress).ToList();

                    for (int i = 0; i < 5; i++)
                    {
                        if (cropMobilities.Count() > i)
                        {
                            CropMobility crop = new CropMobility();
                            crop.cncNum   = cropMobilities[i].cncNum;
                            crop.progress = Math.Round(cropMobilities[i].progress, 4);
                            cropMobilitiesUse.Add(crop);
                        }
                        else
                        {
                            CropMobility crop = new CropMobility();
                            crop.cncNum   = "";
                            crop.progress = 0;
                            cropMobilitiesUse.Add(crop);
                        }
                    }

                    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                    var model = new { code = 0, data = cropMobilitiesUse };
                    var json  = serializer.Serialize(model);
                    context.Response.Write("data:" + json + "\n\n");
                    context.Response.ContentType = "text/event-stream";
                }
            }
        }
Exemplo n.º 4
0
        public void ProcessRequest(HttpContext context)
        {
            int workId = 0;

            if (Int32.TryParse(context.Request["workId"], out workId))
            {
                {
                    int    LocationID = workId;
                    double TimeC      = 0;
                    double xingnnegC  = 0;
                    {
                        //稼动率评估

                        DateTime nowTime        = DateTime.Now;
                        DateTime toDayTimeBegin = DateTime.Now.AddDays(-1);

                        double runTime   = 0;
                        double openTime  = 0;
                        double lilunTime = 0;
                        double shijiTime = 0;
                        using (JDJS_WMS_DB_USEREntities wms = new JDJS_WMS_DB_USEREntities())
                        {
                            var works   = wms.JDJS_WMS_Location_Info.ToList();
                            var devices = wms.JDJS_WMS_Device_Info.ToList();
                            List <WebApplication2.Kanban.现场.CncRead> objs = new List <WebApplication2.Kanban.现场.CncRead>();
                            List <int> workIds = new List <int>();
                            WebApplication2.Kanban.现场.机台状态 funs = new 现场.机台状态();
                            var Devices = funs.fun(workId, works, devices, objs, workIds);

                            //var Devices = wms.JDJS_WMS_Device_Info.Where(r => r.Position == LocationID);
                            foreach (var item in Devices)
                            {
                                int cncID  = Convert.ToInt32(item.ID);
                                var states = wms.JDJS_WMS_Device_ProgState_Info.Where(r => r.CncID == cncID && (r.StartTime > toDayTimeBegin || r.EndTime > toDayTimeBegin || r.EndTime == null));
                                List <progState> progStates = new List <progState>();
                                foreach (var real in states)
                                {
                                    progState progState = new progState();
                                    progState.ProgState = Convert.ToInt32(real.ProgState);
                                    progState.startTime = Convert.ToDateTime(real.StartTime);
                                    if (Convert.ToDateTime(real.StartTime) < toDayTimeBegin)
                                    {
                                        progState.startTime = toDayTimeBegin;
                                    }
                                    if (real.EndTime == null)
                                    {
                                        progState.EndTime = nowTime;
                                    }
                                    else
                                    {
                                        progState.EndTime = Convert.ToDateTime(real.EndTime);
                                    }
                                    progStates.Add(progState);
                                }

                                foreach (var real in progStates)
                                {
                                    if (real.ProgState != -1)
                                    {
                                        openTime += Convert.ToDouble((real.EndTime - real.startTime).TotalMinutes);
                                    }
                                    if (real.ProgState == 1)
                                    {
                                        runTime += Convert.ToDouble((real.EndTime - real.startTime).TotalMinutes);
                                    }
                                }
                            }
                            if (openTime != 0)
                            {
                                TimeC = runTime / openTime;
                            }
                            else
                            {
                                TimeC = 0;
                            }
                            foreach (var item in Devices)
                            {
                                int cncID = Convert.ToInt32(item.ID);

                                var processes = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.EndTime > toDayTimeBegin && r.isFlag == 3);
                                foreach (var real in processes)
                                {
                                    int    processID   = Convert.ToInt32(real.ProcessID);
                                    var    processInfo = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == processID).FirstOrDefault();
                                    double processTime = Convert.ToDouble(processInfo.ProcessTime);
                                    lilunTime += processTime;
                                    double processTimeLilun = (Convert.ToDateTime(real.EndTime) - Convert.ToDateTime(real.StartTime)).TotalMinutes;
                                    shijiTime += processTimeLilun;
                                }
                            }
                            if (shijiTime == 0)
                            {
                                xingnnegC = 0;
                            }
                            else
                            {
                                xingnnegC = lilunTime / shijiTime;
                            }
                        }
                    }

                    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                    var model = new { TimeC = TimeC, xingnnegC = xingnnegC };
                    var json  = serializer.Serialize(model);

                    context.Response.Write("data:" + json + "\n\n");
                    context.Response.ContentType = "text/event-stream";
                }
            }
            else
            {
                return;
            }
        }