|
@@ -2186,8 +2186,7 @@ namespace UAS_LabelMachine
|
|
|
{
|
|
|
Menu.Show(new Point(MenuSetting.Location.X, MenuSetting.Location.Y + 20));
|
|
|
}
|
|
|
- //客户的流水号
|
|
|
- int custserialnum = 0;
|
|
|
+
|
|
|
private void Menu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
|
|
{
|
|
|
Menu.Close();
|
|
@@ -2301,6 +2300,18 @@ namespace UAS_LabelMachine
|
|
|
BaseUtil.SetFormCenter(cust);
|
|
|
cust.ShowDialog();
|
|
|
break;
|
|
|
+ case "流水调整":
|
|
|
+ if (cu_code.Text != "")
|
|
|
+ {
|
|
|
+ ReSetMaxNum reset = new ReSetMaxNum(cu_code.Text);
|
|
|
+ BaseUtil.SetFormCenter(reset);
|
|
|
+ reset.ShowDialog();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("请先输入出货单号");
|
|
|
+ }
|
|
|
+ break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -2322,101 +2333,127 @@ namespace UAS_LabelMachine
|
|
|
return str;
|
|
|
}
|
|
|
|
|
|
+ //前缀
|
|
|
+ string Prefix = "";
|
|
|
+ //后缀
|
|
|
+ string Suffix = "";
|
|
|
+ //编码规则编号
|
|
|
+ string NrCode = "";
|
|
|
+
|
|
|
+ string PrefixFixed = "";
|
|
|
+ //流水号的索引
|
|
|
+ int SerialNumIndex = 0;
|
|
|
+ //流水长度
|
|
|
+ int SerialNumLength = 0;
|
|
|
+ //存放键值对
|
|
|
+ int Radix = 10;
|
|
|
+ //客户的流水号
|
|
|
+ int custserialnum = 0;
|
|
|
+
|
|
|
+ public void GetCustRule()
|
|
|
+ {
|
|
|
+ //前缀
|
|
|
+ Prefix = "";
|
|
|
+ //后缀
|
|
|
+ Suffix = "";
|
|
|
+ //编码规则编号
|
|
|
+ NrCode = "";
|
|
|
+
|
|
|
+ PrefixFixed = "";
|
|
|
+ //流水号的索引
|
|
|
+ SerialNumIndex = 0;
|
|
|
+ //流水长度
|
|
|
+ SerialNumLength = 0;
|
|
|
+ //存放键值对
|
|
|
+ Radix = 10;
|
|
|
+ DataTable Nr = (DataTable)dh.ExecuteSql("select nrd_detno,nrd_name,nrd_type,nrd_radix,nrd_sql,nrd_length,nr_code,nvl(nrd_iscombine,-1)nrd_iscombine from NoRuleDetail left join norule on nrd_nrid=nr_id where nr_custcode='" + cu_code.Text + "' 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,nr_code,nvl(nrd_iscombine,-1)nrd_iscombine from NoRuleDetail left join norule on nrd_nrid=nr_id where nr_custcode is null and nr_isdefault <> 0 order by nrd_detno", "select");
|
|
|
+ //用于过滤参数的正则表达式
|
|
|
+ if (Nr.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ NrCode = Nr.Rows[0]["nr_code"].ToString();
|
|
|
+ }
|
|
|
+ Regex match = new Regex("{\\w+}");
|
|
|
+ //用于存放每一项的明细的数据
|
|
|
+ string[] NrData = new string[Nr.Rows.Count];
|
|
|
+
|
|
|
+ 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;
|
|
|
+ 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(), "'" + pi_inoutno.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='" + NrCode + "'").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());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ string maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + NrCode + "' and rmn_prefix='" + Prefix + "'").ToString();
|
|
|
+ if (maxnum == "")
|
|
|
+ {
|
|
|
+ dh.ExecuteSql("insert into RuleMaxNum(rmn_id,rmn_nrcode,rmn_prefix,rmn_maxnumber) values(RuleMaxNum_seq.nextval,'" + NrCode + "','" + Prefix + "','1')", "insert");
|
|
|
+ maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + NrCode + "' and rmn_prefix='" + Prefix + "'").ToString();
|
|
|
+ custserialnum = int.Parse(maxnum);
|
|
|
+ }//如果流水号不为空则取当前流水
|
|
|
+ else
|
|
|
+ {
|
|
|
+ custserialnum = int.Parse(maxnum);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void ImportBarcode()
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- string Prefix = "";
|
|
|
-
|
|
|
- string Suffix = "";
|
|
|
- //编码规则编号
|
|
|
- string NrCode = "";
|
|
|
- DataTable Nr = (DataTable)dh.ExecuteSql("select nrd_detno,nrd_name,nrd_type,nrd_radix,nrd_sql,nrd_length,nr_code,nvl(nrd_iscombine,-1)nrd_iscombine from NoRuleDetail left join norule on nrd_nrid=nr_id where nr_custcode='" + cu_code.Text + "' 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,nr_code,nvl(nrd_iscombine,-1)nrd_iscombine from NoRuleDetail left join norule on nrd_nrid=nr_id where nr_custcode is null and nr_isdefault <> 0 order by nrd_detno", "select");
|
|
|
- //用于过滤参数的正则表达式
|
|
|
- if (Nr.Rows.Count > 0)
|
|
|
- {
|
|
|
- NrCode = Nr.Rows[0]["nr_code"].ToString();
|
|
|
- }
|
|
|
- Regex match = new Regex("{\\w+}");
|
|
|
- //用于存放每一项的明细的数据
|
|
|
- string[] NrData = new string[Nr.Rows.Count];
|
|
|
- //流水号的索引
|
|
|
- int SerialNumIndex = 0;
|
|
|
- //流水长度
|
|
|
- int SerialNumLength = 0;
|
|
|
- //存放键值对
|
|
|
- int Radix = 10;
|
|
|
- string PrefixFixed = "";
|
|
|
- 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;
|
|
|
- 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(), "'" + pi_inoutno.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='" + NrCode + "'").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());
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ GetCustRule();
|
|
|
//获取最大的流水号
|
|
|
- string maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + NrCode + "' and rmn_prefix='" + Prefix + "'").ToString();
|
|
|
- if (maxnum == "")
|
|
|
- {
|
|
|
- dh.ExecuteSql("insert into RuleMaxNum(rmn_id,rmn_nrcode,rmn_prefix,rmn_maxnumber) values(RuleMaxNum_seq.nextval,'" + NrCode + "','" + Prefix + "','1')", "insert");
|
|
|
- maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + NrCode + "' and rmn_prefix='" + Prefix + "'").ToString();
|
|
|
- custserialnum = int.Parse(maxnum);
|
|
|
- }//如果流水号不为空则取当前流水
|
|
|
- else
|
|
|
- {
|
|
|
- custserialnum = int.Parse(maxnum);
|
|
|
- }
|
|
|
+
|
|
|
DataTable dt = ExcelHandler.ExcelToDataTable(ImportExcel.FileName, true);
|
|
|
if (dt == null)
|
|
|
{
|