private static List <Employee> CleanAttendanceInAndOutList(IList <AttendanceInAndOutRecord> attendances)
        {
            List <Employee> employeeList = new List <Employee>();

            for (int i = 0; i < attendances.Count; i++)
            {
                List <AttendanceInAndOutRecord> records = new List <AttendanceInAndOutRecord>();
                records.Add(attendances[i]);
                string   employeename = attendances[i].EmployeeName;
                DateTime time         = attendances[i].IOTime;
                for (int j = i + 1; j < attendances.Count; j++)
                {
                    if (attendances[j].EmployeeName == employeename && attendances[j].IOTime.Date == time.Date)
                    {
                        records.Add(attendances[j]);
                        attendances.RemoveAt(j);
                        j--;
                    }
                }
                Employee emp = new Employee();
                emp.Account            = new Account(0, "", employeename);
                emp.EmployeeAttendance = new EmployeeAttendance();
                DateTime intime  = AttendanceInAndOutRecord.FindEarlistTime(records);
                DateTime outtime = AttendanceInAndOutRecord.FindLatestTime(records);
                emp.EmployeeAttendance.AttendanceInAndOutStatistics =
                    new AttendanceInAndOutStatistics(intime, outtime, "");
                employeeList.Add(emp);
            }
            return(employeeList);
        }
        public static List <CalendarADay> Turn(List <AttendanceInAndOutRecord> originalDataList, List <CalendarADay> retList
                                               , List <PlanDutyDetail> planDutyDetailList
                                               , DateTime from, DateTime to)
        {
            for (int i = 0; from.AddDays(i).Date <= to.Date; i++)
            {
                PlanDutyDetail planDutyDetail =
                    PlanDutyDetail.GetPlanDutyDetailByDate(planDutyDetailList, from.AddDays(i).Date);
                if (planDutyDetail == null || planDutyDetail.PlanDutyClass.IsWeek)
                {
                    continue;
                }
                CalendarADay calendarADay = CalendarADay.CreateOrGetCalendarADayByDate(retList, from.AddDays(i).Date);
                List <AttendanceInAndOutRecord> dtOriginalDataList =
                    AttendanceInAndOutRecord.GetAttendanceInAndOutRecordByDate(originalDataList, from.AddDays(i).Date);
                if (dtOriginalDataList.Count == 0)
                {
                    MonthItem monthNoRecord = new MonthItem();
                    monthNoRecord.CType  = CalendarShowType.Attendance;
                    monthNoRecord.Title  = "无打卡记录";
                    monthNoRecord.Date   = from.AddDays(i).Date;
                    monthNoRecord.Detail = "无打卡记录";
                    calendarADay.MonthItems.Add(monthNoRecord);
                    Utility.Clean(calendarADay);
                    continue;
                }
                DateTime dtStart = AttendanceInAndOutRecord.FindEarlistTime(dtOriginalDataList);
                DateTime dtEnd   = AttendanceInAndOutRecord.FindLatestTime(dtOriginalDataList);

                if (!IsInitTime(dtStart))
                {
                    DayItem day = new DayItem();
                    day.CType     = CalendarShowType.Attendance;
                    day.Start     = day.End = dtStart;
                    day.DayDetail = "打卡 " + dtStart.ToShortTimeString();
                    calendarADay.DayItems.Add(day);
                }
                if (!IsInitTime(dtEnd))
                {
                    DayItem day = new DayItem();
                    day.CType     = CalendarShowType.Attendance;
                    day.Start     = day.End = dtEnd;
                    day.DayDetail = "打卡 " + dtEnd.ToShortTimeString();
                    calendarADay.DayItems.Add(day);
                }

                MonthItem month = new MonthItem();
                month.CType = CalendarShowType.Attendance;
                month.Title = "打卡 " + (!IsInitTime(dtStart) ? dtStart.ToShortTimeString() : "") +
                              "--" + (!IsInitTime(dtEnd) ? dtEnd.ToShortTimeString() : "");
                month.Date   = from.AddDays(i).Date;
                month.Detail = "最早打卡时间:" + (!IsInitTime(dtStart) ? dtStart.ToString() : "--") + "<br>" + "最晚打卡时间:" +
                               (!IsInitTime(dtEnd) ? dtEnd.ToString() : "--");
                calendarADay.MonthItems.Add(month);
                Utility.Clean(calendarADay);
            }

            return(retList);
        }
