...
This commit is contained in:
@@ -20,6 +20,16 @@ namespace FPJ0000.JobReport_
|
||||
|
||||
private void rJobReport_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
var myCI = new System.Globalization.CultureInfo("ko-KR");
|
||||
var myCal = myCI.Calendar;
|
||||
var myCWR = myCI.DateTimeFormat.CalendarWeekRule;
|
||||
DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;
|
||||
var dat = myCal.GetWeekOfYear(DateTime.Now, myCWR, myFirstDOW);
|
||||
tbWW.Tag = dat;
|
||||
tbWW.Text = $"ww{dat:00}";
|
||||
|
||||
|
||||
this.tbProcess.Items.Clear();
|
||||
tbProcess.Items.Add("--전체--");
|
||||
var taProcess = new dsReportTableAdapters.ProcessListTableAdapter();
|
||||
@@ -68,7 +78,7 @@ namespace FPJ0000.JobReport_
|
||||
if (tbProcess.SelectedIndex > 0)
|
||||
cmbUser.Text = string.Format("[{0}] {1}", FCOMMON.info.Login.no, FCOMMON.info.Login.nameK);
|
||||
|
||||
if (cmbUser.SelectedIndex < 0) cmbUser.SelectedIndex = 0; //기본전체로 선택해준다.
|
||||
if (cmbUser.SelectedIndex < 0 && cmbUser.Items.Count > 0) cmbUser.SelectedIndex = 0; //기본전체로 선택해준다.
|
||||
}
|
||||
|
||||
void refrehData()
|
||||
@@ -77,6 +87,7 @@ namespace FPJ0000.JobReport_
|
||||
//근문일수,시간
|
||||
// var vSD = dts.Value.ToShortDateString();
|
||||
//var vED = dte.Value.ToShortDateString();
|
||||
var curww = int.Parse(DateTime.Now.ToString("yy") + "00") + int.Parse(tbWW.Tag.ToString());
|
||||
|
||||
string prcname = tbProcess.SelectedIndex < 1 ? "%" : tbProcess.Text.Trim();
|
||||
var taH = new dsReportTableAdapters.UserScheduleTableTableAdapter();
|
||||
@@ -91,22 +102,12 @@ namespace FPJ0000.JobReport_
|
||||
//this.reportViewer1.RefreshReport();
|
||||
|
||||
//그리드뷰 생성
|
||||
this.dv1.Rows.Clear();
|
||||
this.dv1.Columns.Clear();
|
||||
|
||||
fp1.ActiveSheet.RowCount = 0;
|
||||
|
||||
fp1.ActiveSheet.Columns.Clear();
|
||||
|
||||
|
||||
|
||||
var wekklist = new string[] { "일", "월", "화", "수", "목", "금", "토" };
|
||||
|
||||
//날짜에 해당하는 열을 먼저 생성한다
|
||||
dv1.Columns.Add("dvcu_pidx", "*");
|
||||
dv1.Columns.Add("dvcu_title", "프로젝트");
|
||||
dv1.Columns.Add("dvcu_title", "시작");
|
||||
dv1.Columns.Add("dvcu_title", "만료");
|
||||
|
||||
var colidx = 0;
|
||||
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "*";
|
||||
@@ -116,17 +117,17 @@ namespace FPJ0000.JobReport_
|
||||
//dv1.Columns.Add("dvcu_hrs", "시간");
|
||||
|
||||
//오늘의WW추가
|
||||
var myCI = new System.Globalization.CultureInfo("ko-KR");
|
||||
var myCal = myCI.Calendar;
|
||||
var myCWR = myCI.DateTimeFormat.CalendarWeekRule;
|
||||
DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;
|
||||
var dat = myCal.GetWeekOfYear(DateTime.Now, myCWR, myFirstDOW);
|
||||
var curwwstr = (DateTime.Now.Year - 2000).ToString() + dat.ToString("00");
|
||||
//var myCI = new System.Globalization.CultureInfo("ko-KR");
|
||||
//var myCal = myCI.Calendar;
|
||||
//var myCWR = myCI.DateTimeFormat.CalendarWeekRule;
|
||||
//DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;
|
||||
//var dat = myCal.GetWeekOfYear(DateTime.Now, myCWR, myFirstDOW);
|
||||
//var curwwstr = (DateTime.Now.Year - 2000).ToString() + dat.ToString("00");
|
||||
|
||||
|
||||
//ww컬럼생성
|
||||
List<int> wwlist = new List<int>();
|
||||
wwlist.Add(int.Parse(curwwstr));
|
||||
wwlist.Add(curww);
|
||||
int ww = 0;
|
||||
foreach (dsReport.UserScheduleTableRow dr in dsReport.UserScheduleTable.Rows)
|
||||
{
|
||||
@@ -155,24 +156,31 @@ namespace FPJ0000.JobReport_
|
||||
|
||||
//var wwlist = dsReport.UserScheduleTable.GroupBy(t => t.ww).Select(t => int.Parse(t.Key)).OrderBy(t => t).ToList();
|
||||
var wwfont = new Font("Consolas", 8f);
|
||||
dv1.ColumnHeadersDefaultCellStyle.Font = wwfont;
|
||||
|
||||
var curyystr = DateTime.Now.ToString("yy");
|
||||
foreach (var item in wwlist.OrderBy(t => t))
|
||||
{
|
||||
var wwname = item.ToString("0000");
|
||||
var yy1 = wwname.Substring(0, 2);
|
||||
var ww1 = wwname.Substring(2);
|
||||
dv1.Columns.Add("dvcu_ww" + item, $"w{ww1}\ny{yy1}");
|
||||
|
||||
|
||||
dv1.Columns[dv1.Columns.Count - 1].Tag = item;
|
||||
dv1.Columns[dv1.Columns.Count - 1].DefaultCellStyle.NullValue = "";
|
||||
dv1.Columns[dv1.Columns.Count - 1].DefaultCellStyle.Format = "N2";
|
||||
dv1.Columns[dv1.Columns.Count - 1].DefaultCellStyle.Font = wwfont;
|
||||
dv1.Columns[dv1.Columns.Count - 1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
|
||||
|
||||
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = $"w{ww1}\ny{yy1}";
|
||||
fp1.ActiveSheet.Columns.Add(colidx, 1);
|
||||
|
||||
fp1.ActiveSheet.Columns[colidx].Tag = item;
|
||||
if (item == curww) //이번주라면?
|
||||
{
|
||||
fp1.ActiveSheet.Columns[colidx].Label = $"(ww{ww1:00})";
|
||||
fp1.ActiveSheet.Columns[colidx].BackColor = Color.LightSlateGray;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (curyystr.Equals(yy1))
|
||||
fp1.ActiveSheet.Columns[colidx].Label = $"ww{ww1:00}"; //같은년도
|
||||
else
|
||||
fp1.ActiveSheet.Columns[colidx].Label = $"ww{ww1:00}\ny{yy1}"; //다른년도
|
||||
}
|
||||
colidx += 1;
|
||||
}
|
||||
|
||||
//프로젝트별로 데이터를 표시한다.
|
||||
@@ -180,22 +188,18 @@ namespace FPJ0000.JobReport_
|
||||
var ridx = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
foreach (var grp in grp_list)
|
||||
{
|
||||
var prjname = grp.Key;
|
||||
var sdate = grp.Max(t => t.sdate);
|
||||
var ddate = grp.Max(t => t.ddate);
|
||||
string[] columns = new string[dv1.ColumnCount];
|
||||
//string[] columns = new string[dv1.ColumnCount];
|
||||
|
||||
var row = 0;
|
||||
columns[row++] = grp.Max(t => t.idx).ToString();
|
||||
columns[row++] = prjname;
|
||||
columns[row++] = sdate;
|
||||
columns[row++] = ddate;
|
||||
//columns[row++] = grp.Max(t => t.idx).ToString();
|
||||
//columns[row++] = prjname;
|
||||
//columns[row++] = sdate;
|
||||
//columns[row++] = ddate;
|
||||
|
||||
|
||||
var cidx = 0;
|
||||
@@ -206,10 +210,10 @@ namespace FPJ0000.JobReport_
|
||||
ctdef.Multiline = true;
|
||||
|
||||
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = grp.Max(t => t.idx);
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = prjname;
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = sdate;
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = ddate;
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = grp.Max(t => t.idx);
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = prjname;
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = sdate;
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = ddate;
|
||||
|
||||
|
||||
|
||||
@@ -227,14 +231,14 @@ namespace FPJ0000.JobReport_
|
||||
bool first = true;
|
||||
int startcol = -1;
|
||||
int endcol = -1;
|
||||
for (int i = row; i < dv1.ColumnCount; i++)
|
||||
for (int i = 4; i < fp1.ActiveSheet.ColumnCount; i++)
|
||||
{
|
||||
var col = dv1.Columns[i];
|
||||
var col = fp1.ActiveSheet.Columns[i];
|
||||
if (col.Tag == null) continue;
|
||||
var colno = int.Parse(col.Tag.ToString());
|
||||
if (colno >= isw && colno <= iew)
|
||||
{
|
||||
columns[i] = "O";
|
||||
// columns[i] = "O";
|
||||
|
||||
if (dr.complete || dr.progress > 99)
|
||||
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Lime;
|
||||
@@ -269,7 +273,7 @@ namespace FPJ0000.JobReport_
|
||||
}
|
||||
|
||||
}
|
||||
dv1.Rows.Add(columns);
|
||||
// dv1.Rows.Add(columns);
|
||||
ridx += 1;
|
||||
}
|
||||
|
||||
@@ -284,145 +288,21 @@ namespace FPJ0000.JobReport_
|
||||
fp1.ActiveSheet.Columns[1].Width = 250;
|
||||
fp1.ActiveSheet.Columns[2].Width = 75;
|
||||
fp1.ActiveSheet.Columns[3].Width = 75;
|
||||
|
||||
|
||||
|
||||
//cell formation
|
||||
foreach (DataGridViewRow dr in this.dv1.Rows)
|
||||
{
|
||||
for (int i = 4; i < dv1.ColumnCount; i++)
|
||||
{
|
||||
var cell = dr.Cells[i];
|
||||
if (cell.Value == null)
|
||||
{
|
||||
cell.Style.BackColor = Color.White;
|
||||
continue;
|
||||
}
|
||||
if (cell.Value.ToString().Equals("O")) cell.Style.BackColor = Color.Green;
|
||||
else cell.Style.BackColor = Color.White;
|
||||
}
|
||||
}
|
||||
|
||||
dv1.AutoResizeColumns();
|
||||
|
||||
return;
|
||||
|
||||
dv1.Columns.Add("dvcu_hrs", "합계(h)");
|
||||
dv1.Columns[dv1.Columns.Count - 1].DefaultCellStyle.BackColor = Color.LightGray;
|
||||
|
||||
dv1.Columns.Add("dvcu_hrs", "비율(%)");
|
||||
dv1.Columns[dv1.Columns.Count - 1].DefaultCellStyle.Format = "N2";
|
||||
|
||||
var TotHrs = dsReport.JobProjectTimes.Sum(t => t.hrs);
|
||||
|
||||
//데이터를 추가한다.
|
||||
foreach (var dr in dsReport.JobProjectTimes.OrderByDescending(t => t.PrjStatus + t.PrjName).GroupBy(t => t.pidx))
|
||||
{
|
||||
var pidx = dr.Key;
|
||||
var fdr = dr.First();
|
||||
|
||||
List<object> row = new List<object>();
|
||||
row.Add(dr.Key);
|
||||
if (dr.Key == -1)
|
||||
{
|
||||
row.Add("--");
|
||||
row.Add("비 프로젝트 업무");
|
||||
}
|
||||
else
|
||||
{
|
||||
row.Add(fdr.PrjStatus);
|
||||
if (fdr.PrjName.isEmpty())
|
||||
{
|
||||
row.Add($"{fdr.title}");
|
||||
}
|
||||
else
|
||||
{
|
||||
row.Add($"{fdr.PrjName}");
|
||||
}
|
||||
|
||||
}
|
||||
//row.Add("--");
|
||||
|
||||
foreach (var item in wwlist)
|
||||
{
|
||||
var wwsum = dsReport.JobProjectTimes.Where(t => t.ww == item.ToString()).Sum(t => t.hrs);
|
||||
var wwhrs = 0.0;
|
||||
var hrsdata = dr.Where(t => t.ww == item.ToString());
|
||||
if (hrsdata.Any()) wwhrs = hrsdata.Sum(t => t.hrs);
|
||||
|
||||
var perc = 0.0;
|
||||
if (wwsum > 0) perc = (wwhrs / wwsum) * 100.0;
|
||||
|
||||
if (perc == 0.0) row.Add(null);
|
||||
else row.Add(perc);
|
||||
}
|
||||
|
||||
row.Add(dr.Sum(t => t.hrs));
|
||||
var tperc = 0.0;
|
||||
if (TotHrs > 0) tperc = (dr.Sum(t => t.hrs) / TotHrs) * 100.0;
|
||||
|
||||
row.Add(tperc);
|
||||
|
||||
if (dr.Key == -1)
|
||||
dv1.Rows.Insert(0, row.ToArray());
|
||||
else
|
||||
dv1.Rows.Add(row.ToArray());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
dv1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
|
||||
dv1.Columns[0].DefaultCellStyle.BackColor = Color.LightGray;
|
||||
dv1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
|
||||
|
||||
|
||||
for (int i = 0; i < this.dv1.ColumnCount; i++)
|
||||
{
|
||||
var col = this.dv1.Columns[i];
|
||||
if (col.Name.StartsWith("dvcu_ww") == false) continue;
|
||||
|
||||
foreach (DataGridViewRow dvrow in this.dv1.Rows)
|
||||
{
|
||||
var c = dvrow.Cells[col.Index];
|
||||
var v = c.Value;
|
||||
double hrs = 0.0;
|
||||
if (v != null) hrs = double.Parse(v.ToString());
|
||||
if (hrs > 0)
|
||||
{
|
||||
c.Style.BackColor = Color.Gold;
|
||||
}
|
||||
else
|
||||
{
|
||||
c.Style.BackColor = Color.White;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//첫줄은 색상을 변경해준다.
|
||||
if (dv1.RowCount > 0)
|
||||
{
|
||||
var dvrow = dv1.Rows[0];
|
||||
for (int i = 0; i < this.dv1.ColumnCount; i++)
|
||||
{
|
||||
var c = dvrow.Cells[i];
|
||||
c.Style.BackColor = Color.LightGray;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
this.dv1.AutoResizeColumns();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void btSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
dv1.ExportData(string.Empty);
|
||||
//dv1.ExportData(string.Empty);
|
||||
var sd = new SaveFileDialog();
|
||||
sd.Filter = "excel file|*.xlsx";
|
||||
if (sd.ShowDialog() != DialogResult.OK) return;
|
||||
fp1.SaveExcel(sd.FileName);
|
||||
|
||||
if (FCOMMON.Util.MsgQ("저장된 파일을 열까요?") == DialogResult.Yes)
|
||||
FCOMMON.Util.RunExplorer(sd.FileName);
|
||||
}
|
||||
|
||||
private void btRefresh_Click(object sender, EventArgs e)
|
||||
@@ -436,46 +316,11 @@ namespace FPJ0000.JobReport_
|
||||
UpdateUserList();
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
|
||||
private void cmbUser_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
var newsize = dv1.Columns[2].Width < 10 ? 100 : 5;
|
||||
this.dv1.SuspendLayout();
|
||||
for (int i = 3; i < this.dv1.ColumnCount - 2; i++)
|
||||
{
|
||||
this.dv1.Columns[i].Width = newsize;
|
||||
}
|
||||
this.dv1.ResumeLayout();
|
||||
}
|
||||
|
||||
private void linkLabel7_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void linkLabel13_Click(object sender, EventArgs e)
|
||||
{
|
||||
//var lnk = sender as LinkLabel;
|
||||
//if (lnk.Text.Equals("상반기"))
|
||||
//{
|
||||
// dts.Value = DateTime.Parse(DateTime.Now.Year.ToString("0000") + "-01-01");
|
||||
// dte.Value = DateTime.Parse(DateTime.Now.Year.ToString("0000") + "-05-31");
|
||||
//}
|
||||
//else if (lnk.Text.Equals("하반기"))
|
||||
//{
|
||||
// dts.Value = DateTime.Parse(DateTime.Now.Year.ToString("0000") + "-06-01");
|
||||
// dte.Value = DateTime.Parse(DateTime.Now.Year.ToString("0000") + "-12-31");
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// if (int.TryParse(lnk.Text.Substring(0, 2), out int mon) == false) return;
|
||||
// dts.Value = DateTime.Parse(DateTime.Now.Year.ToString("0000") + "-" + mon.ToString("00" + "-01"));
|
||||
// dte.Value = dts.Value.AddMonths(1).AddDays(-1);
|
||||
//}
|
||||
}
|
||||
|
||||
private void linkLabel14_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
|
||||
if (binit == false) return;
|
||||
refrehData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user