..
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