예제 #3
0
        /// <summary>
        /// 从Accesss中读取时间,有读取时间段2009-09-28,add by liudan
        /// </summary>
        private void ReadRecordsWithReadTime(DateTime readFromTime, DateTime readToTime)
        {
            //取员工的原始考勤数据
            for (int i = 0; i < EmployeeList.Count; i++)
            {
                EmployeeList[i] = _DalEmployee.GetEmployeeByAccountID(EmployeeList[i].Account.Id);
                EmployeeList[i].EmployeeAttendance            = new EmployeeAttendance(_SearchFrom, _SearchTo);
                EmployeeList[i].EmployeeAttendance.DoorCardNo =
                    _DalEmployee.GetEmployeeBasicInfoByAccountID(EmployeeList[i].Account.Id).EmployeeAttendance.
                    DoorCardNo;
                EmployeeList[i].EmployeeAttendance.PlanDutyDetailList =
                    new PlanDutyDal().GetPlanDutyDetailByAccount(EmployeeList[i].Account.Id,
                                                                 _SearchFrom, _SearchTo);
                EmployeeList[i].EmployeeAttendance.AttendanceInAndOutRecordList = new List <AttendanceInAndOutRecord>();
            }
            //从ACCESS读数据

            ReadAccessData        _ReadIODataFromAccess = new ReadAccessData();
            List <DataFromAccess> returnList            = _ReadIODataFromAccess.ReadRecords(readFromTime, readToTime);

            for (int k = 0; k < returnList.Count; k++)
            {
                for (int i = 0; i < EmployeeList.Count; i++)
                {
                    //如果考勤卡号相对应,则增条考勤数据
                    string cardNo = returnList[k].CardNo;
                    if (!string.IsNullOrEmpty(EmployeeList[i].EmployeeAttendance.DoorCardNo) &&
                        EmployeeList[i].EmployeeAttendance.DoorCardNo == cardNo)
                    {
                        //判断读取中是否有重复记录 add by liudan 2009-09-19
                        List <AttendanceInAndOutRecord> sqlRecords =
                            _DalRecord.GetAttendanceInAndOutRecordByCondition(EmployeeList[i].Account.Id, cardNo,
                                                                              readFromTime, readToTime,
                                                                              InOutStatusEnum.All,
                                                                              OutInRecordOperateStatusEnum.All, Convert.ToDateTime("1900-12-31"),
                                                                              Convert.ToDateTime("2999-12-31"));
                        bool isFind = false;
                        foreach (AttendanceInAndOutRecord records in sqlRecords)
                        {
                            if (returnList[k].InOrOut.Equals(records.IOStatus) && returnList[k].IOTime.Equals(records.IOTime))
                            {
                                isFind = true;
                            }
                        }
                        if (!isFind)
                        {
                            AttendanceInAndOutRecord attendanceInAndOutRecord = new AttendanceInAndOutRecord();
                            attendanceInAndOutRecord.DoorCardNo    = returnList[k].CardNo;
                            attendanceInAndOutRecord.IOStatus      = returnList[k].InOrOut;
                            attendanceInAndOutRecord.IOTime        = returnList[k].IOTime;
                            attendanceInAndOutRecord.OperateStatus = OutInRecordOperateStatusEnum.ReadFromDataBase;
                            attendanceInAndOutRecord.OperateTime   = DateTime.Now;
                            EmployeeList[i].EmployeeAttendance.AttendanceInAndOutRecordList.Add(attendanceInAndOutRecord);
                        }
                    }
                }
            }
        }
        protected override void Validation()
        {
            AttendanceInAndOutRecord temp = _Employee.EmployeeAttendance.FindInAndOutRecordByRecordId(_RecordId);

            if (temp == null)
            {
                BllUtility.ThrowException(BllExceptionConst._AttendanceInAndOut_Not_Exist);
            }
        }
