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
+307
View File
@@ -0,0 +1,307 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Wellan.Common;
using Wellan.Data;
using System.Data.Common;
using CRAX;
using System.IO;
/// <summary>
/// 差勤系統月報表
/// </summary>
public partial class forms_report_fmCardReport : Wellan.Web.UI.WUserControlBase
{
private DataTable reportData = null;
private DataTable reportData1 = null;
private string reportName = "";
private string dataFileName = "";
private string reportTitle = "";
private DateTime aYYMM;
private RparDAC rparDao;
private BhrdDAC bhrdDao;
private RpadDAC rpadDao;
private RtmeDAC rtmeDao;
private string ;
private string ;
private string ;
private string ;
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (txtYYMM.Text.Length == 0)
txtYYMM.Text = DateTime.UtcNow.AddHours(8).Date.ToString("yyyyMM");
SetClientFocus(txtYYMM);
rparDao = new RparDAC(Query);
bhrdDao = new BhrdDAC(Query);
rpadDao = new RpadDAC(Query);
rtmeDao = new RtmeDAC(Query);
}
protected void btnOk_Click(object sender, EventArgs e)
{
bool result = true;
cvMessage.IsValid = true;
cvMessage.ErrorMessage = "";
aYYMM = CheckDate(txtYYMM.Text + "01", "請輸入正確的年月", ref result, cvMessage);
if (!result)
return;
if (aYYMM.ToString("yyyyMM").CompareTo("10104") < 0)
{
cvMessage.IsValid = false;
cvMessage.ErrorMessage = "注意!101 年 4 月之後的資料才可以使用此功能";
return;
}
= new BpsnDAC(Query).GetProjectByDate(UserId, aYYMM);
= GetLookup("BPAA", , "BPPYM");
// 取得客戶名稱、公司別
= CompanyDAC.GetCompanyName(WDAC.GetStringValue(Query.ExecuteScalar(
@"SELECT BPCPY FROM BPRJ B
INNER JOIN BPAA C ON B.BPPNM=C.BPPNM
WHERE C.BPPYN='" + + "'"))); ;
= WDAC.GetStringValue(Query.ExecuteScalar(
@"SELECT BCNAM FROM BCUS A
INNER JOIN BPRJ B ON A.BCNUM=B.BPNUM
INNER JOIN BPAA C ON B.BPPNM=C.BPPNM
WHERE C.BPPYN='" + + "'"));
string[] tmp = ddlReportSelect.SelectedValue.Split(',');
reportName = tmp[0];
dataFileName = tmp[1];
reportTitle = tmp[2];
bool hasData = false;
switch (dataFileName)
{
case "RPAR": // 差勤月報表
hasData = Get月差勤表資料();
break;
case "RPAR_0": // 請假申請單
hasData = Get出勤資料("請假");
break;
case "RPAR_1": // 加班申請單, 加班費印領清冊
hasData = Get出勤資料("加班");
if (reportName == "RPAR_CARD_06")
hasData = reportData.Select(
string.Format("RPTYP = '{0}' OR RPTYP = '{1}' OR RPTYP = '{2}' OR RPTYP = '{3}'",
RPAR_TYPE.T12_非休息日請領加班費,
RPAR_TYPE.T14_休息日請領加班費,
RPAR_TYPE.T16_國定假日請領加班費,
RPAR_TYPE.T18_例假日請領加班費
)
, "RPRDT").Length > 0;
break;
case "RPAR_3": // 公差申請單
hasData = Get出勤資料("公差");
break;
case "RPAR_31": // 差旅費報告單
hasData = Get出勤資料("差旅費");
Get出差費用資料();
break;
}
if (hasData)
{
Do月差勤表(reportTitle);
}
else
{
cvMessage.IsValid = false;
cvMessage.ErrorMessage = "無符合條件的資料";
}
}
private void Do月差勤表(string )
{
ExcelReportBase = null;
bool = true;
switch ()
{
case "差勤月報表":
= new ();
break;
case "請假申請單":
= new ();
= false;
break;
case "加班申請單":
= new ();
break;
case "公差申請單":
= new ();
break;
case "差旅費報告單":
= new ();
break;
case "加班費印領清冊":
= new ();
break;
}
if ( == null)
return;
..Tables.Add(reportData);
if (reportData1 != null)
..Tables.Add(reportData1);
. = aYYMM;
. = ;
. = ;
. = ;
. = ;
. = || new GetData(Query).GetOverTimeToMinutes();
MemoryStream ms = .();
ResponseWriteFile(ms, String.Format("{0}_{1}_{2}.xls", UserId, txtYYMM.Text, ));
}
protected bool Get月差勤表資料()
{
DateTime = aYYMM;
DateTime = aYYMM.AddMonths(1);
reportData = new DataTable();
reportData.Columns.Add("日期", typeof(DateTime));
reportData.Columns.Add("出勤別", typeof(String));
reportData.Columns.Add("員編", typeof(String));
reportData.Columns.Add("單位", typeof(String));
reportData.Columns.Add("職稱", typeof(String));
reportData.Columns.Add("姓名", typeof(String));
reportData.Columns.Add("上班", typeof(String));
reportData.Columns.Add("下班", typeof(String));
reportData.Columns.Add("請假", typeof(String));
reportData.Columns.Add("加班", typeof(String));
reportData.Columns.Add("公差", typeof(String));
reportData.Columns.Add("出差外出", typeof(String));
reportData.Columns.Add("出差返回", typeof(String));
reportData.Columns.Add("班別名稱", typeof(String));
reportData.Columns.Add("班別時間", typeof(String));
reportData.Columns.Add("出勤異常", typeof(String));
BatchService batchService = new BatchService();
while ( < )
{
DataTable = rparDao.Select出勤資料By人員(, UserId);
bool = !bhrdDao.IsHoliday(UserId, );
string = ? "上班" : "休假";
var btmeItem = rtmeDao.SelectBtmeDay(UserId, );
foreach (DataRow r in .Rows)
{
DataRow newRow = reportData.NewRow();
newRow["日期"] = ;
newRow["出勤別"] = ;
newRow["員編"] = r["RANUM"];
newRow["單位"] = r["單位"];
newRow["職稱"] = r["職稱"];
newRow["姓名"] = r["BPNME"];
newRow["上班"] = r["RCC01"];
newRow["下班"] = r["RCC02"];
newRow["請假"] = string.Format("{0:#0}:{1:00}", r["請假時數"], r["請假分數"]);
newRow["加班"] = string.Format("{0:#0}:{1:00}", r["加班時數"], r["加班分數"]);
newRow["公差"] = string.Format("{0:#0}:{1:00}", r["出差時數"], r["出差分數"]);
newRow["出差外出"] = r["RCC07"];
newRow["出差返回"] = r["RCC08"];
newRow["班別名稱"] = btmeItem != null ? btmeItem.BTNME : "";
newRow["班別時間"] = btmeItem != null ? string.Format("{0}-{1}", btmeItem.BTSTM, btmeItem.BTETM) : "";
var rapyn = BhrdDAC.GetStringValue(r["RAPYN"]);
if (!rparDao.IsPunchcardNormal(
, UserId
, rapyn
,
, WDAC.GetStringValue(r["RCC01"])
, WDAC.GetStringValue(r["RCC02"])
, WDAC.GetStringValue(r["RCC07"])
, WDAC.GetStringValue(r["RCC08"])
).)
{
newRow["出勤異常"] = "(出勤異常)";
}
reportData.Rows.Add(newRow);
}
= .AddDays(1);
}
return reportData.Rows.Count > 0;
}
protected bool Get出勤資料(string )
{
reportData = rparDao.Select報表資料_013By人員(aYYMM, UserId, );
return reportData.Rows.Count > 0;
}
protected void Get出差費用資料()
{
reportData1 = new DataTable();
reportData1.Columns.Add("單號", typeof(String));
reportData1.Columns.Add("項次", typeof(Int32));
reportData1.Columns.Add("日期", typeof(DateTime));
reportData1.Columns.Add("起地點", typeof(String));
reportData1.Columns.Add("迄地點", typeof(String));
reportData1.Columns.Add("工作摘要", typeof(String));
reportData1.Columns.Add("捷運", typeof(Int32));
reportData1.Columns.Add("汽車", typeof(Int32));
reportData1.Columns.Add("火車", typeof(Int32));
reportData1.Columns.Add("高鐵", typeof(Int32));
reportData1.Columns.Add("飛機", typeof(Int32));
reportData1.Columns.Add("住宿費", typeof(Int32));
reportData1.Columns.Add("過路費", typeof(Int32));
reportData1.Columns.Add("雜費", typeof(Int32));
reportData1.Columns.Add("總計", typeof(Int32));
reportData1.Columns.Add("單據號數", typeof(String));
reportData1.Columns.Add("備註", typeof(String));
foreach (DataRow r1 in reportData.Rows)
{
DataTable t2 = rpadDao.SelectRpar(WDAC.GetStringValue(r1["RPREN"]));
foreach (DataRow r2 in t2.Rows)
{
DataRow newRow = reportData1.NewRow();
newRow["單號"] = r2["RPREN"];
newRow["項次"] = r2["RPITM"];
newRow["日期"] = r2["RPDAT"];
newRow["起地點"] = r2["RPSTP"];
newRow["迄地點"] = r2["RPEDP"];
newRow["工作摘要"] = r1["RPRSN"];
newRow["捷運"] = r2["RPF03"];
newRow["汽車"] = r2["RPF01"];
newRow["火車"] = r2["RPF02"];
newRow["高鐵"] = r2["RPF04"];
newRow["飛機"] = r2["RPF07"];
newRow["住宿費"] = r2["RPF05"];
newRow["過路費"] = r2["RPF08"];
newRow["雜費"] = r2["RPF06"];
newRow["總計"] = r2["RPSUM"];
newRow["單據號數"] = r2["RPVCH"];
newRow["備註"] = r2["RPDOC"];
reportData1.Rows.Add(newRow);
}
}
}
}