Esempio n. 1
0
        protected override void ExcuteSelf()
        {
            try
            {
                _OverWork.DiyProcess = _OverWorkDiyProcessUtility.GetOverWorkDiyProcessByAccountID(_OverWork.Account.Id);
                using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
                {
                    int _CurrentId = _OverWorkDal.InsertOverWork(_OverWork);
                    _OverWork.PKID = _CurrentId;
                    if (_OverWork.Item != null)
                    {
                        foreach (OverWorkItem item in _OverWork.Item)
                        {
                            item.AdjustHour =
                                new UpdateAdjustRestByOverWork(item, _OverWork.Account.Id).GetItemAdjustHour();
                            int itemid = _OverWorkDal.InsertOverWorkItem(_CurrentId, item);

                            if (item.Status == RequestStatus.Submit)
                            {
                                OverWorkFlow flow =
                                    new OverWorkFlow(0, _OverWork.Account, _OverWork.SubmitDate, _OverWork.Reason,
                                                     item.Status, 1);
                                _OverWorkDal.InsertOverWorkFlow(itemid, flow);
                            }
                        }
                    }
                    ts.Complete();
                }
            }
            catch
            {
                HrmisUtility.ThrowException(HrmisUtility._DbError);
            }
            new OverWorkMailAndPhoneDelegate().SubmitOperation(_OverWork.PKID, _CCList);
        }
Esempio n. 2
0
 private void AutoCancelOverWork()
 {
     foreach (OverWorkItem item in _OldOverWork.Item)
     {
         item.Status = RequestStatus.ApproveCancelPass;
         new UpdateAdjustRestByOverWork(item, _OldOverWork.Account.Id).Excute();
         OverWorkFlow OverWorkFlow =
             new OverWorkFlow(0, _OverWork.Account, DateTime.Now,
                              _OverWork.Account.Name + "已经重新编辑加班单" + _OldOverWork.PKID +
                              ",系统自动批准取消,并退回调休记录。",
                              RequestStatus.ApproveCancelPass, 1);
         _OverWorkDal.InsertOverWorkFlow(item.ItemID, OverWorkFlow);
     }
 }
Esempio n. 3
0
        /// <summary>
        /// </summary>
        public int InsertOverWorkFlow(int OverWorkItemID, OverWorkFlow outFlow)
        {
            int        pkid;
            SqlCommand cmd = new SqlCommand();

            cmd.Parameters.Add(_PKID, SqlDbType.Int).Direction           = ParameterDirection.Output;
            cmd.Parameters.Add(_OverWorkItemID, SqlDbType.Int).Value     = OverWorkItemID;
            cmd.Parameters.Add(_OperatorID, SqlDbType.Int).Value         = outFlow.Account.Id;
            cmd.Parameters.Add(_OperationTime, SqlDbType.DateTime).Value = outFlow.OperationTime;
            cmd.Parameters.Add(_Operation, SqlDbType.Int).Value          = outFlow.Operation.Id;
            cmd.Parameters.Add(_Remark, SqlDbType.Text).Value            = outFlow.Remark;
            cmd.Parameters.Add(_Step, SqlDbType.Int).Value = outFlow.Step;
            SqlHelper.ExecuteNonQueryReturnPKID("InsertOverWorkFlow", cmd, out pkid);
            return(pkid);
        }
        /// <summary>
        /// </summary>
        public static bool CancelOneItem(OverWorkItem item, Account account, string remark,
                                         IOverWork dalOverWork, OverWorkDiyProcessUtility OverWorkDiyProcessUtility)
        {
            item = dalOverWork.GetOverWorkItemByItemID(item.ItemID);
            bool valide = RequestStatus.CanCancelStatus(item.Status);

            if (valide)
            {
                using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
                {
                    dalOverWork.UpdateOverWorkItemStatusByItemID(item.ItemID, RequestStatus.Cancelled);
                    OverWorkFlow OverWorkFlow =
                        new OverWorkFlow(0, account, DateTime.Now, remark,
                                         RequestStatus.Cancelled, 1);
                    dalOverWork.InsertOverWorkFlow(item.ItemID, OverWorkFlow);
                    ts.Complete();
                }
            }
            return(valide);
        }
