This commit is contained in:
chi
2021-02-08 15:57:07 +09:00
parent 310bd13a62
commit 30b06c2d35
15 changed files with 649 additions and 417 deletions

View File

@@ -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)
{
}
}
}