chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,298 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Configuration;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
using Wellan.Data;
|
||||
|
||||
/// <summary>
|
||||
/// 員工資料的資料處理類別
|
||||
/// </summary>
|
||||
public class BpsnDAC : Wellan.Data.BPSN_DAC
|
||||
{
|
||||
private DbCommand cmdSelect;
|
||||
private DbCommand cmdInsert;
|
||||
private DbCommand cmdUpdate;
|
||||
private DbCommand cmdDelete;
|
||||
private StringBuilder sb = new StringBuilder();
|
||||
private string select = "SELECT * ";
|
||||
private string from = " FROM BPSNView ";
|
||||
private string where = " WHERE 1=1 ";
|
||||
private string order = " ORDER BY BPENO ";
|
||||
|
||||
public BpsnDAC()
|
||||
{
|
||||
}
|
||||
|
||||
public BpsnDAC(string connectionConfig, string connectionConfigName)
|
||||
: this()
|
||||
{
|
||||
this._connectionConfig = connectionConfig;
|
||||
this._connectionConfigName = connectionConfigName;
|
||||
}
|
||||
|
||||
public BpsnDAC(WQuery query)
|
||||
{
|
||||
this._query = query;
|
||||
}
|
||||
|
||||
private void Init()
|
||||
{
|
||||
EnsureQuery();
|
||||
EnsureDbObjects();
|
||||
}
|
||||
|
||||
private void EnsureDbObjects()
|
||||
{
|
||||
cmdSelect = Query.NewCommand();
|
||||
cmdInsert = Query.NewCommand();
|
||||
cmdUpdate = Query.NewCommand();
|
||||
cmdDelete = Query.NewCommand();
|
||||
}
|
||||
|
||||
public DataTable SelectAll()
|
||||
{
|
||||
Init();
|
||||
cmdSelect.CommandText = select + from + order;
|
||||
cmdSelect.Parameters.Clear();
|
||||
return Query.Select(cmdSelect);
|
||||
}
|
||||
|
||||
public void ClearWhere()
|
||||
{
|
||||
Init();
|
||||
cmdSelect.Parameters.Clear();
|
||||
sb.Length = 0;
|
||||
sb.Append(select);
|
||||
sb.Append(from);
|
||||
sb.Append(where);
|
||||
}
|
||||
|
||||
public void AddWhere(string fieldName, string value1, string value2, bool like)
|
||||
{
|
||||
Init();
|
||||
|
||||
if (value1 != null && value1.Length > 0 && value2 != null && value2.Length > 0)
|
||||
{
|
||||
sb.Append(String.Format(" AND {0} >= @{0}1 AND {0} <= @{0}2 ", fieldName));
|
||||
cmdSelect.Parameters.Add(Query.NewParameter(fieldName + "1", value1));
|
||||
cmdSelect.Parameters.Add(Query.NewParameter(fieldName + "2", value2));
|
||||
}
|
||||
else if (value1 != null && value1.Length > 0)
|
||||
{
|
||||
if (like)
|
||||
{
|
||||
sb.Append(String.Format(" AND {0} LIKE @{0} ", fieldName));
|
||||
cmdSelect.Parameters.Add(Query.NewParameter(fieldName, value1.ToString() + "%"));
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(String.Format(" AND {0} = @{0} ", fieldName));
|
||||
cmdSelect.Parameters.Add(Query.NewParameter(fieldName, value1));
|
||||
}
|
||||
}
|
||||
else if (value2 != null && value2.Length > 0)
|
||||
{
|
||||
if (like)
|
||||
{
|
||||
sb.Append(String.Format(" AND {0} LIKE @{0} ", fieldName));
|
||||
cmdSelect.Parameters.Add(Query.NewParameter(fieldName, value2 + "%"));
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(String.Format(" AND {0} = @{0} ", fieldName));
|
||||
cmdSelect.Parameters.Add(Query.NewParameter(fieldName, value2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public DataTable SelectByWhere()
|
||||
{
|
||||
Init();
|
||||
sb.Append(order);
|
||||
return Query.Select(cmdSelect);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得人員目前派駐專案
|
||||
/// </summary>
|
||||
/// <param name="bpeno"></param>
|
||||
/// <returns></returns>
|
||||
public string GetCurrentProject(string bpeno)
|
||||
{
|
||||
return GetProjectByDate(bpeno, DateTime.UtcNow.AddHours(8).Date);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得人員目前派駐專案
|
||||
/// </summary>
|
||||
/// <param name="bpeno"></param>
|
||||
/// <returns></returns>
|
||||
public string GetProjectByDate(string bpeno, DateTime date)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand(@"
|
||||
SELECT TOP 1 RAPYN
|
||||
FROM
|
||||
(
|
||||
SELECT 1 AS O, RAPYN
|
||||
FROM RASN
|
||||
WHERE RANUM = @BPENO
|
||||
AND RASDT <= @DATE AND (RAEDT >= @DATE OR RAEDT IS NULL)
|
||||
UNION
|
||||
SELECT TOP 1 2 AS O, RAPYN
|
||||
FROM RASN
|
||||
WHERE RANUM = @BPENO
|
||||
AND DATEPART(YEAR, RASDT) = DATEPART(YEAR, @DATE)
|
||||
AND DATEPART(MONTH, RASDT) = DATEPART(MONTH, @DATE)
|
||||
) AS TMP1
|
||||
WHERE RAPYN <> '' AND RAPYN IS NOT NULL
|
||||
ORDER BY O");
|
||||
AddParam(cmd, "BPENO", bpeno);
|
||||
AddParam(cmd, "DATE", date);
|
||||
return GetStringValue(Query.ExecuteScalar(cmd));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得人員目前派駐地點
|
||||
/// </summary>
|
||||
/// <param name="bpeno"></param>
|
||||
/// <returns></returns>
|
||||
public string GetCurrentSite(string bpeno)
|
||||
{
|
||||
return GetSiteByDate(bpeno, DateTime.UtcNow.AddHours(8).Date);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得人員目前派駐地點
|
||||
/// </summary>
|
||||
/// <param name="bpeno"></param>
|
||||
/// <returns></returns>
|
||||
public string GetSiteByDate(string bpeno, DateTime date)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand(@"
|
||||
SELECT C.BSSCR
|
||||
FROM BPSNView A
|
||||
LEFT OUTER JOIN RASN B ON A.BPENO=B.RANUM AND (B.RASDT <= @DATE AND (B.RAEDT >= @DATE OR B.RAEDT IS NULL))
|
||||
LEFT OUTER JOIN BCLS C ON B.RABRH=C.BSCLS AND C.BSPAR='BPSNBRH'
|
||||
WHERE A.BPENO=@BPENO");
|
||||
AddParam(cmd, "BPENO", bpeno);
|
||||
AddParam(cmd, "DATE", date);
|
||||
return GetStringValue(Query.ExecuteScalar(cmd));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得人員電子郵件
|
||||
/// </summary>
|
||||
/// <param name="bpeno"></param>
|
||||
/// <returns></returns>
|
||||
public string GetEmail(string bpeno)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand(@"
|
||||
SELECT BPEML
|
||||
FROM BPSNView
|
||||
WHERE BPENO=@BPENO");
|
||||
AddParam(cmd, "BPENO", bpeno);
|
||||
return GetStringValue(Query.ExecuteScalar(cmd));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得人員電子郵件2
|
||||
/// </summary>
|
||||
/// <param name="bpeno"></param>
|
||||
/// <returns></returns>
|
||||
public string GetEmail2(string bpeno)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand(@"
|
||||
SELECT BPEM2
|
||||
FROM BPSNView
|
||||
WHERE BPENO=@BPENO");
|
||||
AddParam(cmd, "BPENO", bpeno);
|
||||
return GetStringValue(Query.ExecuteScalar(cmd));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得某日期人員所屬公司名稱
|
||||
/// </summary>
|
||||
/// <param name="bpeno">員工編號</param>
|
||||
/// <param name="date">日期</param>
|
||||
/// <returns></returns>
|
||||
public List<string> GetCompanyByDate(string bpeno, DateTime date)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand(@"
|
||||
SELECT TOP 1 RPCPY FROM
|
||||
(
|
||||
SELECT RPENO, RPCPY, RPSDT, RPEDT, @YYMM-RPSDT AS SDTDIFF FROM RPIR
|
||||
WHERE RPENO=@BPENO AND
|
||||
(RPSDT <= @YYMM AND RPEDT >= @YYMM
|
||||
OR RPSDT <= @YYMM AND RPEDT IS NULL)
|
||||
UNION
|
||||
SELECT RPENO, RPCPY, RPSDT, RPEDT, @YYMM-RPSDT AS SDTDIFF FROM RPIB
|
||||
WHERE RPENO=@BPENO AND
|
||||
(RPSDT <= @YYMM AND RPEDT >= @YYMM
|
||||
OR RPSDT <= @YYMM AND RPEDT IS NULL)
|
||||
) AS TMP1
|
||||
ORDER BY SDTDIFF");
|
||||
AddParam(cmd, "BPENO", bpeno);
|
||||
AddParam(cmd, "YYMM", date);
|
||||
|
||||
List<string> result = new List<string>();
|
||||
result.Add(GetStringValue(Query.ExecuteScalar(cmd)));
|
||||
result.Add(CompanyDAC.GetCompanyName(result[0]));
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得人員到職日期
|
||||
/// </summary>
|
||||
/// <param name="bpeno"></param>
|
||||
/// <returns></returns>
|
||||
public DateTime GetBPSDY(string bpeno)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand(@"
|
||||
SELECT BPSDY
|
||||
FROM BPSNView
|
||||
WHERE BPENO=@BPENO");
|
||||
AddParam(cmd, "BPENO", bpeno);
|
||||
return GetDateTimeValue(Query.ExecuteScalar(cmd));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得人員離職日期
|
||||
/// </summary>
|
||||
/// <param name="bpeno"></param>
|
||||
/// <returns></returns>
|
||||
public DateTime GetBPEDY(string bpeno)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand(@"
|
||||
SELECT BPEDY
|
||||
FROM BPSNView
|
||||
WHERE BPENO=@BPENO");
|
||||
AddParam(cmd, "BPENO", bpeno);
|
||||
return GetDateTimeValue(Query.ExecuteScalar(cmd));
|
||||
}
|
||||
|
||||
private static List<string> managerIds = new List<string>();
|
||||
|
||||
public static bool IsManager(string bpeno)
|
||||
{
|
||||
if (managerIds.Count == 0)
|
||||
{
|
||||
managerIds.Add("00001");
|
||||
managerIds.Add("00002");
|
||||
managerIds.Add("00003");
|
||||
}
|
||||
|
||||
return managerIds.Contains(bpeno);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取出某日期在職的員工
|
||||
/// </summary>
|
||||
/// <param name="date">日期</param>
|
||||
/// <returns></returns>
|
||||
public DataTable GetOnBoardEmployee(DateTime date)
|
||||
{
|
||||
return Query.Select(Query.NewCommand("SELECT * FROM BPSNView WHERE dbo.EmployeeOnboard(BPENO, @DATE) = 1"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user