using FarPoint.Excel; using FarPoint.Win.Spread.CellType.BarCode; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace FBS0000 { public partial class rHolidaySummary : Form { public rHolidaySummary() { InitializeComponent(); Properties.Settings.Default["gwcs"] = FCOMMON.info.CS; this.WindowState = FormWindowState.Maximized; } private void rJobReport_Load(object sender, EventArgs e) { // TODO: 이 코드는 데이터를 'dsReport.holydata' 테이블에 로드합니다. 필요 시 이 코드를 이동하거나 제거할 수 있습니다. //this.ta.Fill(this.dsReport.holydata); //this.tbProcess.Items.Clear(); //tbProcess.Items.Add("전체"); //var taProcess = new dsReportTableAdapters.holydataTableAdapter(); //var dtProcessList = taProcess.GetData(FCOMMON.info.Login.gcode); //foreach (dsReport.ProcessListRow dr in dtProcessList.Rows) // tbProcess.Items.Add(dr.processs); //this.tbProcess.Text = FCOMMON.info.Login.process; //if (tbProcess.SelectedIndex < 0) tbProcess.SelectedIndex = 0; this.tbMon.Text = DateTime.Now.ToShortDateString(); refrehData(); this.reportViewer1.RefreshReport(); } void refrehData() { var dt = DateTime.Parse(this.tbMon.Text); ta.Fill(this.dsReport.holydata, FCOMMON.info.Login.gcode, dt.Year.ToString("0000") + "-01-01", dt.ToShortDateString()); //데이터를 재 집계한다. this.dsReport.holydatasum.Clear(); var grp_user = dsReport.holydata.GroupBy(t => t.uid); foreach (var grp in grp_user) { //cate group var first_user = grp.First(); var grp_cate = grp.GroupBy(t => t.cate); foreach (var cate in grp_cate) { var newdr = this.dsReport.holydatasum.NewholydatasumRow(); var catename = cate.Key; newdr.uid = grp.Key; newdr.uname = first_user.name; newdr.process = first_user.Process; newdr.cate = cate.Key; if (catename.StartsWith("대체")) { newdr.dr = cate.Sum(t => t.DrTime); newdr.cr = cate.Sum(t => t.CrTime); newdr.jan = newdr.dr - newdr.cr; //newdr.add = 0; if (newdr.dr != 0) newdr.rate = (newdr.cr / newdr.dr)*100f; else newdr.rate = 0; } else if (catename.StartsWith("외출")) { //newdr.dr = 0; //newdr.cr = 0; //newdr.jan = 0; //newdr.add = 0; //newdr.rate = 0; } else { newdr.dr = cate.Sum(t => t.DrDay); newdr.cr = cate.Sum(t => t.CrDay); newdr.jan = newdr.dr - newdr.cr; if (newdr.jan < 0) //초과사용자는 0으로 처리 { newdr.add = newdr.jan; newdr.cr = newdr.dr; newdr.jan = 0; } if (newdr.dr != 0) newdr.rate = (newdr.cr / newdr.dr) * 100f; else newdr.rate = 0; newdr.drday = newdr.dr; newdr.crday = newdr.cr; newdr.janday = newdr.jan; newdr.rateday = newdr.rate; newdr.addday = newdr.add; } this.dsReport.holydatasum.AddholydatasumRow(newdr); } } this.dsReport.holydatasum.AcceptChanges(); //this.reportViewer1.LocalReport.ReportPath = "JobReport_\\rK5Dailyform.rdlc"; this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.Normal); this.reportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.Percent; this.reportViewer1.RefreshReport(); ////휴일데이터가 들어가 있음. //var taH = new dsReportTableAdapters.HolidayLIstTableAdapter(); // //taH.Fill(this.dsReport.HolidayLIst, tbMon.Text + "%"); // string prcname = tbProcess.SelectedIndex < 1 ? "%" : tbProcess.Text.Trim(); //// this.ta.Fill(this.dsReport.jobReport, tbMon.Text, FCOMMON.info.Login.gcode, prcname); // //this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout); // //this.reportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.PageWidth; // //그리드뷰 생성 // this.dataGridView1.AllowUserToAddRows = false; // this.dataGridView1.AllowUserToDeleteRows = false; // this.dataGridView1.Rows.Clear(); // this.dataGridView1.Columns.Clear(); // this.dataGridView1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; // this.dataGridView1.ColumnHeadersHeight = 35; // this.dataGridView1.Columns.Add("이름", "이름"); // //이름/년도데이터추가 // var ymlist = dsReport.jobReport.OrderBy(t => t.yymm).GroupBy(t => t.yymm); // foreach (var ym in ymlist) // { // var drYm = ym.FirstOrDefault(); // var basehr = int.Parse(drYm.yymm.Substring(drYm.yymm.IndexOf('(')).Replace("(", "").Replace(")", "")); // this.dataGridView1.Columns.Add(drYm.yymm, drYm.yymm.Substring(0, 7) + "\r\n(" + basehr.ToString() + ")"); // } // //이름으로 정렬해서 데이터를 가져온다 // var namelist = this.dsReport.jobReport.OrderBy(t => t.uname).GroupBy(t => t.uname); // foreach (var uname in namelist) // { // var drName = uname.FirstOrDefault(); // List rowdata = new List(); // rowdata.Add(drName.uname + "(" + drName.uid + ")"); // List high = new List(); // List low = new List(); // for (int i = 1; i < this.dataGridView1.ColumnCount; i++) // { // var coltitle = dataGridView1.Columns[i].HeaderText; // var basehr = int.Parse(coltitle.Split('\n')[1].Replace("(","").Replace(")","")); // var userDatas = dsReport.jobReport.Where(t => t.uid == drName.uid && t.yymm == dataGridView1.Columns[i].Name); // if (userDatas == null || userDatas.Count() == 0) // { // //이달에는 데이터가없다 // rowdata.Add("--"); // high.Add(false); // low.Add(false); // } // else // { // ////모든데이터를 확인해서 휴일이랑 데이터를 분리해야한다. // //var sumhr = 0f; // //var sumot = 0f; // //var sumholy = 0f; // //foreach(dsReport.jobReportRow item in userDatas) // //{ // // dsReport.HolidayLIst.Where(t => t.pdate == item.yymm); // //} // var sumhr = userDatas.Sum(t => t.hrs); // var sumot = userDatas.Sum(t => t.ot); // var sumhl = userDatas.Sum(t => t.holyot); // if (sumot + sumhl == 0) rowdata.Add(string.Format("{0}", sumhr, sumot)); // else rowdata.Add(string.Format("{0}+{1}(*{2})", sumhr, sumot,sumhl)); // if (sumhr > basehr) high.Add(true); // else high.Add(false); // if (sumhr < basehr) low.Add(true); // else low.Add(false); // } // } // dataGridView1.Rows.Add(rowdata.ToArray()); // //이번에 추가한 줄의 셀 컬러를 지정한다 // var currentrow = dataGridView1.Rows.Count - 1; // for (int i = 1; i < this.dataGridView1.ColumnCount; i++) // { // if (high[i - 1]) dataGridView1.Rows[currentrow].Cells[i].Style.ForeColor = Color.Red; // else if (low[i - 1]) dataGridView1.Rows[currentrow].Cells[i].Style.ForeColor = Color.Blue; // else dataGridView1.Rows[currentrow].Cells[i].Style.ForeColor = Color.Black; // } // } // this.dataGridView1.AutoResizeColumns(); } private void btRefresh_Click(object sender, EventArgs e) { } private void tbProcess_SelectedIndexChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { } private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { } private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e) { // if (tbProcess.SelectedIndex >= 0) refrehData(); } private void toolStripButton6_Click(object sender, EventArgs e) { // dataGridView1.ExportData(string.Empty); } private void btSearch_Click(object sender, EventArgs e) { refrehData(); } private void toolStripButton8_Click(object sender, EventArgs e) { var sdo = DateTime.Parse(this.tbMon.Text); var sd = sdo.AddMonths(-1); tbMon.Text = sd.ToShortDateString(); } private void toolStripButton7_Click(object sender, EventArgs e) { var sdo = DateTime.Parse(this.tbMon.Text); var sd = sdo.AddMonths(1); tbMon.Text = sd.ToShortDateString(); } private void reportViewer1_Load(object sender, EventArgs e) { } private void lbStt_Click(object sender, EventArgs e) { } } }