From 473fe9e4b23759cc5adb6fbe6ff64d3215309650 Mon Sep 17 00:00:00 2001 From: chi Date: Tue, 1 Feb 2022 19:45:04 +0900 Subject: [PATCH] .. --- Project/Properties/AssemblyInfo.cs | 4 +- SubProject/FCOMMON/DataBaseManager.cs | 2 +- .../FPJ0000/JobReport_/fJobChartMenu.cs | 155 +++++++++++++----- SubProject/FPJ0000/ReportProjectSummary.xlsx | Bin 25997 -> 30832 bytes 4 files changed, 118 insertions(+), 43 deletions(-) diff --git a/Project/Properties/AssemblyInfo.cs b/Project/Properties/AssemblyInfo.cs index 064ae05..dcc9eee 100644 --- a/Project/Properties/AssemblyInfo.cs +++ b/Project/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로 // 지정되도록 할 수 있습니다. // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("22.02.01.1200")] -[assembly: AssemblyFileVersion("22.02.01.1200")] +[assembly: AssemblyVersion("22.02.01.1730")] +[assembly: AssemblyFileVersion("22.02.01.1730")] diff --git a/SubProject/FCOMMON/DataBaseManager.cs b/SubProject/FCOMMON/DataBaseManager.cs index df2320b..bcc0e45 100644 --- a/SubProject/FCOMMON/DataBaseManager.cs +++ b/SubProject/FCOMMON/DataBaseManager.cs @@ -435,7 +435,7 @@ namespace FCOMMON var retval = new sItemInfo(); retval.idx = -1; - string sql = "select [id],[name],([name] +'(' +[id] +')') as dispName,[dept],[email],[level],[tel] " + + string sql = "select [id],[name],([name] +'(' +[id] +')') as dispName,[dept],[email],[level],[tel],isnull(processs,'') as process " + " from vGroupUser " + " where gcode='" + FCOMMON.info.Login.gcode + "' and [id] <> 'dev' and isnull(outdate,'') = '' and useUserState = 1 order by [name]"; var cmd = new SqlCommand(sql, cn); diff --git a/SubProject/FPJ0000/JobReport_/fJobChartMenu.cs b/SubProject/FPJ0000/JobReport_/fJobChartMenu.cs index e55cf81..d406bd2 100644 --- a/SubProject/FPJ0000/JobReport_/fJobChartMenu.cs +++ b/SubProject/FPJ0000/JobReport_/fJobChartMenu.cs @@ -40,6 +40,9 @@ namespace FPJ0000.JobReport_ UpdateUserList(); //엑셀파일불러오기 + this.Show(); + Application.DoEvents(); + var file = FCOMMON.Util.CurrentPath + "ReportProjectSummary.xlsx"; this.fpSpread1.OpenExcel(file); if (this.fpSpread1.Sheets.Count > 1) this.fpSpread1.ActiveSheetIndex = 0; @@ -49,38 +52,53 @@ namespace FPJ0000.JobReport_ } void UpdateUserList() { - var db = new EEEntities(); + // var db = new EEEntities(); cmbUser.Items.Clear(); cmbUser.Items.Add("--전체--"); + var userList = FCOMMON.DBM.getUserTable(1); + + //일반사용자 목록 가져온다 IQueryable> userlist; - if (tbProcess.SelectedIndex <= 0) + //공정구분없이 전체사용자를 가져온다 + foreach (System.Data.DataRow item in userList.Rows) { - //공정구분없이 전체사용자를 가져온다 - userlist = db.vJobReportForUser.Where(t => t.gcode == FCOMMON.info.Login.gcode).OrderBy(t => t.name).GroupBy(t => t.name); - } - else - { - userlist = db.vJobReportForUser.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.userProcess == tbProcess.Text).OrderBy(t => t.name).GroupBy(t => t.name); + var id = item.Field("id"); + var dispname = item.Field("dispname"); + var process = item.Field("process"); + if (tbProcess.SelectedIndex > 0 && tbProcess.Text.Equals(process) == false) continue; + cmbUser.Items.Add(dispname); } - //if (tbProcess.SelectedIndex != 0) userlist = userlist.Where(t => t.processs == tbProcess.Text); //해당 공정의 인원만 처리한다 + //if (tbProcess.SelectedIndex <= 0) + //{ + + //} + //else + //{ + // userlist = db.vJobReportForUser.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.userProcess == tbProcess.Text).OrderBy(t => t.name).GroupBy(t => t.name); + //} + + ////if (tbProcess.SelectedIndex != 0) userlist = userlist.Where(t => t.processs == tbProcess.Text); //해당 공정의 인원만 처리한다 + - foreach (var item in userlist) - { - var dr = item.First(); - cmbUser.Items.Add(String.Format("[{0}] {1}", dr.id, dr.name)); - } if (tbProcess.SelectedIndex > 0) - cmbUser.Text = string.Format("[{0}] {1}", FCOMMON.info.Login.no, FCOMMON.info.Login.nameK); + cmbUser.Text = string.Format("{1}({0})", FCOMMON.info.Login.no, FCOMMON.info.Login.nameK); if (cmbUser.SelectedIndex < 0) cmbUser.SelectedIndex = 0; //기본전체로 선택해준다. } + string getUserID() + { + var si = cmbUser.Text.LastIndexOf("("); + var ei = cmbUser.Text.LastIndexOf(")"); + var retval = cmbUser.Text.Substring(si + 1, ei - si - 1); + return retval; + } void refrehData() { var db = new EEEntities(); @@ -120,7 +138,7 @@ namespace FPJ0000.JobReport_ if (cmbUser.SelectedIndex > 0) { //사용자번호 - var UserNo = cmbUser.Text.Substring(1, cmbUser.Text.IndexOf(']') - 1); + var UserNo = getUserID();// cmbUser.Text.Substring(1, cmbUser.Text.IndexOf(']') - 1); baseData = db.vJobReportForUser.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.id == UserNo).OrderBy(t => t.name).ToList(); } else if (tbProcess.SelectedIndex > 0) @@ -144,7 +162,7 @@ namespace FPJ0000.JobReport_ if (cmbUser.SelectedIndex > 0) { //사용자번호 - var UserNo = cmbUser.Text.Substring(1, cmbUser.Text.IndexOf(']') - 1); + var UserNo = getUserID();// cmbUser.Text.Substring(1, cmbUser.Text.IndexOf(']') - 1); baseData = db.vJobReportForUser .Where(t => t.gcode == FCOMMON.info.Login.gcode && t.id == UserNo && t.pdate.CompareTo(vSD) >= 0 && t.pdate.CompareTo(vED) <= 0) .OrderBy(t => t.name) @@ -212,13 +230,18 @@ namespace FPJ0000.JobReport_ { var dr = item.FirstOrDefault(); this.fpSpread1.Sheets[0].Cells[6, col++].Value = dr.process; - if (col == 11) break; //목록개수를 넘었으니 더이상 진행하지 못한다 이것들은 모두 ETC에 넣는다 + if (col == 82) break; //목록개수를 넘었으니 더이상 진행하지 못한다 이것들은 모두 ETC에 넣는다 //col += 1; } //나머지 열을 * 로 채운다 - for (int i = col; i < 11; i++) + for (int i = col; i < 82; i++) + { this.fpSpread1.Sheets[0].Cells[6, i].Value = "*"; + this.fpSpread1.Sheets[0].Columns[i].Visible = (i < 8);//.Cells[6, i].Value = "*"; + } + + System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("ko-KR", false); FarPoint.Win.Spread.CellType.NumberCellType numberCellType1 = new FarPoint.Win.Spread.CellType.NumberCellType(); @@ -227,9 +250,9 @@ namespace FPJ0000.JobReport_ //프로세스목록을 먼저 기록한다 - row = 7; + row = 7; var orProcess = baseData.OrderBy(t => t.requestpart).GroupBy(t => t.requestpart); - this.fpSpread1.Sheets[0].RowCount = 7+ orProcess.Count() + 1; + this.fpSpread1.Sheets[0].RowCount = 7 + orProcess.Count() + 1; foreach (var item in orProcess) { @@ -240,7 +263,7 @@ namespace FPJ0000.JobReport_ double sumOt = 0.0; //double holytime = 0.0; int coldata = 2; - for (int i = 2; i < 11; i++) + for (int i = 2; i < 82; i++) { var colName = fpSpread1.Sheets[0].Cells[6, i].Value.ToString(); @@ -267,39 +290,56 @@ namespace FPJ0000.JobReport_ //ETC영역계산 { //전체합산데이터와, 2~10까지의 데이터가 일치하지 않으면 그것이 ETC이다 - var etchr = item.Sum(t => t.hrs); - var etcot = item.Sum(t => t.ot); + var etchr = item.Where(t => t.hrs != null).Sum(t => (float)t.hrs); + var etcot = item.Where(t => t.ot != null).Sum(t => (float)t.ot); //현재데이터의 hrs의 합 - var subtotal = 0.0; - for(int i = 2; i <11;i++) + var subtotal = 0f; + for (int i = 2; i < 82; i++) { var ivalue = fpSpread1.Sheets[0].Cells[row, i].Value; - if (ivalue != null) subtotal += (double)ivalue; + if (ivalue != null) + { + subtotal = subtotal + float.Parse(ivalue.ToString()); + } } var etcval = (etchr + etcot) - subtotal; - fpSpread1.Sheets[0].Cells[row, 11].Value = etcval; + if (etcval != 0f) + Console.WriteLine("sdf"); + fpSpread1.Sheets[0].Cells[row, 82].Value = etcval; } - fpSpread1.Sheets[0].Cells[row, 12].CellType = numberCellType1; - fpSpread1.Sheets[0].Cells[row, 12].ParseFormatString = "N1"; - fpSpread1.Sheets[0].Cells[row, 12].Formula = string.Format("SUM(C{0}:G{0})+L{0}", row + 1); - + fpSpread1.Sheets[0].Cells[row, 83].CellType = numberCellType1; + fpSpread1.Sheets[0].Cells[row, 83].ParseFormatString = "N1"; + fpSpread1.Sheets[0].Cells[row, 83].Formula = string.Format("SUM(C{0}:CD{0})+CE{0}", row + 1); + fpSpread1.Sheets[0].Cells[row, 83].BackColor = Color.Gold; + fpSpread1.Sheets[0].Cells[row, 83].Border = new ComplexBorder(left, top, right, bottom); + fpSpread1.Sheets[0].Cells[row, 83].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + fpSpread1.Sheets[0].Cells[row, 83].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + //H8 /$I$4 - if (sumOt == 0.0) fpSpread1.Sheets[0].Cells[row, 13].Value = null; //OT합계 - else fpSpread1.Sheets[0].Cells[row, 13].Value = sumOt; //OT합계 + if (sumOt == 0.0) fpSpread1.Sheets[0].Cells[row, 84].Value = null; //OT합계 + else fpSpread1.Sheets[0].Cells[row, 84].Value = sumOt; //OT합계 // process 의 휴가시간을 다시 계산한다. var 휴가데이터 = baseData.Where(t => t.requestpart == RequestPart && t.svalue == "휴가"); if (휴가데이터 == null || 휴가데이터.Count() < 1) { - fpSpread1.Sheets[0].Cells[row, 14].Value = null;// 0.0; //휴가시간 + fpSpread1.Sheets[0].Cells[row, 85].Value = null;// 0.0; //휴가시간 } - else fpSpread1.Sheets[0].Cells[row, 14].Value = 휴가데이터.Sum(t => t.hrs); //휴가시간 + else fpSpread1.Sheets[0].Cells[row, 85].Value = 휴가데이터.Sum(t => t.hrs); //휴가시간 - for (int i = 1; i <= 14; i++) + fpSpread1.Sheets[0].Cells[row, 84].Border = new ComplexBorder(left, top, right, bottom); + fpSpread1.Sheets[0].Cells[row, 84].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + fpSpread1.Sheets[0].Cells[row, 84].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + + fpSpread1.Sheets[0].Cells[row, 85].Border = new ComplexBorder(left, top, right, bottom); + fpSpread1.Sheets[0].Cells[row, 85].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + fpSpread1.Sheets[0].Cells[row, 85].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + + for (int i = 1; i <= 82; i++) { - if(i == 12) fpSpread1.Sheets[0].Cells[row, i].BackColor = Color.LightGray; + if (i == 82) fpSpread1.Sheets[0].Cells[row, i].BackColor = Color.LightGray; else fpSpread1.Sheets[0].Cells[row, i].BackColor = Color.White; fpSpread1.Sheets[0].Cells[row, i].Border = new ComplexBorder(left, top, right, bottom); fpSpread1.Sheets[0].Cells[row, i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; @@ -308,6 +348,7 @@ namespace FPJ0000.JobReport_ row += 1; + Application.DoEvents(); } //합계데이터 @@ -316,11 +357,11 @@ namespace FPJ0000.JobReport_ fpSpread1.Sheets[0].Cells[row, 1].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; fpSpread1.Sheets[0].Cells[row, 1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fpSpread1.Sheets[0].Cells[row, 1].Border = new ComplexBorder(left, top, right, bottom); - for (int i = 2; i <= 14; i++) + for (int i = 2; i <= 82; i++) { char basec = 'C'; char newc = (char)(basec + (i - 2)); - fpSpread1.Sheets[0].Cells[row, i].Formula = "SUM(" + newc.ToString() + "8:" + newc.ToString() + row.ToString() + ")"; + fpSpread1.Sheets[0].Cells[row, i].Formula = "SUM(" + ColumnAdress(i + 1) + "8:" + ColumnAdress(i + 1) + row.ToString() + ")"; fpSpread1.Sheets[0].Cells[row, i].BackColor = Color.LightGray; fpSpread1.Sheets[0].Cells[row, i].CellType = numberCellType1; @@ -333,9 +374,43 @@ namespace FPJ0000.JobReport_ fpSpread1.Sheets[0].Cells[row, i].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; } + fpSpread1.Sheets[0].Cells[row, 83].CellType = numberCellType1; + fpSpread1.Sheets[0].Cells[row, 83].ParseFormatString = "N1"; + fpSpread1.Sheets[0].Cells[row, 83].Formula = string.Format("SUM(C{0}:CD{0})+CE{0}", row + 1); + fpSpread1.Sheets[0].Cells[row, 83].BackColor = Color.Gold; + + + fpSpread1.Sheets[0].Cells[row, 83].Border = new ComplexBorder(left, top, right, bottom); + fpSpread1.Sheets[0].Cells[row, 83].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + fpSpread1.Sheets[0].Cells[row, 83].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + + + + fpSpread1.Sheets[0].Cells[row, 84].Border = new ComplexBorder(left, top, right, bottom); + fpSpread1.Sheets[0].Cells[row, 84].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + fpSpread1.Sheets[0].Cells[row, 84].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + + fpSpread1.Sheets[0].Cells[row, 85].Border = new ComplexBorder(left, top, right, bottom); + fpSpread1.Sheets[0].Cells[row, 85].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; + fpSpread1.Sheets[0].Cells[row, 85].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; + + this.fpSpread1.Sheets[0].RowCount = row + 1; } + public string ColumnAdress(int col) + { + if (col <= 26) + { + return Convert.ToChar(col + 64).ToString(); + } + int div = col / 26; + int mod = col % 26; + if (mod == 0) { mod = 26; div--; } + return ColumnAdress(div) + ColumnAdress(mod); + } + + private void tbProcess_SelectedIndexChanged(object sender, EventArgs e) { if (binit == false) return; diff --git a/SubProject/FPJ0000/ReportProjectSummary.xlsx b/SubProject/FPJ0000/ReportProjectSummary.xlsx index d60b89d147dbd0740ad0d7a93ac5228be3759f98..3953a9d558e1023456b1b8a3f453f6c24304b778 100644 GIT binary patch delta 19679 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 delta 14865 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 E4<1EhjQ{`u