private bool StartExport() { /* 條件值檢核*/ string lsRtn; DialogResult liRtn; if (rgTime.EditValue.Equals("rb_market1")) { lsRtn = "1"; } else { lsRtn = "0"; } //檢查批次作業是否完成 lsRtn = PbFunc.f_get_jsw_seq(_ProgramID, "E", 0, emEndDate.Text.AsDateTime(), "0");//f_get_jsw_seq(is_txn_id,'E',0,datetime(date(em_edate.text)),'0') if (lsRtn != "") { liRtn = MessageBox.Show(emEndDate.Text + " 統計資料未轉入完畢,是否要繼續?\r\n" + lsRtn, GlobalInfo.QuestionText, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (liRtn == DialogResult.No) { stMsgTxt.Visible = false; this.Cursor = Cursors.Arrow; return(false); } } //檢查日期是否符合DateTime型別 if (!emStartDate.IsDate(emStartDate.Text, CheckDate.Start) || !emEndDate.IsDate(emEndDate.Text, CheckDate.End)) { return(false); } if (string.Compare(emStartDate.Text, emEndDate.Text) > 0) { MessageDisplay.Error(GlobalInfo.ErrorText, CheckDate.Datedif); return(false); } //TextBox轉DateTime DateTime ldStart = Convert.ToDateTime(emStartDate.Text); DateTime ldEnd = Convert.ToDateTime(emEndDate.Text); //資料來源選取 string lsType; if (rgData.EditValue.Equals("rb_mmk")) { lsType = "_M"; } else { lsType = ""; } /*點選儲存檔案之目錄*/ switch (rgTime.EditValue) { case "rb_market0": lsRtn = "_ 一般"; break; case "rb_market1": lsRtn = "_ 盤後"; break; default: lsRtn = "_ 全部"; break; } //選取儲存路徑 saveFilePath = PbFunc.wf_GetFileSaveName($@"MarketMaker{lsType}_{lsRtn}-{ldStart.ToString("yyyyMMdd")}-{ldEnd.ToString("yyyyMMdd")}.xlsx"); if (string.IsNullOrEmpty(saveFilePath)) { return(false); } /******************* * Messagebox *******************/ stMsgTxt.Visible = true; stMsgTxt.Text = "開始轉檔..."; this.Cursor = Cursors.WaitCursor; this.Refresh(); Thread.Sleep(5); return(true); }
protected override ResultStatus Retrieve() { if (gbReportType.EditValue.Equals("rb_date")) { string lsRtn = PbFunc.f_get_jsw_seq(_ProgramID, "E", 0, emEndDate.DateTimeValue, gbMarket.EditValue.Equals("rb_market_1") ? "1" : "0"); if (lsRtn != "") { DialogResult ChooseResult = MessageDisplay.Choose(emEndDate.Text + " 統計資料未轉入完畢,是否要繼續?" + Environment.NewLine + lsRtn); if (ChooseResult == DialogResult.No) { stMsgTxt.Visible = false; return(ResultStatus.Fail); } } } if (!StartRetrieve()) { return(ResultStatus.Fail); } if (!GetData()) { return(ResultStatus.Fail); } if (gbDetial.EditValue.Equals("rb_gdate")) { decimal TotR = 0, TotM = 0, llR = 0, llM = 0; string lsProdId = "", lsYMD = ""; foreach (DataRow dr in _Data.Rows) { if (lsProdId != dr["AMM0_PROD_ID"].AsString() || lsYMD != dr["AMM0_YMD"].AsString()) { llR = dr["AMM0_MARKET_R_CNT"].AsDecimal(); llM = dr["AMM0_MARKET_M_QNTY"].AsDecimal(); TotR = TotR + llR; TotM = TotM + llM; lsProdId = dr["AMM0_PROD_ID"].AsString(); lsYMD = dr["AMM0_YMD"].AsString(); } else { //當遇到造市者沒有足月時,造成總計不同 //皆以最大值為全市場值 if (llR < dr["AMM0_MARKET_R_CNT"].AsDecimal() || llM < dr["AMM0_MARKET_M_QNTY"].AsDecimal()) { TotR = TotR - llR; TotM = TotM - llM; llR = dr["AMM0_MARKET_R_CNT"].AsDecimal(); llM = dr["AMM0_MARKET_M_QNTY"].AsDecimal(); TotR = TotR + llR; TotM = TotM + llM; } } }//foreach (DataRow dr in dt.Rows) _Data.Rows[0]["TOT_R"] = TotR; _Data.Rows[0]["TOT_M"] = TotM; } documentViewer1.DocumentSource = null; //報表內容選擇分日期 if (gbDetial.EditValue.Equals("rb_gdate")) { _RW50030 = new RW50030(); _RW50030.DataSource = _Data; _RW50030.SetSortType(_D500Xx.SortType); _Report = _RW50030; } else { List <ReportProp> caption = new List <ReportProp> { new ReportProp { DataColumn = "CP_ROW", Caption = "筆數", CellWidth = 45, Expression = new DevExpress.XtraReports.UI.ExpressionBinding[] { new DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[DataSource.CurrentRowIndex]+1") } }, new ReportProp { DataColumn = "AMM0_YMD", Caption = "日期", CellWidth = gbDetial.EditValue.Equals("rb_gnodate")?110:50, DetailRowFontSize = 8.25f }, new ReportProp { DataColumn = "AMM0_BRK_NO", Caption = "期貨商代號", CellWidth = 57 }, new ReportProp { DataColumn = "BRK_ABBR_NAME", Caption = "期貨商名稱", CellWidth = 150, Expression = new DevExpress.XtraReports.UI.ExpressionBinding[] { new DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[BRK_ABBR_NAME]"), new DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Font.Size", "Iif ( len(trim([BRK_ABBR_NAME]) ) >8.25 , 9, 9.75)") } }, new ReportProp { DataColumn = "AMM0_ACC_NO", Caption = "投資人帳號", CellWidth = 53 }, new ReportProp { DataColumn = "AMM0_OM_QNTY", Caption = "一般委託成交量", CellWidth = 65, textAlignment = TextAlignment.MiddleRight, TextFormatString = "{0:#,##0}", HeaderFontSize = 9 }, new ReportProp { DataColumn = "AMM0_QM_QNTY", Caption = "報價成交量", CellWidth = 65, textAlignment = TextAlignment.MiddleRight, TextFormatString = "{0:#,##0}" }, new ReportProp { DataColumn = "AMM0_BTRADE_M_QNTY", Caption = "鉅額交易成交量", CellWidth = 70, textAlignment = TextAlignment.MiddleRight, TextFormatString = "{0:#,##0}", HeaderFontSize = 9 }, new ReportProp { DataColumn = "CP_M_QNTY", Caption = "造市者總成交量", CellWidth = 70, textAlignment = TextAlignment.MiddleRight, TextFormatString = "{0:#,##0}" }, new ReportProp { DataColumn = "CP_RATE_M", Caption = "總成交量市佔率(%)", CellWidth = 55, textAlignment = TextAlignment.MiddleRight, TextFormatString = "{0:##0.0#}", HeaderFontSize = 8f }, new ReportProp { DataColumn = "AMM0_VALID_CNT", Caption = "有效報價筆數", CellWidth = 60, textAlignment = TextAlignment.MiddleRight, TextFormatString = "{0:#,##0}", HeaderFontSize = 8f }, new ReportProp { DataColumn = "AMM0_MARKET_R_CNT", Caption = "全市場詢價筆數", CellWidth = 70, textAlignment = TextAlignment.MiddleRight, TextFormatString = "{0:#,##0}" }, new ReportProp { DataColumn = "AMM0_MARKET_M_QNTY", Caption = "全市場總成交量", CellWidth = 70, textAlignment = TextAlignment.MiddleRight, TextFormatString = "{0:#,##0}" }, new ReportProp { DataColumn = "CP_KEEP_TIME", Caption = "累計維持時間(分)", CellWidth = 65, textAlignment = TextAlignment.MiddleRight } }; //商品名稱會根據列印順序有所不同 ReportProp productName = new ReportProp { DataColumn = "AMM0_PROD_ID", Caption = "商品名稱", CellWidth = 100 }; if (_D500Xx.SortType == "P") { caption.Insert(2, productName);//選擇商品,商品名稱會位於第三欄 } else { caption.Insert(5, productName);//選擇造勢者,商品名稱會位於第六欄 } _Report = new defReport(_Data, caption); } ShowReport(_Report); _ToolBtnPrintAll.Enabled = true; _ToolBtnExport.Enabled = true; return(ResultStatus.Success); }
protected override ResultStatus Export() { dao30070 = new D30070(); #region ue_export_before string lsRtn; lsRtn = PbFunc.f_get_jsw_seq(_ProgramID, "E", 0, txtEDate.DateTimeValue, "0"); if (lsRtn != "") { DialogResult liRtn = MessageDisplay.Choose(txtEDate.Text + " 統計資料未轉入完畢,是否要繼續?" + Environment.NewLine + lsRtn); if (liRtn == DialogResult.No) { lblProcessing.Visible = false; this.Cursor = Cursors.Arrow; return(ResultStatus.Fail); } } #endregion int rowNum; string rptId, lsFile; rptId = "30070"; //複製檔案 lsFile = PbFunc.wf_copy_file(rptId, rptId); if (lsFile == "") { return(ResultStatus.Fail); } logTxt = lsFile; //開啟檔案 Workbook workbook = new Workbook(); workbook.LoadDocument(lsFile); rowNum = 0; #region wf_30070 string rptName, lsYmd; rptName = "期貨各商品成交值"; rptId = "30070"; //切換Sheet Worksheet ws30070 = workbook.Worksheets[0]; //讀取資料 (每日) DataTable dt30070 = dao30070.d_30070(txtSDate.Text.Replace("/", ""), txtEDate.Text.Replace("/", "")); if (dt30070.Rows.Count == 0) { //nothing happens } lsYmd = ""; foreach (DataRow dr in dt30070.Rows) { rowNum += 1; ws30070.Cells[rowNum, 0].Value = dr["AA2_YMD"].AsString(); ws30070.Cells[rowNum, 1].Value = dr["AA2_PARAM_KEY"].AsString(); ws30070.Cells[rowNum, 2].SetValue(dr["AA2_AMT"]); } #endregion rowNum = 0; #region wf_30071 rptName = "期貨各商品成交值(現貨價格計算)"; rptId = "30070_stk"; //切換Sheet Worksheet ws30070stk = workbook.Worksheets[1]; //讀取資料 (每日) DataTable dt30070stk = dao30070.d_30070_stk(txtSDate.Text.Replace("/", ""), txtEDate.Text.Replace("/", "")); if (dt30070stk.Rows.Count == 0) { //nothing happens } lsYmd = ""; foreach (DataRow dr in dt30070stk.Rows) { rowNum += 1; ws30070stk.Cells[rowNum, 0].Value = dr["AA2_YMD"].AsString(); ws30070stk.Cells[rowNum, 1].Value = dr["AA2_PARAM_KEY"].AsString(); ws30070stk.Cells[rowNum, 2].SetValue(dr["AA2_AMT"]); } #endregion //存檔 //ws30070.ScrollToRow(0); workbook.SaveDocument(lsFile); return(ResultStatus.Success); }
protected override ResultStatus Export() { try { //ready panFilter.Enabled = false; labMsg.Visible = true; labMsg.Text = "開始轉檔..."; this.Cursor = Cursors.WaitCursor; this.Refresh(); Thread.Sleep(5); string rptId, file, rptName = "", cpYmd = txtSDate.DateTimeValue.ToString("yyyyMMdd"); #region ue_export_before //判斷盤別 int rtnInt, seq; string rtnStr, grp; if (ddlType.Text == "16:15收盤") { grp = "1"; DialogResult result = MessageDisplay.Choose("盤別為「16:15收盤」,請問是否繼續轉出報表?", MessageBoxDefaultButton.Button2, GlobalInfo.QuestionText); if (result == DialogResult.No) { ShowMsg("已取消轉檔..."); return(ResultStatus.Fail); } } else { grp = "2"; } //判斷統計資料轉檔已完成 for (int f = 1; f <= 2; f++) { if (grp == "1") { if (f == 1) { seq = 13; } else { seq = 23; } } else { seq = 17; f = 2; } //check JSW rtnStr = PbFunc.f_get_jsw_seq(_ProgramID, "E", seq, txtSDate.DateTimeValue, "0"); if (rtnStr != "") { DialogResult result = MessageDisplay.Choose(" 統計資料未轉入完畢,是否要繼續?", MessageBoxDefaultButton.Button2, GlobalInfo.QuestionText); if (result == DialogResult.No) { return(ResultStatus.Fail); } } } //判斷20110作業已完成 rtnInt = dao30010.check20110(txtSDate.Text); if (rtnInt == 0) { DialogResult result = MessageDisplay.Choose("無 " + txtSDate.Text + " 現貨資料 (資料來自20110作業)," + Environment.NewLine + "請問是否繼續轉出報表?", MessageBoxDefaultButton.Button2, GlobalInfo.QuestionText); if (result == DialogResult.No) { ShowMsg("已取消轉檔..."); return(ResultStatus.Fail); } } #endregion rptId = "30010_"; //複製檔案 file = wfCopy30010(rptId + grp, grp); if (file == "") { return(ResultStatus.Fail); } //開啟檔案 Workbook workbook = new Workbook(); workbook.LoadDocument(file); flag = 0; //切換Sheet Worksheet ws30011 = workbook.Worksheets["30011"]; /* Sheet:30011 */ wf_30012(rptId, rptName, ws30011); wf_30011(rptId, rptName, ws30011); /* Sheet:30013 */ //切換Sheet Worksheet ws30013 = workbook.Worksheets["30013"]; DataTable dtRowCount = dao30010.getRowIndexandCount(); if (dtRowCount.Rows.Count == 0) { MessageDisplay.Error("無法取得30013總列數"); return(ResultStatus.Fail); } int totalRowcount = dtRowCount.Rows[0]["LI_TOT_ROWCOUNT"].AsInt(); //上市股票 int rowIndex = dtRowCount.Rows[0]["II_OLE_ROW"].AsInt() - 1; if (rowIndex > 0) { rowIndex = wf_30013("STF", "F", totalRowcount, "1", rowIndex, ws30013); } //上櫃股票 rowIndex = rowIndex + 2; if (rowIndex > 0) { rowIndex = wf_30013("STF", "F", totalRowcount, "2", rowIndex, ws30013); } //ETF股票 rowIndex = rowIndex + 2; if (rowIndex > 0) { rowIndex = wf_30013("ETF", "F", totalRowcount, "%", rowIndex, ws30013); } //上市選擇權 rowIndex = rowIndex + 2; if (rowIndex > 0) { rowIndex = wf_30013("STC", "O", totalRowcount, "1", rowIndex, ws30013); } //上櫃選擇權 rowIndex = rowIndex + 2; if (rowIndex > 0) { rowIndex = wf_30013("STC", "O", totalRowcount, "2", rowIndex, ws30013); } //ETF選擇權 rowIndex = rowIndex + 2; if (rowIndex > 0) { rowIndex = wf_30013("ETC", "O", totalRowcount, "%", rowIndex, ws30013); } /* Sheet:30014 */ Worksheet ws30014 = workbook.Worksheets["30014"]; wf_30014(ws30014); wf_30015(ws30014); //Eurex wf_30016(ws30014); if (flag <= 0) { File.Delete(file); return(ResultStatus.Fail); } //存檔 ws30014.ScrollToRow(0); ws30013.ScrollToRow(0); ws30011.ScrollToRow(0); workbook.SaveDocument(file); ShowMsg("轉檔完成"); return(ResultStatus.Success); } catch (Exception ex) { MessageDisplay.Error("輸出錯誤"); WriteLog(ex); } finally { panFilter.Enabled = true; labMsg.Text = ""; labMsg.Visible = false; this.Cursor = Cursors.Arrow; } return(ResultStatus.Fail); }
protected override ResultStatus Export() { try { this.Cursor = Cursors.WaitCursor; this.Refresh(); Thread.Sleep(5); lblProcessing.Visible = true; ShowMsg("開始轉檔..."); string rptId, file, rptName = ""; date = txtSDate.DateTimeValue.Year + "年" + txtSDate.DateTimeValue.Month + "月" + txtSDate.DateTimeValue.Day + "日"; #region ue_export_before //判斷盤別 int rtnInt, seq; string rtnStr, grp; if (ddlType.Text == "16:15收盤") { grp = "1"; } else { grp = "2"; } //判斷統計資料轉檔已完成 for (int f = 1; f <= 2; f++) { if (grp == "1") { if (f == 1) { seq = 13; } else { seq = 23; } } else { seq = 17; f = 2; } //check JSW rtnStr = PbFunc.f_get_jsw_seq(_ProgramID, "E", seq, txtSDate.DateTimeValue, "0"); if (rtnStr != "") { DialogResult result = MessageDisplay.Choose(txtSDate.Text + "統計資料未轉入完畢,請確認監視批次「AIG5402」執行完成,再按「是」繼續,若選「否」則會跳過作業不執行。", MessageBoxDefaultButton.Button2, GlobalInfo.QuestionText); if (result == DialogResult.No) { lblProcessing.Visible = false; return(ResultStatus.Fail); } } } #endregion rptId = "30053"; //複製檔案 file = wfCopy30053(rptId, grp); if (file == "") { return(ResultStatus.Fail); } //開啟檔案 Workbook workbook = new Workbook(); workbook.LoadDocument(file); //切換Sheet Worksheet ws = workbook.Worksheets["期貨"]; #region 11張報表 int rowIndex = 1; //1.期貨 if (!wf30053f(grp, rowIndex, ws)) { return(showEmailMsg(cbxNews.Checked)); } //2.選擇權 rowIndex = rowIndex + 3; ws = workbook.Worksheets["選擇權"]; if (!wf30053o(rowIndex, ws)) { return(showEmailMsg(cbxNews.Checked)); } //3.股票選擇權 rowIndex = rowIndex + 3; ws = workbook.Worksheets["股票選擇權"]; if (!wf30053stc(rowIndex, ws)) { return(showEmailMsg(cbxNews.Checked)); } //4.股票期貨(For工商時報) //5.股票期貨(For工商時報)50 rowIndex = rowIndex + 3; ws = workbook.Worksheets["股票期貨(For工商時報)"]; if (!wf30053stfNear(ws)) { return(showEmailMsg(cbxNews.Checked)); } ws = workbook.Worksheets["股票期貨(For工商時報) 50大"]; if (!wfCtee50(ws)) { return(showEmailMsg(cbxNews.Checked)); } //6.股票期貨Top10檔(For聯合晚報) ws = workbook.Worksheets["股票期貨Top10檔(For經濟日報)"]; if (!wf30053stfTop10(ws)) { return(showEmailMsg(cbxNews.Checked)); } //7.ETF期貨Top10檔 ws = workbook.Worksheets["ETF期貨Top10檔"]; if (!wf30053etfTop10(ws)) { return(showEmailMsg(cbxNews.Checked)); } //8.股票選擇權TOP10檔(For聯合晚報) ws = workbook.Worksheets["股票選擇權TOP10檔(For聯合晚報)"]; if (!wf30053stcTop10(ws)) { return(showEmailMsg(cbxNews.Checked)); } //9.ETF選擇權前20大行情表 ws = workbook.Worksheets["ETF選擇權TOP20檔"]; if (!wf30053etcTop20(ws)) { return(showEmailMsg(cbxNews.Checked)); } //10.美元兌人民幣選擇權前20大行情表 ws = workbook.Worksheets["美元兌人民幣選擇權(RHO)TOP20檔"]; if (!wf30053rhoTop20(ws)) { return(showEmailMsg(cbxNews.Checked)); } //11.小型美元兌人民幣選擇權前20大行情表 ws = workbook.Worksheets["小型美元兌人民幣選擇權(RTO)TOP20檔"]; if (!wf30053rtoTop20(ws)) { return(showEmailMsg(cbxNews.Checked)); } #endregion //存檔 workbook.SaveDocument(file); ShowMsg("轉檔完成"); //email rptId = "30053_" + grp; if (cbxNews.Checked) { DataTable dtTxemail = new TXEMAIL().ListData(rptId, 1); if (dtTxemail.Rows.Count != 0) { string TXEMAIL_SENDER = dtTxemail.Rows[0]["TXEMAIL_SENDER"].AsString(); string TXEMAIL_RECIPIENTS = dtTxemail.Rows[0]["TXEMAIL_RECIPIENTS"].AsString(); string TXEMAIL_CC = dtTxemail.Rows[0]["TXEMAIL_CC"].AsString(); string TXEMAIL_TITLE = dtTxemail.Rows[0]["TXEMAIL_TITLE"].AsString(); string TXEMAIL_TEXT = dtTxemail.Rows[0]["TXEMAIL_TEXT"].AsString(); TXEMAIL_TITLE = txtSDate.DateTimeValue.ToString("yyyyMMdd") + TXEMAIL_TITLE; MailHelper.SendEmail(TXEMAIL_SENDER, TXEMAIL_RECIPIENTS, TXEMAIL_CC, TXEMAIL_TITLE, TXEMAIL_TEXT, file); } } } catch (Exception ex) { MessageDisplay.Error("輸出錯誤"); throw ex; } finally { this.Cursor = Cursors.Arrow; this.Refresh(); Thread.Sleep(5); } return(ResultStatus.Success); }
protected override ResultData ExecuteForm(PokeBall args) { DateTime ocfDate = txtOcfDate.DateTimeValue; ResultData resultData = new ResultData(); int oswGrp = 5; switch (args.TXF_TID) { case "w_30053": int seq; //判斷統計資料轉檔已完成 for (int f = 1; f <= 2; f++) { if (f == 1) { seq = 13; } else { seq = 23; } string rtnStr = PbFunc.f_get_jsw_seq("30053", "E", seq, ocfDate, "0"); if (rtnStr != "") { resultData.returnString = $"{txtOcfDate.Text}統計資料未轉入完畢,請確認監視批次「AIG5402」執行完成。"; resultData.Status = ResultStatus.Fail; return(resultData); } } break; case "w_30055": //檢查期貨三大法人資料已轉入 if (dao30055.GetBTINOIVL3FCount(ocfDate) == 0) { resultData.returnString = "「期貨三大法人」資料還未轉入\n★★★請確認「監視 AI402 」作業已完成"; resultData.Status = ResultStatus.Fail; return(resultData); } //檢查選擇權三大法人資料已轉入 if (dao30055.GetBTINOIVL4Count(ocfDate) == 0) { resultData.returnString = "「選擇權三大法人」資料還未轉入\n★★★請確認「監視 AI402 」作業已完成"; resultData.Status = ResultStatus.Fail; return(resultData); } //檢查大額交易人資料已轉入 if (dao30055.GetTOI1Count(ocfDate) == 0) { resultData.returnString = "「大額交易人」資料還未轉入!\n★★★請確認「10052-監視轉檔」 作業已完成"; resultData.Status = ResultStatus.Fail; return(resultData); } //期貨行情 if (dao30055.GetAMIFCount(ocfDate, "F", oswGrp) == 0) { resultData.returnString = $"期貨Group:{oswGrp}行情資料(ci.AMIF)還未轉入!\n★★★請確認「10013-期貨轉檔-sp_F_gen_H_AMIF」 作業已完成"; resultData.Status = ResultStatus.Fail; return(resultData); } //選擇權行情 if (dao30055.GetAMIFCount(ocfDate, "O", oswGrp) == 0) { resultData.returnString = $"選擇權Group:{oswGrp}行情資料(ci.AMIF)還未轉入!\n★★★請確認「10023-期貨轉檔-sp_O_gen_H_AMIF」 作業已完成"; resultData.Status = ResultStatus.Fail; return(resultData); } //期貨未平倉量 if (dao30055.GetAI2Count(ocfDate, "F", oswGrp) == 0) { resultData.returnString = $"期貨Group:{oswGrp}行情統計檔(ci.AI2)還未轉入!\n★★★請確認「10013-期貨轉檔-sp_F_stt_H_AI2_day」 作業已完成"; resultData.Status = ResultStatus.Fail; return(resultData); } //選擇權未平倉量 if (dao30055.GetAI2Count(ocfDate, "O", oswGrp) == 0) { resultData.returnString = $"選擇權Group:{oswGrp} 行情統計檔(ci.AI2)還未轉入!\n★★★請確認「10023-選擇權轉檔-sp_F_stt_H_AI2_day」 作業已完成"; resultData.Status = ResultStatus.Fail; return(resultData); } break; } resultData = base.ExecuteForm(args); return(resultData); }