Explorar el Código

打印内容重新修改从Label获取

章政 hace 8 años
padre
commit
8507d15d31

+ 16 - 17
UAS-MES/FunctionCode/Make/Make_BigBoxCollection.cs

@@ -205,16 +205,15 @@ namespace UAS_MES.Make
 
         private void FillPrintLabel()
         {
-            DataTable _dt = (DataTable)dh.ExecuteSql("select pl_labelcode ||':'||pl_labelname pl_name,pl_labelname,pl_labelcode,pl_labelurl,pl_indate from productlabel where pl_prodcode='" + pa_prodcode.Text + "' and PL_LABELTYPE='大箱标' order by PL_ISDEFAULT DESC", "select");
+            DataTable _dt = (DataTable)dh.ExecuteSql("select la_id,substr(la_url,instr(la_url,'\\',-1)+1)la_name,la_url,la_isdefault from label where la_prodcode='" + pa_prodcode.Text + "' and la_templatetype='大箱标' and la_status='AUDITED' order by la_isdefault", "select");
             PrintLabel.DataSource = _dt;
-            PrintLabel.DisplayMember = "pl_name";
-            PrintLabel.ValueMember = "pl_labelcode";
+            PrintLabel.DisplayMember = "la_name";
+            PrintLabel.ValueMember = "la_id";
             ftpOperater ftp = new ftpOperater();
             indate = new System.DateTime[_dt.Rows.Count];
             for (int i = 0; i < _dt.Rows.Count; i++)
             {
-                BaseUtil.GetPrintLabel(_dt.Rows[i]["pl_labelname"].ToString(), _dt.Rows[i]["pl_labelurl"].ToString(), _dt.Rows[i]["pl_indate"].ToString());
-                indate[i] = Convert.ToDateTime(_dt.Rows[i]["pl_indate"].ToString());
+                BaseUtil.GetPrintLabel(_dt.Rows[i]["la_name"].ToString(), _dt.Rows[i]["la_url"].ToString());
             }
         }
 
@@ -247,24 +246,24 @@ namespace UAS_MES.Make
             if (PrintLabel.Items.Count != 0)
             {
                 OperateResult.AppendText(">>打印箱号" + bigoutboxcode.Text + "\n", Color.Black);
-                doc = lbl.Documents.Open(ftpOperater.DownLoadTo + PrintLabel.Text.Split(':')[1]);
-                Print.CodeSoft(Tag.ToString(), doc, PrintLabel.Text.Split(':')[1], PrintLabel.SelectedValue.ToString(), PrinterList.Text, pa_outboxcode.Text, int.Parse(PrintNum.Text), indate[PrintLabel.SelectedIndex]);
+                doc = lbl.Documents.Open(ftpOperater.DownLoadTo + PrintLabel.Text);
+                Print.CodeSoft(Tag.ToString(), doc, PrintLabel.Text, PrintLabel.SelectedValue.ToString(), PrinterList.Text, pa_outboxcode.Text, int.Parse(PrintNum.Text));
             }
             else
-                OperateResult.AppendText(">>产品" + pa_prodcode.Text + "未维护打印标签\n", Color.Red);
+                OperateResult.AppendText(">>产品" + pa_prodcode.Text + "未维护打印标签或者标签未审核\n", Color.Red);
         }
 
         private void ReleasePallet_Click(object sender, EventArgs e)
         {
-            //将子箱的母箱编号置成空
-            dh.ExecuteSql("update package set pa_mothercode='' where pa_outboxcode in(select PD_INNERBOXCODE from package left join packagedetail on pa_id=pd_paid where pa_outboxcode='" + bigoutboxcode.Text + "')", "update");
-            //删除采集的明细
-            dh.ExecuteSql("delete from packagedetail where pd_paid=(select pa_id from package where pa_outboxcode='" + bigoutboxcode.Text + "' and pa_type=2)", "delete");
-            //更新大箱数量为空
-            dh.ExecuteSql("update package set pa_totalqty=0,pa_currentqty=0,pa_packageqty=0 where pa_outboxcode='" + bigoutboxcode.Text + "' and pa_type=2", "update");
-            OperateResult.AppendText(">>箱号" + outboxcode.Text + "解除成功\n", Color.Green);
-            LogicHandler.DoCommandLog(Tag.ToString(), User.UserSourceCode, pa_makecode.Text, User.UserLineCode, User.UserSourceCode, "大箱采集", "解除大箱" + outboxcode.Text + "成功", bigoutboxcode.Text, "");
-            palletcode_KeyDown(new object(), new KeyEventArgs(Keys.Enter));
+            if (dh.getFieldDataByCondition("package", "pa_mothercode", "pa_outboxcode='" + bigoutboxcode.Text + "'").ToString() == "")
+            {
+                LogicHandler.OutBoxDrawStepPass(bigoutboxcode.Text, pa_makecode.Text, User.UserSourceCode);
+                //将子箱的母箱编号置成空
+                OperateResult.AppendText(">>箱号" + bigoutboxcode.Text + "解除成功\n", Color.Green);
+                LogicHandler.DoCommandLog(Tag.ToString(), User.UserSourceCode, pa_makecode.Text, User.UserLineCode, User.UserSourceCode, "大箱采集", "解除大箱" + bigoutboxcode.Text + "成功", bigoutboxcode.Text, "");
+                palletcode_KeyDown(new object(), new KeyEventArgs(Keys.Enter));
+            }
+            else OperateResult.AppendText(">>箱号" + bigoutboxcode.Text + "已装箱,不能取消解除装箱\n", Color.Green);
         }
 
         private void Make_BigBoxCollection_FormClosed(object sender, FormClosedEventArgs e)

