using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using UAS_MES_NEW.DataOperate;
using UAS_MES_NEW.Entity;
using UAS_MES_NEW.PublicMethod;
namespace UAS_MES_NEW.Make
{
public partial class Make_PartClean : Form
{
AutoSizeFormClass asc = new AutoSizeFormClass();
DataHelper dh;
DataTable dt;
// 工序类型:清洗页面固定写CLEAN,写入SB_STEPCODE用于和零件烘烤区分
const string StepCode = "CLEAN";
// 当前批次号:结束清洗后置空,下一个录入的SN会生成新的批次号
string currentBatch = "";
public Make_PartClean()
{
InitializeComponent();
}
private void Make_PartClean_Load(object sender, EventArgs e)
{
asc.controllInitializeSize(this);
dh = SystemInf.dh;
// 恢复未结束的批次(比如中途退出页面的情况)
object b = dh.getFieldDataByCondition("SINGLEBOARD", "max(SB_BATCHCODE)", "SB_STEPCODE='" + StepCode + "' and SB_ENDTIME is null");
currentBatch = b == null ? "" : b.ToString();
if (currentBatch == "")
{
lblBatchCode.Text = "(暂无,录入SN时自动生成)";
}
else
{
lblBatchCode.Text = currentBatch;
LoadBatchData(currentBatch);
}
SetStatus("就绪,请录入SN");
sncode.Focus();
}
///
/// 录入框回车:插入SN到SINGLEBOARD,本批次共用同一个批次号
///
private void sncode_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
InsertSN();
e.Handled = true;
e.SuppressKeyPress = true;
}
}
private void InsertSN()
{
string sn = sncode.Text.Trim();
if (sn == "")
{
SetStatus("SN不能为空!");
return;
}
try
{
// 没有进行中的批次时生成新批次号:PC+年月日时分秒
if (currentBatch == "")
{
currentBatch = GenBatchCode();
lblBatchCode.Text = currentBatch;
}
// 同一批次内SN不允许重复录入
dt = (DataTable)dh.ExecuteSql("select SB_ID from SINGLEBOARD where SB_SNCODE='" + sn + "' and SB_BATCHCODE='" + currentBatch + "' and SB_STEPCODE='" + StepCode + "'", "select");
if (dt.Rows.Count > 0)
{
SetStatus("SN【" + sn + "】在本批次已录入,请勿重复!");
sncode.Clear();
sncode.Focus();
return;
}
dh.ExecuteSql("insert into SINGLEBOARD(SB_ID,SB_SNCODE,SB_INDATE,SB_STATUS,SB_STEPCODE,SB_BATCHCODE,SB_INMAN)values(SINGLEBOARD_SEQ.nextval,'" + sn + "',sysdate,'在录入','" + StepCode + "','" + currentBatch + "','" + User.UserName + "')", "insert");
SetStatus("SN【" + sn + "】录入成功,批次号" + currentBatch);
sncode.Clear();
sncode.Focus();
LoadBatchData(currentBatch);
}
catch (Exception ex)
{
SetStatus("录入失败:" + ex.Message);
}
}
///
/// 生成批次号:清洗PC、烘烤PD + 年月日时分秒,长度16在SB_BATCHCODE(20)范围内
///
private string GenBatchCode()
{
return (StepCode == "CLEAN" ? "PC" : "PD") + DateTime.Now.ToString("yyyyMMddHHmmss");
}
///
/// 开始清洗:给当前批次所有未开始的记录写开始时间
///
private void btnStart_Click(object sender, EventArgs e)
{
if (currentBatch == "")
{
MessageBox.Show("当前没有进行中的批次,请先录入SN!");
return;
}
try
{
dh.ExecuteSql("update SINGLEBOARD set SB_STARTTIME='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "',SB_STATUS='清洗中' where SB_BATCHCODE='" + currentBatch + "' and SB_STEPCODE='" + StepCode + "' and SB_STARTTIME is null", "update");
SetStatus("批次【" + currentBatch + "】清洗已开始");
LoadBatchData(currentBatch);
}
catch (Exception ex)
{
SetStatus("开始清洗失败:" + ex.Message);
}
}
///
/// 结束清洗:给当前批次所有未结束的记录写结束时间,之后录入的SN生成新批次
///
private void btnEnd_Click(object sender, EventArgs e)
{
if (currentBatch == "")
{
MessageBox.Show("当前没有进行中的批次!");
return;
}
try
{
dh.ExecuteSql("update SINGLEBOARD set SB_ENDTIME='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "',SB_STATUS='已完成' where SB_BATCHCODE='" + currentBatch + "' and SB_STEPCODE='" + StepCode + "' and SB_ENDTIME is null", "update");
SetStatus("批次【" + currentBatch + "】已结束,下一批录入SN时生成新批次号");
// 保留显示刚结束批次的数据,批次号置空
LoadBatchData(currentBatch);
currentBatch = "";
lblBatchCode.Text = "(暂无,录入SN时自动生成)";
}
catch (Exception ex)
{
SetStatus("结束清洗失败:" + ex.Message);
}
}
///
/// 按批次号查询
///
private void btnQuery_Click(object sender, EventArgs e)
{
string b = txtQueryBatch.Text.Trim();
if (b == "")
{
MessageBox.Show("请输入要查询的批次号!");
return;
}
LoadBatchData(b);
}
///
/// 加载指定批次的数据显示在表格里
///
private void LoadBatchData(string batch)
{
dt = (DataTable)dh.ExecuteSql("select SB_SNCODE \"SN\",SB_INDATE \"录入时间\",SB_STARTTIME \"开始清洗时间\",SB_INMAN \"录入人\",SB_STATUS \"状态\" from SINGLEBOARD where SB_BATCHCODE='" + batch + "' and SB_STEPCODE='" + StepCode + "' order by SB_ID", "select");
DGV.DataSource = dt;
}
private void SetStatus(string text)
{
lblStatus.Text = "状态:" + text;
}
private void Make_PartClean_SizeChanged(object sender, EventArgs e)
{
asc.controlAutoSize(this);
}
}
}