ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 근태현황 관리 소스 예제
    업무용 소스 예제 2021. 9. 1. 16:17
    728x90
    반응형
    728x90

    근태현황 관리 소스 예제 입니다.

     

    해당 소스는 특정 업소에 맞춰진 것으로 사용하실 때 수정이 필요합니다.

     

    부분적으로 참고만 바랍니다.

     

    private void UpdateList_AttendList()
            {
                if (this.intUserKey != 0)
                {
                    try
                    {
                        this.Cursor = Cursors.WaitCursor;
    
                        int num6 = 0;
                        int num4 = 0;
                        int num2 = 0;
                        int num3 = 0;
                        this.intStaticAttendCount = 0;
                        this.intStaticLateCount = 0;
                        this.intStaticHomeCount = 0;
                        this.intStaticEarlyCount = 0;
                        this.intStaticAbsentCount = 0;
    
                        DataTable tbl1 = PLAcaDBManager.UsersAttendSelectListMonth(intUserKey, dtpRegDate.GetStartDate(), dtpRegDate.GetEndDate());
                        if(tbl1 != null && tbl1.Rows.Count > 0)
                        {
                            foreach (DataRow dr in tbl1.Rows)
                            {
                                string str2 = dr["AttendResult"].ToString();
                                if (str2 == "출근")
                                {
                                    this.intStaticAttendCount++;
                                }
                                else if (str2 == "지각")
                                {
                                    this.intStaticLateCount++;
                                }
                                else
                                {
                                    this.intStaticAbsentCount++;
                                }
                                if (!dr.IsNull("Home"))
                                {
                                    switch (dr["HomeResult"].ToString())
                                    {
                                        case "퇴근":
                                            this.intStaticHomeCount++;
                                            break;
    
                                        case "조퇴":
                                            this.intStaticEarlyCount++;
                                            break;
                                    }
                                    num4 = Convert.ToInt32((Convert.ToDateTime(dr["Attend"]) - Convert.ToDateTime(dr["Home"])).TotalMinutes);
                                    if (num4 < 0)
                                    {
                                        num4 += 1440;
                                    }
                                    num2 += num4;
                                    if (num4 > 60)
                                    {
                                        num6 = num4 % 60;
                                    }
                                }
                            }
                        }
    
                        int backRow = gridAttendListView.FocusedRowHandle;
    
                        gridAttendList.DataSource = null;
                        gridAttendList.DataSource = PLAcaDBManager.UsersAttendSelect(intUserKey, dtpRegDate.GetStartDate(), dtpRegDate.GetEndDate());
    
                        gridAttendListView.FocusedRowHandle = backRow;
    
                        DataTable tbl = PLAcaDBManager.UsersAttendMonthlyMemoSelect(intUserKey, dtpRegDate.GetStartDate().Year, dtpRegDate.GetStartDate().Month);
                        if(tbl != null && tbl.Rows.Count > 0)
                        {
                            foreach(DataRow dr in tbl.Rows)
                            {
                                this.txtAttendMonthlyMemo.Text = dr["AttendMemo"].ToString();
                            }
                        }
                        else
                        {
                            this.txtAttendMonthlyMemo.Text = "";
                        }
                        this.txtAttendCount.Text = Convert.ToString(this.intStaticAttendCount) + "일";
                        this.txtLateCount.Text = Convert.ToString(this.intStaticLateCount) + "일";
                        this.txtHomeCount.Text = Convert.ToString(this.intStaticHomeCount) + "일";
                        this.txtEarlyCount.Text = Convert.ToString(this.intStaticEarlyCount) + "일";
                        this.txtAbsentCount.Text = Convert.ToString(this.intStaticAbsentCount) + "일";
                        this.txtAttendRate1.Text = Convert.ToString((int)Math.Round((double)((((double)this.intStaticAttendCount) / 20.0) * 100.0))) + "%";
                        this.txtAttendRate2.Text = Convert.ToString((int)Math.Round((double)((((double)this.intStaticAttendCount) / 25.0) * 100.0))) + "%";
                        if ((this.intStaticAttendCount + this.intStaticAbsentCount) > 0)
                        {
                            this.txtAttendRate3.Text = Convert.ToString((int)Math.Round((double)((((double)this.intStaticAttendCount) / ((double)(this.intStaticAttendCount + this.intStaticAbsentCount))) * 100.0))) + "%";
                        }
                        else
                        {
                            this.txtAttendRate3.Text = "0%";
                        }
                        if (num2 > 60)
                        {
                            num6 = num2 % 60;
                            this.txtWorkTime.Text = Convert.ToString(Math.Floor((double)(((double)num2) / 60.0))) + "시간 " + num6.ToString() + "분";
                        }
                        else
                        {
                            this.txtWorkTime.Text = num2.ToString() + "분";
                        }
                        if (this.intStaticAttendCount == 0)
                        {
                            num3 = 0;
                        }
                        else
                        {
                            num3 = (int)Math.Round((double)(((double)num3) / ((double)this.intStaticAttendCount)));
                        }
                        if (num3 > 60)
                        {
                            this.txtWorkTimeAvg.Text = Convert.ToString(Math.Floor((double)(((double)num3) / 60.0))) + "시간 " + ((num3 % 60)).ToString() + "분";
                        }
                        else
                        {
                            this.txtWorkTimeAvg.Text = num3.ToString() + "분";
                        }
                    }
                    catch (Exception ee)
                    {
                        TraceManager.AddLog(string.Format("{0}r\n{1}", ee.StackTrace, ee.Message));
                        System.Diagnostics.Debug.WriteLine(string.Format("{0}r\n{1}", ee.StackTrace, ee.Message));
                    }
                    finally
                    {
                        this.Cursor = Cursors.Default;
                    }
                }
            }
    728x90
    반응형

    댓글

Designed by Tistory.