328 lines
14 KiB
C#
328 lines
14 KiB
C#
using System;
|
|
using System.Data;
|
|
using System.Configuration;
|
|
using System.Data.Common;
|
|
using System.Collections;
|
|
using Wellan.Common;
|
|
using Wellan.Data;
|
|
|
|
/// <summary>
|
|
/// 取得專案年度接單資料
|
|
/// </summary>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得所有年度專案計畫代號與名稱,不含總公司
|
|
/// 20141230 修改,必定包含 103 年度新譽與展譽
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得指定年度專案計畫代號與名稱,不含總公司
|
|
/// 20141230 修改,必定包含 103 年度新譽與展譽
|
|
/// </summary>
|
|
/// <param name="year">指定年度</param>
|
|
/// <returns></returns>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得所有年度專案計畫代號與名稱,含總公司
|
|
/// 20141230 修改,必定包含 103 年度新譽與展譽
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得所有年度專案計畫代號與名稱,含總公司,並加上一個空項目
|
|
/// 20141230 修改,必定包含 103 年度新譽與展譽
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得指定年度專案計畫代號與名稱,含總公司
|
|
/// 20141230 修改,必定包含 103 年度新譽與展譽
|
|
/// </summary>
|
|
/// <param name="yearFrom">指定年度</param>
|
|
/// <returns></returns>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得指定年度專案計畫代號與名稱,含總公司,並加上一個空項目
|
|
/// 20141230 修改,必定包含 103 年度新譽與展譽
|
|
/// </summary>
|
|
/// <param name="year">指定年度</param>
|
|
/// <returns></returns>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得指定年度專案計畫代號與名稱,含總公司
|
|
/// </summary>
|
|
public DataTable GetBpaaWithTYPlusNone(int yearFrom, int yearTo)
|
|
{
|
|
return GetBpaa(yearFrom, yearTo, true);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得指定年度專案計畫代號與名稱,含總公司
|
|
/// </summary>
|
|
public DataTable GetBpaaWithTYPlusNoneNotCheckYear(int yearFrom, int yearTo)
|
|
{
|
|
return GetBpaa(yearFrom, yearTo, false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得指定年度專案計畫代號與名稱,含總公司
|
|
/// 20141230 修改,必定包含 103 年度新譽與展譽
|
|
/// </summary>
|
|
/// <param name="yearFrom">指定年度</param>
|
|
/// <returns></returns>
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得加班時數計算方式
|
|
/// </summary>
|
|
/// <param name="BPPYN">年度專案計畫編號</param>
|
|
/// <returns>1=計算至小時,2=計算至分鐘</returns>
|
|
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";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得上下班時間
|
|
/// </summary>
|
|
/// <param name="bppyn"></param>
|
|
/// <returns></returns>
|
|
//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');
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 取得年初特休計算方式
|
|
/// </summary>
|
|
/// <param name="BPPYN">年度專案計畫編號</param>
|
|
/// <returns>S=加總上年生效(正數) / Z=年初時數為0</returns>
|
|
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";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得年度專案計畫代號對應的班表編號
|
|
/// </summary>
|
|
/// <param name="BPPYN">年度專案計畫編號</param>
|
|
/// <returns>班表編號</returns>
|
|
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));
|
|
}
|
|
} |