using MESClassLibrary; using MESClassLibrary.BLL.Log; using MESClassLibrary.BLL.Show; using MESClassLibrary.EFModel; using MESClassLibrary.Model; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Web; using System.Web.Services; using System.Web.UI; using System.Web.UI.WebControls; namespace MESWebSite.Manage { public partial class AnalysisApi : System.Web.UI.Page { public static string GoodsListHtml; protected void Page_Load(object sender, EventArgs e) { if (Request.Cookies["LoginUserInfo"] == null) { Response.Write(""); } } [WebMethod] public static string GetBarDate(string side, string ProductName) { try { AnalysisBLL bll = new AnalysisBLL(); List list = bll.SearchInfo(ProductName); List listModel = new List(); BuildBar(side, "S前保", ProductName, list, ref listModel); BuildBar(side, "S后保", ProductName, list, ref listModel); BuildBar(side, "AMG前保", ProductName, list, ref listModel); BuildBar(side, "AMG后保", ProductName, list, ref listModel); return JSONTools.ScriptSerialize(listModel); } catch (Exception ex) { LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); return ""; } } [WebMethod] public static string GetLineTable(string side, string ProductName) { try { try { AnalysisBLL bll = new AnalysisBLL(); List r_list = new List(); List list = bll.SearchInfo(ProductName); list = list.Where(p => p.InspectTimes.Equals("1") && p.side.Equals(side)).ToList(); BuildLineTable("S前保", list, ref r_list); BuildLineTable("S后保", list, ref r_list); BuildLineTable("AMG前保", list, ref r_list); BuildLineTable("AMG后保", list, ref r_list); BuildLineTable("S左门槛", list, ref r_list); BuildLineTable("S右门槛", list, ref r_list); BuildLineTable("AMG左门槛", list, ref r_list); BuildLineTable("AMG右门槛", list, ref r_list); return JSONTools.ScriptSerialize(r_list); } catch (Exception ex) { LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); return ""; } } catch (Exception ex) { LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); return ""; } } [WebMethod] public static string GetLineData(string side, string ProductName) { try { List categories = new List(); List data = new List(); AnalysisBLL bll = new AnalysisBLL(); List list = bll.SearchInfo(ProductName); list = list.Where(p => p.InspectTimes.Equals("1") && p.side.Equals(side)).ToList(); DateTime date = DateTime.Now; //DateTime date = Convert.ToDateTime("2019-06-20 7:00:00"); string nowTime = date.ToString("yyyy-MM-dd"); DateTime startTime = Convert.ToDateTime(nowTime + " 08:00:00");//班次开始时间 DateTime endTime = Convert.ToDateTime(nowTime + " 19:59:59");//班次结束时间 if (DateTime.Compare(date, startTime) < 0) { //昨天夜班 for (int i = 1; i <= 12; i++) { categories.Add(endTime.AddDays(-1).AddHours(i).Hour.ToString() + "点"); var t = list.Where(p => p.createTime >= endTime.AddDays(-1).AddHours(i - 1) && p.createTime <= endTime.AddDays(-1).AddHours(i)).ToList(); if (t != null && t.Count > 0) { double r = (double)t.Where(p => p.inspectResult.Equals("[合格]")).Count() / (double)t.Count; data.Add(Math.Round(r * 100, 2).ToString()); } else { data.Add("0.00%"); } } } if (DateTime.Compare(date, endTime) > 0) { //今天夜班 for (int i = 1; i <= 12; i++) { categories.Add(endTime.AddHours(i).Hour.ToString() + "点"); var t = list.Where(p => p.createTime > endTime.AddHours(i - 1) && p.createTime <= endTime.AddHours(i)).ToList(); if (t != null && t.Count > 0) { double r = (double)t.Where(p => p.inspectResult.Equals("[合格]")).Count() / (double)t.Count; data.Add(Math.Round(r * 100, 2).ToString()); } else { data.Add("0.00%"); } } } if (DateTime.Compare(date, startTime) >= 0 && DateTime.Compare(date, endTime) <= 0) { //今天白班 for (int i = 1; i <= 12; i++) { categories.Add(startTime.AddHours(i).Hour.ToString() + "点"); var t = list.Where(p => p.createTime >= startTime.AddHours(i - 1) && p.createTime <= startTime.AddHours(i)).ToList(); if (t != null && t.Count > 0) { double r = (double)t.Where(p => p.inspectResult.Equals("[合格]")).Count() / (double)t.Count; data.Add(Math.Round(r * 100, 2).ToString()); } else { data.Add("0.00"); } } } AnalysisBarModel analysisBarModel = new AnalysisBarModel(); analysisBarModel.text = ""; analysisBarModel.subtext = "一次合格率(%)"; analysisBarModel.categories = categories; analysisBarModel.data = data; return JSONTools.ScriptSerialize(analysisBarModel); } catch (Exception ex) { LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); return ""; } } [WebMethod] public static string GetPieData(string reason, string ProductName) { try { AnalysisBLL bll = new AnalysisBLL(); List list = bll.SearchInfo(ProductName); List info = new List(); if ("其他".Equals(reason)) { info = list.Where(p => p.reason != null && !p.reason.Contains("颗粒;") //&& !p.reason.Contains("浮泡;") && !p.reason.Contains("流挂;") && !p.reason.Contains("遮盖不良;") //&& !p.reason.Contains("异色;") //&& !p.reason.Contains("水迹;") ).ToList(); } else { info = list.Where(p => p.reason != null && p.reason.Contains(reason + ";")).ToList(); } List listModel = new List(); BuildPieData("A侧", ProductName, "上支架", reason, info, ref listModel); BuildPieData("A侧", ProductName, "中支架", reason, info, ref listModel); BuildPieData("A侧", ProductName, "下支架", reason, info, ref listModel); BuildPieData("B侧", ProductName, "上支架", reason, info, ref listModel); BuildPieData("B侧", ProductName, "中支架", reason, info, ref listModel); BuildPieData("B侧", ProductName, "下支架", reason, info, ref listModel); return JSONTools.ScriptSerialize(listModel); } catch (Exception ex) { LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); return ""; } } private static void BuildBar(string side, string partName, string ProductName, List list, ref List listModel) { try { var A_list = list.Where(p => side.Equals(p.side) && p.productInfo.Contains(partName)).OrderByDescending(p => p.createTime).ToList(); List barcodeList = new List(); List newlist = new List(); foreach (var item in A_list) { if (barcodeList.Contains(item.barcode)) { continue; } barcodeList.Add(item.barcode); newlist.Add(item); } Dictionary colorList = new Dictionary(); foreach (var item in newlist) { string pinfo = item.productInfo; pinfo = pinfo.Substring(0, pinfo.IndexOf(",")); if (!colorList.ContainsKey(pinfo)) { colorList.Add(pinfo, 0); } if ("[合格]".Equals(item.inspectResult)) { colorList[pinfo] = colorList[pinfo] + 1; } } List categories = new List(); List data = new List(); foreach (KeyValuePair kvp in colorList) { categories.Add(kvp.Key); double r = (double)kvp.Value / (double)newlist.Count; data.Add(Math.Round(r * 100, 2).ToString()); } AnalysisBarModel analysisBarModel = new AnalysisBarModel(); analysisBarModel.text = side + " " + ProductName + " " + partName; analysisBarModel.subtext = "颜色合格率分析"; analysisBarModel.categories = categories; analysisBarModel.data = data; listModel.Add(analysisBarModel); } catch (Exception) { } } private static void BuildLineTable(string partName, List list, ref List listModel) { double cnum = 0; double num = 0; double r = 0; var info = list.Where(p => p.productInfo.Contains(partName)); if (info.Count() > 0) { cnum = info.Count(); num = info.Where(p => p.inspectResult.Equals("[合格]")).Count(); r = num / cnum; listModel.Add(Math.Round(r * 100, 2).ToString() + "%"); } else { listModel.Add("0.00%"); } } private static void BuildPieData(string side, string ProductName, string position, string reason, List list, ref List listModel) { List info = list.Where(p => p.side.Equals(side) && p.position.Contains(position)).ToList(); List damnPositionList = new List(); foreach (var item in info) { if (String.IsNullOrWhiteSpace(item.damnPosition)) { continue; } string[] sArray = item.damnPosition.Split(new char[1] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (sArray.Length > 0) { foreach (var damn in sArray) { if (!damnPositionList.Contains(damn)) { damnPositionList.Add(damn); } } } } List data = new List(); foreach (var item in damnPositionList) { PieDataModel pieDataModel = new PieDataModel(); pieDataModel.value = info.Where(p => p.damnPosition.Contains(item)).Count(); pieDataModel.name = item + "区"; data.Add(pieDataModel); } AnalysisPieModel analysisPieModel = new AnalysisPieModel(); analysisPieModel.text = side + " " + ProductName + " " + position + " " + reason; analysisPieModel.data = data; listModel.Add(analysisPieModel); } } }