Files
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

258 lines
8.6 KiB
C#

//
// 這個檔案是 表單簽核明細 資料表的資料存取類別 檔案二
// 您可以修改這個檔案,加入您自訂的屬性與方法
//
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using WebLib;
using System.Data.SqlClient;
namespace Education
{
///<summary>
/// 表單簽核明細 資料存取類別
///</summary>
public partial class DAC_表單簽核明細 : WebLib.DAC
{
///<summary>
/// 給查詢畫面用的 Select 方法
///</summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public 表單簽核明細List Select()
{
表單簽核明細List result = new 表單簽核明細List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where;
cmdSelect.CommandText += _order;
Select(cmdSelect, ref list);
return result;
}
///<summary>
/// InsertOne 之前會執行此方法
/// 在這裡可以做一些檢查或是自動編號等動作
/// 回傳 false 會打斷 InsertOne 的執行
///</summary>
protected virtual bool BeforeInsertOne(表單簽核明細 value)
{
return true;
}
///<summary>
/// InsertOne 之後會執行此方法
///</summary>
protected virtual void AfterInsertOne(表單簽核明細 value)
{
}
///<summary>
/// InsertOne 發生錯誤時會執行此方法
///</summary>
protected virtual void OnInsertOneError(Exception error, out bool handled)
{
handled = false;
}
///<summary>
/// UpdateOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 UpdateOne 的執行
///</summary>
protected virtual bool BeforeUpdateOne(表單簽核明細 value)
{
return true;
}
///<summary>
/// UpdateOne 之後會執行此方法
///</summary>
protected virtual void AfterUpdateOne(表單簽核明細 value)
{
}
///<summary>
/// UpdateOne 發生錯誤時會執行此方法
///</summary>
protected virtual void OnUpdateOneError(Exception error, out bool handled)
{
handled = false;
}
///<summary>
/// DeleteOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 DeleteOne 的執行
///</summary>
protected virtual bool BeforeDeleteOne(表單簽核明細 value)
{
return true;
}
///<summary>
/// DeleteOne 之後會執行此方法
///</summary>
protected virtual void AfterDeleteOne(表單簽核明細 value)
{
}
///<summary>
/// DeleteOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 DeleteOne 的執行
///</summary>
protected virtual bool BeforeDeleteOne(int 簽核ID, string ID, int DB_APPNO)
{
return true;
}
///<summary>
/// DeleteOne 之後會執行此方法
///</summary>
protected virtual void AfterDeleteOne(int 簽核ID, string ID, int DB_APPNO)
{
}
///<summary>
/// DeleteOne 發生錯誤時會執行此方法
///</summary>
protected virtual void OnDeleteOneError(Exception error, out bool handled)
{
handled = false;
}
// 有另外加上去的屬性及方法,請加在這裡
/// <summary>
/// 取得這張表單目前可以簽核的人員
/// </summary>
/// <param name="簽核ID"></param>
/// <returns></returns>
public 表單簽核明細List GetCanApprove(int 簽核ID)
{
表單簽核明細List result = new 表單簽核明細List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = "select top 1 " + _insert + _from;
cmdSelect.CommandText += " where 簽核ID = @簽核ID ";
cmdSelect.CommandText += " order by 關ID desc ";
AddParam(cmdSelect, "簽核ID", 簽核ID);
Select(cmdSelect, ref list);
for (int i = result.Count - 1; i >= 0; i--)
{
if (result[i].簽核結果.Length > 0)
result.RemoveAt(i);
}
return result;
}
/// <summary>
/// 取得一張簽核單的最後一筆簽核明細
/// </summary>
public 表單簽核明細 GetLast(int 簽核ID)
{
表單簽核明細List result = new 表單簽核明細List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where;
cmdSelect.CommandText += " and 簽核ID = @簽核ID ";
cmdSelect.CommandText += " order by 關ID desc";
AddParam(cmdSelect, "簽核ID", 簽核ID);
Select(cmdSelect, ref list);
if (result.Count > 0)
return result[0];
else
return null;
}
/// <summary>
/// 取得一張簽核單的所有明細
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public 表單簽核明細List SelectOneId(int 簽核ID)
{
表單簽核明細List result = new 表單簽核明細List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where;
cmdSelect.CommandText += " and 簽核ID = @簽核ID ";
cmdSelect.CommandText += " order by 關ID desc";
AddParam(cmdSelect, "簽核ID", 簽核ID);
Select(cmdSelect, ref list);
return result;
}
private 表單簽核明細List Select稽催(int 稽催狀態)
{
表單簽核明細List result = new 表單簽核明細List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + _where;
cmdSelect.CommandText += " and (簽核結果 <> 'Y' and 簽核結果 <> 'N') ";
cmdSelect.CommandText += " and (簽核人員 is not null and 簽核人員 <> '') ";
cmdSelect.CommandText += " and exists (select 1 from 表單簽核主檔 where 表單簽核主檔.簽核ID = 表單簽核明細.簽核ID and 表單簽核主檔.應簽關數 <> 'D' and 表單簽核主檔.已簽關數 <> 'D') ";
int daysBefore = 0;
switch (稽催狀態)
{
case 0:
cmdSelect.CommandText += " and (稽催狀態 is null or 稽催狀態 = 0) ";
daysBefore = -3;
break;
case 1:
cmdSelect.CommandText += " and (稽催狀態 = 1) ";
daysBefore = -7;
break;
case 2:
cmdSelect.CommandText += " and (稽催狀態 = 2) ";
daysBefore = -14;
break;
}
cmdSelect.CommandText += " and DB_CRDAT < @DATE ";
AddParam(cmdSelect, "DATE", DateTime.UtcNow.AddHours(8).Date.AddDays(daysBefore));
Select(cmdSelect, ref list);
return result;
}
[DataObjectMethod(DataObjectMethodType.Select)]
public 表單簽核明細List Select第一次稽催()
{
return Select稽催(0);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public 表單簽核明細List Select第二次稽催()
{
return Select稽催(1);
}
[DataObjectMethod(DataObjectMethodType.Select)]
public 表單簽核明細List Select第三次稽催()
{
return Select稽催(2);
}
}
///<summary>
/// 表單簽核明細 資料集合類別
///</summary>
public partial class 表單簽核明細List : List<表單簽核明細>
{
// 有另外加上去的屬性及方法,請加在這裡
}
///<summary>
/// 表單簽核明細 資料紀錄類別
///</summary>
public partial class 表單簽核明細
{
// 有另外加上去的屬性及方法,請加在這裡
}
}