+ 8 - 13
UAS-MES/FunctionCode/Make/Make_PalletCollection.cs

@@ -42,8 +42,6 @@ namespace UAS_MES.Make
 
         Thread thread;
 
-        private System.DateTime[] indate;
-
         string ErrorMessage = "";
 
         public Make_PalletCollection()
@@ -175,16 +173,14 @@ namespace UAS_MES.Make
 
         private void FillPrintLabel()
         {
-            DataTable _dt = (DataTable)dh.ExecuteSql("select pl_labelcode ||':'||pl_labelname pl_name,pl_labelname,pl_labelcode,pl_labelurl,pl_indate from productlabel where pl_prodcode='" + pa_prodcode.Text + "' and PL_LABELTYPE='栈板标' order by PL_ISDEFAULT DESC", "select");
+            DataTable _dt = (DataTable)dh.ExecuteSql("select la_id,substr(la_url,instr(la_url,'\\',-1)+1)la_name,la_url,la_isdefault from label where la_prodcode='" + pa_prodcode.Text + "' and la_templatetype='栈板标' order by la_isdefault", "select");
             PrintLabel.DataSource = _dt;
-            PrintLabel.DisplayMember = "pl_name";
-            PrintLabel.ValueMember = "pl_labelcode";
+            PrintLabel.DisplayMember = "la_name";
+            PrintLabel.ValueMember = "la_id";
             ftpOperater ftp = new ftpOperater();
-            indate = new System.DateTime[_dt.Rows.Count];
             for (int i = 0; i < _dt.Rows.Count; i++)
             {
-                BaseUtil.GetPrintLabel(_dt.Rows[i]["pl_labelname"].ToString(), _dt.Rows[i]["pl_labelurl"].ToString(), _dt.Rows[i]["pl_indate"].ToString());
-                indate[i] = Convert.ToDateTime(_dt.Rows[i]["pl_indate"].ToString());
+                BaseUtil.GetPrintLabel(_dt.Rows[i]["la_name"].ToString(), _dt.Rows[i]["la_url"].ToString());
             }
         }
 
@@ -218,8 +214,8 @@ namespace UAS_MES.Make
             if (PrintLabel.Items.Count != 0)
             {
                 OperateResult.AppendText(">>打印箱号" + palletcode.Text + "\n", Color.Black);
-                doc = lbl.Documents.Open(ftpOperater.DownLoadTo + PrintLabel.Text.Split(':')[1]);
-                Print.CodeSoft(Tag.ToString(), doc, PrintLabel.Text.Split(':')[1], PrintLabel.SelectedValue.ToString(), PrinterList.Text, pa_outboxcode.Text, int.Parse(PrintNum.Text), indate[PrintLabel.SelectedIndex]);
+                doc = lbl.Documents.Open(ftpOperater.DownLoadTo + PrintLabel.Text);
+                Print.CodeSoft(Tag.ToString(), doc, PrintLabel.Text, PrintLabel.SelectedValue.ToString(), PrinterList.Text, pa_outboxcode.Text, int.Parse(PrintNum.Text));
             }
             else
                 OperateResult.AppendText(">>产品" + pa_prodcode.Text + "未维护打印标签\n", Color.Red);