예제 #5
0
 /// <summary>
 /// 查找这次读取的考勤记录,范围为一天
 /// </summary>
 private bool FindNewAttendanceInAndOutRecord(AttendanceInAndOutRecord attendanceInAndOutRecord)
 {
     if ((DateTime.Compare(attendanceInAndOutRecord.IOTime,
                           new DateTime(_TheDate.Year, _TheDate.Month, _TheDate.Day, 0, 0, 0))) >= 0 &&
         (DateTime.Compare(attendanceInAndOutRecord.IOTime,
                           new DateTime(_TheDate.Year, _TheDate.Month, _TheDate.Day, 23, 59, 59))) <= 0)
     {
         return(true);
     }
     return(false);
 }
 /// <summary>
 ///
 /// </summary>
 public InsertAttendanceInOutRecord(int employeeId, AttendanceInAndOutRecord record,
                                    AttendanceInAndOutRecordLog attendanceInAndOutRecordLog, Account loginUser)
 {
     _LoginUser = loginUser;
     //updateEmployeeAttendance = new UpdateEmployeeAttendance(_LoginUser);
     _AttendanceInAndOutRecordLog = attendanceInAndOutRecordLog;
     _InsertLog  = new InsertInAndOutRecordLog(_AttendanceInAndOutRecordLog, _LoginUser);
     _EmployeeId = employeeId;
     _Record     = record;
     _TheDate    = record.IOTime;
     GetInAndOutRecords();
 }
예제 #7
0
 /// <summary>
 ///
 /// </summary>
 public UpdateAttendanceInOutRecord(int employeeId, AttendanceInAndOutRecord record,
                                    DateTime oldDate, AttendanceInAndOutRecordLog log, Account loginUser)
 {
     _LoginUser = loginUser;
     //updateEmployeeAttendance = new UpdateEmployeeAttendance(loginUser);
     _OldDate = oldDate;
     _AttendanceInAndOutRecordLog = log;
     _InsertLog  = new InsertInAndOutRecordLog(_AttendanceInAndOutRecordLog, loginUser);
     _EmployeeId = employeeId;
     _Record     = record;
     _TheDate    = _Record.IOTime;
     GetInAndOutRecords();
 }
예제 #8
0
 /// <summary>
 /// 测试用
 /// </summary>
 public UpdateAttendanceInOutRecord(int employeeId, AttendanceInAndOutRecord record,
                                    DateTime oldDate, IAttendanceInAndOutRecord mock, Transaction logmock,
                                    //UpdateEmployeeAttendance mockUpdateEmployeeAttendance,
                                    Account loginUser)
 {
     _LoginUser = loginUser;
     //updateEmployeeAttendance = mockUpdateEmployeeAttendance;
     _OldDate    = oldDate;
     _EmployeeId = employeeId;
     _Record     = record;
     _TheDate    = _Record.IOTime;
     _IRecord    = mock;
     _InsertLog  = logmock;
     GetInAndOutRecordsForTest();
 }
