Example #1
0
 public V_EMPLOYEELEAVERECORD GetEmployeeLeaveRecordByID(string strID)
 {
     using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL())
     {
         return bll.GetEmployeeLeaveRecordByID(strID);
     }
 }
Example #2
0
 public string AuditLeaveRecord(string strLeaveRecordID, List<V_ADJUSTLEAVE> AdjustLeaves, string strCheckState)
 {
     using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL())
     {
         return bll.AuditLeaveRecord(strLeaveRecordID, AdjustLeaves, strCheckState);
     }
 }
Example #3
0
 public string EmployeeLeaveRecordUpdate(T_HR_EMPLOYEELEAVERECORD LeaveRecord, List<V_ADJUSTLEAVE> AdjustLeaves)
 {
     using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL())
     {
         return bll.EmployeeLeaveRecordUpdate(LeaveRecord, AdjustLeaves);
     }
 }
Example #4
0
 public bool EmployeeLeaveRecordDelete(string[] leaveRecordIDs)
 {
     using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL())
     {
         int rslt = bll.EmployeeLeaveRecordDelete(leaveRecordIDs);
         return (rslt > 0);
     }
 }
Example #5
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);

            }
        }
Example #6
0
 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);
     }
 }
Example #7
0
        /// <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);
        }
Example #8
0
 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;
     }
 }
Example #9
0
 public void UpdateEmployeeLeaveDayCount(string EmployeeCode, string EmployeeName, string Type)
 {
     using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL())
     {
         bll.UpdateEmployeeLeaveDayCount(EmployeeCode, EmployeeName, Type);
     }
 }
Example #10
0
 public string GetLeaveRecordXmlString(string strFormID)
 {
     using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL())
     {
         return bll.GetXmlString(strFormID);
     }
 }
Example #11
0
 public void UpdateOvertimeRecord(string EmployeeCode, string EmployeeName, string Type)
 {
     using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL())
     {
         bll.UpdateOvertimeRecord(EmployeeCode, EmployeeName, Type);
     }
 }
Example #12
0
 public void UpdateLeftHours(string EmployeeCode, string EmployeeName)
 {
     using (EmployeeLeaveRecordBLL bll = new EmployeeLeaveRecordBLL())
     {
         bll.UpdateLeftHours(EmployeeCode, EmployeeName);
     }
 }
Example #13
0
 public CaculateLeaveHoursResponse CaculateLeaveHours(CaculateLeaveHoursRequest request)
 {
     using (EmployeeLeaveRecordBLL logic = new EmployeeLeaveRecordBLL())
     {
         return logic.CaculateLeaveHours(request);
     }
 }
Example #14
0
 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);
     }
 }
Example #15
0
        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();
            }
        }
Example #16
0
        /// <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());
            }
        }
Example #17
0
        /// <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}";
        }