@@ -228,9 +224,8 @@ namespace UAS_MES.Make
         private void ReleasePallet_Click(object sender, EventArgs e)
         {
             //将子箱的母箱编号置成空
-            dh.ExecuteSql("update package set pa_mothercode='' where pa_outboxcode in(select PD_INNERBOXCODE from package left join packagedetail on pa_id=pd_paid where pa_outboxcode='" + palletcode.Text + "')", "update");
-            dh.ExecuteSql("delete from packagedetail where pd_paid=(select pa_id from package where pa_outboxcode='" + palletcode.Text + "' and pa_type=3)", "delete");
-            dh.ExecuteSql("update package set pa_totalqty=0,pa_currentqty=0,pa_packageqty=0 where pa_outboxcode='" + palletcode.Text + "' and pa_type=3", "update");
+            LogicHandler.OutBoxDrawStepPass(palletcode.Text, pa_makecode.Text, User.UserSourceCode);
+            LogicHandler.DoCommandLog(Tag.ToString(), User.UserSourceCode, pa_makecode.Text, User.UserLineCode, User.UserSourceCode, "栈板采集", "解除栈板" + palletcode.Text + "成功", palletcode.Text, "");
             OperateResult.AppendText(">>栈板号" + outboxcode.Text + "解除成功\n", Color.Green);
             palletcode_KeyDown(new object(), new KeyEventArgs(Keys.Enter));
         }

+ 12 - 0
UAS-MES/PublicMethod/BaseUtil.cs

@@ -213,6 +213,17 @@ namespace UAS_MES.PublicMethod
             }
         }
 
+        /// <summary>
+        /// 获取打印标签
+        /// </summary>
+        /// <param name="labelName"></param>
+        /// <param name="labelUrl"></param>
+        /// <param name="indate"></param>
+        public static void GetPrintLabel(string labelName, string labelUrl)
+        {
+            BaseUtil.GetLabelUrl(labelUrl, labelName);
+        }
+
         /// <summary>
         /// 获取打印标签
         /// </summary>
@@ -229,6 +240,7 @@ namespace UAS_MES.PublicMethod
                 BaseUtil.GetLabelUrl(LabelUrl, LabelName, time);
         }
 
+
         /// <summary>
         /// 获取标签的路径
         /// </summary>

+ 42 - 11
UAS-MES/PublicMethod/LogicHandler.cs

@@ -520,7 +520,7 @@ namespace UAS_MES.PublicMethod
             string totalcount = dh.getFieldDataByCondition("package", "nvl(pa_totalqty,0) pa_totalqty", "pa_outboxcode='" + iOutBoxCode + "'").ToString();
             //更新过站数量
             sql.Clear();
-            sql.Append("update makecraftdetail set mcd_inqty=mcd_inqty+"+ totalcount + ",mcd_outqty = mcd_outqty + "+ totalcount + ", ");
+            sql.Append("update makecraftdetail set mcd_inqty=mcd_inqty+" + totalcount + ",mcd_outqty = mcd_outqty + " + totalcount + ", ");
             sql.Append("mcd_okqty = mcd_okqty + " + totalcount + " where mcd_macode='" + iMakeCode + "' and mcd_stepcode='" + CurrentStep + "'");
             ExeSQL.Add(sql.ToString());
             dh.ExecuteSQLTran(ExeSQL.ToArray());
