2023年4月13日 星期四

目的: V80204 - SQL 去除前面的 0

目的: V80204 - SQL 去除前面的 0

處理說明:  1>SELECT LTRIM(AUFNR,0)FROM SAPR3.ZPMA@SAP



1.*.cs

-->  過濾[目前工作中心]
SELECT *
FROM AMM_SRO
WHERE SAPNO IN (SELECT LTRIM(AUFNR,0)FROM SAPR3.ZPMA@SAP WHERE CURR_ARBPL=”:目前工作中心”


V80204 - [發工人員]挑選 - 列出所有的資料,且不顯示[分頁]Toolbar - 傳回多欄位 -搜尋

目的: V80204 - [發工人員]挑選 - 列出所有的資料,且不顯示[分頁]Toolbar - 傳回多欄位 - 搜尋

處理說明: 1> *.js  EditPickx 函式的paging 設為 false
                               var win = EditPickx('發工人員', '../api/V80204API/get_s_SAPMANPick', ['SAPMAN_', 'SAPMAN'], 
                                              ['s_SAPMAN_', 's_SAPMAN'], J_pickstore_s_SAPMAN, J_pickcolumns_s_SAPMAN, false);
                  2>*.cs get_s_SAPMANPick 的寫法相同, 不需修改
                      [HttpPost]
                      public dynamic get_s_SAPMANPick(string SAPMAN_ = "", int isComplete = 0)

 

1>*.js 
{
      xtype: "fieldcontainer", fieldLabel: "發工人員", labelWidth: 70, layout: "hbox", flex: 2,
      items: [
             { xtype: "textfield", id: "s_SAPMAN_", name: "s_SAPMAN_", width: 50, padding: "0 4 0 0" },
             { xtype: "textfield", id: "s_SAPMAN", name: "s_SAPMAN", width: 50, padding: "0 4 0 0" },
             { xtype: "button", id: "s_btn_SAPMAN", name: "s_btn_SAPMAN", text: "...",width:20,
                handler: function () {
                        var win = EditPickx('發工人員', '../api/V80204API/get_s_SAPMANPick', 
                       ['SAPMAN_', 'SAPMAN'], ['s_SAPMAN_', 's_SAPMAN'], J_pickstore_s_SAPMAN,                             J_pickcolumns_s_SAPMAN, false);
                       win.show();
                                        }
                                    }
                                ]
                            },  // end of s_發工人員                      



2>*.cs
       //過濾條件 [發工人員]挑選
        [HttpPost]
        public dynamic get_s_SAPMANPick(string SAPMAN_ = "", int isComplete = 0)
        {
    string Tmp_Sql = " SELECT  DISTINCT B.EMPLYNM as SAPMAN_,B.EMPLYID  as SAPMAN "
                              +"  FROM    AMM_SRO A, HR_EMPLYM B "
                              +"  WHERE  A.SAPMAN = B.EMPLYID  "
                              +"  ORDER  BY  B.EMPLYNM,B.EMPLYID ";
            string n = funId + "s_SAPMAN";
            // public DataSet setupPickDs(string pickKey, string sql, string[] tables, bool paging = true, bool realTime = false)
            DataSet ds = setupPickDs(n, Tmp_Sql, new string[] { "AMM_SRO" });
            if (SAPMAN_ != null && !SAPMAN_.Equals(""))
            {
                if (isComplete == 1)
                {
                    ds = getPickDsbyCondi(n, "SAPMAN_='" + SAPMAN_ + "'");
                }
                else
                {
                    ds = getPickDsbyCondi(n, "SAPMAN_  LIKE '%" + SAPMAN_ + "%'");
                }
            }
            return ds;
        }  // end of  get_s_SAPMANPick

2023年4月12日 星期三

V80204 - Web DataSet 的排序 依 RNK 的 排序, 非 SQL ORDER BY

 目的: V80204 - Web DataSet 的排序

 --> 排序依RNK : SELECT  dense_rank()  over(order by  JCN,ACT,WC,DATA_DATE) as RNK

         SQL ORDER BY 





V80204 - 將[分鐘]字串轉成[小時]字串 - C# 實數: double , 實數顯示小數2位

 目的:  V80204 - 將[分鐘]字串轉成[小時]字串

處理說明:  1>



1> *.cs - c#
//[分鐘]字串轉成[小時]字串]
public static string Min2Hr(string par_MinStr)
        {
            double Tmp_double1 = 0;
            string Tmp_HrStr;           
            Tmp_double1 = Math.Round(double.Parse(par_MinStr) / 60, 2);
            Tmp_HrStr = Tmp_double1.ToString("0.00");           
            return Tmp_HrStr;
        }

AMM系統如何判定 QDR工單 /一般工單 - SAP工單第2碼為英文字/長度8碼,且第2碼不為英文字

目的:  AMM系統如何判定 QDR工單 /一般工單

           - QDR工單 -SAP工單第2碼為英文字    --> JCN 不加 '0000'

           - 一般工單: 工單長度8碼,且第2碼不為英文字         --> JCN 加 '0000' , 不含 ILIAS工單(9碼)


處理說明: 1> AMM_SRO  只挑選 QDR工單及一般工單(不含 ILIAS工單)

SQL如下:

SELECT   AMMNO,SAPNO,PN,PNNAME,QTY,nvl(STARTVAL,ACNO) as ACNO_
FROM      AMM_SRO
WHERE   PROJID='F16V'
AND         AMMSTS<='W'
AND (    (substr(SAPNO, 2, 1) between 'A' and 'Z')
        OR ((LENGTH(SAPNO)=8) AND not (substr(SAPNO, 2, 1) between 'A' and 'Z') )
         )

AND nvl(STARTVAL,ACNO) IN ('A012','B025')
ORDER BY ACNO_,SAPNO;
一般工單 à 長度為 8 碼 且 SAP工單第2碼為英文字 à JCN 加 ‘0000’
è 不含ILIAS工單(9碼)
QDR工單 à SAP工單第2碼為英文字 à JCN 不加 ‘0000’



2023年4月10日 星期一

V80204B -將前端 Array/table/Object 欄位值,傳送至後端處理 -JSON – 將目前 checkboxgroup欄位值(Array),傳送至後端,並處理

 目的: V80204B – 將目前 checkboxgroup欄位值(Array),傳送至後端,並處理

處理說明: 1>若非基本型態(string/int/)的欄位值(Array/table/Object),要傳至後端, 
                       均需先轉成 JSON string型態 ,才可當成np的參數值,傳送至後端
                        *.js                         
                        var Tmp_JSONStr = JSON.stringify(Ext.getCmp('chkboxgrp2').getValue()["rb"]);
                        np["ASN_ARY_JSONStr"]=Tmp_JSONStr;

                  2> 後端接收時,必需先將 JSON string 型態, 再還回原型態(Array/table/Object)
                        *.cs
                        string Tmp_ASN_ARY_JSONStr = nvc["ASN_ARY_JSONStr"];  
                        JArray Tmp_ASN_ARY =      
                     (JArray)JsonConvert.DeserializeObject(Tmp_ASN_ARY_JSONStr, (typeof(JArray)));  


1>*.js

var selectedValues = Ext.getCmp('chkboxgrp2').items;
console.log(selectedValues);
var Tmp_ASNAry = []; //var Tmp_Obj={};
//chkboxgrp2 均設為 true
for (var i = 0; i < selectedValues.length; i++) {
    selectedValues.items[i].setValue(true);
};

var np = {};
//取得 chkboxgrp2 的勾選欄位值
//將 Array 轉成 JSON字串, 以便傳至後端
    var Tmp_JSONStr = JSON.stringify(Ext.getCmp('chkboxgrp2').getValue()["rb"]);
    np["ASN_ARY_JSONStr"]=Tmp_JSONStr;
    console.log("np['ASN_ARY_JSONStr']: ", np["ASN_ARY_JSONStr"]);

2>*.cs    
  string Tmp_ASN_ARY_JSONStr = nvc["ASN_ARY_JSONStr"]; 
  JArray Tmp_ASN_ARY = (JArray)JsonConvert.DeserializeObject(Tmp_ASN_ARY_JSONStr, (typeof(JArray)));
 string Tmp_ASN_ARY_STR = string.Join(",", Tmp_ASN_ARY);
// "A012,B025" -->  'A012','B025'
 Tmp_ASN_ARY_STR = myfunc.AddQuoteStr(Tmp_ASN_ARY_STR); 








PS:
       1>將checkboxgroup2 的項目均設為 勾選(checked)
                 {
                    xtype: 'checkboxgroup',
                    id: 'chkboxgrp1',            // columns: 3,
                    columns: [.35, .35, .35],
                    items: [
                               { boxLabel: 'Item 1', name: 'rb', inputValue: '1' },
                               { boxLabel: 'Item 2', name: 'rb', inputValue: '2' },
                               { boxLabel: 'Item 3', name: 'rb', inputValue: '3' },
                             ]
                  },



}, //end of 待挑選機號

                  2>將checkboxgroup2的項目傳送至後端處理                       



