/// <summary> /// 为leaveRequestItemList在最后一行添加空的item项,AccountSetParaID为-1 /// </summary> /// <param name="leaveRequestItemList"></param> /// <returns></returns> public static List <LeaveRequestItem> AddNullItem(List <LeaveRequestItem> leaveRequestItemList) { LeaveRequestItem item = new LeaveRequestItem(-1, DateTime.Now, DateTime.Now, 0, RequestStatus.New); leaveRequestItemList.Add(item); return(leaveRequestItemList); }
/// <summary> /// 计算要扣除的小时数 /// </summary> /// <param name="item"></param> private void InitCostHour(LeaveRequestItem item) { if (_LastVacation != null) { if (_SecondLastVacation != null) { foreach (DayAttendance attendance in _DayAttendanceList) { if (attendance.Date.Date <= _SecondLastVacation.VacationEndDate.Date) { _SecondDeleteHour += attendance.Hours; } else { _LastDeleteHour += attendance.Hours; } } if (_SecondLastVacation.SurplusDayNum * 8 < _SecondDeleteHour) { _LastDeleteHour += _SecondDeleteHour - _SecondLastVacation.SurplusDayNum * 8; _SecondDeleteHour = _SecondLastVacation.SurplusDayNum * 8; } } else { _LastDeleteHour += item.CostTime; } } }
private void InitVacation(LeaveRequestItem item) { _SecondDeleteHour = 0; _LastDeleteHour = 0; _LastVacation = null; _SecondLastVacation = null; List <Vacation> vacationList = new List <Vacation>(); foreach (Vacation vacation in _VacationList) { if (vacation.VacationStartDate <= item.ToDate && vacation.SurplusDayNum > 0) { vacationList.Add(vacation); } } if (vacationList.Count > 0) { vacationList = vacationList.OrderByDescending(x => x.VacationEndDate).ToList(); _LastVacation = vacationList[0]; if (vacationList.Count > 1) { _SecondLastVacation = vacationList[1]; } } }
/// <summary> /// 通过帐号ID查找相关的帐套项 /// </summary> /// <param name="leaveRequestID"></param> /// <param name="diyProcess"></param> /// <returns></returns> private static List <LeaveRequestItem> GetLeaveRequestItemByLeaveRequestID(int leaveRequestID, DiyProcess diyProcess) { List <LeaveRequestItem> leaveRequestItemList = new List <LeaveRequestItem>(); SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(_ParmLeaveRequestID, SqlDbType.Int).Value = leaveRequestID; using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetLeaveRequestItemByLeaveRequestID", cmd)) { while (sdr.Read()) { LeaveRequestItem leaveRequestItem = new LeaveRequestItem((int)sdr[_DBPKID], Convert.ToDateTime(sdr[_DBFromDate]), Convert.ToDateTime(sdr[_DBToDate]), Convert.ToDecimal(sdr[_DBAbsentHours]), RequestStatus.FindRequestStatus((int)sdr[_DBLeaveRequestStatus])); leaveRequestItem.UseList = sdr[_DBUseList].ToString(); if (diyProcess != null) { leaveRequestItem.CurrentStep = diyProcess.FindStep((int)sdr[_DBNextProcessID]); } leaveRequestItemList.Add(leaveRequestItem); } } return(leaveRequestItemList); }
/// <summary> /// /// </summary> protected override void Validation() { _LeaveRequest = _DalLeaveRequest.GetLeaveRequestByPKID(_LeaveRequestID); //判断请假信息是否为空 if (_LeaveRequest == null) { HrmisUtility.ThrowException(HrmisUtility._LeaveRequest_Not_Exist); } //判断该账号是否有请假流程 _LeaveRequest.DiyProcess = _DalEmployeeDiyProcess.GetDiyProcessByProcessTypeAndAccountID(ProcessType.LeaveRequest, _LeaveRequest.Account.Id); if (_LeaveRequest.DiyProcess == null) { HrmisUtility.ThrowException(HrmisUtility._No_LeaveRequest_DiyProcess); } _LeaveRequestItem = _DalLeaveRequest.GetLeaveRequestItemByPKID(_LeaveRequestItemID); if (_LeaveRequestItem == null) { HrmisUtility.ThrowException(HrmisUtility._LeaveRequest_Not_Exist); } //如果请假信息状态不是取消或提交状态,不能取消 if (!RequestStatus.CanCancelStatus(_LeaveRequestItem.Status)) { HrmisUtility.ThrowException(HrmisUtility._LeaveRequest_Partial_CanNot_BeCancled); } }
/// <summary> /// /// </summary> /// <param name="leaveRequestID"></param> /// <param name="item"></param> /// <param name="nextStep"></param> public LeaveRequestCancelPhone(int leaveRequestID, LeaveRequestItem item, DiyStep nextStep) { _LeaveRequest = _DalLeaveRequest.GetLeaveRequestByPKID(leaveRequestID); _LeaveRequest.Account = _AccountBll.GetAccountById(_LeaveRequest.Account.Id); _LeaveRequestItem = item; _NextStep = nextStep; }
/// <summary> /// /// </summary> public LeaveRequestOverPhone(int leaveRequestID, LeaveRequestItem item, int nowAccountID) { _LeaveRequest = _DalLeaveRequest.GetLeaveRequestByPKID(leaveRequestID); _LeaveRequest.Account = _AccountBll.GetAccountById(_LeaveRequest.Account.Id); _LeaveRequestItem = _DalLeaveRequest.GetLeaveRequestItemByPKID(item.LeaveRequestItemID); _NowAccount = nowAccountID; }
/// <summary> /// for test /// </summary> public RestoreAdjustRestByLeaveRequest(LeaveRequestItem item, int accountid, int leaveRequestID, IAdjustRest mockIAdjustRest, IAdjustRestHistory mockIAdjustRestHistory) : this(item, accountid, leaveRequestID) { _IAdjustRest = mockIAdjustRest; _IAdjustRestHistory = mockIAdjustRestHistory; }
private void UpdateAdjustHour(LeaveRequestItem item) { //批量计算调休信息,并修改剩余调休和追加日志 if (_LeaveRequest.LeaveRequestType.LeaveRequestTypeID == (int)LeaveRequestTypeEnum.AdjustRest) { new UpdateAdjustRestByLeaveRequest(item, _LeaveRequest.Account.Id, _LeaveRequest.PKID).Excute(); } }
/// <summary> /// /// </summary> public int UpdateLeaveRequestItemUseDetail(LeaveRequestItem item) { SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(_ParmLeaveRequestItemID, SqlDbType.Int).Value = item.LeaveRequestItemID; cmd.Parameters.Add(_ParmUseList, SqlDbType.NVarChar, 200).Value = item.UseList; return(SqlHelper.ExecuteNonQuery("UpdateLeaveRequestItemUseDetail", cmd)); }
/// <summary> /// /// </summary> private string BuildBody(LeaveRequestItem item) { StringBuilder Content = new StringBuilder(); Content.AppendFormat("请审批{0}提交的请假申请,从{2}到{3},请{1},共{4}小时,理由:{5}", _LeaveRequest.Account.Name, _LeaveRequest.LeaveRequestType.Name, item.FromDate, item.ToDate, item.CostTime, _LeaveRequest.Reason); return(Content.ToString()); }
/// <summary> /// 准备流程所需的插入数据 /// </summary> /// <returns></returns> private LeaveRequestFlow PrepareLeaveRequestFlow(LeaveRequestItem item) { LeaveRequestFlow leaveRequestFlow = new LeaveRequestFlow(); leaveRequestFlow.LeaveRequestStatus = item.Status; leaveRequestFlow.Account = _LeaveRequest.Account; leaveRequestFlow.LeaveRequestItem = item; leaveRequestFlow.OperationTime = _LeaveRequest.SubmitDate; leaveRequestFlow.Remark = _LeaveRequest.Reason; return(leaveRequestFlow); }
private void AddItemFlowForAutoCancel(LeaveRequestItem item) { LeaveRequestFlow leaveRequestFlow = new LeaveRequestFlow(); leaveRequestFlow.LeaveRequestItem = item; leaveRequestFlow.LeaveRequestStatus = item.Status; leaveRequestFlow.Account = _OldLeaveRequest.Account; leaveRequestFlow.OperationTime = DateTime.Now; leaveRequestFlow.Remark = _OldLeaveRequest.Account.Name + "已经重新编辑请假单" + _OldLeaveRequest.PKID + ",系统自动批准取消,并退回年假调休记录。"; _DalLeaveRequestFlow.InsertLeaveRequestFlow(leaveRequestFlow); }
/// <summary> /// 给下一步操作人发邮件 /// </summary> public void SendPhoneToNextOperator(int nextOperator, LeaveRequestItem item, int nowAccount) { ConfirmMessage confirmmessage = new ConfirmMessage(); confirmmessage.FinishPhoneMessageOperationByAssessorID( new PhoneMessageType(PhoneMessageEnumType.LeaveRequest, item.LeaveRequestItemID), nowAccount); Account phoneToAccount = _AccountBll.GetAccountById(nextOperator); confirmmessage.SendConfirmMessage(phoneToAccount, new PhoneMessageType(PhoneMessageEnumType.LeaveRequest, item.LeaveRequestItemID)); }
/// <summary> /// /// </summary> /// <param name="item"></param> private void UpdateVacationDaysAvailable(LeaveRequestItem item) { if (_LeaveRequest.LeaveRequestType.LeaveRequestTypeID == (int)LeaveRequestTypeEnum.AnnualLeave) { if (!IsAgreed(item) && _RequestStatus.Id == RequestStatus.ApproveCancelFail.Id) { List <LeaveRequestItem> leaveRequestItems = new List <LeaveRequestItem>(); leaveRequestItems.Add(item); new DeleteVacationByLeaveReuqest(_LeaveRequest.Account.Id, leaveRequestItems, _LeaveRequest.LeaveRequestType); } } }
protected override void ExcuteSelf() { RequestStatus status; LeaveRequestItem item = _DalLeaveRequest.GetLeaveRequestItemByPKID(PhoneMessage.PhoneMessageType.PKID); RequestStatus s = item.Status; if (Operation) { switch (s.Id) { case 1: case 7: status = RequestStatus.ApprovePass; break; case 4: case 8: status = RequestStatus.ApproveCancelPass; break; default: status = RequestStatus.ApprovePass; break; } //status = RequestStatus.ApprovePass; } else { switch (s.Id) { case 1: case 7: status = RequestStatus.ApproveFail; break; case 4: case 8: status = RequestStatus.ApproveCancelFail; break; default: status = RequestStatus.ApproveFail; break; } //status = RequestStatus.ApproveFail; } int leaverequestID = item.LeaveRequestID; ApproveLeaveRequestItem approveWholeLeaveRequest = new ApproveLeaveRequestItem(leaverequestID, PhoneMessage.PhoneMessageType.PKID, _PhoneMessage.Assessor.Id, status, Remark); approveWholeLeaveRequest.Excute(); }
/// <summary> /// 用于判断是否该请假被审核同意过 /// </summary> /// <returns></returns> private bool IsAgreed(LeaveRequestItem item) { List <LeaveRequestFlow> leaveRequestFlows = _DalLeaveRequestFlow.GetLeaveRequestFlowByLeaveRequestItemID(item.LeaveRequestItemID); foreach (LeaveRequestFlow leaveRequestFlow in leaveRequestFlows) { if (leaveRequestFlow.LeaveRequestStatus.Id == RequestStatus.ApprovePass.Id) { return(true); } } return(false); }
private void InitDayAttandanceList(LeaveRequestItem item) { //当测试时,不调用这个方法 if (_IsTest) { return; } _DayAttendanceList = new List <DayAttendance>(); CalculateCostHour cal = new CalculateCostHour(item.FromDate, item.ToDate, _AccountID, _Type.LeaveRequestTypeID); cal.Excute(); _DayAttendanceList.AddRange(cal.DayAttendanceList); }
/// <summary> /// 审核 /// </summary> public void ConfirmOperation(LeaveRequest leaveRequest, LeaveRequestItem item, List <Account> hrAccount, int currentAccountID, DiyStep currentStep, DiyStep nextStep) { Account mailToAccount = new MailAndPhoneUtility().GetMailToAccount(leaveRequest, nextStep); if (nextStep.DiyStepID == 0 || nextStep.Status == "取消") { _LeaveRequestPhone.SendConfirmOverPhone(leaveRequest.PKID, item, currentStep, currentAccountID); } else if (mailToAccount != null) { _LeaveRequestPhone.SendPhoneToNextOperator(leaveRequest.PKID, item, mailToAccount.Id, currentAccountID); } }
/// <summary> /// 新增请假项 /// </summary> /// <param name="leaveRequestID"></param> /// <param name="item"></param> /// <param name="nextProcessID"></param> /// <param name="conn"></param> /// <param name="trans"></param> private static void InsertLeaveRequestItem(int leaveRequestID, LeaveRequestItem item, int nextProcessID, SqlConnection conn, SqlTransaction trans) { int pkid; SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(_ParmLeaveRequestID, SqlDbType.Int).Value = leaveRequestID; cmd.Parameters.Add(_ParmFromDate, SqlDbType.DateTime).Value = item.FromDate; cmd.Parameters.Add(_ParmToDate, SqlDbType.DateTime).Value = item.ToDate; cmd.Parameters.Add(_ParmAbsentHours, SqlDbType.Decimal).Value = item.CostTime; cmd.Parameters.Add(_ParmLeaveRequestStatus, SqlDbType.Int).Value = item.Status.Id; cmd.Parameters.Add(_ParmNextProcessID, SqlDbType.Int).Value = nextProcessID; cmd.Parameters.Add(_ParmPKID, SqlDbType.Int).Direction = ParameterDirection.Output; SqlHelper.TransExecuteNonQueryReturnPKID("InsertLeaveRequestItem", cmd, conn, trans, out pkid); }
private List <AdjustRest> InitDayAttendanceList(LeaveRequestItem item) { List <AdjustRest> adjustRestList = new List <AdjustRest>(); CalculateCostHour cal = new CalculateCostHour(item.FromDate, item.ToDate, _AccountID, Convert.ToInt32(LeaveRequestTypeEnum.AdjustRest)); cal.Excute(); foreach (DayAttendance attendance in cal.DayAttendanceList) { AdjustRest ar = new AdjustRest(); ar.AdjustYear = attendance.Date; ar.SurplusHours = attendance.Hours; adjustRestList.Add(ar); } return(adjustRestList); }
/// <summary> /// 判断是否曾经审核通过的item /// </summary> /// <param name="item"></param> /// <returns></returns> private bool AdjustIfApprovePass(LeaveRequestItem item) { List <LeaveRequestFlow> LeaveRequestFlows = _DalLeaveRequestFlow.GetLeaveRequestFlowByLeaveRequestItemID(item.LeaveRequestItemID); bool ifApprovePass = false; foreach (LeaveRequestFlow flow in LeaveRequestFlows) { if (flow.LeaveRequestStatus.Id == RequestStatus.ApprovePass.Id) { ifApprovePass = true; break; } } return(ifApprovePass); }
/// <summary> /// 扣除,如果不够,则报错 /// </summary> private void DeleteVacationHour(Vacation vacation, decimal deletehour, LeaveRequestItem item) { if (vacation != null) { vacation.UsedDayNum += (deletehour / 8); vacation.SurplusDayNum -= (deletehour / 8); if (vacation.SurplusDayNum < 0) { HrmisUtility.ThrowException("剩余年假不足"); } else if (_IsUpdateVacation) { _VacationDal.Update(vacation); item.UseList = string.Format("{0},{1}/{2}", vacation.VacationID, deletehour, item.UseList); _LeaveRequestDal.UpdateLeaveRequestItemUseDetail(item); } } }
/// <summary> /// /// </summary> public List <LeaveRequestItem> GetVacationUsedDetailByAccountID(int accountID) { List <LeaveRequestItem> LeaveRequestItemList = new List <LeaveRequestItem>(); SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(_ParmAccountID, SqlDbType.Int).Value = accountID; using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetVacationUsedDetailByAccountID", cmd)) { while (sdr.Read()) { LeaveRequestItem item = new LeaveRequestItem((int)sdr[_DBPKID], Convert.ToDateTime(sdr[_DBFromDate]), Convert.ToDateTime(sdr[_DBToDate]), Convert.ToDecimal(sdr[_DBAbsentHours]), RequestStatus.FindRequestStatus((int)sdr[_DBLeaveRequestStatus])); item.Remark = sdr[_DBReason].ToString(); LeaveRequestItemList.Add(item); } } return(LeaveRequestItemList); }
/// <summary> /// 通过帐号ID查找相关的帐套项 /// </summary> /// <param name="leaveRequestItemID"></param> /// <returns></returns> public LeaveRequestItem GetLeaveRequestItemByPKID(int leaveRequestItemID) { SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(_ParmPKID, SqlDbType.Int).Value = leaveRequestItemID; using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetLeaveRequestItemByPKID", cmd)) { while (sdr.Read()) { LeaveRequestItem leaveRequestItem = new LeaveRequestItem((int)sdr[_DBPKID], Convert.ToDateTime(sdr[_DBFromDate]), Convert.ToDateTime(sdr[_DBToDate]), Convert.ToDecimal(sdr[_DBAbsentHours]), RequestStatus.FindRequestStatus((int)sdr[_DBLeaveRequestStatus])); leaveRequestItem.LeaveRequestID = (int)sdr[_DBLeaveRequestID]; return(leaveRequestItem); } } return(null); }
/// <summary> /// 通过帐号ID查找相关的帐套项 /// </summary> /// <param name="leaveRequestID"></param> /// <returns></returns> private static List <LeaveRequestItem> GetLeaveRequestItemByLeaveRequestIDForCalendar(int leaveRequestID) { List <LeaveRequestItem> leaveRequestItemList = new List <LeaveRequestItem>(); SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(_ParmLeaveRequestID, SqlDbType.Int).Value = leaveRequestID; using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetLeaveRequestItemByLeaveRequestIDForCalendar", cmd)) { while (sdr.Read()) { LeaveRequestItem leaveRequestItem = new LeaveRequestItem((int)sdr[_DBPKID], Convert.ToDateTime(sdr[_DBFromDate]), Convert.ToDateTime(sdr[_DBToDate]), Convert.ToDecimal(sdr[_DBAbsentHours]), RequestStatus.FindRequestStatus((int)sdr[_DBLeaveRequestStatus])); leaveRequestItemList.Add(leaveRequestItem); } } return(leaveRequestItemList); }
private List <LeaveRequestItem> GetGridViewValue() { List <LeaveRequestItem> iRet = new List <LeaveRequestItem>(); for (int i = 0; i < gvLeaveRequestItemList.Rows.Count; i++) { TextBox txtRemark = (TextBox)gvLeaveRequestItemList.Rows[i].FindControl("txtRemark"); CheckBox chbId = (CheckBox)gvLeaveRequestItemList.Rows[i].FindControl("chbId"); DropDownList ddlStatus = (DropDownList)gvLeaveRequestItemList.Rows[i].FindControl("ddlStatus"); if (chbId.Checked) { LeaveRequestItem item = new LeaveRequestItem(Convert.ToInt32(chbId.Text)); item.Remark = txtRemark.Text.Trim(); item.Status = new RequestStatus(Convert.ToInt32(ddlStatus.SelectedValue), ddlStatus.SelectedItem.Text); iRet.Add(item); } } return(iRet); }
/// <summary> /// /// </summary> /// <param name="accountID"></param> /// <param name="leaveRequestType"></param> /// <param name="requestStatus"></param> /// <returns></returns> public List <LeaveRequestItem> GetLeaveRequestItemByAccountIDAndRequestStatus(int accountID, LeaveRequestTypeEnum leaveRequestType, RequestStatus requestStatus) { List <LeaveRequestItem> leaveRequestItemList = new List <LeaveRequestItem>(); SqlCommand cmd = new SqlCommand(); cmd.Parameters.Add(_ParmAccountID, SqlDbType.Int).Value = accountID; cmd.Parameters.Add(_ParmLeaveRequestTypeID, SqlDbType.Int).Value = (int)leaveRequestType; cmd.Parameters.Add(_ParmLeaveRequestStatus, SqlDbType.Int).Value = requestStatus.Id; using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetLeaveRequestItemByAccountIDAndRequestStatus", cmd)) { while (sdr.Read()) { LeaveRequestItem leaveRequestItem = new LeaveRequestItem((int)sdr[_DBPKID], Convert.ToDateTime(sdr[_DBFromDate]), Convert.ToDateTime(sdr[_DBToDate]), Convert.ToDecimal(sdr[_DBAbsentHours]), RequestStatus.FindRequestStatus((int)sdr[_DBLeaveRequestStatus])); leaveRequestItemList.Add(leaveRequestItem); } } return(leaveRequestItemList); }
private void ChangeRequestStatus(LeaveRequestItem item) { //-1 全部;0 新增;1 提交;2 审核不通过;3 审核通过;4 取消请假; //5 拒绝取消假期;6 批准取消假期;7 审核中;8 取消审核中 switch (item.Status.Id) { case 1: case 7: if (_RequestStatus.Id == RequestStatus.ApproveCancelPass.Id) { _RequestStatus = RequestStatus.ApprovePass; } break; case 4: case 8: if (_RequestStatus.Id == RequestStatus.ApprovePass.Id) { _RequestStatus = RequestStatus.ApproveCancelPass; } break; } }
/// <summary> /// /// </summary> protected override void Validation() { _LeaveRequest = _DalLeaveRequest.GetLeaveRequestByPKID(_LeaveRequestID); //判断请假信息是否为空 if (_LeaveRequest == null) { HrmisUtility.ThrowException(HrmisUtility._LeaveRequest_Not_Exist); } //判断该账号是否有请假流程 _LeaveRequest.DiyProcess = _DalEmployeeDiyProcess.GetDiyProcessByProcessTypeAndAccountID(ProcessType.LeaveRequest, _LeaveRequest.Account.Id); if (_LeaveRequest.DiyProcess == null) { HrmisUtility.ThrowException(HrmisUtility._No_LeaveRequest_DiyProcess); } //如果请假信息状态不是提交或取消请假状态,不能审批 foreach (LeaveRequestItem item in _LeaveRequest.LeaveRequestItems) { if (item.LeaveRequestItemID == _LeaveRequestItemID) { _LeaveRequestItem = item; if (!RequestStatus.CanApproveStatus(item.Status)) { HrmisUtility.ThrowException(HrmisUtility._LeaveRequest_Partial_CanNot_BeApproved); } item.CurrentStep.OperatorID = new GetLeaveRequest().ChangeOperatorToEmployee(_LeaveRequest, item.CurrentStep); if (item.CurrentStep.OperatorID != _OperatorID) { HrmisUtility.ThrowException(HrmisUtility._No_Auth_To_Approve); } } } }