顯示具有 T1C 標籤的文章。 顯示所有文章
顯示具有 T1C 標籤的文章。 顯示所有文章

2023年8月22日 星期二

V120401A -myfunc.getDataTable1() -T1C - 自訂 SQL 取得 Grid資料 - 不含RNK , 自行處理分頁

 目的: V120401A -myfunc.getDataTable1() - 自訂 SQL 取得 Grid資料 - 不含RNK , 自行處理分頁 

處理說明: 1> 自訂 SQL 取得 Grid資料, 不含 RNK  , 不用 count_Sql                       
                        --> 呼叫  ds = myfunc.getDataTable1(par_Sql,par_page);
                  2> 順序依自訂 SQL 的  order  by xxxx; 排序 
                  3>新增 DataTable("T1C")  的 [TOTAL]欄位值=目前筆數
                      DataSet ds = new DataSet();
                      DataTable T1C = new DataTable();
                      T1C.TableName = "T1C";
                      DataRow row = T1C.NewRow();
                      T1C.Columns.Add(new DataColumn("TOTAL", typeof(Int32)));
                       row["TOTAL"] = dt.Rows.Count;
                      T1C.Rows.Add(row);
                      ds.Tables.Add(T1C);
                  4>取得 dt 的目前頁次資料 傳回 ds.T1
                      OracleDataAdapter da = new OracleDataAdapter();
                      da.SelectCommand = cmd;
                      //取 cmd 結果的 page資料,存入 ds.Tables["T1"]
                      da.Fill(ds, start, limit, "T1");   


1>myfunc.cs - get_DataTable1(string par_Sql, bool  par_page)
        //函式名稱: getDataTable1
           傳入參數  :  par_Sql  :  目前 SQL
                                par_page: true/false  : 分頁,不分頁 , 預設值: true 
          傳回值 : ds   - 已分頁的資料 , 依 page,start,limit 分頁
        */
        public static dynamic getDataTable1(string par_Sql, bool par_page=true)
        {            
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            DataSet ds = new DataSet();
            OracleConnection conn = new OracleConnection(DBService.ConnectionString("AMMEU"));
            try
            {            
            int page = 1;
            int start = 1;
            int limit = 30;

            if (nvc.Count > 0 && nvc["page"] != null)
            {
                page = int.Parse(nvc["page"]);
                start = int.Parse(nvc["start"]);
                limit = int.Parse(nvc["limit"]);                
            }

            //產生 par_SQL  的 DataTable , 全部資料全取
            OracleCommand cmd = new OracleCommand();
            cmd.Connection = conn;
            cmd.CommandText = par_Sql;                
            conn.Open();
            DataTable dt = new DataTable();
            dt.Load(cmd.ExecuteReader());

            //加入 T1C 
            DataTable T1C = new DataTable();
            T1C.TableName = "T1C";
            DataRow row = T1C.NewRow();
            T1C.Columns.Add(new DataColumn("TOTAL", typeof(Int32)));
            row["TOTAL"] = dt.Rows.Count;
            T1C.Rows.Add(row);
            ds.Tables.Add(T1C);

            //加入 T1  -將 par_Sql 的 分頁資料填入 ds.T1 
            OracleDataAdapter da = new OracleDataAdapter();
            da.SelectCommand = cmd;
            if (par_page)
               da.Fill(ds, start, limit, "T1");
            else
               da.Fill(ds, "T1");
             return ds;
            }  // end try 
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {                
            }         
            return ds;
        }

2>*.js
 {
                                    xtype: 'button',
                                    id: 'btn_sub_Show',
                                    flex: 2,
                                    border: 1,
                                    text: '資料顯示',  //sub_btn_Add
                                    iconCls: 'icon-search',                                    
                                    handler: function () {
                                        //清空 - 勾選註記
                                        CHK_PK_OBJ1.PK_LIST = [];
                                        CHK_PK_OBJ1.ALL_LIST = [];
                                        //--> 需改為將 TMNO 的[AMM_TMDWG]資料加入 store 
                                        var np = {};
                                        np["sub_DOC_NUM"] = Ext.getCmp("sub_DOC_NUM").getValue();                                        
                                        np["sub_STAT"] = Ext.getCmp("sub_STAT").getValue();
                                        var is_Ok = true;
                                                                                
                                        var Tmp_store = Ext.getCmp('sub_Grid').store;
                                        console.log("0 Tmp_store: ", Tmp_store);
                                        Tmp_store.getProxy().url = '../../api/V120401AAPI/get_sub_Data1';
                                        Tmp_store.getProxy().extraParams = np; //分頁OK,篩選條件OK                  
                                        Tmp_store.pageSize = 30;
                                        Tmp_store.load();
                                        console.log("1 Tmp_store: ", Tmp_store);
                                    } // end of handler of sub_btn_Add
                                },// end of  button  sub_btn_Show  , 資料顯示

