chore: 初始化 VPSA ASP.NET 管理端
This commit is contained in:
205
submit/QualityData_SpcEchartsData.ashx
Normal file
205
submit/QualityData_SpcEchartsData.ashx
Normal file
@@ -0,0 +1,205 @@
|
||||
<%@ WebHandler Language="C#" Class="QualityData_SpcEchartsData" %>
|
||||
|
||||
using System;
|
||||
using System.Web;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using MES_SPC;
|
||||
using MES_SPC2;
|
||||
using Newtonsoft.Json;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
|
||||
|
||||
public class QualityData_SpcEchartsData : IHttpHandler {
|
||||
|
||||
public void ProcessRequest (HttpContext context) {
|
||||
context.Response.ContentType = "text/plain";
|
||||
// context.Request.Form[]
|
||||
string type = HttpContext.Current.Request["type"];
|
||||
string responseText = "";
|
||||
List<double> dataList = null;
|
||||
// 读取整个请求体
|
||||
using (StreamReader reader = new StreamReader(context.Request.InputStream, Encoding.UTF8))
|
||||
{
|
||||
string body = reader.ReadToEnd();
|
||||
dynamic data = JsonConvert.DeserializeObject(body);
|
||||
if (data != null) {
|
||||
dataList = data.dataList.ToObject<List<double>>();
|
||||
//dataList = JsonConvert.DeserializeObject<List<int>>(dataListJson);
|
||||
}
|
||||
}
|
||||
switch (type)
|
||||
{
|
||||
// 基本趋势图1
|
||||
case "GetBaseTrendData2":
|
||||
responseText = GetBaseTrendData(dataList);
|
||||
break;
|
||||
// 基本趋势图2
|
||||
case "GetBaseTrendData1":
|
||||
responseText = GetMarkLineByConditent(dataList);
|
||||
break;
|
||||
// 直方图
|
||||
// 工序能力分析
|
||||
// 排列图
|
||||
// 均值图
|
||||
// 极差图
|
||||
// 标准差图
|
||||
}
|
||||
|
||||
context.Response.Write(responseText);
|
||||
}
|
||||
public string GetBaseTrendData(List<double> dataList)
|
||||
{
|
||||
string result = "";
|
||||
for (int i = 0; i < dataList.Count; i++)
|
||||
{
|
||||
result += dataList[i];
|
||||
if (i != dataList.Count - 1)
|
||||
{
|
||||
result += ",";
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
public string GetMarkLineByConditent(List<double> dataList)
|
||||
{
|
||||
DataTable dt = null;
|
||||
|
||||
double Usl = 0;
|
||||
double Lsl = 0;
|
||||
try
|
||||
{
|
||||
Usl = Convert.ToDouble(HttpContext.Current.Request["Usl"]); // 上限值
|
||||
Lsl = Convert.ToDouble(HttpContext.Current.Request["Lsl"]); // 下限值
|
||||
}
|
||||
catch
|
||||
{
|
||||
Usl = 0; // 上限值
|
||||
Lsl = 0; // 下限值
|
||||
}
|
||||
|
||||
double x;
|
||||
double s;
|
||||
double QU;
|
||||
double QL;
|
||||
double cp;
|
||||
double cpk;
|
||||
double[] sx;
|
||||
double[] sy;
|
||||
|
||||
double[] X;
|
||||
if (dataList.Count < 3)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
X = new double[dataList.Count];
|
||||
for (int i = 0; i < dataList.Count; i++)
|
||||
{
|
||||
X[i] = Convert.ToDouble(dataList[i]);
|
||||
}
|
||||
|
||||
double ValueUp = Max(X);
|
||||
double ValueDown = Min(X);
|
||||
//计算SPC参数
|
||||
SpcCaculator.SpcValue(X, ref Usl, ref Lsl, out x, out s, out QU, out QL, out cp, out cpk, out sx, out sy);
|
||||
|
||||
//坐标轴
|
||||
double ValueUpX;
|
||||
double ValueDownX;
|
||||
|
||||
ValueDownX = Math.Min(ValueDown, Lsl);
|
||||
ValueDownX = Math.Min(ValueDownX, QL);
|
||||
|
||||
ValueUpX = Math.Max(ValueUp, Usl);
|
||||
ValueUpX = Math.Max(ValueUpX, QU);
|
||||
|
||||
double X1 = (ValueUpX - ValueDownX) / 10;
|
||||
double minValue = Math.Round(ValueDownX - X1, 4);
|
||||
double maxValue = Math.Round(ValueUpX + X1, 4);
|
||||
string Yvalue =minValue.ToString()+",";
|
||||
for (int i = 1; i < 5; i++)
|
||||
{
|
||||
Yvalue += (i * (double)(maxValue - minValue) / 5+minValue).ToString()+",";
|
||||
}
|
||||
Yvalue += maxValue.ToString();
|
||||
string Text = Usl + "," + QU + "," + sx[5].ToString("F4") + "," + QL + "," + Lsl + "," + cpk + "," + cp + "|" + Yvalue;
|
||||
return Text;
|
||||
}
|
||||
/// <summary>
|
||||
/// 观测值最大值
|
||||
/// </summary>
|
||||
/// <param name="Xn">子组观测值</param>
|
||||
/// <returns></returns>
|
||||
static private double Max(double[] Xn)
|
||||
{
|
||||
double temp;
|
||||
temp = Xn[0];
|
||||
for (int i = 0; i < Xn.Length; i++)
|
||||
{
|
||||
temp = (Xn[i] > temp) ? Xn[i] : temp;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 观测值最小值
|
||||
/// </summary>
|
||||
/// <param name="Xn">子组观测值</param>
|
||||
/// <returns></returns>
|
||||
static private double Min(double[] Xn)
|
||||
{
|
||||
double temp;
|
||||
temp = Xn[0];
|
||||
for (int i = 0; i < Xn.Length; i++)
|
||||
{
|
||||
temp = (Xn[i] < temp) ? Xn[i] : temp;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 符合条件的全部数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private DataTable GetReport(bool OPNameCheck, string OPName, bool shaftNameCheck, string shaftName, bool itemNameCheck,string itemName, string startTime, string endTime,bool EngineTypeIDCheck,string EngineTypeID,string uuidCheck,string uuid)
|
||||
{
|
||||
DataTable dt;
|
||||
bool EnginIDCheck;
|
||||
string EnginID;
|
||||
EnginIDCheck = EngineTypeIDCheck;
|
||||
EnginID = EngineTypeID;
|
||||
QualityData2.SelectGoodDataReport_TrendPictureBasic(EnginIDCheck, EnginID,
|
||||
OPNameCheck, OPName,
|
||||
shaftNameCheck, shaftName,
|
||||
itemNameCheck, itemName,
|
||||
startTime, endTime,uuidCheck,uuid, out dt);
|
||||
return dt;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 绑定测量名称
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string BindMeasurePart()
|
||||
{
|
||||
string text = "";
|
||||
DataTable dt;
|
||||
string opName;
|
||||
opName = HttpContext.Current.Request["opName"];
|
||||
QualityData.GetShaftName(opName, out dt);
|
||||
if (dt != null && dt.Rows.Count > 0)
|
||||
{
|
||||
text = JsonHelper.DataTableToJson(dt);
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
public bool IsReusable {
|
||||
get {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user