적정인원보고서 수정
This commit is contained in:
		| @@ -1,5 +1,7 @@ | ||||
| using FarPoint.Win; | ||||
| using FCOMMON; | ||||
| using GrapeCity.Win.Spread.InputMan.CellType; | ||||
| using NetOffice.Attributes; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.ComponentModel; | ||||
| @@ -243,14 +245,30 @@ namespace FPJ0000.JobReport_ | ||||
|             col = 2; | ||||
|             var orTypeName = baseData.Where(t => t.svalue != "휴가" && string.IsNullOrEmpty(t.svalue) == false).OrderBy(t => t.svalue).GroupBy(t => t.svalue); | ||||
|             this.fpSpread1.ActiveSheetIndex = 0; | ||||
|             var maxcol = 6; | ||||
|             bool useOther = false; | ||||
|             foreach (var item in orTypeName) | ||||
|             { | ||||
|                 var dr = item.FirstOrDefault(); | ||||
|                 this.fpSpread1.Sheets[0].Cells[6, col++].Value = dr.svalue; | ||||
|                 //col += 1; | ||||
|  | ||||
|                 if (col == maxcol + 1)   //엑셀파일 특성상 5개가 최고이다 | ||||
|                 { | ||||
|                     this.fpSpread1.Sheets[0].Cells[6, col - 1].Value = "[ Other ]"; | ||||
|                     useOther = true; | ||||
|                 } | ||||
|                 else if (col > maxcol + 1) | ||||
|                 { | ||||
|                     useOther = true; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     this.fpSpread1.Sheets[0].Cells[6, col].Value = dr.svalue; | ||||
|                 } | ||||
|                 col++; | ||||
|             } | ||||
|  | ||||
|             for (int i = col; i <= 6; i++) | ||||
|             //항목이 6개 미만일 경우 제목을 * 로 변경해준다 | ||||
|             for (int i = col; i <= maxcol; i++) | ||||
|                 this.fpSpread1.Sheets[0].Cells[6, i].Value = "*"; | ||||
|  | ||||
|             System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("ko-KR", false); | ||||
| @@ -272,75 +290,84 @@ namespace FPJ0000.JobReport_ | ||||
|             foreach (var prcitem in prclist) | ||||
|             { | ||||
|                 this.progressBar2.Value += 1; | ||||
|                 var item = baseData.Where(t => t.type == prcitem.memo); //해당 프로세스에 해당하는 아이템을 가져온다 | ||||
|                                                                            //} | ||||
|                 if (prcitem.memo == null) prcitem.memo = string.Empty; | ||||
|                 if (prcitem.memo.StartsWith("ASM Feeder Center")) | ||||
|                     Console.WriteLine("sdf"); | ||||
|                 var item = baseData.Where(t =>  t.type.Replace(" ","") == prcitem.memo.Replace(" ","")); //해당 프로세스에 해당하는 아이템을 가져온다 | ||||
|  | ||||
|                 //foreach (var item in orProcess) | ||||
|                 //{ | ||||
|                 var processName = prcitem.memo; // item.FirstOrDefault().process; | ||||
|                 //프로세스 이름 확인 | ||||
|                 if (prcitem.memo == null) prcitem.memo = string.Empty; | ||||
|                 var processName = prcitem.memo.Trim(); | ||||
|                 this.fpSpread1.Sheets[0].Cells[row, 1].Value = processName; | ||||
|  | ||||
|                 if(processName== "Documentation (문서작업)") | ||||
|                 { | ||||
|  | ||||
|                 } | ||||
|  | ||||
|                 //2번부터는 데이터를 넣어야 한다 | ||||
|                 double sumOt = 0.0; | ||||
|                 //double holytime = 0.0; | ||||
|                 int coldata = 2; | ||||
|                 for (int i = 2; i <= 6; i++) | ||||
|                 var sumvalue_hrs = 0.0; | ||||
|                 var sumvalue_ot = 0.0; | ||||
|  | ||||
|                 for (int i = 2; i <= (useOther ? maxcol - 1 : maxcol); i++) //외부엑셀을 쓰다보니 열갯수가 5개로 제한되어있다. | ||||
|                 { | ||||
|                     if (item.Any() == false) | ||||
|                     if (item.Any() == false) //자료가없다면 0으로 채운다 | ||||
|                     { | ||||
|                         //자료가없다면 0으로 채운다 | ||||
|                         fpSpread1.Sheets[0].Cells[row, coldata].Value = null; | ||||
|                         fpSpread1.Sheets[0].Cells[row, i].Value = null; | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         var colData = fpSpread1.Sheets[0].Cells[6, i].Value; | ||||
|                         var colName = string.Empty;// fpSpread1.Sheets[0].Cells[6, i].Value.ToString(); | ||||
|                         if (colData != null) colName = colData.ToString(); | ||||
|                         var colData = fpSpread1.Sheets[0].Cells[6, i].Value;    //해당 열의 제목을 취함 | ||||
|                         var colName = colData?.ToString() ?? string.Empty;// string.Empty;// fpSpread1.Sheets[0].Cells[6, i].Value.ToString(); | ||||
|  | ||||
|                         //이 이름에 해당하는 데이터의 시간을 가져온다 | ||||
|                         double ot = 0.0; | ||||
|                         double hrs = 0.0; | ||||
|                         if (colName != "*" && String.IsNullOrEmpty(colName) == false) | ||||
|                         if (colName != "*" && colName.isEmpty() == false) | ||||
|                         { | ||||
|                             //double holytime = 0.0; | ||||
|                             var timeList = item.Where(t => t.svalue == colName); | ||||
|                             //해당 이름에 해당하는 데이트 취합 | ||||
|                             var timeList = item.Where(t => t.svalue.Replace(" ","") == colName.Replace(" ","")); | ||||
|                             if (timeList != null) | ||||
|                             { | ||||
|                                 hrs = (double)timeList.Sum(t => t.hrs); | ||||
|                                 ot = (double)timeList.Sum(t => t.ot); | ||||
|                                 sumOt += ot; | ||||
|                                 sumvalue_hrs += hrs; | ||||
|                                 sumvalue_ot += ot; | ||||
|                             } | ||||
|                         } | ||||
|                         if (ot + hrs == 0.0) fpSpread1.Sheets[0].Cells[row, coldata].Value = null; | ||||
|                         else fpSpread1.Sheets[0].Cells[row, coldata].Value = ot + hrs; //없음으로한다 | ||||
|                         if (ot + hrs == 0.0) fpSpread1.Sheets[0].Cells[row, i].Value = null;  //값이 없는 경우는 nul 처리 | ||||
|                         else fpSpread1.Sheets[0].Cells[row, i].Value = ot + hrs; | ||||
|                     } | ||||
|  | ||||
|  | ||||
|                     coldata += 1; | ||||
|                 } | ||||
|  | ||||
|                 //other 칸이 활성화되었다면 총량에서 뺴야한다 (lee jong myoung) | ||||
|                 if (useOther) | ||||
|                 { | ||||
|                     var tot_hr = item.Sum(t => t.hrs); | ||||
|                     var tot_ot = item.Sum(t => t.ot); | ||||
|                     var othervalue = (tot_hr + tot_ot) - (sumvalue_hrs + sumvalue_ot);    //total - displayvalue  | ||||
|                     if (othervalue == 0.0) fpSpread1.Sheets[0].Cells[row, maxcol].Value = null;  //값이 없는 경우는 nul 처리 | ||||
|                     else fpSpread1.Sheets[0].Cells[row, maxcol].Value = othervalue; | ||||
|                 } | ||||
|  | ||||
|                 sumOt = item.Sum(t => t.ot); | ||||
|  | ||||
|                 fpSpread1.Sheets[0].Cells[row, 7].CellType = numberCellType1; | ||||
|                 fpSpread1.Sheets[0].Cells[row, 7].ParseFormatString = "N1"; | ||||
|                 fpSpread1.Sheets[0].Cells[row, 8].CellType = numberCellType1; | ||||
|                 fpSpread1.Sheets[0].Cells[row, 8].ParseFormatString = "N1"; | ||||
|  | ||||
|  | ||||
|  | ||||
|                 fpSpread1.Sheets[0].Cells[row, 7].Formula = string.Format("SUM(C{0}:G{0})+K{0}+J{0}", row + 1); | ||||
|                 fpSpread1.Sheets[0].Cells[row, 7].Formula = string.Format("SUM(C{0}:G{0})+K{0}", row + 1); | ||||
|                 fpSpread1.Sheets[0].Cells[row, 8].Formula = string.Format("H{0}/$I$4", row + 1); | ||||
|                 //H8 /$I$4 | ||||
|                 | ||||
|                 if (sumOt == 0.0) fpSpread1.Sheets[0].Cells[row, 9].Value = null; //OT합계 | ||||
|                 else fpSpread1.Sheets[0].Cells[row, 9].Value = sumOt; //OT합계 | ||||
|  | ||||
|  | ||||
|  | ||||
|                 // process 의 휴가시간을 다시 계산한다. | ||||
|                 var 휴가데이터 = baseData.Where(t => t.process == processName && t.svalue == "휴가"); | ||||
|                 if(processName == "휴가") | ||||
|                 { | ||||
|  | ||||
|                 } | ||||
|                 var 휴가데이터 = baseData.Where(t => t.process.Replace(" ","") == processName.Replace(" ","") && t.svalue.Replace(" ", "") == "휴가"); | ||||
|                 if (휴가데이터 == null || 휴가데이터.Count() < 1) | ||||
|                 { | ||||
|                     fpSpread1.Sheets[0].Cells[row, 10].Value = null;// 0.0; //휴가시간 | ||||
| @@ -354,11 +381,12 @@ namespace FPJ0000.JobReport_ | ||||
|                     fpSpread1.Sheets[0].Cells[row, i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; | ||||
|                     fpSpread1.Sheets[0].Cells[row, i].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; | ||||
|                 } | ||||
|  | ||||
|  | ||||
|                 row += 1; | ||||
|             } | ||||
|  | ||||
|             var total_value = baseData.Sum(t => t.hrs) + baseData.Sum(t => t.ot); | ||||
|  | ||||
|  | ||||
|             //합계데이터 | ||||
|             fpSpread1.Sheets[0].Cells[row, 1].Value = "합계"; | ||||
|             fpSpread1.Sheets[0].Cells[row, 1].BackColor = Color.LightGray; | ||||
| @@ -388,110 +416,6 @@ namespace FPJ0000.JobReport_ | ||||
|  | ||||
|             this.fpSpread1.Sheets[0].RowCount = row + 1; | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|             // this.ta.Fill(this.dsReport.JobReportDay, tbMon.Text, FCOMMON.info.Login.gcode); | ||||
|             // //this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout); | ||||
|             // //this.reportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.PageWidth; | ||||
|             // //this.reportViewer1.RefreshReport(); | ||||
|  | ||||
|             // //그리드뷰 생성 | ||||
|             // this.dataGridView1.Rows.Clear(); | ||||
|             // this.dataGridView1.Columns.Clear(); | ||||
|  | ||||
|             // var Process = tbProcess.Text.Trim(); | ||||
|             // if (Process == "%" || tbProcess.SelectedIndex == 0) Process = ""; | ||||
|  | ||||
|             // var wekklist = new string[] { "일","월","화","수","목","금","토" }; | ||||
|  | ||||
|             // //날짜에 해당하는 열을 먼저 생성한다 | ||||
|             // dataGridView1.Columns.Add("dvcu_damdang", "사원명"); | ||||
|             //// dataGridView1.Columns.Add("dvcu_process", "공정"); | ||||
|             // var daylist = dsReport.JobReportDay.OrderBy(t=>t.pdate).GroupBy(t => t.pdate); | ||||
|             // foreach (var dayitem in daylist) | ||||
|             // { | ||||
|             //     var dtValue = DateTime.Parse(dayitem.Key); | ||||
|             //     if(dtValue.DayOfWeek == DayOfWeek.Saturday || dtValue.DayOfWeek == DayOfWeek.Sunday) | ||||
|             //     { | ||||
|             //         var week = wekklist[(int)dtValue.DayOfWeek]; | ||||
|             //         this.dataGridView1.Columns.Add("dvcu_pdate", dayitem.Key.Substring(8, 2) + "(" + week.ToString() + ")"); | ||||
|             //     } | ||||
|             //     else | ||||
|             //     { | ||||
|             //         this.dataGridView1.Columns.Add("dvcu_pdate", dayitem.Key.Substring(8, 2) ); | ||||
|             //     } | ||||
|  | ||||
|             //     this.dataGridView1.Columns[this.dataGridView1.Columns.Count -1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; | ||||
|             // } | ||||
|             // dataGridView1.Columns.Add("dvcu_sum", "합계"); | ||||
|             // this.dataGridView1.Columns[this.dataGridView1.Columns.Count - 1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; | ||||
|  | ||||
|  | ||||
|             // foreach (var item in dsReport.JobReportDay.Where(t=>t.processs.Contains(Process)).OrderBy(t => t.uname + t.uid).GroupBy(t => t.uname)) | ||||
|             // { | ||||
|             //     //사용자별로 데이터를 가져온다. | ||||
|             //     var username = item.Key; | ||||
|             //     var userid = item.FirstOrDefault().uid; | ||||
|             //     List<string> rowdata = new List<string>(); | ||||
|             //     rowdata.Add(username); | ||||
|             //    // rowdata.Add(item.FirstOrDefault().processs); | ||||
|  | ||||
|             //     //이 사용자의 데이터를 날짜별로 정렬해서 가져온다. | ||||
|             //     var sum = 0.0; | ||||
|             //     var sumOT = 0.0; | ||||
|             //     for (int i = 1; i < this.dataGridView1.Columns.Count-1; i++) | ||||
|             //     { | ||||
|             //         var col = this.dataGridView1.Columns[i]; | ||||
|             //         var dayStr = col.HeaderText.Substring(0, 2);  | ||||
|             //         var daydata = dsReport.JobReportDay.Where(t => t.uid == userid && t.pdate.EndsWith(dayStr)).FirstOrDefault(); | ||||
|             //         if (daydata != null) | ||||
|             //         { | ||||
|             //             sum += daydata.hrs; | ||||
|             //             sumOT += daydata.ot; | ||||
|             //             rowdata.Add((daydata.hrs.ToString() + "+" + daydata.ot.ToString())); | ||||
|             //         } | ||||
|             //         else rowdata.Add("--"); | ||||
|             //     } | ||||
|             //     rowdata.Add(sum.ToString() + "+" + sumOT.ToString()); | ||||
|             //     this.dataGridView1.Rows.Add(rowdata.ToArray()); | ||||
|             // } | ||||
|             // foreach(DataGridViewRow dvrow in this.dataGridView1.Rows) | ||||
|             // { | ||||
|             //     for(int i = 1;i < this.dataGridView1.ColumnCount-1;i++) | ||||
|             //     { | ||||
|             //         var cellvalue = "--"; | ||||
|             //         if(dvrow.Cells[i].Value != null) cellvalue=  dvrow.Cells[i].Value.ToString(); | ||||
|             //         if (cellvalue == "--") dvrow.Cells[i].Style.ForeColor = Color.Gray; | ||||
|             //         else | ||||
|             //         { | ||||
|             //             var datasplbu = cellvalue.Split('+'); | ||||
|             //             double hrs; | ||||
|             //             double ot; | ||||
|             //             if (double.TryParse(datasplbu[1], out ot) == false) ot = 0; | ||||
|  | ||||
|             //             if(double.TryParse(datasplbu[0],out hrs)) | ||||
|             //             { | ||||
|             //                 if (hrs > 8.0) dvrow.Cells[i].Style.ForeColor = Color.Blue; | ||||
|             //                 else if (hrs < 8.0) dvrow.Cells[i].Style.ForeColor = Color.Red; | ||||
|             //                 else | ||||
|             //                 { | ||||
|             //                     if (ot == 0) | ||||
|             //                         dvrow.Cells[i].Style.ForeColor = Color.Black; | ||||
|             //                     else | ||||
|             //                         dvrow.Cells[i].Style.ForeColor = Color.Magenta; | ||||
|             //                 } | ||||
|             //             } | ||||
|             //             else | ||||
|             //             { | ||||
|             //                 FCOMMON.Util.MsgE("숫자변경실패 " + cellvalue); | ||||
|             //                 dvrow.Cells[i].Style.ForeColor = Color.Red; | ||||
|             //             } | ||||
|             //         } | ||||
|             //     } | ||||
|  | ||||
|             // } | ||||
|             // this.dataGridView1.AutoResizeColumns(); | ||||
|         } | ||||
|         private void button1_Click(object sender, EventArgs e) | ||||
|         { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 chi
					chi