2023年7月31日 星期一

V40A – [過濾資料]鈕 – 不分頁, 顯示在同一頁 -T1C– 取得 SQL全部資料後, 過濾資料, 再顯示在同一頁 - 重設總筆數

目的: V40A – [過濾資料]顯示在同一頁 取得 SQL全部資料後, 過濾資料, 再顯示在同一頁

處理說明: 1> getGridData_M 取全部資料 , 不分頁(par_paging=false)
                 2> 取得 CaluField  - SAP單況(I0001/I0002/..)         
                 3> 過濾  SAP單況 , 符合條件的保留, 不符合的 dr.delete()
                 4> 傳回符合條件的 ds , 必需修改 ["T1C"]  欄位值(總筆數)
                      ds.Tables["T1C"].Rows[0]["TOTAL"] = ds.Tables["T1"].Rows.Count;
                  5> 不分頁, 全部顯示在同一頁,設定每頁筆數=9999(store.pageSize)
                        Ext.getCmp('grid_Single').store.pageSize = 9999;   
              6>[過濾SAP單況]鈕, 必需將過濾欄位值記錄為[過濾條件欄位(s_Filter_Str)]-隱藏欄位,
                     以便顯示時,依該過濾條件過濾
                     --> [資料顯示]時,再清除該欄位值(s_Filter_Str)    


    1>*.js
