コード例 #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            int     AccountID     = Convert.ToInt32(SecurityUtil.DECDecrypt(Request.QueryString["accountId"]));
            Account account       = BllInstance.AccountBllInstance.GetAccountById(AccountID);
            int     PositionAppID = Convert.ToInt32(SecurityUtil.DECDecrypt(Request.QueryString["Id"]));

            bool allover           = false;
            PositionApplication pa = _Facade.GetPositionApplicationByPKID(PositionAppID);

            if (RequestStatus.CanApproveStatus(pa.Status))
            {
                RequestStatus rs = RequestStatus.ApprovePass;
                if (pa.Status.Id == RequestStatus.Cancelled.Id)
                {
                    rs = RequestStatus.ApproveCancelPass;
                }
                _Facade.ApprovePositionApplication(pa, AccountID, rs,
                                                   (account != null && account.Name != null ? account.Name : "") +
                                                   "邮件通过");
            }
            else
            {
                lblMessage.Text = "该申请已经审核完毕,无法再次审核";
            }
        }
コード例 #2
0
        private static void FetchChildren(IDataReader sdr, PositionApplication positionApplication)
        {
            sdr.NextResult();
            positionApplication.Position.Nature = new List <PositionNature>();
            while (sdr.Read())
            {
                PositionNature positionNature = new PositionNature();
                positionNature.Pkid = (int)sdr["PositionNatureID"];
                positionApplication.Position.Nature.Add(positionNature);
            }

            sdr.NextResult();
            positionApplication.Position.Departments = new List <Department>();
            while (sdr.Read())
            {
                positionApplication.Position.Departments.Add(new Department((int)sdr["DeptID"], ""));
            }

            sdr.NextResult();
            positionApplication.Position.Members = new List <Account>();
            while (sdr.Read())
            {
                positionApplication.Position.Members.Add(new Account((int)sdr["AccountID"], "", ""));
            }
        }
コード例 #3
0
        private static PositionApplication FetchObject(IDataRecord sdr)
        {
            PositionApplication positionApplication = new PositionApplication();

            positionApplication.PKID       = (int)sdr["PKID"];
            positionApplication.Account    = new Account((int)sdr["Applicant"], "", "");
            positionApplication.IsPublish  = (int)sdr["IsPublish"];
            positionApplication.Type       = AppType.FindAppType((int)sdr["Type"]);
            positionApplication.Status     = RequestStatus.FindRequestStatus((int)sdr["Status"]);
            positionApplication.NextStep   = new DiyStep((int)sdr["NextStep"]);
            positionApplication.DiyProcess = DiyProcess.ConvertToObject(sdr["DiyProcess"].ToString());
            positionApplication.Position   = new Position((int)sdr["PositionID"], sdr["PositionName"].ToString(),
                                                          new PositionGrade((int)sdr["LevelId"], "", ""));
            positionApplication.Position.Description            = sdr["PositionDescription"].ToString();
            positionApplication.Position.Summary                = sdr["Summary"].ToString();
            positionApplication.Position.MainDuties             = sdr["MainDuties"].ToString();
            positionApplication.Position.ReportScope            = sdr["ReportScope"].ToString();
            positionApplication.Position.ControlScope           = sdr["ControlScope"].ToString();
            positionApplication.Position.Coordination           = sdr["Coordination"].ToString();
            positionApplication.Position.Authority              = sdr["Authority"].ToString();
            positionApplication.Position.Education              = sdr["Education"].ToString();
            positionApplication.Position.ProfessionalBackground = sdr["ProfessionalBackground"].ToString();
            positionApplication.Position.WorkExperience         = sdr["WorkExperience"].ToString();
            positionApplication.Position.Qualification          = sdr["Qualification"].ToString();
            positionApplication.Position.Competence             = sdr["Competence"].ToString();
            positionApplication.Position.OtherRequirements      = sdr["OtherRequirements"].ToString();
            positionApplication.Position.KnowledgeAndSkills     = sdr["KnowledgeAndSkills"].ToString();
            positionApplication.Position.RelatedProcesses       = sdr["RelatedProcesses"].ToString();
            positionApplication.Position.ManagementSkills       = sdr["ManagementSkills"].ToString();
            positionApplication.Position.AuxiliarySkills        = sdr["AuxiliarySkills"].ToString();
            return(positionApplication);
        }
