..
This commit is contained in:
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로
|
||||
// 지정되도록 할 수 있습니다.
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("22.02.01.1200")]
|
||||
[assembly: AssemblyFileVersion("22.02.01.1200")]
|
||||
[assembly: AssemblyVersion("22.02.01.1730")]
|
||||
[assembly: AssemblyFileVersion("22.02.01.1730")]
|
||||
|
||||
@@ -435,7 +435,7 @@ namespace FCOMMON
|
||||
var retval = new sItemInfo();
|
||||
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 " +
|
||||
" where gcode='" + FCOMMON.info.Login.gcode + "' and [id] <> 'dev' and isnull(outdate,'') = '' and useUserState = 1 order by [name]";
|
||||
var cmd = new SqlCommand(sql, cn);
|
||||
|
||||
@@ -40,6 +40,9 @@ namespace FPJ0000.JobReport_
|
||||
UpdateUserList();
|
||||
|
||||
//엑셀파일불러오기
|
||||
this.Show();
|
||||
Application.DoEvents();
|
||||
|
||||
var file = FCOMMON.Util.CurrentPath + "ReportProjectSummary.xlsx";
|
||||
this.fpSpread1.OpenExcel(file);
|
||||
if (this.fpSpread1.Sheets.Count > 1) this.fpSpread1.ActiveSheetIndex = 0;
|
||||
@@ -49,38 +52,53 @@ namespace FPJ0000.JobReport_
|
||||
}
|
||||
void UpdateUserList()
|
||||
{
|
||||
var db = new EEEntities();
|
||||
// var db = new EEEntities();
|
||||
|
||||
cmbUser.Items.Clear();
|
||||
cmbUser.Items.Add("--전체--");
|
||||
|
||||
var userList = FCOMMON.DBM.getUserTable(1);
|
||||
|
||||
|
||||
|
||||
//일반사용자 목록 가져온다
|
||||
IQueryable<IGrouping<String, vJobReportForUser>> userlist;
|
||||
|
||||
if (tbProcess.SelectedIndex <= 0)
|
||||
//공정구분없이 전체사용자를 가져온다
|
||||
foreach (System.Data.DataRow item in userList.Rows)
|
||||
{
|
||||
//공정구분없이 전체사용자를 가져온다
|
||||
userlist = db.vJobReportForUser.Where(t => t.gcode == FCOMMON.info.Login.gcode).OrderBy(t => t.name).GroupBy(t => t.name);
|
||||
}
|
||||
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)
|
||||
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; //기본전체로 선택해준다.
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
var db = new EEEntities();
|
||||
@@ -120,7 +138,7 @@ namespace FPJ0000.JobReport_
|
||||
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();
|
||||
}
|
||||
else if (tbProcess.SelectedIndex > 0)
|
||||
@@ -144,7 +162,7 @@ namespace FPJ0000.JobReport_
|
||||
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 && t.pdate.CompareTo(vSD) >= 0 && t.pdate.CompareTo(vED) <= 0)
|
||||
.OrderBy(t => t.name)
|
||||
@@ -212,13 +230,18 @@ namespace FPJ0000.JobReport_
|
||||
{
|
||||
var dr = item.FirstOrDefault();
|
||||
this.fpSpread1.Sheets[0].Cells[6, col++].Value = dr.process;
|
||||
if (col == 11) break; //목록개수를 넘었으니 더이상 진행하지 못한다 이것들은 모두 ETC에 넣는다
|
||||
if (col == 82) break; //목록개수를 넘었으니 더이상 진행하지 못한다 이것들은 모두 ETC에 넣는다
|
||||
//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].Columns[i].Visible = (i < 8);//.Cells[6, i].Value = "*";
|
||||
}
|
||||
|
||||
|
||||
|
||||
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("ko-KR", false);
|
||||
FarPoint.Win.Spread.CellType.NumberCellType numberCellType1 = new FarPoint.Win.Spread.CellType.NumberCellType();
|
||||
@@ -227,9 +250,9 @@ namespace FPJ0000.JobReport_
|
||||
|
||||
|
||||
//프로세스목록을 먼저 기록한다
|
||||
row = 7;
|
||||
row = 7;
|
||||
var orProcess = baseData.OrderBy(t => t.requestpart).GroupBy(t => t.requestpart);
|
||||
this.fpSpread1.Sheets[0].RowCount = 7+ orProcess.Count() + 1;
|
||||
this.fpSpread1.Sheets[0].RowCount = 7 + orProcess.Count() + 1;
|
||||
|
||||
foreach (var item in orProcess)
|
||||
{
|
||||
@@ -240,7 +263,7 @@ namespace FPJ0000.JobReport_
|
||||
double sumOt = 0.0;
|
||||
//double holytime = 0.0;
|
||||
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();
|
||||
|
||||
@@ -267,39 +290,56 @@ namespace FPJ0000.JobReport_
|
||||
//ETC영역계산
|
||||
{
|
||||
//전체합산데이터와, 2~10까지의 데이터가 일치하지 않으면 그것이 ETC이다
|
||||
var etchr = item.Sum(t => t.hrs);
|
||||
var etcot = item.Sum(t => t.ot);
|
||||
var etchr = item.Where(t => t.hrs != null).Sum(t => (float)t.hrs);
|
||||
var etcot = item.Where(t => t.ot != null).Sum(t => (float)t.ot);
|
||||
|
||||
//현재데이터의 hrs의 합
|
||||
var subtotal = 0.0;
|
||||
for(int i = 2; i <11;i++)
|
||||
var subtotal = 0f;
|
||||
for (int i = 2; i < 82; i++)
|
||||
{
|
||||
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;
|
||||
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, 12].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].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;
|
||||
|
||||
//H8 /$I$4
|
||||
if (sumOt == 0.0) fpSpread1.Sheets[0].Cells[row, 13].Value = null; //OT합계
|
||||
else fpSpread1.Sheets[0].Cells[row, 13].Value = sumOt; //OT합계
|
||||
if (sumOt == 0.0) fpSpread1.Sheets[0].Cells[row, 84].Value = null; //OT합계
|
||||
else fpSpread1.Sheets[0].Cells[row, 84].Value = sumOt; //OT합계
|
||||
|
||||
// process 의 휴가시간을 다시 계산한다.
|
||||
var 휴가데이터 = baseData.Where(t => t.requestpart == RequestPart && t.svalue == "휴가");
|
||||
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;
|
||||
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;
|
||||
@@ -308,6 +348,7 @@ namespace FPJ0000.JobReport_
|
||||
|
||||
|
||||
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].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
|
||||
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 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].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, 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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (binit == false) return;
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user