..
This commit is contained in:
		| @@ -24,18 +24,58 @@ namespace FPJ0000.EBoard | ||||
|             Application.DoEvents(); | ||||
|  | ||||
|             //파일불러오기 | ||||
|             LoadExcel(); | ||||
|             //LoadExcel(); | ||||
|             this.fpSpread1.ActiveSheet.RowCount = 0; | ||||
|         } | ||||
|  | ||||
|         string Loadexcel = string.Empty; | ||||
|  | ||||
|         void LoadExcel() | ||||
|         { | ||||
|             //파일불러오기 | ||||
|             var fi = new System.IO.FileInfo(FCOMMON.Util.CurrentPath + "EBoardReport.xlsx"); | ||||
|             this.fpSpread1.OpenExcel(fi.FullName); | ||||
|             if (radioButton1.Checked) | ||||
|             { | ||||
|                 var fi = new System.IO.FileInfo(FCOMMON.Util.CurrentPath + "EBoardReport.xlsx"); | ||||
|                 if (this.Loadexcel != fi.FullName) | ||||
|                 { | ||||
|                     this.fpSpread1.OpenExcel(fi.FullName); | ||||
|                     this.Loadexcel = fi.FullName; | ||||
|                 } | ||||
|  | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 var fi = new System.IO.FileInfo(FCOMMON.Util.CurrentPath + "EBoardReportCapa.xlsx"); | ||||
|                 if (this.Loadexcel != fi.FullName) | ||||
|                 { | ||||
|                     this.fpSpread1.OpenExcel(fi.FullName); | ||||
|                     this.Loadexcel = fi.FullName; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         private void btRefresh_Click(object sender, EventArgs e) | ||||
|         { | ||||
|             RefreshData(); | ||||
|         } | ||||
|         void RefreshData() | ||||
|         { | ||||
|  | ||||
|  | ||||
|             LoadExcel(); | ||||
|  | ||||
|             if (radioButton1.Checked) Refresh1(); | ||||
|             else Refresh2(); | ||||
|  | ||||
|  | ||||
|             this.fpSpread1.Invalidate(); | ||||
|         } | ||||
|  | ||||
|         void Refresh1() | ||||
|         { | ||||
|  | ||||
|  | ||||
|  | ||||
|             //새로고침 | ||||
|             //a2 에 날짜를 표시함. | ||||
|             var db = new EEEntities(); | ||||
| @@ -143,12 +183,174 @@ namespace FPJ0000.EBoard | ||||
|             //    new FarPoint.Win.ComplexBorder( | ||||
|             //        new FarPoint.Win.ComplexBorderSide(FarPoint.Win.ComplexBorderSideStyle.MediumLine));  | ||||
|  | ||||
|             //차트데이터 | ||||
|             var chart1 = this.fpSpread1.ActiveSheet.Charts[0]; | ||||
|             chart1.Model.LabelAreas[0].Text = "Technical Support Q'ty & Cost Save(Kwon)";   //상단차트제목 | ||||
|  | ||||
|             //모든열을 중앙정렬한다 | ||||
|             var ser1 = chart1.Model.PlotAreas[0].Series[0] as FarPoint.Win.Chart.ClusteredBarSeries; | ||||
|             var ser1_df = ser1.Series[0].Values.DataSource as FarPoint.Win.Spread.Chart.SeriesDataField; | ||||
|             var ser1_cn = ser1.Series[0].CategoryNames.DataSource as FarPoint.Win.Spread.Chart.SeriesDataField; | ||||
|             ser1_df.Formula = $"Performance!$R$4:$R${row}"; | ||||
|             ser1_cn.Formula = $"Performance!$A$4:$A${row}"; | ||||
|  | ||||
|             var ser2 = chart1.Model.PlotAreas[0].Series[1] as FarPoint.Win.Chart.LineSeries; | ||||
|             var ser2_df = ser2.Values.DataSource as FarPoint.Win.Spread.Chart.SeriesDataField; | ||||
|             var ser2_cn = ser2.CategoryNames.DataSource as FarPoint.Win.Spread.Chart.SeriesDataField; | ||||
|             ser2_df.Formula = $"Performance!$D$4:$D${row}"; | ||||
|             ser2_cn.Formula = $"Performance!$A$4:$A${row}"; | ||||
|  | ||||
|             this.fpSpread1.Invalidate(); | ||||
|             var chart2 = this.fpSpread1.ActiveSheet.Charts[1]; //qty | ||||
|             var ser21 = chart2.Model.PlotAreas[0].Series[0] as FarPoint.Win.Chart.PieSeries; | ||||
|             var ser21_df = ser21.Values.DataSource as FarPoint.Win.Spread.Chart.SeriesDataField; | ||||
|             var ser21_cn = ser21.CategoryNames.DataSource as FarPoint.Win.Spread.Chart.SeriesDataField; | ||||
|             ser21_df.Formula = $"Performance!$D$4:$D${row}"; | ||||
|             ser21_cn.Formula = $"Performance!$A$4:$A${row}"; | ||||
|  | ||||
|             var chart3 = this.fpSpread1.ActiveSheet.Charts[2]; //cost | ||||
|             var ser31 = chart3.Model.PlotAreas[0].Series[0] as FarPoint.Win.Chart.PieSeries; | ||||
|             var ser31_df = ser31.Values.DataSource as FarPoint.Win.Spread.Chart.SeriesDataField; | ||||
|             var ser31_cn = ser31.CategoryNames.DataSource as FarPoint.Win.Spread.Chart.SeriesDataField; | ||||
|             ser31_df.Formula = $"Performance!$R$4:$R${row}"; | ||||
|             ser31_cn.Formula = $"Performance!$A$4:$A${row}"; | ||||
|         } | ||||
|         void Refresh2() | ||||
|         { | ||||
|             //Process / Equipment / BordName 으로 그룹핑 | ||||
|             //a2 에 날짜를 표시함. | ||||
|  | ||||
|             this.progressBar2.Value = 0; | ||||
|  | ||||
|             var db = new EEEntities(); | ||||
|             var sd = this.dts.Value.ToShortDateString(); | ||||
|             var ed = this.dte.Value.ToShortDateString(); | ||||
|  | ||||
|             var fi = new System.IO.FileInfo(FCOMMON.Util.CurrentPath + "EBoardReportCapa.xlsx"); | ||||
|             this.fpSpread1.OpenExcel(fi.FullName); | ||||
|             this.Loadexcel = fi.FullName; | ||||
|  | ||||
|             var 기간자료 = db.EETGW_JobReport_EBoard.Where(t => t.gcode == FCOMMON.info.Login.gcode &&  t.pdate.CompareTo(sd) >= 0 && t.pdate.CompareTo(ed) <= 0); | ||||
|             var Grp_process = 기간자료.GroupBy(t => t.Process); | ||||
|  | ||||
|             this.fpSpread1.Sheets[0].ColumnCount = 5; | ||||
|             var row = 3; | ||||
|  | ||||
|             this.progressBar2.Maximum = Grp_process.Count(); | ||||
|             foreach (var item in Grp_process) | ||||
|             { | ||||
|                 this.progressBar2.Value += 1; | ||||
|  | ||||
|                 //포맷초기화 | ||||
|                 //var rangec = this.fpSpread1.Sheets[0].Cells[$"A{row}:D{row}"]; | ||||
|                 //rangec.BackColor = Color.White; | ||||
|                 //rangec.RowSpan = 1; | ||||
|                 //rangec.ColumnSpan = 1; | ||||
|                 //rangec.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; | ||||
|                 //rangec.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; | ||||
|  | ||||
|                 var dr = item.FirstOrDefault(); | ||||
|                 var cell = this.fpSpread1.Sheets[0].Cells[$"A{row}"]; | ||||
|                 cell.Value = dr.Process; | ||||
|                 //cell.BackColor = Color.Lime; | ||||
|  | ||||
|                 var row_grp = row; | ||||
|  | ||||
|                 //이것아래의 모델그룹을 찾는다. | ||||
|                 var grp_model = item.GroupBy(t => t.Model); | ||||
|                 var cntg1 = 0; | ||||
|                 foreach (var itemModel in grp_model) | ||||
|                 { | ||||
|                     var drModel = itemModel.FirstOrDefault(); | ||||
|                     var cellModel = this.fpSpread1.Sheets[0].Cells[$"B{row}"]; | ||||
|                     cellModel.Value = drModel.Model; | ||||
|                     cellModel.BackColor = Color.White; | ||||
|  | ||||
|                     var row_mod = row; | ||||
|  | ||||
|                     if (cntg1 > 0) | ||||
|                     { | ||||
|                         this.fpSpread1.Sheets[0].Cells[$"A{row}"].Value = string.Empty; | ||||
|                     } | ||||
|  | ||||
|                     //이것아래의 보드를 찾는다. | ||||
|                     var grp_brd = itemModel.GroupBy(t => t.BoardName); | ||||
|                     var cntg2 = 0; | ||||
|                     foreach (var itemBrd in grp_brd) | ||||
|                     { | ||||
|                         var drBrd = itemBrd.FirstOrDefault(); | ||||
|                         var cellBrd = this.fpSpread1.Sheets[0].Cells[$"C{row}"]; | ||||
|                         cellBrd.Value = drBrd.BoardName; | ||||
|                         cellBrd.BackColor = Color.White; | ||||
|  | ||||
|                         if (cntg2 > 0) | ||||
|                         { | ||||
|                             this.fpSpread1.Sheets[0].Cells[$"A{row}"].Value = string.Empty; | ||||
|                             this.fpSpread1.Sheets[0].Cells[$"B{row}"].Value = string.Empty; | ||||
|                         } | ||||
|  | ||||
|                         //합계수량 | ||||
|                         var sumQty = itemBrd.Sum(t => t.QTY); | ||||
|                         var sumAmt = itemBrd.Sum(t => t.CostReduction); | ||||
|  | ||||
|                         var cellQty = this.fpSpread1.Sheets[0].Cells[$"D{row}"]; | ||||
|                         var cellAmt = this.fpSpread1.Sheets[0].Cells[$"E{row}"]; | ||||
|                         cellQty.Value = sumQty; | ||||
|                         cellAmt.Value = sumAmt; | ||||
|  | ||||
|                         cntg2 += 1; | ||||
|                         cntg1 += 1; | ||||
|                         if (grp_brd.Count() > 1) | ||||
|                             row += 1; | ||||
|                     } | ||||
|  | ||||
|                     //소계를 추가한다. | ||||
|                     if (cntg2 > 1) | ||||
|                     { | ||||
|                         this.fpSpread1.Sheets[0].Cells[$"A{row}"].Value = string.Empty; | ||||
|                         this.fpSpread1.Sheets[0].Cells[$"B{row}"].Value = string.Empty; | ||||
|                         this.fpSpread1.Sheets[0].Cells[$"C{row}"].Value = $"({drModel.Model}) Sub Total"; | ||||
|                         this.fpSpread1.Sheets[0].Cells[$"C{row}"].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left; | ||||
|  | ||||
|  | ||||
|                         this.fpSpread1.Sheets[0].Cells[$"D{row}"].Value = itemModel.Sum(t => t.QTY); | ||||
|                         this.fpSpread1.Sheets[0].Cells[$"E{row}"].Value = itemModel.Sum(t => t.CostReduction); | ||||
|                         this.fpSpread1.Sheets[0].Cells[$"C{row}:E{row}"].BackColor = Color.FromArgb(200,200,200); | ||||
|                         this.fpSpread1.Sheets[0].Cells[$"B{row_mod}"].RowSpan = row - row_mod + 1; | ||||
|                     } | ||||
|  | ||||
|  | ||||
|                     //cntg1 += cntg2; | ||||
|                     if ((grp_model.Count() + grp_brd.Count()) > 2) | ||||
|                         row += 1; | ||||
|                 } | ||||
|  | ||||
|                 if (cntg1 > 1) | ||||
|                 { | ||||
|                     this.fpSpread1.Sheets[0].Cells[$"A{row}"].Value = string.Empty; | ||||
|                     this.fpSpread1.Sheets[0].Cells[$"B{row}"].Value = $"({dr.Process}) Sub Total"; | ||||
|                     this.fpSpread1.Sheets[0].Cells[$"B{row}"].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left; | ||||
|                     this.fpSpread1.Sheets[0].Cells[$"B{row}"].ColumnSpan = 2; | ||||
|                     //this.fpSpread1.Sheets[0].Cells[$"C{row}"].Value = string.Empty;// item.Count(); | ||||
|                     this.fpSpread1.Sheets[0].Cells[$"D{row}"].Value = item.Sum(t => t.QTY); | ||||
|                     this.fpSpread1.Sheets[0].Cells[$"E{row}"].Value = item.Sum(t => t.CostReduction); | ||||
|                     this.fpSpread1.Sheets[0].Cells[$"B{row}:E{row}"].BackColor = Color.FromArgb(150, 150, 150); | ||||
|                     this.fpSpread1.Sheets[0].Cells[$"A{row_grp}"].RowSpan = row-row_grp+1 ; | ||||
|                 } | ||||
|  | ||||
|                 row += 1; | ||||
|             } | ||||
|             this.fpSpread1.Sheets[0].Cells[$"A{row}"].Value = "Total"; | ||||
|             this.fpSpread1.Sheets[0].Cells[$"B{row}"].Value = string.Empty;// $"({dr.Process})-{cntg1}";             | ||||
|             this.fpSpread1.Sheets[0].Cells[$"C{row}"].Value = string.Empty;// item.Count(); | ||||
|             this.fpSpread1.Sheets[0].Cells[$"D{row}"].Value = 기간자료.Sum(t => t.QTY); | ||||
|             this.fpSpread1.Sheets[0].Cells[$"E{row}"].Value = 기간자료.Sum(t => t.CostReduction); | ||||
|  | ||||
|             this.fpSpread1.Sheets[0].Cells[$"A{row}:E{row}"].BackColor = Color.SkyBlue; | ||||
|  | ||||
|             this.fpSpread1.Sheets[0].RowCount = row; | ||||
|             this.progressBar2.Value = this.progressBar2.Maximum; | ||||
|         } | ||||
|  | ||||
|  | ||||
|  | ||||
|         private void btSave_Click(object sender, EventArgs e) | ||||
|         { | ||||
| @@ -165,5 +367,36 @@ namespace FPJ0000.EBoard | ||||
|         { | ||||
|             LoadExcel(); | ||||
|         } | ||||
|  | ||||
|         private void button3_Click(object sender, EventArgs e) | ||||
|         { | ||||
|             var bt = sender as Button; | ||||
|             if (bt.Text == "년") | ||||
|             { | ||||
|                 dts.Value = new DateTime(DateTime.Now.Year, 1, 1); | ||||
|                 dte.Value = new DateTime(DateTime.Now.Year, 12, 31); | ||||
|             } | ||||
|             if (bt.Text == "월") | ||||
|             { | ||||
|                 dts.Value = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); | ||||
|                 dte.Value = dts.Value.AddMonths(1).AddDays(-1); | ||||
|             } | ||||
|             if (bt.Text == "주") | ||||
|             { | ||||
|                 dts.Value = DateTime.Now.AddDays(-(int)DateTime.Now.DayOfWeek); | ||||
|                 dte.Value = DateTime.Now.AddDays(6 - (int)DateTime.Now.DayOfWeek); | ||||
|             } | ||||
|             if (bt.Text == "일") | ||||
|             { | ||||
|                 dts.Value = DateTime.Now; | ||||
|                 dte.Value = DateTime.Now; | ||||
|             } | ||||
|             RefreshData(); | ||||
|         } | ||||
|  | ||||
|         private void panel1_Paint(object sender, PaintEventArgs e) | ||||
|         { | ||||
|  | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 chi
					chi