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