コード例 #4
0
 /// <summary>
 ///
 /// </summary>
 protected override void Validation()
 {
     _PositionApplication = _PositionApplicationDal.GetPositionApplicationByPKID(_PositionApplicationID);
     //判断信息是否为空
     if (_PositionApplication == null)
     {
         HrmisUtility.ThrowException(HrmisUtility._PositionApplication_Not_Exit);
     }
     else
     {
         //判断该账号是否有流程
         _PositionApplication.DiyProcess =
             _DalEmployeeDiyProcess.GetDiyProcessByProcessTypeAndAccountID(ProcessType.PositionApp,
                                                                           _PositionApplication.Account.Id);
         if (_PositionApplication.DiyProcess == null)
         {
             HrmisUtility.ThrowException(HrmisUtility._No_PositionApplication_DiyProcess);
         }
         //如果信息状态不是取消或提交状态,不能取消
         if (!RequestStatus.CanCancelStatus(_PositionApplication.Status))
         {
             HrmisUtility.ThrowException(HrmisUtility._PositionApplication_CanNot_BeCancled);
         }
     }
 }
コード例 #5
0
 private static void AddInsertParameters(SqlCommand cm, PositionApplication positionApplication)
 {
     cm.Parameters.AddWithValue("@Applicant", positionApplication.Account.Id);
     cm.Parameters.AddWithValue("@IsPublish", positionApplication.IsPublish);
     cm.Parameters.AddWithValue("@Type", positionApplication.Type.Id);
     cm.Parameters.AddWithValue("@Status", positionApplication.Status.Id);
     cm.Parameters.AddWithValue("@NextStep", positionApplication.NextStep.DiyStepID);
     cm.Parameters.AddWithValue("@DiyProcess", DiyProcess.ConvertToString(positionApplication.DiyProcess));
     cm.Parameters.AddWithValue("@PositionID", positionApplication.Position.Id);
     cm.Parameters.AddWithValue("@PositionName", positionApplication.Position.Name);
     cm.Parameters.AddWithValue("@PositionDescription", positionApplication.Position.Description);
     cm.Parameters.AddWithValue("@LevelId", positionApplication.Position.Grade.Id);
     cm.Parameters.AddWithValue("@Summary", positionApplication.Position.Summary);
     cm.Parameters.AddWithValue("@MainDuties", positionApplication.Position.MainDuties);
     cm.Parameters.AddWithValue("@ReportScope", positionApplication.Position.ReportScope);
     cm.Parameters.AddWithValue("@ControlScope", positionApplication.Position.ControlScope);
     cm.Parameters.AddWithValue("@Coordination", positionApplication.Position.Coordination);
     cm.Parameters.AddWithValue("@Authority", positionApplication.Position.Authority);
     cm.Parameters.AddWithValue("@Education", positionApplication.Position.Education);
     cm.Parameters.AddWithValue("@ProfessionalBackground", positionApplication.Position.ProfessionalBackground);
     cm.Parameters.AddWithValue("@WorkExperience", positionApplication.Position.WorkExperience);
     cm.Parameters.AddWithValue("@Qualification", positionApplication.Position.Qualification);
     cm.Parameters.AddWithValue("@Competence", positionApplication.Position.Competence);
     cm.Parameters.AddWithValue("@OtherRequirements", positionApplication.Position.OtherRequirements);
     cm.Parameters.AddWithValue("@KnowledgeAndSkills", positionApplication.Position.KnowledgeAndSkills);
     cm.Parameters.AddWithValue("@RelatedProcesses", positionApplication.Position.RelatedProcesses);
     cm.Parameters.AddWithValue("@ManagementSkills", positionApplication.Position.ManagementSkills);
     cm.Parameters.AddWithValue("@AuxiliarySkills", positionApplication.Position.AuxiliarySkills);
 }
