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 人員Data = null; private List<差勤日報表Item> 請假Data = null; private List<差勤日報表Item> 加班Data = null; private List<差勤日報表Item> 出差Data = null; private List 站別分組 = 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; } }