Пример #1
0
        /// <summary>
        /// 通过时间查询某个员工有效的调休值,没有则返回0
        /// </summary>
        public AdjustRest GetAdjustRestByAccountIDAndTime(int accountid, DateTime dt)
        {
            AdjustRest retAdjustRest;

            //判断是不是12月21号以后
            if (dt.Month == AdjustRestUtility.StartTime.Month &&
                dt.Day >= AdjustRestUtility.StartTime.Day)
            {
                dt = dt.AddYears(1);
            }
            retAdjustRest = _IAdjustRestDal.GetAdjustRestByAccountIDAndYear(accountid, dt);
            if (retAdjustRest == null)
            {
                retAdjustRest = new AdjustRest(0, 0, null, dt);
            }
            if (dt.Date <=
                new DateTime(dt.Year, AdjustRestUtility.AvailableTime.Month, AdjustRestUtility.AvailableTime.Day) ||
                (dt.Month == AdjustRestUtility.StartTime.Month &&
                 dt.Day >= AdjustRestUtility.StartTime.Day))
            {
                retAdjustRest.SurplusHours +=
                    _IAdjustRestDal.GetAdjustRestByAccountIDAndYear(accountid, dt.AddYears(-1)).SurplusHours;
            }
            return(retAdjustRest);
        }
 /// <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);
     }
 }
Пример #3
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("剩余调休不足");
            }
        }