コード例 #6
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="positionApplicationID"></param>
 /// <param name="currentStepAccountlist"></param>
 /// <param name="nextStep"></param>
 public PositionApplicationCancelMail(int positionApplicationID, List <string> currentStepAccountlist, DiyStep nextStep)
 {
     _PositionApplication         = new GetPositionApplication().GetPositionApplicationByPKID(positionApplicationID);
     _PositionApplication.Account = _AccountBll.GetAccountById(_PositionApplication.Account.Id);
     _NextStep = nextStep;
     _CurrentStepAccountlist = currentStepAccountlist;
 }
コード例 #7
0
 /// <summary>
 ///
 /// </summary>
 public UpdatePositionApplication(PositionApplication positionApplication, bool ifSubmit)
 {
     _PositionApplication    = positionApplication;
     _IfSubmit               = ifSubmit;
     _OldPositionApplication =
         _PositionApplicationDal.GetPositionApplicationByPKID(_PositionApplication.PKID);
 }
コード例 #8
0
        public PositionApplicationViewModel(PositionApplicationFlow positionApplicationFlow)
        {
            _PositionApplicationFlow = positionApplicationFlow;
            _PositionApplication     = _PositionApplicationFlow.Detail ?? new PositionApplication();
            _Position = _PositionApplication.Position ?? new Position();

            _PKID = _PositionApplicationFlow.PKID.ToString();
        }
コード例 #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="positionApplication"></param>
        /// <param name="nextStep"></param>
        /// <returns></returns>
        public Account GetMailToAccount(PositionApplication positionApplication, DiyStep nextStep)
        {
            int accountID =
                new GetPositionApplication().ChangeOperatorToEmployee(positionApplication, nextStep);
            Account account = _AccountBll.GetAccountById(accountID);

            return(account);
        }
コード例 #10
0
 /// <summary>
 ///
 /// </summary>
 protected override void Validation()
 {
     _PositionApplication = _PositionApplicationDal.GetPositionApplicationByPKID(_PositionApplicationID);
     if (_PositionApplication == null)
     {
         HrmisUtility.ThrowException(HrmisUtility._PositionApplication_Not_Exit);
     }
 }
コード例 #11
0
        public string ApprovePositionApplication(PositionApplication positionApplication, int operatorID, RequestStatus requestStatus, string reason)
        {
            ApprovePositionApplication approveWholeLeaveRequest =
                new ApprovePositionApplication(positionApplication, operatorID, requestStatus, reason);

            approveWholeLeaveRequest.Excute();
            return(approveWholeLeaveRequest.ResultMessage);
        }
コード例 #12
0
 /// <summary>
 /// 取消
 /// </summary>
 public ApprovePositionApplication(PositionApplication positionApplication, int operatorID,
                                   RequestStatus requestStatus, string reason)
 {
     _PositionApplication = positionApplication;
     _RequestStatus       = requestStatus;
     _Reason     = reason;
     _OperatorID = operatorID;
 }
コード例 #13
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="positionApplicationID"></param>
 /// <param name="cclist"></param>
 /// <param name="diyProcesslist"></param>
 /// <param name="nextStep"></param>
 public PositionApplicationSubmitMail(int positionApplicationID, List <Account> cclist, List <string> diyProcesslist,
                                      DiyStep nextStep)
 {
     _PositionApplication         = new GetPositionApplication().GetPositionApplicationByPKID(positionApplicationID);
     _PositionApplication.Account = _AccountBll.GetAccountById(_PositionApplication.Account.Id);
     _CCList         = cclist;
     _DiyProcesslist = diyProcesslist;
     _NextStep       = nextStep;
 }
