적정인원보고서 수정
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