注塑喷涂
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

402 lines
19 KiB

using DBUtility;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FiveScreen
{
public partial class FrmInjection2 : Form
{
bool isMouseDown = false; // 窗体是否移动
Point currentFormLocation = new Point(); // 当前窗体位置
Point currentMouseOffset = new Point(); // 当前鼠标的按下位置
public FrmInjection2()
{
InitializeComponent();
panel1.MouseDown += FrmInjection1_MouseDown;
panel1.MouseMove += FrmInjection1_MouseMove;
panel1.MouseUp += FrmInjection1_MouseUp;
this.WindowState = FormWindowState.Maximized;
}
private void panel1_DoubleClick(object sender, EventArgs e)
{
//Application.Exit();
if(this.WindowState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Normal;
}
else
{
this.WindowState = FormWindowState.Maximized;
}
}
private void FrmInjection2_Load(object sender, EventArgs e)
{
LoadDeviceState();
}
void LoadDeviceState()
{
DataTable dt = new DataTable();
try
{
#region 第一阶段内容
Label[] labUse = { labUse1, labUse2, labUse3, labUse4, labUse5, labUse6 };
Label[] labPass = { labPass1, labPass2, labPass3, labPass4, labPass5, labPass6 };
Label[] labState = { labState1, labState2, labState3, labState4, labState5, labState6 };
#region sql
string sql = @"
SELECT * INTO #temp
FROM
(
SELECT * from
(SELECT TOP 1 StationID, StationNo, [UseRate], [PassRate]
FROM tb_Report_FiveScreenLast
WHERE stationNo = 'IM01'
ORDER BY CreateTime DESC) a
UNION ALL
SELECT * from
(SELECT TOP 1 StationID, StationNo, [UseRate], [PassRate]
FROM tb_Report_FiveScreenLast
WHERE stationNo = 'IM02'
ORDER BY CreateTime DESC) b
UNION ALL
SELECT * from
(SELECT TOP 1 StationID, StationNo, [UseRate], [PassRate]
FROM tb_Report_FiveScreenLast
WHERE stationNo = 'IM03'
ORDER BY CreateTime DESC) c
UNION ALL
SELECT * from
(SELECT TOP 1 StationID, StationNo, [UseRate], [PassRate]
FROM tb_Report_FiveScreenLast
WHERE stationNo = 'IM04'
ORDER BY CreateTime DESC) d
UNION ALL
SELECT * from
(SELECT TOP 1 StationID, StationNo, [UseRate], [PassRate]
FROM tb_Report_FiveScreenLast
WHERE stationNo = 'IM05'
ORDER BY CreateTime DESC) e
UNION ALL
SELECT * from
(SELECT TOP 1 StationID, StationNo, [UseRate], [PassRate]
FROM tb_Report_FiveScreenLast
WHERE stationNo = 'IM06'
ORDER BY CreateTime DESC) f
) aa
SELECT #temp.StationID, #temp.StationNo,#temp.UseRate,#temp.PassRate,StartTime,EndTime,(CASE WHEN (starttime is not null and EndTime IS NULL) OR EndTime = '' THEN '' ELSE '' END) [State] INTO #tmp FROM #temp
LEFT JOIN tb_Injection_DownRecord
ON tb_Injection_DownRecord.StationID = #temp.StationID
ORDER BY StartTime DESC
SELECT * FROM (
SELECT TOP 1 *
FROM #tmp
WHERE stationNo = 'IM01'
ORDER BY StartTime DESC) a
UNION ALL
SELECT * FROM (
SELECT TOP 1 *
FROM #tmp
WHERE stationNo = 'IM02'
ORDER BY StartTime DESC) b
UNION ALL
SELECT * FROM (
SELECT TOP 1 *
FROM #tmp
WHERE stationNo = 'IM03'
ORDER BY StartTime DESC) c
UNION ALL
SELECT * FROM (
SELECT TOP 1 *
FROM #tmp
WHERE stationNo = 'IM04'
ORDER BY StartTime DESC) d
UNION ALL
SELECT * FROM (
SELECT TOP 1 *
FROM #tmp
WHERE stationNo = 'IM05'
ORDER BY StartTime DESC) e
UNION ALL
SELECT * FROM (
SELECT TOP 1 *
FROM #tmp
WHERE stationNo = 'IM06'
ORDER BY StartTime DESC) f
DROP TABLE #temp;
DROP TABLE #tmp;
";
#endregion
dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
labUse[i].Text = dt.Rows[i]["UseRate"].ToString();
//labPass[i].Text = dt.Rows[i]["PassRate"].ToString();
labState[i].Text = dt.Rows[i]["State"].ToString();
}
}
#endregion
#region 第二阶段内容
Label[] labPro = new Label[6];
Label[] labProNum = new Label[6];
for (int i = 0; i < 6; i++)
{
labPro[i] = new Label();
labPro[i].Name = "labPro" + i.ToString();
labPro[i].BackColor = Color.Transparent;
labPro[i].ForeColor = Color.White;
labPro[i].Font = new System.Drawing.Font("微软雅黑", 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
labPro[i].TextAlign = ContentAlignment.MiddleCenter;
labPro[i].Size = new System.Drawing.Size(269, 119);
labPro[i].Location = new System.Drawing.Point(353, 298 + i * 122);
//labPro[i].Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)| System.Windows.Forms.AnchorStyles.Left)| System.Windows.Forms.AnchorStyles.Right)));
panel1.Controls.Add(labPro[i]);
labProNum[i] = new Label();
labProNum[i].Name = "labProNum" + i.ToString();
labProNum[i].BackColor = Color.Transparent;
labProNum[i].ForeColor = Color.White;
labProNum[i].Font = new System.Drawing.Font("微软雅黑", 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
labProNum[i].TextAlign = ContentAlignment.MiddleCenter;
labProNum[i].Size = new System.Drawing.Size(295, 111);
labProNum[i].Location = new System.Drawing.Point(1273, 300 + i * 123);
//labProNum[i].Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)| System.Windows.Forms.AnchorStyles.Left)| System.Windows.Forms.AnchorStyles.Right)));
panel1.Controls.Add(labProNum[i]);
}
GetLabContent();
#endregion
timer1.Enabled = true;
}
catch (Exception ex)
{
LogHelper.WriteLog(ex.ToString(), "注塑六设备大屏");
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
LoadDeviceState();
//GetLabContent();
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
}
}
private void GetLabContent()
{
try
{
#region 产品名称
for (int i = 0; i < 6; i++)
{
string sql_pro = @"
select top 1 ProductName as [Plan] from tb_Product WITH (NOLOCK) where StockNo = (
select top 1 StockNo from tb_InjectionPlan WITH (NOLOCK) where StationID = (
select StationID from tb_Station WITH (NOLOCK) where StationNo = '" + "IM0" + (i + 1).ToString() + @"' )
AND (IsFinish is null or IsFinish = 0)
ORDER BY BeginTime ASC
)
or PartNo = (
select top 1 PartNo from tb_InjectionPlan WITH (NOLOCK) where StationID = (
select StationID from tb_Station WITH (NOLOCK) where StationNo = '" + "IM0" + (i + 1).ToString() + @"' )
AND (IsFinish is null or IsFinish = 0)
ORDER BY BeginTime ASC
)
";
object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql_pro, null);
if (aa != null)
{
this.panel1.Controls.Find("labPro" + i.ToString(), true)[0].Text = aa.ToString();
}
else
{
this.panel1.Controls.Find("labPro" + i.ToString(), true)[0].Text = "";
}
}
#endregion
#region 生产数
for (int i = 0; i < 6; i++)
{
string date = DateTime.Now.ToString("yyyy-MM-dd");
if (DateTime.Now.Hour >= 0 && DateTime.Now.Hour < 8)
{
date = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
}
string sql_num = @"
SELECT TOP 1 isnull(ProductCount,0) ProductCount, isnull(BadCount,0) BadCount
FROM tb_Product_Injection a WITH (NOLOCK)
WHERE a.StationID = ( SELECT StationID from tb_Station WITH (NOLOCK) where StationNo = '" + "IM0" + (i + 1).ToString() + @"' )
AND (a.StockNo = (
select top 1 StockNo from tb_InjectionPlan WITH (NOLOCK) where StationID = ( select StationID from tb_Station where StationNo = '" + "IM0" + (i + 1).ToString() + @"')
AND (IsFinish is null or IsFinish = 0)
ORDER BY BeginTime ASC
)
OR a.PartNo = (
select top 1 PartNo from tb_InjectionPlan WITH (NOLOCK) where StationID = ( select StationID from tb_Station where StationNo = '" + "IM0" + (i + 1).ToString() + @"')
AND (IsFinish is null or IsFinish = 0)
ORDER BY BeginTime ASC
))
and a.PlanID = (
select top 1 InjectionPlanID from tb_InjectionPlan WITH (NOLOCK) where StationID = ( select StationID from tb_Station where StationNo = '" + "IM0" + (i + 1).ToString() + @"')
AND (IsFinish is null or IsFinish = 0)
ORDER BY BeginTime ASC
)
AND a.ProductDate = '" + date + @"'
AND a.ClassName = '" + GetWorkClass() + @"'
";
//object bb = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql_num, null);
//if (bb != null)
//{
// this.panel1.Controls.Find("labProNum" + i.ToString(), true)[0].Text = bb.ToString();
//}
//else
//{
// this.panel1.Controls.Find("labProNum" + i.ToString(), true)[0].Text = "";
//}
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql_num, null);
if (dt != null && dt.Rows.Count > 0)
{
this.panel1.Controls.Find("labProNum" + i.ToString(), true)[0].Text = dt.Rows[0]["ProductCount"].ToString();
int prc = 0; int badc = 0;
string PassCount = "";
Int32.TryParse(dt.Rows[0]["ProductCount"].ToString(), out prc);
Int32.TryParse(dt.Rows[0]["BadCount"].ToString(), out badc);
PassCount = (prc - badc).ToString();
int passc = 0;
double compc = 0.0;
Int32.TryParse(PassCount, out passc);
Double.TryParse(dt.Rows[0]["ProductCount"].ToString(), out compc);
if (compc == 0.0)
{
this.panel1.Controls.Find("labPass" + (i + 1).ToString(), true)[0].Text = "0.0%";
}
else
{
this.panel1.Controls.Find("labPass" + (i + 1).ToString(), true)[0].Text = (passc / compc * 100).ToString("0.00") + "%";
}
}
else
{
this.panel1.Controls.Find("labProNum" + i.ToString(), true)[0].Text = "0";
this.panel1.Controls.Find("labPass" + (i + 1).ToString(), true)[0].Text = "0.0%";
}
}
#endregion
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
}
}
/// <summary>
/// 获取班次,规定早8至晚8为A班
/// </summary>
/// <returns></returns>
public string GetWorkClass()
{
bool classA = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "2019-06-12 08:00:00", "2019-06-12 20:00:00");
if (classA)
{
return "A班";
}
else
{
return "B班";
}
}
/// <summary>
/// 判断传入时间是否在工作时间段内
/// </summary>
/// <param name="timeStr"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public static bool IsBetweenTime(string timeStr, string startTime, string endTime)
{
//判断传入时间是否在工作时间段内
try
{
TimeSpan startSpan = DateTime.Parse(startTime).TimeOfDay;
TimeSpan endSpan = DateTime.Parse(endTime).TimeOfDay;
DateTime t1 = Convert.ToDateTime(timeStr);
TimeSpan dspNow = t1.TimeOfDay;
if (dspNow > startSpan && dspNow < endSpan)
{
return true;
}
return false;
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return false;
}
}
private void FrmInjection1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isMouseDown = true;
currentFormLocation = this.Location;
currentMouseOffset = Control.MousePosition;
}
}
private void FrmInjection1_MouseMove(object sender, MouseEventArgs e)
{
int rangeX = 0, rangeY = 0; // 计算当前鼠标光标的位移,让窗体进行相同大小的位移
if (isMouseDown)
{
Point pt = Control.MousePosition;
rangeX = currentMouseOffset.X - pt.X;
rangeY = currentMouseOffset.Y - pt.Y;
this.Location = new Point(currentFormLocation.X - rangeX, currentFormLocation.Y - rangeY);
}
}
private void FrmInjection1_MouseUp(object sender, MouseEventArgs e)
{
isMouseDown = false; // 停止移动
}
}
}