コード例 #1
0
        public void ProcessRequest(HttpContext context)
        {
            if (context.Request["workId"] == "全部")
            {
                {
                    //var workId = int.Parse(context.Request["workId"]);

                    {
                        //Top5换刀

                        //int LocationID = workId;
                        List <Tool>     tools     = new List <Tool>();
                        List <ToolInfo> toolInfos = new List <ToolInfo>();
                        DateTime        timeNow   = DateTime.Now;
                        TimeSpan        span      = timeNow - timeNow.AddSeconds(-1);
                        using (JDJS_WMS_DB_USEREntities wms = new JDJS_WMS_DB_USEREntities())
                        {
                            var devices = wms.JDJS_WMS_Device_Info;
                            foreach (var item in devices)
                            {
                                int    cncID    = Convert.ToInt32(item.ID);
                                string cncNum   = item.MachNum;
                                var    cncState = wms.JDJS_WMS_Device_RealTime_Data.Where(r => r.CncID == cncID).FirstOrDefault();
                                var    toolLife = wms.JDJS_WMS_Tool_LifeTime_Management.Where(r => r.CncID == cncID);
                                foreach (var real in toolLife)
                                {
                                    int toolNum = Convert.ToInt32(real.ToolID);
                                    var shank   = wms.JDJS_WMS_Tool_Shank_Table.Where(r => r.CncID == cncID && r.ToolNum == toolNum).FirstOrDefault();
                                    if (shank != null)
                                    {
                                        if (real.ToolCurrTime > real.ToolMaxTime)
                                        {
                                            DateTime startTimeT = timeNow.AddYears(-100);
                                            var      toolOver   = wms.JDJS_WMS_Tool_LifeTimeOver_History_Table.Where(r => r.CncID == cncID && r.ToolID == real.ToolID);
                                            if (toolOver.Count() > 0)
                                            {
                                                startTimeT = Convert.ToDateTime(toolOver.OrderByDescending(R => R.Time).ToList().FirstOrDefault().Time);
                                            }
                                            if (startTimeT != timeNow.AddYears(-100))
                                            {
                                                ToolInfo toolInfo1 = new ToolInfo();
                                                toolInfo1.cncNum  = cncNum;
                                                toolInfo1.toolNum = Convert.ToInt32(real.ToolID);

                                                toolInfo1.time = timeNow - startTimeT;
                                                if ((timeNow - startTimeT) > span)
                                                {
                                                    span = (timeNow - startTimeT);
                                                }
                                                toolInfos.Add(toolInfo1);
                                            }
                                            else
                                            {
                                                ToolInfo toolInfo1 = new ToolInfo();
                                                toolInfo1.cncNum  = cncNum;
                                                toolInfo1.toolNum = Convert.ToInt32(real.ToolID);

                                                toolInfo1.time = timeNow - timeNow.AddMinutes(Convert.ToDouble(real.ToolMaxTime - real.ToolCurrTime));
                                                if ((timeNow - startTimeT) > span)
                                                {
                                                    span = (timeNow - timeNow.AddMinutes(Convert.ToDouble(real.ToolMaxTime - real.ToolCurrTime)));
                                                }
                                                toolInfos.Add(toolInfo1);
                                            }
                                        }
                                    }
                                }
                                int FormateProcessID = -1;
                                int NextProcessID    = -1;
                                if (cncState != null)
                                {
                                    if (cncState.ProgState != 1)
                                    {
                                        var schedus3 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 3);
                                        if (schedus3.Count() > 0)
                                        {
                                            FormateProcessID = Convert.ToInt32(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().ProcessID);
                                        }
                                        var schedu12 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && (r.isFlag == 2 || r.isFlag == 1));
                                        if (schedu12.Count() > 0)
                                        {
                                            NextProcessID = Convert.ToInt32(schedu12.OrderBy(r => r.StartTime).FirstOrDefault().ProcessID);
                                        }
                                        if (FormateProcessID != NextProcessID && NextProcessID != -1)
                                        {
                                            List <int>    toolNos = new List <int>();
                                            List <string> ToolNos = new List <string>();
                                            var           pro     = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID).First();
                                            var           toolnos = wms.JDJS_WMS_Tool_Standard_Table.Where(r => r.MachTypeID == pro.DeviceType);
                                            foreach (var mo in toolnos)
                                            {
                                                ToolNos.Add(mo.ToolID);
                                            }
                                            var toolInfo = wms.JDJS_WMS_Order_Process_Tool_Info_Table.Where(r => r.ProcessID == NextProcessID);
                                            foreach (var real in toolInfo)
                                            {
                                                int toolNo = Convert.ToInt32(real.ToolNO);
                                                if (!ToolNos.Contains("T" + toolNo.ToString()))
                                                {
                                                    if (!toolNos.Contains(toolNo))
                                                    {
                                                        toolNos.Add(toolNo);
                                                    }
                                                }
                                            }
                                            DateTime startTime = new DateTime();
                                            if (schedus3.Count() > 0)
                                            {
                                                startTime = Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                            }
                                            else
                                            {
                                                var toolPrepareInfo = wms.JDJS_WMS_Order_Tool_Prepare_History_table.Where(r => r.ProcessID == NextProcessID);
                                                if (toolPrepareInfo.Count() > 0)
                                                {
                                                    startTime = Convert.ToDateTime(toolPrepareInfo.FirstOrDefault().PrepareTime);
                                                }
                                                else
                                                {
                                                    startTime = timeNow.AddYears(-2000);
                                                }
                                            }
                                            var Tools = wms.JDJS_WMS_Device_Tool_History_Table.Where(r => r.CncID == cncID && r.Time >= startTime);
                                            foreach (var real in Tools)
                                            {
                                                int toolno = Convert.ToInt32(real.ToolNum);
                                                if (toolNos.Contains(toolno))
                                                {
                                                    toolNos.Remove(toolno);
                                                }
                                            }
                                            if (toolNos.Count() > 0 && startTime != timeNow.AddYears(-2000))
                                            {
                                                foreach (var tool in toolNos)
                                                {
                                                    ToolInfo toolInfo1 = new ToolInfo();
                                                    toolInfo1.cncNum  = cncNum;
                                                    toolInfo1.toolNum = tool;
                                                    toolInfo1.time    = timeNow - startTime;
                                                    if ((timeNow - startTime) > span)
                                                    {
                                                        span = (timeNow - startTime);
                                                    }
                                                    toolInfos.Add(toolInfo1);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if (toolInfos.Count() > 0)
                        {
                            toolInfos = toolInfos.OrderByDescending(r => r.time).ToList();
                            span      = toolInfos.FirstOrDefault().time;
                            for (int i = 0; i < toolInfos.Count(); i++)
                            {
                                toolInfos[i].progress = toolInfos[i].time.TotalMilliseconds / span.TotalMilliseconds;
                            }
                        }

                        //toolInfos.OrderByDescending(r => r.time);
                        for (int i = 0; i < 5; i++)
                        {
                            if (toolInfos.Count() > i)
                            {
                                Tool tool = new Tool();
                                tool.cncNum   = toolInfos[i].cncNum;
                                tool.progress = toolInfos[i].progress.ToString("0.0000");
                                tool.time     = toolInfos[i].time.TotalHours.ToString("0.00") + "H";
                                tool.toolNum  = "T" + toolInfos[i].toolNum.ToString();
                                tools.Add(tool);
                            }
                            else
                            {
                                Tool tool = new Tool();
                                tool.cncNum   = "";
                                tool.progress = "";
                                tool.time     = "";
                                tool.toolNum  = "";
                                tools.Add(tool);
                            }
                        }
                        System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                        var model = new { code = 0, data = tools };
                        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);
                }

                {
                    //var workId = int.Parse(context.Request["workId"]);

                    {
                        //Top5换刀

                        //int LocationID = workId;
                        List <Tool>     tools     = new List <Tool>();
                        List <ToolInfo> toolInfos = new List <ToolInfo>();
                        DateTime        timeNow   = DateTime.Now;
                        TimeSpan        span      = timeNow - timeNow.AddSeconds(-1);
                        using (JDJS_WMS_DB_USEREntities wms = new JDJS_WMS_DB_USEREntities())
                        {
                            var devices = wms.JDJS_WMS_Device_Info;
                            foreach (var item in devices)
                            {
                                int cncID = Convert.ToInt32(item.ID);
                                if (cncIDs.Contains(cncID))
                                {
                                    string cncNum   = item.MachNum;
                                    var    cncState = wms.JDJS_WMS_Device_RealTime_Data.Where(r => r.CncID == cncID).FirstOrDefault();
                                    var    toolLife = wms.JDJS_WMS_Tool_LifeTime_Management.Where(r => r.CncID == cncID);
                                    foreach (var real in toolLife)
                                    {
                                        if (real.ToolCurrTime > real.ToolMaxTime)
                                        {
                                            DateTime startTimeT = timeNow.AddYears(-100);
                                            var      toolOver   = wms.JDJS_WMS_Tool_LifeTimeOver_History_Table.Where(r => r.CncID == cncID && r.ToolID == real.ToolID);
                                            if (toolOver.Count() > 0)
                                            {
                                                startTimeT = Convert.ToDateTime(toolOver.OrderByDescending(R => R.Time).ToList().FirstOrDefault().Time);
                                            }
                                            if (startTimeT != timeNow.AddYears(-100))
                                            {
                                                ToolInfo toolInfo1 = new ToolInfo();
                                                toolInfo1.cncNum  = cncNum;
                                                toolInfo1.toolNum = Convert.ToInt32(real.ToolID);

                                                toolInfo1.time = timeNow - startTimeT;
                                                if ((timeNow - startTimeT) > span)
                                                {
                                                    span = (timeNow - startTimeT);
                                                }
                                                toolInfos.Add(toolInfo1);
                                            }
                                            else
                                            {
                                                ToolInfo toolInfo1 = new ToolInfo();
                                                toolInfo1.cncNum  = cncNum;
                                                toolInfo1.toolNum = Convert.ToInt32(real.ToolID);

                                                toolInfo1.time = timeNow - timeNow.AddMinutes(Convert.ToDouble(real.ToolMaxTime - real.ToolCurrTime));
                                                if ((timeNow - startTimeT) > span)
                                                {
                                                    span = (timeNow - timeNow.AddMinutes(Convert.ToDouble(real.ToolMaxTime - real.ToolCurrTime)));
                                                }
                                                toolInfos.Add(toolInfo1);
                                            }
                                        }
                                    }
                                    int FormateProcessID = -1;
                                    int NextProcessID    = -1;
                                    if (cncState != null)
                                    {
                                        if (cncState.ProgState != 1)
                                        {
                                            var schedus3 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 3);
                                            if (schedus3.Count() > 0)
                                            {
                                                FormateProcessID = Convert.ToInt32(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().ProcessID);
                                            }
                                            var schedu12 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && (r.isFlag == 2 || r.isFlag == 1));
                                            if (schedu12.Count() > 0)
                                            {
                                                NextProcessID = Convert.ToInt32(schedu12.OrderBy(r => r.StartTime).FirstOrDefault().ProcessID);
                                            }
                                            if (FormateProcessID != NextProcessID && NextProcessID != -1)
                                            {
                                                List <int> toolNos  = new List <int>();
                                                var        toolInfo = wms.JDJS_WMS_Order_Process_Tool_Info_Table.Where(r => r.ProcessID == NextProcessID);
                                                foreach (var real in toolInfo)
                                                {
                                                    var           pro     = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID).First();
                                                    List <string> ToolNos = new List <string>();
                                                    var           toolnos = wms.JDJS_WMS_Tool_Standard_Table.Where(r => r.MachTypeID == pro.DeviceType);
                                                    foreach (var mo in toolnos)
                                                    {
                                                        ToolNos.Add(mo.ToolID);
                                                    }
                                                    int toolNo = Convert.ToInt32(real.ToolNO);
                                                    if (!ToolNos.Contains("T" + toolNo.ToString()))
                                                    {
                                                        if (!toolNos.Contains(toolNo))
                                                        {
                                                            toolNos.Add(toolNo);
                                                        }
                                                    }
                                                }
                                                DateTime startTime = new DateTime();
                                                if (schedus3.Count() > 0)
                                                {
                                                    startTime = Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                                }
                                                else
                                                {
                                                    var toolPrepareInfo = wms.JDJS_WMS_Order_Tool_Prepare_History_table.Where(r => r.ProcessID == NextProcessID);
                                                    if (toolPrepareInfo.Count() > 0)
                                                    {
                                                        startTime = Convert.ToDateTime(toolPrepareInfo.FirstOrDefault().PrepareTime);
                                                    }
                                                    else
                                                    {
                                                        startTime = timeNow.AddYears(-2000);
                                                    }
                                                }
                                                var Tools = wms.JDJS_WMS_Device_Tool_History_Table.Where(r => r.CncID == cncID && r.Time >= startTime);
                                                foreach (var real in Tools)
                                                {
                                                    int toolno = Convert.ToInt32(real.ToolNum);
                                                    if (toolNos.Contains(toolno))
                                                    {
                                                        toolNos.Remove(toolno);
                                                    }
                                                }
                                                if (toolNos.Count() > 0 && startTime != timeNow.AddYears(-2000))
                                                {
                                                    foreach (var tool in toolNos)
                                                    {
                                                        ToolInfo toolInfo1 = new ToolInfo();
                                                        toolInfo1.cncNum  = cncNum;
                                                        toolInfo1.toolNum = tool;
                                                        toolInfo1.time    = timeNow - startTime;
                                                        if ((timeNow - startTime) > span)
                                                        {
                                                            span = (timeNow - startTime);
                                                        }
                                                        toolInfos.Add(toolInfo1);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if (toolInfos.Count() > 0)
                        {
                            toolInfos = toolInfos.OrderByDescending(r => r.time).ToList();
                            span      = toolInfos.FirstOrDefault().time;
                            for (int i = 0; i < toolInfos.Count(); i++)
                            {
                                toolInfos[i].progress = toolInfos[i].time.TotalMilliseconds / span.TotalMilliseconds;
                            }
                        }

                        //toolInfos.OrderByDescending(r => r.time);
                        for (int i = 0; i < 5; i++)
                        {
                            if (toolInfos.Count() > i)
                            {
                                Tool tool = new Tool();
                                tool.cncNum   = toolInfos[i].cncNum;
                                tool.progress = toolInfos[i].progress.ToString("0.0000");
                                tool.time     = toolInfos[i].time.TotalHours.ToString("0.00") + "H";
                                tool.toolNum  = "T" + toolInfos[i].toolNum.ToString();
                                tools.Add(tool);
                            }
                            else
                            {
                                Tool tool = new Tool();
                                tool.cncNum   = "";
                                tool.progress = "";
                                tool.time     = "";
                                tool.toolNum  = "";
                                tools.Add(tool);
                            }
                        }
                        System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                        var model = new { code = 0, data = tools };
                        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 <Tool>     tools      = new List <Tool>();
                    List <ToolInfo> toolInfos  = new List <ToolInfo>();
                    DateTime        timeNow    = DateTime.Now;
                    TimeSpan        span       = timeNow - timeNow.AddSeconds(-1);
                    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)
                        {
                            int    cncID    = Convert.ToInt32(item.ID);
                            string cncNum   = item.MachNum;
                            var    cncState = wms.JDJS_WMS_Device_RealTime_Data.Where(r => r.CncID == cncID).FirstOrDefault();
                            var    toolLife = wms.JDJS_WMS_Tool_LifeTime_Management.Where(r => r.CncID == cncID);
                            foreach (var real in toolLife)
                            {
                                int toolNum   = Convert.ToInt32(real.ToolID);
                                var shankInfo = wms.JDJS_WMS_Tool_Shank_Table.Where(r => r.CncID == cncID && r.ToolNum == toolNum).FirstOrDefault();
                                if (shankInfo != null)
                                {
                                    if (real.ToolCurrTime > real.ToolMaxTime)
                                    {
                                        DateTime startTimeT = timeNow.AddYears(-100);
                                        var      toolOver   = wms.JDJS_WMS_Tool_LifeTimeOver_History_Table.Where(r => r.CncID == cncID && r.ToolID == real.ToolID);
                                        if (toolOver.Count() > 0)
                                        {
                                            startTimeT = Convert.ToDateTime(toolOver.OrderByDescending(R => R.Time).ToList().FirstOrDefault().Time);
                                        }
                                        if (startTimeT != timeNow.AddYears(-100))
                                        {
                                            ToolInfo toolInfo1 = new ToolInfo();
                                            toolInfo1.cncNum  = cncNum;
                                            toolInfo1.toolNum = Convert.ToInt32(real.ToolID);

                                            toolInfo1.time = timeNow - startTimeT;
                                            if ((timeNow - startTimeT) > span)
                                            {
                                                span = (timeNow - startTimeT);
                                            }
                                            toolInfos.Add(toolInfo1);
                                        }
                                        else
                                        {
                                            ToolInfo toolInfo1 = new ToolInfo();
                                            toolInfo1.cncNum  = cncNum;
                                            toolInfo1.toolNum = Convert.ToInt32(real.ToolID);

                                            toolInfo1.time = timeNow - timeNow.AddMinutes(Convert.ToDouble(real.ToolMaxTime - real.ToolCurrTime));
                                            if ((timeNow - startTimeT) > span)
                                            {
                                                span = (timeNow - timeNow.AddMinutes(Convert.ToDouble(real.ToolMaxTime - real.ToolCurrTime)));
                                            }
                                            toolInfos.Add(toolInfo1);
                                        }
                                    }
                                }
                            }
                            //int FormateProcessID = -1;
                            //int NextProcessID = -1;
                            //if (cncState != null)
                            //{
                            //    if (cncState.ProgState != 1)
                            //    {
                            //        var schedus3 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 3);
                            //        if (schedus3.Count() > 0)
                            //        {
                            //            FormateProcessID = Convert.ToInt32(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().ProcessID);
                            //        }
                            //        var schedu12 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && (r.isFlag == 2 || r.isFlag == 1));
                            //        if (schedu12.Count() > 0)
                            //        {
                            //            NextProcessID = Convert.ToInt32(schedu12.OrderBy(r => r.StartTime).FirstOrDefault().ProcessID);
                            //        }
                            //        if (FormateProcessID != NextProcessID && NextProcessID != -1)
                            //        {
                            //            var pro = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID).First();
                            //            List<string> ToolNos = new List<string>();
                            //            var toolnos = wms.JDJS_WMS_Tool_Standard_Table.Where(r => r.MachTypeID == pro.DeviceType);
                            //            foreach (var mo in toolnos)
                            //            {
                            //                ToolNos.Add(mo.ToolID);
                            //            }
                            //            List<int> toolNos = new List<int>();
                            //            var toolInfo = wms.JDJS_WMS_Order_Process_Tool_Info_Table.Where(r => r.ProcessID == NextProcessID);
                            //            foreach (var real in toolInfo)
                            //            {
                            //                int toolNo = Convert.ToInt32(real.ToolNO);
                            //                if (!ToolNos.Contains("T" + toolNo.ToString()))
                            //                {
                            //                    if (!toolNos.Contains(toolNo))
                            //                    {
                            //                        toolNos.Add(toolNo);
                            //                    }
                            //                }
                            //            }
                            //            DateTime startTime = new DateTime();
                            //            if (schedus3.Count() > 0)
                            //            {
                            //                startTime = Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                            //            }
                            //            else
                            //            {
                            //                var toolPrepareInfo = wms.JDJS_WMS_Order_Tool_Prepare_History_table.Where(r => r.ProcessID == NextProcessID);
                            //                if (toolPrepareInfo.Count() > 0)
                            //                {
                            //                    startTime = Convert.ToDateTime(toolPrepareInfo.FirstOrDefault().PrepareTime);
                            //                }
                            //                else
                            //                {
                            //                    startTime = timeNow.AddYears(-2000);
                            //                }
                            //            }
                            //            var Tools = wms.JDJS_WMS_Device_Tool_History_Table.Where(r => r.CncID == cncID && r.Time >= startTime);
                            //            foreach (var real in Tools)
                            //            {
                            //                int toolno = Convert.ToInt32(real.ToolNum);
                            //                if (toolNos.Contains(toolno))
                            //                {
                            //                    toolNos.Remove(toolno);
                            //                }
                            //            }
                            //            if (toolNos.Count() > 0 && startTime != timeNow.AddYears(-2000))
                            //            {
                            //                foreach (var tool in toolNos)
                            //                {
                            //                    ToolInfo toolInfo1 = new ToolInfo();
                            //                    toolInfo1.cncNum = cncNum;
                            //                    toolInfo1.toolNum = tool;
                            //                    toolInfo1.time = timeNow - startTime;
                            //                    if ((timeNow - startTime) > span)
                            //                    {
                            //                        span = (timeNow - startTime);
                            //                    }
                            //                    toolInfos.Add(toolInfo1);
                            //                }
                            //            }
                            //        }
                            //    }
                            //}
                        }
                    }
                    if (toolInfos.Count() > 0)
                    {
                        toolInfos = toolInfos.OrderByDescending(r => r.time).ToList();
                        span      = toolInfos.FirstOrDefault().time;
                        for (int i = 0; i < toolInfos.Count(); i++)
                        {
                            toolInfos[i].progress = toolInfos[i].time.TotalMilliseconds / span.TotalMilliseconds;
                        }
                    }

                    //toolInfos.OrderByDescending(r => r.time);
                    for (int i = 0; i < 5; i++)
                    {
                        if (toolInfos.Count() > i)
                        {
                            Tool tool = new Tool();
                            tool.cncNum   = toolInfos[i].cncNum;
                            tool.progress = toolInfos[i].progress.ToString("0.0000");
                            tool.time     = toolInfos[i].time.TotalHours.ToString("0.00") + "H";
                            tool.toolNum  = "T" + toolInfos[i].toolNum.ToString();
                            tools.Add(tool);
                        }
                        else
                        {
                            Tool tool = new Tool();
                            tool.cncNum   = "";
                            tool.progress = "";
                            tool.time     = "";
                            tool.toolNum  = "";
                            tools.Add(tool);
                        }
                    }
                    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                    var model = new { code = 0, data = tools };
                    var json  = serializer.Serialize(model);
                    context.Response.Write("data:" + json + "\n\n"); context.Response.ContentType = "text/event-stream";
                }
            }
        }
コード例 #2
0
        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";
                }
            }
        }
コード例 #3
0
        public void ProcessRequest(HttpContext context)
        {
            if (context.Request["workId"] == "全部")
            {
                {
                    //var workId = int.Parse(context.Request["workId"]);
                    {
                        //停机Top5
                        //int LocationID = workId;
                        List <CncStopInfo> cncStopInfos = new List <CncStopInfo>();
                        List <CncStop>     cncStops     = new List <CncStop>();
                        TimeSpan           span         = DateTime.Now - DateTime.Now.AddSeconds(-1);
                        DateTime           timeNow      = DateTime.Now;
                        using (JDJS_WMS_DB_USEREntities wms = new JDJS_WMS_DB_USEREntities())
                        {
                            var devices = wms.JDJS_WMS_Device_Info;
                            foreach (var item in devices)
                            {
                                int cncID  = Convert.ToInt32(item.ID);
                                var schedu = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && (r.isFlag == 1 || r.isFlag == 2)).ToList();
                                if (schedu.Count() > 0)
                                {
                                    schedu = schedu.OrderByDescending(r => r.EndTime).ToList();
                                    var endTime = Convert.ToDateTime(schedu.FirstOrDefault().EndTime);
                                    var time    = endTime - timeNow;
                                    if (time > span)
                                    {
                                        span = time;
                                    }
                                    CncStopInfo cncStopInfo = new CncStopInfo();
                                    cncStopInfo.cncNum   = item.MachNum;
                                    cncStopInfo.stopTime = endTime;
                                    cncStopInfo.time     = time;
                                    cncStopInfos.Add(cncStopInfo);
                                }
                                else
                                {
                                    CncStopInfo cncStopInfo = new CncStopInfo();
                                    cncStopInfo.cncNum   = item.MachNum;
                                    cncStopInfo.progress = 1.1;
                                    cncStopInfo.stopTime = timeNow.AddDays(-100);
                                    var cncstate = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 3);
                                    if (cncstate.Count() > 0)
                                    {
                                        var times = cncstate.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime;
                                        cncStopInfo.time = Convert.ToDateTime(times) - timeNow;
                                    }
                                    else
                                    {
                                        cncStopInfo.time = timeNow - timeNow;
                                    }

                                    cncStopInfos.Add(cncStopInfo);
                                }
                            }
                            for (int i = 0; i < cncStopInfos.Count(); i++)
                            {
                                cncStopInfos[i].progress = cncStopInfos[i].time.TotalMilliseconds / span.TotalMilliseconds;
                            }
                            cncStopInfos = cncStopInfos.OrderBy(r => r.stopTime).ToList();
                            for (int i = 0; i < 5; i++)
                            {
                                if (cncStopInfos.Count() > 5)
                                {
                                    CncStop cncStop = new CncStop();
                                    cncStop.cncNum = cncStopInfos[i].cncNum;
                                    if (cncStopInfos[i].stopTime == timeNow.AddDays(-100))
                                    {
                                        cncStop.progress = "0";
                                        cncStop.stopTime = "已停机";
                                        cncStop.time     = cncStopInfos[i].time.TotalHours.ToString() + "H";
                                    }
                                    else
                                    {
                                        cncStop.progress = cncStopInfos[i].progress.ToString("0.000000");
                                        cncStop.stopTime = cncStopInfos[i].stopTime.ToString();
                                        cncStop.time     = cncStopInfos[i].time.TotalHours.ToString() + "H";
                                    }
                                    cncStops.Add(cncStop);
                                }
                                else
                                {
                                    CncStop cncStop = new CncStop();
                                    cncStop.cncNum   = "";
                                    cncStop.progress = "";
                                    cncStop.stopTime = "";
                                    cncStop.time     = "";
                                    cncStops.Add(cncStop);
                                }
                            }
                        }
                        System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                        var model = new { code = 0, data = cncStops };
                        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);
                }
                {
                    //var workId = int.Parse(context.Request["workId"]);
                    {
                        //停机Top5
                        //int LocationID = workId;
                        List <CncStopInfo> cncStopInfos = new List <CncStopInfo>();
                        List <CncStop>     cncStops     = new List <CncStop>();
                        TimeSpan           span         = DateTime.Now - DateTime.Now.AddSeconds(-1);
                        DateTime           timeNow      = DateTime.Now;
                        using (JDJS_WMS_DB_USEREntities wms = new JDJS_WMS_DB_USEREntities())
                        {
                            var devices = wms.JDJS_WMS_Device_Info;
                            foreach (var item in devices)
                            {
                                int cncID = Convert.ToInt32(item.ID);
                                if (cncIDs.Contains(cncID))
                                {
                                    var schedu = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && (r.isFlag == 1 || r.isFlag == 2)).ToList();
                                    if (schedu.Count() > 0)
                                    {
                                        schedu = schedu.OrderByDescending(r => r.EndTime).ToList();
                                        var endTime = Convert.ToDateTime(schedu.FirstOrDefault().EndTime);
                                        var time    = endTime - timeNow;
                                        if (time > span)
                                        {
                                            span = time;
                                        }
                                        CncStopInfo cncStopInfo = new CncStopInfo();
                                        cncStopInfo.cncNum   = item.MachNum;
                                        cncStopInfo.stopTime = endTime;
                                        cncStopInfo.time     = time;
                                        cncStopInfos.Add(cncStopInfo);
                                    }
                                    else
                                    {
                                        CncStopInfo cncStopInfo = new CncStopInfo();
                                        cncStopInfo.cncNum   = item.MachNum;
                                        cncStopInfo.progress = 1.1;
                                        cncStopInfo.stopTime = timeNow.AddDays(-100);
                                        var cncstate = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 3);
                                        if (cncstate.Count() > 0)
                                        {
                                            var times = cncstate.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime;
                                            cncStopInfo.time = Convert.ToDateTime(times) - timeNow;
                                        }
                                        else
                                        {
                                            cncStopInfo.time = timeNow - timeNow;
                                        }

                                        cncStopInfos.Add(cncStopInfo);
                                    }
                                }
                            }
                            for (int i = 0; i < cncStopInfos.Count(); i++)
                            {
                                cncStopInfos[i].progress = cncStopInfos[i].time.TotalMilliseconds / span.TotalMilliseconds;
                            }
                            cncStopInfos = cncStopInfos.OrderBy(r => r.stopTime).ToList();
                            for (int i = 0; i < 5; i++)
                            {
                                if (cncStopInfos.Count() > 5)
                                {
                                    CncStop cncStop = new CncStop();
                                    cncStop.cncNum = cncStopInfos[i].cncNum;
                                    if (cncStopInfos[i].stopTime == timeNow.AddDays(-100))
                                    {
                                        cncStop.progress = "0";
                                        cncStop.stopTime = "已停机";
                                        cncStop.time     = cncStopInfos[i].time.TotalHours.ToString() + "H";
                                    }
                                    else
                                    {
                                        cncStop.progress = cncStopInfos[i].progress.ToString("0.000000");
                                        cncStop.stopTime = cncStopInfos[i].stopTime.ToString();
                                        cncStop.time     = cncStopInfos[i].time.TotalHours.ToString() + "H";
                                    }
                                    cncStops.Add(cncStop);
                                }
                                else
                                {
                                    CncStop cncStop = new CncStop();
                                    cncStop.cncNum   = "";
                                    cncStop.progress = "";
                                    cncStop.stopTime = "";
                                    cncStop.time     = "";
                                    cncStops.Add(cncStop);
                                }
                            }
                        }
                        System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                        var model = new { code = 0, data = cncStops };
                        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 <CncStopInfo> cncStopInfos = new List <CncStopInfo>();
                    List <CncStop>     cncStops     = new List <CncStop>();
                    TimeSpan           span         = DateTime.Now - DateTime.Now.AddSeconds(-1);
                    DateTime           timeNow      = DateTime.Now;
                    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)
                        {
                            int cncID  = Convert.ToInt32(item.ID);
                            var schedu = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && (r.isFlag == 1 || r.isFlag == 2)).ToList();
                            if (schedu.Count() > 0)
                            {
                                schedu = schedu.OrderByDescending(r => r.EndTime).ToList();
                                var endTime = Convert.ToDateTime(schedu.FirstOrDefault().EndTime);
                                var time    = endTime - timeNow;
                                if (time > span)
                                {
                                    span = time;
                                }
                                CncStopInfo cncStopInfo = new CncStopInfo();
                                cncStopInfo.cncNum   = item.MachNum;
                                cncStopInfo.stopTime = endTime;
                                cncStopInfo.time     = time;
                                cncStopInfos.Add(cncStopInfo);
                            }
                            else
                            {
                                CncStopInfo cncStopInfo = new CncStopInfo();
                                cncStopInfo.cncNum   = item.MachNum;
                                cncStopInfo.progress = 1.1;
                                cncStopInfo.stopTime = timeNow.AddDays(-100);
                                var cncstate = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 3);
                                if (cncstate.Count() > 0)
                                {
                                    var times = cncstate.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime;
                                    cncStopInfo.time = Convert.ToDateTime(times) - timeNow;
                                }
                                else
                                {
                                    cncStopInfo.time = timeNow - timeNow;
                                }

                                cncStopInfos.Add(cncStopInfo);
                            }
                        }
                        for (int i = 0; i < cncStopInfos.Count(); i++)
                        {
                            cncStopInfos[i].progress = cncStopInfos[i].time.TotalMilliseconds / span.TotalMilliseconds;
                        }
                        cncStopInfos = cncStopInfos.OrderBy(r => r.stopTime).ToList();
                        for (int i = 0; i < 5; i++)
                        {
                            if (cncStopInfos.Count() > 5)
                            {
                                CncStop cncStop = new CncStop();
                                cncStop.cncNum = cncStopInfos[i].cncNum;
                                if (cncStopInfos[i].stopTime == timeNow.AddDays(-100))
                                {
                                    cncStop.progress = "0";
                                    cncStop.stopTime = "已停机";
                                    cncStop.time     = cncStopInfos[i].time.TotalHours.ToString() + "H";
                                }
                                else
                                {
                                    cncStop.progress = cncStopInfos[i].progress.ToString("0.000000");
                                    cncStop.stopTime = cncStopInfos[i].stopTime.ToString();
                                    cncStop.time     = cncStopInfos[i].time.TotalHours.ToString() + "H";
                                }
                                cncStops.Add(cncStop);
                            }
                            else
                            {
                                CncStop cncStop = new CncStop();
                                cncStop.cncNum   = "";
                                cncStop.progress = "";
                                cncStop.stopTime = "";
                                cncStop.time     = "";
                                cncStops.Add(cncStop);
                            }
                        }
                    }
                    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                    var model = new { code = 0, data = cncStops };
                    var json  = serializer.Serialize(model);
                    context.Response.Write("data:" + json + "\n\n"); context.Response.ContentType = "text/event-stream";
                }
            }
        }
