/// <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); } }
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; } }
/// <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); } }
/// <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); } }
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); }