// // 這個檔案是 表單簽核明細 資料表的資料存取類別 檔案二 // 您可以修改這個檔案,加入您自訂的屬性與方法 // 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 { /// /// 表單簽核明細 資料存取類別 /// public partial class DAC_表單簽核明細 : WebLib.DAC { /// /// 給查詢畫面用的 Select 方法 /// [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; } /// /// InsertOne 之前會執行此方法 /// 在這裡可以做一些檢查或是自動編號等動作 /// 回傳 false 會打斷 InsertOne 的執行 /// protected virtual bool BeforeInsertOne(表單簽核明細 value) { return true; } /// /// InsertOne 之後會執行此方法 /// protected virtual void AfterInsertOne(表單簽核明細 value) { } /// /// InsertOne 發生錯誤時會執行此方法 /// protected virtual void OnInsertOneError(Exception error, out bool handled) { handled = false; } /// /// UpdateOne 之前會執行此方法 /// 在這裡可以做一些檢查 /// 回傳 false 會打斷 UpdateOne 的執行 /// protected virtual bool BeforeUpdateOne(表單簽核明細 value) { return true; } /// /// UpdateOne 之後會執行此方法 /// protected virtual void AfterUpdateOne(表單簽核明細 value) { } /// /// UpdateOne 發生錯誤時會執行此方法 /// protected virtual void OnUpdateOneError(Exception error, out bool handled) { handled = false; } /// /// DeleteOne 之前會執行此方法 /// 在這裡可以做一些檢查 /// 回傳 false 會打斷 DeleteOne 的執行 /// protected virtual bool BeforeDeleteOne(表單簽核明細 value) { return true; } /// /// DeleteOne 之後會執行此方法 /// protected virtual void AfterDeleteOne(表單簽核明細 value) { } /// /// DeleteOne 之前會執行此方法 /// 在這裡可以做一些檢查 /// 回傳 false 會打斷 DeleteOne 的執行 /// protected virtual bool BeforeDeleteOne(int 簽核ID, string 關ID, int DB_APPNO) { return true; } /// /// DeleteOne 之後會執行此方法 /// protected virtual void AfterDeleteOne(int 簽核ID, string 關ID, int DB_APPNO) { } /// /// DeleteOne 發生錯誤時會執行此方法 /// protected virtual void OnDeleteOneError(Exception error, out bool handled) { handled = false; } // 有另外加上去的屬性及方法,請加在這裡 /// /// 取得這張表單目前可以簽核的人員 /// /// /// 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; } /// /// 取得一張簽核單的最後一筆簽核明細 /// 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; } /// /// 取得一張簽核單的所有明細 /// [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); } } /// /// 表單簽核明細 資料集合類別 /// public partial class 表單簽核明細List : List<表單簽核明細> { // 有另外加上去的屬性及方法,請加在這裡 } /// /// 表單簽核明細 資料紀錄類別 /// public partial class 表單簽核明細 { // 有另外加上去的屬性及方法,請加在這裡 } }