public ActionResult AddHourSectionRule() { Response resp = new Response(); CWTariff cwtarff = new CWTariff(); string hourchgID = Request.Form["HourChgID"]; if (string.IsNullOrEmpty(hourchgID)) { resp.Message = "周期性计费策略ID为空,传输错误!"; return(Json(resp)); } int hourID = Convert.ToInt32(hourchgID); HourChargeDetail temprule = cwtarff.FindHourChgDetail(hourID); if (temprule == null) { resp.Message = "传输错误,找不到相关的周期性计费,ID-" + hourchgID; return(Json(resp)); } //重点是时间段的判断 string start = Request.Form["StartTime"]; string end = Request.Form["EndTime"]; DateTime st_dtime = DateTime.Parse("2017-1-1 " + start + ":00"); DateTime end_dtime = DateTime.Parse("2017-1-1 " + end + ":00").AddSeconds(-1); if (DateTime.Compare(st_dtime, end_dtime) > 0) { end_dtime = end_dtime.AddDays(1); } List <HourSectionInfo> timeSlotLst = cwtarff.FindHourSectionList(hr => true); foreach (HourSectionInfo section in timeSlotLst) { DateTime sttime = section.StartTime; DateTime endtime = section.EndTime.AddSeconds(-1); #region if (DateTime.Compare(sttime, st_dtime) < 0 && DateTime.Compare(endtime, st_dtime) > 0) { resp.Message = "当前时段设置错误,原来-" + sttime.ToString() + ",现-" + st_dtime.ToString(); return(Json(resp)); } if (DateTime.Compare(sttime, end_dtime) < 0 && DateTime.Compare(endtime, end_dtime) > 0) { resp.Message = "当前时段设置错误,原来-" + sttime.ToString() + ",现-" + end_dtime.ToString(); return(Json(resp)); } if (DateTime.Compare(st_dtime, sttime) < 0 && DateTime.Compare(end_dtime, sttime) > 0) { resp.Message = "当前时段设置错误,现-" + st_dtime.ToString() + ",原来 - " + sttime.ToString(); return(Json(resp)); } if (DateTime.Compare(st_dtime, endtime) < 0 && DateTime.Compare(end_dtime, endtime) > 0) { resp.Message = "当前时段设置错误,现-" + st_dtime.ToString() + ",原来 - " + endtime.ToString(); return(Json(resp)); } #endregion if (DateTime.Compare(endtime, DateTime.Parse("2017-1-1 23:59:59")) > 0) { DateTime newstart = DateTime.Parse("2017-1-1"); DateTime newend = endtime.AddDays(-1); if (DateTime.Compare(newstart, st_dtime) < 0 && DateTime.Compare(newend, st_dtime) > 0) { resp.Message = "当前时段设置错误,现-" + st_dtime.ToString() + ",原来 New- " + newstart.ToString(); return(Json(resp)); } if (DateTime.Compare(newstart, end_dtime) < 0 && DateTime.Compare(newend, end_dtime) > 0) { resp.Message = "当前时段设置错误,现-" + end_dtime.ToString() + ",原来 New- " + newstart.ToString(); return(Json(resp)); } } } if (DateTime.Compare(end_dtime, DateTime.Parse("2017-1-1 23:59:59")) > 0) { DateTime newend = DateTime.Parse("2017-1-1 " + end + ":00").AddSeconds(-1); foreach (HourSectionInfo section in timeSlotLst) { DateTime sttime = section.StartTime; DateTime endtime = section.EndTime.AddSeconds(-1); if (DateTime.Compare(sttime, newend) < 0 && DateTime.Compare(endtime, newend) > 0) { resp.Message = "当前时段设置错误,原来-" + sttime.ToString() + ",现-" + newend.ToString(); return(Json(resp)); } } } string topfee = Request.Form["SectionTopFee"]; string freetime = Request.Form["SectionFreeTime"]; string firstvoid = Request.Form["FirstVoidTime"]; string firstfee = Request.Form["FirstVoidFee"]; string intervalvoid = Request.Form["IntervalVoidTime"]; string intervalfee = Request.Form["IntervalVoidFee"]; HourSectionInfo hoursection = new HourSectionInfo() { HourChgID = hourID, StartTime = st_dtime, EndTime = end_dtime.AddSeconds(1), SectionTopFee = Convert.ToSingle(topfee), SectionFreeTime = freetime, FirstVoidTime = firstvoid, FirstVoidFee = Convert.ToSingle(firstfee), IntervalVoidTime = intervalvoid, IntervalVoidFee = Convert.ToSingle(intervalfee) }; resp = cwtarff.AddHourSection(hoursection); return(Json(resp)); }