V80204B - F16V報工現況匯出– checkboxgroup 新增checkbox - 多行機號挑選 - [F16V報工現況匯出]鈕

 目的: V80204B – checkboxgroup 新增checkbox – 將目前 checkboxgroup欄位值(Array),傳送至後端

處理說明:  1>必需先  CreateObject  of  checkbox 才可加入 checkboxgroup
                     //var tempObj = new Ext.form.Checkbox({
                       var tempObj = Ext.create('Ext.form.Checkbox',{
                                                           boxLabel: 'checkbox1',
                                                           name: 'rb',
                                                           inputValue: 'checkbox1',});
                  2>將 obj 加入 checkboxgroup , 並更新 Layout , 才會反應最新的 checkboxs 內容
                      Ext.getCmp('chkboxgrp1').items.add(tempObj);
                      Ext.getCmp('chkboxgrp1').updateLayout();    //更新  checkboxgroup
                  3> 取得目前 checkboxgroup 的勾選項目
                        var selectedValues = Ext.getCmp('chkboxgrp2').getChecked();
                           // Returns an Array of all checkboxes in the container which are currently checked
                           for (var i = 0; i < selectedValues.length; i++) {
                                   Ext.getCmp('chkboxgrp2').remove(selectedValues[i]);
                                    var tempObj = new Ext.form.Checkbox(selectedValues[i]);  //必需先 create ,才可加入
                                    Ext.getCmp('chkboxgrp1').items.add(tempObj);
                                }

                        



