/// <summary>
 ///
 /// </summary>
 public void Excute()
 {
     if (!string.IsNullOrEmpty(_LeaveRequestItem.UseList))
     {
         string[] detail = _LeaveRequestItem.UseList.Split('/');
         if (detail != null)
         {
             foreach (string s in detail)
             {
                 string[] use = s.Split(',');
                 if (use != null && use.Length == 2)
                 {
                     int        adjustid   = Convert.ToInt32(use[0]);
                     decimal    deletehour = Convert.ToDecimal(use[1]);
                     AdjustRest adjustrest = _IAdjustRest.GetAdjustRestByPKID(adjustid);
                     if (adjustrest != null)
                     {
                         adjustrest.SurplusHours += deletehour;
                         _IAdjustRest.UpdateAdjustRest(adjustrest);
                     }
                 }
             }
             CreateHistory();
         }
     }
 }
Exemple #2
0
 protected override void ExcuteSelf()
 {
     DataReady();
     //没有任何变化且没有任何备注
     if (string.IsNullOrEmpty(_AdjustRestHistory.Remark) && _AdjustRestHistory.ChangeHours == 0)
     {
         return;
     }
     using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
     {
         _IAdjustRest.UpdateAdjustRest(_AdjustRest);
         _IAdjustRestHistory.InsertAdjustRestHistory(_AdjustRest.Employee.Account.Id, _AdjustRestHistory);
         ts.Complete();
     }
 }
 /// <summary>
 /// 更新调休
 /// </summary>
 /// <param name="operatorType"></param>
 /// <param name="UpdateadjustRestList"></param>
 private void UpdateAdjustRestDB(OperatorType operatorType, IEnumerable <AdjustRest> UpdateadjustRestList)
 {
     foreach (AdjustRest rest in UpdateadjustRestList)
     {
         AdjustRest adjustRest = _IAdjustRest.GetAdjustRestByAccountIDAndYear(_AccountID, rest.AdjustYear);
         if (operatorType == OperatorType.add)
         {
             adjustRest.SurplusHours = adjustRest.SurplusHours + rest.SurplusHours; //获得调休
             _ChangeHour            += rest.SurplusHours;
         }
         else if (operatorType == OperatorType.delete)
         {
             adjustRest.SurplusHours = adjustRest.SurplusHours - rest.SurplusHours; //返还调休
             _ChangeHour            += rest.SurplusHours;
         }
         _IAdjustRest.UpdateAdjustRest(adjustRest);
     }
 }
Exemple #4
0
        /// <summary>
        /// 更新调休
        /// </summary>
        private void UpdateAdjustRestDB(IEnumerable <AdjustRest> UpdateadjustRestList, bool isupdate)
        {
            _LeaveRequestItem.UseList = "";
            //初始化要扣除的调休
            List <AdjustRest> adjustRestList = new List <AdjustRest>();

            foreach (AdjustRest rest in UpdateadjustRestList)
            {
                AdjustRest adjustRest = _IAdjustRest.GetAdjustRestByAccountIDAndYear(_AccountID, rest.AdjustYear);
                adjustRestList.Add(adjustRest);
            }
            if (adjustRestList.Count > 0)
            {
                foreach (AdjustRest rest in _AdjustRestDay)
                {
                    AdjustRest adjustFirst  = ContainByYear(rest.AdjustYear, adjustRestList);
                    AdjustRest adjustSecond = Contain(rest.AdjustYear, adjustRestList);
                    //同年说明只扣一条记录
                    if (adjustFirst.AdjustYear.Year == adjustSecond.AdjustYear.Year)
                    {
                        adjustFirst.SurplusHours -= rest.SurplusHours;
                        adjustFirst.ChangeHours  += rest.SurplusHours;
                    }
                    else
                    {
                        //不同年则扣第二年的记录,如果扣不了,则还是扣第一年的记录
                        decimal chagehour = adjustSecond.SurplusHours - rest.SurplusHours;
                        if (chagehour < 0)
                        {
                            if (adjustSecond.SurplusHours > 0)
                            {
                                adjustFirst.SurplusHours += chagehour;
                                adjustFirst.ChangeHours  += (-chagehour);
                                adjustSecond.ChangeHours += adjustSecond.SurplusHours;
                                adjustSecond.SurplusHours = 0;
                            }
                            else
                            {
                                adjustFirst.SurplusHours -= rest.SurplusHours;
                                adjustFirst.ChangeHours  += rest.SurplusHours;
                            }
                        }
                        else
                        {
                            adjustSecond.ChangeHours += rest.SurplusHours;
                            adjustSecond.SurplusHours = chagehour;
                        }
                    }
                }
                foreach (AdjustRest rest in adjustRestList)
                {
                    if (rest.SurplusHours < 0)
                    {
                        HrmisUtility.ThrowException("剩余调休不足");
                    }
                    if (isupdate)
                    {
                        _IAdjustRest.UpdateAdjustRest(rest);
                        _LeaveRequestItem.UseList =
                            string.Format("{0},{1}/{2}", rest.AdjustRestID, rest.ChangeHours,
                                          _LeaveRequestItem.UseList);
                    }
                }
                if (isupdate)
                {
                    //记录下使用情况
                    _LeaveRequestDal.UpdateLeaveRequestItemUseDetail(_LeaveRequestItem);
                }
            }
            else
            {
                HrmisUtility.ThrowException("剩余调休不足");
            }
        }