using System; using System.Data; using System.Configuration; using System.Data.Common; using System.Collections; using System.Collections.Generic; using Wellan.Data; using Wellan.Common; using System.Transactions; using System.ComponentModel; /// /// 簽核關卡人員檔 /// [DataObject] public class BsgpDAC : Wellan.Data.WDAC { private string _select = @" SELECT BSPYN, BSFLW, BSLVL, BSENO, TRDAT, TRMOD, TRUSR, CASE WHEN SUBSTRING(BSENO, 1, 1) = 'Z' THEN (SELECT TOP 1 BPNME FROM BPAP WHERE BPENO=BSENO) ELSE (SELECT TOP 1 BPNME FROM BPSNView WHERE BPENO=BSENO) END AS BSNME, CASE WHEN SUBSTRING(BSENO, 1, 1) = 'Z' THEN (SELECT TOP 1 BPEML FROM BPAP WHERE BPENO=BSENO) ELSE (SELECT TOP 1 BPEML FROM BPSNView WHERE BPENO=BSENO) END AS BSEML FROM BSGP "; private string _insert = @"INSERT INTO dbo.BSGP (BSPYN, BSFLW, BSLVL, BSENO, TRDAT, TRMOD, TRUSR) VALUES (@BSPYN, @BSFLW, @BSLVL, @BSENO, GETDATE(), 'INSERT', @TRUSR)"; private string _update = @"UPDATE BSGP SET BSPYN = @BSPYN, BSFLW = @BSFLW, BSLVL = @BSLVL, BSENO = @BSENO, TRDAT = GETDATE(), TRMOD = 'UPDATE', TRUSR = @TRUSR WHERE BSPYN = @OLD_BSPYN AND BSFLW = @OLD_BSFLW AND BSLVL = @OLD_BSLVL AND BSENO = @OLD_BSENO"; private string _delete = @"DELETE FROM BSGP WHERE BSPYN = @OLD_BSPYN AND BSFLW = @OLD_BSFLW AND BSLVL = @OLD_BSLVL AND BSENO = @OLD_BSENO"; public BsgpDAC() { } public BsgpDAC(string connectionConfig, string connectionConfigName) : this() { this._connectionConfig = connectionConfig; this._connectionConfigName = connectionConfigName; } public BsgpDAC(WQuery query) { this._query = query; } [DataObjectMethod(DataObjectMethodType.Select)] public DataTable SelectAll() { DbCommand cmd = Query.NewCommand(); cmd.CommandText = _select + " ORDER BY BSPYN, BSFLW, BSLVL, BSENO "; return Query.Select(cmd); } [DataObjectMethod(DataObjectMethodType.Select)] public DataTable SelectOne(string BSPYN, string BSFLW, int BSLVL, string BSENO) { DbCommand cmd = Query.NewCommand(); cmd.CommandText = _select + " WHERE BSPYN = @BSPYN AND BSFLW = @BSFLW AND BSLVL = @BSLVL AND BSENO = @BSENO "; AddParam(cmd, "BSPYN", BSPYN); AddParam(cmd, "BSFLW", BSFLW); AddParam(cmd, "BSLVL", BSLVL); AddParam(cmd, "BSENO", BSENO); return Query.Select(cmd); } [DataObjectMethod(DataObjectMethodType.Select)] public DataTable SelectByLevel(string BSPYN, string BSFLW, int BSLVL) { DbCommand cmd = Query.NewCommand(); cmd.CommandText = _select + " WHERE BSPYN = @BSPYN AND BSFLW = @BSFLW AND BSLVL = @BSLVL ORDER BY BSENO "; AddParam(cmd, "BSPYN", BSPYN); AddParam(cmd, "BSFLW", BSFLW); AddParam(cmd, "BSLVL", BSLVL); return Query.Select(cmd); } [DataObjectMethod(DataObjectMethodType.Select)] public DataTable SelectForDropdown(string BSPYN, string BSFLW, int BSLVL) { DbCommand cmd = Query.NewCommand(); cmd.CommandText = _select + " WHERE BSPYN = @BSPYN AND BSFLW = @BSFLW AND BSLVL = @BSLVL ORDER BY BSENO "; //@"SELECT NULL AS BSPYN, NULL AS BSFLW, NULL AS BSLVL, NULL AS BSENO, NULL AS TRDAT, // NULL AS TRMOD, NULL AS TRUSR, NULL AS BSNME // UNION ALL " // + _select + " WHERE BSPYN = @BSPYN AND BSFLW = @BSFLW AND BSLVL = @BSLVL ORDER BY BSENO "; AddParam(cmd, "BSPYN", BSPYN); AddParam(cmd, "BSFLW", BSFLW); AddParam(cmd, "BSLVL", BSLVL); return Query.Select(cmd); } [DataObjectMethod(DataObjectMethodType.Insert)] public void InsertOne(string BSPYN, string BSFLW, int BSLVL, string BSENO, string TRUSR) { if (SelectOne(BSPYN, BSFLW, BSLVL, BSENO).Rows.Count > 0) return; DbCommand cmd = Query.NewCommand(); cmd.CommandText = _insert; AddParam(cmd, "BSPYN", BSPYN); AddParam(cmd, "BSFLW", BSFLW); AddParam(cmd, "BSLVL", BSLVL); AddParam(cmd, "BSENO", BSENO); AddParam(cmd, "TRUSR", TRUSR); Query.ExecuteNonQuery(cmd); } [DataObjectMethod(DataObjectMethodType.Update)] public void UpdateOne(string OLD_BSPYN, string OLD_BSFLW, int OLD_BSLVL, string OLD_BSENO, string BSPYN, string BSFLW, int BSLVL, string BSENO, string TRUSR) { DbCommand cmd = Query.NewCommand(); cmd.CommandText = _update; AddParam(cmd, "BSPYN", BSPYN); AddParam(cmd, "BSFLW", BSFLW); AddParam(cmd, "BSLVL", BSLVL); AddParam(cmd, "BSENO", BSENO); AddParam(cmd, "OLD_BSPYN", OLD_BSPYN); AddParam(cmd, "OLD_BSFLW", OLD_BSFLW); AddParam(cmd, "OLD_BSLVL", OLD_BSLVL); AddParam(cmd, "OLD_BSENO", OLD_BSENO); AddParam(cmd, "TRUSR", TRUSR); Query.ExecuteNonQuery(cmd); } [DataObjectMethod(DataObjectMethodType.Delete)] public void DeleteOne(string OLD_BSPYN, string OLD_BSFLW, int OLD_BSLVL, string OLD_BSENO) { DbCommand cmd = Query.NewCommand(); cmd.CommandText = _delete; AddParam(cmd, "OLD_BSPYN", OLD_BSPYN); AddParam(cmd, "OLD_BSFLW", OLD_BSFLW); AddParam(cmd, "OLD_BSLVL", OLD_BSLVL); AddParam(cmd, "OLD_BSENO", OLD_BSENO); Query.ExecuteNonQuery(cmd); } public bool 是否是主要簽核(string BSENO) { DbCommand cmd = Query.NewCommand(); cmd.CommandText = @"SELECT COUNT(1) FROM BSGP WHERE BSLVL IN (1, 3) AND BSENO=@BSENO"; AddParam(cmd, "BSENO", BSENO); return GetInt32Value(Query.ExecuteScalar(cmd)) > 0; } [DataObjectMethod(DataObjectMethodType.Select)] public DataTable 我督導的專案(string BSENO) { DbCommand cmd = Query.NewCommand(); cmd.CommandText = @"SELECT A.BSPYN, B.BPPYM FROM BSGP A INNER JOIN BPAA B ON A.BSPYN=B.BPPYN WHERE BSLVL=3 AND BSENO=@BSENO ORDER BY BSPYN"; AddParam(cmd, "BSENO", BSENO); return Query.Select(cmd); } [DataObjectMethod(DataObjectMethodType.Select)] public DataTable 我可簽核的專案(int Year1, int Year2, string BSENO) { string yearWhere = ""; if (Year1 > 0 && Year2 > 0) yearWhere = " AND B.BPYER>=@BPYER1 AND B.BPYER<=@BPYER2 "; if (Year1 > 0 && Year2 == 0) yearWhere = " AND B.BPYER=@BPYER1 "; if (Year1 == 0 && Year2 > 0) yearWhere = " AND B.BPYER=@BPYER2 "; DbCommand cmd = Query.NewCommand(); cmd.CommandText = String.Format( @"SELECT A.BSPYN, B.BPPYM FROM BSGP A INNER JOIN BPAA B ON A.BSPYN=B.BPPYN {0} WHERE BSLVL IN (1, 3) AND BSENO=@BSENO UNION SELECT A.BSPYN, B.BPPYM FROM BSGP A INNER JOIN BPAA B ON A.BSPYN=B.BPPYN WHERE BSLVL IN (1, 3) AND BSENO=@BSENO AND (BPPYN = '103TYB00001' OR BPPYN = '103JYB00001') ORDER BY BSPYN", yearWhere); AddParam(cmd, "BPYER1", Year1); AddParam(cmd, "BPYER2", Year2); AddParam(cmd, "BSENO", BSENO); return Query.Select(cmd); } [DataObjectMethod(DataObjectMethodType.Select)] public DataTable 我可簽核的專案(int Year, string BSENO) { return 我可簽核的專案(Year, 0, BSENO); } }