/// <summary> /// 获取技师某一天的json格式值班状态 /// </summary> /// <param name="monday"></param> /// <returns></returns> public WorkTimeState GetDayState(string daystr) { WorkTimeState result = new WorkTimeState(); if (daystr.Contains("1")) { result.morning = true; } if (daystr.Contains("2")) { result.noon = true; } if (daystr.Contains("3")) { result.evening = true; } return(result); }
/// <summary> /// 根据技师json格式值班状态得出存入数据表的值班状态字符串 /// </summary> /// <param name="rotaInfo"></param> public string GetDayStr(WorkTimeState workTime) { string result = string.Empty; if (workTime == null) { return(result); } if (workTime.morning) { result += "1,"; } if (workTime.noon) { result += "2,"; } if (workTime.evening) { result += "3,"; } result = result.TrimEnd(','); return(result); }
/// <summary> /// 获取预订技师时间列表 /// </summary> /// <param name="shopTime"></param> /// <param name="timeInterval"></param> /// <param name="dates"></param> /// <returns></returns> public object GetTimeTable(SwitchModel switchModel, int days, int appId, int storeId, int tid) { DateTime date = DateTime.Now.AddDays(days); bool isSingleWeek = IsSingleWeek(date); string sqlwhere = $"aid={appId} and state>=0 and tid={tid}"; if (isSingleWeek) { sqlwhere += " and daytype=0"; } else { sqlwhere += " and daytype=1"; } //获取技师当天排班情况 Rota rota = RotaBLL.SingleModel.GetModel(sqlwhere); if (rota == null) { return(null); } List <object> TimeTable = new List <object>(); string worktimeStr = string.Empty; switch (Convert.ToInt32(date.DayOfWeek)) { //周日 case 0: if (!switchModel.Sunday) //店铺周日没有营业 { return(null); } worktimeStr = rota.sunday; break; //周一 case 1: if (!switchModel.Monday) //店铺周一没有营业 { return(null); } worktimeStr = rota.monday; break; //周二 case 2: if (!switchModel.Tuesday) //店铺周二没有营业 { return(null); } worktimeStr = rota.tuesday; break; //周三 case 3: if (!switchModel.Wensday) //店铺周三没有营业 { return(null); } worktimeStr = rota.wensday; break; //周四 case 4: if (!switchModel.Thursday) //店铺周四没有营业 { return(null); } worktimeStr = rota.thursday; break; //周五 case 5: if (!switchModel.Friday) //店铺周五没有营业 { return(null); } worktimeStr = rota.friday; break; //周六 case 6: if (!switchModel.Saturday) //店铺周六没有营业 { return(null); } worktimeStr = rota.saturday; break; } WorkTimeState workState = RotaBLL.SingleModel.GetDayState(worktimeStr); List <string> timeList = new List <string>(); //早班 if (workState.morning) { string startTime = switchModel.morningShift.Split('-')[0]; DateTime start = Convert.ToDateTime(startTime); string endTime = switchModel.morningShift.Split('-')[1]; DateTime end = Convert.ToDateTime(endTime); while (DateTime.Compare(end, start) > 0) { timeList.Add(start.ToString("HH:mm")); start = start.AddMinutes(switchModel.TimeInterval); //TimeTable.Add(new { time = start.ToString("HH:mm"), state = false }); } } //中班 if (workState.noon) { string startTime = switchModel.noonShift.Split('-')[0]; DateTime start = Convert.ToDateTime(startTime); string endTime = switchModel.noonShift.Split('-')[1]; DateTime end = Convert.ToDateTime(endTime); while (DateTime.Compare(end, start) > 0) { timeList.Add(start.ToString("HH:mm")); start = start.AddMinutes(switchModel.TimeInterval); } } //晚班 if (workState.evening) { string startTime = switchModel.eveningShift.Split('-')[0]; DateTime start = Convert.ToDateTime(startTime); string endTime = switchModel.eveningShift.Split('-')[1]; DateTime end = Convert.ToDateTime(endTime); while (DateTime.Compare(end, start) > 0) { timeList.Add(start.ToString("HH:mm")); start = start.AddMinutes(switchModel.TimeInterval); } } //去除已被选定的服务时间 ServiceTime dates = GetModel($"aid={appId} and storeid={storeId} and tid={tid} and date='{DateTime.Now.AddDays(days).ToShortDateString()}'"); if (dates != null) { List <string> list = dates.time.Split(',').ToList();; timeList = timeList.Except(list).ToList(); } foreach (var timestr in timeList) { DateTime time = Convert.ToDateTime(timestr); //如果是今天,要去掉今天已经过去的时间 if (DateTime.Compare(time, DateTime.Now) > 0 || days > 0) { var obj = new { time = timestr, state = false }; TimeTable.Add(obj); } } return(TimeTable); }