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("22.02.01.1200")]
[assembly: AssemblyFileVersion("22.02.01.1200")]
[assembly: AssemblyVersion("22.02.01.1730")]
[assembly: AssemblyFileVersion("22.02.01.1730")]

View File

@@ -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);

View File

@@ -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;