Esempio n. 5
0
        /// <summary>
        /// </summary>
        private static List <OverWorkFlow> GetOverWorkFlowByItemID(int itemID)
        {
            List <OverWorkFlow> iRet = new List <OverWorkFlow>();
            SqlCommand          cmd  = new SqlCommand();

            cmd.Parameters.Add(_OverWorkItemID, SqlDbType.Int).Value = itemID;
            using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetOverWorkFlowByItemID", cmd))
            {
                while (sdr.Read())
                {
                    Account      account = new Account(Convert.ToInt32(sdr[_DbOperatorID]), "", "");
                    OverWorkFlow flow    =
                        new OverWorkFlow(Convert.ToInt32(sdr[_DbPKID]), account,
                                         Convert.ToDateTime(sdr[_DbOperationTime]), sdr[_DbRemark].ToString(),
                                         RequestStatus.FindRequestStatus(Convert.ToInt32(sdr[_DbOperation])),
                                         Convert.ToInt32(sdr[_DbStep]));
                    iRet.Add(flow);
                }
                return(iRet);
            }
        }
        /// <summary>
        /// </summary>
        public bool ApproveOneItem(OverWorkItem item, bool isAgree, Account account,
                                   OverWork overWork, string remark,
                                   IOverWork dalOverWork, OverWorkDiyProcessUtility overWorkDiyProcessUtility,
                                   bool isAdjust, bool isChangeAdjust, decimal adjustHour, out Account nextOperator)
        {
            if (!isAdjust)
            {
                adjustHour = 0;
            }
            nextOperator    = null;
            item            = dalOverWork.GetOverWorkItemByItemID(item.ItemID);
            item.AdjustHour = adjustHour;
            bool valide = RequestStatus.CanApproveStatus(item.Status) &&
                          account.Id ==
                          overWorkDiyProcessUtility.GetNextOperator(overWork.DiyProcess, item, overWork.Account.Id).Id;

            if (valide)
            {
                if (!isAgree)
                {
                    using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
                    {
                        RequestStatus requestStatus = RequestUtility.GetStatus(item.Status, isAgree, 1);
                        dalOverWork.UpdateOverWorkItemStatusByItemID(item.ItemID, requestStatus);
                        item.Status = requestStatus;
                        if (isChangeAdjust)
                        {
                            dalOverWork.UpdateOverWorkItemAdjustByItemID(item.ItemID, isAdjust, adjustHour);
                            item.Adjust = isAdjust;
                        }
                        dalOverWork.InsertOverWorkFlow(item.ItemID,
                                                       new OverWorkFlow(0, account,
                                                                        DateTime.Now,
                                                                        remark,
                                                                        requestStatus,
                                                                        -1));

                        new UpdateAdjustRestByOverWork(item, overWork.Account.Id).Excute();
                        ts.Complete();
                    }
                    nextOperator = null;
                }
                else
                {
                    int step =
                        overWorkDiyProcessUtility.GetNextStep(item.OverWorkFlow, overWork.DiyProcess);
                    RequestStatus requestStatus = RequestUtility.GetStatus(item.Status, isAgree, step);
                    OverWorkFlow  OverWorkFlow  =
                        new OverWorkFlow(0, account, DateTime.Now, remark, requestStatus, step);
                    using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
                    {
                        dalOverWork.InsertOverWorkFlow(item.ItemID, OverWorkFlow);
                        dalOverWork.UpdateOverWorkItemStatusByItemID(item.ItemID, requestStatus);
                        item.Status = requestStatus;
                        if (isChangeAdjust)
                        {
                            dalOverWork.UpdateOverWorkItemAdjustByItemID(item.ItemID, isAdjust, adjustHour);
                            item.Adjust = isAdjust;
                        }
                        new UpdateAdjustRestByOverWork(item, overWork.Account.Id).Excute();
                        ts.Complete();
                    }
                    nextOperator =
                        overWorkDiyProcessUtility.GetNextOperator(overWork.DiyProcess, step, overWork.Account.Id);
                }
            }
            return(valide);
        }