//[過濾 SAP單況]鈕
 {
            xtype: 'button', text: '確定', id: 'OkBtn_V40AB',
            listeners: {
                click: function (me, e, eOpts) {
                    //1>更新資料庫資料(AMM_COMPQTY)
                    var Tmp_Str = "";
                    if (!(Ext.getCmp("s_SAPSTAT1").getValue()) && !(Ext.getCmp("s_SAPSTAT2").getValue()) && !(Ext.getCmp("s_SAPSTAT3").getValue())) {
                        Tmp_Str = "SAP單況不可均不勾選<br>"
                            + " 敬請檢核 !!";
                        mywarnalert(Tmp_Str);
                        return;
                    }
                    var Tmp_Filter_Str = "";
                    if (Ext.getCmp("s_SAPSTAT1").getValue()) {
                        Tmp_Filter_Str = Tmp_Filter_Str + "I0001" + ",";
                    }
                    if (Ext.getCmp("s_SAPSTAT2").getValue()) {
                        Tmp_Filter_Str = Tmp_Filter_Str + "E0014" + "," + "E0015" + ",";
                    }
                    if (Ext.getCmp("s_SAPSTAT3").getValue()) {
                        Tmp_Filter_Str = Tmp_Filter_Str + "I0002" + ",";
                    }
                    if (checkisnull(Tmp_Filter_Str)) {
                        Tmp_Filter_Str = Tmp_Filter_Str.substr(0, Tmp_Filter_Str.length - 1);
                    }
                    // 重新顯示 - 全部顯示在同一頁
                    var np = s_JSON('s_form'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞      
                    np["s_isSAPSTAT"] = Ext.getCmp('s_isSAPSTAT').getValue();
                    np["s_TYPEAF"] = Ext.getCmp('s_TYPEAF').getValue();
                    np["s_Filter_Str"] = Tmp_Filter_Str;
                    //console.log('1 gridstore: ', gridstore);
                    var gridstore = Ext.getCmp('grid_Single').store;                            
                    gridstore.getProxy().url = '../api/V40AAPI/getGridData_M?par_paging=false';
                    gridstore.getProxy().extraParams = np; //分頁OK,篩選條件OK                            
                    Ext.getCmp('grid_Single').store.pageSize = 9999;                        
                    Ext.getCmp('grid_Single').reloadGridData();      
                    this.up("window").close();
                    this.up("window").destroy();
                }
            },
        },


//[顯示資料]鈕, 一般正常分頁顯示
  {
                        xtype: 'button',
                        id: 'btn_Show',
                        flex: 2,
                        border: 1,
                        text: '資料顯示',
                        iconCls: 'icon-search',
                        handler: function () {
                            // 更新 STP欄位值                            
                       var np = s_JSON('s_form'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞  
                            np["s_isSAPSTAT"] = Ext.getCmp('s_isSAPSTAT').getValue();
                            np["s_TYPEAF"] = Ext.getCmp('s_TYPEAF').getValue();
                            np["s_Filter_Str"] = "";   //[過濾SAP單況]鈕,才會有值過濾SAP單況條件空白
                            //console.log('1 gridstore: ', gridstore);
                            //var gridstore = Ext.getCmp('grid_Single').store;                            
                            gridstore.getProxy().url = '../api/V40AAPI/getGridData_M';
                            gridstore.getProxy().extraParams = np; //分頁OK,篩選條件OK                            
                            Ext.getCmp('grid_Single').store.pageSize = 30;
                            Ext.getCmp('grid_Single').reloadGridData();          
                            
                        }
                    },  // end of 顯示資料

2>V40A*.cs
  [HttpPost]
        public dynamic getGridData_M(bool par_paging = true)
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;

            //panel1
            string Tmp_AMMNO = nvc["s_AMMNO"];
            string Tmp_SAPNO = nvc["s_SAPNO"];
            string Tmp_WBSNO = nvc["s_WBSNO"];
            string Tmp_PN = nvc["s_PN"];
            //panel2
            string Tmp_OGONOAF = nvc["s_OGONOAF"];  //拆檢提領編號
            string Tmp_NGONOAF = nvc["s_NGONOAF"]; //維修提領編號
            string Tmp_MRPNOAF = nvc["s_MRPNOAF"];  //拆檢交修編號
            string Tmp_RPNOAF = nvc["s_RPNOAF"];  //維修交修編號
            //panel3
            string Tmp_SAPMAN = nvc["s_SAPMAN"];
            string Tmp_FIXSN = nvc["s_FIXSN"];
            string Tmp_CREMPLYID = nvc["s_CREMPLYID"];
            string Tmp_FACWC = nvc["s_FACWC"];
            //panel4
            string Tmp_isSAPSTAT = nvc["s_isSAPSTAT"];   //料號
            string Tmp_TYPEAF = nvc["s_TYPEAF"];   //'3'/'4' : 拆檢約/維條約
            string Tmp_Filter_Str = nvc["s_Filter_Str"];  //過濾 SAP單況
            string Tmp_SAPDT1 = "";   //發工日期  - 起迄
            string Tmp_SAPDT2 = "";   //發工日期  - 起迄
            if (!myfunc.checkisnull(nvc["s_SAPDT1"]))
            {
                Tmp_SAPDT1 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_SAPDT1"]));
            };
            if (!myfunc.checkisnull(nvc["s_SAPDT2"]))
            {
                Tmp_SAPDT2 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_SAPDT2"]));
            };
            OracleCommand cmd = new OracleCommand();
            string Tmp_Sql = " SELECT  RNK,     "
                                       + "   AMMNO,SAPNO,PN,FIXSN,PNNAME,SAPMAN,SAPDT,WBS,QTY,UNIT, "
                                       + "    FMNO,OGONOAF,NGONOAF,MRPNOAF,RPNOAF,TYPEAF,FACWC,"
                                       + "     CREMPLYID,NEMPID,MEMPID  "
                                       + "  FROM  ( "
                                      + "   SELECT    dense_rank()  over(order by  A.AMMNO,B.FMNO) as RNK,"
                       + "   A.AMMNO,A.SAPNO,A.PN,A.FIXSN,A.PNNAME,A.SAPMAN,A.SAPDT,A.WBS, A.QTY,A.UNIT, "
                       + "   B.FMNO,B.OGONOAF,B.NGONOAF,B.MRPNOAF,B.RPNOAF,B.TYPEAF,B.FACWC, "
                                                     + "   B.CREMPLYID,B.NEMPID,B.MEMPID "
                                      + "  FROM    AMM_SRO A, AMM_FM B "
                                      + "  WHERE  A.AMMNO=B.AMMNO   "
                                      + "   AND       A.AMMSTS  NOT  IN ('A','B','F','G','H','I','W','X','Y','Z')  "
                                      + "   AND      A.SAPNO   IS NOT NULL  "
                                      + "   AND     A.ISSYS='Y'   ";
            //AMM單號
            if (!myfunc.checkisnull(Tmp_AMMNO))
            {
                Tmp_Sql = Tmp_Sql + " AND   A.AMMNO  = " + myfunc.AA(Tmp_AMMNO);
            };
            //工號
            if (!myfunc.checkisnull(Tmp_SAPNO))
            {
                Tmp_Sql = Tmp_Sql + " AND   A.SAPNO=" + myfunc.AA(Tmp_SAPNO);
            };
            //WBS
            if (!myfunc.checkisnull(Tmp_WBSNO))
            {
                Tmp_Sql = Tmp_Sql + " AND   A.WBS  LIKE  " + myfunc.AA("%"+Tmp_WBSNO+"%");
            };
            //件號
            if (!myfunc.checkisnull(Tmp_PN))
            {
                Tmp_Sql = Tmp_Sql + " AND   A.PN   LIKE   " + myfunc.AA("%" + Tmp_PN+"%");
            };

            //拆檢提領編號
            if (!myfunc.checkisnull(Tmp_OGONOAF))
            {
                Tmp_Sql = Tmp_Sql + " AND   B.OGONOAF  LIKE " + myfunc.AA('%' + Tmp_OGONOAF + '%');
            };
            //維修提領編號
            if (!myfunc.checkisnull(Tmp_NGONOAF))
            {
                Tmp_Sql = Tmp_Sql + " AND   B.NGONOAF  LIKE " + myfunc.AA('%' + Tmp_NGONOAF + '%');
            };
            //拆檢交修單號
            if (!myfunc.checkisnull(Tmp_RPNOAF))
            {
                Tmp_Sql = Tmp_Sql + " AND   B.RPNOAF  LIKE " + myfunc.AA('%' + Tmp_RPNOAF + '%');
            };
            //維修交修單號
            if (!myfunc.checkisnull(Tmp_MRPNOAF))
            {
                Tmp_Sql = Tmp_Sql + " AND   B.MRPNOAF  LIKE " + myfunc.AA('%' + Tmp_MRPNOAF + '%');
            };

            //發工人員
            if (!myfunc.checkisnull(Tmp_SAPMAN))
            {
                Tmp_Sql = Tmp_Sql + " AND   A.SAPMAN=" + myfunc.AA(Tmp_SAPMAN);
            };
            //維修件序號
            if (!myfunc.checkisnull(Tmp_FIXSN))
            {
                Tmp_Sql = Tmp_Sql + " AND   A.FIXSN  LIKE " + myfunc.AA("%"+Tmp_FIXSN+ "%");
            };
            //管制人員
            if (!myfunc.checkisnull(Tmp_CREMPLYID))
            {
                Tmp_Sql = Tmp_Sql + " AND   B.CREMPLYID=" + myfunc.AA(Tmp_CREMPLYID);
            };
            //承修工場
            if (!myfunc.checkisnull(Tmp_FACWC))
            {
                Tmp_Sql = Tmp_Sql + " AND   B.FACWC= " + myfunc.AA(Tmp_FACWC);
            };

            //約別
            if (!myfunc.checkisnull(Tmp_TYPEAF))
            {

                Tmp_Sql = Tmp_Sql + " AND   B.TYPEAF  IN  (" + myfunc.AddQuoteStr(Tmp_TYPEAF)+")";
            };
            string Tmp_Sql1 = "";
            //發工日期 - 起  - 迄
            if ((!myfunc.checkisnull(Tmp_SAPDT1)) || (!myfunc.checkisnull(Tmp_SAPDT2)))
            {
                if (!myfunc.checkisnull(Tmp_SAPDT1))
                {
                    Tmp_Sql1 = Tmp_Sql1 + "  AND        SAPDT>=" + myfunc.AA(Tmp_SAPDT1);
                };
                if (!myfunc.checkisnull(Tmp_SAPDT2))
                {
                    Tmp_Sql1 = Tmp_Sql1 + "  AND        SAPDT<=" + myfunc.AA(Tmp_SAPDT2);
                }
                Tmp_Sql = Tmp_Sql + Tmp_Sql1;
            };
            Tmp_Sql = Tmp_Sql + "   )   ";

            cmd.CommandText = Tmp_Sql;
            string countSql = " SELECT COUNT(*) as total FROM (" + Tmp_Sql + ")";
            //匯出時 ,取全部資料, par_paging =false
            DataSet ds = getDataTable(cmd, countSql, par_paging);

            //////新增  CaluField 欄位 
            //- [約別(TYPEAF) ]            
            Tmp_Sql = " select    KEY_CODE as  TYPEAF, DESCPT "
                           + " from      KEYCODE  "
                           + "  where   TBL_NAME = 'AMM_FM'  "
                           + "  and        KEY_NAME = 'TYPEAF'   ";
            getKeyCode("TYPEAF", ref ds, Tmp_Sql);

            ////新增  CaluField [SAP工單單況_(AMM_SRO.SAPSTAT_)]
            int Tmp_Cnt = ds.Tables["T1"].Rows.Count;
            ds.Tables["T1"].Columns.Add(new DataColumn("SAPMAN_", typeof(string)));
            ds.Tables["T1"].Columns.Add(new DataColumn("CREMPLYID_", typeof(string)));
            ds.Tables["T1"].Columns.Add(new DataColumn("SAPSTAT_", typeof(string)));
            ds.Tables["T1"].Columns.Add(new DataColumn("SAPSTAT__", typeof(string)));

            string Tmp_SAPMAN_ = "";
            string Tmp_CREMPLYID_ = "";
            string Tmp_SAPNO1 = "";
            string Tmp_SAPNO_ = "";
            string Tmp_SAPSTAT_ = "", Tmp_SAPSTAT__ = "";
            string Tmp_TYPEAF_ = "";
            string Tmp_Str;
            for (int i = 0; i < Tmp_Cnt; i++)
            {
                DataRow dr = ds.Tables["T1"].Rows[i];
                //取得  發工人員/管制人員(SAPMAN/CREMPLYID).姓名
                Tmp_SAPMAN_ = myfunc.getEmp_NM(dr["SAPMAN"].ToString());
                Tmp_CREMPLYID_ = myfunc.getEmp_NM(dr["CREMPLYID"].ToString());
                dr["SAPMAN_"] = Tmp_SAPMAN_;
                dr["CREMPLYID_"] = Tmp_CREMPLYID_;

                //取得 SAP工單狀態(SAPSTAT)
                Tmp_SAPNO1 = dr["SAPNO"].ToString();
                //轉換成 SAP系統的工號
                Tmp_SAPNO_ = myfunc.get_SAPNO(Tmp_SAPNO1, "OR");
                //取得 SAP工號的單況       
                if (Tmp_isSAPSTAT!="true") { //若!="true" , 則不顯示 [SAP工單狀態]
                    dr["SAPSTAT_"] = "";
                    continue;
                }
                Tmp_SAPSTAT_ = ""; Tmp_SAPSTAT__ = "";
                if (!myfunc.checkisnull(Tmp_SAPNO_))
                {
                    //Tmp_Sql = " SELECT  OBJNR,STAT,INACT,CHGNR,UDATE,UTIME "
                    Tmp_Sql = " SELECT    STAT "
                                    + "  FROM     SAPR3.JCDS@SAP  "
                                    + "  WHERE   1 = 1  "
                                    + " AND         MANDT = '999'    "
                                    + " AND         OBJNR = " + myfunc.AA(Tmp_SAPNO_)
                                    + "  AND        INACT = ' '    "
                                    + "  AND        STAT IN('I0001','I0002', 'E0015', 'I0076', 'E0022', 'E0012', 'I0045', 'I0013', 'I0012', 'I0046')  "
                                    + "  AND       (STAT, CHGNR) NOT IN   "
                                                    + "  ( SELECT   STAT, LPAD((to_number(CHGNR)-1),3,0) as CHGNR  "
                                                    + "    FROM     SAPR3.JCDS@SAP  "
                                                    + "   WHERE   1 = 1  "
                                                    + "   AND         MANDT = '999'   "
                                                    + "   AND         OBJNR = " + myfunc.AA(Tmp_SAPNO_)
                                                    + "   AND         INACT = 'X'   "
                                                    + "  AND          STAT IN('I0001','I0002', 'E0015', 'I0076', 'E0022', 'E0012', 'I0045', 'I0013', 'I0012', 'I0046')  "
                                                    + "  )  "
                                    + " ORDER BY UDATE DESC, UTIME DESC   ";
                    Tmp_Str = myfunc.SqlValue(Tmp_Sql);
                    if (Tmp_Str.Length > 0)
                    {
                        Tmp_SAPSTAT_ = myfunc.StrExtract(Tmp_Str, 1, ";");
                        Tmp_SAPSTAT__ = get_SAPSTAT_NM(Tmp_SAPSTAT_);
                    }
                }  //  if (!myfunc.checkisnull(Tmp_SAPNO_))
                dr["SAPSTAT_"] = Tmp_SAPSTAT_;        //SAP單況碼 : I0001/I0002/E0014/E0015
                dr["SAPSTAT__"] = Tmp_SAPSTAT__;  //SAP單況碼說明 : CREATE/RELEASE/ROFF                                                              //[過濾 SAP單況]鈕 , 若欲過濾 SAP單況  --> 即符合的單況才保留,其他刪除
            }  // end of for (int i = 0; i < Tmp_Cnt; i++)
            //[過濾SAP單況]鈕, 處理
            if (Tmp_Filter_Str.Length > 0)
            {
                for (int i = 0; i < Tmp_Cnt; i++)
                {
                    DataRow dr = ds.Tables["T1"].Rows[i];
                    Tmp_SAPSTAT_ = dr["SAPSTAT_"].ToString();                   
                    //若i> 目前的資料數量,則離開
                    if (i >= ds.Tables["T1"].Rows.Count)
                    {
                        break;
                    }
                    if (myfunc.checkisnull(Tmp_SAPSTAT_))
                    {
                        dr.Delete();
                        continue;
                    }
                    if (Tmp_Filter_Str.IndexOf(Tmp_SAPSTAT_) == -1)
                    {
                        dr.Delete();
                    }
                }  // end of for (int i=0;
                //重新設定總筆數
                ds.Tables["T1"].AcceptChanges();
                ds.Tables["T1C"].Rows[0]["TOTAL"] = ds.Tables["T1"].Rows.Count;
            }// end of if (Tmp_Filter_Str.Length > 0)
            
            //var Tmp_Filter = "SAPSTAT__='RELEASE'";
            //ds.Tables["T1"].Select(Tmp_Filter);
                return ds;
        }

2023年1月18日 星期三

V80201 - store 重設 timeout & WebService 重設 timeout -T1C - ds2T1C

 目的: V80201 - store 重設 timeout  & WebService 重設 timeout - 顯示子件資料

處理說明: 呼叫WebService(WS_PDM02) 顯示子件資料 
                    1> 後端 Webservice.重設 timeout  - web.config  - 10分鐘
                        <binding name="ServiceSoap"  
                          receiveTimeout="00:10:00"   .. >

                    2> 前端 store.重設 timeout   - 10分鐘
                        Ext.getCmp('sub_Grid').store.proxy.timeout=600000;

                  3>Ext.Ajax 設定 timeout  - 10 分鐘
                      Ext.Ajax.timeout = 600000; //如果有ajax timeout問題可以加上去



1>web.config -  後端 Webservice.重設 timeout - 10分鐘
<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="ILdapServiceHttpBinding" />
        <binding name="TLSWebServiceSoap" />
        <binding name="ID40AuthenticateSoap" />
        <binding name="AMMWebServiceSoap" />
        <binding name="zm179TlsSoap" />
        <binding name="ZRFC_ZM66Soap" maxBufferPoolSize="524288" maxBufferSize="2147483647"
          maxReceivedMessageSize="2147483647" />
        <binding name="ws_als_wbshourSoap" receiveTimeout="00:15:00"     
                     sendTimeout="00:15:00"/>
        <binding name="ServiceSoap"  
                 receiveTimeout="00:10:00" 
                 sendTimeout="00:10:00"
                 maxBufferPoolSize="524288" 
                 maxBufferSize="2147483647"
                 maxReceivedMessageSize="2147483647" />
        <binding name="ws_als_jcnhourSoap" />
      </basicHttpBinding>
      <customBinding>
        <binding name="ID40AuthenticateSoap12">
          <textMessageEncoding messageVersion="Soap12" />
          <httpTransport />
        </binding>
        <binding name="zm179TlsSoap12">
          <textMessageEncoding messageVersion="Soap12" />
          <httpTransport />
        </binding>
        <binding name="ServiceSoap12">
          <textMessageEncoding messageVersion="Soap12" />
          <httpTransport />
        </binding>
      </customBinding>
    </bindings>
    <client>
      <endpoint address="http://aidcldap/ldapService.do" binding="basicHttpBinding"
        bindingConfiguration="ILdapServiceHttpBinding" contract="aidcldap.ILdapServicePortType"
        name="ILdapServiceHttpPort" />
      <endpoint address="http://192.30.8.210:8503/TLSWebService.asmx"
        binding="basicHttpBinding" bindingConfiguration="TLSWebServiceSoap"
        contract="TLSWS.TLSWebServiceSoap" name="TLSWebServiceSoap" />
      <endpoint address="http://192.168.99.36/aeispj/aeis/webservice/id40Authenticate.asmx"
        binding="basicHttpBinding" bindingConfiguration="ID40AuthenticateSoap"
        contract="iAIDCWebservice.ID40AuthenticateSoap" name="ID40AuthenticateSoap" />
      <endpoint address="http://192.30.8.240:8100/AMMWebService.asmx"
        binding="basicHttpBinding" bindingConfiguration="AMMWebServiceSoap"
        contract="AMMWS_TEST.AMMWebServiceSoap" name="AMMWebServiceSoap" />
      <endpoint address="http://aesweb/SAP/Zm179tls.asmx" binding="basicHttpBinding"
        bindingConfiguration="zm179TlsSoap" contract="ZM179.zm179TlsSoap"
        name="zm179TlsSoap" />
      <endpoint address="http://194.1.5.106/SAPWS/ZRFC_ZM66.asmx" binding="basicHttpBinding"
        bindingConfiguration="ZRFC_ZM66Soap" contract="ZRFC_ZM66.ZRFC_ZM66Soap"
        name="ZRFC_ZM66Soap" />
      <endpoint address="http://194.1.5.106/sapws/ws_als_wbshour.asmx"
        binding="basicHttpBinding" bindingConfiguration="ws_als_wbshourSoap"
        contract="ws_als_wbshour.ws_als_wbshourSoap" name="ws_als_wbshourSoap" />
      <endpoint address="http://enovia/AMM/Service.asmx" binding="basicHttpBinding"
        bindingConfiguration="ServiceSoap" contract="PDM_WS.ServiceSoap"
        name="ServiceSoap" />
      <endpoint address="http://194.1.5.106/sapws/ws_als_jcnhour.asmx"
        binding="basicHttpBinding" bindingConfiguration="ws_als_jcnhourSoap"
        contract="ws_als_jcnhour.ws_als_jcnhourSoap" name="ws_als_jcnhourSoap" />
    </client>
  </system.serviceModel>
</configuration>

2> 前端 store.重設 timeout   - V80201A1.js
var win1 = getMyWindow("顯示子件明細資料", sub_ShowPNDetail_Flds, sub_ShowPNDetail_Btns, "A1");
    win1.x =400;
win1.setWidth(700);
    win1.setHeight(400);
    //顯示 sub Grid 資料        
    var np = {};
    np["PROJID"] = Ext.getCmp("sub_PROJID").getValue();
    np["PDM_CONFIG"] = Ext.getCmp("sub_PDM_CONFIG").getValue();    
    np["PDTP"] = Ext.getCmp("sub_PDTP").getValue();
    np["TYPE"] = Ext.getCmp("sub_TYPE").getValue();
    //目前所選件號(PN),ECNO,情況處理碼(CNDPROCCODE)
    np["PN"] = par_PN;
    np["ECNO"] = par_ECNO;
    np["CNDPROCCODE"] = par_CNDPROCCODE;
    np["ASN"] = par_ASN;    
    np["PROCWC"] = par_PROCWC;    

    Ext.getCmp('sub_Grid').store.getProxy().url = '../api/V80201A1API/getsubData';
    Ext.getCmp('sub_Grid').store.getProxy().extraParams = np; //分頁OK,篩選條件OK
   //Ext.getCmp('sub_Grid').store.clearOnPageLoad = true;
    //Ext.getCmp('sub_Grid').reloadGridData();    
//重新設定store.proxy 的timeout 時間(10分鐘), 以免store載入時間 timeuot , 出現 Error
    Ext.getCmp('sub_Grid').store.proxy.timeout=600000;    
    Ext.getCmp('sub_Grid').store.on("load", function (me, records, successful, eOpts) {
        console.log("STEP2 Ext.getCmp(sub_Grid).store.on(load ..");
        console.log("successful:", successful);
        console.log("records:", records);
        if (successful) {
            console.log("successful");
            console.log("Ext.getCmp('sub_Grid').store.data", Ext.getCmp('sub_Grid').store.data);
            win1.show();
            //若已載入完成,則            
            //Ext.getCmp('waitlbl').setVisible(false);         
            Ext.getCmp("myMask").hide();
            //myMask.unmask();                    
            //myMask.hide();                                
        }
    }
    );
    Ext.getCmp('sub_Grid').store.load();
    console.log(" STEP 1 Ext.getCmp('sub_Grid').store.load() ");
    Ext.getCmp('sub_Grid_ptb').hide();
    

};  // end of function ShowPNBtn_click() {