예제 #9
0
        public void SendEmailForEmployees()
        {
            try
            {
                string[] temp         = _IShowCalendarDetail.EmployeeInfo.Split(';');
                string   employeeName = temp[1];
                string   status       = "";
                if (temp.Length > 2)
                {
                    status = temp[3];
                }
                int.TryParse(temp[0], out _EmployeeID);
                List <string>             cc            = new List <string>();
                IBll.Accounts.IAccountBll _IGetEmployee = BllInstance.AccountBllInstance;
                Account account = _IGetEmployee.GetAccountById(_EmployeeID);
                if (account == null)
                {
                    return;
                }
                List <string> to = new List <string>();
                to.Add(account.Email1);
                if (!string.IsNullOrEmpty(account.Email2))
                {
                    to.Add(account.Email2);
                }
                if (!DateTime.TryParse(_IShowCalendarDetail.Date, out _Date))
                {
                    _IShowCalendarDetail.ResultMessage = "请选择一个日期!";
                    return;
                }
                List <AttendanceInAndOutRecord> _AttendanceInAndOutRecordList = _IAttendanceInOutRecordFacade.GetSelfAttendanceInAndOutRecordByCondition(_EmployeeID, _Date,
                                                                                                                                                         _Date.AddDays(1).AddMinutes(-1));
                DateTime e       = AttendanceInAndOutRecord.FindEarlistTime(_AttendanceInAndOutRecordList);
                DateTime l       = AttendanceInAndOutRecord.FindLatestTime(_AttendanceInAndOutRecordList);
                string   inTime  = e == Convert.ToDateTime("2999-12-31") ? "无" : e.ToString();
                string   outTime = l == Convert.ToDateTime("1900-1-1") ? "无" : l.ToString();

                IAttendanceReadDataFacade _IAttendanceReadDataFacade = new AttendanceReadDataFacade();
                _IAttendanceReadDataFacade.AttendanceSendEmailToEmployee(employeeName, inTime, outTime, status,
                                                                         new DateTime(_Date.Year, _Date.Month, _Date.Day, 0, 0, 0).ToString(), new DateTime(_Date.Year, _Date.Month, _Date.Day, 23, 59, 59).ToString(), to, cc, _LoginUser);

                _IShowCalendarDetail.ResultMessage = "邮件已发送";
            }
            catch (Exception ex)
            {
                _IShowCalendarDetail.ResultMessage = ex.Message;
            }
        }
        /// <summary>
        /// 收集日志数据
        /// </summary>
        /// <param name="record"></param>
        /// <returns></returns>
        private AttendanceInAndOutRecordLog CompleteLogData(AttendanceInAndOutRecord record)
        {
            AttendanceInAndOutRecordLog log = new AttendanceInAndOutRecordLog();

            log.EmployeeID    = Convert.ToInt32(_View.EmployeeId);
            log.EmployeeName  = _View.EmployeeName;
            log.OldIOStatus   = InOutStatusEnum.All;
            log.OldIOTime     = Convert.ToDateTime("2000-12-31 0:00:00");
            log.NewIOStatus   = record.IOStatus;
            log.NewIOTime     = record.IOTime;
            log.OperateReason = _View.Reason;
            log.OperateTime   = record.OperateTime;
            log.OperateStatus = record.OperateStatus;
            log.Operator      = LoginUser.Name;
            return(log);
        }
        /// <summary>
        /// 收集日志数据
        /// </summary>
        /// <returns></returns>
        private AttendanceInAndOutRecordLog CompleteLogData()
        {
            AttendanceInAndOutRecordLog log = new AttendanceInAndOutRecordLog();

            log.EmployeeID    = Convert.ToInt32(_View.EmployeeId);
            log.EmployeeName  = _View.EmployeeName;
            log.OldIOStatus   = AttendanceInAndOutRecord.GetInOutStatusByInOutName(_View.IOStatusId);
            log.OldIOTime     = Convert.ToDateTime(_View.IOTime);
            log.OperateReason = _View.Reason;
            log.OperateTime   = DateTime.Now;
            log.OperateStatus = OutInRecordOperateStatusEnum.DeleteByOperator;
            log.Operator      = LoginUser.Name;
            log.NewIOStatus   = InOutStatusEnum.All;
            log.NewIOTime     = Convert.ToDateTime("2999-12-31");
            return(log);
        }
