public V_EMPLOYEELEAVERECORD GetEmployeeLeaveRecordByID(string strID) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { return bll.GetEmployeeLeaveRecordByID(strID); } }
public string AuditLeaveRecord(string strLeaveRecordID, List<V_ADJUSTLEAVE> AdjustLeaves, string strCheckState) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { return bll.AuditLeaveRecord(strLeaveRecordID, AdjustLeaves, strCheckState); } }
public string EmployeeLeaveRecordUpdate(T_HR_EMPLOYEELEAVERECORD LeaveRecord, List<V_ADJUSTLEAVE> AdjustLeaves) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { return bll.EmployeeLeaveRecordUpdate(LeaveRecord, AdjustLeaves); } }
public bool EmployeeLeaveRecordDelete(string[] leaveRecordIDs) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { int rslt = bll.EmployeeLeaveRecordDelete(leaveRecordIDs); return (rslt > 0); } }
public byte[] ExportEmployeeLeaveRecordReports(int pageIndex, int pageSize, string sort, string filterString, List<object> paras, ref int pageCount, string strCheckState, string strOwnerID, string startDate, string recorderDate,string employeeID,string leaveTypeSetID) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { return bll.ExportEmployeeLeaveRecordReports(pageIndex, pageSize, sort, filterString, paras, ref pageCount, strCheckState, strOwnerID, startDate, recorderDate,employeeID,leaveTypeSetID); } }
public string GetRealLeaveDayByEmployeeIdAndDate(string strLeaveRecordId, string strEmployeeID, DateTime dtLeaveStartTime, DateTime dtLeaveEndTime, ref decimal dLeaveDay, ref decimal dLeaveTime, ref decimal dLeaveTotalTime) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { return bll.GetRealLeaveDayByEmployeeIdAndDate(strLeaveRecordId, strEmployeeID, dtLeaveStartTime, dtLeaveEndTime, ref dLeaveDay, ref dLeaveTime, ref dLeaveTotalTime); } }
/// <summary> /// 获取指定员工的实际销假天数(实际销假天数=销假天数-公休假天数-每周休息天数),实际销假时长(按小时计,实际销假合计时长=非整天销假时长-当日作息间隙休息时间+整天销假时长) /// </summary> /// <param name="strCancelLeaveId">当前销假记录的ID</param> /// <param name="strEmployeeID">员工ID</param> /// <param name="dtLeaveStartTime">销假起始时间</param> /// <param name="dtLeaveEndTime">销假截止时间</param> /// <param name="dLeaveDay">实际销假天数</param> /// <param name="dLeaveTime">实际销假时长</param> /// <param name="dLeaveTotalTime">实际销假合计时长</param> public string GetRealCancelLeaveDayByEmployeeIdAndDate(string strCancelLeaveId, string strEmployeeID, DateTime dtCancelLeaveStartTime, DateTime dtCancelLeaveEndTime, ref decimal dCancelLeaveDay, ref decimal dCancelLeaveTime, ref decimal dCancelLeaveTotalTime) { string strMsg = string.Empty; try { T_HR_EMPLOYEECANCELLEAVE entCancelLeaveRecord = GetEmployeeCancelLeaveByID(strCancelLeaveId); bool flag = false; if (entCancelLeaveRecord != null) { if (entCancelLeaveRecord.STARTDATETIME == dtCancelLeaveStartTime && entCancelLeaveRecord.ENDDATETIME == dtCancelLeaveEndTime) { if (entCancelLeaveRecord.LEAVEDAYS == null) { dCancelLeaveDay = 0; } else { dCancelLeaveDay = entCancelLeaveRecord.LEAVEDAYS.Value; } if (entCancelLeaveRecord.LEAVEHOURS == null) { dCancelLeaveTime = 0; } else { dCancelLeaveTime = entCancelLeaveRecord.LEAVEHOURS.Value; } if (entCancelLeaveRecord.TOTALHOURS == null) { dCancelLeaveTotalTime = 0; } else { dCancelLeaveTotalTime = entCancelLeaveRecord.TOTALHOURS.Value; } flag = true; } } if (flag) { return(strMsg); } DateTime dtStart, dtEnd = new DateTime(); decimal dTotalLeaveDay = 0; //起止时间的时长 DateTime.TryParse(dtCancelLeaveStartTime.ToString("yyyy-MM-dd"), out dtStart); //获取销假起始日期 DateTime.TryParse(dtCancelLeaveEndTime.ToString("yyyy-MM-dd"), out dtEnd); //获取销假截止日期 AttendanceSolutionAsignBLL bllAttendSolAsign = new AttendanceSolutionAsignBLL(); T_HR_ATTENDANCESOLUTIONASIGN entAttendSolAsign = bllAttendSolAsign.GetAttendanceSolutionAsignByEmployeeIDAndDate(strEmployeeID, dtStart); if (entAttendSolAsign == null) { //当前员工没有分配考勤方案,无法提交销假申请 return("{NONEXISTASIGNEDATTENSOL}"); } //获取考勤方案 T_HR_ATTENDANCESOLUTION entAttendSol = entAttendSolAsign.T_HR_ATTENDANCESOLUTION; decimal dWorkTimePerDay = entAttendSol.WORKTIMEPERDAY.Value; decimal dWorkMode = entAttendSol.WORKMODE.Value; int iWorkMode = 0; int.TryParse(dWorkMode.ToString(), out iWorkMode);//获取工作制(工作天数/周) List <int> iWorkDays = new List <int>(); Utility.GetWorkDays(iWorkMode, ref iWorkDays);//获取每周上班天数 OutPlanDaysBLL bllOutPlanDays = new OutPlanDaysBLL(); IQueryable <T_HR_OUTPLANDAYS> entOutPlanDays = bllOutPlanDays.GetOutPlanDaysRdListByEmployeeID(strEmployeeID); string strVacDayType = (Convert.ToInt32(Common.OutPlanDaysType.Vacation) + 1).ToString(); string strWorkDayType = (Convert.ToInt32(Common.OutPlanDaysType.WorkDay) + 1).ToString(); IQueryable <T_HR_OUTPLANDAYS> entVacDays = entOutPlanDays.Where(s => s.DAYTYPE == strVacDayType); //IQueryable<T_HR_OUTPLANDAYS> entWorkDays = entOutPlanDays.Where(s => s.DAYTYPE == strWorkDayType && s.STARTDATE >= dtStart && s.ENDDATE <= dtEnd); // 销假时间要在开始时间和结束时间之间 //注释掉没考虑某一区间的情况 //IQueryable<T_HR_OUTPLANDAYS> entWorkDays = entOutPlanDays.Where(s => s.DAYTYPE == strWorkDayType && s.STARTDATE <= dtStart && s.ENDDATE >= dtEnd); //条件过滤有四种情况 //1:在区间内 //2:大于开始时间且结束时间小于销假结束时间 //3:开始日期大于 销假开始日期且结束日期处于有效期之间 //4:开始日期小于销假开始日期且结束日期在开始时间和结束时间 IQueryable <T_HR_OUTPLANDAYS> entWorkDays = entOutPlanDays.Where(s => s.DAYTYPE == strWorkDayType && ((s.STARTDATE <= dtStart && s.ENDDATE >= dtEnd) || (s.STARTDATE >= dtStart && s.ENDDATE <= dtEnd) || (s.STARTDATE >= dtStart && s.STARTDATE <= dtEnd && s.ENDDATE >= dtEnd) || (s.STARTDATE <= dtStart && s.ENDDATE >= dtStart && s.ENDDATE <= dtEnd))); SchedulingTemplateDetailBLL bllTemplateDetail = new SchedulingTemplateDetailBLL(); IQueryable <T_HR_SCHEDULINGTEMPLATEDETAIL> entTemplateDetails = bllTemplateDetail.GetTemplateDetailRdListByAttendanceSolutionId(entAttendSol.ATTENDANCESOLUTIONID); T_HR_SCHEDULINGTEMPLATEMASTER entTemplateMaster = entTemplateDetails.FirstOrDefault().T_HR_SCHEDULINGTEMPLATEMASTER; TimeSpan ts = dtEnd.Subtract(dtStart); decimal dVacDay = 0, dWorkDay = 0; decimal dLeaveFirstDayTime = 0, dLeaveLastDayTime = 0, dLeaveFirstLastTime = 0;//请假第一天的时长,请假最后一天的时长,请假首尾两天合计时长 if (dtCancelLeaveStartTime != dtCancelLeaveEndTime) { EmployeeLeaveRecordBLL bllLeaveRecord = new EmployeeLeaveRecordBLL(); bllLeaveRecord.CalculateNonWholeDayLeaveTime(dtCancelLeaveStartTime, dtStart, entTemplateMaster, entTemplateDetails, entVacDays, entWorkDays, iWorkDays, "S", ref dLeaveFirstDayTime); bllLeaveRecord.CalculateNonWholeDayLeaveTime(dtCancelLeaveEndTime, dtEnd, entTemplateMaster, entTemplateDetails, entVacDays, entWorkDays, iWorkDays, "E", ref dLeaveLastDayTime); dLeaveFirstLastTime = dLeaveFirstDayTime + dLeaveLastDayTime; if (dtStart == dtEnd) { dLeaveFirstLastTime = dLeaveFirstLastTime - dWorkTimePerDay * 60; } } else { dLeaveFirstLastTime = dWorkTimePerDay * 60; } dTotalLeaveDay = ts.Days; if (ts.Days > 0) { //取得总的请假天数(此天数扣除了首尾两天的时间,根据请假的情况,可能包含了公休假及周假天数,扣除首尾两天的计算只适合请三天以上的) int iDays = ts.Days - 1; dTotalLeaveDay = iDays; for (int i = 0; i < iDays; i++) { int j = i + 1; bool isVacDay = false; DateTime dtCurDate = dtStart.AddDays(j); if (iWorkDays.Contains(Convert.ToInt32(dtCurDate.DayOfWeek)) == false) { dVacDay += 1; } if (entVacDays.Count() > 0) { foreach (T_HR_OUTPLANDAYS item_Vac in entVacDays) { if (item_Vac.STARTDATE.Value <= dtCurDate && item_Vac.ENDDATE >= dtCurDate) { isVacDay = true; break; } } } if (isVacDay) { dVacDay += 1; } if (entWorkDays.Count() > 0) { foreach (T_HR_OUTPLANDAYS item_Work in entWorkDays) { if (item_Work.STARTDATE.Value <= dtCurDate && item_Work.ENDDATE >= dtCurDate) { dWorkDay += 1; break; } } } } } dCancelLeaveDay = dTotalLeaveDay - dVacDay + dWorkDay; //请假天数 = 请假天数-首尾两天 - 总休假天数 + 休假调剂工作天数 decimal dTempTime = decimal.Round((dLeaveFirstLastTime) / 60, 1); if (dTempTime >= dWorkTimePerDay) { decimal dTempDay = decimal.Round(dTempTime / dWorkTimePerDay, 2); string[] strList = dTempDay.ToString().Split('.'); if (strList.Length == 2) { dCancelLeaveDay += decimal.Parse(strList[0].ToString()); dCancelLeaveTime = dTempTime - dWorkTimePerDay * decimal.Parse(strList[0].ToString()); } else { dCancelLeaveDay += dTempDay; } } else if (dTempTime < dWorkTimePerDay) { dCancelLeaveTime = dTempTime; } dCancelLeaveTotalTime = dCancelLeaveDay * dWorkTimePerDay + dCancelLeaveTime; } catch (Exception ex) { strMsg = ex.Message; Utility.SaveLog(ex.ToString()); } return(strMsg); }
public List<V_EmpLeaveRdInfo> EmployeeLeaveRecordToCalcelLeave(int pageIndex, int pageSize, string sort, string filterString, IList<object> paras, ref int pageCount, string userID) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { List<V_EmpLeaveRdInfo> rslt = new List<V_EmpLeaveRdInfo>(); var ents = bll.EmployeeLeaveRecordToCalcelLeave(pageIndex, pageSize, sort, filterString, paras, ref pageCount, userID); if (ents != null) { return ents.ToList(); } return rslt; } }
public void UpdateEmployeeLeaveDayCount(string EmployeeCode, string EmployeeName, string Type) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { bll.UpdateEmployeeLeaveDayCount(EmployeeCode, EmployeeName, Type); } }
public string GetLeaveRecordXmlString(string strFormID) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { return bll.GetXmlString(strFormID); } }
public void UpdateOvertimeRecord(string EmployeeCode, string EmployeeName, string Type) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { bll.UpdateOvertimeRecord(EmployeeCode, EmployeeName, Type); } }
public void UpdateLeftHours(string EmployeeCode, string EmployeeName) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { bll.UpdateLeftHours(EmployeeCode, EmployeeName); } }
public CaculateLeaveHoursResponse CaculateLeaveHours(CaculateLeaveHoursRequest request) { using (EmployeeLeaveRecordBLL logic = new EmployeeLeaveRecordBLL()) { return logic.CaculateLeaveHours(request); } }
public void GetLeaveDaysHistory(string strLeaveTypeSetId, string strLeaveRecordId, string strEmployeeID, DateTime dtLeaveStartTime, DateTime dtLeaveEndTime, ref decimal dLeaveYearTimes, ref decimal dLeaveYearDays, ref decimal dLeaveMonthTimes, ref decimal dLeaveMonthDays, ref DateTime dLeaveFistDate, ref decimal dLeaveSYearTimes) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { bll.GetLeaveDaysHistory(strLeaveTypeSetId, strLeaveRecordId, strEmployeeID, dtLeaveStartTime, dtLeaveEndTime, ref dLeaveYearTimes, ref dLeaveYearDays, ref dLeaveMonthTimes, ref dLeaveMonthDays,ref dLeaveFistDate,ref dLeaveSYearTimes); } }
public List<V_EmpLeaveRdInfo> EmployeeLeaveRecordPaged(int pageIndex, int pageSize, string sort, string filterString, List<object> paras, ref int pageCount, string strCheckState, string strOwnerID, string startDate, string recorderDate,string employeeID, string leaveTypeSetID) { using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL()) { var ents = bll.EmployeeLeaveRecordPaged(pageIndex, pageSize, sort, filterString, paras, ref pageCount, strCheckState, strOwnerID, startDate, recorderDate,employeeID,leaveTypeSetID); if (ents == null) { return null; } return ents.ToList(); } }
/// <summary> /// 根据传入员工ID和月份(年-月:2011-6),更新指定月份员工作息记录 /// </summary> /// <param name="strEmployeeID"></param> public void UpdateAttendRecordByEmployeeIdWithLeaveRecord(string strEmployeeID, string strCurMonth) { try { if (string.IsNullOrWhiteSpace(strEmployeeID) || string.IsNullOrWhiteSpace(strCurMonth)) { return; } DateTime dtCheck = new DateTime(); DateTime dtStart = new DateTime(), dtEnd = new DateTime(); DateTime.TryParse(strCurMonth + "-1", out dtStart); if (dtStart <= dtCheck) { return; } dtEnd = dtStart.AddMonths(1).AddSeconds(-1); IQueryable <T_HR_ATTENDANCERECORD> entAttRds = GetAttendanceRecordByEmployeeIDAndDate(strEmployeeID, dtStart, dtEnd); EmployeeLeaveRecordBLL bllLeave = new EmployeeLeaveRecordBLL(); IQueryable <T_HR_EMPLOYEELEAVERECORD> entLeaveRds = bllLeave.GetEmployeeLeaveRdListByEmployeeIDAndDate(strEmployeeID, dtStart, dtEnd, "2"); if (entAttRds == null || entLeaveRds == null) { return; } if (entAttRds.Count() == 0 || entLeaveRds.Count() == 0) { return; } List <T_HR_EMPLOYEELEAVERECORD> entCheckLeaveRds = entLeaveRds.ToList(); List <T_HR_ATTENDANCERECORD> entCheckAttRds = new List <T_HR_ATTENDANCERECORD>(); foreach (T_HR_ATTENDANCERECORD item in entAttRds) { bool bIsLeave = false; foreach (T_HR_EMPLOYEELEAVERECORD checkItem in entCheckLeaveRds) { DateTime dtCheckStart = DateTime.Parse(checkItem.STARTDATETIME.Value.ToString("yyyy-MM-dd")); DateTime dtCheckEnd = DateTime.Parse(checkItem.ENDDATETIME.Value.ToString("yyyy-MM-dd")); if (dtCheckStart <= item.ATTENDANCEDATE && dtCheckEnd >= item.ATTENDANCEDATE) { bIsLeave = true; break; } } if (!bIsLeave) { continue; } item.ATTENDANCESTATE = (Convert.ToInt32(Common.AttendanceState.Leave) + 1).ToString(); ModifyAttRd(item); entCheckAttRds.Add(item); } if (entCheckAttRds.Count() > 0) { RemoveWrongSignRds(entCheckAttRds); } } catch (Exception ex) { Utility.SaveLog(ex.ToString()); } }
/// <summary> /// 检查员工请假出差情况 /// </summary> /// <param name="entAttRd">当天的考勤初始化记录</param> /// <param name="entClockInRds">打卡原始记录</param> /// <param name="strMsg">处理结果的消息</param> /// <param name="bIsAbnorm">是否出现考勤异常的标志(true/false)</param> private void CheckEvectionRecordAndLeaveRecordAttendState(string EMPLOYEEID, DateTime dtStartDate, DateTime dtEndDate, ref string strMsg, ref bool bIsAbnorm) { try { dtEndDate = dtEndDate.AddDays(1).AddSeconds(-1); //获取请假记录使用的起止时间 //DateTime dtStartDate = entAttRd.ATTENDANCEDATE.Value; //DateTime dtEndDate = entAttRd.ATTENDANCEDATE.Value.AddDays(1).AddSeconds(-1); #region 启动出差处理考勤异常的线程 //查询出差记录,检查当天存在出差情况 EmployeeEvectionRecordBLL bllEvectionRd = new EmployeeEvectionRecordBLL(); var entityEvections = from ent in dal.GetObjects <T_HR_EMPLOYEEEVECTIONRECORD>() where ent.EMPLOYEEID == EMPLOYEEID && ent.CHECKSTATE == "2" && ( (ent.STARTDATE <= dtStartDate && ent.ENDDATE >= dtStartDate) || (ent.STARTDATE <= dtEndDate && ent.ENDDATE >= dtEndDate) || (ent.STARTDATE >= dtStartDate && ent.ENDDATE <= dtEndDate) ) select ent; //如果有出差记录,就判断出差是否为全天 if (entityEvections.Count() > 0) { foreach (var ent in entityEvections) { //出差消除异常 string attState = (Convert.ToInt32(Common.AttendanceState.Travel) + 1).ToString(); DealEmployeeAbnormRecord(EMPLOYEEID, ent.STARTDATE.Value, ent.ENDDATE.Value, attState); } } #endregion #region 启动请假处理考勤异常的线程 //查询请假记录,检查当天存在请假情况 EmployeeLeaveRecordBLL bllLeaveRd = new EmployeeLeaveRecordBLL(); IQueryable <T_HR_EMPLOYEELEAVERECORD> entLeaveRds = from e in dal.GetObjects <T_HR_EMPLOYEELEAVERECORD>().Include("T_HR_LEAVETYPESET") where e.EMPLOYEEID == EMPLOYEEID && e.CHECKSTATE == "2" && ( (e.STARTDATETIME <= dtStartDate && e.ENDDATETIME >= dtStartDate) || (e.STARTDATETIME <= dtEndDate && e.ENDDATETIME >= dtEndDate) || (e.STARTDATETIME >= dtStartDate && e.ENDDATETIME <= dtEndDate) ) select e; var sql = ((System.Data.Objects.ObjectQuery)entLeaveRds).ToTraceString(); sql.ToString(); if (entLeaveRds.Count() > 0) { foreach (var ent in entLeaveRds) { //请假消除异常 string attState = (Convert.ToInt32(Common.AttendanceState.Leave) + 1).ToString(); DealEmployeeAbnormRecord(ent.EMPLOYEEID, ent.STARTDATETIME.Value, ent.ENDDATETIME.Value, attState); } } #endregion #region 启动外出申请处理考勤异常的线程 //查询请假记录,检查当天存在请假情况 var entOutApplyRds = from ent in dal.GetObjects <T_HR_OUTAPPLYRECORD>() where ent.EMPLOYEEID == EMPLOYEEID && ent.CHECKSTATE == "2" && ( (ent.STARTDATE <= dtStartDate && ent.ENDDATE >= dtStartDate) || (ent.STARTDATE <= dtEndDate && ent.ENDDATE >= dtEndDate) || (ent.STARTDATE >= dtStartDate && ent.ENDDATE <= dtEndDate) ) select ent; if (entOutApplyRds.Count() > 0) { foreach (var ent in entOutApplyRds) { //外出申请消除异常 string attState = (Convert.ToInt32(Common.AttendanceState.OutApply) + 1).ToString(); DealEmployeeAbnormRecord(ent.EMPLOYEEID, ent.STARTDATE.Value, ent.ENDDATE.Value, attState); } } #endregion } catch (Exception ex) { Tracer.Debug("员工打卡记录导入检查员工请假出差情况异常:" + ex.ToString()); } strMsg = "{SAVESUCCESSED}"; }