using System; using System.Data; using System.Configuration; using System.Data.Common; using System.Collections; using Wellan.Common; using Wellan.Data; /// /// 取得專案年度接單資料 /// public class BpaaDAC : Wellan.Data.WDAC { public BpaaDAC() { } public BpaaDAC(string connectionConfig, string connectionConfigName) : this() { this._connectionConfig = connectionConfig; this._connectionConfigName = connectionConfigName; } public BpaaDAC(WQuery query) { this._query = query; } /// /// 取得所有年度專案計畫代號與名稱,不含總公司 /// 20141230 修改,必定包含 103 年度新譽與展譽 /// /// public DataTable GetBpaa() { DbCommand cmd = Query.NewCommand( @"SELECT BPPYN, BPPYM FROM ( SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 4 CLS FROM BPAA WHERE (BPCSD IS NULL) AND (BPPYN <> '000000001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001') UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 3 CLS -- 移除展育 -- FROM BPAA WHERE BPPYN = '103JYB00001' OR BPPYN = '103TYB00001' FROM BPAA WHERE BPPYN = '103TYB00001' ) AS TMP1 ORDER BY CLS, BPPYN"); return Query.Select(cmd); } /// /// 取得指定年度專案計畫代號與名稱,不含總公司 /// 20141230 修改,必定包含 103 年度新譽與展譽 /// /// 指定年度 /// public DataTable GetBpaa(int year) { DbCommand cmd = Query.NewCommand( @"SELECT BPPYN, BPPYM FROM ( SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 4 CLS FROM BPAA WHERE (BPYER=@BPYER) AND (BPCSD IS NULL) AND (BPPYN <> '000000001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001') UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 3 CLS -- 移除展育 -- FROM BPAA WHERE BPPYN = '103JYB00001' OR BPPYN = '103TYB00001' FROM BPAA WHERE BPPYN = '103TYB00001' ) AS TMP1 ORDER BY CLS, BPPYN"); cmd.Parameters.Add(Query.NewParameter("BPYER", year - WGuard1.CY11)); return Query.Select(cmd); } /// /// 取得所有年度專案計畫代號與名稱,含總公司 /// 20141230 修改,必定包含 103 年度新譽與展譽 /// /// public DataTable GetBpaaWithTY() { DbCommand cmd = Query.NewCommand( @"SELECT BPPYN, BPPYM FROM ( SELECT '000000001' BPPYN, '【非專案人員】' BPPYM, 2 CLS UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 4 CLS FROM BPAA WHERE (BPCSD IS NULL) AND (BPPYN <> '000000001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001') UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 3 CLS -- 移除展育 -- FROM BPAA WHERE BPPYN = '103JYB00001' OR BPPYN = '103TYB00001' FROM BPAA WHERE BPPYN = '103TYB00001' ) AS TMP1 ORDER BY CLS, BPPYN"); return Query.Select(cmd); } /// /// 取得所有年度專案計畫代號與名稱,含總公司,並加上一個空項目 /// 20141230 修改,必定包含 103 年度新譽與展譽 /// /// public DataTable GetBpaaWithTYPlusNone() { DbCommand cmd = Query.NewCommand( @"SELECT BPPYN, BPPYM FROM ( SELECT '' BPPYN, '【全部】' BPPYM, 1 CLS UNION SELECT '000000001' BPPYN, '【非專案人員】' BPPYM, 2 CLS UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 4 CLS FROM BPAA WHERE (BPCSD IS NULL) AND (BPPYN <> '000000001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001') UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 3 CLS -- 移除展育 -- FROM BPAA WHERE BPPYN = '103JYB00001' OR BPPYN = '103TYB00001' FROM BPAA WHERE BPPYN = '103TYB00001' ) AS TMP1 ORDER BY CLS, BPPYN"); return Query.Select(cmd); } /// /// 取得指定年度專案計畫代號與名稱,含總公司 /// 20141230 修改,必定包含 103 年度新譽與展譽 /// /// 指定年度 /// public DataTable GetBpaaWithTY(int year) { DbCommand cmd = Query.NewCommand( @"SELECT BPPYN, BPPYM FROM ( SELECT '' BPPYN, '【全部】' BPPYM, 1 CLS UNION SELECT '000000001' BPPYN, '【非專案人員】' BPPYM, 2 CLS UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 3 CLS -- 移除展育 -- FROM BPAA WHERE BPPYN = '103JYB00001' OR BPPYN = '103TYB00001' FROM BPAA WHERE BPPYN = '103TYB00001' UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 4 CLS FROM BPAA WHERE (BPYER=@BPYER) AND (BPPYN <> '000000001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001') ) AS TMP1 ORDER BY CLS, BPPYN"); cmd.Parameters.Add(Query.NewParameter("BPYER", year - WGuard1.CY11)); return Query.Select(cmd); } /// /// 取得指定年度專案計畫代號與名稱,含總公司,並加上一個空項目 /// 20141230 修改,必定包含 103 年度新譽與展譽 /// /// 指定年度 /// public DataTable GetBpaaWithTYPlusNone(int year) { DbCommand cmd = Query.NewCommand( @"SELECT BPPYN, BPPYM FROM ( SELECT '' BPPYN, '【全部】' BPPYM, 1 CLS UNION SELECT '000000001' BPPYN, '【非專案人員】' BPPYM, 2 CLS UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 4 CLS FROM BPAA WHERE (BPYER=@BPYER) AND (BPPYN <> '000000001') AND (BPPYN <> '103JYB00001') AND (BPPYN <> '103TYB00001') UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 3 CLS -- 移除展育 -- FROM BPAA WHERE BPPYN = '103JYB00001' OR BPPYN = '103TYB00001' FROM BPAA WHERE BPPYN = '103TYB00001' ) AS TMP1 ORDER BY CLS, BPPYN"); cmd.Parameters.Add(Query.NewParameter("BPYER", year - WGuard1.CY11)); return Query.Select(cmd); } /// /// 取得指定年度專案計畫代號與名稱,含總公司 /// public DataTable GetBpaaWithTYPlusNone(int yearFrom, int yearTo) { return GetBpaa(yearFrom, yearTo, true); } /// /// 取得指定年度專案計畫代號與名稱,含總公司 /// public DataTable GetBpaaWithTYPlusNoneNotCheckYear(int yearFrom, int yearTo) { return GetBpaa(yearFrom, yearTo, false); } /// /// 取得指定年度專案計畫代號與名稱,含總公司 /// 20141230 修改,必定包含 103 年度新譽與展譽 /// /// 指定年度 /// public DataTable GetBpaa(int yearFrom, int yearTo, bool checkYearEqual) { if (yearTo <= 0) yearTo = yearFrom; DbCommand cmd; if (yearFrom == yearTo || !checkYearEqual) { cmd = Query.NewCommand( @"SELECT BPPYN, BPPYM FROM ( SELECT '' BPPYN, '【全部】' BPPYM, 1 CLS UNION SELECT '000000001' BPPYN, '【非專案人員】' BPPYM, 2 CLS UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 3 CLS -- 移除展育的選項 -- FROM BPAA WHERE BPPYN = '103JYB00001' OR BPPYN = '103TYB00001' FROM BPAA WHERE BPPYN = '103TYB00001' UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 4 CLS FROM BPAA WHERE (BPYER = @BPYER1) AND (BPPYN <> '000000001') AND (BPPNM <> 'JYB00001') AND (BPPNM <> 'TYB00001') ) AS TMP1 ORDER BY CLS, BPPYN"); } else { cmd = Query.NewCommand( @"SELECT BPPYN, BPPYM FROM ( SELECT '' BPPYN, '【全部】' BPPYM, 1 CLS UNION SELECT '000000001' BPPYN, '【非專案人員】' BPPYM, 2 CLS -- UNION -- SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 3 CLS -- FROM BPAA WHERE BPPYN = '103JYB00001' OR BPPYN = '103TYB00001' UNION SELECT BPPYN, ISNULL('【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(BPPYN,LEN(BPPYN)-5,1)) + '】', '') + BPPYM BPPYM, 4 CLS FROM BPAA WHERE (BPYER>=@BPYER1 AND BPYER<=@BPYER2) AND (BPPYN <> '000000001') AND (BPPNM <> 'JYB00001') AND (BPPNM <> 'TYB00001') ) AS TMP1 ORDER BY CLS, BPPYN"); } cmd.Parameters.Add(Query.NewParameter("BPYER1", yearFrom - WGuard1.CY11)); cmd.Parameters.Add(Query.NewParameter("BPYER2", yearTo - WGuard1.CY11)); return Query.Select(cmd); } /// /// 取得加班時數計算方式 /// /// 年度專案計畫編號 /// 1=計算至小時,2=計算至分鐘 public string GetOverTimeType(string BPPYN) { DbCommand cmd = Query.NewCommand("SELECT BPOTT FROM BPAA WHERE BPPYN=@BPPYN"); cmd.Parameters.Add(Query.NewParameter("BPPYN", BPPYN)); string s = WDAC.GetStringValue(Query.ExecuteScalar(cmd)); return s == "1" || s == "2" ? s : "1"; } /// /// 取得上下班時間 /// /// /// //public void GetTime(string bppyn, out string bpstm, out string bpetm) //{ // bpstm = WGuard1.WSetR("UNRPARTIME", 1); // bpetm = WGuard1.WSetR("UNRPARTIME", 2); // DbCommand cmd1 = Query.NewCommand("SELECT BPPNM FROM BPAA WHERE BPPYN=@BPPYN"); // cmd1.Parameters.Add(Query.NewParameter("BPPYN", bppyn)); // string bppnm = WDAC.GetStringValue(Query.ExecuteScalar(cmd1)); // if (string.IsNullOrEmpty(bppnm)) // return; // DbCommand cmd2 = Query.NewCommand("SELECT BPSTM, BPETM FROM BPRJ WHERE BPPNM=@BPPNM"); // cmd1.Parameters.Add(Query.NewParameter("BPPNM", bppnm)); // DataTable dt = Query.Select(cmd2); // if (dt.Rows.Count == 0) // return; // string bpstm1 = WDAC.GetStringValue(dt.Rows[0]["BPSTM"]); // string bpetm1 = WDAC.GetStringValue(dt.Rows[0]["BPETM"]); // string[] timepart = bpstm1.Split(':'); // if (timepart.Length >= 2) // bpstm = timepart[0].PadRight(2, '0') + timepart[1].PadRight(2, '0'); // timepart = bpetm1.Split(':'); // if (timepart.Length >= 2) // bpetm = timepart[0].PadRight(2, '0') + timepart[1].PadRight(2, '0'); //} /// /// 取得年初特休計算方式 /// /// 年度專案計畫編號 /// S=加總上年生效(正數) / Z=年初時數為0 public string GetYearBeginAnnualLeaveType(string BPPYN) { DbCommand cmd = Query.NewCommand("SELECT BPALT FROM BPAA WHERE BPPYN=@BPPYN"); cmd.Parameters.Add(Query.NewParameter("BPPYN", BPPYN)); string s = WDAC.GetStringValue(Query.ExecuteScalar(cmd)); return s == "S" || s == "Z" ? s : "Z"; } /// /// 取得年度專案計畫代號對應的班表編號 /// /// 年度專案計畫編號 /// 班表編號 public string GetTimeTableNo(string BPPYN) { DbCommand cmd = Query.NewCommand("SELECT BPPNM FROM BPAA WHERE BPPYN=@BPPYN"); cmd.Parameters.Add(Query.NewParameter("BPPYN", BPPYN)); var bppnm = WDAC.GetStringValue(Query.ExecuteScalar(cmd)); cmd.CommandText = "SELECT BPTME FROM BPRJ WHERE BPPNM=@BPPNM"; cmd.Parameters.Clear(); cmd.Parameters.Add(Query.NewParameter("BPPNM", bppnm)); return WDAC.GetStringValue(Query.ExecuteScalar(cmd)); } }