/// <summary> /// wf_30508() 產出兩個Csv檔案 /// </summary> /// <returns></returns> public string Wf30508() { try { string lsRptName = "股票期貨最近月份契約最佳1檔加權平均委託買進數量週資料統計表"; string lsRptId = "30508"; DateTime startDate = _startDateText.AsDateTime(); DateTime endDate = _endDateText.AsDateTime(); //讀取資料 DataTable AI2dt = PbFunc.f_week(startDate.ToString("yyyyMMdd"), endDate.ToString("yyyyMMdd")); if (AI2dt.Rows.Count <= 0) { return($"{startDate.ToShortDateString()}~{endDate.ToShortDateString()},30508-年月,無任何資料!"); } DataTable dt = new D30508().GetData(startDate, endDate); if (dt.Rows.Count <= 0) { return($"{startDate.ToShortDateString()}~{endDate.ToShortDateString()},{lsRptId}-{lsRptName}無任何資料!"); } //產生30508(買)檔案 CreateCsvFile(_lsFile); string lsSellFile = _lsFile.Replace("30508(買)", "30508(賣)"); //產生30508(賣)檔案 CreateCsvFile(lsSellFile); /*統計表*/ string lsTab = ","; //表頭 string lsStr = lsTab + lsRptId + lsRptName; WriteFile(_lsFile, lsStr);//30508(買) lsStr = lsTab + lsRptId + "股票期貨最近月份契約最佳1檔加權平均委託賣出數量週資料統計表"; WriteFile(lsSellFile, lsStr);//30508(賣) lsStr = "排序" + lsTab + "商品代碼" + lsTab + "商品名稱"; foreach (DataRow row in AI2dt.Rows) { lsStr = lsStr + lsTab + $"{row["startDate"].AsDateTime().ToString("yyyy/MM/dd")}~{row["endDate"].AsDateTime().ToString("yyyy/MM/dd")}"; } //30508(買) WriteFile(_lsFile, lsStr); //FileWrite(li_FileNum, ls_str) //30508(賣) WriteFile(lsSellFile, lsStr); //FileWrite(li_FileNum2, ls_str) lsStr = string.Empty; int seqNO = 0; for (int k = 0; k < dt.Rows.Count; k++) { seqNO = seqNO + 1; string lskindID = dt.Rows[k]["BST1_KIND_ID"].AsString(); lsStr = seqNO.AsString() + lsTab + lskindID + lsTab + dt.Rows[k]["PDK_NAME"].AsString(); string lsSellStr = lsStr; foreach (DataRow AI2row in AI2dt.Rows) { DataTable newdt = dt.Filter($"BST1_KIND_ID = '{lskindID}' and BST1_YMD >= '{AI2row["startDate"].AsDateTime().ToString("yyyyMMdd")}' and BST1_YMD <= '{AI2row["endDate"].AsDateTime().ToString("yyyyMMdd")}'"); if (newdt.Rows.Count > 0) { //30508(買) lsStr = WriteBuyData(lsTab, lsStr, newdt); //30508(賣) lsSellStr = WriteSellData(lsTab, lsSellStr, newdt); k = k + newdt.AsEnumerable().Select(q => q.Field <string>("BST1_KIND_ID")).Count(); } else { //30508(買) lsStr = lsStr + lsTab + "0"; //30508(賣) lsSellStr = lsSellStr + lsTab + "0"; } }//foreach (DataRow AI2row in AI2dt.Rows) k = k - 1; //30508(買) WriteFile(_lsFile, lsStr); //FileWrite(li_FileNum, ls_str) //30508(賣) WriteFile(lsSellFile, lsSellStr); //FileWrite(li_FileNum2, ls_str2) }//for (int k = 0; k < dt.Rows.Count; k++) } catch (Exception ex) { throw ex; } return(MessageDisplay.MSG_OK); }
/// <summary> /// wf_30505() /// </summary> /// <returns></returns> public string Wf30505() { try { string lsRptName = "股票期貨最近月份契約買賣價差週資料統計表(單位:tick)"; string lsRptId = "30505"; DateTime startDate = _startDateText.AsDateTime(); DateTime endDate = _endDateText.AsDateTime(); //讀取資料 DataTable AI2dt = PbFunc.f_week(startDate.ToString("yyyyMMdd"), endDate.ToString("yyyyMMdd")); if (AI2dt.Rows.Count <= 0) { return($"{startDate.ToString("yyyyMMdd")}~{endDate.ToString("yyyyMMdd")},30505-年月,無任何資料!"); } DataTable dt = new D30505().GetData(startDate, endDate); if (dt.Rows.Count <= 0) { return($"{startDate.ToString("yyyyMMdd")}~{endDate.ToString("yyyyMMdd")},{lsRptId}-{lsRptName}無任何資料!"); } //產生檔案 CreateCsvFile(_lsFile); /*統計表*/ DataTable workTable = new DataTable(); //表頭 //lsStr = "排序" + lsTab + "商品代碼" + lsTab + "商品名稱"; workTable.Columns.Add("排序", typeof(string)); workTable.Columns.Add("商品代碼", typeof(string)); workTable.Columns.Add("商品名稱", typeof(string)); foreach (DataRow row in AI2dt.Rows) { string dateColStr = $"{row["startDate"].AsDateTime().ToString("yyyy/MM/dd")}~{row["endDate"].AsDateTime().ToString("yyyy/MM/dd")}"; workTable.Columns.Add(dateColStr, typeof(string)); } //內容 int seqNO = 0; for (int k = 0; k < dt.Rows.Count; k++) { seqNO = seqNO + 1; string lskindID = dt.Rows[k]["SPRD1_KIND_ID"].AsString(); DataRow workRow = workTable.NewRow(); workRow["排序"] = seqNO.AsString(); workRow["商品代碼"] = lskindID; workRow["商品名稱"] = dt.Rows[k]["PDK_NAME"].AsString(); int indexCount = 3; foreach (DataRow AI2row in AI2dt.Rows) { DataTable newdt = dt.Filter($"SPRD1_KIND_ID = '{lskindID}' and SPRD1_YMD >= '{AI2row["startDate"].AsDateTime().ToString("yyyyMMdd")}' and SPRD1_YMD <= '{AI2row["endDate"].AsDateTime().ToString("yyyyMMdd")}'"); int newdtCount = newdt.Rows.Count; if (newdtCount > 0) { decimal diffSUM = newdt.Compute("Sum(diff)", "").AsDecimal(); //.AsEnumerable().Select(q => q.Field<decimal>("diff")).Sum(); workRow[indexCount++] = Math.Round(diffSUM / newdtCount, 2, MidpointRounding.AwayFromZero); k = k + newdt.AsEnumerable().Select(q => q.Field <string>("SPRD1_KIND_ID")).Count(); } else { workRow[indexCount++] = "0"; } }//foreach (DataRow AI2row in AI2dt.Rows) k = k - 1; workTable.Rows.Add(workRow); }//for (int k=0; k<dt.Rows.Count;k++) //轉出Csv SaveExcel(workTable); } catch (Exception ex) { #if DEBUG throw new Exception($"wf_30505:" + ex.Message); #else throw ex; #endif } return(MessageDisplay.MSG_OK); }