浏览代码

并行赋值测试

callm 7 年之前
父节点
当前提交
6492b8626b
共有 1 个文件被更改,包括 167 次插入22 次删除
  1. 167 22
      UAS-出货标签管理/UAS_出货标签管理.cs

+ 167 - 22
UAS-出货标签管理/UAS_出货标签管理.cs

@@ -15,6 +15,7 @@ using UAS_LabelMachine.PublicForm;
 using System.Threading;
 using System.IO;
 using System.Globalization;
+using System.Threading.Tasks;
 
 namespace UAS_LabelMachine
 {
@@ -138,6 +139,12 @@ namespace UAS_LabelMachine
         /// </summary>
         bool ComBoxClickChangeLabelDoc = false;
 
+        List<string> SingleParam = new List<string>();
+
+        List<string> MidParam = new List<string>();
+
+        List<string> OutParam = new List<string>();
+
         public UAS_出货标签打印(string Master)
         {
             InitializeComponent();
@@ -590,9 +597,7 @@ namespace UAS_LabelMachine
                                 string la_id = SingleLabelCombox.SelectedValue.ToString().Split('#')[0];
                                 string cl_labelname = SingleLabelCombox.Text;
                                 string LabelUrl = dh.getFieldDataByCondition("label left join customerlabel on la_code=cl_labelcode", "cl_labelurl", "la_id='" + la_id + "' and cl_labelname='" + cl_labelname + "'").ToString();
-                                Console.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
                                 AutoPrintSingleLabel(la_id, LabelUrl);
-                                Console.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
                             }
                             else
                             {
@@ -665,72 +670,208 @@ namespace UAS_LabelMachine
             }
         }
 