コード例 #14
0
 public PositionApplicationViewModel(PositionApplication positionApplication)
 {
     _PositionApplicationFlow =
         new PositionApplicationFlow(0, 0, new Account(-9, "", ""), DateTime.Now, RequestStatus.Approving, "",
                                     null);
     _PositionApplication = positionApplication;
     _PKID     = positionApplication.PKID.ToString();
     _Position = _PositionApplication.Position ?? new Position();
 }
コード例 #15
0
        private static byte[] EncryptFlowDetail(PositionApplication pa)
        {
            MemoryStream ms = new MemoryStream();

            new BinaryFormatter().Serialize(ms, pa);
            byte[] bt = ms.ToArray();
            ms.Close();

            return(bt);
        }
コード例 #16
0
        /// <summary>
        /// 审核
        /// </summary>
        public void ConfirmOperationMail(PositionApplication positionApplication, int currentAccountID, DiyStep currentStep, DiyStep nextStep)
        {
            Account mailToAccount = new MailAndPhoneUtility().GetMailToAccount(positionApplication, nextStep);

            if (nextStep.DiyStepID == 0 || nextStep.Status == "取消")
            {
                _PositionApplicationMail.SendConfirmOverMail(positionApplication.PKID, currentStep);
            }
            else if (mailToAccount != null)
            {
                _PositionApplicationMail.SendMailToNextOperator(positionApplication.PKID, mailToAccount);
            }
        }
コード例 #17
0
        private void AddPositionApp()
        {
            List <Performance.Error> errors = new List <Performance.Error>();

            try
            {
                PositionApplication positionApplication = new PositionApplication();

                int i;
                if (!string.IsNullOrEmpty(_Context.Request.Params["dialogAppType"]) &&
                    int.TryParse(_Context.Request.Params["dialogAppType"], out i))
                {
                    positionApplication.Type = AppType.FindAppType(i);
                }
                else
                {
                    positionApplication.Type = AppType.All;
                }
                if (!string.IsNullOrEmpty(_Context.Request.Params["dialogRequestStatus"]) &&
                    int.TryParse(_Context.Request.Params["dialogRequestStatus"], out i))
                {
                    positionApplication.Status = RequestStatus.FindRequestStatus(i);
                }
                else
                {
                    positionApplication.Status = RequestStatus.New;
                }
                positionApplication.IsPublish = 0;
                positionApplication.Position  = new Position();
                PositionDataBind(positionApplication.Position);
                positionApplication.Account = _Operator;
                if (positionApplication.Status.Id == RequestStatus.Submit.Id)
                {
                    InstanceFactory.CreatePositionApplicationFacade().SubmitPositionApplication(positionApplication);
                }
                else
                {
                    InstanceFactory.CreatePositionApplicationFacade().AddPositionApplication(positionApplication);
                }
            }
            catch (Exception e)
            {
                errors.Add(new Performance.Error("dialoglblMessage", e.Message));
            }
            _ResponseString = string.Format("{{\"error\":{0}}}", JsonConvert.SerializeObject(errors));
        }
