This commit is contained in:
chi
2022-02-01 19:45:04 +09:00
parent f2114194d3
commit 473fe9e4b2
4 changed files with 118 additions and 43 deletions

View File

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로 // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로
// 지정되도록 할 수 있습니다. // 지정되도록 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("22.02.01.1200")] [assembly: AssemblyVersion("22.02.01.1730")]
[assembly: AssemblyFileVersion("22.02.01.1200")] [assembly: AssemblyFileVersion("22.02.01.1730")]

View File

@@ -435,7 +435,7 @@ namespace FCOMMON
var retval = new sItemInfo(); var retval = new sItemInfo();
retval.idx = -1; 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 " + " from vGroupUser " +
" where gcode='" + FCOMMON.info.Login.gcode + "' and [id] <> 'dev' and isnull(outdate,'') = '' and useUserState = 1 order by [name]"; " where gcode='" + FCOMMON.info.Login.gcode + "' and [id] <> 'dev' and isnull(outdate,'') = '' and useUserState = 1 order by [name]";
var cmd = new SqlCommand(sql, cn); var cmd = new SqlCommand(sql, cn);

View File

@@ -40,6 +40,9 @@ namespace FPJ0000.JobReport_
UpdateUserList(); UpdateUserList();
//엑셀파일불러오기 //엑셀파일불러오기
this.Show();
Application.DoEvents();
var file = FCOMMON.Util.CurrentPath + "ReportProjectSummary.xlsx"; var file = FCOMMON.Util.CurrentPath + "ReportProjectSummary.xlsx";
this.fpSpread1.OpenExcel(file); this.fpSpread1.OpenExcel(file);
if (this.fpSpread1.Sheets.Count > 1) this.fpSpread1.ActiveSheetIndex = 0; if (this.fpSpread1.Sheets.Count > 1) this.fpSpread1.ActiveSheetIndex = 0;
@@ -49,38 +52,53 @@ namespace FPJ0000.JobReport_
} }
void UpdateUserList() void UpdateUserList()
{ {
var db = new EEEntities(); // var db = new EEEntities();
cmbUser.Items.Clear(); cmbUser.Items.Clear();
cmbUser.Items.Add("--전체--"); cmbUser.Items.Add("--전체--");
var userList = FCOMMON.DBM.getUserTable(1);
//일반사용자 목록 가져온다 //일반사용자 목록 가져온다
IQueryable<IGrouping<String, vJobReportForUser>> userlist; IQueryable<IGrouping<String, vJobReportForUser>> userlist;
if (tbProcess.SelectedIndex <= 0)
{
//공정구분없이 전체사용자를 가져온다 //공정구분없이 전체사용자를 가져온다
userlist = db.vJobReportForUser.Where(t => t.gcode == FCOMMON.info.Login.gcode).OrderBy(t => t.name).GroupBy(t => t.name); foreach (System.Data.DataRow item in userList.Rows)
}
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<string>("id");
var dispname = item.Field<string>("dispname");
var process = item.Field<string>("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) 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; //기본전체로 선택해준다. 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() void refrehData()
{ {
var db = new EEEntities(); var db = new EEEntities();
@@ -120,7 +138,7 @@ namespace FPJ0000.JobReport_
if (cmbUser.SelectedIndex > 0) 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(); baseData = db.vJobReportForUser.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.id == UserNo).OrderBy(t => t.name).ToList();
} }
else if (tbProcess.SelectedIndex > 0) else if (tbProcess.SelectedIndex > 0)
@@ -144,7 +162,7 @@ namespace FPJ0000.JobReport_
if (cmbUser.SelectedIndex > 0) 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 baseData = db.vJobReportForUser
.Where(t => t.gcode == FCOMMON.info.Login.gcode && t.id == UserNo && t.pdate.CompareTo(vSD) >= 0 && t.pdate.CompareTo(vED) <= 0) .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) .OrderBy(t => t.name)
@@ -212,13 +230,18 @@ namespace FPJ0000.JobReport_
{ {
var dr = item.FirstOrDefault(); var dr = item.FirstOrDefault();
this.fpSpread1.Sheets[0].Cells[6, col++].Value = dr.process; this.fpSpread1.Sheets[0].Cells[6, col++].Value = dr.process;
if (col == 11) break; //목록개수를 넘었으니 더이상 진행하지 못한다 이것들은 모두 ETC에 넣는다 if (col == 82) break; //목록개수를 넘었으니 더이상 진행하지 못한다 이것들은 모두 ETC에 넣는다
//col += 1; //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].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); System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("ko-KR", false);
FarPoint.Win.Spread.CellType.NumberCellType numberCellType1 = new FarPoint.Win.Spread.CellType.NumberCellType(); FarPoint.Win.Spread.CellType.NumberCellType numberCellType1 = new FarPoint.Win.Spread.CellType.NumberCellType();
@@ -240,7 +263,7 @@ namespace FPJ0000.JobReport_
double sumOt = 0.0; double sumOt = 0.0;
//double holytime = 0.0; //double holytime = 0.0;
int coldata = 2; 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(); var colName = fpSpread1.Sheets[0].Cells[6, i].Value.ToString();
@@ -267,39 +290,56 @@ namespace FPJ0000.JobReport_
//ETC영역계산 //ETC영역계산
{ {
//전체합산데이터와, 2~10까지의 데이터가 일치하지 않으면 그것이 ETC이다 //전체합산데이터와, 2~10까지의 데이터가 일치하지 않으면 그것이 ETC이다
var etchr = item.Sum(t => t.hrs); var etchr = item.Where(t => t.hrs != null).Sum(t => (float)t.hrs);
var etcot = item.Sum(t => t.ot); var etcot = item.Where(t => t.ot != null).Sum(t => (float)t.ot);
//현재데이터의 hrs의 합 //현재데이터의 hrs의 합
var subtotal = 0.0; var subtotal = 0f;
for(int i = 2; i <11;i++) for (int i = 2; i < 82; i++)
{ {
var ivalue = fpSpread1.Sheets[0].Cells[row, i].Value; 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; 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, 83].CellType = numberCellType1;
fpSpread1.Sheets[0].Cells[row, 12].ParseFormatString = "N1"; fpSpread1.Sheets[0].Cells[row, 83].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].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 //H8 /$I$4
if (sumOt == 0.0) fpSpread1.Sheets[0].Cells[row, 13].Value = null; //OT합계 if (sumOt == 0.0) fpSpread1.Sheets[0].Cells[row, 84].Value = null; //OT합계
else fpSpread1.Sheets[0].Cells[row, 13].Value = sumOt; //OT합계 else fpSpread1.Sheets[0].Cells[row, 84].Value = sumOt; //OT합계
// process 의 휴가시간을 다시 계산한다. // process 의 휴가시간을 다시 계산한다.
var = baseData.Where(t => t.requestpart == RequestPart && t.svalue == "휴가"); var = baseData.Where(t => t.requestpart == RequestPart && t.svalue == "휴가");
if ( == null || .Count() < 1) 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; 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].Border = new ComplexBorder(left, top, right, bottom);
fpSpread1.Sheets[0].Cells[row, i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; fpSpread1.Sheets[0].Cells[row, i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
@@ -308,6 +348,7 @@ namespace FPJ0000.JobReport_
row += 1; 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].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
fpSpread1.Sheets[0].Cells[row, 1].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.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); 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 basec = 'C';
char newc = (char)(basec + (i - 2)); 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].BackColor = Color.LightGray;
fpSpread1.Sheets[0].Cells[row, i].CellType = numberCellType1; 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, 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; 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) private void tbProcess_SelectedIndexChanged(object sender, EventArgs e)
{ {
if (binit == false) return; if (binit == false) return;