예제 #12
0
 public void DataBind()
 {
     _View.ErrorMessage = string.Empty;
     if (ValidateEmployeeId() && ValidateTimeFrom() && ValidateTimeTo() && ValidateOperateTimeFrom() && ValidateOperateTimeTo())
     {
         _View.InAndOutRecords =
             InstanceFactory.AttendanceInOutRecordFacade().GetEmployeeInAndOutRecordByCondition(
                 Convert.ToInt32(_View.EmployeeId),
                 _View.EmployeeName, -1, string.Empty,
                 _SearchFrom, _SearchTo,
                 AttendanceInAndOutRecord.GetInOutStatusByInOutName(
                     _View.IOStatusId),
                 AttendanceInAndOutRecord.GetOutInRecordOperateStatus
                     (_View.OperateStatusId), _OperatTimeFrom, _OperatTimeTo, _LoginUser);
     }
 }
 /// <summary>
 /// 测试用
 /// </summary>
 public InsertAttendanceInOutRecord(int employeeId, AttendanceInAndOutRecord record,
                                    AttendanceInAndOutRecordLog attendanceInAndOutRecordLog, IAttendanceInAndOutRecord mock, Transaction mockLog,
                                    //UpdateEmployeeAttendance mockUpdateEmployeeAttendance,
                                    Employee employee, Account loginUser)
 {
     _LoginUser = loginUser;
     //updateEmployeeAttendance = mockUpdateEmployeeAttendance;
     _AttendanceInAndOutRecordLog = attendanceInAndOutRecordLog;
     _InsertLog  = mockLog;
     _EmployeeId = employeeId;
     _Record     = record;
     _IRecord    = mock;
     _TheDate    = record.IOTime;
     //_DalEmployee = mockEmployee;
     //GetInAndOutRecords();
     _Employee = employee;
 }