コード例 #18
0
        private void GetPositionApplicationMoreInfo(PositionApplication PositionApplication)
        {
            if (PositionApplication != null &&
                PositionApplication.Position != null &&
                PositionApplication.Position.Grade != null)
            {
                PositionApplication.Position.Grade =
                    BllInstance.PositionBllInstance.GetPositionGradeById(PositionApplication.Position.Grade.Id, null);
            }

            if (PositionApplication != null &&
                PositionApplication.Position != null &&
                PositionApplication.Position.Nature != null)
            {
                for (int i = 0; i < PositionApplication.Position.Nature.Count; i++)
                {
                    PositionApplication.Position.Nature[i] =
                        BllInstance.PositionBllInstance.GetPositionNatureById(
                            PositionApplication.Position.Nature[i].Pkid);
                }
            }
            if (PositionApplication != null &&
                PositionApplication.Position != null &&
                PositionApplication.Position.Departments != null)
            {
                for (int i = 0; i < PositionApplication.Position.Departments.Count; i++)
                {
                    PositionApplication.Position.Departments[i] =
                        BllInstance.DepartmentBllInstance.GetDepartmentById(
                            PositionApplication.Position.Departments[i].Id, null);
                }
            }
            if (PositionApplication != null &&
                PositionApplication.Position != null &&
                PositionApplication.Position.Members != null)
            {
                for (int i = 0; i < PositionApplication.Position.Members.Count; i++)
                {
                    PositionApplication.Position.Members[i] =
                        BllInstance.AccountBllInstance.GetAccountById(PositionApplication.Position.Members[i].Id);
                }
            }
        }
コード例 #19
0
        private void GetPositionAppByID()
        {
            List <Performance.Error>     errors = new List <Performance.Error>();
            PositionApplicationViewModel pavm   = null;

            try
            {
                PositionApplication pa =
                    InstanceFactory.CreatePositionApplicationFacade().GetPositionApplicationByPKID(
                        Convert.ToInt32(_Context.Request.Params["Pkid"]));
                pavm = new PositionApplicationViewModel(pa);
            }
            catch (Exception e)
            {
                errors.Add(new Performance.Error("lblMessage", e.Message));
            }
            _ResponseString = string.Format("{{\"item\":{0},\"error\":{1}}}", JsonConvert.SerializeObject(pavm),
                                            JsonConvert.SerializeObject(errors));
        }
コード例 #20
0
        public List <PositionApplication> GetConfirmPositionApplication()
        {
            List <PositionApplication> iRet = new List <PositionApplication>();
            SqlCommand cmd = new SqlCommand();

            using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetConfirmPositionApplication", cmd))
            {
                while (sdr.Read())
                {
                    PositionApplication positionApplication = FetchObject(sdr);
                    if (positionApplication.DiyProcess != null)
                    {
                        positionApplication.CurrentStep =
                            positionApplication.DiyProcess.FindStep(positionApplication.NextStep.DiyStepID);
                    }
                    iRet.Add(positionApplication);
                }
            }
            return(iRet);
        }
コード例 #21
0
        public int InsertPositionApplicationFlow(PositionApplicationFlow flow)
        {
            int        pkid;
            SqlCommand cmd = new SqlCommand();

            cmd.Parameters.AddWithValue("@PositionAppID", flow.PositionApplicationID);
            cmd.Parameters.AddWithValue("@OperatorID", flow.Account.Id);
            cmd.Parameters.AddWithValue("@Operation", flow.Status.Id);
            cmd.Parameters.AddWithValue("@OperationTime", flow.OperationTime);
            cmd.Parameters.AddWithValue("@Remark", flow.Remark);
            PositionApplication pa = new PositionApplication();

            if (flow.Detail != null && flow.Detail.Position != null)
            {
                pa.Position = flow.Detail.Position;
            }
            cmd.Parameters.AddWithValue("@Detail", EncryptFlowDetail(pa));
            cmd.Parameters.Add("@PKID", SqlDbType.Int).Direction = ParameterDirection.Output;
            SqlHelper.ExecuteNonQueryReturnPKID("InsertPositionApplicationFlow", cmd, out pkid);
            return(pkid);
        }