3>*.cs - V80201A1APIController.cs

//重新設定WebService 的timeout 時間(10分鐘), 以免呼叫 WebService  timeuot , 出現 Error
      DataSet ds = PDM02.AMM_PDM02(Tmp_PN, Tmp_ECNO,Tmp_CNDPROCCODE, Tmp_PDTP,                    
                                                                 Tmp_ASN,Tmp_PROJID, Tmp_PROCWC);

     //將  ds 轉成標準的  T1C 格式(TMGrid)
     ds = myfunc.ds2T1C(ds);

2022年12月12日 星期一

V80201- WebService PDM04 & PDM02 - 顯示在 TMGrid (修改成 T1 & T1C) - ds2T1C

 目的:  V80201- 生工OSM查詢 呼叫 WebService PDM04 & PDM02

處理說明:  1>VisualStudio 2019.IDE - 參考 WebService PDM04
                   2>呼叫 WebService.method
                   3>將 WebService傳回的 ds 顯示在 Grid (改成  T1 & T1C  格式)


 1>VisualStudio 2019.IDE - 參考 WebService PDM04




2>呼叫 WebService.method
// for getWebService_M
        [HttpPost]
        public dynamic getWebService_M()
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            string Tmp_PN = myfunc.null2str(nvc["s_PN"]);
            string Tmp_ECNO = myfunc.null2str(nvc["s_ECNO"]);
            string Tmp_PDM_CONFIG = myfunc.null2str(nvc["s_PDM_CONFIG"]);
            string Tmp_PDTP = myfunc.null2str(nvc["s_PDTP"]);
            string Tmp_FACWC = myfunc.null2str(nvc["s_FACWC"]);
            string Tmp_ACNO = myfunc.null2str(nvc["s_ACNO"]);
            string Tmp_MKNO = myfunc.null2str(nvc["s_MKNO"]);
            string Tmp_CNDPROCCODE = myfunc.null2str(nvc["s_CNDPROCCODE"]);
            string Tmp_STAT = myfunc.null2str(nvc["s_STAT"]);
            string Tmp_PROCDT1 = "";
            string Tmp_PROCDT2 = "";
            string Tmp_CHKDT1 = "";
            string Tmp_CHKDT2="";
            //處理完成日期
            //string Tmp_PROCDT1 = myfunc.null2str(nvc["s_PROCDT1"]);
            if (!myfunc.checkisnull(nvc["s_PROCDT1"]))
            {
                Tmp_PROCDT1 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_PROCDT1"]));
            };
            //string Tmp_PROCDT2 = myfunc.null2str(nvc["s_PROCDT2"]);
            if (!myfunc.checkisnull(nvc["s_PROCDT2"]))
            {
                Tmp_PROCDT2 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_PROCDT2"]));
            };
            ////預計編審完成日期
            //string Tmp_CHKDT1 = myfunc.null2str(nvc["s_CHKDT1"]);
            if (!myfunc.checkisnull(nvc["s_CHKDT1"]))
            {
                Tmp_CHKDT1 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_CHKDT1"]));
            };
            //string Tmp_CHKDT2 = myfunc.null2str(nvc["s_CHKDT2"]);
            if (!myfunc.checkisnull(nvc["s_CHKDT2"]))
            {
                Tmp_CHKDT2 = string.Format("{0:yyyy/MM/dd}", DateTime.Parse(nvc["s_CHKDT2"]));
            };
            string Tmp_DT1, Tmp_DT2;
            AMM_PDM04.ServiceSoapClient PDM04 = new AMM_PDM04.ServiceSoapClient();
            DataSet ds;
            if (Tmp_STAT=="C")
            {
                Tmp_DT1 = Tmp_PROCDT1;
                Tmp_DT2 = Tmp_PROCDT2;
                ds = PDM04.AMM_PDM04(Tmp_PN, Tmp_ECNO, Tmp_PDM_CONFIG, Tmp_PDTP, Tmp_ACNO,
                                                                  Tmp_FACWC, Tmp_STAT, Tmp_DT1, Tmp_DT2, Tmp_MKNO,
                                                                  Tmp_CNDPROCCODE);
            }
            else
            {
                Tmp_DT1 = Tmp_CHKDT1;
                Tmp_DT2 = Tmp_CHKDT2;
                ds = PDM04.AMM_PDM01(Tmp_PN, Tmp_ECNO, Tmp_PDM_CONFIG, Tmp_PDTP, Tmp_ACNO,
                                                                  Tmp_FACWC, Tmp_STAT, Tmp_DT1, Tmp_DT2, Tmp_MKNO,
                                                                   Tmp_CNDPROCCODE);
            }


//3>將 WebService傳回的 ds 顯示在 Grid  (改成 TMGrid格式  - T1 & T1C )
            myfunc.ds2T1C(ds);
            /*
            DataTable dt = ds.Tables[0];
            dt.TableName = "T1";
            DataTable dt1 = ds.Tables.Add("T1C");
            dt1.Columns.Add("TOTAL", typeof(Int32));
            DataRow dr = ds.Tables["T1C"].NewRow();
            dr["TOTAL"] = dt.Rows.Count;
            ds.Tables["T1C"].Rows.Add(dr);
            */
            return ds;
        }