예제 #14
0
        private static List <UnKownTimeSpan> CaculateAbsentTimes(DateTime theday, PlanDutyDetail thedayPlanDutyDetail,
                                                                 List <OutApplication> outApplicationList, List <LeaveRequest> leaveRequestList,
                                                                 List <AttendanceInAndOutRecord> attendanceInAndOutRecordList)
        {
            List <UnKownTimeSpan> uktsList = new List <UnKownTimeSpan>();

            uktsList.Add(
                new UnKownTimeSpan(
                    new DateTime(theday.Year, theday.Month, theday.Day,
                                 thedayPlanDutyDetail.PlanDutyClass.FirstStartFromTime.Hour,
                                 thedayPlanDutyDetail.PlanDutyClass.FirstStartFromTime.Minute,
                                 thedayPlanDutyDetail.PlanDutyClass.FirstStartFromTime.Second),
                    new DateTime(theday.Year, theday.Month, theday.Day,
                                 thedayPlanDutyDetail.PlanDutyClass.FirstEndTime.Hour,
                                 thedayPlanDutyDetail.PlanDutyClass.FirstEndTime.Minute,
                                 thedayPlanDutyDetail.PlanDutyClass.FirstEndTime.Second)));
            uktsList.Add(
                new UnKownTimeSpan(
                    new DateTime(theday.Year, theday.Month, theday.Day,
                                 thedayPlanDutyDetail.PlanDutyClass.SecondStartTime.Hour,
                                 thedayPlanDutyDetail.PlanDutyClass.SecondStartTime.Minute,
                                 thedayPlanDutyDetail.PlanDutyClass.SecondStartTime.Second),
                    new DateTime(theday.Year, theday.Month, theday.Day,
                                 thedayPlanDutyDetail.PlanDutyClass.SecondEndTime.Hour,
                                 thedayPlanDutyDetail.PlanDutyClass.SecondEndTime.Minute,
                                 thedayPlanDutyDetail.PlanDutyClass.SecondEndTime.Second)));
            foreach (LeaveRequest leaveRequest in leaveRequestList)
            {
                foreach (LeaveRequestItem leaveRequestItem in leaveRequest.LeaveRequestItems)
                {
                    UpdateAbsentTimesForKownTimeSpan(uktsList, leaveRequestItem.FromDate, leaveRequestItem.ToDate);
                }
            }
            foreach (OutApplication outApplication in outApplicationList)
            {
                foreach (OutApplicationItem outApplicationItem in outApplication.Item)
                {
                    UpdateAbsentTimesForKownTimeSpan(uktsList, outApplicationItem.FromDate, outApplicationItem.ToDate);
                }
            }
            UpdateAbsentTimesForKownTimeSpan(uktsList,
                                             AttendanceInAndOutRecord.FindEarlistTime(attendanceInAndOutRecordList),
                                             AttendanceInAndOutRecord.FindLatestTime(attendanceInAndOutRecordList));
            return(uktsList);
        }
        public void UpdateEvent()
        {
            if (!_Utility.Validate())
            {
                return;
            }
            Employee employee = InstanceFactory.AttendanceInOutRecordFacade().GetEmployeeInAndOutRecordByEmployeeId(Convert.ToInt32(_View.EmployeeId), LoginUser);
            AttendanceInAndOutRecord oldRecord = employee.EmployeeAttendance.FindInAndOutRecordByRecordId(Convert.ToInt32(_View.RecordId));

            #region 收集log 中考勤的旧数据
            AttendanceInAndOutRecordLog log = new AttendanceInAndOutRecordLog();
            log.EmployeeID   = Convert.ToInt32(_View.EmployeeId);
            log.EmployeeName = _View.EmployeeName;
            log.OldIOStatus  = oldRecord.IOStatus;
            log.OldIOTime    = oldRecord.IOTime;
            DateTime oldDate = oldRecord.IOTime;
            log.OperateReason = _View.Reason;
            log.Operator      = LoginUser.Name;
            #endregion
            //转为新数据
            _Utility.CompleteTheObject(oldRecord);
            oldRecord.OperateStatus = OutInRecordOperateStatusEnum.ModifyByOperator;
            //插入日志 ,收集考勤中新数据
            log.NewIOStatus   = oldRecord.IOStatus;
            log.NewIOTime     = oldRecord.IOTime;
            log.OperateStatus = oldRecord.OperateStatus;
            log.OperateTime   = oldRecord.OperateTime;



            try
            {
                InstanceFactory.AttendanceInOutRecordFacade().UpdateAttendanceInOutRecord(
                    Convert.ToInt32(_View.EmployeeId), oldRecord, oldDate, log, LoginUser);

                _View.ActionSuccess = true;
            }
            catch (ApplicationException ae)
            {
                _View.Message = ae.Message;
            }
        }
        public void AddEvent()
        {
            if (!_Utility.Validate())
            {
                return;
            }
            AttendanceInAndOutRecord record = new AttendanceInAndOutRecord();

            _Utility.CompleteTheObject(record);
            record.OperateStatus = OutInRecordOperateStatusEnum.AddByOperator;
            try
            {
                InstanceFactory.AttendanceInOutRecordFacade().InsertAttendanceInOutRecord(
                    Convert.ToInt32(_View.EmployeeId), record, CompleteLogData(record), LoginUser);
                _View.ActionSuccess = true;
            }
            catch (ApplicationException ae)
            {
                _View.Message = ae.Message;
            }
        }
        public List <AttendanceInAndOutRecord> GetAttendanceInAndOutRecordByCondition(int employeeID, string doorCardNo,
                                                                                      DateTime iOTimeFrom,
                                                                                      DateTime iOTimeTo,
                                                                                      InOutStatusEnum iOStatus,
                                                                                      OutInRecordOperateStatusEnum
                                                                                      operateStatus,
                                                                                      DateTime operateTimeFrom,
                                                                                      DateTime operateTimeTo)
        {
            List <AttendanceInAndOutRecord> records = new List <AttendanceInAndOutRecord>();
            SqlCommand sqlCommmand = new SqlCommand();

            sqlCommmand.Parameters.Add(_EmployeeId, SqlDbType.Int).Value            = employeeID;
            sqlCommmand.Parameters.Add(_IOTimeStart, SqlDbType.DateTime).Value      = iOTimeFrom;
            sqlCommmand.Parameters.Add(_IOTimeEnd, SqlDbType.DateTime).Value        = iOTimeTo;
            sqlCommmand.Parameters.Add(_IOStatus, SqlDbType.Int).Value              = iOStatus;
            sqlCommmand.Parameters.Add(_OperateStatus, SqlDbType.Int).Value         = operateStatus;
            sqlCommmand.Parameters.Add(_OperateTimeStart, SqlDbType.DateTime).Value = operateTimeFrom;
            sqlCommmand.Parameters.Add(_OperateTimeEnd, SqlDbType.DateTime).Value   = operateTimeTo;
            sqlCommmand.Parameters.Add(_DoorCardNo, SqlDbType.NVarChar, 50).Value   = doorCardNo;

            using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetEmployeeInAndOutByCondition", sqlCommmand))
            {
                while (sdr.Read())
                {
                    AttendanceInAndOutRecord record = new AttendanceInAndOutRecord();
                    record.RecordID      = (Int32)sdr[_DBRecordID];
                    record.EmployeeId    = (Int32)sdr[_DBEmployeeId];
                    record.DoorCardNo    = sdr[_DBDoorCardNo].ToString();
                    record.IOStatus      = (InOutStatusEnum)sdr[_DBIOStatus];
                    record.IOTime        = Convert.ToDateTime(sdr[_DBIOTime]);
                    record.OperateStatus = (OutInRecordOperateStatusEnum)sdr[_DBOperateStatus];
                    record.OperateTime   = Convert.ToDateTime(sdr[_DBOperateTime]);
                    records.Add(record);
                }
            }
            return(records);
        }
        private static int InsertAttendanceInAndOutRecord(Employee employee, AttendanceInAndOutRecord record)
        {
            int        pkid;
            SqlCommand cmd = new SqlCommand();

            cmd.Parameters.Add(_PKID, SqlDbType.Int).Direction    = ParameterDirection.Output;
            cmd.Parameters.Add(_EmployeeId, SqlDbType.Int).Value  = employee.Account.Id;
            cmd.Parameters.Add(_IOTime, SqlDbType.DateTime).Value = record.IOTime;
            cmd.Parameters.Add(_IOStatus, SqlDbType.Int).Value    = record.IOStatus;
            if (string.IsNullOrEmpty(employee.EmployeeAttendance.DoorCardNo))
            {
                cmd.Parameters.Add(_DoorCardNo, SqlDbType.NVarChar, 50).Value = record.DoorCardNo;
            }
            else
            {
                cmd.Parameters.Add(_DoorCardNo, SqlDbType.NVarChar, 50).Value = employee.EmployeeAttendance.DoorCardNo;
            }
            cmd.Parameters.Add(_OperateStatus, SqlDbType.Int).Value    = record.OperateStatus;
            cmd.Parameters.Add(_OperateTime, SqlDbType.DateTime).Value = record.OperateTime;

            SqlHelper.ExecuteNonQueryReturnPKID("InsertEmployeeInAndOutRecord", cmd, out pkid);
            return(pkid);
        }
 public void UpdateAttendanceInOutRecord(int employeeId, AttendanceInAndOutRecord record,
                                         DateTime oldDate, AttendanceInAndOutRecordLog log, Account loginUser)
 {
     new UpdateAttendanceInOutRecord(employeeId, record, oldDate, log, loginUser).Excute();
 }
 public void DataBind()
 {
     if (ValidateTimeFrom() && ValidateTimeTo() && ValidateOperateTimeFrom() && ValidateOperateTimeTo())
     {
         _View.InAndOutRecords =
             InstanceFactory.AttendanceInOutRecordFacade().GetEmployeeInAndOutRecordByCondition(-1,
                                                                                                _View.EmployeeName,
                                                                                                _View.Department,
                                                                                                string.Empty,
                                                                                                _SearchFrom,
                                                                                                _SearchTo,
                                                                                                AttendanceInAndOutRecord
                                                                                                .
                                                                                                GetInOutStatusByInOutName
                                                                                                (
                                                                                                    _View.
                                                                                                    IOStatusId),
                                                                                                AttendanceInAndOutRecord
                                                                                                .
                                                                                                GetOutInRecordOperateStatus
                                                                                                    (_View.
                                                                                                    OperateStatusId),
                                                                                                _OperatTimeFrom,
                                                                                                _OperatTimeTo, _LoginUser);
     }
 }
