Browse Source

添加栈板大箱过站方法

章政 8 years ago
parent
commit
a881fa8709
1 changed files with 91 additions and 0 deletions
  1. 91 0
      UAS-MES/PublicMethod/LogicHandler.cs

+ 91 - 0
UAS-MES/PublicMethod/LogicHandler.cs

@@ -493,6 +493,97 @@ namespace UAS_MES.PublicMethod
             return new DataTable[] { Form, Grid };
         }
 
+        /// <summary>
+        /// 箱号过站的公用方法
+        /// </summary>
+        /// <param name="iOutBoxCode"></param>
+        /// <param name="iSourceCode"></param>
+        /// <param name="iUserCode"></param>
+        /// <param name="iResult"></param>
+        /// <param name="iBoxType"></param>
+        public static void OutBoxStepPass(string iOutBoxCode, string iMakeCode, string iSourceCode, string iUserCode, string iResult, string iBoxType)
+        {
+            string CurrentStep = "";
+            string LineCode = "";
+            string CurrentStepName = "";
+            List<string> ExeSQL = new List<string>();
+            GetStepCodeAndNameAndLineBySource(iSourceCode, ref CurrentStep, ref CurrentStepName, ref LineCode);
+            sql.Clear();
+            sql.Append("insert into MakeProcess(mp_id,mp_makecode,mp_maid, mp_mscode,mp_sncode,mp_stepcode,mp_stepname,mp_craftcode");
+            sql.Append(",mp_craftname,mp_kind,mp_result,mp_indate,mp_inman,mp_wccode,mp_linecode,mp_sourcecode,mp_snstatus,mp_sncheckno");
+            sql.Append(",mp_snoutboxcode) select MakeProcess_seq.nextval, ma_code,ma_id,ms_code,ms_sncode,'" + CurrentStep + "','" + CurrentStepName + "',");
+            sql.Append("ms_craftcode,ms_craftname,'" + iBoxType + "','" + iResult + "',sysdate,'" + iUserCode + "',ma_wccode,'" + LineCode + "','" + iSourceCode + "',");
+            sql.Append("ms_status,ms_checkno,ms_outboxcode from makeserial left join mes_package_view on ms_makecode=v_makecode ");
+            sql.Append("and ms_sncode=v_barcode left join make on ma_code=ms_makecode where v_outboxcode='" + iOutBoxCode + "'");
+            ExeSQL.Add(sql.ToString());
+            //获取子箱的总数
+            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("mcd_okqty = mcd_okqty + " + totalcount + " where mcd_macode='" + iMakeCode + "' and mcd_stepcode='" + CurrentStep + "'");
+            ExeSQL.Add(sql.ToString());
+            dh.ExecuteSQLTran(ExeSQL.ToArray());
+            ExeSQL.Clear();
+            //获取途程和产品信息
+            sql.Clear();
+            sql.Append("select ms_craftcode,ms_prodcode,ms_makecode,ms_stepcode,ms_stepname,ms_paststep  from mes_package_view left join makeserial ");
+            sql.Append("on ms_sncode=v_barcode and ms_makecode=v_makecode where v_outboxcode='" + iOutBoxCode + "' and rownum=1");
+            DataTable dt = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
+            string prodcode = "";
+            string craftcode = "";
+            string paststep = "";
+            if (dt.Rows.Count > 0)
+            {
+                prodcode = dt.Rows[0]["ms_prodcode"].ToString();
+                craftcode = dt.Rows[0]["ms_craftcode"].ToString();
+                paststep = dt.Rows[0]["ms_paststep"].ToString();
+            }
+            sql.Clear();
+            sql.Append("select cd_nextstepcode,nvl(cd_ifmidinput,0)cd_ifmidinput,nvl(cd_ifmidfinish,0)cd_ifmidfinish from craft left join craftdetail ");
+            sql.Append("on cr_id=cd_crid where cr_code='" + craftcode + "' and cr_prodcode='" + prodcode + "' and cd_stepcode='" + CurrentStep + "'");
+            dt = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
+            if (dt.Rows.Count > 0)
+            {
+                string nextstepcode = dt.Rows[0]["cd_nextstepcode"].ToString();
+                string cd_ifmidinput = dt.Rows[0]["cd_ifmidinput"].ToString();
+                string cd_ifmidfinish = dt.Rows[0]["cd_ifmidfinish"].ToString();
+                string ifpast = paststep.Contains(CurrentStep) ? "0" : "1";
+                //下一工序不为空的时候更新序列号的下一工序
+                if (nextstepcode != "")
+                {
+                    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("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()); 
+                }
+                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+"')");
+                    ExeSQL.Add(sql.ToString());
+                    //更新完工数量
+                    ExeSQL.Add("update make set ma_madeqty=nvl(ma_madeqty,0)+" + totalcount + " where ma_code='" + iMakeCode + "'");
+                }
+                //插入StepPass
+                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+"'");
+                ExeSQL.Add(sql.ToString());
+                dh.ExecuteSQLTran(ExeSQL.ToArray());
+            }
+        }
+
         /// <summary>
         /// 记录操作日志
         /// </summary>