chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,595 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Text;
|
||||
using System.Xml.Linq;
|
||||
using Wellan.Data;
|
||||
|
||||
/// <summary>
|
||||
/// 人員派遣資料的資料處理類別
|
||||
/// </summary>
|
||||
public class RasnDAC : Wellan.Data.WDAC
|
||||
{
|
||||
private DbCommand cmdSelectRasnRapyn = null;
|
||||
private DbCommand cmdSelectRasb = null;
|
||||
private DbCommand cmdSelectRasnOne = null;
|
||||
private DbCommand cmdSelectRasbOne = null;
|
||||
private DbCommand cmdSelectRasnAll = null;
|
||||
private DbCommand cmdSelectRasnAll2 = null;
|
||||
|
||||
public RasnDAC()
|
||||
{
|
||||
string selectRasn =
|
||||
@"SELECT A.RANUM, A.RAITM, 0 AS RBITM, NULL AS RBBDT, A.RACNM, A.RAPYN, A.RASDT,
|
||||
A.RAEDT, A.RAJNO, A.RACNO, A.RABRH, A.RAS01, A.RAWTZ, A.APPNO,
|
||||
B.BPSRM, B.BPSRD, B.BPP01, B.BPP02, B.BPP03, B.BPP04, B.BPP05
|
||||
FROM RASN A
|
||||
INNER JOIN BPJB B ON A.RAPYN=B.BPPYN AND A.RAJNO=B.BPJNO AND A.RACNO=B.BPCNO
|
||||
WHERE A.RANUM=@RANUM AND A.RAITM=@RAITM";
|
||||
string selectRasb =
|
||||
@"SELECT A.RANUM, A.RAITM, B.RBITM, B.RBBDT, A.RACNM, A.RAPYN, A.RASDT,
|
||||
A.RAEDT, B.RAJNO, B.RACNO, B.RABRH, A.RAS01, A.RAWTZ, B.APPNO,
|
||||
C.BPSRM, C.BPSRD, C.BPP01, C.BPP02, C.BPP03, C.BPP04, C.BPP05
|
||||
FROM RASN A
|
||||
INNER JOIN RASB B ON A.RANUM=B.RANUM AND A.RAITM=B.RAITM
|
||||
INNER JOIN BPJB C ON A.RAPYN=C.BPPYN AND B.RAJNO=C.BPJNO AND B.RACNO=C.BPCNO
|
||||
WHERE A.RANUM=@RANUM AND A.RAITM=@RAITM";
|
||||
|
||||
// 取出最後一筆異動
|
||||
cmdSelectRasb = Query.NewCommand(
|
||||
"SELECT TOP 1 * FROM ( " + selectRasn + " UNION " + selectRasb + " ) TMP ORDER BY RBITM DESC");
|
||||
cmdSelectRasb.Parameters.Add(Query.NewParameter("RANUM", DbType.String));
|
||||
cmdSelectRasb.Parameters.Add(Query.NewParameter("RAITM", DbType.Int32));
|
||||
|
||||
// 取出某一筆員工派遣資料
|
||||
cmdSelectRasnOne = Query.NewCommand(selectRasn);
|
||||
cmdSelectRasnOne.Parameters.Add(Query.NewParameter("RANUM", DbType.String));
|
||||
cmdSelectRasnOne.Parameters.Add(Query.NewParameter("RAITM", DbType.Int32));
|
||||
|
||||
// 取出某一筆員工派遣異動資料
|
||||
cmdSelectRasbOne = Query.NewCommand(selectRasb + " AND B.RBITM=@RBITM");
|
||||
cmdSelectRasbOne.Parameters.Add(Query.NewParameter("RANUM", DbType.String));
|
||||
cmdSelectRasbOne.Parameters.Add(Query.NewParameter("RAITM", DbType.Int32));
|
||||
cmdSelectRasbOne.Parameters.Add(Query.NewParameter("RBITM", DbType.Int32));
|
||||
|
||||
// 取出某員工編號全部的紀錄,以異動次數排序
|
||||
cmdSelectRasnAll = Query.NewCommand(selectRasn + " UNION " + selectRasb + " ORDER BY RBITM");
|
||||
cmdSelectRasnAll.Parameters.Add(Query.NewParameter("RANUM", DbType.String));
|
||||
cmdSelectRasnAll.Parameters.Add(Query.NewParameter("RAITM", DbType.Int32));
|
||||
|
||||
// 取出某員工編號全部的紀錄,以生效日期排序
|
||||
cmdSelectRasnAll2 = Query.NewCommand(selectRasn + " UNION " + selectRasb + " ORDER BY RBBDT");
|
||||
cmdSelectRasnAll2.Parameters.Add(Query.NewParameter("RANUM", DbType.String));
|
||||
cmdSelectRasnAll2.Parameters.Add(Query.NewParameter("RAITM", DbType.Int32));
|
||||
}
|
||||
|
||||
public RasnDAC(string connectionConfig, string connectionConfigName)
|
||||
: this()
|
||||
{
|
||||
base._connectionConfig = connectionConfig;
|
||||
base._connectionConfigName = connectionConfigName;
|
||||
}
|
||||
|
||||
public RasnDAC(WQuery query)
|
||||
: this()
|
||||
{
|
||||
base._query = query;
|
||||
}
|
||||
|
||||
// 準備輸出資料架構
|
||||
private DataTable NewResult()
|
||||
{
|
||||
DataTable Result = new DataTable();
|
||||
Result.Columns.Add("RANUM", typeof(String));
|
||||
Result.Columns.Add("RAITM", typeof(Int32));
|
||||
Result.Columns.Add("RBITM", typeof(Int32));
|
||||
Result.Columns.Add("RBBDT", typeof(DateTime));
|
||||
Result.Columns.Add("RACNM", typeof(String));
|
||||
Result.Columns.Add("RAPYN", typeof(String));
|
||||
Result.Columns.Add("RASDT", typeof(DateTime));
|
||||
Result.Columns.Add("RAEDT", typeof(DateTime));
|
||||
Result.Columns.Add("RAJNO", typeof(String));
|
||||
Result.Columns.Add("RACNO", typeof(String));
|
||||
Result.Columns.Add("RABRH", typeof(String));
|
||||
Result.Columns.Add("RAS01", typeof(Double));
|
||||
Result.Columns.Add("RAWTZ", typeof(String));
|
||||
Result.Columns.Add("APPNO", typeof(Int32));
|
||||
Result.Columns.Add("BPSRM", typeof(Int32));
|
||||
Result.Columns.Add("BPSRD", typeof(Int32));
|
||||
Result.Columns.Add("BPP01", typeof(Int32));
|
||||
Result.Columns.Add("BPP02", typeof(Int32));
|
||||
Result.Columns.Add("BPP03", typeof(Int32));
|
||||
Result.Columns.Add("BPP04", typeof(Int32));
|
||||
Result.Columns.Add("BPP05", typeof(Int32));
|
||||
Result.Columns.Add("RAEDT_Changed", typeof(Char));
|
||||
Result.Columns.Add("RAJNO_Changed", typeof(Char));
|
||||
Result.Columns.Add("RACNO_Changed", typeof(Char));
|
||||
Result.Columns.Add("RABRH_Changed", typeof(Char));
|
||||
Result.Columns.Add("RAWTZ_Changed", typeof(Char));
|
||||
Result.Columns.Add("BPSRM_Changed", typeof(Char));
|
||||
Result.Columns.Add("BPSRD_Changed", typeof(Char));
|
||||
Result.Columns.Add("BPP01_Changed", typeof(Char));
|
||||
Result.Columns.Add("BPP02_Changed", typeof(Char));
|
||||
Result.Columns.Add("BPP03_Changed", typeof(Char));
|
||||
Result.Columns.Add("BPP04_Changed", typeof(Char));
|
||||
Result.Columns.Add("BPP05_Changed", typeof(Char));
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
||||
private void FillResult(DataTable Result, DataRow source)
|
||||
{
|
||||
DataRow newRow = Result.NewRow();
|
||||
newRow["RANUM"] = source["RANUM"];
|
||||
newRow["RAITM"] = source["RAITM"];
|
||||
newRow["RBITM"] = source["RBITM"];
|
||||
newRow["RBBDT"] = source["RBBDT"];
|
||||
newRow["RACNM"] = source["RACNM"];
|
||||
newRow["RAPYN"] = source["RAPYN"];
|
||||
newRow["RASDT"] = source["RASDT"];
|
||||
newRow["RAEDT"] = source["RAEDT"];
|
||||
newRow["RAJNO"] = source["RAJNO"];
|
||||
newRow["RACNO"] = source["RACNO"];
|
||||
newRow["RABRH"] = source["RABRH"];
|
||||
newRow["RAS01"] = source["RAS01"];
|
||||
newRow["RAWTZ"] = source["RAWTZ"];
|
||||
newRow["APPNO"] = source["APPNO"];
|
||||
newRow["BPSRM"] = source["BPSRM"];
|
||||
newRow["BPSRD"] = source["BPSRD"];
|
||||
newRow["BPP01"] = source["BPP01"];
|
||||
newRow["BPP02"] = source["BPP02"];
|
||||
newRow["BPP03"] = source["BPP03"];
|
||||
newRow["BPP04"] = source["BPP04"];
|
||||
newRow["BPP05"] = source["BPP05"];
|
||||
newRow["RAEDT_Changed"] = 'N';
|
||||
newRow["RAJNO_Changed"] = 'N';
|
||||
newRow["RACNO_Changed"] = 'N';
|
||||
newRow["RABRH_Changed"] = 'N';
|
||||
newRow["RAWTZ_Changed"] = 'N';
|
||||
newRow["BPSRM_Changed"] = 'N';
|
||||
newRow["BPSRD_Changed"] = 'N';
|
||||
newRow["BPP01_Changed"] = 'N';
|
||||
newRow["BPP02_Changed"] = 'N';
|
||||
newRow["BPP03_Changed"] = 'N';
|
||||
newRow["BPP04_Changed"] = 'N';
|
||||
newRow["BPP05_Changed"] = 'N';
|
||||
Result.Rows.Add(newRow);
|
||||
}
|
||||
|
||||
private Char FieldDiff(object obj1, object obj2)
|
||||
{
|
||||
string s1 = obj1 != DBNull.Value ? obj1.ToString() : "";
|
||||
string s2 = obj2 != DBNull.Value ? obj2.ToString() : "";
|
||||
if (s1.CompareTo(s2) != 0)
|
||||
return 'Y';
|
||||
else
|
||||
return 'N';
|
||||
}
|
||||
|
||||
private void FillResult(DataTable Result, DataRow current, DataRow prev)
|
||||
{
|
||||
DataRow newRow = Result.NewRow();
|
||||
newRow["RANUM"] = current["RANUM"];
|
||||
newRow["RAITM"] = current["RAITM"];
|
||||
newRow["RBITM"] = current["RBITM"];
|
||||
newRow["RBBDT"] = current["RBBDT"];
|
||||
newRow["RACNM"] = current["RACNM"];
|
||||
newRow["RAPYN"] = current["RAPYN"];
|
||||
newRow["RASDT"] = current["RASDT"];
|
||||
newRow["RAEDT"] = current["RAEDT"];
|
||||
newRow["RAJNO"] = current["RAJNO"];
|
||||
newRow["RACNO"] = current["RACNO"];
|
||||
newRow["RABRH"] = current["RABRH"];
|
||||
newRow["RAS01"] = current["RAS01"];
|
||||
newRow["APPNO"] = current["APPNO"];
|
||||
newRow["BPSRM"] = current["BPSRM"];
|
||||
newRow["BPSRD"] = current["BPSRD"];
|
||||
newRow["BPP01"] = current["BPP01"];
|
||||
newRow["BPP02"] = current["BPP02"];
|
||||
newRow["BPP03"] = current["BPP03"];
|
||||
newRow["BPP04"] = current["BPP04"];
|
||||
newRow["BPP05"] = current["BPP05"];
|
||||
newRow["RAEDT_Changed"] = FieldDiff(current["RAEDT"], prev["RAEDT"]);
|
||||
newRow["RAJNO_Changed"] = FieldDiff(current["RAJNO"], prev["RAJNO"]);
|
||||
newRow["RACNO_Changed"] = FieldDiff(current["RACNO"], prev["RACNO"]);
|
||||
newRow["RABRH_Changed"] = FieldDiff(current["RABRH"], prev["RABRH"]);
|
||||
newRow["BPSRM_Changed"] = FieldDiff(current["BPSRM"], prev["BPSRM"]);
|
||||
newRow["BPSRD_Changed"] = FieldDiff(current["BPSRD"], prev["BPSRD"]);
|
||||
newRow["BPP01_Changed"] = FieldDiff(current["BPP01"], prev["BPP01"]);
|
||||
newRow["BPP02_Changed"] = FieldDiff(current["BPP02"], prev["BPP02"]);
|
||||
newRow["BPP03_Changed"] = FieldDiff(current["BPP03"], prev["BPP03"]);
|
||||
newRow["BPP04_Changed"] = FieldDiff(current["BPP04"], prev["BPP04"]);
|
||||
newRow["BPP05_Changed"] = FieldDiff(current["BPP05"], prev["BPP05"]);
|
||||
Result.Rows.Add(newRow);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 依條件取出資料,給 GridView 的 Select 用的
|
||||
/// </summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable Select(string RACNM, string RAPYN)
|
||||
{
|
||||
cmdSelectRasnRapyn.Parameters.Clear();
|
||||
|
||||
DataTable Result = NewResult();
|
||||
|
||||
// 依條件抓出派遣紀錄
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append("SELECT * FROM RASN WHERE 1=1");
|
||||
if (RACNM != null && RACNM.Length > 0)
|
||||
{
|
||||
sb.Append(" AND RACNM LIKE @RACNM ");
|
||||
cmdSelectRasnRapyn.Parameters.Add(Query.NewParameter("RACNM", RACNM + "%"));
|
||||
}
|
||||
if (RAPYN != null && RAPYN.Length > 0)
|
||||
{
|
||||
sb.Append(" AND RAPYN LIKE @RAPYN ");
|
||||
cmdSelectRasnRapyn.Parameters.Add(Query.NewParameter("RAPYN", RAPYN + "%"));
|
||||
}
|
||||
sb.Append("ORDER BY RACNM, RAPYN, RANUM, RAITM");
|
||||
|
||||
cmdSelectRasnRapyn.CommandText = sb.ToString();
|
||||
DataTable rasnTmp1 = Query.Select(cmdSelectRasnRapyn);
|
||||
|
||||
// 一筆一筆的抓出應該顯示的資料
|
||||
DataTable rasnTmp2;
|
||||
foreach (DataRow rasnRow in rasnTmp1.Rows)
|
||||
{
|
||||
// 依照員工編號及派遣項次,抓出最後一筆異動
|
||||
cmdSelectRasb.Parameters["RANUM"].Value = rasnRow["RANUM"];
|
||||
cmdSelectRasb.Parameters["RAITM"].Value = rasnRow["RAITM"];
|
||||
rasnTmp2 = Query.Select(cmdSelectRasb);
|
||||
|
||||
// 填入異動資料
|
||||
if (rasnTmp2.Rows.Count != 0)
|
||||
{
|
||||
FillResult(Result, rasnTmp2.Rows[0]);
|
||||
}
|
||||
}
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取出某一筆派遣異動資料,給 FormView 的 Select 用的
|
||||
/// </summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable SelectOne(string RANUM, int RAITM, int RBITM)
|
||||
{
|
||||
return SelectOne(RANUM, RAITM, RBITM, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取出某一筆派遣異動資料,可加入交易中執行
|
||||
/// </summary>
|
||||
public DataTable SelectOne(string RANUM, int RAITM, int RBITM, DbTransaction tran)
|
||||
{
|
||||
DataTable Result = NewResult();
|
||||
DataTable tmp;
|
||||
|
||||
if (RANUM != null && RANUM.Length > 0)
|
||||
{
|
||||
// 取原始資料
|
||||
if (RBITM == 0)
|
||||
{
|
||||
cmdSelectRasnOne.Parameters["RANUM"].Value = RANUM;
|
||||
cmdSelectRasnOne.Parameters["RAITM"].Value = RAITM;
|
||||
if (tran == null)
|
||||
tmp = Query.Select(cmdSelectRasnOne);
|
||||
else
|
||||
tmp = Query.Select(cmdSelectRasnOne, tran);
|
||||
if (tmp.Rows.Count > 0)
|
||||
FillResult(Result, tmp.Rows[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
cmdSelectRasbOne.Parameters["RANUM"].Value = RANUM;
|
||||
cmdSelectRasbOne.Parameters["RAITM"].Value = RAITM;
|
||||
cmdSelectRasbOne.Parameters["RBITM"].Value = RBITM;
|
||||
if (tran == null)
|
||||
tmp = Query.Select(cmdSelectRasbOne);
|
||||
else
|
||||
tmp = Query.Select(cmdSelectRasbOne, tran);
|
||||
if (tmp.Rows.Count > 0)
|
||||
FillResult(Result, tmp.Rows[0]);
|
||||
}
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取出所有派遣異動歷史資料,派遣異動查詢用
|
||||
/// </summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable SelectRASB(string RANUM, int RAITM)
|
||||
{
|
||||
DataTable Result = NewResult();
|
||||
|
||||
if (RANUM != null && RANUM.Length > 0)
|
||||
{
|
||||
cmdSelectRasnAll.Parameters["RANUM"].Value = RANUM;
|
||||
cmdSelectRasnAll.Parameters["RAITM"].Value = RAITM;
|
||||
|
||||
DataTable tmp = Query.Select(cmdSelectRasnAll);
|
||||
for (int i = 0; i < tmp.Rows.Count; i++)
|
||||
{
|
||||
if (i > 0)
|
||||
FillResult(Result, tmp.Rows[i], tmp.Rows[i - 1]);
|
||||
else
|
||||
FillResult(Result, tmp.Rows[i]);
|
||||
}
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取出某人員最近的專案
|
||||
/// </summary>
|
||||
/// <param name="BPENO"></param>
|
||||
/// <returns></returns>
|
||||
public DataTable SelectRecent(string BPENO)
|
||||
{
|
||||
return SelectRecentByDate(BPENO, DateTime.UtcNow.AddHours(8).Date);
|
||||
|
||||
//var cmd = Query.NewCommand(
|
||||
// @"SELECT TOP 1 A.BPENO, A.BPNME
|
||||
// , B.RANUM, B.RAITM, B.RACNM, B.RAPYN, B.RASDT, B.RAEDT, B.RABRH, B.RAWTZ
|
||||
// , F.BPCNO, F.BPCME, F.BPSRM, F.BPSRD
|
||||
// FROM BPSNView A
|
||||
// LEFT OUTER JOIN RASN B ON A.BPENO=B.RANUM AND (B.RAEDT IS NULL OR (B.RASDT <= @TODAY AND B.RAEDT >= @TODAY))
|
||||
// LEFT OUTER JOIN BPJB F ON B.RAPYN=F.BPPYN AND B.RAJNO=F.BPJNO AND B.RACNO=F.BPCNO
|
||||
// WHERE A.BPENO = @BPENO
|
||||
// ORDER BY B.RASDT DESC");
|
||||
//Query.AddParam(cmd, "TODAY", DateTime.UtcNow.AddHours(8).Date);
|
||||
//Query.AddParam(cmd, "BPENO", BPENO);
|
||||
//return Query.Select(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取出某人員某日期的專案
|
||||
/// </summary>
|
||||
/// <param name="BPENO"></param>
|
||||
/// <returns></returns>
|
||||
public DataTable SelectRecentByDate(string BPENO, DateTime DATE)
|
||||
{
|
||||
var cmd = Query.NewCommand(
|
||||
@"SELECT TOP 1 A.BPENO, A.BPNME
|
||||
, B.RANUM, B.RAITM, B.RACNM, B.RAPYN, B.RASDT, B.RAEDT, B.RABRH, B.RAWTZ
|
||||
, F.BPCNO, F.BPCME, F.BPSRM, F.BPSRD
|
||||
FROM BPSNView A
|
||||
LEFT OUTER JOIN RASN B ON A.BPENO=B.RANUM AND ((B.RASDT <= @DATE AND B.RAEDT IS NULL) OR (B.RASDT <= @DATE AND B.RAEDT >= @DATE))
|
||||
LEFT OUTER JOIN BPJB F ON B.RAPYN=F.BPPYN AND B.RAJNO=F.BPJNO AND B.RACNO=F.BPCNO
|
||||
WHERE A.BPENO = @BPENO
|
||||
ORDER BY B.RASDT DESC");
|
||||
Query.AddParam(cmd, "DATE", DATE);
|
||||
Query.AddParam(cmd, "BPENO", BPENO);
|
||||
return Query.Select(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取出某專案年度接單的站別清單
|
||||
/// </summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public List<RASNBRHItem> SelectBranchForForm(string rapyn)
|
||||
{
|
||||
var cmd = Query.NewCommand(
|
||||
@"SELECT DISTINCT A.RAPYN ProjectID, A.RABRH BranchID, B.BSSCR BranchName, B.BSRMK BranchShortName, GroupID
|
||||
FROM RASN A
|
||||
JOIN BCLS B ON A.RABRH=B.BSCLS AND B.BSPAR='BPSNBRH'
|
||||
LEFT JOIN ProjectBranchGroup C ON A.RAPYN=C.ProjectID AND A.RABRH=C.BranchID
|
||||
WHERE A.RAPYN=@RAPYN");
|
||||
Query.AddParam(cmd, "RAPYN", rapyn);
|
||||
return Query.Select<RASNBRHItem>(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取出某專案年度接單的站別清單,依照分組順序排序
|
||||
/// </summary>
|
||||
public List<RASNBRHItem> SelectBranchForReport(string rapyn)
|
||||
{
|
||||
var cmd = Query.NewCommand(
|
||||
@"SELECT DISTINCT A.RAPYN ProjectID, A.RABRH BranchID, B.BSSCR BranchName, B.BSRMK BranchShortName, GroupID
|
||||
FROM RASN A
|
||||
JOIN BCLS B ON A.RABRH=B.BSCLS AND B.BSPAR='BPSNBRH'
|
||||
JOIN ProjectBranchGroup C ON A.RAPYN=C.ProjectID AND A.RABRH=C.BranchID
|
||||
WHERE A.RAPYN=@RAPYN
|
||||
ORDER BY GroupID");
|
||||
Query.AddParam(cmd, "RAPYN", rapyn);
|
||||
return Query.Select<RASNBRHItem>(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取出某人員的專案歷史紀錄
|
||||
/// </summary>
|
||||
/// <param name="ranum"></param>
|
||||
/// <returns></returns>
|
||||
public DataTable SelectHistoryByEmployee(string ranum)
|
||||
{
|
||||
var cmd = Query.NewCommand(
|
||||
@"SELECT B.BPENO, B.BPNME
|
||||
, A.RAITM, A.RAPYN, C.BPPYM
|
||||
, A.RASDT, A.RAEDT, A.RABRH, D.BSSCR
|
||||
, F.BPJNO, F.BPJME
|
||||
FROM RASN A
|
||||
LEFT OUTER JOIN BPSNView B ON B.BPENO=A.RANUM
|
||||
LEFT JOIN BPAA C ON A.RAPYN = C.BPPYN
|
||||
LEFT JOIN BCLS D ON A.RABRH = D.BSCLS AND D.BSPAR = 'BPSNBRH'
|
||||
LEFT JOIN BPJA F ON A.RAPYN = F.BPPYN AND A.RAJNO=F.BPJNO
|
||||
WHERE A.RANUM = @RANUM
|
||||
ORDER BY A.RASDT DESC");
|
||||
Query.AddParam(cmd, "RANUM", ranum);
|
||||
return Query.Select(cmd);
|
||||
}
|
||||
|
||||
public void GetTimeZone(string bpeno, DateTime date, out string timezoneID, out string timezoneName)
|
||||
{
|
||||
var rasnTable = SelectRecentByDate(bpeno, date);
|
||||
timezoneName = string.Empty;
|
||||
timezoneID = string.Empty;
|
||||
|
||||
if (rasnTable.Rows.Count > 0)
|
||||
{
|
||||
timezoneName = WDAC.GetStringValue(rasnTable.Rows[0]["RAWTZ"]);
|
||||
|
||||
DbCommand cmd = Query.NewCommand();
|
||||
cmd.CommandText = "SELECT WINDOWS_ID FROM BTMZ WHERE NAME=@NAME";
|
||||
cmd.Parameters.Clear();
|
||||
Query.AddParam(cmd, "NAME", rasnTable.Rows[0]["RAWTZ"]);
|
||||
timezoneID = WDAC.GetStringValue(Query.ExecuteScalar(cmd)).Trim();
|
||||
|
||||
// 如果表格內沒取到,這裡做個保險
|
||||
if (string.IsNullOrEmpty(timezoneID))
|
||||
{
|
||||
switch (timezoneName)
|
||||
{
|
||||
case "台北":
|
||||
case "":
|
||||
case null:
|
||||
break;
|
||||
case "美西":
|
||||
timezoneID = "Pacific Standard Time";
|
||||
break;
|
||||
case "美東":
|
||||
timezoneID = "Eastern Standard Time";
|
||||
break;
|
||||
case "東京":
|
||||
timezoneID = "Tokyo Standard Time";
|
||||
break;
|
||||
case "倫敦":
|
||||
timezoneID = "GMT Standard Time";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取出日期區間內派遣資料以及派遣異動資料
|
||||
/// </summary>
|
||||
/*
|
||||
public DataTable SelectRASNDateRange(string RANUM, int RAITM, DateTime startDay, DateTime endDay, DbTransaction tran)
|
||||
{
|
||||
// 1. 取出區間內派遣資料,依照開始日期排序
|
||||
DbCommand cmd = Query.NewCommand(
|
||||
@"SELECT RANUM, RAITM, RASDT
|
||||
FROM RASN
|
||||
WHERE RANUM=@RANUM AND RAITM=@RAITM
|
||||
AND ((RASDT <= @YYMM1 AND RAEDT >= @YYMM2)
|
||||
OR (RASDT <= @YYMM1 AND RAEDT IS NULL)
|
||||
OR (RASDT <= @YYMM1 AND RAEDT >= @YYMM1 AND RAEDT <= @YYMM2)
|
||||
OR (RASDT >= @YYMM1 AND RASDT <= @YYMM2 AND RAEDT >= @YYMM2)
|
||||
OR (RASDT >= @YYMM1 AND RASDT <= @YYMM2 AND RAEDT IS NULL)
|
||||
OR (RASDT >= @YYMM1 AND RASDT <= @YYMM2 AND RAEDT >= @YYMM1 AND RAEDT <= @YYMM2))
|
||||
ORDER BY RASDT");
|
||||
cmd.Parameters.Add(Query.NewParameter("RANUM", RANUM));
|
||||
cmd.Parameters.Add(Query.NewParameter("RAITM", RAITM));
|
||||
cmd.Parameters.Add(Query.NewParameter("YYMM1", startDay));
|
||||
cmd.Parameters.Add(Query.NewParameter("YYMM2", endDay));
|
||||
cmd.Connection = tran.Connection;
|
||||
cmd.Transaction = tran;
|
||||
DbDataAdapter da = Query.NewDataAdapter(cmd);
|
||||
DataTable rasnTmp1 = new DataTable();
|
||||
da.Fill(rasnTmp1);
|
||||
|
||||
if (rasnTmp1.Rows.Count == 0)
|
||||
return rasnTmp1;
|
||||
|
||||
DataTable rasn;
|
||||
|
||||
foreach (DataRow rasnRow in rasnTmp1.Rows)
|
||||
{
|
||||
string ranum = rasnRow["RANUM"].ToString();
|
||||
int raitm = Convert.ToInt32(rasnRow["RAITM"]);
|
||||
|
||||
// 取得主檔與異動紀錄
|
||||
rasn = SelectRASB(ranum, raitm);
|
||||
// 取得異動紀錄
|
||||
//rpir.Merge(rpirDao.SelectRPIBMonth(ranum, startDay, endDay, tran), true, MissingSchemaAction.Add);
|
||||
}
|
||||
|
||||
// 整理每一筆紀錄,將退保日期填入
|
||||
for (int i = 0; i < rasn.Rows.Count; i++)
|
||||
{
|
||||
int rpitm = Convert.ToInt32(rasn.Rows[i]["RPITM"]);
|
||||
|
||||
rasn.Rows[i].BeginEdit();
|
||||
|
||||
// 若項次不是 0,把加保日填入生效日 //的次月一號
|
||||
if (rpitm != 0)
|
||||
{
|
||||
DateTime rpbdt = Convert.ToDateTime(rasn.Rows[i]["RPBDT"]);
|
||||
//rpir.Rows[i]["RPSDT"] = WGuard1.GetMonthBegin(rpbdt, 1);
|
||||
rasn.Rows[i]["RPSDT"] = rpbdt;
|
||||
}
|
||||
|
||||
// 沒有退保日
|
||||
if (rasn.Rows[i]["RPEDT"] == DBNull.Value)
|
||||
{
|
||||
// 若不是最後一筆,且下一筆項次不是 0
|
||||
if (i < rasn.Rows.Count - 1 && Convert.ToInt32(rasn.Rows[i + 1]["RPITM"]) != 0)
|
||||
{
|
||||
// 下一筆沒有退保日,把下一筆的生效日期前一天 // 的當月月底,放入退保日期
|
||||
if (rasn.Rows[i + 1]["RPEDT"] == DBNull.Value)
|
||||
{
|
||||
DateTime rpbdt = Convert.ToDateTime(rasn.Rows[i + 1]["RPBDT"]);
|
||||
//rpir.Rows[i]["RPEDT"] = WGuard1.GetMonthEnd(rpbdt, 0);
|
||||
rasn.Rows[i]["RPEDT"] = rpbdt.AddDays(-1);
|
||||
}
|
||||
// 下一筆有退保日,把下一筆的退保日,放入這一筆的退保日期
|
||||
else
|
||||
{
|
||||
rasn.Rows[i]["RPEDT"] = rasn.Rows[i + 1]["RPEDT"];
|
||||
}
|
||||
}
|
||||
// 最後一筆
|
||||
else if (i == rasn.Rows.Count - 1)
|
||||
{
|
||||
DateTime rpsdt = Convert.ToDateTime(rasn.Rows[i]["RPSDT"]);
|
||||
// 加保日大於月底日,退保日放入加保日的當月月底
|
||||
if (rpsdt > endDay)
|
||||
rasn.Rows[i]["RPEDT"] = WGuard1.GetMonthEnd(rpsdt, 0);
|
||||
// 否則放入月底日
|
||||
else
|
||||
rasn.Rows[i]["RPEDT"] = endDay;
|
||||
}
|
||||
}
|
||||
|
||||
rasn.Rows[i].EndEdit();
|
||||
}
|
||||
|
||||
// 再一次整理,剔除:
|
||||
// 1. 加保日與退保日均在日期區間外的紀錄
|
||||
// 2. 退保日小於加保日的紀錄
|
||||
// 3. 加保日等於退保日且是最後一筆,但項次不是 0 的紀錄
|
||||
int count = rasn.Rows.Count - 1;
|
||||
for (int i = rasn.Rows.Count - 1; i >= 0; i--)
|
||||
{
|
||||
DateTime rpsdt = Convert.ToDateTime(rasn.Rows[i]["RPSDT"]);
|
||||
DateTime rpedt = Convert.ToDateTime(rasn.Rows[i]["RPEDT"]);
|
||||
int rpitm = Convert.ToInt32(rasn.Rows[i]["RPITM"]);
|
||||
|
||||
if ((rpsdt < startDay && rpedt < startDay)
|
||||
|| (rpsdt > endDay && rpedt > endDay)
|
||||
|| (rpsdt > rpedt)
|
||||
|| (rpsdt == rpedt && i == count && rpitm != 0))
|
||||
rasn.Rows.RemoveAt(i);
|
||||
}
|
||||
return rasn;
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class RASNBRHItem
|
||||
{
|
||||
public string ProjectID { get; set; }
|
||||
public string BranchID { get; set; }
|
||||
public string BranchName { get; set; }
|
||||
public string BranchShortName { get; set; }
|
||||
public string GroupID { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user