예제 #21
0
        private int ImportDate(DataTable dt)
        {
            List <Employee> employeeList = new List <Employee>();
            DateTime        dt_Now       = DateTime.Now;

            //Employee employee
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                _Name = GetItem(dt, i, _NameColumn);
                if (string.IsNullOrEmpty(_Name))
                {
                    continue;
                }
                Employee employee = employeeList.Find(FindEmployee);
                if (employee == null)
                {
                    Account account = _IAccountBll.GetAccountByName(_Name);
                    //如果系统里没有该员工或者该员工在系统中没有门禁卡卡号
                    if (account == null)
                    {
                        continue;
                    }
                    employee = getEmployee.GetEmployeeAttendenceInfoByAccountID(account.Id);
                    if (employee == null)
                    {
                        continue;
                    }
                    if (string.IsNullOrEmpty(employee.EmployeeAttendance.DoorCardNo))
                    {
                        continue;
                    }
                    employee.EmployeeAttendance.AttendanceInAndOutRecordList = new List <AttendanceInAndOutRecord>();
                    employeeList.Add(employee);
                }
                AttendanceInAndOutRecord attendanceInAndOutRecord = new AttendanceInAndOutRecord();
                attendanceInAndOutRecord.IOStatus = GetInOutStatusByInOutName(GetItem(dt, i, _InOutColumn));
                try
                {
                    var      date = Convert.ToDateTime(GetItem(dt, i, _DateColumn));
                    DateTime time;
                    if (DateTime.TryParse(GetItem(dt, i, _TimeColumn), out time))
                    {
                        attendanceInAndOutRecord.IOTime = new DateTime(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second);
                    }
                    else
                    {
                        attendanceInAndOutRecord.IOTime = Convert.ToDateTime(date.ToString("yyyy-MM-dd") + " " + GetItem(dt, i, _TimeColumn));
                    }
                }
                catch
                {
                    continue;
                }
                attendanceInAndOutRecord.OperateStatus = OutInRecordOperateStatusEnum.ImportByOperator;
                attendanceInAndOutRecord.OperateTime   = dt_Now;
                //判断读取中是否有重复记录 add by liudan 2009-09-19
                List <AttendanceInAndOutRecord> sqlRecords =
                    attendanceInAndOutRecordDal.GetAttendanceInAndOutRecordByCondition(employee.Account.Id,
                                                                                       employee.EmployeeAttendance.
                                                                                       DoorCardNo,
                                                                                       Convert.ToDateTime("1900-12-31"),
                                                                                       Convert.ToDateTime("2999-12-31"),
                                                                                       InOutStatusEnum.All,
                                                                                       OutInRecordOperateStatusEnum.All,
                                                                                       Convert.ToDateTime("1900-12-31"),
                                                                                       Convert.ToDateTime("2999-12-31"));
                bool isFind = false;
                foreach (AttendanceInAndOutRecord records in sqlRecords)
                {
                    if (attendanceInAndOutRecord.IOStatus.Equals(records.IOStatus) &&
                        attendanceInAndOutRecord.IOTime.Equals(records.IOTime))
                    {
                        isFind = true;
                    }
                }
                if (!isFind)
                {
                    employee.EmployeeAttendance.AttendanceInAndOutRecordList.Add(attendanceInAndOutRecord);
                    count = count + 1;
                }
            }
            attendanceInAndOutRecordDal.InsertAttendanceInAndOutRecordList(employeeList);
            return(employeeList.Count);
        }
 public void InsertAttendanceInOutRecord(int employeeId, AttendanceInAndOutRecord record,
                                         AttendanceInAndOutRecordLog attendanceInAndOutRecordLog, Account loginUser)
 {
     new InsertAttendanceInOutRecord(employeeId, record, attendanceInAndOutRecordLog, loginUser).Excute();
 }