protected void checkBeforeAction(tatroshi obj) { atroshisBll bll = new atroshisBll(); if (!bll.CheckRosterHistory(obj)) { throw new UtilException("Check fail: Date range cross.", null); } }
public bool CheckRosterHistory(tatroshi obj) { bool r = false; var q = from p in gDB.tatroshis where p.emno == obj.emno && ((p.exdt.HasValue == false) || (p.exdt >= obj.efdt)) && ((obj.exdt.HasValue == false) || (p.exdt > obj.efdt)) && (p.efdt != obj.efdt) select p; if (q.ToList().Count > 0) { r = false; } else { r = true; } return(r); }
private tatrosdtl getCurrentRoster(tatroshi curRosterHistory, List <tatrosdtl> curRosterDtl, DateTime startDate) { #region 判断实效、失效日期 if (curRosterHistory.efdt.Value > startDate) { //如果轮班历史的有效日期大于当前计算日期,则从轮班历史生效日期开始计算 //startDateByPerson = _rosterHis.efdt.Value; return(null); } if (curRosterHistory.tatroster.efdt.Value > startDate) { //如果轮班的有效日期大于当前计算日期,则从轮班生效日期开始计算 //startDateByPerson = _rosterHis.tatroster.efdt.Value; return(null); } #endregion //判断需要从哪个班次开始计算 int shiftIndex = (int)((TimeSpan)(startDate - curRosterHistory.tatroster.efdt)).TotalDays % curRosterDtl.Count; return(curRosterDtl[shiftIndex]); }
public void getEdit() { string message = "{}"; try { string record = this.Request["record"]; Hashtable ht = JavaScriptConvert.DeserializeObject <Hashtable>(record); List <ColumnInfo> parameters = JavaScriptConvert.DeserializeObject <List <ColumnInfo> >(ht["keycolumns"].ToString()); tatroshi obj = JavaScriptConvert.DeserializeObject <tatroshi>(ht["params"].ToString()); checkBeforeAction(obj); new BaseBll().DoUpdate <tatroshi>(obj, parameters); message = "{status:'success',msg:'" + HRMSRes.Public_Message_EditWell + "'}"; } catch (Exception ex) { message = "{status:'failure',msg:'" + ExceptionPaser.Parse(HRMSRes.Public_Message_EditBad, ex, true) + "'}"; } Response.Write(message); }
public void DoAnalyze(tlvleaapp _leaveApp, bool _isSaveDetail) { for (int i = 0; i < lstStaff.Count; i++) { TotalLvHours = 0; TotalLvDays = 0; try { DateTime calcStart = AnalStartDate; DateTime calcEnd = AnalEndDate; DateTime tmpStart = calcStart; DateTime tmpEnd; //如果请假跨天,需要拆分成多条数据 for (float k = 0; k < (calcEnd - calcStart).TotalDays; k++) { if ((calcEnd - tmpStart).TotalDays > 1) { tmpEnd = Convert.ToDateTime(UtilDatetime.FormatDate1(tmpStart.AddDays(1)) + " 00:00:00"); } else { tmpEnd = calcEnd; } //取轮班历史 List <tatroshi> lstEmpRosterHistory = lstRosterHistory.Where(p => p.emno == lstStaff[i].emno && ((p.exdt.HasValue == false) || (p.exdt.Value > tmpEnd)) && (p.efdt <= tmpStart) ).ToList(); //确定轮班和班次 if (lstEmpRosterHistory.Count > 0) { //如果发现多条,则只取第一条 tatroshi curRosterHistory = lstEmpRosterHistory[0]; List <tatrosdtl> lstEmpRosterDtl = lstRosterDetails.Where(p => p.rscd == curRosterHistory.rscd).ToList(); //确定轮班明细和班次 tatrosdtl curRosterDtl = getCurrentRoster(curRosterHistory, lstEmpRosterDtl, tmpStart); tatshift curShift = curRosterDtl.tatshift; //分析此天的休假 AnalyzeOneDay(lstStaff[i], curRosterDtl, curShift, curRosterHistory, tmpStart, tmpEnd, _leaveApp, _isSaveDetail); tmpStart = tmpEnd; } else { //如果没有定义轮班该如何计算???? } } } catch (Exception ex) { throw ex; } } }
private void AnalyzeOneDay(vw_employment _emp, tatrosdtl curRosterDtl, tatshift curShift, tatroshi curRosterHistory, DateTime _calcStart, DateTime _calcEnd, tlvleaapp _leaveApp, bool _isSaveDetail) { store = new AtCalculationInfo(); store.EmpInfo = _emp; store.CurDay = _calcStart; //curDayR = store.CurDay; //取得标准班次设定时间 analatBll.GetStandardValue(curRosterDtl, curShift, ref store); //判断是否是休息日 analatBll.CheckIsRestDay(curRosterDtl, curShift, curRosterHistory, lstPriCalendar, ref store); if (store.IsRestDay == false) { #region 非休息日 if ((_calcStart <= store.StdTimeIn) && (_calcEnd >= store.StdTimeOut)) { //抓班次设定的工作小时数和天数 store.LvStart = store.StdTimeIn; store.LvEnd = store.StdTimeOut; store.LvHours = Convert.ToDouble(curShift.wkhr); store.LvDays = Convert.ToDouble(curShift.wkda); } else { if (_calcStart <= store.StdTimeIn) { store.LvStart = store.StdTimeIn; } else { store.LvStart = _calcStart; } if (_calcEnd >= store.StdTimeOut) { store.LvEnd = store.StdTimeOut; } else { store.LvEnd = _calcEnd; } store.LvHours = CountLeaveTime(store.LvStart, store.LvEnd, curShift, store); store.LvHours = Math.Round(store.LvHours, 2); //计算天数 store.LvDays = Math.Round((store.LvHours / Convert.ToDouble(curShift.wkhr)) * Convert.ToDouble(curShift.wkda), 2); } #endregion } else { #region 休息日 store.LvHours = 0; store.LvDays = 0; #endregion } TotalLvHours += store.LvHours; TotalLvDays += store.LvDays; if ((_isSaveDetail) && (_leaveApp != null) && (store.LvHours > 0)) { //如果需要保存则保存每一条明细到DTL表 tlvleaapd newdtl = new tlvleaapd(); newdtl.emno = _emp.emno; newdtl.days = store.LvDays; newdtl.hurs = store.LvHours; newdtl.ltcd = _leaveApp.ltcd; newdtl.apno = _leaveApp.apno; newdtl.totm = store.LvEnd.Value; newdtl.frtm = store.LvStart.Value; DoInsert <tlvleaapd>(newdtl); } }
private void AnalyzeOneDay(vw_employment _emp, tatrosdtl curRosterDtl, tatshift curShift, tatroshi curRosterHistory, DateTime _calcStart, DateTime _calcEnd, totaplctn _otApp, bool _isSaveDetail) { store = new AtCalculationInfo(); store.EmpInfo = _emp; store.CurDay = _calcStart; //curDayR = store.CurDay; //取得标准班次设定时间 analatBll.GetStandardValue(curRosterDtl, curShift, ref store); //判断是否是休息日 analatBll.CheckIsRestDay(curRosterDtl, curShift, curRosterHistory, lstPriCalendar, ref store); AnalyzeOT(ref store, curShift, lstOriAtData, _isSaveDetail); TotalOTHours += store.OTHours; }
public void ApplyTo(List <vw_employment> _emps, object _obj) { try { tatroshi obj = _obj as tatroshi; for (int i = 0; i < _emps.Count; i++) { if (_emps[i].emno != obj.emno) { List <ColumnInfo> parameters = new List <ColumnInfo>() { new ColumnInfo() { ColumnName = "emno", ColumnValue = _emps[i].emno }, new ColumnInfo() { ColumnName = "efdt", ColumnValue = UtilDatetime.FormatDate1(obj.efdt.Value), ColumnType = "datetime" } }; tatroshi oldobj = dal.GetSelectedObject(parameters); if (oldobj == null) { //新增 tatroshi newobj = new tatroshi(); newobj.emno = _emps[i].emno; newobj.efdt = obj.efdt; newobj.exdt = obj.exdt; newobj.iaod = obj.iaod; newobj.rscd = obj.rscd; newobj.sqno = GetMaxsqno("tatroshis", _emps[i].emno).Value + 1; newobj.lmtm = obj.lmtm; newobj.lmur = obj.lmur; if (CheckRosterHistory(newobj)) { DoInsert <tatroshi>(newobj); } } else { //更新 oldobj.exdt = obj.exdt; oldobj.iaod = obj.iaod; oldobj.rscd = obj.rscd; oldobj.lmtm = obj.lmtm; oldobj.lmur = obj.lmur; if (CheckRosterHistory(oldobj)) { DoUpdate <tatroshi>(oldobj); } } } } } catch (UtilException ex) { throw ex; } catch (Exception ex) { throw new UtilException(ex.Message, ex); } }
public bool CheckRosterHistory(tatroshi obj) { return(dal.CheckRosterHistory(obj)); }