Beispiel #1
0
        /// <summary>
        /// 单个员工修改考勤
        /// </summary>
        /// <param name="workID">员工编号</param>
        /// <param name="schemeCode">考勤编码</param>
        /// <param name="isSubsidize">是否有餐补</param>
        /// <param name="error">错误信息</param>
        /// <returns>成功返回True,失败返回False</returns>
        public bool UpdateAttendanceSetting(string workID, string schemeCode, bool isSubsidize, out string error)
        {
            error = "";

            try
            {
                DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext;

                var result = from a in dataContxt.HR_AttendanceSetting
                             where a.WorkID == workID
                             select a;

                if (result.Count() == 0)
                {
                    error = "该员工未设置考勤方案,请先为该员工添加考勤方案!";
                    return(false);
                }

                HR_AttendanceSetting attendance = result.Single();

                attendance.SchemeCode  = schemeCode;
                attendance.IsSubsidize = isSubsidize;
                attendance.Recorder    = BasicInfo.LoginID;
                attendance.RecordTime  = ServerTime.Time;

                dataContxt.SubmitChanges();
                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
Beispiel #2
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            //if (ServerTime.Time.Day >= 25 && dtpBeginDate.Value.Month < ServerTime.Time.Month)
            //{
            //    MessageDialog.ShowPromptMessage("每月25号之后不允许对上个月的考勤再做统计!");
            //    return;
            //}

            if (MessageBox.Show("节假日、异常登记等所有信息是否都已经处理完成?", "消息", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                DataTable dtResult = m_dayBookServer.GetDayBookViewByDate(dtpBeginDate.Value.ToString(), dtpEndDate.Value.ToString());

                try
                {
                    for (int j = 0; j < dtResult.Rows.Count; j++)    //循环在职需要考勤的员工
                    {
                        string workID = dtResult.Rows[j]["员工编号"].ToString();

                        HR_AttendanceSetting attendanceSet = m_attendanceSchemeServer.GetAttendanceSettingByWorkID(workID);
                        string[]             schemeCode    = attendanceSet.SchemeCode.Split(' ');
                        string mode = m_attendanceSchemeServer.GetAttendanceSchemeByCode(schemeCode[0]).AttendanceMode;

                        DateTime starTime, endTime;

                        starTime = dtpBeginDate.Value;
                        endTime  = dtpEndDate.Value;

                        if (mode.Contains("非自然"))
                        {
                            ServerTime.GetMonthlyBalance(dtpBeginDate.Value, out starTime, out endTime);
                            endTime = endTime.AddDays(-1);
                        }

                        if (!m_attendanceServer.AddAttendanceSummary(workID, starTime, endTime, out m_error))
                        {
                            MessageDialog.ShowPromptMessage(m_error);
                            return;
                        }
                    }

                    if (!m_attendanceServer.AddAttendanceSummaryByAllowOverTime(out m_error))
                    {
                        MessageDialog.ShowPromptMessage(m_error);
                        return;
                    }

                    MessageDialog.ShowPromptMessage("人员考勤统计已经完成");
                }
                catch (Exception)
                {
                    throw;
                }
            }
            else
            {
                return;
            }
        }
Beispiel #3
0
        /// <summary>
        /// 单个员工设置考勤
        /// </summary>
        /// <param name="workID">员工编号</param>
        /// <param name="schemeCode">考勤编码</param>
        /// <param name="isSubsidize">是否有餐补</param>
        /// <param name="error">错误信息</param>
        /// <returns>成功返回True,失败返回False</returns>
        public bool AddAttendanceSetting(string workID, string schemeCode, bool isSubsidize, out string error)
        {
            error = "";

            try
            {
                DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext;

                var result = from a in dataContxt.HR_AttendanceSetting
                             where a.SchemeCode == schemeCode && a.WorkID == workID
                             select a;

                if (result.Count() > 0)
                {
                    error = "该员工已经设置了该考勤!";
                    return(false);
                }

                HR_AttendanceSetting attendance = new HR_AttendanceSetting();

                attendance.SchemeCode  = schemeCode;
                attendance.WorkID      = workID;
                attendance.IsSubsidize = isSubsidize;
                attendance.Recorder    = BasicInfo.LoginID;
                attendance.RecordTime  = ServerTime.Time;

                dataContxt.HR_AttendanceSetting.InsertOnSubmit(attendance);
                dataContxt.SubmitChanges();
                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
Beispiel #4
0
        /// <summary>
        /// 批量修改考勤方案
        /// </summary>
        /// <param name="dept">部门编号</param>
        /// <param name="schemeCode">考勤编码</param>
        /// <param name="isSubsidize">是否有餐补</param>
        /// <param name="error">错误信息</param>
        /// <returns>成功返回True,失败返回False</returns>
        public bool UpdateAttendanceSettingByDept(string dept, string schemeCode, bool isSubsidize, out string error)
        {
            error = "";

            try
            {
                DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext;

                if (dept == "全部")
                {
                    var result = from a in dataContxt.HR_AttendanceSetting
                                 select a;

                    if (result.Count() > 0)
                    {
                        dataContxt.HR_AttendanceSetting.DeleteAllOnSubmit(result);
                        dataContxt.SubmitChanges();
                    }

                    IQueryable <View_SelectPersonnel> personnel = new PersonnelArchiveServer().GetAllInfo();

                    foreach (var item in personnel)
                    {
                        HR_AttendanceSetting attendance = new HR_AttendanceSetting();

                        attendance.SchemeCode  = schemeCode;
                        attendance.WorkID      = item.员工编号;
                        attendance.IsSubsidize = isSubsidize;
                        attendance.Recorder    = BasicInfo.LoginID;
                        attendance.RecordTime  = ServerTime.Time;

                        dataContxt.HR_AttendanceSetting.InsertOnSubmit(attendance);
                    }
                }
                else
                {
                    string[] deptList = dept.Split(';');

                    for (int i = 0; i < deptList.Count() - 1; i++)
                    {
                        IQueryable <View_SelectPersonnel> personnel = new PersonnelArchiveServer().GetAllInfo();

                        foreach (var item in personnel)
                        {
                            if (item.部门编号 == new OrganizationServer().GetDeptCode(deptList[i]))
                            {
                                var result = from a in dataContxt.HR_AttendanceSetting
                                             where a.WorkID == item.员工编号
                                             select a;

                                if (result.Count() == 1)
                                {
                                    HR_AttendanceSetting attendance = result.Single();

                                    attendance.SchemeCode = schemeCode;
                                    attendance.Recorder   = BasicInfo.LoginID;
                                    attendance.RecordTime = ServerTime.Time;
                                }
                            }
                        }
                    }
                }

                dataContxt.SubmitChanges();
                return(true);
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
        }
Beispiel #5
0
        private void 导入toolStripButton_Click(object sender, EventArgs e)
        {
            try
            {
                DataTable dtTemp = ExcelHelperP.RenderFromExcel(openFileDialog1);

                if (dtTemp == null)
                {
                    return;
                }

                if (CheckTable(dtTemp))
                {
                    #region 分析排班人员的打卡时间

                    List <HR_AttendanceMachineDataList> lstMachineDate = new List <HR_AttendanceMachineDataList>();

                    for (int i = 0; i < dtTemp.Rows.Count; i++)
                    {
                        string workID     = "";
                        string recordTime = "";
                        string beforTime  = "";
                        string afterTime  = "";

                        if (dtTemp.Columns.Contains("工号"))
                        {
                            workID = dtTemp.Rows[i]["工号"].ToString();

                            if (workID == "")
                            {
                                continue;
                            }
                        }
                        else
                        {
                            if (GlobalObject.GeneralFunction.IsNullOrEmptyObject(dtTemp.Rows[i]["日期"]) ||
                                GlobalObject.GeneralFunction.IsNullOrEmptyObject(dtTemp.Rows[i]["时间"]))
                            {
                                continue;
                            }

                            if (dtTemp.Rows[i]["登记号码"].ToString() == "")
                            {
                                continue;
                            }

                            string str = m_attendanceMachineServer.GetCardIDWorkIDMapping(dtTemp.Rows[i]["登记号码"].ToString());

                            if (str.Equals("0"))
                            {
                                //MessageDialog.ShowPromptMessage("【" + dtTemp.Rows[i]["登记号码"].ToString() + "】登记号码没有在映射表中!");
                                //return;
                                continue;
                            }

                            workID = str;
                        }

                        DateTime date           = Convert.ToDateTime(dtTemp.Rows[i]["日期"].ToString());
                        DateTime beforTimeTemp  = date.AddDays(-1);
                        DateTime afterTimeTemp  = Convert.ToDateTime(dtTemp.Rows[i]["日期"].ToString()).AddDays(1);
                        string[] recordTimeTemp = dtTemp.Rows[i]["时间"].ToString().Split(' ');

                        HR_AttendanceSetting attendanceSet = m_attendanceSchemeServer.GetAttendanceSettingByWorkID(workID);
                        string[]             schemeCode    = attendanceSet.SchemeCode.Split(' ');
                        string mode = m_attendanceSchemeServer.GetAttendanceSchemeByCode(schemeCode[0]).AttendanceMode;

                        if (mode.Contains("自然月排班考勤"))
                        {
                            DataTable dtWorkSchedule = m_workSchedulingServer.GetWorkSchedulingByWorkIDAndDate(workID, Convert.ToDateTime(dtTemp.Rows[i]["日期"].ToString()));

                            if (dtWorkSchedule != null && dtWorkSchedule.Rows.Count > 0)
                            {
                                if (!Convert.ToBoolean(dtWorkSchedule.Rows[0]["isholiday"].ToString()))
                                {
                                    string beginTime     = Convert.ToDateTime(dtWorkSchedule.Rows[0]["beginTime"].ToString()).ToShortTimeString();
                                    string punchInBegin  = Convert.ToDateTime(dtWorkSchedule.Rows[0]["punchInBeginTime"].ToString()).ToShortTimeString();
                                    string punchInEnd    = Convert.ToDateTime(dtWorkSchedule.Rows[0]["punchInEndTime"].ToString()).ToShortTimeString();
                                    string punchOutBegin = Convert.ToDateTime(dtWorkSchedule.Rows[0]["punchOutBeginTime"].ToString()).ToShortTimeString();
                                    string punchOutEnd   = Convert.ToDateTime(dtWorkSchedule.Rows[0]["punchOutEndTime"].ToString()).ToShortTimeString();

                                    if ((Convert.ToDateTime(beginTime) - Convert.ToDateTime(punchInBegin)).Hours < 0)
                                    {
                                        if (i != dtTemp.Rows.Count - 1)
                                        {
                                            string str = dtTemp.Rows[i + 1]["时间"].ToString();

                                            if (!str.Equals("0"))
                                            {
                                                string[] timeTemp = str.Split(' ');

                                                if (recordTimeTemp.Length == 0)
                                                {
                                                    beforTime = afterTimeTemp.Year + "年" + afterTimeTemp.Month + "月" + afterTimeTemp.Day + "日" + timeTemp[0];
                                                    afterTime = timeTemp[1];
                                                }
                                                else
                                                {
                                                    afterTime = timeTemp[0];
                                                }
                                            }
                                        }
                                    }

                                    if (Convert.ToInt32(dtWorkSchedule.Rows[0]["endOffSetDays"].ToString()) > 0)
                                    {
                                        afterTimeTemp = Convert.ToDateTime(dtTemp.Rows[i]["日期"].ToString()).AddDays(
                                            Convert.ToInt32(dtWorkSchedule.Rows[0]["endOffSetDays"].ToString()));

                                        string str = dtTemp.Rows[i + Convert.ToInt32(dtWorkSchedule.Rows[0]["endOffSetDays"].ToString())]["时间"].ToString();

                                        if (!str.Equals("0"))
                                        {
                                            string[] timeTemp = str.Split(' ');

                                            if (timeTemp[0] != "")
                                            {
                                                if (Convert.ToDateTime(timeTemp[0]) < Convert.ToDateTime(punchOutEnd))
                                                {
                                                    afterTime = timeTemp[0];
                                                }
                                            }
                                        }
                                    }

                                    if (beforTime != "")
                                    {
                                        if (!recordTime.Contains(beforTime))
                                        {
                                            recordTime = beforTime + " ";
                                        }
                                    }

                                    for (int j = 0; j < recordTimeTemp.Length; j++)
                                    {
                                        if (recordTimeTemp[j] != "")
                                        {
                                            if (j != 0)
                                            {
                                                if (recordTimeTemp[j - 1] == recordTimeTemp[j])
                                                {
                                                    continue;
                                                }

                                                if (Convert.ToDateTime(recordTimeTemp[j]).Hour - Convert.ToDateTime(recordTimeTemp[j - 1]).Hour == 0
                                                    &&
                                                    Convert.ToDateTime(recordTimeTemp[j]).Minute - Convert.ToDateTime(recordTimeTemp[j - 1]).Minute < 5)
                                                {
                                                    continue;
                                                }
                                            }

                                            recordTime += date.Year + "年" + date.Month + "月" + date.Day + "日" + recordTimeTemp[j] + " ";
                                        }
                                    }

                                    if (afterTime != "")
                                    {
                                        string strAfter = afterTimeTemp.Year + "年" + afterTimeTemp.Month + "月" + afterTimeTemp.Day + "日" + afterTime;

                                        if (!recordTime.Contains(strAfter))
                                        {
                                            recordTime += afterTimeTemp.Year + "年" + afterTimeTemp.Month + "月" + afterTimeTemp.Day + "日" + afterTime + " ";
                                        }
                                    }
                                }
                                else
                                {
                                    for (int j = 0; j < recordTimeTemp.Length; j++)
                                    {
                                        if (recordTimeTemp[j] != "")
                                        {
                                            if (j != 0)
                                            {
                                                if (recordTimeTemp[j - 1] == recordTimeTemp[j])
                                                {
                                                    continue;
                                                }

                                                if (Convert.ToDateTime(recordTimeTemp[j]).Hour - Convert.ToDateTime(recordTimeTemp[j - 1]).Hour == 0
                                                    &&
                                                    Convert.ToDateTime(recordTimeTemp[j]).Minute - Convert.ToDateTime(recordTimeTemp[j - 1]).Minute < 5)
                                                {
                                                    continue;
                                                }
                                            }

                                            recordTime += date.Year + "年" + date.Month + "月" + date.Day + "日" + recordTimeTemp[j] + " ";
                                        }
                                    }
                                }
                            }
                            else
                            {
                                for (int j = 0; j < recordTimeTemp.Length; j++)
                                {
                                    if (recordTimeTemp[j] != "")
                                    {
                                        if (j != 0)
                                        {
                                            if (recordTimeTemp[j - 1] == recordTimeTemp[j])
                                            {
                                                continue;
                                            }

                                            if (Convert.ToDateTime(recordTimeTemp[j]).Hour - Convert.ToDateTime(recordTimeTemp[j - 1]).Hour == 0 &&
                                                Convert.ToDateTime(recordTimeTemp[j]).Minute - Convert.ToDateTime(recordTimeTemp[j - 1]).Minute < 5)
                                            {
                                                continue;
                                            }
                                        }

                                        recordTime += date.Year + "年" + date.Month + "月" + date.Day + "日" + recordTimeTemp[j] + " ";
                                    }
                                }
                            }
                        }
                        else
                        {
                            for (int j = 0; j < recordTimeTemp.Length; j++)
                            {
                                if (recordTimeTemp[j] != "")
                                {
                                    if (j != 0)
                                    {
                                        if (recordTimeTemp[j - 1] == recordTimeTemp[j])
                                        {
                                            continue;
                                        }

                                        if (Convert.ToDateTime(recordTimeTemp[j]).Hour - Convert.ToDateTime(recordTimeTemp[j - 1]).Hour == 0 &&
                                            Convert.ToDateTime(recordTimeTemp[j]).Minute - Convert.ToDateTime(recordTimeTemp[j - 1]).Minute < 5)
                                        {
                                            continue;
                                        }
                                    }

                                    recordTime += date.Year + "年" + date.Month + "月" + date.Day + "日" + recordTimeTemp[j] + " ";
                                }
                            }
                        }

                        HR_AttendanceMachineDataList machineDataList = new HR_AttendanceMachineDataList();

                        machineDataList.Date       = date;
                        machineDataList.RecordTime = recordTime;
                        machineDataList.WorkID     = workID;
                        machineDataList.Remark     = "";

                        lstMachineDate.Add(machineDataList);
                    }
                    #endregion

                    m_attendanceMachineServer.InsertAttendanceMachine(lstMachineDate);
                    MessageDialog.ShowPromptMessage("导入成功!");
                }

                RefreshDataGridView();

                if (dataGridView1.Rows.Count > 0)
                {
                    dataGridView1.Columns["单据号"].Visible = false;
                }
            }
            catch (Exception ex)
            {
                MessageDialog.ShowPromptMessage(ex.Message);
            }
        }
        /// <summary>
        /// 检查控件
        /// </summary>
        /// <returns>信息正确返回True,失败返回False</returns>
        bool CheckControl()
        {
            if (dtpEndTime.Value <= dtpBeginTime.Value)
            {
                MessageDialog.ShowPromptMessage("【起始时间】必须小于【结束时间】");
                return(false);
            }

            if (MessageDialog.ShowEnquiryMessage("请确认您的\r\n【加班起始时间】:"
                                                 + dtpBeginTime.Value.ToString("yyyy-MM-dd HH:mm") + "\r\n【加班结束时间】:"
                                                 + dtpEndTime.Value.ToString("yyyy-MM-dd HH:mm")) == DialogResult.No)
            {
                return(false);
            }

            if (txtErrand.Text.Trim() == "")
            {
                MessageDialog.ShowPromptMessage("请填写加班任务描述!");
                return(false);
            }

            if (numHours.Value == 0)
            {
                MessageDialog.ShowPromptMessage("请填写需要加班小时!");
                return(false);
            }

            if (cmbCompensateMode.Text.Trim() == "")
            {
                MessageDialog.ShowPromptMessage("请选择加班补偿方式!");
                return(false);
            }

            if (cmbOvertimeAddress.SelectedIndex == -1)
            {
                MessageDialog.ShowPromptMessage("请选择加班地点!");
                return(false);
            }

            if (dataGridView2.Rows.Count > 0)
            {
                DateTime starDate = ServerTime.Time;
                DateTime endDate  = ServerTime.Time;

                if (cmbCompensateMode.SelectedIndex == 0)
                {
                    string month = "";

                    if (dtpBeginTime.Value.Month < 10)
                    {
                        month = "0" + dtpBeginTime.Value.Month;
                    }
                    else
                    {
                        month = dtpBeginTime.Value.Month.ToString();
                    }

                    starDate = Convert.ToDateTime(dtpBeginTime.Value.Year.ToString() + "-" + month + "-" + "01");
                    endDate  = Convert.ToDateTime(dtpBeginTime.Value.Year.ToString() + "-" + month + "-" + GetDays());

                    if (m_highDept.Contains("ZZ") || m_highDept == "SC")
                    {
                        if (dtpBeginTime.Value.Month == 1)
                        {
                            starDate = Convert.ToDateTime((dtpBeginTime.Value.Year - 1).ToString() + "-12-26");
                            endDate  = Convert.ToDateTime(dtpBeginTime.Value.Year.ToString() + "-" + month + "-" + "26");
                        }
                        else
                        {
                            starDate = Convert.ToDateTime(dtpBeginTime.Value.Year.ToString() + "-" + (dtpBeginTime.Value.Month - 1).ToString() + "-" + "26");
                            endDate  = Convert.ToDateTime(dtpBeginTime.Value.Year.ToString() + "-" + month + "-" + "26");
                        }
                    }
                }

                for (int i = 0; i < dataGridView2.Rows.Count; i++)
                {
                    DataGridViewCellCollection cells = dataGridView2.Rows[i].Cells;

                    if (cells["员工编号"].Value == null || GlobalObject.GeneralFunction.IsNullOrEmpty(cells["员工编号"].Value.ToString()))
                    {
                        MessageDialog.ShowPromptMessage(string.Format("第 {0} 行, 请选择加班人员", i + 1));
                        return(false);
                    }

                    if (cmbCompensateMode.SelectedIndex == 0)
                    {
                        if (!m_attendanceServer.GetAllowMobileVacationHour(cells["员工编号"].Value.ToString()))
                        {
                            if (m_overTimeServer.GetMonthRealHour(cells["员工编号"].Value.ToString(), starDate, endDate) <= 0)
                            {
                                MessageDialog.ShowPromptMessage(UniversalFunction.GetPersonnelName(cells["员工编号"].Value.ToString())
                                                                + "有欠班,只能选择调休!");
                                return(false);
                            }
                        }
                    }
                }
            }
            else if (dataGridView2.Rows.Count == 0)
            {
                MessageDialog.ShowPromptMessage("请选择加班人员");
                return(false);
            }

            IQueryable <View_HR_PersonnelArchive> directorGroup = m_personnerServer.GetDeptDirector(
                m_personnerServer.GetPersonnelInfo(txtApplicant.Tag.ToString()).Dept, "2");
            bool flag = false;

            if (directorGroup != null && directorGroup.Count() > 0)
            {
                foreach (var item in directorGroup)
                {
                    if (BasicInfo.LoginID == item.员工编号)
                    {
                        flag = true;

                        break;
                    }
                }
            }

            if (flag)
            {
                MessageDialog.ShowPromptMessage("您是分管领导,不用填写加班单!");
                return(false);
            }

            if ((ServerTime.Time - dtpBeginTime.Value).Days > 3 && !BasicInfo.ListRoles.Contains(CE_RoleEnum.人力资源部办公室文员.ToString()))
            {
                string starTemp = dtpBeginTime.Value.ToShortDateString() + " " + "08:30";

                DataTable dt = m_holidayServer.GetHolidayDays(Convert.ToDateTime(starTemp), ServerTime.Time);

                if (dt != null && dt.Rows.Count > 0)
                {
                    int days = Convert.ToInt32(dt.Rows[0]["days"] == DBNull.Value ? "0" : dt.Rows[0]["days"]);

                    if (days > 0)
                    {
                        if ((ServerTime.Time - dtpBeginTime.Value).Days > 3 + days)
                        {
                            MessageDialog.ShowPromptMessage("只能补三天内的加班单!");
                            return(false);
                        }
                    }
                    else
                    {
                        MessageDialog.ShowPromptMessage("只能补三天内的加班单!");
                        return(false);
                    }
                }
                else
                {
                    MessageDialog.ShowPromptMessage("只能补三天内的加班单!");
                    return(false);
                }
            }

            HR_AttendanceSetting attendanceSet = m_attendanceSchemeServer.GetAttendanceSettingByWorkID(BasicInfo.LoginID);

            string[] schemeCode = attendanceSet.SchemeCode.Split(' ');
            string   mode       = m_attendanceSchemeServer.GetAttendanceSchemeByCode(schemeCode[0]).AttendanceMode;

            Hashtable hsTable = new Hashtable();

            hsTable.Add("@ParentCode", "ZZGC");
            hsTable.Add("@WorkID", BasicInfo.LoginID);

            DataTable tempTable = GlobalObject.DatabaseServer.QueryInfoPro("HR_Personnel_GetParentDept", hsTable, out error);

            #region 2017.10.27 夏石友, 向菲菲将工务人员、车间人员修改为非自然月排班考勤后出现必须加班2小时才可以填写加班单的现象
            //if (mode.Contains("非自然月考勤"))
            if (mode.Contains("非自然月考勤") || mode.Contains("非自然月排班考勤") || tempTable.Rows.Count > 0)
            #endregion
            {
                if (numHours.Value < 1)
                {
                    MessageDialog.ShowPromptMessage("加班1小时以上才可以填写加班申请单!");
                    return(false);
                }
            }
            else
            {
                if (numHours.Value < 2)
                {
                    MessageDialog.ShowPromptMessage("加班2小时以上才可以填写加班申请单!");
                    return(false);
                }
            }

            return(true);
        }