/// <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);
        }
Beispiel #2
0
        /// <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);
        }