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

约课修改

parent cca32e18
......@@ -4,6 +4,7 @@ using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
......@@ -679,16 +680,18 @@ namespace Edu.Common
/// <returns></returns>
public static T Clone<T>(T obj)
{
T ret = default(T);
if (obj != null)
object retval;
using (MemoryStream ms = new MemoryStream())
{
XmlSerializer cloner = new XmlSerializer(typeof(T));
MemoryStream stream = new MemoryStream();
cloner.Serialize(stream, obj);
stream.Seek(0, SeekOrigin.Begin);
ret = (T)cloner.Deserialize(stream);
BinaryFormatter bf = new BinaryFormatter();
//序列化成流
bf.Serialize(ms, obj);
ms.Seek(0, SeekOrigin.Begin);
//反序列化成对象
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
/// <summary>
/// 滚动开班预约扩展类
/// </summary>
[Serializable]
public class RB_Scroll_Appointment_ViewModel : RB_Scroll_Appointment
{
/// <summary>
......@@ -65,6 +66,11 @@ namespace Edu.Model.ViewModel.Scroll
/// </summary>
public string CourseName { get; set; }
/// <summary>
/// 具体学习课程
/// </summary>
public string LearnCourseName { get; set; }
/// <summary>
/// 教室名称
/// </summary>
......
......@@ -174,5 +174,10 @@ namespace Edu.Model.ViewModel.User
/// 对应专业
/// </summary>
public CourseRateEnum CourseRate { get; set; }
/// <summary>
/// 已上课章节名称
/// </summary>
public string CourseChapterNoName { get; set; }
}
}
......@@ -216,7 +216,10 @@ namespace Edu.Module.Course
/// </summary>
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>
......@@ -4670,6 +4673,18 @@ namespace Edu.Module.Course
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 });
......@@ -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 ?? "";
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
{
ClassType = 3,
......@@ -4747,23 +4792,37 @@ namespace Edu.Module.Course
ClassName = "预约课",
item.Key.CourseId,
item.Key.CourseName,
item.Key.RoomId,
item.Key.RoomName,
item.Key.TeacherName,
item.Key.CourseGradeId,
CourseGradeName = item.Key.CourseGradeId.ToName(),
Ranks = item.Key.CourseGradeNo,
TotalPlanNum = item.FirstOrDefault().TotalChapterNo,
subAppointList.FirstOrDefault().CourseGradeId,
ChapterNo = item.Key.ChapterNo,
CourseGradeName = subAppointList.FirstOrDefault().CourseGradeId.ToName(),
Ranks = subAppointList.FirstOrDefault().CourseGradeNo,
TotalPlanNum = subAppointList.FirstOrDefault().TotalChapterNo,
StartTime = STime,
EndTime = ETime,
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,
item.Key.ShiftSort,
EnrollNum = item.Count(),
item.FirstOrDefault().ScrollMinNum,
item.FirstOrDefault().ScrollMaxNum
subAppointList.FirstOrDefault().ScrollMinNum,
subAppointList.FirstOrDefault().ScrollMaxNum
});
});
}
var obj = new
{
......
......@@ -676,15 +676,15 @@ namespace Edu.Module.Course
var clist = JsonHelper.DeserializeObject<List<CourseTimeModel>>(item.CourseTime);
//更新 order_guest 表 上课章节 请假也暂时先算完成课时(请假应该是有补课的)
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 修改为学员上课最大课时
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.CompleteHours), item.ChapterNo * clist.Sum(x=>x.ClassHours)}
{ nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.CourseChapterNo), item.CourseGradeNo},
{ 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);
......
......@@ -1866,19 +1866,22 @@ namespace Edu.Module.Course
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.ClassPlanId), planId},
{ nameof(RB_Scroll_Appointment_ViewModel.UpdateBy), userInfo.Id},
{ nameof(RB_Scroll_Appointment_ViewModel.UpdateTime), DateTime.Now}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Scroll_Appointment_ViewModel.Id),
FiledValue = item.Id,
OperatorEnum =OperatorEnum.Equal
}
};
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName = nameof(RB_Scroll_Appointment_ViewModel.Id),
FiledValue = item.Id,
OperatorEnum =OperatorEnum.Equal
}
};
flag = scroll_AppointmentRepository.Update(keyValues, wheres);
if (flag)
{
......@@ -2477,7 +2480,23 @@ namespace Edu.Module.Course
/// <returns></returns>
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>
......@@ -2537,7 +2556,8 @@ namespace Edu.Module.Course
NextAppointMinutes = chapterModel?.StudyMinutes ?? 0;
demodel.CourseGradeId = chapterModel?.CourseRate ?? 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
......@@ -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 });
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 "已预约该时段,无法再次预约";
}
......@@ -2644,20 +2664,21 @@ namespace Edu.Module.Course
{
return "预约时长不正确";
}
if (timeList.Where(x => x.State == 2).Any())
if (demodel.Id<=0 && timeList.Where(x => x.State == 2).Any())
{
return "此时段不可预约,请刷新后再试";
}
foreach (var item in timeList.Where(x => x.State == 3))
{
if (demodel.CourseGradeId != item.CourseGradeId)
{
return "预约课次等级不一致";
}
if (demodel.CourseGradeNo != item.CourseGradeNo)
{
return "预约课程章节不一致";
}
// HK 2022-07-06注释 约课可能会不一致
//if (demodel.CourseGradeId != item.CourseGradeId)
//{
// return "预约课次等级不一致";
//}
//if (demodel.CourseGradeNo != item.CourseGradeNo)
//{
// return "预约课程章节不一致";
//}
if (item.PeopleNum + 1 > item.MaxPeopleNum)
{
return "该时段已预约满,请预约其他时段";
......@@ -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 });
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");
if (appointList2.Where(x => x.AppointType == 3).Count() >= AgainNum)
if (demodel.Id<=0 && appointList2.Where(x => x.AppointType == 3).Count() >= AgainNum)
{
return "当次进度重上次数已用完";
}
......@@ -2702,7 +2723,16 @@ namespace Edu.Module.Course
#endregion
//验证都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;
if (flag)
{
......
......@@ -254,7 +254,8 @@ ORDER BY r.Id desc ";
}
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
inner join rb_order_guest og on r.GuestId = og.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
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_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
left join rb_school sc on sc.SId = cr.School_Id
WHERE {where}
......
......@@ -70,7 +70,7 @@ namespace Edu.Repository.User
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentListRepository(RB_Student_ViewModel query,bool isQueryCreateType=false,bool isQueryAssist=false)
public List<RB_Student_ViewModel> GetStudentListRepository(RB_Student_ViewModel query, bool isQueryCreateType = false, bool isQueryAssist = false)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
......@@ -87,9 +87,10 @@ WHERE 1=1
else
{
builder.AppendFormat(@"
SELECT t.*,g.GroupName,s.SName
SELECT t.*,g.GroupName,s.SName,acc.Id AS Account_Id
FROM rb_student AS t LEFT JOIN rb_group AS g ON t.Group_Id=g.GId
LEFT JOIN rb_school AS s ON t.School_Id=s.SId
LEFT JOIN rb_account AS acc ON t.StuId=acc.AccountId AND acc.AccountType=4
WHERE 1=1
");
}
......@@ -217,8 +218,8 @@ WHERE 1=1
tempStr += "(" + (tempCustomer?.CategoryName ?? "") + ")";
}
}
item.StuSourceIdName = tempStr ;
item.StuSourceIdName = tempStr;
}
else if (item.CreateType == StuCreateTypeEnum.TransIntroduction)
{
......@@ -250,7 +251,7 @@ WHERE 1=1
{
var sql = "select Count(0) from rb_student_orderguest a left join rb_order b on a.OrderId=b.OrderId where a.Student_Id=@stuId and b.OrderState!=3";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("stuId",studentId);
parameters.Add("stuId", studentId);
var result = ExecuteScalar(sql, parameters);
return Convert.ToInt32(result);
}
......@@ -296,7 +297,7 @@ WHERE 1=1
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.School_Id), query.School_Id);
}
if (query.QStudentType == 1)
{
builder.AppendFormat(" AND t.{0}=0 ", nameof(RB_Student_ViewModel.CustomerId));
......@@ -350,7 +351,7 @@ WHERE 1=1
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.AreaId), query.AreaId);
}
if (query.StuStage > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.StuStage), (int)query.StuStage);
......@@ -392,7 +393,7 @@ WHERE 1=1
", tempCreateIds.TrimStart(',').TrimEnd(','));
}
//我负责的
if (query.BelongType == 2 && query.CreateBy>0)
if (query.BelongType == 2 && query.CreateBy > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.CreateBy), query.CreateBy);
}
......@@ -402,7 +403,7 @@ WHERE 1=1
builder.AppendFormat(" AND t.StuId IN (SELECT StuId FROM rb_student_assist WHERE AssistId={0} AND `Status`=0) ", query.CreateBy);
}
//我下属的
if (query.BelongType == 4 )
if (query.BelongType == 4)
{
if (query.CreateIds != null && query.CreateIds.Count > 0)
{
......@@ -462,8 +463,8 @@ WHERE 1=1
}
if (query.CreateType > 0 && query.StuSourceId > 0)
{
builder.AppendFormat(" AND t.{0}={1} AND t.{2}={3} ",
nameof(RB_Student_ViewModel.CreateType),
builder.AppendFormat(" AND t.{0}={1} AND t.{2}={3} ",
nameof(RB_Student_ViewModel.CreateType),
(int)query.CreateType,
nameof(RB_Student_ViewModel.StuSourceId),
query.StuSourceId);
......@@ -550,7 +551,8 @@ WHERE o.OrderState=1 and og.`Status`=0 and sog.`Status`=0 and og.GuestState <>2
/// <param name="guestIds"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentClassNumber(string guestIds, int groupId) {
public List<RB_Student_ViewModel> GetStudentClassNumber(string guestIds, int groupId)
{
string sql = $@"SELECT GuestId,COUNT(0) as CompleteHours FROM rb_scroll_appointment
WHERE Group_Id ={groupId} and `Status`=0 and State =3 and AppointType =1 and GuestId in({guestIds})
GROUP BY GuestId";
......@@ -615,7 +617,7 @@ GROUP BY GuestId";
}
if (oldModel.StuPurpose != model.StuPurpose)
{
string oldName = learningGoalsRepository.GetLearningGoalsExtEntityRepository(oldModel.StuPurpose)?.Name??"" ;
string oldName = learningGoalsRepository.GetLearningGoalsExtEntityRepository(oldModel.StuPurpose)?.Name ?? "";
string newName = learningGoalsRepository.GetLearningGoalsExtEntityRepository(model.StuPurpose)?.Name ?? "";
logContent += string.Format("学习目的:由【{0}】=>【{1}】,", oldName, newName);
}
......@@ -636,7 +638,7 @@ GROUP BY GuestId";
if (oldModel.StuChannel != model.StuChannel)
{
string oldName = channelRepository.GetChannelExtEntityRepository(oldModel.StuChannel)?.Name ?? "";
string newName= channelRepository.GetChannelExtEntityRepository(model.StuChannel)?.Name ?? "";
string newName = channelRepository.GetChannelExtEntityRepository(model.StuChannel)?.Name ?? "";
logContent += string.Format("收客渠道:由【{0}】=>【{1}】,", oldName, newName);
}
if (oldModel.PlatformName != model.PlatformName)
......@@ -672,7 +674,7 @@ GROUP BY GuestId";
}
if (oldModel.CustomerId != model.CustomerId)
{
string oldName = customerRepository.GetEntity(oldModel.CustomerId)?.CustomerName??"";
string oldName = customerRepository.GetEntity(oldModel.CustomerId)?.CustomerName ?? "";
string newName = customerRepository.GetEntity(model.CustomerId)?.CustomerName ?? "";
logContent += string.Format("同行:由【{0}】=>【{1}】,", oldName, newName);
}
......@@ -750,7 +752,7 @@ GROUP BY GuestId";
var newId = base.Insert(model);
model.StuId = newId;
flag = newId > 0;
if (model.CreateType == Common.Enum.User.StuCreateTypeEnum.EmployeeInput)
if (model.CreateType == Common.Enum.User.StuCreateTypeEnum.EmployeeInput)
{
createBy = model.CreateBy;
}
......@@ -764,7 +766,7 @@ GROUP BY GuestId";
#region 处理学员账号信息
var accountModel= accountRepository.GetAccountListRepository(new RB_Account_ViewModel() { Group_Id = model.Group_Id, AccountType = Common.Enum.User.AccountTypeEnum.Student, AccountId = model.StuId }).FirstOrDefault();
var accountModel = accountRepository.GetAccountListRepository(new RB_Account_ViewModel() { Group_Id = model.Group_Id, AccountType = Common.Enum.User.AccountTypeEnum.Student, AccountId = model.StuId }).FirstOrDefault();
string account = "";
if (!string.IsNullOrEmpty(model.WeChatNo))
{
......@@ -822,7 +824,7 @@ GROUP BY GuestId";
/// <param name="StuStage"></param>
/// <param name="Uid"></param>
/// <returns></returns>
public bool SetStudentStageRepository(int StuId,int StuStage,int Uid)
public bool SetStudentStageRepository(int StuId, int StuStage, int Uid)
{
string logContent = "";
string logTitle = "";
......@@ -892,7 +894,7 @@ GROUP BY GuestId";
/// <param name="customerId"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Student_ViewModel> GetCustomerStuStageStatistics(int customerId,int CategoryId, int group_Id)
public List<RB_Student_ViewModel> GetCustomerStuStageStatistics(int customerId, int CategoryId, int group_Id)
{
StringBuilder builder = new StringBuilder();
if (customerId > 0)
......@@ -1021,7 +1023,7 @@ WHERE 1=1
/// 线索统计
/// </summary>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentStaticRepository(string createByIds,string startDate,string endDate)
public List<RB_Student_ViewModel> GetStudentStaticRepository(string createByIds, string startDate, string endDate)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
......@@ -1055,7 +1057,7 @@ WHERE 1=1
/// <param name="endDate">结束时间</param>
/// <param name="StuStage">客户阶段</param>
/// <returns></returns>
public Dictionary<string,List<RB_Student_ViewModel>> GetStudentClueRepository(RB_Student_ViewModel query)
public Dictionary<string, List<RB_Student_ViewModel>> GetStudentClueRepository(RB_Student_ViewModel query)
{
Dictionary<string, List<RB_Student_ViewModel>> dicList = new Dictionary<string, List<RB_Student_ViewModel>>();
string whereStr = "";
......@@ -1086,7 +1088,7 @@ WHERE 1=1
}
//今日
var todayList = Get<RB_Student_ViewModel>(string.Format(builder.ToString(),todayWhere)).ToList();
var todayList = Get<RB_Student_ViewModel>(string.Format(builder.ToString(), todayWhere)).ToList();
dicList.Add("today", todayList);
//昨日
......@@ -1112,7 +1114,7 @@ WHERE 1=1
{
curWeek += string.Format(" AND YEARWEEK(date_format(CreateTime,'%Y-%m-%d'),1) = YEARWEEK(now(),1) ");
}
var curWeekList=Get<RB_Student_ViewModel>(string.Format(builder.ToString(), curWeek)).ToList();
var curWeekList = Get<RB_Student_ViewModel>(string.Format(builder.ToString(), curWeek)).ToList();
dicList.Add("currentWeek", curWeekList);
//上周
......
......@@ -387,13 +387,31 @@ ORDER BY {(Type == 1 ? "og.Id asc" : "og.Id desc")} LIMIT 1";
/// <returns></returns>
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
INNER JOIN rb_order_guest g on og.GuestId = g.Id
INNER JOIN rb_order o on og.OrderId = o.OrderId
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 : "")}
ORDER BY og.Id asc LIMIT 1";
INNER JOIN rb_order_guest g on og.GuestId = g.Id
INNER JOIN rb_order o on og.OrderId = o.OrderId
INNER JOIN rb_class c on o.ClassId = c.ClassId
WHERE og.Status =0 AND g.`Status` =0 AND o.OrderState <>3 AND o.OrderType =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();
}
......@@ -844,6 +862,7 @@ and og.TotalChapterNo > og.CourseChapterNo and (og.CourseChapterNo + 1 + IFNULL(
/// <returns></returns>
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 = $@"
SELECT sog.Student_Id,sog.GuestId,sog.OrderId,cou.CourseName,s.StuName as GuestName,og.CourseChapterNo,sa.AppointNum,ss.MakeUpNum
,o.CourseId
......@@ -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
LEFT JOIN (
SELECT sa1.StuId,COUNT(0) as AppointNum
FROM rb_scroll_appointment sa1 INNER JOIN rb_student s1 on sa1.StuId = s1.StuId
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
FROM rb_scroll_appointment sa1
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
LEFT JOIN (
SELECT ss1.StuId,COUNT(0) as MakeUpNum
FROM rb_scroll_skipcourse ss1 INNER JOIN rb_student s1 on ss1.StuId = s1.StuId
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
FROM rb_scroll_skipcourse ss1
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
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)
{
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);
return Get<RB_Student_OrderGuest_ViewModel>(sql).ToList();
return Get<RB_Student_OrderGuest_ViewModel>(sql, parameters).ToList();
}
/// <summary>
......
......@@ -701,13 +701,15 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.ParamIsNull(message: "请传递课程编号!");
}
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
{
qitem.ChapterId,
qitem.ChapterNo,
qitem.ChapterGradeNo,
qitem.ChapterName,
qitem.CourseRate,
CourseRateName= qitem.CourseRate.ToName(),
}));
}
......
using Edu.Common.API;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Scroll;
using Edu.Model.ViewModel.User;
using Edu.Module.Course;
using Edu.WebApi.Filter;
......@@ -91,6 +92,74 @@ namespace Edu.WebApi.Controllers.Course
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>
......
......@@ -772,9 +772,11 @@ namespace Edu.WebApi.Controllers.Course
x.OrderId,
x.CourseName,
x.CourseChapterNo,
x.CourseChapterNoName,
x.AppointNum,
State = x.AppointNum > 0 ? 3 : 1,
x.CourseId,
x.CourseRate,
//抵消课程章节编号,前台使用
Consume_CourseGradeNo=0,
}));
......@@ -800,7 +802,6 @@ namespace Edu.WebApi.Controllers.Course
StuId = base.ParmJObj.GetInt("StuId"),
StuName = base.ParmJObj.GetStringValue("StuName"),
TeacherId = base.ParmJObj.GetInt("TeacherId"),
Consume_CourseGradeNo=base.ParmJObj.GetInt("Consume_CourseGradeNo"),
};
if (demodel.TeacherId <= 0)
{
......@@ -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>
......
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