コード例 #4
0
        public void ProcessRequest(HttpContext context)
        {
            if (context.Request["workId"] == "全部")
            {
                {
                    //Top5待料
                    List <Pending>     pendings     = new List <Pending>();
                    List <PendingInfo> pendingInfos = new List <PendingInfo>();
                    int      LocationID             = 0;
                    DateTime timeNow = DateTime.Now;
                    TimeSpan span    = timeNow - timeNow.AddSeconds(-1);
                    using (JDJS_WMS_DB_USEREntities wms = new JDJS_WMS_DB_USEREntities())
                    {
                        var devices = wms.JDJS_WMS_Device_Info;
                        foreach (var item in devices)
                        {
                            int    cncID            = Convert.ToInt32(item.ID);
                            string cncNum           = item.MachNum;
                            var    cncBlank         = wms.JDJS_WMS_Quickchangbaseplate_Table.Where(r => r.CncID == cncID);
                            var    cncState         = wms.JDJS_WMS_Device_RealTime_Data.Where(r => r.CncID == cncID).FirstOrDefault();
                            int    FormateProcessID = -1;
                            int    NextProcessID    = -1;
                            //if (cncState != null)
                            {
                                if (cncBlank.Count() == 0)
                                {
                                    var schedus3 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 3);
                                    if (schedus3.Count() > 0)
                                    {
                                        FormateProcessID = Convert.ToInt32(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().ProcessID);
                                    }
                                    var schedu12 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && (r.isFlag == 2 || r.isFlag == 1));
                                    if (schedu12.Count() > 0)
                                    {
                                        NextProcessID = Convert.ToInt32(schedu12.OrderBy(r => r.StartTime).ToList().FirstOrDefault().ProcessID);
                                    }
                                    if (FormateProcessID == NextProcessID && NextProcessID != -1)
                                    {
                                        var         nextInfo    = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID);
                                        var         orderid     = wms.JDJS_WMS_Order_Entry_Table.Where(r => r.Order_ID == nextInfo.FirstOrDefault().OrderID);
                                        PendingInfo pendingInfo = new PendingInfo();
                                        pendingInfo.cncNum    = cncNum;
                                        pendingInfo.startTime = Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                        pendingInfo.time      = timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                        if (timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime) > span)
                                        {
                                            span = timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                        }
                                        pendingInfo.info = orderid.FirstOrDefault().Order_Number + "-P" + nextInfo.FirstOrDefault().ProcessID.ToString();
                                        pendingInfos.Add(pendingInfo);
                                    }
                                    if (FormateProcessID != NextProcessID && NextProcessID != -1)
                                    {
                                        List <string> toolsNo   = new List <string>();
                                        var           pro       = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID).First();
                                        var           toolStand = wms.JDJS_WMS_Tool_Standard_Table.Where(r => r.MachTypeID == pro.DeviceType);
                                        foreach (var mo in toolStand)
                                        {
                                            toolsNo.Add(mo.ToolID);
                                        }
                                        List <int> toolNos  = new List <int>();
                                        var        toolInfo = wms.JDJS_WMS_Order_Process_Tool_Info_Table.Where(r => r.ProcessID == NextProcessID);
                                        foreach (var real in toolInfo)
                                        {
                                            int toolNo = Convert.ToInt32(real.ToolNO);
                                            if (!toolsNo.Contains("T" + toolNo.ToString()))
                                            {
                                                if (!toolNos.Contains(toolNo))
                                                {
                                                    toolNos.Add(toolNo);
                                                }
                                            }
                                        }
                                        DateTime startTime = new DateTime();
                                        if (schedus3.Count() > 0)
                                        {
                                            startTime = Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                        }
                                        else
                                        {
                                            var toolPrepareInfo = wms.JDJS_WMS_Order_Tool_Prepare_History_table.Where(r => r.ProcessID == NextProcessID);
                                            if (toolPrepareInfo.Count() > 0)
                                            {
                                                startTime = Convert.ToDateTime(toolPrepareInfo.FirstOrDefault().PrepareTime);
                                            }
                                            else
                                            {
                                                if (schedu12.Count() > 0)
                                                {
                                                    startTime = Convert.ToDateTime(schedu12.OrderBy(r => r.StartTime).FirstOrDefault().StartTime);
                                                }
                                                else
                                                {
                                                    startTime = timeNow.AddYears(-2000);
                                                }
                                            }
                                        }
                                        var Tools = wms.JDJS_WMS_Device_Tool_History_Table.Where(r => r.CncID == cncID && r.Time >= startTime);
                                        foreach (var real in Tools)
                                        {
                                            int toolno = Convert.ToInt32(real.ToolNum);
                                            if (toolNos.Contains(toolno))
                                            {
                                                toolNos.Remove(toolno);
                                            }
                                        }
                                        if (toolNos.Count() == 0 && startTime != timeNow.AddYears(-2000))
                                        {
                                            var         nextInfo    = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID);
                                            var         orderid     = wms.JDJS_WMS_Order_Entry_Table.Where(r => r.Order_ID == nextInfo.FirstOrDefault().OrderID);
                                            PendingInfo pendingInfo = new PendingInfo();
                                            pendingInfo.cncNum    = cncNum;
                                            pendingInfo.startTime = startTime;
                                            pendingInfo.time      = timeNow - startTime;
                                            if ((timeNow - startTime) > span)
                                            {
                                                if (schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault() != null)
                                                {
                                                    span = timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                                }
                                                else
                                                {
                                                    span = timeNow - startTime;
                                                }
                                            }
                                            pendingInfo.info = orderid.FirstOrDefault().Order_Number + "-P" + nextInfo.FirstOrDefault().ProcessID.ToString();
                                            pendingInfos.Add(pendingInfo);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    for (int i = 0; i < pendingInfos.Count(); i++)
                    {
                        pendingInfos[i].progress = pendingInfos[i].time.TotalMilliseconds / span.TotalMilliseconds;
                    }
                    pendingInfos = pendingInfos.OrderByDescending(r => r.progress).ToList();
                    for (int i = 0; i < 5; i++)
                    {
                        if (pendingInfos.Count() > i)
                        {
                            Pending pending = new Pending();
                            pending.cncNum    = pendingInfos[i].cncNum;
                            pending.progress  = pendingInfos[i].progress.ToString();
                            pending.startTime = pendingInfos[i].info.ToString();
                            pending.time      = pendingInfos[i].time.TotalHours.ToString() + "H";
                            pendings.Add(pending);
                        }
                        else
                        {
                            Pending pending = new Pending();
                            pending.cncNum    = "";
                            pending.progress  = "";
                            pending.startTime = "";
                            pending.time      = "";
                            pendings.Add(pending);
                        }
                    }
                    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                    var model = new { code = 0, data = pendings };
                    var json  = serializer.Serialize(model);
                    context.Response.Write("data:" + json + "\n\n"); context.Response.ContentType = "text/event-stream";
                }
            }
            else if (context.Request["workId"] == "34台")
            {
                {
                    //Top5待料
                    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);
                    }
                    List <Pending>     pendings     = new List <Pending>();
                    List <PendingInfo> pendingInfos = new List <PendingInfo>();
                    int      LocationID             = 1;
                    DateTime timeNow = DateTime.Now;
                    TimeSpan span    = timeNow - timeNow.AddSeconds(-1);
                    using (JDJS_WMS_DB_USEREntities wms = new JDJS_WMS_DB_USEREntities())
                    {
                        var devices = wms.JDJS_WMS_Device_Info;
                        foreach (var item in devices)
                        {
                            int cncID = Convert.ToInt32(item.ID);
                            if (cncIDs.Contains(cncID))
                            {
                                string cncNum           = item.MachNum;
                                var    cncBlank         = wms.JDJS_WMS_Quickchangbaseplate_Table.Where(r => r.CncID == cncID);
                                var    cncState         = wms.JDJS_WMS_Device_RealTime_Data.Where(r => r.CncID == cncID).FirstOrDefault();
                                int    FormateProcessID = -1;
                                int    NextProcessID    = -1;
                                //if (cncState != null)
                                {
                                    if (cncBlank.Count() == 0)
                                    {
                                        var schedus3 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 3);
                                        if (schedus3.Count() > 0)
                                        {
                                            FormateProcessID = Convert.ToInt32(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().ProcessID);
                                        }
                                        var schedu12 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && (r.isFlag == 2 || r.isFlag == 1));
                                        if (schedu12.Count() > 0)
                                        {
                                            NextProcessID = Convert.ToInt32(schedu12.OrderBy(r => r.StartTime).ToList().FirstOrDefault().ProcessID);
                                        }
                                        if (FormateProcessID == NextProcessID && NextProcessID != -1)
                                        {
                                            var         nextInfo    = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID);
                                            var         orderid     = wms.JDJS_WMS_Order_Entry_Table.Where(r => r.Order_ID == nextInfo.FirstOrDefault().OrderID);
                                            PendingInfo pendingInfo = new PendingInfo();
                                            pendingInfo.cncNum    = cncNum;
                                            pendingInfo.startTime = Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                            pendingInfo.time      = timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                            if (timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime) > span)
                                            {
                                                span = timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                            }
                                            pendingInfo.info = orderid.FirstOrDefault().Order_Number + "-P" + nextInfo.FirstOrDefault().ProcessID.ToString();
                                            pendingInfos.Add(pendingInfo);
                                        }
                                        if (FormateProcessID != NextProcessID && NextProcessID != -1)
                                        {
                                            List <int> toolNos  = new List <int>();
                                            var        toolInfo = wms.JDJS_WMS_Order_Process_Tool_Info_Table.Where(r => r.ProcessID == NextProcessID);
                                            var        pro      = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID).First();

                                            List <string> toolsNo   = new List <string>();
                                            var           toolStand = wms.JDJS_WMS_Tool_Standard_Table.Where(r => r.MachTypeID == pro.DeviceType);
                                            foreach (var mo in toolStand)
                                            {
                                                toolsNo.Add(mo.ToolID);
                                            }
                                            foreach (var real in toolInfo)
                                            {
                                                int toolNo = Convert.ToInt32(real.ToolNO);
                                                if (!toolsNo.Contains("T" + toolNo.ToString()))
                                                {
                                                    if (!toolNos.Contains(toolNo))
                                                    {
                                                        toolNos.Add(toolNo);
                                                    }
                                                }
                                            }
                                            DateTime startTime = new DateTime();
                                            if (schedus3.Count() > 0)
                                            {
                                                startTime = Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                            }
                                            else
                                            {
                                                var toolPrepareInfo = wms.JDJS_WMS_Order_Tool_Prepare_History_table.Where(r => r.ProcessID == NextProcessID);
                                                if (toolPrepareInfo.Count() > 0)
                                                {
                                                    startTime = Convert.ToDateTime(toolPrepareInfo.FirstOrDefault().PrepareTime);
                                                }
                                                else
                                                {
                                                    if (schedu12.Count() > 0)
                                                    {
                                                        startTime = Convert.ToDateTime(schedu12.OrderBy(r => r.StartTime).FirstOrDefault().StartTime);
                                                    }
                                                    else
                                                    {
                                                        startTime = timeNow.AddYears(-2000);
                                                    }
                                                }
                                            }
                                            var Tools = wms.JDJS_WMS_Device_Tool_History_Table.Where(r => r.CncID == cncID && r.Time >= startTime);
                                            foreach (var real in Tools)
                                            {
                                                int toolno = Convert.ToInt32(real.ToolNum);
                                                if (toolNos.Contains(toolno))
                                                {
                                                    toolNos.Remove(toolno);
                                                }
                                            }
                                            if (toolNos.Count() == 0 && startTime != timeNow.AddYears(-2000))
                                            {
                                                var         nextInfo    = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID);
                                                var         orderid     = wms.JDJS_WMS_Order_Entry_Table.Where(r => r.Order_ID == nextInfo.FirstOrDefault().OrderID);
                                                PendingInfo pendingInfo = new PendingInfo();
                                                pendingInfo.cncNum    = cncNum;
                                                pendingInfo.startTime = startTime;
                                                pendingInfo.time      = timeNow - startTime;
                                                if ((timeNow - startTime) > span)
                                                {
                                                    if (schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault() != null)
                                                    {
                                                        span = timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                                    }
                                                    else
                                                    {
                                                        span = timeNow - startTime;
                                                    }
                                                }
                                                pendingInfo.info = orderid.FirstOrDefault().Order_Number + "-P" + nextInfo.FirstOrDefault().ProcessID.ToString();
                                                pendingInfos.Add(pendingInfo);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    for (int i = 0; i < pendingInfos.Count(); i++)
                    {
                        pendingInfos[i].progress = pendingInfos[i].time.TotalMilliseconds / span.TotalMilliseconds;
                    }
                    pendingInfos = pendingInfos.OrderByDescending(r => r.progress).ToList();
                    for (int i = 0; i < 5; i++)
                    {
                        if (pendingInfos.Count() > i)
                        {
                            Pending pending = new Pending();
                            pending.cncNum    = pendingInfos[i].cncNum;
                            pending.progress  = pendingInfos[i].progress.ToString();
                            pending.startTime = pendingInfos[i].info.ToString();
                            pending.time      = pendingInfos[i].time.TotalHours.ToString() + "H";
                            pendings.Add(pending);
                        }
                        else
                        {
                            Pending pending = new Pending();
                            pending.cncNum    = "";
                            pending.progress  = "";
                            pending.startTime = "";
                            pending.time      = "";
                            pendings.Add(pending);
                        }
                    }
                    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                    var model = new { code = 0, data = pendings };
                    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待料
                    List <Pending>     pendings     = new List <Pending>();
                    List <PendingInfo> pendingInfos = new List <PendingInfo>();
                    int      LocationID             = workId;
                    DateTime timeNow = DateTime.Now;
                    TimeSpan span    = timeNow - timeNow.AddSeconds(-1);
                    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)
                        {
                            int    cncID            = Convert.ToInt32(item.ID);
                            string cncNum           = item.MachNum;
                            var    cncBlank         = wms.JDJS_WMS_Quickchangbaseplate_Table.Where(r => r.CncID == cncID);
                            var    cncState         = wms.JDJS_WMS_Device_RealTime_Data.Where(r => r.CncID == cncID).FirstOrDefault();
                            int    FormateProcessID = -1;
                            int    NextProcessID    = -1;
                            //if (cncState != null)
                            {
                                if (cncBlank.Count() == 0)
                                {
                                    var schedus3 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && r.isFlag == 3);
                                    if (schedus3.Count() > 0)
                                    {
                                        FormateProcessID = Convert.ToInt32(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().ProcessID);
                                    }
                                    var schedu12 = wms.JDJS_WMS_Order_Process_Scheduling_Table.Where(r => r.CncID == cncID && (r.isFlag == 2 || r.isFlag == 1));
                                    if (schedu12.Count() > 0)
                                    {
                                        NextProcessID = Convert.ToInt32(schedu12.OrderBy(r => r.StartTime).ToList().FirstOrDefault().ProcessID);
                                    }
                                    if (FormateProcessID == NextProcessID && NextProcessID != -1)
                                    {
                                        var         nextInfo    = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID);
                                        var         orderid     = wms.JDJS_WMS_Order_Entry_Table.Where(r => r.Order_ID == nextInfo.FirstOrDefault().OrderID);
                                        PendingInfo pendingInfo = new PendingInfo();
                                        pendingInfo.cncNum    = cncNum;
                                        pendingInfo.startTime = Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                        pendingInfo.time      = timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                        if (timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime) > span)
                                        {
                                            span = timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                        }
                                        pendingInfo.info = orderid.FirstOrDefault().Order_Number + "-P" + nextInfo.FirstOrDefault().ProcessID.ToString();
                                        pendingInfos.Add(pendingInfo);
                                    }
                                    if (FormateProcessID != NextProcessID && NextProcessID != -1)
                                    {
                                        var           pro       = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID).First();
                                        List <string> toolsNo   = new List <string>();
                                        var           toolStand = wms.JDJS_WMS_Tool_Standard_Table.Where(r => r.MachTypeID == pro.DeviceType);
                                        foreach (var mo in toolStand)
                                        {
                                            toolsNo.Add(mo.ToolID);
                                        }
                                        List <int> toolNos  = new List <int>();
                                        var        toolInfo = wms.JDJS_WMS_Order_Process_Tool_Info_Table.Where(r => r.ProcessID == NextProcessID);
                                        foreach (var real in toolInfo)
                                        {
                                            int toolNo = Convert.ToInt32(real.ToolNO);
                                            if (!toolsNo.Contains("T" + toolNo.ToString()))
                                            {
                                                if (!toolNos.Contains(toolNo))
                                                {
                                                    toolNos.Add(toolNo);
                                                }
                                            }
                                        }
                                        DateTime startTime = new DateTime();
                                        if (schedus3.Count() > 0)
                                        {
                                            startTime = Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                        }
                                        else
                                        {
                                            var toolPrepareInfo = wms.JDJS_WMS_Order_Tool_Prepare_History_table.Where(r => r.ProcessID == NextProcessID);
                                            if (toolPrepareInfo.Count() > 0)
                                            {
                                                startTime = Convert.ToDateTime(toolPrepareInfo.FirstOrDefault().PrepareTime);
                                            }
                                            else
                                            {
                                                if (schedu12.Count() > 0)
                                                {
                                                    startTime = Convert.ToDateTime(schedu12.OrderBy(r => r.StartTime).FirstOrDefault().StartTime);
                                                }
                                                else
                                                {
                                                    startTime = timeNow.AddYears(-2000);
                                                }
                                            }
                                        }
                                        var Tools = wms.JDJS_WMS_Device_Tool_History_Table.Where(r => r.CncID == cncID && r.Time >= startTime);
                                        foreach (var real in Tools)
                                        {
                                            int toolno = Convert.ToInt32(real.ToolNum);
                                            if (toolNos.Contains(toolno))
                                            {
                                                toolNos.Remove(toolno);
                                            }
                                        }
                                        if (toolNos.Count() == 0 && startTime != timeNow.AddYears(-2000))
                                        {
                                            var         nextInfo    = wms.JDJS_WMS_Order_Process_Info_Table.Where(r => r.ID == NextProcessID);
                                            var         orderid     = wms.JDJS_WMS_Order_Entry_Table.Where(r => r.Order_ID == nextInfo.FirstOrDefault().OrderID);
                                            PendingInfo pendingInfo = new PendingInfo();
                                            pendingInfo.cncNum    = cncNum;
                                            pendingInfo.startTime = startTime;
                                            pendingInfo.time      = timeNow - startTime;
                                            if ((timeNow - startTime) > span)
                                            {
                                                if (schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault() != null)
                                                {
                                                    span = timeNow - Convert.ToDateTime(schedus3.OrderByDescending(r => r.EndTime).ToList().FirstOrDefault().EndTime);
                                                }
                                                else
                                                {
                                                    span = timeNow - startTime;
                                                }
                                            }
                                            pendingInfo.info = orderid.FirstOrDefault().Order_Number + "-P" + nextInfo.FirstOrDefault().ProcessID.ToString();
                                            pendingInfos.Add(pendingInfo);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    for (int i = 0; i < pendingInfos.Count(); i++)
                    {
                        pendingInfos[i].progress = pendingInfos[i].time.TotalMilliseconds / span.TotalMilliseconds;
                    }
                    pendingInfos = pendingInfos.OrderByDescending(r => r.progress).ToList();
                    for (int i = 0; i < 5; i++)
                    {
                        if (pendingInfos.Count() > i)
                        {
                            Pending pending = new Pending();
                            pending.cncNum    = pendingInfos[i].cncNum;
                            pending.progress  = pendingInfos[i].progress.ToString();
                            pending.startTime = pendingInfos[i].info.ToString();
                            pending.time      = pendingInfos[i].time.TotalHours.ToString() + "H";
                            pendings.Add(pending);
                        }
                        else
                        {
                            Pending pending = new Pending();
                            pending.cncNum    = "";
                            pending.progress  = "";
                            pending.startTime = "";
                            pending.time      = "";
                            pendings.Add(pending);
                        }
                    }
                    System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                    var model = new { code = 0, data = pendings };
                    var json  = serializer.Serialize(model);
                    context.Response.Write("data:" + json + "\n\n"); context.Response.ContentType = "text/event-stream";
                }
            }
        }