private bool FunCreateNewCmdSno(string sCmdSno, string sLoc, string sLocID) { #region 預約儲位 string sMsg = ""; //預約儲位為入庫預約 if (clsASRS.FunSetLocIsPreStkIn(sLoc, "", ref sMsg) == false) { return(false); } #endregion #region 產生命令主檔 cls_CmdMst aCmdMst = new cls_CmdMst(); aCmdMst.FunCmdMstClear(); //Clear() aCmdMst.CMDSNO = sCmdSno; aCmdMst.SNO1 = "1"; aCmdMst.LOC1 = sLoc; aCmdMst.LOCID1 = sLocID; aCmdMst.SCAN1 = "Y"; //己確認 aCmdMst.SNO2 = ""; aCmdMst.LOC2 = ""; aCmdMst.LOCID2 = ""; aCmdMst.SCAN2 = "N"; aCmdMst.CMDMODE = "1"; //入庫 aCmdMst.CMDSTS = "0"; aCmdMst.PRT = "5"; aCmdMst.STNNO = "D04"; aCmdMst.IOTYP = clsASRS.gsIOTYPE_EmptyIn; aCmdMst.AVAIL = "0"; // 彰化廠 aCmdMst.MIXQTY = "0"; // 彰化廠 aCmdMst.NEWLOC = ""; aCmdMst.PROGID = clsASRS.gsIOTYPE_EmptyIn_PID; aCmdMst.USERID = txtIQC_ID.Text; aCmdMst.TRACE = "0"; aCmdMst.STORAGETYP = ""; if (aCmdMst.FunInsCmdMst() == false) { return(false); } #endregion return(true); }
private void btnExecute_Click(object sender, EventArgs e) { int iFosb = 0; //0:None, 1:Left, 2:Right, 3:ALL string sLocID1 = ""; string sLocID2 = ""; string sGetLoc1 = ""; string sGetLoc2 = ""; string sGetLocID1 = ""; string sGetLocID2 = ""; int iCrn = 0; int iBayDesc = 1; #region 防呆 if (clsASRS.FunChkStnNo(cboStnNo.Text.Trim()) == false) { return; } if (cboStnNo.Text == "D04") { iBayDesc = 2; //由後面找起 } else { iBayDesc = 1; } txtLocID1.Text = txtLocID1.Text.Trim().ToUpper(); txtLocID2.Text = txtLocID2.Text.Trim().ToUpper(); sLocID1 = txtLocID1.Text; sLocID2 = txtLocID2.Text; if (sLocID1 != "") { if (sLocID2 == "") { iFosb = 1; } else { iFosb = 3; //判斷左右的條碼要相同的第一碼 string sLocID_H1 = ""; string sLocID_H2 = ""; if (txtLocID1.Text.Length > 0) { sLocID_H1 = txtLocID1.Text.Substring(0, 1); } if (txtLocID2.Text.Length > 0) { sLocID_H2 = txtLocID2.Text.Substring(0, 1); } if (sLocID_H1 != sLocID_H2) { clsMSG.ShowWarningMsg("左右兩側的料盒條碼,第一碼要相同的編號"); return; } } } else if (sLocID2 != "") { iFosb = 2; clsMSG.ShowWarningMsg("不允許由右側,進行空料盒入庫作業"); return; } else { iFosb = 0; clsMSG.ShowWarningMsg("請輸入空料盒條碼"); return; } #endregion if (clsDB.FunOpenDB() == false) { clsMSG.ShowErrMsg(clsMSG.MSG.OPEN_DB_NG); return; } #region 判斷是否有儲位重整中 string sMsg = ""; if (clsASRS.FunChkCycleStsIsRunning(ref sMsg) == false) { clsMSG.ShowInformationMsg(sMsg); clsDB.FunClsDB(); return; } #endregion #region 判斷料盤ID是否有建檔 if (txtLocID1.Text != "") { if (clsASRS.FunGetWMSLocByLocID(txtLocID1.Text) == "") { clsDB.FunClsDB(); clsMSG.ShowWarningMsg("料盤編號 (" + txtLocID1.Text + ") 不正確!!, 請確認系統是否有建立料盤編號."); return; } } if (txtLocID2.Text != "") { if (clsASRS.FunGetWMSLocByLocID(txtLocID2.Text) == "") { clsDB.FunClsDB(); clsMSG.ShowWarningMsg("料盤編號 (" + txtLocID2.Text + ") 不正確!!, 請確認系統是否有建立料盤編號."); return; } } #endregion #region 判別料盤ID是否己存在儲位中或命令中 string sTmpMsg = ""; if (sLocID1 != "") { if (clsASRS.FunChkLocIdIsExist(sLocID1, ref sTmpMsg) == false) { clsMSG.ShowWarningMsg(sTmpMsg); clsDB.FunClsDB(); return; } } if (sLocID2 != "") { if (clsASRS.FunChkLocIdIsExist(sLocID2, ref sMsg) == false) { clsMSG.ShowWarningMsg(sMsg); clsDB.FunClsDB(); return; } } #endregion #region 系統指派空儲位 iCrn = clsASRS.FunGetCraneNoByLocID(sLocID1); //由料盒ID取得是那一座Crane if (iFosb == 3) //ALL { if (clsASRS.FunGetLocForDoubleListByLocSts(iCrn, "N", ref sGetLoc1, ref sGetLocID1, ref sGetLoc2, ref sGetLocID2) == false) { clsMSG.ShowWarningMsg("無空儲位!!"); clsDB.FunClsDB(); return; } } else if (iFosb == 1) { if (clsASRS.FunGetLocN_ByE(iCrn, ref sGetLoc1, ref sGetLocID1, iBayDesc) == false) { clsMSG.ShowWarningMsg("無合適之空儲位!!"); clsDB.FunClsDB(); return; } ////只有入一個 ////(1)先找內側儲位為N,外側儲位為E //if (clsASRS.FunGetLocForSingleListByInOutLoc(iCrn, "N", "E", 1, ref sGetLoc1, ref sGetLocID1) == false) //{ // //(2)找內側儲位為N,外側儲位為E. (TEMP 儲位) // if (clsASRS.FunGetLocForSingleListByInOutLoc_StorageTyp_Temp(iCrn, "N", "E", 1, ref sGetLoc1, ref sGetLocID1, iBayDesc) == false) // { // //(3)找外側儲位為N,內側儲位為N. (TEMP 儲位) // if (clsASRS.FunGetLocForSingleListByInOutLoc_StorageTyp_Temp(iCrn, "N", "N", 2, ref sGetLoc1, ref sGetLocID1, iBayDesc) == false) // { // //(4)找外側儲位為N,內側儲位為N, // if (clsASRS.FunGetLocForSingleListByInOutLoc(iCrn, "N", "N", 2, ref sGetLoc1, ref sGetLocID1) == false) // { // clsMSG.ShowWarningMsg("無合適之空儲位!!"); clsDB.FunClsDB(); return; // } // } // } //} } #endregion #region 取得命令序號 string sCmdSno = clsASRS.FunGetCmdSno(); if (sCmdSno == "") { clsMSG.ShowErrMsg("系統錯誤,無命令序號可使用!!"); clsDB.FunClsDB(); return; } #endregion clsDB.FunCommitCtrl("BEGIN"); //預約儲位 sMsg = ""; if (clsASRS.FunSetLocIsPreStkIn(sGetLoc1, sGetLoc2, ref sMsg) == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowWarningMsg(sMsg); clsDB.FunClsDB(); return; } //產生入庫命令 cls_CmdMst aCmdMst = new cls_CmdMst(); aCmdMst.FunCmdMstClear(); //Clear() aCmdMst.CMDSNO = sCmdSno; aCmdMst.CMDMODE = clsASRS.gsCmdMode_In; //1 aCmdMst.SNO1 = "1"; aCmdMst.LOC1 = sGetLoc1; aCmdMst.LOCID1 = sLocID1; aCmdMst.SCAN1 = "Y"; if (sGetLoc2 == "") { aCmdMst.SNO2 = ""; aCmdMst.LOC2 = ""; aCmdMst.LOCID2 = ""; aCmdMst.SCAN2 = ""; } else { aCmdMst.SNO2 = "2"; aCmdMst.LOC2 = sGetLoc2; aCmdMst.LOCID2 = sLocID2; aCmdMst.SCAN2 = "Y"; } aCmdMst.CMDSTS = "0"; aCmdMst.PRT = "5"; //中科廠-站號依儲位 aCmdMst.STNNO = cboStnNo.Text; if (cboStnNo.Text == "D04") { aCmdMst.STNNO = cboStnNo.Text; } else { aCmdMst.STNNO = clsASRS.FunGetStnNoByLoc_SPIL_ZX(sGetLoc1); } aCmdMst.IOTYP = clsASRS.gsIOTYPE_EmptyIn; aCmdMst.AVAIL = "0"; aCmdMst.MIXQTY = "0"; aCmdMst.NEWLOC = ""; aCmdMst.PROGID = clsASRS.gsIOTYPE_EmptyIn_PID; aCmdMst.USERID = clsASRS.gstrLoginUser; aCmdMst.TRACE = "0"; aCmdMst.STORAGETYP = ""; if (aCmdMst.FunInsCmdMst() == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowErrMsg(clsMSG.MSG.COMMAND_ERROR); clsDB.FunClsDB(); this.Cursor = Cursors.Default; return; } clsDB.FunCommitCtrl("COMMIT"); clsDB.FunClsDB(); clsMSG.ShowInformationMsg(clsMSG.MSG.Msg_Run_Finish); FormCls(); }
private void btnExecute_Click(object sender, EventArgs e) { string sSQL = ""; //DbDataReader dbRS = null; string sLoc = ""; string sLocID = ""; //string sLocSts = ""; if (FunChkData() == false) { return; } sLoc = txtLoc.Text; sLocID = txtLocID.Text; if (clsDB.FunOpenDB() == false) { clsMSG.ShowErrMsg(clsMSG.MSG.OPEN_DB_NG); return; } ; #region 判斷是否有儲位重整中 string sMsg = ""; if (clsASRS.FunChkCycleStsIsRunning(ref sMsg) == false) { clsMSG.ShowInformationMsg(sMsg); clsDB.FunClsDB(); return; } #endregion #region 取得命令序號 string sCmdSno = clsASRS.FunGetCmdSno(); if (sCmdSno == "") { clsMSG.ShowErrMsg("系統錯誤,無命令序號可使用!!"); clsDB.FunClsDB(); return; } #endregion clsDB.FunCommitCtrl("BEGIN"); #region 判斷是否有儲位重整中 string sTmpMsg = ""; if (clsASRS.FunChkCycleStsIsRunning(ref sTmpMsg) == false) { clsMSG.ShowInformationMsg(sTmpMsg); clsDB.FunClsDB(); return; } #endregion #region 產生命令主檔 cls_CmdMst aCmdMst = new cls_CmdMst(); aCmdMst.FunCmdMstClear(); //Clear() aCmdMst.CMDSNO = sCmdSno; aCmdMst.CMDMODE = clsASRS.gsCmdMode_Out; //2 aCmdMst.SNO1 = "1"; aCmdMst.LOC1 = sLoc; aCmdMst.LOCID1 = sLocID; aCmdMst.SCAN1 = "Y"; aCmdMst.SNO2 = ""; aCmdMst.LOC2 = ""; aCmdMst.LOCID2 = ""; aCmdMst.SCAN2 = "Y"; aCmdMst.CMDSTS = "0"; aCmdMst.PRT = "5"; aCmdMst.STNNO = cboStnNo.Text; aCmdMst.IOTYP = clsASRS.gsIOTYPE_Offline_In; aCmdMst.AVAIL = "0"; aCmdMst.MIXQTY = "0"; aCmdMst.NEWLOC = ""; aCmdMst.PROGID = clsASRS.gsIOTYPE_Offline_In_PID; aCmdMst.USERID = clsASRS.gstrLoginUser; aCmdMst.TRACE = "0"; aCmdMst.STORAGETYP = ""; if (aCmdMst.FunInsCmdMst() == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowErrMsg(clsMSG.MSG.COMMAND_ERROR); clsDB.FunClsDB(); this.Cursor = Cursors.Default; return; } #endregion #region 產生命令明細檔 cls_CmdDtl aCmdDtl = new cls_CmdDtl(); int i = 0; for (i = 0; i <= Grid1.RowCount - 1; i++) { #region Get出庫明細 objGridTmp Data aCmdDtl.CMDSNO = sCmdSno; aCmdDtl.SNO = "1"; //aCmdDtl.LOC = objGridTmp[iCol_Loc, 0].Value.ToString(); aCmdDtl.LOCID = sLocID; aCmdDtl.SUBLOC = ""; //No Use aCmdDtl.ITEMNO = Grid1[iCol_ITEM, i].Value.ToString(); aCmdDtl.CUSTOMER = Grid1[iCol_CUST, i].Value.ToString(); aCmdDtl.DEVICE = Grid1[iCol_DEV, i].Value.ToString(); aCmdDtl.LOTNO = Grid1[iCol_LotNo, i].Value.ToString(); aCmdDtl.STORE = Grid1[iCol_Store, i].Value.ToString(); aCmdDtl.OFFQTY = clsTool.INT(Grid1[iCol_OffQty, i].Value.ToString()); aCmdDtl.WAFERQTY = clsTool.INT(Grid1[iCol_WaferQty, i].Value.ToString()); aCmdDtl.SHIPQTY = clsTool.INT(Grid1[iCol_ShipQty, i].Value.ToString()); aCmdDtl.OFFACTQTY = clsTool.INT(Grid1[iCol_OffQty, i].Value.ToString()); aCmdDtl.WAFERACTQTY = clsTool.INT(Grid1[iCol_WaferQty, i].Value.ToString()); aCmdDtl.SHIPACTQTY = clsTool.INT(Grid1[iCol_ShipQty, i].Value.ToString()); aCmdDtl.FLAGQTY = "A"; aCmdDtl.CHKIQC = Grid1[iCol_ChkIQC, i].Value.ToString(); aCmdDtl.FOSBID = Grid1[iCol_FOSBID, i].Value.ToString(); aCmdDtl.IQC_ID = ""; aCmdDtl.ACC_ID = Grid1[iCol_ACCID, i].Value.ToString(); aCmdDtl.INDATE = Grid1[iCol_InDate, i].Value.ToString(); aCmdDtl.REMARK = Grid1[iCol_Remark, i].Value.ToString(); aCmdDtl.TRANSACTION_DATE = Grid1[iCol_TRANSACTION_DATE, i].Value.ToString(); if (aCmdDtl.TRANSACTION_DATE == "") { aCmdDtl.TRANSACTION_DATE = clsTool.GetDateTime(); //Format(Now, "yyyy/MM/dd HH:mm:ss") } aCmdDtl.GIB_CUSTOMER = Grid1[iCol_GIB_CUSTOMER, i].Value.ToString(); aCmdDtl.FAB_LOT_NO = Grid1[iCol_FAB_LOT_NO, i].Value.ToString(); aCmdDtl.FAB_TYPE = Grid1[iCol_FAB_TYPE, i].Value.ToString(); aCmdDtl.TYPENO = Grid1[iCol_TYPENO, i].Value.ToString(); aCmdDtl.LOT_TYPE = Grid1[iCol_LOT_TYPE, i].Value.ToString(); aCmdDtl.WAFER_SIZE = Grid1[iCol_WAFER_SIZE, i].Value.ToString(); aCmdDtl.YIELD = Grid1[iCol_YIELD, i].Value.ToString(); aCmdDtl.APP_NO = Grid1[iCol_APP_NO, i].Value.ToString(); aCmdDtl.REL_DATE = Grid1[iCol_REL_DATE, i].Value.ToString(); aCmdDtl.REASON_NAME = Grid1[iCol_REASON_NAME, i].Value.ToString(); aCmdDtl.TRANSACTION_REFERENCE = Grid1[iCol_TRANSACTION_REFERENCE, i].Value.ToString(); aCmdDtl.TRANSACTION_SOURCE_ID = Grid1[iCol_TRANSACTION_SOURCE_ID, i].Value.ToString(); aCmdDtl.TRANSACTION_TYPE_ID = Grid1[iCol_TRANSACTION_TYPE_ID, i].Value.ToString(); aCmdDtl.FROM_ORG = Grid1[iCol_FROM_ORG, i].Value.ToString(); aCmdDtl.TO_ORG = Grid1[iCol_TO_ORG, i].Value.ToString(); aCmdDtl.FROM_BANK = Grid1[iCol_FROM_BANK, i].Value.ToString(); aCmdDtl.TO_BANK = Grid1[iCol_TO_BANK, i].Value.ToString(); aCmdDtl.CYCLENO = ""; //'WMS aCmdDtl.COID = ""; // objGridTmp[iCol_COID, j].Value.ToString(); aCmdDtl.DOCID = ""; // 'WMS aCmdDtl.DOCID2 = ""; //? objGridTmp[iCol_DOCID2, j].Value.ToString(); // 'WMS #endregion if (aCmdDtl.FunInsCmdDtl() == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowErrMsg(clsMSG.MSG.COMMAND_ERROR); clsDB.FunClsDB(); this.Cursor = Cursors.Default; return; } sSQL = "DELETE FROM TRNTKT_ACC "; sSQL = sSQL + "WHERE ACC_ID = '" + Grid1[iCol_ACCID, i].Value.ToString() + "' "; if (clsDB.FunExecSql(sSQL) == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowErrMsg(clsMSG.MSG.COMMAND_ERROR); clsDB.FunClsDB(); this.Cursor = Cursors.Default; return; } } #endregion clsDB.FunCommitCtrl("COMMIT"); clsMSG.ShowInformationMsg(clsMSG.MSG.Msg_Run_Finish); clsDB.FunClsDB(); FormClear(); SubClrForm(); }
//處理命令 private bool FunDelwithCmd() { if (clsDB.FunOpenDB() == false) { clsMSG.ShowErrMsg(clsMSG.MSG.OPEN_DB_NG); return(false); } ; //找出命令模式 #region 找出命令模式 string sSQL = ""; DbDataReader dbRS = null; string sCmdMode = ""; string sIOTYP = ""; string sStnNo = ""; string sProgID = ""; string sUserID = ""; sSQL = "SELECT * FROM CMD_MST WHERE CMDSNO = '" + get_CmdSno + "' AND LOCID = '" + get_LocID + "' "; if (clsDB.FunRsSql(sSQL, ref dbRS)) { while (dbRS.Read()) { sCmdMode = dbRS["CMDMODE"].ToString(); sIOTYP = dbRS["IOTYP"].ToString(); sStnNo = dbRS["STNNO"].ToString(); sProgID = dbRS["PROGID"].ToString(); sUserID = dbRS["USERID"].ToString(); } dbRS.Close(); } #endregion if (sCmdMode == "2") { #region 找儲位 //尋找空儲位 (一定是一個空儲位) 只有入一個 int iCrn = 0; iCrn = clsASRS.FunGetCraneNoByLocID(get_LocID); //由料盒ID取得是那一座Crane int iBayDesc = 1; //從前面找起 string sGetLoc1 = ""; string sGetLocID1 = ""; //(1)先找內側儲位為N,外側儲位為S if (clsASRS.FunGetLocForSingleListByInOutLoc(iCrn, "N", "S", 1, ref sGetLoc1, ref sGetLocID1) == false) { //(2)找內側儲位為N,外側儲位為S. (TEMP 儲位) if (clsASRS.FunGetLocForSingleListByInOutLoc_StorageTyp_Temp(iCrn, "N", "S", 1, ref sGetLoc1, ref sGetLocID1, iBayDesc) == false) { //(3)找外側儲位為N,內側儲位為N. (TEMP 儲位) if (clsASRS.FunGetLocForSingleListByInOutLoc_StorageTyp_Temp(iCrn, "N", "N", 2, ref sGetLoc1, ref sGetLocID1, iBayDesc) == false) { //(4)找外側儲位為N,內側儲位為N, if (clsASRS.FunGetLocForSingleListByInOutLoc(iCrn, "N", "N", 2, ref sGetLoc1, ref sGetLocID1) == false) { clsMSG.ShowWarningMsg("無合適之空儲位!!"); clsDB.FunClsDB(); return(false); } } } } #endregion #region 找命令 string sCmdSnoNew = clsASRS.FunGetCmdSno(); if (sCmdSnoNew == "") { clsMSG.ShowErrMsg("系統錯誤!!"); clsDB.FunClsDB(); return(false); } #endregion string sMsg = ""; clsDB.FunCommitCtrl("BEGIN"); #region 預約儲位 //預約儲位為入庫預約 if (clsASRS.FunSetLocIsPreStkIn(sGetLoc1, "", ref sMsg) == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowWarningMsg(sMsg); clsDB.FunClsDB(); return(false); } #endregion //產生命令主檔 #region 產生命令主檔 cls_CmdMst aCmdMst = new cls_CmdMst(); aCmdMst.FunCmdMstClear(); //Clear() aCmdMst.CMDSNO = sCmdSnoNew; aCmdMst.SNO1 = "1"; aCmdMst.LOC1 = sGetLoc1; aCmdMst.LOCID1 = get_LocID; aCmdMst.SCAN1 = "Y"; //己確認 aCmdMst.SNO2 = ""; aCmdMst.LOC2 = ""; aCmdMst.LOCID2 = ""; aCmdMst.SCAN2 = "N"; aCmdMst.CMDMODE = clsASRS.gsCmdMode_In; //入庫 aCmdMst.CMDSTS = "0"; aCmdMst.PRT = "5"; aCmdMst.STNNO = sStnNo; aCmdMst.IOTYP = sIOTYP; aCmdMst.AVAIL = "100"; // 彰化廠 aCmdMst.MIXQTY = "1"; // 彰化廠 aCmdMst.NEWLOC = ""; aCmdMst.PROGID = sProgID; aCmdMst.USERID = sUserID; aCmdMst.TRACE = "0"; aCmdMst.STORAGETYP = ""; if (aCmdMst.FunInsCmdMst() == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowWarningMsg("處理失敗"); clsDB.FunClsDB(); return(false); } #endregion //產生命令明細檔 #region 產生命令明細檔 sSQL = "INSERT INTO CMD_DTL (CMDSNO,LocID,SNO,ITEMNO,CUSTOMER,DEVICE,LOTNO,STORE,"; sSQL = sSQL + "OFFQTY,WAFERQTY,SHIPQTY,OFFACTQTY,WAFERACTQTY,SHIPACTQTY,"; sSQL = sSQL + "FLAGQTY,CHKIQC,FOSBID,IQC_ID,ACC_ID,INDATE,REMARK,TRANSACTION_DATE,"; sSQL = sSQL + "GIB_CUSTOMER,FAB_LOT_NO,FAB_TYPE,TYPENO,LOT_TYPE,WAFER_SIZE,YIELD,"; sSQL = sSQL + "APP_NO,REL_DATE,REASON_NAME,TRANSACTION_REFERENCE,TRANSACTION_SOURCE_ID,"; sSQL = sSQL + "TRANSACTION_TYPE_ID,FROM_ORG,TO_ORG,FROM_BANK,TO_BANK,CYCLENO,COID,SNID,DOCID,DOCID2) "; sSQL = sSQL + "SELECT '" + sCmdSnoNew + "',LocID,SNO,ITEMNO,CUSTOMER,DEVICE,LOTNO,STORE,"; sSQL = sSQL + "OFFQTY,WAFERQTY,SHIPQTY,OFFACTQTY,WAFERACTQTY,SHIPACTQTY,"; sSQL = sSQL + "FLAGQTY,CHKIQC,FOSBID,IQC_ID,ACC_ID,INDATE,REMARK,TRANSACTION_DATE,"; sSQL = sSQL + "GIB_CUSTOMER,FAB_LOT_NO,FAB_TYPE,TYPENO,LOT_TYPE,WAFER_SIZE,YIELD,"; sSQL = sSQL + "APP_NO,REL_DATE,REASON_NAME,TRANSACTION_REFERENCE,TRANSACTION_SOURCE_ID,"; sSQL = sSQL + "TRANSACTION_TYPE_ID,FROM_ORG,TO_ORG,FROM_BANK,TO_BANK,CYCLENO,COID,SNID,DOCID,DOCID2 "; sSQL = sSQL + "FROM CMD_DTL WHERE CMDSNO = '" + get_CmdSno + "' AND LOCID = '" + get_LocID + "' "; if (clsDB.FunExecSql(sSQL) == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowWarningMsg(clsMSG.MSG.Msg_Run_Error); clsDB.FunClsDB(); return(false); } #endregion //更新盤點檔 #region 更新盤點檔 if (FunDelWithCYCLE() == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowWarningMsg(clsMSG.MSG.Msg_Run_Error); clsDB.FunClsDB(); return(false); } #endregion //更新old命令為 Y且結束 #region 更新old命令為 Y且結束 sSQL = "UPDATE CMD_MST SET SCAN = 'Y',CMDSTS = '7' "; sSQL = sSQL + "WHERE CMDSNO = '" + get_CmdSno + "' "; sSQL = sSQL + "AND LOCID = '" + get_LocID + "' "; sSQL = sSQL + "AND CMDSTS <= '7' "; if (clsDB.FunExecSql(sSQL) == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowWarningMsg(clsMSG.MSG.Msg_Run_Error); clsDB.FunClsDB(); return(false); } #endregion clsDB.FunCommitCtrl("COMMIT"); // 'COMMIT clsDB.FunClsDB(); return(true); } else { clsDB.FunCommitCtrl("BEGIN"); //更新盤點檔 if (FunDelWithCYCLE() == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowWarningMsg(clsMSG.MSG.Msg_Run_Error); clsDB.FunClsDB(); return(false); } //更新 CMD_MST if (FunDelWithCmd_CMD_MST() == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowWarningMsg(clsMSG.MSG.Msg_Run_Error); clsDB.FunClsDB(); return(false); } clsDB.FunCommitCtrl("COMMIT"); // 'COMMIT clsDB.FunClsDB(); return(true); } //return false; }
private void SubExecute() { string sSQL = ""; DbDataReader dbRS = null; int i = 0; int j = 0; bool bCmdFlag = false; cls_CmdMst aCmdMst = new cls_CmdMst(); string sLoc1 = ""; string sLocOther = ""; string sLocIDOther = ""; //判斷站號是否正確 if (clsASRS.FunChkStnNo(cboStnNo.Text.Trim()) == false) { return; } //讀取要出庫的儲位資料 string[] aLoc = new string[1]; aLoc[0] = ""; if (clsASRS.FunGetLocList(ref aLoc, ref Grid1, iCol_Loc) == false) { return; } if (clsDB.FunOpenDB() == false) { clsMSG.ShowErrMsg(clsMSG.MSG.OPEN_DB_NG); return; } ; #region 判斷是否有儲位重整中 string sTmpMsg = ""; if (clsASRS.FunChkCycleStsIsRunning(ref sTmpMsg) == false) { clsMSG.ShowInformationMsg(sTmpMsg); clsDB.FunClsDB(); return; } #endregion #region 讀取命令序號 string[] sCmdSno = new string[aLoc.Length]; for (i = 0; i <= aLoc.Length - 1; i++) { sCmdSno[i] = clsASRS.FunGetCmdSno(); if (sCmdSno[i] == "") { clsMSG.ShowErrMsg("系統錯誤,無命令序號可使用!!"); clsDB.FunClsDB(); return; } } #endregion for (i = 0; i <= aLoc.Length - 1; i++) { if (aLoc[i] != "") { #region 1. 複製 Loc 資訊 tmpGrid1.RowCount = 0; tmpGrid2.RowCount = 0; sLoc1 = ""; sLocOther = ""; sLocIDOther = ""; if (FunGetLocToTmpGrid(aLoc[i]) == false) { clsMSG.ShowErrMsg("系統錯誤"); clsDB.FunClsDB(); return; } #endregion #region 2. 取得另一個 Loc (sLocOther/sLocIDOther) string sCrane_Row = ""; string sSNO1 = ""; string sSNO2 = ""; sSQL = "SELECT LOC1,CRANE_ROW FROM LOC_MST WHERE LOC = '" + aLoc[i] + "' "; if (clsDB.FunRsSql(sSQL, ref dbRS)) { while (dbRS.Read()) { sLoc1 = dbRS["LOC1"].ToString(); sCrane_Row = dbRS["CRANE_ROW"].ToString(); } dbRS.Close(); } bool bFlagTmp = false; for (j = 0; j <= aLoc.Length - 1; j++) { if (sLoc1 == aLoc[j]) { aLoc[j] = ""; //Clear bFlagTmp = true; break; } } if (bFlagTmp == true) { sLocOther = sLoc1; sSQL = "SELECT LOCID FROM LOC_MST WHERE LOC = '" + sLocOther + "' "; if (clsDB.FunRsSql(sSQL, ref dbRS)) { while (dbRS.Read()) { sLocIDOther = dbRS["LOCID"].ToString(); } dbRS.Close(); } if (FunGetLocToTmpGrid2(sLocOther) == false) { clsMSG.ShowErrMsg("系統錯誤"); clsDB.FunClsDB(); return; } //判斷左右 if ((sCrane_Row == "2") || (sCrane_Row == "3")) { sSNO1 = "1"; sSNO2 = "2"; } else { sSNO1 = "2"; sSNO2 = "1"; } } else { sSNO1 = "1"; sSNO2 = ""; } #endregion #region BEGIN bCmdFlag = true; clsDB.FunCommitCtrl("BEGIN"); #endregion #region 4. 預約儲位 if (bCmdFlag == true) { sSQL = "UPDATE LOC_MST SET LOCSTS = 'O' WHERE LOC = '" + aLoc[i] + "' AND LOCSTS = 'S' "; if (clsDB.FunExecSql(sSQL) == false) { bCmdFlag = false; } } if (bCmdFlag == true) { if (sLocOther != "") { sSQL = "UPDATE LOC_MST SET LOCSTS = 'O' WHERE LOC = '" + sLocOther + "' AND LOCSTS = 'S' "; if (clsDB.FunExecSql(sSQL) == false) { bCmdFlag = false; } } } #endregion #region 5. 產生命令主檔 if (bCmdFlag == true) { aCmdMst.FunCmdMstClear(); //Clear() aCmdMst.CMDSNO = sCmdSno[i]; aCmdMst.SNO1 = sSNO1; // "1"; aCmdMst.LOC1 = aLoc[i]; aCmdMst.LOCID1 = tmpGrid1[iCol_LocID, 0].Value.ToString(); //LOCID aCmdMst.SCAN1 = "N"; if (sLocOther == "") { aCmdMst.SNO2 = ""; aCmdMst.CMDMODE = clsASRS.gsCmdMode_Out; //2 } else { aCmdMst.SNO2 = sSNO2; aCmdMst.LOC2 = sLocOther; aCmdMst.LOCID2 = sLocIDOther; aCmdMst.CMDMODE = clsASRS.gsCmdMode_Pack; //3 aCmdMst.SCAN2 = "N"; } aCmdMst.CMDSTS = "0"; aCmdMst.PRT = "5"; aCmdMst.STNNO = cboStnNo.Text; aCmdMst.IOTYP = clsASRS.gsIOTYPE_ERP_Out; aCmdMst.AVAIL = tmpGrid1[iCol_AVAIL, 0].Value.ToString(); // "100"; // 彰化廠 aCmdMst.MIXQTY = tmpGrid1[iCol_MIXQTY, 0].Value.ToString(); //"1"; // 彰化廠 aCmdMst.NEWLOC = ""; aCmdMst.PROGID = clsASRS.gsIOTYPE_ERP_Out_PID; aCmdMst.USERID = clsASRS.gstrLoginUser; aCmdMst.TRACE = "0"; aCmdMst.STORAGETYP = ""; if (aCmdMst.FunInsCmdMst() == false) { bCmdFlag = false; } } #endregion #region 6. 產生命令明細檔 if (bCmdFlag == true) { if (SubGetCmdDtl(ref tmpGrid1, sCmdSno[i], aCmdMst.SNO1) == false) { bCmdFlag = false; } if ((bCmdFlag == true) && (sLocOther != "")) { if (SubGetCmdDtl(ref tmpGrid2, sCmdSno[i], aCmdMst.SNO2) == false) { bCmdFlag = false; } } } #endregion #region COMMIT/ROLLBACK if (bCmdFlag == true) { clsDB.FunCommitCtrl("COMMIT"); } else { clsDB.FunCommitCtrl("ROLLBACK"); clsDB.FunClsDB(); clsMSG.ShowErrMsg(clsMSG.MSG.Msg_Run_Error); return; } #endregion } } FormCls(); clsDB.FunClsDB(); }
private void SubExecute() { string sSQL = ""; //DbDataReader dbRS = null; int iSelCrn = 0; //指定 Crane No int iTrnCnt = 0; int idx = 0; iTrnCnt = clsTool.INT(txtTrnQty.Text); Grid1.RowCount = 0; //if (cboStnNo.Text == "") { clsMSG.ShowWarningMsg("請選擇站號"); return; } #region 判斷數量是否足夠 int iEmptyFosb = 0; if (chkCrn.Checked == false) { iSelCrn = clsTool.INT(cboCrnNo.Text); switch (cboCrnNo.Text) { case "1": iEmptyFosb = clsTool.INT(lblEmptyFosb1.Text); break; case "2": iEmptyFosb = clsTool.INT(lblEmptyFosb2.Text); break; case "3": iEmptyFosb = clsTool.INT(lblEmptyFosb3.Text); break; default: clsMSG.ShowWarningMsg("選擇的高架車錯誤"); return; //MessageBox.Show("選擇的高架車錯誤","Error",MessageBoxButtons.OK,MessageBoxIcon.Error); return; } if (iTrnCnt > iEmptyFosb) { clsMSG.ShowErrMsg("AS/RS 可存放FOSB為:" + iEmptyFosb + " \n 預計入庫存放FOSB為:" + iTrnCnt + " \n 無法存放,請再確認!!"); return; } } else { //隨機(不限高架車) iSelCrn = 0; iEmptyFosb = clsTool.INT(lblEmptyFosb1.Text) + clsTool.INT(lblEmptyFosb2.Text) + clsTool.INT(lblEmptyFosb3.Text); if (iTrnCnt > iEmptyFosb) { clsMSG.ShowErrMsg("AS/RS 可存放FOSB為:" + iEmptyFosb + " \n 預計入庫存放FOSB為:" + iTrnCnt + " \n 無法存放,請再確認!!"); return; } } #endregion if (clsDB.FunOpenDB() == false) { clsMSG.ShowErrMsg(clsMSG.MSG.OPEN_DB_NG); return; } ; #region 判斷是否有儲位重整中 string sTmpMsg = ""; if (clsASRS.FunChkCycleStsIsRunning(ref sTmpMsg) == false) { clsMSG.ShowInformationMsg(sTmpMsg); clsDB.FunClsDB(); return; } #endregion this.Cursor = Cursors.WaitCursor; cls_CmdMst aCmdMst = new cls_CmdMst(); int iFosb = 0; int i = 0; iFosb = iTrnCnt; //要出庫的數量 for (i = 1; i <= iTrnCnt; i++) { #region 找 E空料盒儲位 string sLoc1 = ""; string sLocID1 = ""; string sLoc2 = ""; string sLocID2 = ""; if (iFosb <= 0) { break; } //數量己經為0,則跳出迴圈 if (iFosb == 1) { //剩下一個 #region 找單料盒儲位順序 //(1) 找外側儲位,內側儲位為N. //(2) 找內側儲位,外側儲位為N. //(3) 找內側儲位,外側儲位為S. //(4) 找內側儲位,外側儲位為E. //(5) 找外側儲位,內側儲位為E. //(6) 找內側儲位,內側儲位不為E. //(7) 找外側儲位,內側儲位不為E. #endregion #region 找料盒 //(1) 找外側儲位,內側儲位為N. if (clsASRS.FunGetLocForSingleListByInOutLoc(iSelCrn, "E", "N", 2, ref sLoc1, ref sLocID1) == false) { //(2) 找內側儲位,外側儲位為N. if (clsASRS.FunGetLocForSingleListByInOutLoc(iSelCrn, "E", "N", 1, ref sLoc1, ref sLocID1) == false) { //(3) 找內側儲位,外側儲位為S. if (clsASRS.FunGetLocForSingleListByInOutLoc(iSelCrn, "E", "S", 1, ref sLoc1, ref sLocID1) == false) { //(4) 找內側儲位,外側儲位為E. if (clsASRS.FunGetLocForSingleListByInOutLoc(iSelCrn, "E", "E", 1, ref sLoc1, ref sLocID1) == false) { //(5) 找外側儲位,內側儲位為E. if (clsASRS.FunGetLocForSingleListByInOutLoc(iSelCrn, "E", "E", 2, ref sLoc1, ref sLocID1) == false) { //(6) 找內側儲位,內側儲位不為E. if (clsASRS.FunGetLocForSingleListByLocSts(iSelCrn, "E", 1, ref sLoc1, ref sLocID1) == false) { //(7) 找外側儲位,內側儲位不為E. if (clsASRS.FunGetLocForSingleListByLocSts(iSelCrn, "E", 2, ref sLoc1, ref sLocID1) == false) { clsDB.FunClsDB(); this.Cursor = Cursors.Default; return; } } } } } } } #endregion //SLOC1,SOCID1 } else { //1. 先找儲位雙料盒皆為空料盒. if (clsASRS.FunGetLocForDoubleListByLocSts(iSelCrn, "E", ref sLoc1, ref sLocID1, ref sLoc2, ref sLocID2) == true) { //Got LOC1,LOC2 } else { //2. 無雙料盒則找單料盒. #region 找單料盒儲位順序 //(1) 找外側儲位,內側儲位為N. //(2) 找內側儲位,外側儲位為N. //(3) 找內側儲位,外側儲位為S. //(4) 找內側儲位,外側儲位為E. //(5) 找外側儲位,內側儲位為E. //(6) 找內側儲位,內側儲位不為E. //(7) 找外側儲位,內側儲位不為E. #endregion #region 找料盒 //(1) 找外側儲位,內側儲位為N. if (clsASRS.FunGetLocForSingleListByInOutLoc(iSelCrn, "E", "N", 2, ref sLoc1, ref sLocID1) == false) { //(2) 找內側儲位,外側儲位為N. if (clsASRS.FunGetLocForSingleListByInOutLoc(iSelCrn, "E", "N", 1, ref sLoc1, ref sLocID1) == false) { //(3) 找內側儲位,外側儲位為S. if (clsASRS.FunGetLocForSingleListByInOutLoc(iSelCrn, "E", "S", 1, ref sLoc1, ref sLocID1) == false) { //(4) 找內側儲位,外側儲位為E. if (clsASRS.FunGetLocForSingleListByInOutLoc(iSelCrn, "E", "E", 1, ref sLoc1, ref sLocID1) == false) { //(5) 找外側儲位,內側儲位為E. if (clsASRS.FunGetLocForSingleListByInOutLoc(iSelCrn, "E", "E", 2, ref sLoc1, ref sLocID1) == false) { //(6) 找內側儲位,內側儲位不為E. if (clsASRS.FunGetLocForSingleListByLocSts(iSelCrn, "E", 1, ref sLoc1, ref sLocID1) == false) { //(7) 找外側儲位,內側儲位不為E. if (clsASRS.FunGetLocForSingleListByLocSts(iSelCrn, "E", 2, ref sLoc1, ref sLocID1) == false) { clsDB.FunClsDB(); this.Cursor = Cursors.Default; return; } } } } } } } #endregion //SLOC1,SOCID1 } } #endregion //產生出庫命令 #region 讀取命令序號 string sCmdSno = clsASRS.FunGetCmdSno(); if (sCmdSno == "") { clsMSG.ShowErrMsg("系統錯誤,無命令序號可使用!!"); clsDB.FunClsDB(); return; } #endregion clsDB.FunCommitCtrl("BEGIN"); #region 預約儲位 sSQL = "UPDATE LOC_MST SET LOCSTS = 'O' WHERE LOC = '" + sLoc1 + "' AND LOCSTS = 'E' "; if (clsDB.FunExecSql(sSQL) == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsDB.FunClsDB(); this.Cursor = Cursors.Default; clsMSG.ShowErrMsg(clsMSG.MSG.COMMAND_ERROR); return; } if (sLoc2 != "") { sSQL = "UPDATE LOC_MST SET LOCSTS = 'O' WHERE LOC = '" + sLoc2 + "' AND LOCSTS = 'E' "; if (clsDB.FunExecSql(sSQL) == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsDB.FunClsDB(); this.Cursor = Cursors.Default; clsMSG.ShowErrMsg(clsMSG.MSG.COMMAND_ERROR); return; } } #endregion #region 產生命令主檔 aCmdMst.FunCmdMstClear(); //Clear() aCmdMst.CMDSNO = sCmdSno; aCmdMst.SNO1 = "1"; aCmdMst.LOC1 = sLoc1; aCmdMst.LOCID1 = sLocID1; aCmdMst.SCAN1 = "N"; aCmdMst.SCAN2 = "N"; if (sLoc2 == "") { aCmdMst.SNO2 = ""; aCmdMst.CMDMODE = clsASRS.gsCmdMode_Out; //2 idx = 1; //1個空料盒 } else { aCmdMst.SNO2 = "2"; aCmdMst.LOC2 = sLoc2; aCmdMst.LOCID2 = sLocID2; aCmdMst.CMDMODE = clsASRS.gsCmdMode_Pack; //3 idx = 2; //2個空料盒 } aCmdMst.CMDSTS = "0"; aCmdMst.PRT = "5"; //中科廠-站號依儲位 //aCmdMst.STNNO = cboStnNo.Text; if (cboStnNo.Text == "D04") { aCmdMst.STNNO = cboStnNo.Text; } else { aCmdMst.STNNO = clsASRS.FunGetStnNoByLoc_SPIL_ZX(sLoc1); } aCmdMst.IOTYP = clsASRS.gsIOTYPE_WMS_In; aCmdMst.AVAIL = "0"; aCmdMst.MIXQTY = "0"; aCmdMst.NEWLOC = ""; aCmdMst.PROGID = clsASRS.gsIOTYPE_WMS_In_PID; aCmdMst.USERID = clsASRS.gstrLoginUser; aCmdMst.TRACE = "0"; aCmdMst.STORAGETYP = ""; if (aCmdMst.FunInsCmdMst() == false) { clsDB.FunCommitCtrl("ROLLBACK"); clsDB.FunClsDB(); this.Cursor = Cursors.Default; clsMSG.ShowErrMsg(clsMSG.MSG.COMMAND_ERROR); return; } #endregion clsDB.FunCommitCtrl("COMMIT"); //將結果寫入Grid中 SubWriGridCmd(sCmdSno, sLoc1, sLocID1, sLoc2, sLocID2, idx); //計算判斷要扣除幾個FOSB空間 iFosb = iFosb - idx; } clsDB.FunClsDB(); this.Cursor = Cursors.Default; clsMSG.ShowInformationMsg(clsMSG.MSG.SET_PARAMETER_OK); }
private void btnExecute_Click(object sender, EventArgs e) { string sSQL = ""; DbDataReader dbRS = null; #region 防呆,防止輸入空白欄位 if (txtLoc1.Text == "") { clsMSG.ShowWarningMsg("請輸入來源儲位"); return; } if (txtLoc2.Text == "") { clsMSG.ShowWarningMsg("請輸入目的儲位"); return; } #endregion if (clsDB.FunOpenDB() == false) { clsMSG.ShowErrMsg(clsMSG.MSG.OPEN_DB_NG); return; } ; #region 判斷是否有儲位重整中 string sTmpMsg = ""; if (clsASRS.FunChkCycleStsIsRunning(ref sTmpMsg) == false) { clsMSG.ShowInformationMsg(sTmpMsg); clsDB.FunClsDB(); return; } #endregion #region 防呆,防止來源儲位和目的儲位的儲位狀態是否正確 string sLocSts_S = ""; string sLocID_S = ""; sSQL = "SELECT * FROM LOC_MST WHERE LOC = '" + txtLoc1.Text + "' "; if (clsDB.FunRsSql(sSQL, ref dbRS)) { while (dbRS.Read()) { sLocSts_S = dbRS["LOCSTS"].ToString(); sLocID_S = dbRS["LOCID"].ToString(); } dbRS.Close(); } if (!((sLocSts_S == "S") || (sLocSts_S == "E"))) { clsMSG.ShowWarningMsg("來源儲位不是庫存儲位或空料盒儲位!!"); clsDB.FunClsDB(); return; } string sLocSts_E = ""; sSQL = "SELECT * FROM LOC_MST WHERE LOC = '" + txtLoc2.Text + "' "; if (clsDB.FunRsSql(sSQL, ref dbRS)) { while (dbRS.Read()) { sLocSts_E = dbRS["LOCSTS"].ToString(); } dbRS.Close(); } if (sLocSts_E != "N") { clsMSG.ShowWarningMsg("目的儲位不是空儲位"); clsDB.FunClsDB(); return; } int iCrn_S = clsASRS.FunGetCraneNoByLoc(txtLoc1.Text); int iCrn_E = clsASRS.FunGetCraneNoByLoc(txtLoc2.Text); if (iCrn_S != iCrn_E) { clsMSG.ShowWarningMsg("來源儲位和目的儲位不是同一座Crane"); clsDB.FunClsDB(); return; } #endregion if (sLocID_S == "") { clsMSG.ShowWarningMsg("錯誤,料盒編號是空值"); clsDB.FunClsDB(); return; } //下達庫對庫命令 #region 讀取命令序號 (sCmdSno) string sCmdSno = ""; sCmdSno = clsASRS.FunGetCmdSno(); if (sCmdSno == "") { clsMSG.ShowErrMsg("系統錯誤,產生命令失敗!!"); clsDB.FunClsDB(); return; } #endregion bool bFlag = true; clsDB.FunCommitCtrl("BEGIN"); #region 預約 出庫儲位(O) if (bFlag == true) { sSQL = "UPDATE LOC_MST SET LOCSTS = 'O',OLDSTS = '" + sLocSts_S + "' WHERE LOC = '" + txtLoc1.Text + "' AND LOCSTS = '" + sLocSts_S + "' "; if (clsDB.FunExecSql(sSQL) == false) { bFlag = false; } } #endregion #region 預約 入庫儲位(I) if (bFlag == true) { sSQL = "UPDATE LOC_MST SET LOCSTS = 'I',OLDSTS = '" + sLocSts_E + "' WHERE LOC = '" + txtLoc2.Text + "' AND LOCSTS = 'N' "; if (clsDB.FunExecSql(sSQL) == false) { bFlag = false; } } #endregion cls_CmdMst aCmdMst = new cls_CmdMst(); #region 產生命令主檔 if (bFlag == true) { aCmdMst.FunCmdMstClear(); //Clear() aCmdMst.CMDSNO = sCmdSno; aCmdMst.SNO1 = "1"; aCmdMst.LOC1 = txtLoc1.Text; aCmdMst.LOCID1 = sLocID_S; aCmdMst.SCAN1 = "Y"; aCmdMst.SCAN2 = "Y"; aCmdMst.NEWLOC = txtLoc2.Text; aCmdMst.SNO2 = ""; aCmdMst.LOC2 = ""; aCmdMst.LOCID2 = ""; aCmdMst.CMDMODE = clsASRS.gsCmdMode_R2R; //5 aCmdMst.CMDSTS = "0"; aCmdMst.PRT = "5"; aCmdMst.STNNO = ""; //aCmdMst.IOTYP = clsASRS.gsIOTYPE_R2R; if (sLocSts_S == "S") { aCmdMst.IOTYP = "51"; } else if (sLocSts_S == "E") { aCmdMst.IOTYP = "52"; } aCmdMst.AVAIL = "0"; aCmdMst.MIXQTY = "0"; aCmdMst.PROGID = clsASRS.gsIOTYPE_R2R_PID; aCmdMst.USERID = clsASRS.gstrLoginUser; aCmdMst.TRACE = "0"; aCmdMst.STORAGETYP = ""; if (aCmdMst.FunInsCmdMst() == false) { bFlag = false; } } #endregion if (bFlag == true) { clsDB.FunCommitCtrl("COMMIT"); clsMSG.ShowInformationMsg("庫對庫命令產生完成!!"); SubClear(); } else { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowErrMsg("庫對庫命令產生失敗!!"); } clsDB.FunClsDB(); SubClear(); }
private void btnExecute_Click(object sender, EventArgs e) { //string strSql = ""; DbDataReader dbRS = null; string sSQL = ""; #region 防呆 string sLoc1 = ""; string sLocID1 = ""; string sLoc2 = ""; string sLocID2 = ""; //中科廠-站號依儲位 //if (clsASRS.FunChkStnNo(cboStnNo.Text.Trim()) == false) { return; } if ((rdbSel1.Checked == false) && (rdbSel2.Checked == false)) { clsMSG.ShowWarningMsg("請選擇空料盒"); return; } if (rdbSel1.Checked == true) { if (txtLoc.Text == "") { clsMSG.ShowWarningMsg("請輸入空料盒儲位"); return; } else { sLoc1 = txtLoc.Text.Trim(); sLoc2 = ""; } } if (rdbSel2.Checked == true) { if (txtLoc1.Text == "") { clsMSG.ShowWarningMsg("請輸入空料盒儲位 (左側)"); return; } if (txtLoc2.Text == "") { clsMSG.ShowWarningMsg("請輸入空料盒儲位 (右側)"); return; } sLoc1 = txtLoc1.Text.Trim(); sLoc2 = txtLoc2.Text.Trim(); } #endregion if (clsDB.FunOpenDB() == false) { clsMSG.ShowErrMsg(clsMSG.MSG.OPEN_DB_NG); return; } #region 判斷左右的儲位一定要正確 if ((sLoc1 != "") && (sLoc2 != "")) { bool bFlagA = false; if (clsTool.INT(sLoc1.Substring(4, 2)) == clsTool.INT(sLoc2.Substring(4, 2))) { if (clsTool.INT(sLoc1.Substring(2, 2)) == clsTool.INT(sLoc2.Substring(2, 2))) { int iLoc1_Row = clsTool.INT(sLoc1.Substring(0, 2)) % 4; int iLoc2_Row = clsTool.INT(sLoc2.Substring(0, 2)) % 4; if (iLoc1_Row == 3) { if (iLoc2_Row == 1) { bFlagA = true; } } else if (iLoc1_Row == 2) { if (iLoc2_Row == 0) { bFlagA = true; } } else { bFlagA = false; } } else { bFlagA = false; } } else { bFlagA = false; } if (bFlagA == false) { clsMSG.ShowWarningMsg("空料盒儲位左右儲位不符合規定"); clsDB.FunClsDB(); return; } } #endregion #region 判斷是否有儲位重整中 string sMsg = ""; if (clsASRS.FunChkCycleStsIsRunning(ref sMsg) == false) { clsMSG.ShowInformationMsg(sMsg); clsDB.FunClsDB(); return; } #endregion #region 取得棧板ID sLocID1 = clsASRS.FunGetLocID_FromLocMst(sLoc1); sLocID2 = clsASRS.FunGetLocID_FromLocMst(sLoc2); #endregion #region 取得命令序號 string sCmdSno = clsASRS.FunGetCmdSno(); if (sCmdSno == "") { clsMSG.ShowErrMsg("系統錯誤,無命令序號可使用!!"); clsDB.FunClsDB(); return; } #endregion //預約儲位 #region 判斷是否有儲位重整中 string sTmpMsg = ""; if (clsASRS.FunChkCycleStsIsRunning(ref sTmpMsg) == false) { clsMSG.ShowInformationMsg(sTmpMsg); clsDB.FunClsDB(); return; } #endregion clsDB.FunCommitCtrl("BEGIN"); //產生出庫命令 bool bFlag = true; cls_CmdMst aCmdMst = new cls_CmdMst(); aCmdMst.FunCmdMstClear(); //Clear() aCmdMst.CMDSNO = sCmdSno; aCmdMst.CMDMODE = clsASRS.gsCmdMode_Out; //2 aCmdMst.SNO1 = "1"; aCmdMst.LOC1 = sLoc1; aCmdMst.LOCID1 = sLocID1; aCmdMst.SCAN1 = "Y"; if (sLoc2 == "") { aCmdMst.SNO2 = ""; aCmdMst.LOC2 = ""; aCmdMst.LOCID2 = ""; aCmdMst.SCAN2 = "Y"; } else { aCmdMst.SNO2 = "2"; aCmdMst.LOC2 = sLoc2; aCmdMst.LOCID2 = sLocID2; aCmdMst.SCAN2 = "Y"; } aCmdMst.CMDSTS = "0"; aCmdMst.PRT = "5"; //中科廠-站號依儲位 //aCmdMst.STNNO = cboStnNo.Text; if (cboStnNo.Text == "D04") { aCmdMst.STNNO = cboStnNo.Text; } else { aCmdMst.STNNO = clsASRS.FunGetStnNoByLoc_SPIL_ZX(sLoc1); } aCmdMst.IOTYP = clsASRS.gsIOTYPE_EmptyOut; aCmdMst.AVAIL = "0"; aCmdMst.MIXQTY = "0"; aCmdMst.NEWLOC = ""; aCmdMst.PROGID = clsASRS.gsIOTYPE_EmptyOut_PID; aCmdMst.USERID = clsASRS.gstrLoginUser; aCmdMst.TRACE = "0"; aCmdMst.STORAGETYP = ""; if (aCmdMst.FunInsCmdMst() == false) { bFlag = false; } if (bFlag == true) { sSQL = "UPDATE LOC_MST SET LOCSTS = 'O' WHERE LOC = '" + sLoc1 + "' AND LOCSTS = 'E' "; if (clsDB.FunExecSql(sSQL) == false) { bFlag = false; } } if (bFlag == true) { if (sLoc2 != "") { sSQL = "UPDATE LOC_MST SET LOCSTS = 'O' WHERE LOC = '" + sLoc2 + "' AND LOCSTS = 'E' "; if (clsDB.FunExecSql(sSQL) == false) { bFlag = false; } } } if (bFlag == true) { clsDB.FunCommitCtrl("COMMIT"); clsDB.FunClsDB(); this.Cursor = Cursors.Default; clsMSG.ShowInformationMsg(clsMSG.MSG.Msg_Run_Finish); FormCls(); } else { clsDB.FunCommitCtrl("ROLLBACK"); clsMSG.ShowErrMsg(clsMSG.MSG.COMMAND_ERROR); clsDB.FunClsDB(); this.Cursor = Cursors.Default; return; } }