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

191 lines
6.3 KiB
C#

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
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;
public partial class forms_report_fmCardDailyReport : Wellan.Web.UI.WUserControlBase
{
private RasnDAC rasnDao;
private RparDAC rparDao;
private ProjectBranchGroupDAC pbgDao;
private string 公司名稱;
private string 專案名稱;
private string 客戶名稱;
private List<ProjectEmployeeItem> 人員Data = null;
private List<差勤日報表Item> 請假Data = null;
private List<差勤日報表Item> 加班Data = null;
private List<差勤日報表Item> 出差Data = null;
private List<RASNBRHItem> 站別分組 = null;
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (txtDate1.Value.Ticks == 0)
txtDate1.Value = DateTime.UtcNow.AddHours(8).Date;
if (txtDate2.Value.Ticks == 0)
txtDate2.Value = DateTime.UtcNow.AddHours(8).Date;
SetClientFocus(txtDate1);
rasnDao = new RasnDAC(Query);
rparDao = new RparDAC(Query);
pbgDao = new ProjectBranchGroupDAC(Query);
}
protected void btnOk_Click(object sender, EventArgs e)
{
cvMessage.IsValid = true;
cvMessage.ErrorMessage = "";
if (!CheckProjectRight())
return;
if (!CheckDateValid())
return;
// 取得並儲存畫面輸入的站別歸屬
pbgDao.DeleteByProject(ddlRPPYN.SelectedValue);
foreach (GridViewRow row in gvBranch.Rows)
{
var txtGroup = (row.Cells[0].FindControl("txtGroup") as TextBox);
if (txtGroup != null)
{
var group = txtGroup.Text;
var branchId = txtGroup.Attributes["relatevalue"];
if (!string.IsNullOrEmpty(group) && !string.IsNullOrEmpty(branchId))
{
pbgDao.Insert(ddlRPPYN.SelectedValue, branchId, group);
}
}
}
專案名稱 = GetLookup("BPAA", ddlRPPYN.SelectedValue, "BPPYM");
// 取得客戶名稱、公司別
公司名稱 = CompanyDAC.GetCompanyName(WDAC.GetStringValue(Query.ExecuteScalar(
@"SELECT BPCPY FROM BPRJ B
INNER JOIN BPAA C ON B.BPPNM=C.BPPNM
WHERE C.BPPYN='" + ddlRPPYN.SelectedValue + "'"))); ;
客戶名稱 = 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='" + ddlRPPYN.SelectedValue + "'"));
人員Data = new GetData(Query).GetRASN_DATE_BPPYN(txtDate1.Value, txtDate2.Value, ddlRPPYN.SelectedValue);
請假Data = rparDao.取得差勤日報表資料(ddlRPPYN.SelectedValue, txtDate1.Value, txtDate2.Value, RPAR_TYPE.T0_請假);
加班Data = rparDao.取得差勤日報表資料(ddlRPPYN.SelectedValue, txtDate1.Value, txtDate2.Value, RPAR_TYPE.T1_加班);
出差Data = rparDao.取得差勤日報表資料(ddlRPPYN.SelectedValue, txtDate1.Value, txtDate2.Value, RPAR_TYPE.T3_出差);
站別分組 = rasnDao.SelectBranchForReport(ddlRPPYN.SelectedValue);
if (人員Data.Count != 0)
{
Do差勤日報表();
}
else
{
cvMessage.IsValid = false;
cvMessage.ErrorMessage = "無符合條件的資料";
}
}
private void Do差勤日報表()
{
var 報表 = new 差勤日報表();
報表.開始日期 = txtDate1.Value;
報表.結束日期 = txtDate2.Value;
報表.公司名稱 = 公司名稱;
報表.客戶名稱 = 客戶名稱;
報表.專案名稱 = 專案名稱;
報表.專案編號 = ddlRPPYN.SelectedValue;
報表.人員Data = 人員Data;
報表.請假Data = 請假Data;
報表.加班Data = 加班Data;
報表.出差Data = 出差Data;
報表.站別分組 = 站別分組;
報表.以時分顯示時數 = new GetData(Query).GetOverTimeToMinutes(ddlRPPYN.SelectedValue);
MemoryStream ms = 報表.產生報表();
ResponseWriteFile(ms, String.Format("差勤日報表_{0}_{1:yyyyMMdd}_{2:yyyyMMdd}.xls", ddlRPPYN.SelectedValue, txtDate1.Value, txtDate2.Value));
}
protected bool CheckProjectRight()
{
// 檢查此使用者是否有權限處理這個專案
BprmDAC bprm = new BprmDAC(Query);
if (!bprm.GetRight(ddlRPPYN.SelectedValue, UserId))
{
cvMessage.ErrorMessage = "對不起,你沒有處理這個專案的權限!";
cvMessage.IsValid = false;
pnlGroup.Visible = false;
return false;
}
return true;
}
protected void Next_Click(object sender, EventArgs e)
{
if (!CheckProjectRight())
return;
pnlGroup.Visible = true;
gvBranch.DataSource = rasnDao.SelectBranchForForm(ddlRPPYN.SelectedValue);
gvBranch.DataBind();
}
protected void btnDate_Click(object sender, EventArgs e)
{
if (!CheckDateValid())
return;
pnlGroup.Visible = false;
ddlRPPYN.DataSource = new BpaaDAC().GetBpaa(txtDate1.Value.Year);
ddlRPPYN.DataBind();
}
private bool CheckDateValid()
{
if (txtDate1.Value.Ticks == 0 && txtDate2.Value.Ticks != 0)
txtDate1.Value = txtDate2.Value;
if (txtDate2.Value.Ticks == 0 && txtDate1.Value.Ticks != 0)
txtDate2.Value = txtDate1.Value;
if (txtDate1.Value.Ticks == 0 || txtDate2.Value.Ticks == 0)
{
cvMessage.ErrorMessage = "開始日期與結束日期都應輸入!";
cvMessage.IsValid = false;
return false;
}
// 檢查日期是否跨年
if (txtDate1.Value.Year != txtDate2.Value.Year)
{
cvMessage.ErrorMessage = "日期請勿跨年!";
cvMessage.IsValid = false;
return false;
}
return true;
}
}