검토기한 항목 추가 , 개인별 스케쥴 현황 변경
This commit is contained in:
@@ -37,9 +37,9 @@ namespace FPJ0000.JobReport_
|
||||
foreach (dsReport.ProcessListRow dr in dtProcessList.Rows)
|
||||
tbProcess.Items.Add(dr.processs);
|
||||
|
||||
this.tbProcess.Text = FCOMMON.info.Login.process;
|
||||
if (tbProcess.SelectedIndex < 0) tbProcess.SelectedIndex = 0;
|
||||
|
||||
//this.tbProcess.Text = FCOMMON.info.Login.process;
|
||||
tbProcess.SelectedIndex = 0;
|
||||
tbProcess.Enabled = false;
|
||||
//사용자 목록을 선택한다
|
||||
UpdateUserList();
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace FPJ0000.JobReport_
|
||||
var ta = new dsPRJTableAdapters.vJobReportForUserListTableAdapter();
|
||||
|
||||
cmbUser.Items.Clear();
|
||||
|
||||
cmbUser.Items.Add("--전체--"); ;
|
||||
//일반사용자 목록 가져온다
|
||||
dsPRJ.vJobReportForUserListDataTable userlist;
|
||||
|
||||
@@ -75,7 +75,7 @@ namespace FPJ0000.JobReport_
|
||||
cmbUser.Items.Add(String.Format("[{0}] {1}", dr.id, dr.name));
|
||||
}
|
||||
|
||||
if (tbProcess.SelectedIndex > 0)
|
||||
//if (tbProcess.SelectedIndex > 0)
|
||||
cmbUser.Text = string.Format("[{0}] {1}", FCOMMON.info.Login.no, FCOMMON.info.Login.nameK);
|
||||
|
||||
if (cmbUser.SelectedIndex < 0 && cmbUser.Items.Count > 0) cmbUser.SelectedIndex = 0; //기본전체로 선택해준다.
|
||||
@@ -93,10 +93,44 @@ namespace FPJ0000.JobReport_
|
||||
var taH = new dsReportTableAdapters.UserScheduleTableTableAdapter();
|
||||
|
||||
var username = cmbUser.Text.Trim();
|
||||
var userfilter = "%";
|
||||
var uid = string.Empty;
|
||||
if (cmbUser.SelectedIndex > 0)
|
||||
{
|
||||
uid = username.Substring(1, username.IndexOf("]") - 1);// "395552";
|
||||
userfilter = cmbUser.SelectedIndex == 0 ? "%" : "%" + uid + "%";
|
||||
}
|
||||
|
||||
var uid = username.Substring(1, username.IndexOf("]") - 1);// "395552";
|
||||
taH.Fill(this.dsReport.UserScheduleTable, FCOMMON.info.Login.gcode, userfilter);
|
||||
|
||||
//담당자별로 데이터를 쪼개야한다 230209
|
||||
var dtnew = new dsReport.UserScheduleTableDataTable();
|
||||
foreach (dsReport.UserScheduleTableRow dr in dsReport.UserScheduleTable)
|
||||
{
|
||||
var userlist = dr.uid.Replace(",", "/").Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var namelist = dr.uidname.Replace(",", "/").Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
for (int i = 0; i < userlist.Length; i++)
|
||||
{
|
||||
var userid = userlist[i];
|
||||
if (uid.isEmpty() == false && uid.Equals(userid) == false) continue;
|
||||
var usernm = namelist[i];
|
||||
//모든 컬럼의 데이터를 쓴다 단 idx는 제외한다
|
||||
var newdr = dtnew.NewUserScheduleTableRow();
|
||||
newdr.idx = dtnew.Rows.Count;
|
||||
newdr.uid = userid;
|
||||
newdr.uidname = usernm;
|
||||
foreach (DataColumn dc in dtnew.Columns)
|
||||
{
|
||||
var colname = dc.ColumnName.ToLower();
|
||||
if (colname.Equals("idx")) continue;
|
||||
if (colname.Equals("uid")) continue;
|
||||
if (colname.Equals("uidname")) continue;
|
||||
newdr[colname] = dr[colname];
|
||||
}
|
||||
dtnew.AddUserScheduleTableRow(newdr);
|
||||
}
|
||||
}
|
||||
|
||||
taH.Fill(this.dsReport.UserScheduleTable, FCOMMON.info.Login.gcode, "%" + uid + "%");
|
||||
//this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);
|
||||
//this.reportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.PageWidth;
|
||||
//this.reportViewer1.RefreshReport();
|
||||
@@ -110,7 +144,9 @@ namespace FPJ0000.JobReport_
|
||||
|
||||
|
||||
var colidx = 0;
|
||||
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "*";
|
||||
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "공정";
|
||||
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "담당자";
|
||||
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "상태";
|
||||
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "프로젝트";
|
||||
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "시작";
|
||||
fp1.ActiveSheet.Columns.Add(colidx, 1); fp1.ActiveSheet.Columns[colidx++].Label = "만료";
|
||||
@@ -129,7 +165,7 @@ namespace FPJ0000.JobReport_
|
||||
List<int> wwlist = new List<int>();
|
||||
wwlist.Add(curww);
|
||||
int ww = 0;
|
||||
foreach (dsReport.UserScheduleTableRow dr in dsReport.UserScheduleTable.Rows)
|
||||
foreach (dsReport.UserScheduleTableRow dr in dtnew)
|
||||
{
|
||||
if (dr.sw.Equals("00-00") == false)
|
||||
{
|
||||
@@ -183,100 +219,129 @@ namespace FPJ0000.JobReport_
|
||||
colidx += 1;
|
||||
}
|
||||
|
||||
//프로젝트별로 데이터를 표시한다.
|
||||
var grp_list = dsReport.UserScheduleTable.GroupBy(t => t.name).OrderBy(t => t.Key);
|
||||
//사용자별로 그룹을 먼저 짓는다
|
||||
var ridx = 0;
|
||||
|
||||
|
||||
foreach (var grp in grp_list)
|
||||
var grp_prc = dtnew.GroupBy(t => t.userprocess).OrderBy(t => t.Key);
|
||||
foreach (var prc in grp_prc)
|
||||
{
|
||||
var prjname = grp.Key;
|
||||
var sdate = grp.Max(t => t.sdate);
|
||||
var ddate = grp.Max(t => t.ddate);
|
||||
//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;
|
||||
|
||||
|
||||
var cidx = 0;
|
||||
fp1.ActiveSheet.RowCount += 1;//.AddRows(ridx, 1);
|
||||
|
||||
var ctdef = new FarPoint.Win.Spread.CellType.TextCellType();
|
||||
ctdef.WordWrap = true;
|
||||
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;
|
||||
|
||||
|
||||
|
||||
//세부항목데이터를 넣는다
|
||||
foreach (var dr in grp)
|
||||
var grp_user = prc.GroupBy(t => t.uid).OrderBy(t => t.Key);
|
||||
foreach (var user in grp_user)
|
||||
{
|
||||
//예측일
|
||||
var sw = dr.sw;
|
||||
if (sw.Equals("00-00")) continue;
|
||||
var ew = dr.ew;
|
||||
if (ew.Equals("00-00")) continue;
|
||||
|
||||
var isw = int.Parse(sw.Replace("-", ""));
|
||||
var iew = int.Parse(ew.Replace("-", ""));
|
||||
bool first = true;
|
||||
int startcol = -1;
|
||||
int endcol = -1;
|
||||
for (int i = 4; i < fp1.ActiveSheet.ColumnCount; i++)
|
||||
//프로젝트별로 데이터를 표시한다.
|
||||
var grp_list = user.GroupBy(t => t.name).OrderBy(t => t.Key);
|
||||
foreach (var grp in grp_list)
|
||||
{
|
||||
var col = fp1.ActiveSheet.Columns[i];
|
||||
if (col.Tag == null) continue;
|
||||
var colno = int.Parse(col.Tag.ToString());
|
||||
if (colno >= isw && colno <= iew)
|
||||
var prjname = grp.Key;
|
||||
var sdate = grp.Max(t => t.sdate);
|
||||
var ddate = grp.Max(t => t.ddate);
|
||||
var uname = grp.Max(t => t.uidname);
|
||||
var status = grp.Max(t => t.status);
|
||||
//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;
|
||||
|
||||
|
||||
var cidx = 0;
|
||||
fp1.ActiveSheet.RowCount += 1;//.AddRows(ridx, 1);
|
||||
|
||||
var ctdef = new FarPoint.Win.Spread.CellType.TextCellType();
|
||||
ctdef.WordWrap = true;
|
||||
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 = prc.Key;
|
||||
|
||||
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = uname;
|
||||
if (status.Equals("진행"))
|
||||
{
|
||||
// columns[i] = "O";
|
||||
|
||||
if (dr.complete || dr.progress > 99)
|
||||
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Lime;
|
||||
else if (dr.progress < 50)
|
||||
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Tomato;
|
||||
else
|
||||
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Gold;
|
||||
|
||||
if (first)
|
||||
{
|
||||
fp1.ActiveSheet.Cells[ridx, i].Value = dr.title + "\n" + dr.progress.ToString("N0") + "%";
|
||||
fp1.ActiveSheet.Cells[ridx, i].Note = dr.title + "\n" + dr.progress.ToString("N0") + "%";
|
||||
first = false;
|
||||
startcol = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
endcol = i;
|
||||
}
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].BackColor = Color.White;
|
||||
fp1.ActiveSheet.Cells[ridx, cidx+1].BackColor = Color.White;
|
||||
}
|
||||
else if (status.Equals("검토"))
|
||||
{
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].BackColor = Color.SkyBlue;
|
||||
fp1.ActiveSheet.Cells[ridx, cidx+1].BackColor = Color.SkyBlue;
|
||||
}
|
||||
|
||||
fp1.ActiveSheet.Cells[ridx, i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
|
||||
fp1.ActiveSheet.Cells[ridx, i].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
|
||||
fp1.ActiveSheet.Cells[ridx, i].Font = new Font("맑은 고딕", 7);
|
||||
fp1.ActiveSheet.Cells[ridx, i].CellType = ctdef;
|
||||
}
|
||||
if (startcol != -1 && endcol != -1)
|
||||
{
|
||||
fp1.ActiveSheet.AddSpanCell(ridx, startcol, 1, (endcol - startcol + 1));
|
||||
// fp1.ActiveSheet.Cells[ridx, startcol].CellType = ctdef;
|
||||
|
||||
}
|
||||
fp1.ActiveSheet.Cells[ridx, cidx].CellType = ctdef; fp1.ActiveSheet.Cells[ridx, cidx].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center; fp1.ActiveSheet.Cells[ridx, cidx++].Value = status;// 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;
|
||||
|
||||
|
||||
|
||||
//세부항목데이터를 넣는다
|
||||
foreach (var dr in grp)
|
||||
{
|
||||
//예측일
|
||||
var sw = dr.sw;
|
||||
if (sw.Equals("00-00")) continue;
|
||||
var ew = dr.ew;
|
||||
if (ew.Equals("00-00")) continue;
|
||||
|
||||
var isw = int.Parse(sw.Replace("-", ""));
|
||||
var iew = int.Parse(ew.Replace("-", ""));
|
||||
bool first = true;
|
||||
int startcol = -1;
|
||||
int endcol = -1;
|
||||
for (int i = 4; i < fp1.ActiveSheet.ColumnCount; 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";
|
||||
|
||||
if (dr.complete || dr.progress > 99)
|
||||
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Lime;
|
||||
else if (dr.progress < 50)
|
||||
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Tomato;
|
||||
else
|
||||
fp1.ActiveSheet.Cells[ridx, i].BackColor = Color.Gold;
|
||||
|
||||
if (first)
|
||||
{
|
||||
fp1.ActiveSheet.Cells[ridx, i].Value = dr.title + "\n" + dr.progress.ToString("N0") + "%";
|
||||
fp1.ActiveSheet.Cells[ridx, i].Note = dr.title + "\n" + dr.progress.ToString("N0") + "%";
|
||||
first = false;
|
||||
startcol = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
endcol = i;
|
||||
}
|
||||
}
|
||||
|
||||
fp1.ActiveSheet.Cells[ridx, i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
|
||||
fp1.ActiveSheet.Cells[ridx, i].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
|
||||
fp1.ActiveSheet.Cells[ridx, i].Font = new Font("맑은 고딕", 7);
|
||||
fp1.ActiveSheet.Cells[ridx, i].CellType = ctdef;
|
||||
}
|
||||
if (startcol != -1 && endcol != -1)
|
||||
{
|
||||
fp1.ActiveSheet.AddSpanCell(ridx, startcol, 1, (endcol - startcol + 1));
|
||||
// fp1.ActiveSheet.Cells[ridx, startcol].CellType = ctdef;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
// dv1.Rows.Add(columns);
|
||||
ridx += 1;
|
||||
}
|
||||
}
|
||||
// dv1.Rows.Add(columns);
|
||||
ridx += 1;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
fp1.ActiveSheet.AllowNoteEdit = true;
|
||||
fp1.ActiveSheet.AutoUpdateNotes = true;
|
||||
for (int i = 0; i < fp1.ActiveSheet.RowCount; i++)
|
||||
@@ -284,10 +349,12 @@ namespace FPJ0000.JobReport_
|
||||
fp1.ActiveSheet.Rows[i].Height = 40;
|
||||
}
|
||||
|
||||
fp1.ActiveSheet.Columns[0].Width = 35;
|
||||
fp1.ActiveSheet.Columns[1].Width = 250;
|
||||
fp1.ActiveSheet.Columns[2].Width = 75;
|
||||
fp1.ActiveSheet.Columns[3].Width = 75;
|
||||
fp1.ActiveSheet.Columns[0].Width = 90;
|
||||
fp1.ActiveSheet.Columns[1].Width = 50;
|
||||
fp1.ActiveSheet.Columns[2].Width = 35;
|
||||
fp1.ActiveSheet.Columns[3].Width = 250;
|
||||
fp1.ActiveSheet.Columns[4].Width = 75;
|
||||
fp1.ActiveSheet.Columns[5].Width = 75;
|
||||
|
||||
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user