コード例 #22
0
        private void UpdatePositionApp()
        {
            List <Performance.Error> errors = new List <Performance.Error>();

            try
            {
                PositionApplication PositionApplication =
                    InstanceFactory.CreatePositionApplicationFacade().GetPositionApplicationByPKID(
                        Convert.ToInt32(_Context.Request.Params["Pkid"]));
                int i;
                if (!string.IsNullOrEmpty(_Context.Request.Params["dialogRequestStatus"]) &&
                    int.TryParse(_Context.Request.Params["dialogRequestStatus"], out i))
                {
                    PositionApplication.Status = RequestStatus.FindRequestStatus(i);
                }
                else
                {
                    PositionApplication.Status = RequestStatus.New;
                }
                PositionApplication.IsPublish            = 0;
                PositionApplication.Position             = PositionApplication.Position ?? new Position();
                PositionApplication.Position.Departments = new List <Department>();
                PositionApplication.Position.Members     = new List <Account>();
                PositionApplication.Position.Nature      = new List <PositionNature>();
                PositionDataBind(PositionApplication.Position);
                if (PositionApplication.Status.Id == RequestStatus.Submit.Id)
                {
                    InstanceFactory.CreatePositionApplicationFacade().UpdateSubmitPositionApplication(PositionApplication);
                }
                else
                {
                    InstanceFactory.CreatePositionApplicationFacade().UpdatePositionApplication(PositionApplication);
                }
            }
            catch (Exception e)
            {
                errors.Add(new Performance.Error("dialoglblMessage", e.Message));
            }
            _ResponseString = string.Format("{{\"error\":{0}}}", JsonConvert.SerializeObject(errors));
        }
コード例 #23
0
        public PositionApplication GetPositionApplicationByPKID(int PositionApplicationID)
        {
            SqlCommand cmd = new SqlCommand();

            cmd.Parameters.Add("@PKID", SqlDbType.Int).Value = PositionApplicationID;
            using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetPositionApplication", cmd))
            {
                while (sdr.Read())
                {
                    PositionApplication positionApplication = FetchObject(sdr);
                    if (positionApplication.DiyProcess != null)
                    {
                        positionApplication.CurrentStep =
                            positionApplication.DiyProcess.FindStep(positionApplication.NextStep.DiyStepID);
                    }
                    FetchChildren(sdr, positionApplication);
                    positionApplication.PositionApplicationFlowList =
                        GetPositionApplicationFlowByPositionApplicationID(PositionApplicationID);
                    return(positionApplication);
                }
                return(null);
            }
        }
コード例 #24
0
        public PositionApplication GetPositionApplicationByPKID(int pkid)
        {
            PositionApplication positionApplication = _PositionApplicationDal.GetPositionApplicationByPKID(pkid);

            positionApplication.Account = _IAccountBll.GetAccountById(positionApplication.Account.Id);
            if (positionApplication != null &&
                positionApplication.Position != null &&
                positionApplication.Position.Grade != null)
            {
                positionApplication.Position.Grade =
                    BllInstance.PositionBllInstance.GetPositionGradeById(positionApplication.Position.Grade.Id, null);
            }

            if (positionApplication != null &&
                positionApplication.Position != null &&
                positionApplication.Position.Nature != null)
            {
                for (int i = 0; i < positionApplication.Position.Nature.Count; i++)
                {
                    positionApplication.Position.Nature[i] =
                        BllInstance.PositionBllInstance.GetPositionNatureById(
                            positionApplication.Position.Nature[i].Pkid);
                }
            }

            for (int i = 0; i < positionApplication.Position.Members.Count; i++)
            {
                positionApplication.Position.Members[i] =
                    _IAccountBll.GetAccountById(positionApplication.Position.Members[i].Id);
            }
            for (int i = 0; i < positionApplication.Position.Departments.Count; i++)
            {
                positionApplication.Position.Departments[i] =
                    _IDepartmentBll.GetDepartmentById(positionApplication.Position.Departments[i].Id, null);
            }
            return(positionApplication);
        }
コード例 #25
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="positionApplicationID"></param>
 /// <param name="currentStep"></param>
 public PositionApplicationOverMail(int positionApplicationID, DiyStep currentStep)
 {
     _PositionApplication         = new GetPositionApplication().GetPositionApplicationByPKID(positionApplicationID);
     _PositionApplication.Account = _AccountBll.GetAccountById(_PositionApplication.Account.Id);
     _CurrentStep = currentStep;
 }