1>*.js   - V80204B.js
     1>>checkboxgroup1 加入   checkbox
{
xtype: 'button', flex: 1, text: "+1",
handler: function () {
var tempObj = Ext.create('Ext.form.Checkbox',{
boxLabel: 'checkbox1',
name: 'rb',
inputValue: 'checkbox1',
// id: Tmp_ACNO_id,
});
Ext.getCmp('chkboxgrp1').items.add(tempObj);
Ext.getCmp('chkboxgrp1').updateLayout();
}
},// end of 虛 space

   2>>checkboxgroup1 .勾選s 右移至  checkboxgroup2
   {//往右移
                        xtype: 'button',
                            id: 'btn_move1',
                            text: '往右',
                            iconCls: 'icon-right',
                        flex:1,
                        handler: function () {
                            var selectedSuccessValues = Ext.getCmp('chkboxgrp1').getChecked();
                            console.log(selectedSuccessValues);
                            for (var i = 0; i < selectedSuccessValues.length; i++) {
                                Ext.getCmp('chkboxgrp1').remove(selectedSuccessValues[i]);
                                var tempObj = new Ext.form.Checkbox(selectedSuccessValues[i]);
                                Ext.getCmp('chkboxgrp2').items.add(tempObj);
                            }

                            Ext.getCmp('chkboxgrp1').updateLayout();
                            Ext.getCmp('chkboxgrp2').updateLayout();

                        } 
                        },// end of 往右移