顯示具有 呼叫Master函式 標籤的文章。 顯示所有文章
顯示具有 呼叫Master函式 標籤的文章。 顯示所有文章

2023年3月10日 星期五

V80204A: - 匯出時,不分頁,資料全取 ,[工作中心報工匯出]鈕 – c# 子視窗呼叫 Master的函式(*.cs)

 目的: V80204: [工作中心報工匯出] – c# 子視窗呼叫 Master的函式(*.cs)

處理說明: 1>*.cs 
          //匯出時, 不分頁(par_paging=false), 資料全取 
            V80204APIController V80204 = new V80204APIController();
            DataSet ds = V80204.getGridData_M(false);



1>*.cs
 [HttpPost]
        public void WC_ALS_OutFile()
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;

            //匯出時, 不分頁(par_paging=false), 資料全取 
            V80204APIController V80204 = new V80204APIController();
            DataSet ds = V80204.getGridData_M(false);
            //DataSet ds = null;

            string Tmp_FName = nvc["FName"];   //含 *.xls
            string Tmp_sub1_WC = nvc["sub1_WC"];
            //string fName = Tmp_FNAME + ".xlsx";
            string fName = Tmp_FName;
            Workbook wk = null;
            MemoryStream stream = new MemoryStream();
            string Tmp_Str = "";
            string Tmp_Sql = "";
            int Tmp_Cnt = 0;
            try
            {
                wk = new Workbook();
                Worksheet sheet1 = wk.Worksheets[0];//獲取第一個工作表
                //共 9 欄
                //AMM單號 工號  件號 件號名稱    製程 製程資料內容  WBS 工單類型    數量 單位  EOECN 專案  機號 起始值 情況處理碼 工單報工統計(小時)  工作中心 工作中心報工統計(小時)    版本
                string[] outFieldArray = { "項次","AMM單號","工號", "件號", "件號名稱", "製程",
                                                             "製程資料內容", " WBS", "工單類型", "數量", "單位",
                                                             "EOECN", "專案","機號","起始值","情況處理碼",
                                          "工單報工統計(小時)","工作中心","工作中心報工統計(小時)"," 版本" };
                for (int i = 0; i < outFieldArray.Length; i++)
                {
                    sheet1.Range[myfunc.GetExcelPos(i, 0)].Text = outFieldArray[i];
                }
                DataTable dt = ds.Tables[1];
                Tmp_Cnt = dt.Rows.Count;
                //Tmp_Str = "已匯出完成!!  ("+Tmp_Cnt.ToString() +"筆) ";
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    sheet1.Range[myfunc.GetExcelPos(0, i + 1)].Text = String.Format("{0:d}", i + 1);
                    //sheet1.Range[myfunc.GetExcelPos(1, i + 1)].Text = String.Format("{0:yyyy/MM/dd}", DateTime.Parse(dt.Rows[i]["DT"].ToString())); };
                    // "AMM單號","工號", "件號", "件號名稱", "製程",
                    sheet1.Range[myfunc.GetExcelPos(1, i + 1)].Text = dt.Rows[i]["AMMNO"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(2, i + 1)].Text = dt.Rows[i]["SAPNO"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(3, i + 1)].Text = dt.Rows[i]["PN"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(4, i + 1)].Text = dt.Rows[i]["PNNAME"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(5, i + 1)].Text = dt.Rows[i]["MKNO"].ToString();
                    //"製程資料內容", " WBS", "工單類型", "數量", "單位",
                    sheet1.Range[myfunc.GetExcelPos(6, i + 1)].Text = dt.Rows[i]["MKDESCPT"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(7, i + 1)].Text = dt.Rows[i]["WBS"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(8, i + 1)].Text = dt.Rows[i]["SROTP"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(9, i + 1)].Text = dt.Rows[i]["QTY"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(10, i + 1)].Text = dt.Rows[i]["UNIT"].ToString();
                    //"EOECN", "專案","機號","起始值","情況處理碼",
                    sheet1.Range[myfunc.GetExcelPos(11, i + 1)].Text = dt.Rows[i]["ECNO"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(12, i + 1)].Text = dt.Rows[i]["PROJID"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(13, i + 1)].Text = dt.Rows[i]["ACNO_"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(14, i + 1)].Text = dt.Rows[i]["STARTVAL"].ToString();
                    sheet1.Range[myfunc.GetExcelPos(15, i + 1)].Text = dt.Rows[i]["CNDPROCCODE"].ToString();
                    // "工單報工統計(小時)","工作中心","工作中心報工統計(小時)"," 版本" 
                    sheet1.Range[myfunc.GetExcelPos(16, i + 1)].Text = dt.Rows[i]["ALS_HR_"].ToString();
                    //sheet1.Range[myfunc.GetExcelPos(17, i + 1)].Text = dt.Rows[i]["CURR_ARBPL_"].ToString(); //目前工作中心
                    sheet1.Range[myfunc.GetExcelPos(17, i + 1)].Text = Tmp_sub1_WC; //子視窗.工作中心                    
                    //工作中心報工統計(小時)
                    Tmp_Sql = "  SELECT round((sum(HOUR_WORK)+sum(HOUR_OT))/60,2)  WCHR  "
                                     + "  FROM   "
                                     + "  (  "
                                     + "    SELECT  JCN, ACT, WC, HOUR_WORK, work_ID, HOUR_OT FROM  HOUR.ALS_HOUR_COMP@ALS_HOUR WHERE WC = " + myfunc.AA(Tmp_sub1_WC) + "   AND JCN = '0000' || " + myfunc.AA(dt.Rows[i]["SAPNO"].ToString())
                                     + "    union all   "
                                    + "     SELECT  JCN, ACT, WC, HOUR_WORK, work_ID, HOUR_OT FROM HOUR.ALS_HOUR_COMP_HISTORY@ALS_HOUR WHERE WC = " + myfunc.AA(Tmp_sub1_WC) + "   AND JCN = '0000' || " + myfunc.AA(dt.Rows[i]["SAPNO"].ToString())
                                    + "   )   "
                                    + "  GROUP BY JCN,WC   ";
                    Tmp_Str = myfunc.SqlValue(Tmp_Sql);
                    sheet1.Range[myfunc.GetExcelPos(18, i + 1)].Text = Tmp_Str; //工作中心報工統計(小時)                   
                    //版本
                    Tmp_Sql = "  SELECT  ED   "
                                   + "   FROM    AMM_EDLST  "
                                   + "   WHERE (AMMNO, ITM) in (select AMMNO, max(to_number(ITM)) from AMM_EDLST group by AMMNO )  "
                                   + "   AND AMMNO = " + myfunc.AA(dt.Rows[i]["AMMNO"].ToString());
                    Tmp_Str = myfunc.SqlValue(Tmp_Sql);
                    sheet1.Range[myfunc.GetExcelPos(19, i + 1)].Text = Tmp_Str; //版本


                    // end of for 
                }  // end of   for (int i = 0; i < dt.Rows.Count; i++)
                sheet1.AllocatedRange.AutoFitColumns();
                wk.SaveToStream(stream, FileFormat.Version2007);
            } //end of try
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            finally
            {
                wk.Dispose();
            }

            //Tmp_Cnt = 6;
            Tmp_Str = "已匯出完成!!  (" + Tmp_Cnt.ToString() + "筆) <br>"
                            + "檔案名稱(" + Tmp_FName + ")";
            HttpCookie MyCookie = new HttpCookie("EX_DFile", HttpUtility.UrlEncode(Tmp_Str));
            HttpContext.Current.Response.Cookies.Add(MyCookie);
            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode(fName, System.Text.Encoding.UTF8) + "\"");
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
            HttpContext.Current.Response.BinaryWrite(stream.ToArray());
            HttpContext.Current.Response.End();
        }    // end of ExportdFile


2>*.js
//工作中心報工匯出
function WC_ALS_OutFile() {
    var np = s_JSON('s_form'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞
    np["FName"] = "V80204_工作中心報表匯出.xlsx";
    np["sub1_WC"] = Ext.getCmp("sub1_WC").getValue();
    console.log("np:", np);
    console.log("FName: ", np.FName);
    f_downloadFile('EX_DFile', '../api/V80204AAPI/WC_ALS_OutFile', np, 'POST', function () {
        var r = r_cookies('EX_DFile');
        mysuccessalert(r);
    });
};