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