-        private void AutoPrintSingleLabel(string la_id, string LabelUrl)
+        private void Run1()
         {
             string[] arg = SingleBoxArgument.ToArray();
-            //用标签本身的变量作为最外层的循环条件去匹配;
-            for (int j = 0; j < SingleDoc.Variables.FreeVariables.Count; j++)
+            for (int j = 0; j < 3; j++)
+            {
+                //将维护的模板参数和模板本身的参数名称进行比对
+                StringBuilder ParamLog = new StringBuilder();
+                for (int k = 0; k < SingleLabelParam.Rows.Count; k++)
+                {
+                    //名称相等的时候,取SQL进行值的查询
+                    if (SingleParam[j] == SingleLabelParam.Rows[k]["lp_name"].ToString().ToLower())
+                    {
+                        string pib_id = LabelInf.Rows[CurrentRowIndex].Cells["pib_id1"].Value.ToString();
+                        DataRow[] dr = SingleBoxCacheData.Select("pib_id=" + pib_id);
+                        if (arg.Contains(SingleParam[j]))
+                            SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = dr[0][SingleDoc.Variables.FreeVariables.Item(j + 1).Name].ToString();
+                        if (SingleParam[j].Contains("datecode1"))
+                        {
+                            if (LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value != null)
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value.ToString();
+                        }
+                        else if (SingleParam[j].Contains("lotno"))
+                        {
+                            if (LabelInf.Rows[CurrentRowIndex].Cells["pib_lotno"].Value != null)
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_lotno"].Value.ToString();
+                        }
+                        else if (SingleParam[j].Contains("datecode"))
+                        {
+                            if (LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode"].Value != null)
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode"].Value.ToString();
+                        }
+                        else if (SingleParam[j].Contains("产地"))
+                        {
+                            if (LabelInf.Rows[CurrentRowIndex].Cells["pib_madein"].Value != null)
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_madein"].Value.ToString();
+                        }
+                        else if (SingleParam[j].Contains("pib_cusbarcode"))
+                        {
+                            if (LabelInf.Rows[CurrentRowIndex].Cells["pib_cusbarcode"].Value != null)
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_cusbarcode"].Value.ToString();
+                        }
+                        if (SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value == "")
+                        {
+                            try
+                            {
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = SingleLabelParam.Select("lp_name='" + SingleDoc.Variables.FreeVariables.Item(j + 1).Name + "'")[0]["lp_sql"].ToString();
+                            }
+                            catch (Exception)
+                            {
+
+                            }
+                        }
+                        ParamLog.AppendLine("pib_id:" + LabelInf.Rows[CurrentRowIndex].Cells["pib_id1"].Value.ToString() + ",SingleDoc打印参数【" + SingleParam[j] + "】赋值," + "取到值" + SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value);
+                    }
+                    else if (SingleDoc.Variables.FreeVariables.Item(j + 1).Name == "DateCode1")
+                    {
+                        if (LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value != null)
+                            SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value.ToString();
+                    }
+                }
+                LogManager.DoLog(ParamLog.ToString());
+            }
+        }
+
+        private void Run2()
+        {
+            string[] arg = SingleBoxArgument.ToArray();
+            for (int j = 0; j <6; j++)
             {
                 //将维护的模板参数和模板本身的参数名称进行比对
                 StringBuilder ParamLog = new StringBuilder();
                 for (int k = 0; k < SingleLabelParam.Rows.Count; k++)
                 {
                     //名称相等的时候,取SQL进行值的查询
-                    if (SingleDoc.Variables.FreeVariables.Item(j + 1).Name.ToLower() == SingleLabelParam.Rows[k]["lp_name"].ToString().ToLower())
+                    if (SingleParam[j] == SingleLabelParam.Rows[k]["lp_name"].ToString().ToLower())
                     {
                         string pib_id = LabelInf.Rows[CurrentRowIndex].Cells["pib_id1"].Value.ToString();
                         DataRow[] dr = SingleBoxCacheData.Select("pib_id=" + pib_id);
-                        if (arg.Contains(SingleDoc.Variables.FreeVariables.Item(j + 1).Name))
-                            SingleDoc.Variables.FreeVariables.Item(j + 1).Value = dr[0][SingleDoc.Variables.FreeVariables.Item(j + 1).Name].ToString();
-                        if (SingleDoc.Variables.FreeVariables.Item(j + 1).Name.ToLower().Contains("datecode1"))
+                        if (arg.Contains(SingleParam[j]))
+                            SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = dr[0][SingleDoc.Variables.FreeVariables.Item(j + 1).Name].ToString();
+                        if (SingleParam[j].Contains("datecode1"))
                         {
                             if (LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value != null)
-                                SingleDoc.Variables.FreeVariables.Item(j + 1).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value.ToString();
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value.ToString();
                         }
-                        else if (SingleDoc.Variables.FreeVariables.Item(j + 1).Name.ToLower().Contains("lotno"))
+                        else if (SingleParam[j].Contains("lotno"))
                         {
                             if (LabelInf.Rows[CurrentRowIndex].Cells["pib_lotno"].Value != null)
-                                SingleDoc.Variables.FreeVariables.Item(j + 1).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_lotno"].Value.ToString();
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_lotno"].Value.ToString();
                         }
-                        else if (SingleDoc.Variables.FreeVariables.Item(j + 1).Name.ToLower().Contains("datecode"))
+                        else if (SingleParam[j].Contains("datecode"))
                         {
                             if (LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode"].Value != null)
-                                SingleDoc.Variables.FreeVariables.Item(j + 1).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode"].Value.ToString();
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode"].Value.ToString();
                         }
-                        else if (SingleDoc.Variables.FreeVariables.Item(j + 1).Name.ToLower().Contains("产地"))
+                        else if (SingleParam[j].Contains("产地"))
                         {
                             if (LabelInf.Rows[CurrentRowIndex].Cells["pib_madein"].Value != null)
-                                SingleDoc.Variables.FreeVariables.Item(j + 1).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_madein"].Value.ToString();
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_madein"].Value.ToString();
                         }
-                        else if (SingleDoc.Variables.FreeVariables.Item(j + 1).Name.ToLower().Contains("pib_cusbarcode"))
+                        else if (SingleParam[j].Contains("pib_cusbarcode"))
                         {
                             if (LabelInf.Rows[CurrentRowIndex].Cells["pib_cusbarcode"].Value != null)
-                                SingleDoc.Variables.FreeVariables.Item(j + 1).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_cusbarcode"].Value.ToString();
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_cusbarcode"].Value.ToString();
                         }
-                        if (SingleDoc.Variables.FreeVariables.Item(j + 1).Value == "")
+                        if (SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value == "")
                         {
                             try
                             {
-                                SingleDoc.Variables.FreeVariables.Item(j + 1).Value = SingleLabelParam.Select("lp_name='" + SingleDoc.Variables.FreeVariables.Item(j + 1).Name + "'")[0]["lp_sql"].ToString();
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = SingleLabelParam.Select("lp_name='" + SingleDoc.Variables.FreeVariables.Item(j + 1).Name + "'")[0]["lp_sql"].ToString();
                             }
                             catch (Exception)
                             {
 
                             }
                         }
-                        ParamLog.AppendLine("pib_id:" + LabelInf.Rows[CurrentRowIndex].Cells["pib_id1"].Value.ToString() + ",SingleDoc打印参数【" + SingleDoc.Variables.FreeVariables.Item(j + 1).Name + "】赋值," + "取到值" + SingleDoc.Variables.FreeVariables.Item(j + 1).Value);
+                        ParamLog.AppendLine("pib_id:" + LabelInf.Rows[CurrentRowIndex].Cells["pib_id1"].Value.ToString() + ",SingleDoc打印参数【" + SingleParam[j] + "】赋值," + "取到值" + SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value);
                     }
                     else if (SingleDoc.Variables.FreeVariables.Item(j + 1).Name == "DateCode1")
                     {
                         if (LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value != null)
-                            SingleDoc.Variables.FreeVariables.Item(j + 1).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value.ToString();
+                            SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value.ToString();
                     }
                 }
                 LogManager.DoLog(ParamLog.ToString());
             }
+        }
+
+        private void Run3()
+        {
+            string[] arg = SingleBoxArgument.ToArray();
+            for (int j = 0; j < 10; j++)
+            {
+                //将维护的模板参数和模板本身的参数名称进行比对
+                StringBuilder ParamLog = new StringBuilder();
+                for (int k = 0; k < SingleLabelParam.Rows.Count; k++)
+                {
+                    //名称相等的时候,取SQL进行值的查询
+                    if (SingleParam[j] == SingleLabelParam.Rows[k]["lp_name"].ToString().ToLower())
+                    {
+                        string pib_id = LabelInf.Rows[CurrentRowIndex].Cells["pib_id1"].Value.ToString();
+                        DataRow[] dr = SingleBoxCacheData.Select("pib_id=" + pib_id);
+                        if (arg.Contains(SingleParam[j]))
+                            SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = dr[0][SingleDoc.Variables.FreeVariables.Item(j + 1).Name].ToString();
+                        if (SingleParam[j].Contains("datecode1"))
+                        {
+                            if (LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value != null)
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value.ToString();
+                        }
+                        else if (SingleParam[j].Contains("lotno"))
+                        {
+                            if (LabelInf.Rows[CurrentRowIndex].Cells["pib_lotno"].Value != null)
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_lotno"].Value.ToString();
+                        }
+                        else if (SingleParam[j].Contains("datecode"))
+                        {
+                            if (LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode"].Value != null)
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode"].Value.ToString();
+                        }
+                        else if (SingleParam[j].Contains("产地"))
+                        {
+                            if (LabelInf.Rows[CurrentRowIndex].Cells["pib_madein"].Value != null)
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_madein"].Value.ToString();
+                        }
+                        else if (SingleParam[j].Contains("pib_cusbarcode"))
+                        {
+                            if (LabelInf.Rows[CurrentRowIndex].Cells["pib_cusbarcode"].Value != null)
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_cusbarcode"].Value.ToString();
+                        }
+                        if (SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value == "")
+                        {
+                            try
+                            {
+                                SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = SingleLabelParam.Select("lp_name='" + SingleDoc.Variables.FreeVariables.Item(j + 1).Name + "'")[0]["lp_sql"].ToString();
+                            }
+                            catch (Exception)
+                            {
+
+                            }
+                        }
+                        ParamLog.AppendLine("pib_id:" + LabelInf.Rows[CurrentRowIndex].Cells["pib_id1"].Value.ToString() + ",SingleDoc打印参数【" + SingleParam[j] + "】赋值," + "取到值" + SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value);
+                    }
+                    else if (SingleDoc.Variables.FreeVariables.Item(j + 1).Name == "DateCode1")
+                    {
+                        if (LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value != null)
+                            SingleDoc.Variables.FreeVariables.Item(SingleParam[j]).Value = LabelInf.Rows[CurrentRowIndex].Cells["pib_datecode1"].Value.ToString();
+                    }
+                }
+                LogManager.DoLog(ParamLog.ToString());
+            }
+        }
+
+        private void AutoPrintSingleLabel(string la_id, string LabelUrl)
+        {
+            //用标签本身的变量作为最外层的循环条件去匹配;
+            Console.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
+            Parallel.Invoke(Run1, Run2);
+            Console.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
             //保存参数打印
             SingleDoc.Printer.SwitchTo(SingleLabelPrinter.Text);
             SingleDoc.PrintDocument();
+            Console.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
             LogManager.DoLog("执行打印单盘,pib_id:" + LabelInf.Rows[CurrentRowIndex].Cells["pib_id1"].Value.ToString() + ",标签地址" + LabelUrl);
             LabelInf.Rows[CurrentRowIndex].Cells["pib_ifprint"].Value = true;
         }
@@ -1090,6 +1231,10 @@ namespace UAS_LabelMachine
                 SingleDoc = lbl.Documents.Open(ftpOperater.DownLoadTo + SingleLabelCombox.Text);
                 SingleLabelParam = (DataTable)dh.ExecuteSql("select lp_name,lp_sql from label left join LABELPARAMETER on la_id= lp_laid where la_id=" + SingleLabelCombox.SelectedValue.ToString().Split('#')[0], "select");
                 SingleLabelParam.Merge(Attach);
+                for (int i = 0; i < SingleDoc.Variables.FreeVariables.Count; i++)
+                {
+                    SingleParam.Add(SingleDoc.Variables.FreeVariables.Item(i + 1).Name);
+                }
             }
             sql.Clear();
             sql.Append("select to_char(nvl(cl_date,sysdate),'YYYY-MM-DD HH24:Mi:SS') cl_date,cl_labelname,cl_isdefault,la_id||'#'||cl_labelurl||'#'||to_char(cl_date,'YYYY-MM-DD HH24:Mi:SS')  la_id,cl_custcode from customerlabel left join prodinout on pi_cardcode=cl_custcode ");