|
|
@@ -257,10 +257,10 @@ namespace UAS_MES_NEW.Query
|
|
|
MessageBox.Show("工单号" + ma_code.Text + "生产序列号超出工单数");
|
|
|
return;
|
|
|
}
|
|
|
- DataTable Nr = (DataTable)dh.ExecuteSql("select nrd_detno,nrd_name,nrd_type,nrd_radix,nrd_sql,nrd_length,nrd_content from NoRuleDetail left join norule on nrd_nrid=nr_id where nr_code='" + pr_exbarcode + "' order by nrd_detno", "select");
|
|
|
+ DataTable Nr = (DataTable)dh.ExecuteSql("select nrd_detno,nrd_name,nrd_type,nrd_radix,nrd_sql,nrd_length,nrd_content,nvl(nr_changenum,0)nr_changenum from NoRuleDetail left join norule on nrd_nrid=nr_id where nr_code='" + pr_exbarcode + "' order by nrd_detno", "select");
|
|
|
//如果没有则取公共规则
|
|
|
if (Nr.Rows.Count == 0)
|
|
|
- Nr = (DataTable)dh.ExecuteSql("select nrd_detno,nrd_name,nrd_radix,nrd_type,nrd_sql,nrd_length,nrd_content from NoRuleDetail left join norule on nrd_nrid=nr_id where nr_custcode is null and nr_isdefault <> 0 order by nrd_detno", "select");
|
|
|
+ Nr = (DataTable)dh.ExecuteSql("select nrd_detno,nrd_name,nrd_radix,nrd_type,nrd_sql,nrd_length,nrd_content,nvl(nr_changenum,0)nr_changenum from NoRuleDetail left join norule on nrd_nrid=nr_id where nr_custcode is null and nr_isdefault <> 0 order by nrd_detno", "select");
|
|
|
//用于过滤参数的正则表达式
|
|
|
Regex match = new Regex("{\\w+}");
|
|
|
//用于存放每一项的明细的数据
|
|
|
@@ -273,90 +273,180 @@ namespace UAS_MES_NEW.Query
|
|
|
int Radix = 10;
|
|
|
string PrefixFixed = "";
|
|
|
string char_out = "";
|
|
|
- for (int m = 0; m < Nr.Rows.Count; m++)
|
|
|
+ string nr_changenum = Nr.Rows[0]["nr_changenum"].ToString();
|
|
|
+ //如果是
|
|
|
+ if (nr_changenum != "-1")
|
|
|
{
|
|
|
- switch (Nr.Rows[m]["nrd_type"].ToString())
|
|
|
+ for (int m = 0; m < Nr.Rows.Count; m++)
|
|
|
{
|
|
|
- //常量直接进行拼接
|
|
|
- case "常量":
|
|
|
- NrData[m] = Nr.Rows[m]["nrd_sql"].ToString();
|
|
|
- Prefix += NrData[m];
|
|
|
- Suffix += NrData[m];
|
|
|
- break;
|
|
|
- case "SQL":
|
|
|
- string SQL = Nr.Rows[m]["nrd_sql"].ToString();
|
|
|
- DataTable Temp;
|
|
|
- //如果不包含参数替换
|
|
|
- if (SQL.IndexOf("{") == 0)
|
|
|
- {
|
|
|
- Temp = (DataTable)dh.ExecuteSql(SQL, "select");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //替换参数后重新执行SQL
|
|
|
- foreach (Match mch in match.Matches(SQL))
|
|
|
- {
|
|
|
- SQL = SQL.Replace(mch.Value.Trim(), "'" + ma_code.Text + "'");
|
|
|
- }
|
|
|
- Temp = (DataTable)dh.ExecuteSql(SQL, "select");
|
|
|
- }
|
|
|
- if (Temp.Rows.Count > 0)
|
|
|
- {
|
|
|
- NrData[m] = Temp.Rows[0][0].ToString();
|
|
|
+ switch (Nr.Rows[m]["nrd_type"].ToString())
|
|
|
+ {
|
|
|
+ //常量直接进行拼接
|
|
|
+ case "常量":
|
|
|
+ NrData[m] = Nr.Rows[m]["nrd_sql"].ToString();
|
|
|
Prefix += NrData[m];
|
|
|
Suffix += NrData[m];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- NrData[m] = "";
|
|
|
+ break;
|
|
|
+ case "SQL":
|
|
|
+ string SQL = Nr.Rows[m]["nrd_sql"].ToString();
|
|
|
+ DataTable Temp;
|
|
|
+ //如果不包含参数替换
|
|
|
+ if (SQL.IndexOf("{") == 0)
|
|
|
+ {
|
|
|
+ Temp = (DataTable)dh.ExecuteSql(SQL, "select");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //替换参数后重新执行SQL
|
|
|
+ foreach (Match mch in match.Matches(SQL))
|
|
|
+ {
|
|
|
+ SQL = SQL.Replace(mch.Value.Trim(), "'" + ma_code.Text + "'");
|
|
|
+ }
|
|
|
+ Temp = (DataTable)dh.ExecuteSql(SQL, "select");
|
|
|
+ }
|
|
|
+ if (Temp.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ NrData[m] = Temp.Rows[0][0].ToString();
|
|
|
+ Prefix += NrData[m];
|
|
|
+ Suffix += NrData[m];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ NrData[m] = "";
|
|
|
+ Prefix += NrData[m];
|
|
|
+ Suffix += NrData[m];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ //流水需要通过MaxNumber去取
|
|
|
+ case "流水":
|
|
|
+ NrData[m] = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + pr_exbarcode + "'").ToString();
|
|
|
+ Suffix = "";
|
|
|
+ PrefixFixed = Prefix;
|
|
|
+ //设置当前流水
|
|
|
+ custserialnum = int.Parse(NrData[m] == "" ? "0" : NrData[m]);
|
|
|
+ SerialNumIndex = m;
|
|
|
+ SerialNumLength = int.Parse(Nr.Rows[m]["nrd_length"].ToString());
|
|
|
+ Radix = int.Parse(Nr.Rows[m]["nrd_radix"].ToString());
|
|
|
+ char_out = Nr.Rows[m]["nrd_content"].ToString();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取最大的流水号
|
|
|
+ string maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + pr_exbarcode + "' and rmn_prefix='" + Prefix + "'").ToString();
|
|
|
+ //如果流水号为空则插入一条新记录,从1开始取
|
|
|
+ if (maxnum == "")
|
|
|
+ {
|
|
|
+ dh.ExecuteSql("insert into RuleMaxNum(rmn_id,rmn_nrcode,rmn_prefix,rmn_maxnumber) values(RuleMaxNum_seq.nextval,'" + pr_exbarcode + "','" + Prefix + "','1')", "insert");
|
|
|
+ custserialnum = 1;
|
|
|
+ }
|
|
|
+ //如果流水号不为空则取当前流水
|
|
|
+ else
|
|
|
+ {
|
|
|
+ custserialnum = int.Parse(maxnum);
|
|
|
+ }
|
|
|
+ //遍历整个Grid,勾选的项目全部进行条码生成
|
|
|
+ ArrayList<string> custbarcode = new ArrayList<string>();
|
|
|
+ for (int i = 0; i < int.Parse(ma_count.Text); i++)
|
|
|
+ {
|
|
|
+ string data = BarcodeMethod1(PrefixFixed, Suffix, SerialNumIndex, SerialNumLength, Radix, char_out);
|
|
|
+ if (!custbarcode.Contains(data))
|
|
|
+ custbarcode.Add(data);
|
|
|
+ }
|
|
|
+ string sql = "insert into makesnlist(MSL_ID, MSL_INDATE, MSL_MAKECODE, MSL_SNCODE, MSL_TYPE,msl_status)" +
|
|
|
+ "select makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "',:custbarcode,'before',0 from dual where :custbarcode not in " +
|
|
|
+ "(select msl_sncode from makesnlist)";
|
|
|
+ dh.BatchInsert(sql, new string[] { "custbarcode", "custbarcode" }, custbarcode.ToArray(), custbarcode.ToArray());
|
|
|
+ //更新最大流水号
|
|
|
+ dh.UpdateByCondition("RuleMaxNum", "rmn_maxnumber='" + custserialnum + "'", "rmn_nrcode='" + pr_exbarcode + "' and rmn_prefix='" + Prefix + "'");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ for (int m = 0; m < Nr.Rows.Count; m++)
|
|
|
+ {
|
|
|
+ switch (Nr.Rows[m]["nrd_type"].ToString())
|
|
|
+ {
|
|
|
+ //常量直接进行拼接
|
|
|
+ case "常量":
|
|
|
+ NrData[m] = Nr.Rows[m]["nrd_sql"].ToString();
|
|
|
Prefix += NrData[m];
|
|
|
Suffix += NrData[m];
|
|
|
- }
|
|
|
- break;
|
|
|
- //流水需要通过MaxNumber去取
|
|
|
- case "流水":
|
|
|
- NrData[m] = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + pr_exbarcode + "'").ToString();
|
|
|
- Suffix = "";
|
|
|
- PrefixFixed = Prefix;
|
|
|
- //设置当前流水
|
|
|
- custserialnum = int.Parse(NrData[m] == "" ? "0" : NrData[m]);
|
|
|
- SerialNumIndex = m;
|
|
|
- SerialNumLength = int.Parse(Nr.Rows[m]["nrd_length"].ToString());
|
|
|
- Radix = int.Parse(Nr.Rows[m]["nrd_radix"].ToString());
|
|
|
- char_out = Nr.Rows[m]["nrd_content"].ToString();
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
+ break;
|
|
|
+ case "SQL":
|
|
|
+ string SQL = Nr.Rows[m]["nrd_sql"].ToString();
|
|
|
+ DataTable Temp;
|
|
|
+ //如果不包含参数替换
|
|
|
+ if (SQL.IndexOf("{") == 0)
|
|
|
+ {
|
|
|
+ Temp = (DataTable)dh.ExecuteSql(SQL, "select");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //替换参数后重新执行SQL
|
|
|
+ foreach (Match mch in match.Matches(SQL))
|
|
|
+ {
|
|
|
+ SQL = SQL.Replace(mch.Value.Trim(), "'" + ma_code.Text + "'");
|
|
|
+ }
|
|
|
+ Temp = (DataTable)dh.ExecuteSql(SQL, "select");
|
|
|
+ }
|
|
|
+ if (Temp.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ NrData[m] = Temp.Rows[0][0].ToString();
|
|
|
+ Prefix += NrData[m];
|
|
|
+ Suffix += NrData[m];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ NrData[m] = "";
|
|
|
+ Prefix += NrData[m];
|
|
|
+ Suffix += NrData[m];
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ //流水需要通过MaxNumber去取
|
|
|
+ case "流水":
|
|
|
+ NrData[m] = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + pr_exbarcode + "'").ToString();
|
|
|
+ Suffix = "";
|
|
|
+ PrefixFixed = Prefix;
|
|
|
+ //设置当前流水
|
|
|
+ custserialnum = int.Parse(NrData[m] == "" ? "0" : NrData[m]);
|
|
|
+ SerialNumIndex = m;
|
|
|
+ SerialNumLength = int.Parse(Nr.Rows[m]["nrd_length"].ToString());
|
|
|
+ Radix = int.Parse(Nr.Rows[m]["nrd_radix"].ToString());
|
|
|
+ char_out = Nr.Rows[m]["nrd_content"].ToString();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- //获取最大的流水号
|
|
|
- string maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + pr_exbarcode + "' and rmn_prefix='" + Prefix + "'").ToString();
|
|
|
- //如果流水号为空则插入一条新记录,从1开始取
|
|
|
- if (maxnum == "")
|
|
|
- {
|
|
|
- dh.ExecuteSql("insert into RuleMaxNum(rmn_id,rmn_nrcode,rmn_prefix,rmn_maxnumber) values(RuleMaxNum_seq.nextval,'" + pr_exbarcode + "','" + Prefix + "','1')", "insert");
|
|
|
- custserialnum = 1;
|
|
|
- }
|
|
|
- //如果流水号不为空则取当前流水
|
|
|
- else
|
|
|
- {
|
|
|
- custserialnum = int.Parse(maxnum);
|
|
|
- }
|
|
|
- //遍历整个Grid,勾选的项目全部进行条码生成
|
|
|
- ArrayList<string> custbarcode = new ArrayList<string>();
|
|
|
- for (int i = 0; i < int.Parse(ma_count.Text); i++)
|
|
|
- {
|
|
|
- string data = BarcodeMethod1(PrefixFixed, Suffix, SerialNumIndex, SerialNumLength, Radix, char_out);
|
|
|
- if (!custbarcode.Contains(data))
|
|
|
- custbarcode.Add(data);
|
|
|
+ //获取最大的流水号
|
|
|
+ string maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + pr_exbarcode + "'").ToString();
|
|
|
+ //如果流水号为空则插入一条新记录,从1开始取
|
|
|
+ if (maxnum == "")
|
|
|
+ {
|
|
|
+ dh.ExecuteSql("insert into RuleMaxNum(rmn_id,rmn_nrcode,rmn_maxnumber) values(RuleMaxNum_seq.nextval,'" + pr_exbarcode + "','1')", "insert");
|
|
|
+ custserialnum = 1;
|
|
|
+ }
|
|
|
+ //如果流水号不为空则取当前流水
|
|
|
+ else
|
|
|
+ {
|
|
|
+ custserialnum = int.Parse(maxnum);
|
|
|
+ }
|
|
|
+ //遍历整个Grid,勾选的项目全部进行条码生成
|
|
|
+ ArrayList<string> custbarcode = new ArrayList<string>();
|
|
|
+ for (int i = 0; i < int.Parse(ma_count.Text); i++)
|
|
|
+ {
|
|
|
+ string data = BarcodeMethod1(PrefixFixed, Suffix, SerialNumIndex, SerialNumLength, Radix, char_out);
|
|
|
+ if (!custbarcode.Contains(data))
|
|
|
+ custbarcode.Add(data);
|
|
|
+ }
|
|
|
+ string sql = "insert into makesnlist(MSL_ID, MSL_INDATE, MSL_MAKECODE, MSL_SNCODE, MSL_TYPE,msl_status)" +
|
|
|
+ "select makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "',:custbarcode,'before',0 from dual where :custbarcode not in " +
|
|
|
+ "(select msl_sncode from makesnlist)";
|
|
|
+ dh.BatchInsert(sql, new string[] { "custbarcode", "custbarcode" }, custbarcode.ToArray(), custbarcode.ToArray());
|
|
|
+ //更新最大流水号
|
|
|
+ dh.UpdateByCondition("RuleMaxNum", "rmn_maxnumber='" + custserialnum + "'", "rmn_nrcode='" + pr_exbarcode + "'");
|
|
|
}
|
|
|
//插入条码
|
|
|
- string sql = "insert into makesnlist(MSL_ID, MSL_INDATE, MSL_MAKECODE, MSL_SNCODE, MSL_TYPE,msl_status)" +
|
|
|
- "select makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "',:custbarcode,'before',0 from dual where :custbarcode not in " +
|
|
|
- "(select msl_sncode from makesnlist)";
|
|
|
- dh.BatchInsert(sql, new string[] { "custbarcode", "custbarcode" }, custbarcode.ToArray(), custbarcode.ToArray());
|
|
|
- //更新最大流水号
|
|
|
- dh.UpdateByCondition("RuleMaxNum", "rmn_maxnumber='" + custserialnum + "'", "rmn_nrcode='" + pr_exbarcode + "' and rmn_prefix='" + Prefix + "'");
|
|
|
MessageBox.Show("工单" + ma_code.Text + "生成SN清单成功");
|
|
|
}
|
|
|
}
|