2023-05-22 18:32:18 +08:00
|
|
|
|
using Aitex.Core.RT.DBCore;
|
|
|
|
|
using Aitex.Core.RT.Log;
|
2023-05-25 13:31:57 +08:00
|
|
|
|
using Aitex.Core.RT.Routine;
|
2023-06-08 16:48:35 +08:00
|
|
|
|
using DocumentFormat.OpenXml.Drawing.Charts;
|
|
|
|
|
using DocumentFormat.OpenXml.Math;
|
2023-05-23 11:55:02 +08:00
|
|
|
|
using DocumentFormat.OpenXml.Office.Word;
|
2023-05-25 13:31:57 +08:00
|
|
|
|
using DocumentFormat.OpenXml.Wordprocessing;
|
2023-05-22 18:32:18 +08:00
|
|
|
|
using MECF.Framework.Common.DataCenter;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
|
|
|
|
namespace MECF.Framework.UI.Client.TrayThickness.HistoryData
|
|
|
|
|
{
|
|
|
|
|
public class HistoryCoatingSqlHelp
|
|
|
|
|
{
|
2023-05-25 13:31:57 +08:00
|
|
|
|
private List<string> TrayTabList = new List<string>()
|
|
|
|
|
{
|
|
|
|
|
"tray_number",
|
|
|
|
|
"tray_inner_number",
|
|
|
|
|
"ring_inner_number",
|
|
|
|
|
"ring_outer_number"
|
|
|
|
|
};
|
2023-06-09 17:20:52 +08:00
|
|
|
|
public List<CoatingData> QueryUpdateAll_Tray()
|
2023-05-25 13:31:57 +08:00
|
|
|
|
{
|
2023-06-01 11:53:07 +08:00
|
|
|
|
string cmd = $"select * from tray_thickness_main order by create_time desc ";
|
2023-06-09 17:20:52 +08:00
|
|
|
|
return QueryTrayBase(cmd);
|
2023-05-25 13:31:57 +08:00
|
|
|
|
}
|
2023-06-09 17:20:52 +08:00
|
|
|
|
public List<CoatingData> QueryUpdateTime_Tray(string starTime, string endTime)
|
2023-05-25 13:31:57 +08:00
|
|
|
|
{
|
2023-06-01 11:53:07 +08:00
|
|
|
|
string cmd = $"select * from tray_thickness_main where create_time between '{starTime}' and '{endTime}' order by create_time desc";
|
2023-06-09 17:20:52 +08:00
|
|
|
|
return QueryTrayBase(cmd);
|
2023-05-25 13:31:57 +08:00
|
|
|
|
}
|
2023-06-09 17:20:52 +08:00
|
|
|
|
public List<CoatingData> QueryUnitName_Tray(string name, string starTime="", string endTime="")
|
2023-05-25 13:31:57 +08:00
|
|
|
|
{
|
2023-06-01 11:53:07 +08:00
|
|
|
|
string time = $"and create_time between '{starTime}' and '{endTime}'";
|
|
|
|
|
string cmd = $"select * from tray_thickness_main where tray_number = '{name}' {time} order by create_time desc";
|
2023-06-09 17:20:52 +08:00
|
|
|
|
return QueryTrayBase(cmd, true);
|
2023-05-25 13:31:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
2023-06-09 17:20:52 +08:00
|
|
|
|
public List<CoatingData> QueryEntiretyTray(string name, string starTime = "", string endTime = "")
|
2023-05-25 13:31:57 +08:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
//根据TrayID获取对应内外编号
|
|
|
|
|
List<CoatingData> listCoatingData = new List<CoatingData>();
|
|
|
|
|
List<string> rowName = new List<string>();
|
|
|
|
|
string cmdAllName = "select * from tray_thickness_data where " +
|
|
|
|
|
$"tray_number='{name}' " +
|
|
|
|
|
$"or tray_inner_number = '{name}' " +
|
|
|
|
|
$"or ring_inner_number = '{name}' " +
|
|
|
|
|
$"or ring_outer_number = '{name}'";
|
|
|
|
|
|
|
|
|
|
var dtAll = QueryDataClient.Instance.Service.QueryData(cmdAllName);
|
2023-06-29 08:43:14 +08:00
|
|
|
|
if (dtAll !=null && dtAll.Rows.Count != 0)
|
2023-05-25 13:31:57 +08:00
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < dtAll.Rows.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
for (int j = 0; j < TrayTabList.Count; j++)
|
|
|
|
|
{
|
|
|
|
|
string value = dtAll.Rows[i][TrayTabList[j]].ToString();
|
|
|
|
|
if (!rowName.Contains(value))
|
|
|
|
|
rowName.Add(value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
string cmdName1 = "";
|
|
|
|
|
for (int i = 0; i < rowName.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
if (i == rowName.Count - 1)
|
|
|
|
|
cmdName1 += $"tray_number = '{rowName[i]}' ";
|
|
|
|
|
else
|
|
|
|
|
cmdName1 += $"tray_number = '{rowName[i]}' or ";
|
|
|
|
|
}
|
2023-06-01 11:53:07 +08:00
|
|
|
|
string time = $"and create_time between '{starTime}' and '{endTime}'";
|
|
|
|
|
string cmdName = $"select * from tray_thickness_main where {cmdName1} {time} order by create_time desc";
|
2023-06-09 17:20:52 +08:00
|
|
|
|
listCoatingData = QueryTrayBase(cmdName,true);
|
2023-05-25 13:31:57 +08:00
|
|
|
|
return listCoatingData;
|
|
|
|
|
}
|
2023-06-09 17:20:52 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<CoatingData> QueryUpdateAll_PM()
|
|
|
|
|
{
|
|
|
|
|
string cmd = $"select * from pm_thickness_main order by create_time desc ";
|
|
|
|
|
return QueryPMBase(cmd);
|
|
|
|
|
}
|
|
|
|
|
public List<CoatingData> QueryUpdateTime_PM(string starTime, string endTime)
|
|
|
|
|
{
|
|
|
|
|
string cmd = $"select * from pm_thickness_main where create_time between '{starTime}' and '{endTime}' order by create_time desc";
|
|
|
|
|
return QueryPMBase(cmd);
|
|
|
|
|
}
|
|
|
|
|
public List<CoatingData> QueryUnitName_PM(string name, string starTime = "", string endTime = "")
|
|
|
|
|
{
|
|
|
|
|
string time = $"and create_time between '{starTime}' and '{endTime}'";
|
|
|
|
|
string cmd = $"select * from pm_thickness_main where pm_cycle = '{name}' {time} order by create_time desc";
|
|
|
|
|
return QueryPMBase(cmd);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<CoatingData> QueryTrayBase(string cmd, bool isNum = false)
|
2023-05-22 18:32:18 +08:00
|
|
|
|
{
|
|
|
|
|
List<CoatingData> coatingDataList = new List<CoatingData>();
|
|
|
|
|
try
|
|
|
|
|
{
|
2023-05-23 11:55:02 +08:00
|
|
|
|
var dt = QueryDataClient.Instance.Service.QueryData(cmd);//只能界面用
|
2023-06-29 08:43:14 +08:00
|
|
|
|
if (dt == null || dt.Rows.Count == 0)
|
|
|
|
|
return null;
|
|
|
|
|
|
2023-05-22 18:32:18 +08:00
|
|
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
if (dt.Rows[i].ItemArray.Length != 0)
|
|
|
|
|
{
|
|
|
|
|
CoatingData coatingData = new CoatingData()
|
|
|
|
|
{
|
2023-05-30 19:06:32 +08:00
|
|
|
|
SerialNumber = dt.Rows[i]["tray_number"].ToString(),
|
2023-05-22 18:32:18 +08:00
|
|
|
|
MAX = dt.Rows[i]["tray_max_thickness"].ToString(),
|
2023-05-30 19:06:32 +08:00
|
|
|
|
PmOwned = dt.Rows[i]["pm_number"].ToString(),
|
2023-05-22 18:32:18 +08:00
|
|
|
|
Current = dt.Rows[i]["tray_coating_thickness"].ToString(),
|
2023-06-01 11:53:07 +08:00
|
|
|
|
CreatTime = dt.Rows[i]["create_time"].ToString(),
|
2023-05-30 19:06:32 +08:00
|
|
|
|
Caption = dt.Rows[i]["tray_label"].ToString(),
|
2023-05-25 13:31:57 +08:00
|
|
|
|
Index = $"Tray {i / 4 + 1}"
|
2023-05-22 18:32:18 +08:00
|
|
|
|
};
|
2023-05-25 13:31:57 +08:00
|
|
|
|
if (isNum)
|
|
|
|
|
{
|
|
|
|
|
coatingData.Index = (i + 1).ToString();
|
|
|
|
|
}
|
2023-05-22 18:32:18 +08:00
|
|
|
|
coatingDataList.Add(coatingData);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
coatingDataList.Add(new CoatingData());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
return coatingDataList;
|
|
|
|
|
}
|
2023-06-09 17:20:52 +08:00
|
|
|
|
private List<CoatingData> QueryPMBase(string cmd, bool isNum = false)
|
|
|
|
|
{
|
|
|
|
|
List<CoatingData> coatingDataList = new List<CoatingData>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var dt = QueryDataClient.Instance.Service.QueryData(cmd);//只能界面用
|
2023-06-29 08:43:14 +08:00
|
|
|
|
|
|
|
|
|
if (dt == null || dt.Rows.Count == 0)
|
|
|
|
|
return null;
|
|
|
|
|
|
2023-06-09 17:20:52 +08:00
|
|
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
if (dt.Rows[i].ItemArray.Length != 0)
|
|
|
|
|
{
|
|
|
|
|
CoatingData coatingData = new CoatingData()
|
|
|
|
|
{
|
|
|
|
|
SerialNumber = dt.Rows[i]["pm_cycle"].ToString(),
|
|
|
|
|
MAX = dt.Rows[i]["pm_max_thickness"].ToString(),
|
|
|
|
|
PmOwned = dt.Rows[i]["pm_number"].ToString(),
|
|
|
|
|
Current = dt.Rows[i]["pm_coating_thickness"].ToString(),
|
|
|
|
|
CreatTime = dt.Rows[i]["create_time"].ToString(),
|
|
|
|
|
Caption = dt.Rows[i]["pm_label"].ToString(),
|
|
|
|
|
Index = $"{i + 1}"
|
|
|
|
|
};
|
|
|
|
|
coatingDataList.Add(coatingData);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
coatingDataList.Add(new CoatingData());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
return coatingDataList;
|
|
|
|
|
}
|
2023-06-01 11:53:07 +08:00
|
|
|
|
public bool GrowTray(string tray_guid, double GrowthRate, double Seconds)//Tray更新增长厚度
|
2023-05-22 18:32:18 +08:00
|
|
|
|
{
|
|
|
|
|
//
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string tray_numbers = "";
|
2023-06-09 17:20:52 +08:00
|
|
|
|
string sSql = $"select * from tray_thickness_data where tray_guid like '{tray_guid}'";
|
2023-05-23 11:55:02 +08:00
|
|
|
|
DataSet ds = DB.ExecuteDataset(sSql);
|
2023-06-29 08:43:14 +08:00
|
|
|
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
2023-05-22 18:32:18 +08:00
|
|
|
|
return false;
|
2023-06-29 08:43:14 +08:00
|
|
|
|
|
|
|
|
|
|
2023-06-08 16:48:35 +08:00
|
|
|
|
tray_numbers = "'" + ds.Tables[0].Rows[0]["tray_number"].ToString() + "','" + ds.Tables[0].Rows[0]["tray_inner_number"].ToString() + "','" +
|
|
|
|
|
ds.Tables[0].Rows[0]["ring_inner_number"].ToString() + "','" + ds.Tables[0].Rows[0]["ring_outer_number"].ToString() + "'";
|
|
|
|
|
|
|
|
|
|
string growthValue = (GrowthRate * Seconds / 3600).ToString("0.00"); //μm
|
|
|
|
|
string[] gCmd = { $"update tray_thickness_main set tray_coating_thickness = tray_coating_thickness + {growthValue} " +
|
|
|
|
|
$"where create_time = (select create_time FROM tray_thickness_main where tray_number in ({tray_numbers}) " +
|
|
|
|
|
$"ORDER BY create_time DESC LIMIT 1 ) " };
|
|
|
|
|
|
2023-05-22 18:32:18 +08:00
|
|
|
|
|
2023-06-08 16:48:35 +08:00
|
|
|
|
return DB.ExcuteTransAction(gCmd.ToList());
|
2023-05-22 18:32:18 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2023-06-08 16:48:35 +08:00
|
|
|
|
LOG.Write($"GrowTray { ex}");
|
2023-05-22 18:32:18 +08:00
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public bool GrowPM(string pmName, double GrowthRate, double Seconds)//PM更新增长厚度
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
2023-06-09 17:20:52 +08:00
|
|
|
|
string pm_Cmd = "";
|
|
|
|
|
string sSql = $"select * from pm_thickness_data where pm_guid like '{pmName}' ";
|
2023-05-23 11:55:02 +08:00
|
|
|
|
DataSet ds = DB.ExecuteDataset(sSql);
|
2023-06-09 17:20:52 +08:00
|
|
|
|
if (ds == null || ds.Tables[0].Rows.Count==0)
|
2023-05-22 18:32:18 +08:00
|
|
|
|
return false;
|
2023-06-29 08:43:14 +08:00
|
|
|
|
|
2023-06-09 17:20:52 +08:00
|
|
|
|
pm_Cmd = $"'{ds.Tables[0].Rows[0]["pm_minor_cycle"].ToString()}','{ds.Tables[0].Rows[0]["pm_major_cycle"].ToString()}'";
|
|
|
|
|
|
|
|
|
|
|
2023-05-22 18:32:18 +08:00
|
|
|
|
//
|
2023-06-08 16:48:35 +08:00
|
|
|
|
string growthValue = (GrowthRate * Seconds / 3600).ToString("0.00"); //μm
|
2023-06-09 17:20:52 +08:00
|
|
|
|
string[] gCmd = { $"update pm_thickness_main set pm_coating_thickness = pm_coating_thickness + {growthValue} " +
|
|
|
|
|
$"where create_time = (select create_time FROM pm_thickness_main where pm_cycle in ({pm_Cmd}) " +
|
2023-06-08 16:48:35 +08:00
|
|
|
|
$"ORDER BY create_time DESC LIMIT 1 ) " };
|
2023-05-22 18:32:18 +08:00
|
|
|
|
|
2023-06-08 16:48:35 +08:00
|
|
|
|
return DB.ExcuteTransAction(gCmd.ToList());
|
2023-05-22 18:32:18 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
2023-06-08 16:48:35 +08:00
|
|
|
|
LOG.Write($"GrowPM {ex}");
|
2023-05-22 18:32:18 +08:00
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-06-09 17:20:52 +08:00
|
|
|
|
public bool CheckExceedTray(string tray_guid,string pmName, out string infor)
|
2023-05-22 18:32:18 +08:00
|
|
|
|
{
|
2023-06-08 16:48:35 +08:00
|
|
|
|
infor = "";
|
|
|
|
|
try
|
2023-05-22 18:32:18 +08:00
|
|
|
|
{
|
2023-06-09 17:20:52 +08:00
|
|
|
|
string sSql = $"select * from tray_thickness_data where tray_guid like '{tray_guid}'";
|
2023-06-08 16:48:35 +08:00
|
|
|
|
DataSet ds = DB.ExecuteDataset(sSql);
|
2023-06-29 08:43:14 +08:00
|
|
|
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
|
|
|
|
return false;
|
|
|
|
|
|
2023-06-08 16:48:35 +08:00
|
|
|
|
string cmd = "select tray_coating_thickness , tray_max_thickness,tray_label from tray_thickness_main where ";
|
2023-06-09 17:20:52 +08:00
|
|
|
|
cmd += $"tray_number='{ds.Tables[0].Rows[0]["tray_number"].ToString()}' " +
|
2023-06-08 16:48:35 +08:00
|
|
|
|
$"or tray_number = '{ds.Tables[0].Rows[0]["tray_inner_number"].ToString()}' " +
|
|
|
|
|
$"OR tray_number = '{ds.Tables[0].Rows[0]["ring_inner_number"].ToString()}' " +
|
|
|
|
|
$"or tray_number = '{ds.Tables[0].Rows[0]["ring_outer_number"].ToString()}'";
|
2023-06-09 17:20:52 +08:00
|
|
|
|
|
|
|
|
|
string timeCmd = $" ORDER BY create_time DESC LIMIT 4";
|
2023-06-08 16:48:35 +08:00
|
|
|
|
|
|
|
|
|
ds = DB.ExecuteDataset(cmd+ timeCmd);
|
2023-05-23 11:55:02 +08:00
|
|
|
|
|
2023-06-08 16:48:35 +08:00
|
|
|
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
|
|
|
|
return false;
|
2023-06-29 08:43:14 +08:00
|
|
|
|
|
2023-06-08 16:48:35 +08:00
|
|
|
|
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
double coating = double.Parse( ds.Tables[0].Rows[i]["tray_coating_thickness"].ToString());
|
|
|
|
|
double max =double.Parse(ds.Tables[0].Rows[i]["tray_max_thickness"].ToString());
|
|
|
|
|
|
|
|
|
|
if (coating>max)
|
|
|
|
|
{
|
|
|
|
|
string lab = ds.Tables[0].Rows[i]["tray_label"].ToString();
|
2023-06-09 17:20:52 +08:00
|
|
|
|
infor = $"{pmName}腔体 Tray {lab} MAX={max} Coating={coating}";
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LOG.Write($"HistoryCoatingSqlHelp.CheckExceedTray error {ex}");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool CheckExceedPM(string pmId, out string infor)
|
|
|
|
|
{
|
|
|
|
|
infor = "";
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string sSql = $"select * from pm_thickness_data where pm_guid like '{pmId}'";
|
|
|
|
|
DataSet ds = DB.ExecuteDataset(sSql);
|
2023-06-29 08:43:14 +08:00
|
|
|
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
|
2023-06-09 17:20:52 +08:00
|
|
|
|
string cmd = "select pm_coating_thickness , pm_max_thickness,pm_label from pm_thickness_main where ";
|
|
|
|
|
cmd += $"pm_cycle='{ds.Tables[0].Rows[0]["pm_minor_cycle"].ToString()}' " +
|
|
|
|
|
$"or pm_cycle = '{ds.Tables[0].Rows[0]["pm_major_cycle"].ToString()}'";
|
|
|
|
|
|
|
|
|
|
string timeCmd = $" ORDER BY create_time DESC LIMIT 2";
|
|
|
|
|
|
|
|
|
|
ds = DB.ExecuteDataset(cmd + timeCmd);
|
|
|
|
|
|
|
|
|
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
|
|
|
|
return false;
|
2023-06-29 08:43:14 +08:00
|
|
|
|
|
2023-06-09 17:20:52 +08:00
|
|
|
|
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
double coating = double.Parse(ds.Tables[0].Rows[i]["pm_coating_thickness"].ToString());
|
|
|
|
|
double max = double.Parse(ds.Tables[0].Rows[i]["pm_max_thickness"].ToString());
|
|
|
|
|
|
|
|
|
|
if (coating > max)
|
|
|
|
|
{
|
|
|
|
|
string lab = ds.Tables[0].Rows[i]["pm_label"].ToString();
|
2023-06-08 16:48:35 +08:00
|
|
|
|
infor = $"{lab} MAX={max} Coating={coating}";
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
2023-05-23 11:55:02 +08:00
|
|
|
|
{
|
2023-06-09 17:20:52 +08:00
|
|
|
|
LOG.Write($"HistoryCoatingSqlHelp.CheckExceedPM error {ex}");
|
2023-06-08 16:48:35 +08:00
|
|
|
|
return false;
|
2023-05-23 11:55:02 +08:00
|
|
|
|
}
|
2023-06-09 17:20:52 +08:00
|
|
|
|
|
2023-06-08 16:48:35 +08:00
|
|
|
|
return false;
|
2023-05-22 18:32:18 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|