chore: 首次簽入 Thinkyu ASP.NET 專案

- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
2026-09-10 09:42:37 +08:00
commit 577060bc78
2496 changed files with 501389 additions and 0 deletions
+595
View File
@@ -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; }
}