/// <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); } }
/// <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("剩余调休不足"); } }