|
|
@@ -26,6 +26,8 @@ namespace UAS_LabelMachine
|
|
|
Dictionary<string, string> NotPass = new Dictionary<string, string>();
|
|
|
//前缀条件
|
|
|
string Prefix = "";
|
|
|
+
|
|
|
+ string Suffix = "";
|
|
|
//生成条码的流水号
|
|
|
int serialnum = 0;
|
|
|
//客户的流水号
|
|
|
@@ -102,7 +104,7 @@ namespace UAS_LabelMachine
|
|
|
int SerialNumLength = 0;
|
|
|
//存放键值对
|
|
|
int Radix = 10;
|
|
|
- Dictionary<int, string> NrDic = new Dictionary<int, string>();
|
|
|
+ string PrefixFixed = "";
|
|
|
for (int m = 0; m < Nr.Rows.Count; m++)
|
|
|
{
|
|
|
switch (Nr.Rows[m]["nrd_type"].ToString())
|
|
|
@@ -110,7 +112,8 @@ namespace UAS_LabelMachine
|
|
|
//常量直接进行拼接
|
|
|
case "常量":
|
|
|
NrData[m] = Nr.Rows[m]["nrd_sql"].ToString();
|
|
|
- NrDic.Add(m, NrData[m]);
|
|
|
+ Prefix += NrData[m];
|
|
|
+ Suffix += NrData[m];
|
|
|
break;
|
|
|
case "SQL":
|
|
|
string SQL = Nr.Rows[m]["nrd_sql"].ToString();
|
|
|
@@ -132,18 +135,21 @@ namespace UAS_LabelMachine
|
|
|
if (Temp.Rows.Count > 0)
|
|
|
{
|
|
|
NrData[m] = Temp.Rows[0][0].ToString();
|
|
|
- NrDic.Add(m, NrData[m]);
|
|
|
+ Prefix += NrData[m];
|
|
|
+ Suffix += NrData[m];
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
NrData[m] = "";
|
|
|
- NrDic.Add(m, NrData[m]);
|
|
|
+ Prefix += NrData[m];
|
|
|
+ Suffix += NrData[m];
|
|
|
}
|
|
|
break;
|
|
|
//流水需要通过MaxNumber去取
|
|
|
case "流水":
|
|
|
NrData[m] = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + CustCode + "'").ToString();
|
|
|
- NrDic.Add(m, NrData[m]);
|
|
|
+ Suffix ="";
|
|
|
+ PrefixFixed = Prefix;
|
|
|
//设置当前流水
|
|
|
custserialnum = int.Parse(NrData[m] == "" ? "0" : NrData[m]);
|
|
|
SerialNumIndex = m;
|
|
|
@@ -154,31 +160,18 @@ namespace UAS_LabelMachine
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- Prefix = "";
|
|
|
- for (int i = 0; i < NrDic.Count; i++)
|
|
|
+ //获取最大的流水号
|
|
|
+ string maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + NrCode + "' and rmn_prefix='" + Prefix + "'").ToString();
|
|
|
+ //如果流水号为空则插入一条新记录,从1开始取
|
|
|
+ if (maxnum == "")
|
|
|
{
|
|
|
- //如果不是流水则正常添加
|
|
|
- if (i != SerialNumIndex)
|
|
|
- {
|
|
|
- Prefix += NrDic[i];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //获取最大的流水号
|
|
|
- string maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + NrCode + "' 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,'" + NrCode + "','" + Prefix + "','1')", "insert");
|
|
|
- custserialnum = 1;
|
|
|
- }
|
|
|
- //如果流水号不为空则取当前流水
|
|
|
- else
|
|
|
- {
|
|
|
- custserialnum = int.Parse(maxnum);
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
+ dh.ExecuteSql("insert into RuleMaxNum(rmn_id,rmn_nrcode,rmn_prefix,rmn_maxnumber) values(RuleMaxNum_seq.nextval,'" + NrCode + "','" + Prefix + "','1')", "insert");
|
|
|
+ custserialnum = 1;
|
|
|
+ }
|
|
|
+ //如果流水号不为空则取当前流水
|
|
|
+ else
|
|
|
+ {
|
|
|
+ custserialnum = int.Parse(maxnum);
|
|
|
}
|
|
|
//有错误需要提醒的内容
|
|
|
int CheckedRowCount = 0;
|
|
|
@@ -244,7 +237,7 @@ namespace UAS_LabelMachine
|
|
|
{
|
|
|
//将箱号添加进List
|
|
|
barcode.Add(BarcodeMethod1(pd_id, pr_id, pib_barcode));
|
|
|
- custbarcode.Add(BarcodeMethod1(NrDic, SerialNumIndex, SerialNumLength, Radix));
|
|
|
+ custbarcode.Add(BarcodeMethod1(PrefixFixed, Suffix, SerialNumIndex, SerialNumLength, Radix));
|
|
|
midcode.Add(mid_code);
|
|
|
if (mid_remain % pr_zxbzs != 0 && k + 1 == count && j + 1 == mid_num)
|
|
|
AddNum = mid_remain % pr_zxbzs;
|
|
|
@@ -322,27 +315,17 @@ namespace UAS_LabelMachine
|
|
|
}
|
|
|
|
|
|
//生成客户条码
|
|
|
- public string BarcodeMethod1(Dictionary<int, string> Dic, int Index, int Length, int radix)
|
|
|
+ public string BarcodeMethod1(string Prefix,string Suffix,int Index, int Length, int radix)
|
|
|
{
|
|
|
- string str = "";
|
|
|
- for (int i = 0; i < Dic.Count; i++)
|
|
|
+ string str = Prefix;
|
|
|
+ //如果是流水则需要在前面加0
|
|
|
+ string serialcode = BaseUtil.DToAny(custserialnum, radix);
|
|
|
+ for (int j = serialcode.ToString().Length; j < Length; j++)
|
|
|
{
|
|
|
- //如果不是流水则正常添加
|
|
|
- if (i != Index)
|
|
|
- {
|
|
|
- str += Dic[i];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //如果是流水则需要在前面加0
|
|
|
- string serialcode = BaseUtil.DToAny(custserialnum, radix);
|
|
|
- for (int j = serialcode.ToString().Length; j < Length; j++)
|
|
|
- {
|
|
|
- serialcode = "0" + serialcode;
|
|
|
- }
|
|
|
- str += serialcode;
|
|
|
- }
|
|
|
+ serialcode = "0" + serialcode;
|
|
|
}
|
|
|
+ str += serialcode;
|
|
|
+ str += Suffix;
|
|
|
custserialnum = custserialnum + 1;
|
|
|
return str;
|
|
|
}
|
|
|
@@ -461,89 +444,6 @@ namespace UAS_LabelMachine
|
|
|
//用于过滤参数的正则表达式
|
|
|
Regex match = new Regex("{\\w+}");
|
|
|
//用于存放每一项的明细的数据
|
|
|
- string[] NrData = new string[Nr.Rows.Count];
|
|
|
- //流水号的索引
|
|
|
- int SerialNumIndex = 0;
|
|
|
- //流水长度
|
|
|
- int SerialNumLength = 0;
|
|
|
- //存放键值对
|
|
|
- Dictionary<int, string> NrDic = new Dictionary<int, string>();
|
|
|
- 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();
|
|
|
- NrDic.Add(m, 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();
|
|
|
- NrDic.Add(m, NrData[m]);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- NrDic.Add(m, "");
|
|
|
- }
|
|
|
- break;
|
|
|
- //流水需要通过MaxNumber去取
|
|
|
- case "流水":
|
|
|
- NrData[m] = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + NrCode + "'").ToString();
|
|
|
- NrDic.Add(m, NrData[m]);
|
|
|
- //设置当前流水
|
|
|
- custserialnum = int.Parse(NrData[m] == "" ? "0" : NrData[m]);
|
|
|
- SerialNumIndex = m;
|
|
|
- SerialNumLength = int.Parse(Nr.Rows[m]["nrd_length"].ToString());
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- //流水前的前缀,查询RuleMaxNum表看是否有对应的MaxNumber记录,如果有则取MaxNumber,没有的话则进行插入
|
|
|
- Prefix = "";
|
|
|
- for (int i = 0; i < NrDic.Count; i++)
|
|
|
- {
|
|
|
- //如果不是流水则正常添加
|
|
|
- if (i != SerialNumIndex)
|
|
|
- {
|
|
|
- Prefix += NrDic[i];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //获取最大的流水号
|
|
|
- string maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + NrCode + "' 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,'" + NrCode + "','" + Prefix + "','1')", "insert");
|
|
|
- custserialnum = 1;
|
|
|
- }
|
|
|
- //如果流水号不为空则取当前流水
|
|
|
- else
|
|
|
- {
|
|
|
- custserialnum = int.Parse(maxnum);
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
dt = (DataTable)dh.ExecuteSql("select pi_class,pi_id from prodinout where pi_inoutno='" + pi_inoutno.Text + "'", "select");
|
|
|
if (dt.Rows.Count > 0)
|
|
|
{
|