@@ -554,18 +554,18 @@ namespace UAS_MES.PublicMethod
                 {
                     sql.Clear();
                     sql.Append("update makeserial set ms_stepcode='" + CurrentStep + "',ms_stepname='" + CurrentStepName + "',ms_nextstepcode=");
-                    sql.Append("'" + nextstepcode + "',ms_sccode='"+iSourceCode+"',ms_paststep=ms_paststep|| case when "+ifpast+">0 then ','||'"+CurrentStep+"' end ");
+                    sql.Append("'" + nextstepcode + "',ms_sccode='" + iSourceCode + "',ms_paststep=ms_paststep|| case when " + ifpast + ">0 then ','||'" + CurrentStep + "' end ");
                     sql.Append("where exists (select 1 from mes_package_view where ms_sncode=v_barcode and ");
                     sql.Append("ms_makecode=v_makecode and v_outboxcode='" + iOutBoxCode + "')");
-                    ExeSQL.Add(sql.ToString()); 
+                    ExeSQL.Add(sql.ToString());
                 }
                 else
                 {
                     //更新下一执行步骤
                     sql.Clear();
-                    sql.Append("update makeserial set ms_stepcode='"+CurrentStep+"',ms_stepname='"+ CurrentStepName + "',ms_nextstepcode='',MS_STATUS=2,");
-                    sql.Append("ms_sccode='"+iSourceCode+"',ms_paststep=ms_paststep|| case when "+ifpast+">0 then ','||'"+CurrentStep+"' end ");
-                    sql.Append("where exists (select 1 from mes_package_view where ms_sncode=v_barcode and ms_makecode=v_makecode and v_outboxcode='"+iOutBoxCode+"')");
+                    sql.Append("update makeserial set ms_stepcode='" + CurrentStep + "',ms_stepname='" + CurrentStepName + "',ms_nextstepcode='',MS_STATUS=2,");
+                    sql.Append("ms_sccode='" + iSourceCode + "',ms_paststep=ms_paststep|| case when " + ifpast + ">0 then ','||'" + CurrentStep + "' end ");
+                    sql.Append("where exists (select 1 from mes_package_view where ms_sncode=v_barcode and ms_makecode=v_makecode and v_outboxcode='" + iOutBoxCode + "')");
                     ExeSQL.Add(sql.ToString());
                     //更新完工数量
                     ExeSQL.Add("update make set ma_madeqty=nvl(ma_madeqty,0)+" + totalcount + " where ma_code='" + iMakeCode + "'");
@@ -574,16 +574,47 @@ namespace UAS_MES.PublicMethod
                 sql.Clear();
                 sql.Append("insert into STEPPASSED(SP_ID,SP_IFTURNIN,SP_IFTURNOUT,SP_IFREWORK,SP_IFBACKFLOW,SP_CHECKNO,SP_RESULT");
                 sql.Append(",SP_SCCODE,SP_STEPCODE,SP_LINECODE,SP_WCCODE,SP_MAKECODE,SP_SNCODE,SP_YMD,SP_HM,SP_IFNG,SP_PRODCODE");
-                sql.Append(",SP_DATE,SP_CRAFTCODE,sp_inman)  select STEPPASSED_SEq.NEXTVAL,'"+ cd_ifmidinput + "','"+cd_ifmidfinish+"',");
-                sql.Append("ms_ifrework,case when ms_ifrework=-1 then 0 when ms_stepcode='"+CurrentStep+ "' then 0 when "+ ifpast + ">0 ");
-                sql.Append("then -1 else 0 end,0,ms_checkno,'良品','"+iSourceCode+"','"+CurrentStep+"','"+ LineCode + "',ms_makecode,ms_sncode,");
-                sql.Append("to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24miss'),0,ms_prodcode,SYSDATE,ms_craftcode,'"+iUserCode+"' ");
-                sql.Append("from mes_package_view left join makeserial on ms_sncode=v_barcode and ms_makecode=v_makecode where v_outboxcode='"+iOutBoxCode+"'");
+                sql.Append(",SP_DATE,SP_CRAFTCODE,sp_inman)  select STEPPASSED_SEq.NEXTVAL,'" + cd_ifmidinput + "','" + cd_ifmidfinish + "',");
+                sql.Append("ms_ifrework,case when ms_ifrework=-1 then 0 when ms_stepcode='" + CurrentStep + "' then 0 when " + ifpast + ">0 ");
+                sql.Append("then -1 else 0 end,0,ms_checkno,'良品','" + iSourceCode + "','" + CurrentStep + "','" + LineCode + "',ms_makecode,ms_sncode,");
+                sql.Append("to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24miss'),0,ms_prodcode,SYSDATE,ms_craftcode,'" + iUserCode + "' ");
+                sql.Append("from mes_package_view left join makeserial on ms_sncode=v_barcode and ms_makecode=v_makecode where v_outboxcode='" + iOutBoxCode + "'");
                 ExeSQL.Add(sql.ToString());
                 dh.ExecuteSQLTran(ExeSQL.ToArray());
             }
         }
 