コード例 #26
0
 public void UpdateSubmitPositionApplication(PositionApplication positionApplication)
 {
     new UpdatePositionApplication(positionApplication, true).Excute();
 }
コード例 #27
0
 public void UpdatePositionApplication(PositionApplication positionApplication)
 {
     new UpdatePositionApplication(positionApplication, false).Excute();
 }
コード例 #28
0
 public void SubmitPositionApplication(PositionApplication positionApplication)
 {
     new AddPositionApplication(positionApplication, true).Excute();
 }
コード例 #29
0
 public void AddPositionApplication(PositionApplication positionApplication)
 {
     new AddPositionApplication(positionApplication, false).Excute();
 }
コード例 #30
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="positionApplication"></param>
        /// <param name="diyStep"></param>
        /// <returns></returns>
        internal int ChangeOperatorToEmployee(PositionApplication positionApplication, DiyStep diyStep)
        {
            int accountID = 0;

            try
            {
                switch (diyStep.OperatorType.Id)
                {
                //"本人"
                case 0:
                    accountID = positionApplication.Account.Id;
                    break;

                //"部门主管"
                case 1:
                    accountID = _IAccountBll.GetLeaderByAccountId(positionApplication.Account.Id).Id;
                    break;

                //"上级部门主管";
                case 2:
                    Account account2 = _IAccountBll.GetAccountById(positionApplication.Account.Id);
                    accountID = _IDepartmentBll.GetParentDept(account2.Dept.Id, null).Leader.Id;
                    break;

                //"上上级部门主管"
                case 3:
                    Account    account3    = _IAccountBll.GetAccountById(positionApplication.Account.Id);
                    Department department3 = _IDepartmentBll.GetParentDept(account3.Dept.Id, null);
                    accountID = _IDepartmentBll.GetParentDept(department3.Id, null).Leader.Id;
                    break;

                //"上上上级部门主管"
                case 4:
                    Account    account4    = _IAccountBll.GetAccountById(positionApplication.Account.Id);
                    Department department4 = _IDepartmentBll.GetParentDept(account4.Dept.Id, null);
                    department4 = _IDepartmentBll.GetParentDept(department4.Id, null);
                    accountID   = _IDepartmentBll.GetParentDept(department4.Id, null).Leader.Id;
                    break;

                //"上上上上级部门主管"
                case 5:
                    Account    account5    = _IAccountBll.GetAccountById(positionApplication.Account.Id);
                    Department department5 = _IDepartmentBll.GetParentDept(account5.Dept.Id, null);
                    department5 = _IDepartmentBll.GetParentDept(department5.Id, null);
                    department5 = _IDepartmentBll.GetParentDept(department5.Id, null);
                    accountID   = _IDepartmentBll.GetParentDept(department5.Id, null).Leader.Id;
                    break;

                //"其他"
                case 6:
                    accountID = diyStep.OperatorID;
                    break;

                default:
                    break;
                }
            }
            catch
            {
                //-1 全部;0 新增;1 提交;2 审核不通过;3 审核通过;4 取消请假;
                //5 拒绝取消假期;6 批准取消假期;7 审核中;8 审核取消中
                RequestStatus status;
                switch (positionApplication.Status.Id)
                {
                case 4:
                case 8:
                    status = RequestStatus.ApproveCancelFail;
                    break;

                default:     //1 7
                    status = RequestStatus.ApproveFail;
                    break;
                }
                ApproveFailPositionApplication approveFailPositionApplication =
                    new ApproveFailPositionApplication(positionApplication.PKID, Account.AdminPkid, status,
                                                       HrmisUtility._No_Account);
                approveFailPositionApplication.Excute();
            }
            return(accountID);
        }