Commit 6070b4c5 authored by 黄奎's avatar 黄奎

约课修改

parent cca32e18
...@@ -4,6 +4,7 @@ using System.Drawing; ...@@ -4,6 +4,7 @@ using System.Drawing;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
...@@ -679,16 +680,18 @@ namespace Edu.Common ...@@ -679,16 +680,18 @@ namespace Edu.Common
/// <returns></returns> /// <returns></returns>
public static T Clone<T>(T obj) public static T Clone<T>(T obj)
{ {
T ret = default(T); object retval;
if (obj != null) using (MemoryStream ms = new MemoryStream())
{ {
XmlSerializer cloner = new XmlSerializer(typeof(T)); BinaryFormatter bf = new BinaryFormatter();
MemoryStream stream = new MemoryStream(); //序列化成流
cloner.Serialize(stream, obj); bf.Serialize(ms, obj);
stream.Seek(0, SeekOrigin.Begin); ms.Seek(0, SeekOrigin.Begin);
ret = (T)cloner.Deserialize(stream); //反序列化成对象
retval = bf.Deserialize(ms);
ms.Close();
} }
return ret; return (T)retval;
} }
} }
} }
\ No newline at end of file
...@@ -8,6 +8,7 @@ namespace Edu.Model.ViewModel.Scroll ...@@ -8,6 +8,7 @@ namespace Edu.Model.ViewModel.Scroll
/// <summary> /// <summary>
/// 滚动开班预约扩展类 /// 滚动开班预约扩展类
/// </summary> /// </summary>
[Serializable]
public class RB_Scroll_Appointment_ViewModel : RB_Scroll_Appointment public class RB_Scroll_Appointment_ViewModel : RB_Scroll_Appointment
{ {
/// <summary> /// <summary>
...@@ -65,6 +66,11 @@ namespace Edu.Model.ViewModel.Scroll ...@@ -65,6 +66,11 @@ namespace Edu.Model.ViewModel.Scroll
/// </summary> /// </summary>
public string CourseName { get; set; } public string CourseName { get; set; }
/// <summary>
/// 具体学习课程
/// </summary>
public string LearnCourseName { get; set; }
/// <summary> /// <summary>
/// 教室名称 /// 教室名称
/// </summary> /// </summary>
......
...@@ -174,5 +174,10 @@ namespace Edu.Model.ViewModel.User ...@@ -174,5 +174,10 @@ namespace Edu.Model.ViewModel.User
/// 对应专业 /// 对应专业
/// </summary> /// </summary>
public CourseRateEnum CourseRate { get; set; } public CourseRateEnum CourseRate { get; set; }
/// <summary>
/// 已上课章节名称
/// </summary>
public string CourseChapterNoName { get; set; }
} }
} }
...@@ -216,7 +216,10 @@ namespace Edu.Module.Course ...@@ -216,7 +216,10 @@ namespace Edu.Module.Course
/// </summary> /// </summary>
private readonly RB_Scroll_AppointmentRepository scroll_AppointmentRepository = new RB_Scroll_AppointmentRepository(); private readonly RB_Scroll_AppointmentRepository scroll_AppointmentRepository = new RB_Scroll_AppointmentRepository();
/// <summary>
/// 课程章节仓储层
/// </summary>
private readonly RB_Course_ChapterRepository course_ChapterRepository = new RB_Course_ChapterRepository();
/// <summary> /// <summary>
...@@ -4670,6 +4673,18 @@ namespace Edu.Module.Course ...@@ -4670,6 +4673,18 @@ namespace Edu.Module.Course
Q_ReserveClassIds = reserveClassIds Q_ReserveClassIds = reserveClassIds
}); });
} }
List<RB_Course_Chapter_ViewModel> chatperList = new List<RB_Course_Chapter_ViewModel>();
if (appointList != null&&appointList.Count>0)
{
string courseIds = string.Join(",", appointList.Select(qitem => qitem.LearnCourseId).Distinct());
if (!string.IsNullOrEmpty(courseIds))
{
chatperList = course_ChapterRepository.GetChapterListRepository(new RB_Course_Chapter_ViewModel()
{
CourseIds = courseIds
});
}
}
//获取所有老师的列表 //获取所有老师的列表
var TeacherList = teacherRepository.GetTeacherListRepository(new RB_Teacher_ViewModel() { Group_Id = group_Id, TId = teacherId }); var TeacherList = teacherRepository.GetTeacherListRepository(new RB_Teacher_ViewModel() { Group_Id = group_Id, TId = teacherId });
...@@ -4736,10 +4751,40 @@ namespace Edu.Module.Course ...@@ -4736,10 +4751,40 @@ namespace Edu.Module.Course
}); });
} }
appointList.Where(x => x.TeacherId == titem.TId && x.Date == ClassDate).GroupBy(x => new { x.Date, x.TeacherId, x.TeacherName, x.RoomId, x.RoomName, x.CourseId, x.CourseName, x.CourseGradeId, x.CourseGradeNo, x.ShiftSort, x.CourseSTime }).OrderBy(x => x.Key.CourseSTime).ToList().ForEach(item => var tempAppointList = appointList.Where(x => x.TeacherId == titem.TId && x.Date == ClassDate)
.GroupBy(x => new {
x.Date,
x.TeacherId,
x.TeacherName,
x.RoomId, x.RoomName,
x.CourseId,
x.CourseName,
x.ShiftSort,
x.CourseSTime,
x.ChapterNo,
//x.CourseGradeNo,
})
.OrderBy(x => x.Key.CourseSTime).ToList();
foreach (var item in tempAppointList)
{ {
//上课时段 //上课时段
string STime = item.FirstOrDefault().CourseSTime ?? "", ETime = item.FirstOrDefault().CourseETime ?? ""; string STime = item.FirstOrDefault().CourseSTime ?? "", ETime = item.FirstOrDefault().CourseETime ?? "";
var subAppointList = appointList.Where(qitem =>
qitem.Date == item.Key.Date &&
qitem.TeacherId == item.Key.TeacherId &&
qitem.TeacherName == item.Key.TeacherName &&
qitem.RoomId == item.Key.RoomId &&
qitem.RoomName == item.Key.RoomName &&
qitem.CourseId == item.Key.CourseId &&
qitem.ChapterNo == item.Key.ChapterNo &&
qitem.ShiftSort == item.Key.ShiftSort &&
qitem.CourseSTime == item.Key.CourseSTime
).ToList();
if (Common.ConvertHelper.FormatDate(ClassDate) == "2022-07-08")
{
string str = "";
}
subList.Add(new subList.Add(new
{ {
ClassType = 3, ClassType = 3,
...@@ -4747,23 +4792,37 @@ namespace Edu.Module.Course ...@@ -4747,23 +4792,37 @@ namespace Edu.Module.Course
ClassName = "预约课", ClassName = "预约课",
item.Key.CourseId, item.Key.CourseId,
item.Key.CourseName, item.Key.CourseName,
item.Key.RoomId,
item.Key.RoomName, item.Key.RoomName,
item.Key.TeacherName, item.Key.TeacherName,
item.Key.CourseGradeId, subAppointList.FirstOrDefault().CourseGradeId,
CourseGradeName = item.Key.CourseGradeId.ToName(), ChapterNo = item.Key.ChapterNo,
Ranks = item.Key.CourseGradeNo, CourseGradeName = subAppointList.FirstOrDefault().CourseGradeId.ToName(),
TotalPlanNum = item.FirstOrDefault().TotalChapterNo, Ranks = subAppointList.FirstOrDefault().CourseGradeNo,
TotalPlanNum = subAppointList.FirstOrDefault().TotalChapterNo,
StartTime = STime, StartTime = STime,
EndTime = ETime, EndTime = ETime,
CompleteProgress = -1, CompleteProgress = -1,
GuestList = item.Select(qitem => new { GuestName = qitem.StuName, qitem.StuId, AppointmentId = qitem.Id, qitem.AppointType }), GuestList = subAppointList.Select(qitem => new
{
GuestName = qitem.StuName,
qitem.StuId,
qitem.GuestId,
AppointmentId = qitem.Id,
qitem.AppointType,
qitem.CourseGradeId,
qitem.LearnCourseId,
qitem.LearnCourseName,
qitem.CourseGradeNo,
CourseChapterNoName = chatperList?.FirstOrDefault(sItem => sItem.CourseId == qitem.LearnCourseId && sItem.ChapterNo == qitem.CourseGradeNo.ToString())?.ChapterName
}),
AppointState = item.Where(x => x.State == CourseAppointStateEnum.WaitSure).Any() ? 1 : 2, AppointState = item.Where(x => x.State == CourseAppointStateEnum.WaitSure).Any() ? 1 : 2,
item.Key.ShiftSort, item.Key.ShiftSort,
EnrollNum = item.Count(), EnrollNum = item.Count(),
item.FirstOrDefault().ScrollMinNum, subAppointList.FirstOrDefault().ScrollMinNum,
item.FirstOrDefault().ScrollMaxNum subAppointList.FirstOrDefault().ScrollMaxNum
}); });
}); }
var obj = new var obj = new
{ {
......
...@@ -676,15 +676,15 @@ namespace Edu.Module.Course ...@@ -676,15 +676,15 @@ namespace Edu.Module.Course
var clist = JsonHelper.DeserializeObject<List<CourseTimeModel>>(item.CourseTime); var clist = JsonHelper.DeserializeObject<List<CourseTimeModel>>(item.CourseTime);
//更新 order_guest 表 上课章节 请假也暂时先算完成课时(请假应该是有补课的) //更新 order_guest 表 上课章节 请假也暂时先算完成课时(请假应该是有补课的)
var gmodel = order_GuestRepository.GetEntity(item.GuestId); var gmodel = order_GuestRepository.GetEntity(item.GuestId);
if (gmodel != null && gmodel.CourseChapterNo < item.ChapterNo) if (gmodel != null && gmodel.CourseChapterNo < item.CourseGradeNo)
{ {
//ld 2022-03-08 修改为学员上课最大课时 //ld 2022-03-08 修改为学员上课最大课时
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() Dictionary<string, object> keyValues1 = new Dictionary<string, object>()
{ {
{ nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.CourseChapterNo), item.ChapterNo}, { nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.CourseChapterNo), item.CourseGradeNo},
{ nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.CompleteHours), item.ChapterNo * clist.Sum(x=>x.ClassHours)} { nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.CompleteHours), item.CourseGradeNo * clist.Sum(x=>x.ClassHours)}
}; };
if (gmodel.TotalChapterNo <= item.ChapterNo) if (gmodel.TotalChapterNo <= item.CourseGradeNo)
{ {
//章节已上完了 修改为 毕业 //章节已上完了 修改为 毕业
keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.GuestState), Common.Enum.Course.GuestStateEnum.Graduate); keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.GuestState), Common.Enum.Course.GuestStateEnum.Graduate);
......
...@@ -1866,19 +1866,22 @@ namespace Edu.Module.Course ...@@ -1866,19 +1866,22 @@ namespace Edu.Module.Course
foreach (var item in list) foreach (var item in list)
{ {
Dictionary<string, object> keyValues = new Dictionary<string, object>() { Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Scroll_Appointment_ViewModel.State), Common.Enum.Course.CourseAppointStateEnum.WaitCourse}, { nameof(RB_Scroll_Appointment_ViewModel.State), Common.Enum.Course.CourseAppointStateEnum.WaitCourse},
{ nameof(RB_Scroll_Appointment_ViewModel.ClassPlanId), planId}, { nameof(RB_Scroll_Appointment_ViewModel.ClassPlanId), planId},
{ nameof(RB_Scroll_Appointment_ViewModel.UpdateBy), userInfo.Id}, { nameof(RB_Scroll_Appointment_ViewModel.UpdateBy), userInfo.Id},
{ nameof(RB_Scroll_Appointment_ViewModel.UpdateTime), DateTime.Now} { nameof(RB_Scroll_Appointment_ViewModel.UpdateTime), DateTime.Now}
}; };
List<WhereHelper> wheres = new List<WhereHelper>() { List<WhereHelper> wheres = new List<WhereHelper>()
new WhereHelper(){ {
FiledName = nameof(RB_Scroll_Appointment_ViewModel.Id), new WhereHelper()
FiledValue = item.Id, {
OperatorEnum =OperatorEnum.Equal FiledName = nameof(RB_Scroll_Appointment_ViewModel.Id),
} FiledValue = item.Id,
}; OperatorEnum =OperatorEnum.Equal
}
};
flag = scroll_AppointmentRepository.Update(keyValues, wheres); flag = scroll_AppointmentRepository.Update(keyValues, wheres);
if (flag) if (flag)
{ {
...@@ -2477,7 +2480,23 @@ namespace Edu.Module.Course ...@@ -2477,7 +2480,23 @@ namespace Edu.Module.Course
/// <returns></returns> /// <returns></returns>
public List<RB_Student_OrderGuest_ViewModel> GetCanAppointmentStuList_V2(string stuName, int NextChapterGradeNo, int CourseGradeId, int SchoolId, int group_Id) public List<RB_Student_OrderGuest_ViewModel> GetCanAppointmentStuList_V2(string stuName, int NextChapterGradeNo, int CourseGradeId, int SchoolId, int group_Id)
{ {
return student_OrderGuestRepository.GetCanAppointmentStuList_V2(stuName, NextChapterGradeNo, CourseGradeId, SchoolId, group_Id); var list= student_OrderGuestRepository.GetCanAppointmentStuList_V2(stuName, NextChapterGradeNo, CourseGradeId, SchoolId, group_Id);
if (list != null && list.Count > 0)
{
string courseIds = string.Join(",", list.Select(qitem => qitem.CourseId).Distinct());
List<RB_Course_Chapter_ViewModel> courseChapterList = new List<RB_Course_Chapter_ViewModel>();
if (!string.IsNullOrEmpty(courseIds))
{
courseChapterList= course_ChapterRepository.GetChapterListRepository(new RB_Course_Chapter_ViewModel() { CourseIds = courseIds });
}
foreach (var item in list)
{
var tempChapter = courseChapterList?.FirstOrDefault(qitem => qitem.CourseId == item.CourseId && qitem.ChapterNo == item.CourseChapterNo.ToString());
item.CourseChapterNoName = tempChapter?.ChapterName??"";
item.CourseRate = tempChapter?.CourseRate ?? Common.Enum.Course.CourseRateEnum.N5;
}
}
return list;
} }
/// <summary> /// <summary>
...@@ -2537,7 +2556,8 @@ namespace Edu.Module.Course ...@@ -2537,7 +2556,8 @@ namespace Edu.Module.Course
NextAppointMinutes = chapterModel?.StudyMinutes ?? 0; NextAppointMinutes = chapterModel?.StudyMinutes ?? 0;
demodel.CourseGradeId = chapterModel?.CourseRate ?? 0; demodel.CourseGradeId = chapterModel?.CourseRate ?? 0;
demodel.CourseGradeNo = chapterModel?.ChapterGradeNo ?? 0; demodel.CourseGradeNo = chapterModel?.ChapterGradeNo ?? 0;
demodel.ChapterNo = Convert.ToInt32(chapterModel?.ChapterNo ?? "0"); //HK 2022-07-06注释
//demodel.ChapterNo = Convert.ToInt32(chapterModel?.ChapterNo ?? "0");
} }
#endregion #endregion
...@@ -2567,7 +2587,7 @@ namespace Edu.Module.Course ...@@ -2567,7 +2587,7 @@ namespace Edu.Module.Course
//再查询当日已预约情况 //再查询当日已预约情况
var appointList = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = demodel.Group_Id, StartTime = Date, EntTime = Date }); var appointList = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = demodel.Group_Id, StartTime = Date, EntTime = Date });
if (appointList.Where(x => x.StuId == demodel.StuId && x.ShiftSort == demodel.ShiftSort).Any()) if (demodel.Id<=0 && appointList.Where(x => x.StuId == demodel.StuId && x.ShiftSort == demodel.ShiftSort).Any())
{ {
return "已预约该时段,无法再次预约"; return "已预约该时段,无法再次预约";
} }
...@@ -2644,20 +2664,21 @@ namespace Edu.Module.Course ...@@ -2644,20 +2664,21 @@ namespace Edu.Module.Course
{ {
return "预约时长不正确"; return "预约时长不正确";
} }
if (timeList.Where(x => x.State == 2).Any()) if (demodel.Id<=0 && timeList.Where(x => x.State == 2).Any())
{ {
return "此时段不可预约,请刷新后再试"; return "此时段不可预约,请刷新后再试";
} }
foreach (var item in timeList.Where(x => x.State == 3)) foreach (var item in timeList.Where(x => x.State == 3))
{ {
if (demodel.CourseGradeId != item.CourseGradeId) // HK 2022-07-06注释 约课可能会不一致
{ //if (demodel.CourseGradeId != item.CourseGradeId)
return "预约课次等级不一致"; //{
} // return "预约课次等级不一致";
if (demodel.CourseGradeNo != item.CourseGradeNo) //}
{ //if (demodel.CourseGradeNo != item.CourseGradeNo)
return "预约课程章节不一致"; //{
} // return "预约课程章节不一致";
//}
if (item.PeopleNum + 1 > item.MaxPeopleNum) if (item.PeopleNum + 1 > item.MaxPeopleNum)
{ {
return "该时段已预约满,请预约其他时段"; return "该时段已预约满,请预约其他时段";
...@@ -2682,12 +2703,12 @@ namespace Edu.Module.Course ...@@ -2682,12 +2703,12 @@ namespace Edu.Module.Course
var appointList2 = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = demodel.Group_Id, GuestId = demodel.GuestId, CourseGradeId = demodel.CourseGradeId, CourseGradeNo = demodel.CourseGradeNo }); var appointList2 = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = demodel.Group_Id, GuestId = demodel.GuestId, CourseGradeId = demodel.CourseGradeId, CourseGradeNo = demodel.CourseGradeNo });
if (appointList2.Any()) if (appointList2.Any())
{ {
if (appointList2.Where(x => x.State == Common.Enum.Course.CourseAppointStateEnum.WaitSure).Any()) if (demodel.Id<=0 && appointList2.Where(x => x.State == Common.Enum.Course.CourseAppointStateEnum.WaitSure).Any())
{ {
return "预约的该次课已存在待确认的数据,无法再次预约"; return "学员【"+demodel.StuName+"】预约的该次课已存在待确认的数据,无法再次预约";
} }
int AgainNum = Convert.ToInt32(dictvalueRepository.GetList(new RB_Dictvalue_Extend() { RB_Group_id = demodel.Group_Id, DictKey = "Scroll_AgainCourse" }).FirstOrDefault()?.Content ?? "1"); int AgainNum = Convert.ToInt32(dictvalueRepository.GetList(new RB_Dictvalue_Extend() { RB_Group_id = demodel.Group_Id, DictKey = "Scroll_AgainCourse" }).FirstOrDefault()?.Content ?? "1");
if (appointList2.Where(x => x.AppointType == 3).Count() >= AgainNum) if (demodel.Id<=0 && appointList2.Where(x => x.AppointType == 3).Count() >= AgainNum)
{ {
return "当次进度重上次数已用完"; return "当次进度重上次数已用完";
} }
...@@ -2702,7 +2723,16 @@ namespace Edu.Module.Course ...@@ -2702,7 +2723,16 @@ namespace Edu.Module.Course
#endregion #endregion
//验证都OK了 插入预约数据 //验证都OK了 插入预约数据
AppointId = scroll_AppointmentRepository.Insert(demodel); if (demodel.Id <= 0)
{
AppointId = scroll_AppointmentRepository.Insert(demodel);
}
else
{
//scroll_AppointmentRepository.Update(demodel);
AppointId = demodel.Id;
}
bool flag = AppointId > 0; bool flag = AppointId > 0;
if (flag) if (flag)
{ {
......
...@@ -254,7 +254,8 @@ ORDER BY r.Id desc "; ...@@ -254,7 +254,8 @@ ORDER BY r.Id desc ";
} }
string sql = $@" string sql = $@"
SELECT r.*,c.AccountId as TeacherId,c.WorkUserId,t.TeacherName,t.TeacherHead,s.StuName,sch.OpenId as StuOpenId,cou.CourseName,cou.ScrollMinNum,cou.ScrollMaxNum,cou.CourseTimeId,cr.RoomName,cr.School_Id as RoomSchoolId,sc.SName as RoomSchoolName ,og.TotalChapterNo SELECT r.*,c.AccountId as TeacherId,c.WorkUserId,t.TeacherName,t.TeacherHead,s.StuName,sch.OpenId as StuOpenId,cou.CourseName,cou.ScrollMinNum,cou.ScrollMaxNum,cou.CourseTimeId,cr.RoomName
,cr.School_Id as RoomSchoolId,sc.SName as RoomSchoolName ,og.TotalChapterNo,IFNULL(c2.CourseName,'') AS LearnCourseName
From RB_Scroll_Appointment r From RB_Scroll_Appointment r
inner join rb_order_guest og on r.GuestId = og.Id inner join rb_order_guest og on r.GuestId = og.Id
inner join rb_account c on r.AccountId = c.Id inner join rb_account c on r.AccountId = c.Id
...@@ -262,6 +263,7 @@ inner join rb_teacher t on c.AccountId = t.TId ...@@ -262,6 +263,7 @@ inner join rb_teacher t on c.AccountId = t.TId
inner join rb_student s on r.StuId = s.StuId inner join rb_student s on r.StuId = s.StuId
inner join rb_account sch on sch.AccountId = s.StuId and sch.AccountType =4 inner join rb_account sch on sch.AccountId = s.StuId and sch.AccountType =4
inner join rb_course cou on r.CourseId = cou.CourseId inner join rb_course cou on r.CourseId = cou.CourseId
LEFT JOIN rb_course c2 ON r.LearnCourseId=c2.CourseId
inner join rb_class_room cr on r.RoomId = cr.RoomId inner join rb_class_room cr on r.RoomId = cr.RoomId
left join rb_school sc on sc.SId = cr.School_Id left join rb_school sc on sc.SId = cr.School_Id
WHERE {where} WHERE {where}
......
This diff is collapsed.
...@@ -387,13 +387,31 @@ ORDER BY {(Type == 1 ? "og.Id asc" : "og.Id desc")} LIMIT 1"; ...@@ -387,13 +387,31 @@ ORDER BY {(Type == 1 ? "og.Id asc" : "og.Id desc")} LIMIT 1";
/// <returns></returns> /// <returns></returns>
public RB_Student_OrderGuest_ViewModel GetStudentLearningCourse(int accountId, int group_Id, int guestId =0) public RB_Student_OrderGuest_ViewModel GetStudentLearningCourse(int accountId, int group_Id, int guestId =0)
{ {
string sql = $@"SELECT og.*,o.CourseId,g.CourseChapterNo,c.ClassScrollType,o.ScrollSchoolId string sql = $@"
SELECT og.*,o.CourseId,g.CourseChapterNo,c.ClassScrollType,o.ScrollSchoolId
FROM rb_student_orderguest og FROM rb_student_orderguest og
INNER JOIN rb_order_guest g on og.GuestId = g.Id INNER JOIN rb_order_guest g on og.GuestId = g.Id
INNER JOIN rb_order o on og.OrderId = o.OrderId INNER JOIN rb_order o on og.OrderId = o.OrderId
INNER JOIN rb_class c on o.ClassId = c.ClassId INNER JOIN rb_class c on o.ClassId = c.ClassId
WHERE og.Status =0 and g.`Status` =0 and o.Group_Id ={group_Id} and o.OrderState <>3 and o.OrderType =1 {(guestId > 0 ? "" : "and g.TotalHours > g.CompleteHours")} and og.Student_Id ={accountId} {(guestId > 0 ? "and og.GuestId =" + guestId : "")} WHERE og.Status =0 AND g.`Status` =0 AND o.OrderState <>3 AND o.OrderType =1
ORDER BY og.Id asc LIMIT 1"; ";
if (group_Id > 0)
{
sql += $" AND o.Group_Id ={group_Id} ";
}
if (accountId > 0)
{
sql += $" AND og.Student_Id ={ accountId} ";
}
if (guestId > 0)
{
sql += $" AND og.GuestId ={guestId} ";
}
else
{
sql += " AND g.TotalHours > g.CompleteHours ";
}
sql += " ORDER BY og.Id ASC LIMIT 1 ";
return Get<RB_Student_OrderGuest_ViewModel>(sql).FirstOrDefault(); return Get<RB_Student_OrderGuest_ViewModel>(sql).FirstOrDefault();
} }
...@@ -844,6 +862,7 @@ and og.TotalChapterNo > og.CourseChapterNo and (og.CourseChapterNo + 1 + IFNULL( ...@@ -844,6 +862,7 @@ and og.TotalChapterNo > og.CourseChapterNo and (og.CourseChapterNo + 1 + IFNULL(
/// <returns></returns> /// <returns></returns>
public List<RB_Student_OrderGuest_ViewModel> GetCanAppointmentStuList_V2(string stuName, int NextChapterGradeNo, int CourseGradeId, int SchoolId, int group_Id) public List<RB_Student_OrderGuest_ViewModel> GetCanAppointmentStuList_V2(string stuName, int NextChapterGradeNo, int CourseGradeId, int SchoolId, int group_Id)
{ {
DynamicParameters parameters = new DynamicParameters();
string sql = $@" string sql = $@"
SELECT sog.Student_Id,sog.GuestId,sog.OrderId,cou.CourseName,s.StuName as GuestName,og.CourseChapterNo,sa.AppointNum,ss.MakeUpNum SELECT sog.Student_Id,sog.GuestId,sog.OrderId,cou.CourseName,s.StuName as GuestName,og.CourseChapterNo,sa.AppointNum,ss.MakeUpNum
,o.CourseId ,o.CourseId
...@@ -855,21 +874,27 @@ INNER JOIN rb_student s on sog.Student_Id = s.StuId ...@@ -855,21 +874,27 @@ INNER JOIN rb_student s on sog.Student_Id = s.StuId
INNER JOIN rb_class c on o.ClassId = c.ClassId INNER JOIN rb_class c on o.ClassId = c.ClassId
LEFT JOIN ( LEFT JOIN (
SELECT sa1.StuId,COUNT(0) as AppointNum SELECT sa1.StuId,COUNT(0) as AppointNum
FROM rb_scroll_appointment sa1 INNER JOIN rb_student s1 on sa1.StuId = s1.StuId FROM rb_scroll_appointment sa1
WHERE sa1.`Status` =0 and sa1.State <>5 and sa1.Group_Id ={group_Id} and s1.StuName LIKE '%{stuName}%' and sa1.CourseGradeId ={CourseGradeId} and sa1.CourseGradeNo ={NextChapterGradeNo} GROUP BY sa1.StuId WHERE sa1.`Status` =0 and sa1.State <>5 and sa1.Group_Id ={group_Id} and sa1.CourseGradeId ={CourseGradeId} and sa1.CourseGradeNo ={NextChapterGradeNo} GROUP BY sa1.StuId
) sa on sog.Student_Id = sa.StuId ) sa on sog.Student_Id = sa.StuId
LEFT JOIN ( LEFT JOIN (
SELECT ss1.StuId,COUNT(0) as MakeUpNum SELECT ss1.StuId,COUNT(0) as MakeUpNum
FROM rb_scroll_skipcourse ss1 INNER JOIN rb_student s1 on ss1.StuId = s1.StuId FROM rb_scroll_skipcourse ss1
WHERE ss1.`Status` =0 and ss1.State =1 and ss1.Group_Id ={group_Id} and s1.StuName LIKE '%{stuName}%' and ss1.CourseGradeId ={CourseGradeId} and ss1.CourseGradeNo ={NextChapterGradeNo} GROUP BY ss1.StuId WHERE ss1.`Status` =0 and ss1.State =1 and ss1.Group_Id ={group_Id} and ss1.CourseGradeId ={CourseGradeId} and ss1.CourseGradeNo ={NextChapterGradeNo} GROUP BY ss1.StuId
) ss on sog.Student_Id = ss.StuId ) ss on sog.Student_Id = ss.StuId
WHERE o.Group_Id ={group_Id} and sog.`Status` =0 and og.GuestState NOT IN(2,7) and o.OrderState <>3 and c.ClassScrollType =2 and s.StuName LIKE '%{stuName}%'"; WHERE o.Group_Id ={group_Id} and sog.`Status` =0 and og.GuestState NOT IN(2,7) and o.OrderState <>3 and c.ClassScrollType =2 ";
if (!string.IsNullOrEmpty(stuName))
{
sql += " AND s.StuName LIKE @stuName ";
parameters.Add("stuName", "%" + stuName + "%");
}
if (SchoolId >= 0) if (SchoolId >= 0)
{ {
sql += $@" and o.ScrollSchoolId ={SchoolId}"; sql += $@" and o.ScrollSchoolId ={SchoolId}";
} }
sql += string.Format(@" AND EXISTS (SELECT 1 FROM rb_course_chapter WHERE Status=0 AND CourseId= o.CourseId AND ParentId =0 AND ChapterGradeNo ={0} AND CourseRate ={1})", NextChapterGradeNo, CourseGradeId); sql += string.Format(@" AND EXISTS (SELECT 1 FROM rb_course_chapter WHERE Status=0 AND CourseId= o.CourseId AND ParentId =0 AND ChapterGradeNo ={0} AND CourseRate ={1})", NextChapterGradeNo, CourseGradeId);
return Get<RB_Student_OrderGuest_ViewModel>(sql).ToList(); return Get<RB_Student_OrderGuest_ViewModel>(sql, parameters).ToList();
} }
/// <summary> /// <summary>
......
...@@ -701,13 +701,15 @@ namespace Edu.WebApi.Controllers.Course ...@@ -701,13 +701,15 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.ParamIsNull(message: "请传递课程编号!"); return ApiResult.ParamIsNull(message: "请传递课程编号!");
} }
query.Group_Id = base.UserInfo.Group_Id; query.Group_Id = base.UserInfo.Group_Id;
var list = courseModule.GetChapterListModule(query).OrderBy(qitem => qitem.ChapterGradeNo).ToList(); var list = courseModule.GetChapterListModule(query).OrderBy(qitem => qitem.SortNum).ToList();
return ApiResult.Success(data: list.Select(qitem => new return ApiResult.Success(data: list.Select(qitem => new
{ {
qitem.ChapterId, qitem.ChapterId,
qitem.ChapterNo, qitem.ChapterNo,
qitem.ChapterGradeNo, qitem.ChapterGradeNo,
qitem.ChapterName, qitem.ChapterName,
qitem.CourseRate,
CourseRateName= qitem.CourseRate.ToName(),
})); }));
} }
......
using Edu.Common.API; using Edu.Common.API;
using Edu.Common.Plugin; using Edu.Common.Plugin;
using Edu.Model.ViewModel.Scroll;
using Edu.Model.ViewModel.User; using Edu.Model.ViewModel.User;
using Edu.Module.Course; using Edu.Module.Course;
using Edu.WebApi.Filter; using Edu.WebApi.Filter;
...@@ -91,6 +92,74 @@ namespace Edu.WebApi.Controllers.Course ...@@ -91,6 +92,74 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.Success(data: data); return ApiResult.Success(data: data);
} }
/// <summary>
/// 后台新增学员预约
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetPlanAppointment()
{
var userInfo = base.UserInfo;
var model = new RB_Plan_Appointment_ViewModel()
{
Id = base.ParmJObj.GetInt("Id"),
Date = base.ParmJObj.GetDateTime("Date"),
StartTime = base.ParmJObj.GetStringValue("StartTime"),
EndTime = base.ParmJObj.GetStringValue("EndTime"),
Group_Id = userInfo.Group_Id,
CreateTime = DateTime.Now
};
if (string.IsNullOrEmpty(base.ParmJObj.GetStringValue("Date")))
{
return ApiResult.ParamIsNull(message: "请选择预约日期");
}
if (string.IsNullOrEmpty(model.StartTime)|| string.IsNullOrEmpty(model.EndTime))
{
return ApiResult.ParamIsNull(message: "请选择预约时段");
}
if (base.ParmJObj.GetInt("StuId") <= 0)
{
return ApiResult.ParamIsNull(message: "请选择预约学员");
}
model.DetailsList = new List<RB_Plan_Appointment_Details_ViewModel>
{
new RB_Plan_Appointment_Details_ViewModel()
{
DetailsId = base.ParmJObj.GetInt("DetailsId"),
PlanAppointmentId = 0,
StuId = base.ParmJObj.GetInt("StuId"),
Account_Id = base.ParmJObj.GetInt("Account_Id"),
Status = 0,
CreateTime = DateTime.Now
}
};
bool flag = planAppoiment.SetPlanAppointmentModule(model);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 获取预约时间段
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetTimeList()
{
var list = planAppoiment.GetScrollCourseTimeList(base.UserInfo.Group_Id);
return ApiResult.Success(data: list);
}
/// <summary>
/// 学员删除预约信息
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult RemovePlanAppointment()
{
int DetailsId = base.ParmJObj.GetInt("DetailsId");
bool flag = planAppoiment.RemovePlanAppointmentModule(DetailsId);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary> /// <summary>
/// 下载学员预约统计信息 /// 下载学员预约统计信息
/// </summary> /// </summary>
......
...@@ -772,9 +772,11 @@ namespace Edu.WebApi.Controllers.Course ...@@ -772,9 +772,11 @@ namespace Edu.WebApi.Controllers.Course
x.OrderId, x.OrderId,
x.CourseName, x.CourseName,
x.CourseChapterNo, x.CourseChapterNo,
x.CourseChapterNoName,
x.AppointNum, x.AppointNum,
State = x.AppointNum > 0 ? 3 : 1, State = x.AppointNum > 0 ? 3 : 1,
x.CourseId, x.CourseId,
x.CourseRate,
//抵消课程章节编号,前台使用 //抵消课程章节编号,前台使用
Consume_CourseGradeNo=0, Consume_CourseGradeNo=0,
})); }));
...@@ -800,7 +802,6 @@ namespace Edu.WebApi.Controllers.Course ...@@ -800,7 +802,6 @@ namespace Edu.WebApi.Controllers.Course
StuId = base.ParmJObj.GetInt("StuId"), StuId = base.ParmJObj.GetInt("StuId"),
StuName = base.ParmJObj.GetStringValue("StuName"), StuName = base.ParmJObj.GetStringValue("StuName"),
TeacherId = base.ParmJObj.GetInt("TeacherId"), TeacherId = base.ParmJObj.GetInt("TeacherId"),
Consume_CourseGradeNo=base.ParmJObj.GetInt("Consume_CourseGradeNo"),
}; };
if (demodel.TeacherId <= 0) if (demodel.TeacherId <= 0)
{ {
...@@ -855,6 +856,113 @@ namespace Edu.WebApi.Controllers.Course ...@@ -855,6 +856,113 @@ namespace Edu.WebApi.Controllers.Course
} }
} }
/// <summary>
/// 后台预约课[HK2022-07-06修改]
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetAdminScrollAppointment_V3()
{
var userInfo = base.UserInfo;
RB_Scroll_Appointment_ViewModel demodel = new RB_Scroll_Appointment_ViewModel()
{
CourseId = base.ParmJObj.GetInt("CourseId"),
CourseGradeNo=base.ParmJObj.GetInt("CourseGradeNo"),
Date = base.ParmJObj.GetDateTime("Date"),
RoomId = base.ParmJObj.GetInt("RoomId"),
ShiftSort = base.ParmJObj.GetStringValue("ShiftSort"),
TeacherId = base.ParmJObj.GetInt("TeacherId"),
ChapterNo=base.ParmJObj.GetInt("ChapterNo"),
};
demodel.State = CourseAppointStateEnum.WaitSure;
demodel.Status = 0;
demodel.Group_Id = userInfo.Group_Id;
demodel.CreateBy = userInfo.Id;
demodel.UpdateBy = userInfo.Id;
string chooseStuListStr = base.ParmJObj.GetStringValue("ChooseStuList");
List<RB_Scroll_Appointment_ViewModel> list = new List<RB_Scroll_Appointment_ViewModel>();
if (!string.IsNullOrEmpty(chooseStuListStr))
{
JArray jArray = JArray.Parse(chooseStuListStr);
if (jArray != null && jArray.Count > 0)
{
foreach (var item in jArray)
{
JObject sObj = JObject.Parse(JsonHelper.Serialize(item));
var newModel = Common.ConvertHelper.Clone<RB_Scroll_Appointment_ViewModel>(demodel);
newModel.LearnCourseId = sObj.GetInt("CourseId");
newModel.StuId = sObj.GetInt("StuId");
newModel.CourseGradeId = (CourseRateEnum)sObj.GetInt("CourseGradeId");
newModel.GuestId = sObj.GetInt("GuestId");
newModel.CourseGradeNo = sObj.GetInt("CourseGradeNo");
newModel.Consume_CourseGradeNo = sObj.GetInt("Consume_CourseGradeNo");
newModel.CreateTime = DateTime.Now;
newModel.UpdateTime = DateTime.Now;
newModel.Id = sObj.GetInt("AppointmentId");
newModel.StuName = sObj.GetStringValue("StuName");
list.Add(newModel);
}
}
}
if (!list.Any())
{
return ApiResult.ParamIsNull(message: "请选择学员");
}
if (demodel.TeacherId <= 0)
{
return ApiResult.ParamIsNull("请传递老师编号ID");
}
if (string.IsNullOrEmpty(demodel.ShiftSort))
{
return ApiResult.ParamIsNull("请传递上课时段");
}
if (list.Where(qitem => qitem.StuId == 0).Count() > 0)
{
return ApiResult.ParamIsNull("请传递学生ID");
}
if (list.Where(qitem => qitem.GuestId == 0).Count() > 0)
{
return ApiResult.ParamIsNull("请传递学生ID");
}
//if (demodel.CourseGradeId <= 0 && demodel.CourseGradeNo <= 0)
//{
// return ApiResult.ParamIsNull("请传递上课的等级");
//}
#region 验证是否连续的时段
List<int> SortList = JsonHelper.DeserializeObject<List<int>>("[" + demodel.ShiftSort + "]");
int MinSort = SortList.Min(x => x);
string ShiftSort = "";
for (var i = 0; i < SortList.Count(); i++)
{
ShiftSort += (MinSort + i) + ",";
}
if (ShiftSort != demodel.ShiftSort + ",")
{
return ApiResult.ParamIsNull("需预约连续的时段");
}
#endregion
string msg = "";
foreach (var item in list)
{
msg += scrollClassModule.SetAdminScrollAppointment_V2(item, out int AppointId);
}
if (msg == "")
{
return ApiResult.Success("");
}
else
{
return ApiResult.Failed(msg);
}
}
/// <summary> /// <summary>
/// 补历史约课 /// 补历史约课
/// </summary> /// </summary>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment