|
|
@@ -32,11 +32,17 @@ namespace UAS_MES.Make
|
|
|
DataTable dt;
|
|
|
//step 记录检验规则的进度
|
|
|
int step=0;
|
|
|
- //记录采集的IMEI,BT,MAC等信息
|
|
|
- Hashtable hs;
|
|
|
//存放关联信息类型
|
|
|
string type;
|
|
|
-
|
|
|
+ //存放二次校验的sql
|
|
|
+ StringBuilder container = new StringBuilder();
|
|
|
+ //存放包含IMEI的规则的值,方便拼接
|
|
|
+ StringBuilder imei = new StringBuilder();
|
|
|
+ LogStringBuilder logsql = new LogStringBuilder();
|
|
|
+ //存储最后插入数据库的赋值语句部分
|
|
|
+ StringBuilder s1 = new StringBuilder();
|
|
|
+ //存放工单中数量
|
|
|
+ int ma_qty;
|
|
|
public Make_SeqProgramTransform()
|
|
|
{
|
|
|
InitializeComponent();
|
|
|
@@ -86,14 +92,16 @@ namespace UAS_MES.Make
|
|
|
dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select", code.Text);
|
|
|
if (dt.Rows.Count > 0)
|
|
|
{
|
|
|
+ //记录数量
|
|
|
+ ma_qty = int.Parse(dt.Rows[0]["ma_qty"].ToString());
|
|
|
BaseUtil.SetFormValue(this.Controls, dt);
|
|
|
//判断用户是否锁定输入TSN长度,
|
|
|
- if (!checkLengthOrPre(TSNLength_checkBox, TSNLength, "长度"))
|
|
|
+ if (!checkLengthOrPre(TSNLength_checkBox, TSNLength, "长度","TSN"))
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
//判断用户是否锁定输入TSN前缀,
|
|
|
- if (!checkLengthOrPre(TSNPre_checkBox, TSNPre, "前缀"))
|
|
|
+ if (!checkLengthOrPre(TSNPre_checkBox, TSNPre, "前缀","TSN"))
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
@@ -101,6 +109,7 @@ namespace UAS_MES.Make
|
|
|
else
|
|
|
{
|
|
|
OperateResult.AppendText(">>序列号" + code.Text + "不存在\n", Color.Red);
|
|
|
+ code.Text = "";
|
|
|
return;
|
|
|
}
|
|
|
//获取需要关联采集的信息,以及校验规则
|
|
|
@@ -112,7 +121,6 @@ namespace UAS_MES.Make
|
|
|
OperateResult.AppendText("<<请输入TSN\n", Color.Green);
|
|
|
return;
|
|
|
}
|
|
|
- hs = new Hashtable();
|
|
|
step = 1;
|
|
|
|
|
|
//记录转换前的序列号
|
|
|
@@ -140,12 +148,12 @@ namespace UAS_MES.Make
|
|
|
if (!dh.CheckExist("makeserial", "ms_sncode='" + code.Text + "'"))
|
|
|
{
|
|
|
//判断用户是否锁定输入SN长度,
|
|
|
- if (!checkLengthOrPre(SNLength_checkBox, SNLength, "长度"))
|
|
|
+ if (!checkLengthOrPre(SNLength_checkBox, SNLength, "长度","SN"))
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
//判断用户是否锁定输入SN前缀,
|
|
|
- if (!checkLengthOrPre(SNPre_checkBox, SNPre, "前缀"))
|
|
|
+ if (!checkLengthOrPre(SNPre_checkBox, SNPre, "前缀","SN"))
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
@@ -162,7 +170,8 @@ namespace UAS_MES.Make
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- OperateResult.AppendText(">>序列号" + code.Text + "已存在,请输入SN\n", Color.Red);
|
|
|
+ OperateResult.AppendText(">>序列号" + code.Text + "已存在\n", Color.Red);
|
|
|
+ OperateResult.AppendText(">>请输入SN\n", Color.Green);
|
|
|
code.Text = "";
|
|
|
}
|
|
|
}
|
|
|
@@ -192,7 +201,7 @@ namespace UAS_MES.Make
|
|
|
/// <param name="checkbox"></param>
|
|
|
/// <param name="c"></param>
|
|
|
/// <param name="info"></param>
|
|
|
- private bool checkLengthOrPre(CheckBox checkbox, TextBox textbox, string type)
|
|
|
+ private bool checkLengthOrPre(CheckBox checkbox, TextBox textbox, string type, string TSNorSN)
|
|
|
{
|
|
|
if (checkbox.Checked == true)
|
|
|
{
|
|
|
@@ -202,9 +211,9 @@ namespace UAS_MES.Make
|
|
|
if (code.Text.Trim().Length != int.Parse(textbox.Text))
|
|
|
{
|
|
|
//序列号校验错误,长度错误
|
|
|
- OperateResult.AppendText(">>TSN号" + code.Text + "校验错误,长度错误\n", Color.Red);
|
|
|
+ OperateResult.AppendText(">>" + TSNorSN + ":" + code.Text + "校验错误,长度错误\n", Color.Red);
|
|
|
code.Text = "";
|
|
|
- OperateResult.AppendText("<<请重新输入TSN\n", Color.Green);
|
|
|
+ OperateResult.AppendText("<<请重新输入" + TSNorSN + "\n", Color.Green);
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
@@ -214,9 +223,9 @@ namespace UAS_MES.Make
|
|
|
if (!code.Text.StartsWith(textbox.Text.Trim()))
|
|
|
{
|
|
|
//序列号校验错误,前缀错误
|
|
|
- OperateResult.AppendText(">>TSN号" + code.Text + "校验错误,前缀错误\n", Color.Red);
|
|
|
+ OperateResult.AppendText(">>" + TSNorSN + ":" + code.Text + "校验错误,前缀错误\n", Color.Red);
|
|
|
code.Text = "";
|
|
|
- OperateResult.AppendText("<<请重新输入TSN\n", Color.Green);
|
|
|
+ OperateResult.AppendText("<<请重新输入" + TSNorSN + "\n", Color.Green);
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
@@ -232,7 +241,7 @@ namespace UAS_MES.Make
|
|
|
{
|
|
|
type = ListA.Rows[step - 2]["psr_type"].ToString()=="WIFI"?"MAC": ListA.Rows[step - 2]["psr_type"].ToString();
|
|
|
//如果前缀和长度都满足的话
|
|
|
- if ((ListA.Rows[step-2]["psr_length"].ToString() == "" ? true : code.Text.Length == ListA.Rows[step-2]["psr_length"].ToString().Length) && (ListA.Rows[step - 2]["psr_prefix"].ToString() == "" ? true : code.Text.StartsWith(ListA.Rows[step - 2]["psr_prefix"].ToString())))
|
|
|
+ if ((ListA.Rows[step-2]["psr_length"].ToString() == "" ? true : code.Text.Length == int.Parse(ListA.Rows[step-2]["psr_length"].ToString())) && (ListA.Rows[step - 2]["psr_prefix"].ToString() == "" ? true : code.Text.StartsWith(ListA.Rows[step - 2]["psr_prefix"].ToString())))
|
|
|
{
|
|
|
switch (type)
|
|
|
{
|
|
|
@@ -242,33 +251,40 @@ namespace UAS_MES.Make
|
|
|
if (checkExist("ms_imei1='" + code.Text + "' or ms_imei2 = '" + code.Text + "' or ms_imei3 = '" + code.Text + "'"))
|
|
|
{
|
|
|
OperateResult.AppendText(">>" + type + ":" + code.Text + "错误,不允许重复\n", Color.Red);
|
|
|
+ OperateResult.AppendText(">>请输入"+type+"\n", Color.Green);
|
|
|
code.Text = "";
|
|
|
return false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//判断IMEI1,IMEI2,IMEI3中是否已经有这个号了
|
|
|
- foreach (DictionaryEntry de in hs) {
|
|
|
- if (de.Key.ToString().Contains("IMEI")&&de.Value.ToString()==code.Text) {
|
|
|
- OperateResult.AppendText(">>" + type + ":" + code.Text + "已录,请重新输入\n", Color.Red);
|
|
|
- code.Text = "";
|
|
|
- return false;
|
|
|
- }
|
|
|
+ if (imei.ToString().Contains(code.Text)) {
|
|
|
+ OperateResult.AppendText(">>" + type + ":" + code.Text + "已录,请重新输入\n", Color.Red);
|
|
|
+ OperateResult.AppendText(">>请输入" + type + "\n", Color.Green);
|
|
|
+ code.Text = "";
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|
|
|
+ //通过校验,将包含IMEI的值拼接
|
|
|
+ imei.Append("'"+code.Text+"',");
|
|
|
+ s1.Append("MS_" + type + " = '" + code.Text + "',");
|
|
|
break;
|
|
|
case "BT":
|
|
|
case "MAC":
|
|
|
case "NETCODE":
|
|
|
if (checkExist("MS_"+type+"='"+code.Text+"'")) {
|
|
|
OperateResult.AppendText(">>" + type + ":" + code.Text + "错误,不允许重复\n", Color.Red);
|
|
|
+ OperateResult.AppendText(">>请输入" + type + "\n", Color.Green);
|
|
|
code.Text = "";
|
|
|
return false;
|
|
|
}
|
|
|
+ //通过校验,将包含IMEI的值拼接
|
|
|
+ container.Append(" or MS_"+type+"='"+code.Text+"'");
|
|
|
+ s1.Append("MS_" + type + " = '" + code.Text + "',");
|
|
|
break;
|
|
|
}
|
|
|
//满足规则,则采集
|
|
|
- hs.Add(type,code.Text);
|
|
|
+ //hs.Add(type,code.Text);
|
|
|
//说明已经是最后一个校验规则
|
|
|
if (step == ListA.Rows.Count+1)
|
|
|
{
|
|
|
@@ -277,34 +293,31 @@ namespace UAS_MES.Make
|
|
|
if (!dh.CheckExist("makeserial", "ms_sncode='" + SN + "'"))
|
|
|
{
|
|
|
bool flag = true;
|
|
|
- StringBuilder s1 = new StringBuilder();
|
|
|
- //再次校验关联采集信息
|
|
|
- foreach (DictionaryEntry de in hs)
|
|
|
+ //不包含IMEI采集信息
|
|
|
+ if (imei.ToString() == "")
|
|
|
{
|
|
|
- s1.Append("MS_"+ de.Key.ToString()+" = '"+de.Value.ToString()+"',");
|
|
|
- if (de.Key.ToString().Contains("IMEI"))
|
|
|
- {
|
|
|
- if (checkExist("ms_imei1='" + de.Value.ToString() + "' or ms_imei2 = '" + de.Value.ToString() + "' or ms_imei3 = '" + de.Value.ToString() + "'"))
|
|
|
- {
|
|
|
- flag = false;
|
|
|
- OperateResult.AppendText(">>"+de.Key.ToString()+":" + de.Value.ToString() + "已存在,请重新输入TSN\n", Color.Red);
|
|
|
- //清空信息
|
|
|
- clearInfo();
|
|
|
- break;
|
|
|
- }
|
|
|
+ //已存在,错误
|
|
|
+ if (checkExist(container.ToString().Substring(4))) {
|
|
|
+ flag = false;
|
|
|
+ OperateResult.AppendText(">>请重新输入TSN,重新转换\n", Color.Green);
|
|
|
+ //清空信息
|
|
|
+ clearInfo();
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- if (checkExist("MS_" + de.Key.ToString() + "='" + de.Value.ToString() + "'"))
|
|
|
- {
|
|
|
- flag = false;
|
|
|
- OperateResult.AppendText(">>" + de.Key.ToString() + ":" + de.Value.ToString() + "已存在,请重新输入TSN\n", Color.Red);
|
|
|
- //清空信息
|
|
|
- clearInfo();
|
|
|
- break;
|
|
|
- }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ string imeiStr = imei.Remove(imei.Length - 1, 1).ToString();
|
|
|
+ logsql.Clear();
|
|
|
+ logsql.Append("ms_imei1 in(" + imeiStr + ") or ms_imei2 in (" + imeiStr + ") or ms_imei3 in (" + imeiStr + ")" + container.ToString());
|
|
|
+ //已存在
|
|
|
+ if (checkExist(logsql.GetString())){
|
|
|
+ flag = false;
|
|
|
+ OperateResult.AppendText(">>请重新输入TSN,重新转换\n", Color.Green);
|
|
|
+ //清空信息
|
|
|
+ clearInfo();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
//根据flag判断关联采集信息二次校验结果
|
|
|
if (flag=true) {
|
|
|
//说明SN和关联采集信息二次校验通过,则进行转换和采集信息绑定
|
|
|
@@ -318,28 +331,29 @@ namespace UAS_MES.Make
|
|
|
//写入日志
|
|
|
LogManager.DoLog("修改序列号:" + TSN + "为" + SN + "成功!" + "操作人:" + User.UserCode);
|
|
|
//完成该道工序 setFinish
|
|
|
- LogicHandler.UpdateMakeMessage(TSN, ms_macode.Text, "序列烧录转换", User.UserSourceCode, User.UserCode, "序列烧录转换成功", out errorMessage);
|
|
|
+ LogicHandler.UpdateMakeMessage(SN, ms_macode.Text, "序列烧录转换", User.UserSourceCode, User.UserCode, "序列烧录转换成功", out errorMessage);
|
|
|
|
|
|
//输出提示用户“>>序列号转换成功”,“>>关联采集成功”
|
|
|
OperateResult.AppendText(">>关联采集成功\n", Color.Green);
|
|
|
//获取剩余数,刷新页面
|
|
|
sql.Clear();
|
|
|
- sql.Append("select ma_qty-mcd_inqty as remain_qty ");
|
|
|
- sql.Append("from makeserial left join make on ms_makecode=ma_code left join product on ");
|
|
|
- sql.Append("ms_prodcode=pr_code left join makecraftdetail on ms_makecode=mcd_macode where ms_sncode=:sncode and mcd_stepcode='" + User.CurrentStepCode + "'");
|
|
|
+ sql.Append("select mcd_inqty from makecraftdetail where mcd_macode='"+ms_macode.Text+"' and mcd_stepcode='"+ User.CurrentStepCode + "'");
|
|
|
dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select", SN);
|
|
|
- if (dt.Rows.Count>0) {
|
|
|
- remain_qty.Text = dt.Rows[0]["remain_qty"].ToString();
|
|
|
+ if (dt.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ remain_qty.Text = ma_qty -int.Parse(dt.Rows[0]["mcd_inqty"].ToString())+"";
|
|
|
}
|
|
|
//更新页面计数+1
|
|
|
count.Text = int.Parse(count.Text) + 1 + "";
|
|
|
//完成之后,清除信息
|
|
|
clearInfo();
|
|
|
+ OperateResult.AppendText(">>请输入TSN号\n", Color.Green);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- OperateResult.AppendText(">>序列号" + SN + "已存在,请重新输入TSN\n", Color.Red);
|
|
|
+ OperateResult.AppendText(">>序列号" + SN + "已存在\n", Color.Red);
|
|
|
+ OperateResult.AppendText(">>请重新输入TSN\n", Color.Green);
|
|
|
code.Text = "";
|
|
|
//清空信息
|
|
|
clearInfo();
|
|
|
@@ -356,6 +370,7 @@ namespace UAS_MES.Make
|
|
|
else {
|
|
|
//重新输入
|
|
|
OperateResult.AppendText(">>" + ListA.Rows[step-2]["psr_type"] + "校验不通过,请重新输入\n", Color.Red);
|
|
|
+ OperateResult.AppendText(">>请重新输入" + ListA.Rows[step - 2]["psr_type"] + "\n", Color.Green);
|
|
|
code.Text = "";
|
|
|
return false;
|
|
|
}
|
|
|
@@ -482,9 +497,13 @@ namespace UAS_MES.Make
|
|
|
//步骤重置为0
|
|
|
step = 0;
|
|
|
//关联采集信息清空
|
|
|
- if (hs!=null) {
|
|
|
- hs.Clear();
|
|
|
- }
|
|
|
+ //if (hs!=null) {
|
|
|
+ // hs.Clear();
|
|
|
+ //}
|
|
|
+ container.Clear();
|
|
|
+ imei.Clear();
|
|
|
+ logsql.Clear();
|
|
|
+ s1.Clear();
|
|
|
}
|
|
|
|
|
|
private void cancel_Click(object sender, EventArgs e)
|