This commit is contained in:
chi
2022-03-07 20:13:58 +09:00
parent 06dbd92893
commit dd3fcf149f
13 changed files with 646 additions and 468 deletions

View File

@@ -75,7 +75,7 @@ namespace FBS0000
fpSpread1_Sheet1.Columns.Count = cols.Count;
for (int c = 0; c < cols.Count; c++)
{
fpSpread1_Sheet1.Columns[c].Tag = coltag[c];
fpSpread1_Sheet1.Columns[c].Tag = new int[] { 0, 0, 0, 0 };
fpSpread1_Sheet1.Columns[c].Label = cols[c];
if (c < 4) fpSpread1_Sheet1.Columns[c].BackColor = Color.WhiteSmoke;
else if (c > cols.Count - 5) fpSpread1_Sheet1.Columns[c].BackColor = Color.WhiteSmoke;
@@ -103,16 +103,29 @@ namespace FBS0000
//{
// //입사일자를 체크해서. 이 날짜가 입사일 이전이면 넘어간다
//}
var newuser = new userinfo();
users.Add(new userinfo
{
grade = dr["grade"].ToString(),
name = dr["name"].ToString(),
empno = dr["id"].ToString(),
seq = dr["process"].ToString(),
indate = dr["indate"].ToString(),
outdate = dr["outdate"].ToString()
});
if (dr["grade"] == null) newuser.grade = string.Empty;
newuser.grade = dr["grade"].ToString();
if (dr["name"] == null) newuser.name = string.Empty;
newuser.name = dr["name"].ToString();
if (dr["id"] == null) newuser.empno = string.Empty;
newuser.empno = dr["id"].ToString();
if (dr["process"] == null) newuser.seq = string.Empty;
newuser.seq = dr["process"].ToString();
if (dr["indate"] == null) newuser.indate = string.Empty;
newuser.indate = dr["indate"].ToString();
if (dr["outdate"] == null) newuser.outdate = string.Empty;
newuser.outdate = dr["outdate"].ToString();
users.Add(newuser);
seq += 1;
}
@@ -146,6 +159,9 @@ namespace FBS0000
int c = 0;
for (c = 4; c < cols.Count - 3; c++)
{
var ps = (int[])fpSpread1_Sheet1.Columns[c].Tag;
var curDate = sd.AddDays(c - 4);
var bholy = false;
//이날짜가 휴일인지 체크한다.
@@ -153,8 +169,9 @@ namespace FBS0000
if (drHoly != null && drHoly.free)
{
bholy = true;
fpSpread1_Sheet1.Cells[rowindex, c].BackColor = Color.LightPink;
//fpSpread1_Sheet1.Cells[rowindex, c].BackColor = Color.LightPink;
fpSpread1_Sheet1.Cells[rowindex, c].Tag = drHoly.memo;
if (drHoly.memo == "토요일" || drHoly.memo == "일요일")
{
@@ -164,6 +181,7 @@ namespace FBS0000
{
fpSpread1_Sheet1.Cells[rowindex, c].Note = drHoly.memo;
}
fpSpread1_Sheet1.Columns[c].BackColor = Color.FromArgb(250, 250, 250);
}
else
{
@@ -171,6 +189,7 @@ namespace FBS0000
fpSpread1_Sheet1.Cells[rowindex, c].Tag = null;
fpSpread1_Sheet1.Cells[rowindex, c].Note = string.Empty;
fpSpread1_Sheet1.Columns[c].BackColor = Color.White;
}
//기본으로 데이터를 초기화해준다.
@@ -183,11 +202,29 @@ namespace FBS0000
if (item.outdate == curDate.ToShortDateString())
fpSpread1_Sheet1.Cells[rowindex, c].Note += "퇴사";
//현재인원값
var bIndate = DateTime.TryParse(item.indate, out DateTime dtIn);
var bOutdate = DateTime.TryParse(item.outdate, out DateTime dtOut);
Boolean usePerson = true;
//
if (bIndate == true && curDate.ToShortDateString().CompareTo(dtIn.ToShortDateString()) < 0)
usePerson = false;
if (bOutdate == true && curDate.ToShortDateString().CompareTo(dtOut.ToShortDateString()) > 0)
usePerson = false;
ps[3] = bholy ? 1 : 0;
ps[2] += 1;
//근태기록에 자료가 있는지 확인한다.
var dr = dtHoly.Where(t => t.uid == item.empno && ( t.sdate.ToShortDateString().CompareTo(curDate.ToShortDateString()) <= 0 && t.edate.ToShortDateString().CompareTo(curDate.ToShortDateString()) >= 0)).FirstOrDefault();
var dr = dtHoly.Where(t => t.uid == item.empno && (t.sdate.ToShortDateString().CompareTo(curDate.ToShortDateString()) <= 0 && t.edate.ToShortDateString().CompareTo(curDate.ToShortDateString()) >= 0)).FirstOrDefault();
if (dr != null && fpSpread1_Sheet1.Cells[rowindex, c].Tag == null) //휴일이 아니여야 한다
{
ps[1] += 1;
//휴가내역이 있다.
if (dr.term > 0)
used += 1;
@@ -205,99 +242,13 @@ namespace FBS0000
fpSpread1_Sheet1.Cells[rowindex, c].BackColor = Color.Gold;
else if (dr.cate == "경조")
fpSpread1_Sheet1.Cells[rowindex, c].BackColor = Color.Pink;
else if (dr.cate == "대체")
fpSpread1_Sheet1.Cells[rowindex, c].BackColor = Color.Gold;
else
fpSpread1_Sheet1.Cells[rowindex, c].BackColor = Color.Lime;
fpSpread1_Sheet1.Cells[rowindex, c].BackColor = Color.LawnGreen;
fpSpread1_Sheet1.Cells[rowindex, c].Tag = "1";
}
//else if (dr.term > 0)
//{
// var timedays = dr.term;// Math.Floor(dr.CrTime / 8f);
// var curday = 0;
// var accday = 1;
// //while (accday <= timedays)
// {
// //var remaintime = dr.CrTime - accday * 8f;
// var columnindex = c + curday;
// if (columnindex >= fpSpread1_Sheet1.ColumnCount) break;
// var columnDate = (DateTime)this.fpSpread1_Sheet1.Columns[columnindex].Tag;
// var drHolyChk = HolyList.Where(t => t.pdate == columnDate.ToShortDateString()).FirstOrDefault();
// var drholyOK = false;
// if (drHolyChk != null && drHolyChk.free) drholyOK = true; //이러면 휴일이었다
// if (drholyOK == false)
// {
// fpSpread1_Sheet1.Cells[rowindex, c + curday].Value = dr.cate.Substring(0, 2);
// if (dr.cate == "이월")
// fpSpread1_Sheet1.Cells[rowindex, c + curday].BackColor = Color.Gold;
// else if (dr.cate == "경조")
// fpSpread1_Sheet1.Cells[rowindex, c + curday].BackColor = Color.Pink;
// else
// fpSpread1_Sheet1.Cells[rowindex, c + curday].BackColor = Color.Lime;
// fpSpread1_Sheet1.Cells[rowindex, c + curday].Tag = "1";
// accday += 1;
// }
// curday += 1;
// }
// //for (int ii = 0; ii < dr.term; ii++)
// //{
// // if (dr.cate == "이월")
// // fpSpread1_Sheet1.Cells[rowindex, c + ii].BackColor = Color.Gold;
// // else
// // fpSpread1_Sheet1.Cells[rowindex, c + ii].BackColor = Color.Lime;
// // fpSpread1_Sheet1.Cells[rowindex, c + ii].Value = dr.cate.Substring(0, 2);
// // fpSpread1_Sheet1.Cells[rowindex, c + ii].Tag = "1";
// //}
//}
//else if (dr.term != 0)
//{
// fpSpread1_Sheet1.Cells[rowindex, c].Value = dr.term.ToString() + "Y";
//}
//if (dr.CrTime != 0)
//{
// var timedays = Math.Floor(dr.CrTime / 8f);
// var curday = 0;
// var accday = 1;
// while (accday <= timedays)
// {
// var remaintime = dr.CrTime - ((accday - 1) * 8f);
// var columnindex = c + curday;
// var columnDate = (DateTime)this.fpSpread1_Sheet1.Columns[columnindex].Tag;
// var drHolyChk = HolyList.Where(t => t.pdate == columnDate.ToShortDateString()).FirstOrDefault();
// var drholyOK = false;
// if (drHolyChk != null && drHolyChk.free) drholyOK = true; //이러면 휴일이었다
// if (drholyOK == false)
// {
// if (remaintime > 8) remaintime = 8;
// fpSpread1_Sheet1.Cells[rowindex, c + curday].Value = remaintime.ToString();
// fpSpread1_Sheet1.Cells[rowindex, c + curday].BackColor = Color.DeepSkyBlue;
// fpSpread1_Sheet1.Cells[rowindex, c + curday].Tag = "1";
// accday += 1;
// }
// curday += 1;
// }
//}
if (string.IsNullOrEmpty(dr.contents) == false)
{
@@ -311,6 +262,9 @@ namespace FBS0000
}
else
{
ps[0] += 1;
var pdate = curDate.ToShortDateString();
if (pdate == "2022-02-07" && item.empno == "66630")
{
@@ -337,8 +291,8 @@ namespace FBS0000
else
fpSpread1_Sheet1.Cells[rowindex, c].Note += $"휴일근무({sum_ot2}h)";
}
else
fpSpread1_Sheet1.Cells[rowindex, c].BackColor = Color.White;
//else
//fpSpread1_Sheet1.Cells[rowindex, c].BackColor = Color.White;
}
else
{
@@ -380,6 +334,8 @@ namespace FBS0000
}
}
}
fpSpread1_Sheet1.Columns[c].Tag = ps;
}
var jan = jand - used;
@@ -388,6 +344,51 @@ namespace FBS0000
fpSpread1_Sheet1.Cells[rowindex, c++].Value = jan > 0 ? jan.ToString() : string.Empty;
rowindex += 1;
} // --users
//총요약을 넣는다
fpSpread1_Sheet1.RowCount += 1;
fpSpread1_Sheet1.RowCount += 1;
fpSpread1_Sheet1.RowCount += 1;
fpSpread1_Sheet1.Rows[rowindex + 0].Border = new FarPoint.Win.LineBorder(Color.Gainsboro, 1, false, false, true, true);
fpSpread1_Sheet1.Rows[rowindex + 1].Border = new FarPoint.Win.LineBorder(Color.Gainsboro, 1, false, false, true, true);
fpSpread1_Sheet1.Rows[rowindex + 2].Border = new FarPoint.Win.LineBorder(Color.Gainsboro, 1, false, false, true, true);
//fpSpread1_Sheet1.RowCount += 1;
fpSpread1_Sheet1.Cells[rowindex + 0, 3].Value = "근무";
//fpSpread1_Sheet1.Cells[rowindex + 1, 3].Value = "휴가";
fpSpread1_Sheet1.Cells[rowindex + 1, 3].Value = "근무율(%)";// ps[0].ToString(); //근무율
fpSpread1_Sheet1.Cells[rowindex + 2, 3].Value = "총원";
for (var col = 4; col < cols.Count - 3; col++)
{
var ps = (int[])fpSpread1_Sheet1.Columns[col].Tag;
if (ps[3] == 1)
{
fpSpread1_Sheet1.Cells[rowindex + 0, col].Value = "--";
fpSpread1_Sheet1.Cells[rowindex + 1, col].Value = "--";
fpSpread1_Sheet1.Cells[rowindex + 2, col].Value = "--";
}
else
{
var krate = (ps[0] * 1f / ps[2]);
var trans = (int)(krate * 254);
fpSpread1_Sheet1.Cells[rowindex + 0, col].Value = ps[0].ToString(); //근무
//fpSpread1_Sheet1.Cells[rowindex + 1, col].Value = ps[1].ToString(); //휴가
fpSpread1_Sheet1.Cells[rowindex + 1, col].Value = (krate * 100f).ToString("N0");
fpSpread1_Sheet1.Cells[rowindex + 1, col].Note = $"근무:{ps[0]}\n휴가:{ps[1]}\n총원:{ps[2]}";
fpSpread1_Sheet1.Cells[rowindex + 2, col].Value = ps[2].ToString(); //총원
if (krate >= 0.8) fpSpread1_Sheet1.Cells[rowindex + 1, col].BackColor = Color.FromArgb(trans, Color.LightGreen);
else if (krate >= 0.6) fpSpread1_Sheet1.Cells[rowindex + 1, col].BackColor = Color.FromArgb(trans, Color.LightSkyBlue);
else if (krate >= 0.4) fpSpread1_Sheet1.Cells[rowindex + 1, col].BackColor = Color.FromArgb(trans, Color.HotPink);
else fpSpread1_Sheet1.Cells[rowindex + 1, col].BackColor = Color.FromArgb(trans, Color.Tomato);
}
}