+        /// <summary>
+        /// 大箱栈板解除装箱
+        /// </summary>
+        public static void OutBoxDrawStepPass(string iOutBoxCode, string iMakeCode, string iSourceCode)
+        {
+            string CurrentStep = "";
+            string LineCode = "";
+            string CurrentStepName = "";
+            List<string> ExeSQL = new List<string>();
+            GetStepCodeAndNameAndLineBySource(iSourceCode, ref CurrentStep, ref CurrentStepName, ref LineCode);
+            //更新工序会上一执行步骤
+            sql.Clear(); 
+            sql.Append("update makeserial set ms_nextstepcode=ms_stepcode,MS_STATUS=1,ms_sccode='" + iSourceCode + "' ");
+            sql.Append("where ms_sncode in (select v_barcode from  mes_package_view where v_outboxcode='" + iOutBoxCode + "')");
+            ExeSQL.Add(sql.ToString());
+            //更新完工数量
+            ExeSQL.Add("update make set ma_madeqty=(select count(1) from makeserial where ms_makecode='" + iMakeCode + "' and ms_status=2) where ma_code='" + iMakeCode + "'");
+            //删除StepPassed数据
+            sql.Clear();
+            sql.Append("delete from steppassed where sp_sncode in (select v_barcode from mes_package_view where v_outboxcode='" + iOutBoxCode + "') ");
+            sql.Append("and sp_makecode='" + iMakeCode + "' and sp_stepcode='" + CurrentStep + "'");
+            ExeSQL.Add(sql.ToString());
+            //更新大箱或栈板的母箱编号为空
+            ExeSQL.Add("update package set pa_mothercode='' where pa_outboxcode in(select PD_INNERBOXCODE from package left join packagedetail on pa_id=pd_paid where pa_outboxcode='" + iOutBoxCode + "')");
+            //删除从表明细
+            ExeSQL.Add("delete from packagedetail where pd_paid=(select pa_id from package where pa_outboxcode='" + iOutBoxCode + "')");
+            //设置大箱或栈板的已装数量为0
+            ExeSQL.Add("update package set pa_totalqty=0,pa_currentqty=0,pa_packageqty=0 where pa_outboxcode='" + iOutBoxCode + "'");
+            dh.ExecuteSQLTran(ExeSQL.ToArray());
+        }
+
         /// <summary>
         /// 记录操作日志
         /// </summary>

+ 40 - 0
UAS-MES/PublicMethod/Print.cs

@@ -70,6 +70,46 @@ namespace UAS_MES.PublicMethod
             info.LastWriteTime = intime;
         }
 
+        public static void CodeSoft(string iCaller, Document doc, string LabelName, string LaID, string PrinterName, string SnCode, int PrintNum)
+        {
+            //打开模板路径
+            //查询模板对应的取值SQL和参数名称
+            DataTable dt = (DataTable)dh.ExecuteSql("select lp_name,lp_sql from label left join LABELPARAMETER on la_id=lp_laid where la_id='" + LaID + "'", "select");
+            //比对模板维护的参数和在系统中维护的参数,名称对应进行SQL取值赋给变量
+            StringBuilder sb = new StringBuilder();
+            for (int i = 0; i < doc.Variables.FormVariables.Count; i++)
+            {
+                for (int j = 0; j < dt.Rows.Count; j++)
+                {
+                    if (doc.Variables.FormVariables.Item(i + 1).Name == dt.Rows[j]["lp_name"].ToString())
+                    {
+                        string sql = dt.Rows[j]["lp_sql"].ToString();
+                        try
+                        {
+                            Regex ConnoteA = new Regex("{\\w+}");
+                            foreach (Match mch in ConnoteA.Matches(sql))
+                            {
+                                string x = mch.Value.Trim();
+                                sql = sql.Replace(x, "'" + SnCode + "'");
+                            }
+                            doc.Variables.FormVariables.Item(i + 1).Value = dh.GetLabelParam(sql).ToString();
+                            sb.AppendLine("打印参数【" + doc.Variables.FormVariables.Item(i + 1).Name + "】赋值," + "取值SQL:" + sql + ",取到值" + doc.Variables.FormVariables.Item(i + 1).Value);
+                        }
+                        catch (System.Exception)
+                        {
+                            BaseUtil.ShowError("SQL" + sql + "维护不正确");
+                        }
+                    }
+                }
+            }
+            LogManager.DoLog(sb.ToString());
+            //保存本次赋值进行打印
+            doc.Save();
+            doc.Printer.SwitchTo(PrinterName);
+            doc.PrintDocument(PrintNum);
+            LogicHandler.DoCommandLog(iCaller, User.UserCode, "", User.UserLineCode, User.UserSourceCode, "打印", "成功打印", SnCode, "");
+        }
+
         public static void CodeSoft(string iCaller, Document doc, string LabelName, string LabelCode, string PrinterName, string SnCode, int PrintNum, System.DateTime intime)
         {
             //打开模板路径