feat: fmRasn GridView 改用 ObjectDataSource
- RasnDAC 新增 SelectPage/SelectCount 及 SelectRAENO/SelectRABRH - dsRASNGrid 改 ObjectDataSource(EnablePaging);dsRASN_RAENO1/dsRASN_RABRH1 改 ObjectDataSource - Search/Selected 調整
This commit is contained in:
@@ -12,6 +12,7 @@ using Wellan.Data;
|
||||
/// <summary>
|
||||
/// 人員派遣資料的資料處理類別
|
||||
/// </summary>
|
||||
[DataObject(true)]
|
||||
public class RasnDAC : Wellan.Data.WDAC
|
||||
{
|
||||
private DbCommand cmdSelectRasnRapyn = null;
|
||||
@@ -582,6 +583,124 @@ public class RasnDAC : Wellan.Data.WDAC
|
||||
}
|
||||
*/
|
||||
|
||||
/// <summary>
|
||||
/// 派遣人員清單 (未結束,供挑選人員用)
|
||||
/// </summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable SelectRAENO(string RAPYN)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand(
|
||||
@"SELECT A.RANUM, B.BPNME
|
||||
FROM RASN AS A
|
||||
INNER JOIN BPSNView AS B ON A.RANUM = B.BPENO
|
||||
WHERE (A.RAPYN = @RAPYN) AND A.RAEDT IS NULL");
|
||||
cmd.Parameters.Add(Query.NewParameter("RAPYN", RAPYN));
|
||||
return Query.Select(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 站別統計 (未結束,供挑選站別用)
|
||||
/// </summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable SelectRABRH(string RAPYN)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand(
|
||||
@"SELECT A.RABRH, B.BSSCR, COUNT(1) AS RABRH_COUNT
|
||||
FROM RASN AS A
|
||||
INNER JOIN BCLS AS B ON A.RABRH = B.BSCLS AND B.BSPAR = 'BPSNBRH'
|
||||
WHERE (A.RAPYN = @RAPYN) AND A.RAEDT IS NULL
|
||||
GROUP BY A.RABRH, B.BSSCR");
|
||||
cmd.Parameters.Add(Query.NewParameter("RAPYN", RAPYN));
|
||||
return Query.Select(cmd);
|
||||
}
|
||||
|
||||
private static readonly List<string> HQ_RAPYNS = new List<string>() { "103TYB00001", "103JYB00001" };
|
||||
|
||||
private string BuildRasnGridSql(string RAPYN, string BPENO, string BPNME, int year, StringBuilder filter, DbCommand cmd)
|
||||
{
|
||||
string order1, order2;
|
||||
if (HQ_RAPYNS.IndexOf(RAPYN) < 0)
|
||||
{
|
||||
order1 = "RANUM";
|
||||
order2 = "RAEDT, RANUM";
|
||||
}
|
||||
else
|
||||
{
|
||||
order1 = "RAEDT, RANUM";
|
||||
order2 = "RAEDT, RANUM";
|
||||
}
|
||||
|
||||
if (year > 0 && HQ_RAPYNS.IndexOf(RAPYN) < 0)
|
||||
{
|
||||
filter.AppendFormat(
|
||||
" AND ((RASDT >= '{0}/01/01' AND RASDT <= '{0}/12/31') OR (RAEDT >= '{0}/01/01' AND RAEDT <= '{0}/12/31') OR (RASDT <= '{0}/01/01' AND RAEDT >= '{0}/12/31') ) ",
|
||||
year);
|
||||
}
|
||||
if (!string.IsNullOrEmpty(BPENO))
|
||||
{
|
||||
filter.Append(" AND C.BPENO LIKE @BPENO1 ");
|
||||
cmd.Parameters.Add(Query.NewParameter("BPENO1", BPENO + "%"));
|
||||
}
|
||||
if (!string.IsNullOrEmpty(BPNME))
|
||||
{
|
||||
filter.Append(" AND C.BPNME LIKE @BPNME1 ");
|
||||
cmd.Parameters.Add(Query.NewParameter("BPNME1", BPNME + "%"));
|
||||
}
|
||||
|
||||
return String.Format(@"
|
||||
SELECT A.*, B.BPSRM, B.BPSRD, B.BPP01, B.BPP02, B.BPP03, B.BPP04, B.BPP05
|
||||
FROM
|
||||
(
|
||||
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY {0}) ROWNUM FROM RASN WHERE RAPYN=@RAPYN AND RAEDT IS NULL) T1
|
||||
UNION ALL
|
||||
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY {1}) ROWNUM FROM RASN WHERE RAPYN=@RAPYN AND RAEDT IS NOT NULL) T2
|
||||
) A
|
||||
LEFT OUTER JOIN BPJB B ON A.RAPYN=B.BPPYN AND A.RAJNO=B.BPJNO AND A.RACNO=B.BPCNO
|
||||
LEFT OUTER JOIN BPSNView C ON A.RANUM=C.BPENO
|
||||
WHERE 1=1 {2}", order1, order2, filter.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 派遣紀錄 Grid 分頁查詢
|
||||
/// </summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public DataTable SelectPage(int startRowIndex, int maximumRows, string RAPYN, string BPENO, string BPNME, int year)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand();
|
||||
|
||||
StringBuilder filter = new StringBuilder();
|
||||
string inner = BuildRasnGridSql(RAPYN, BPENO, BPNME, year, filter, cmd);
|
||||
|
||||
cmd.CommandText = String.Format(
|
||||
@"SELECT * FROM
|
||||
(
|
||||
SELECT Q.*, ROW_NUMBER() OVER (ORDER BY CASE WHEN Q.RAEDT IS NULL THEN 0 ELSE 1 END, Q.ROWNUM) AS ROWID
|
||||
FROM ( {0} ) Q
|
||||
) AS TMP
|
||||
WHERE ROWID BETWEEN @STARTROWINDEX + 1 AND @STARTROWINDEX + @MAXIMUMROWS
|
||||
ORDER BY ROWID", inner);
|
||||
cmd.Parameters.Add(Query.NewParameter("RAPYN", RAPYN));
|
||||
cmd.Parameters.Add(Query.NewParameter("STARTROWINDEX", startRowIndex));
|
||||
cmd.Parameters.Add(Query.NewParameter("MAXIMUMROWS", maximumRows));
|
||||
|
||||
return Query.Select(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 派遣紀錄 Grid 查詢筆數
|
||||
/// </summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public int SelectCount(string RAPYN, string BPENO, string BPNME, int year)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand();
|
||||
|
||||
StringBuilder filter = new StringBuilder();
|
||||
string inner = BuildRasnGridSql(RAPYN, BPENO, BPNME, year, filter, cmd);
|
||||
|
||||
cmd.CommandText = String.Format("SELECT COUNT(*) FROM ( {0} ) Q", inner);
|
||||
cmd.Parameters.Add(Query.NewParameter("RAPYN", RAPYN));
|
||||
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user