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"; } } }
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"; } } }
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"; } } }
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"; } } }