From bc2ba96cb858ed2fcd15495ace690f32b9c15723 Mon Sep 17 00:00:00 2001 From: "PC68\\Administrator" <461671400@qq.com> Date: Wed, 4 Sep 2024 10:11:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Edu.Common/Enum/User/AttendanceMethodEnum.cs | 31 ++++ Edu.Model/Edu.Model.csproj | 4 + Edu.Model/Entity/Grade/RB_Class_Check.cs | 9 +- .../Entity/Scroll/RB_Scroll_Appointment.cs | 3 +- Edu.Model/Entity/Sell/RB_Order_Guest.cs | 25 +++ .../Grade/RB_Class_Check_ViewModel.cs | 5 + Edu.Model/ViewModel/Scroll/ScheduleQuery.cs | 48 ++++++ Edu.Model/ViewModel/Scroll/ScheduleResult.cs | 96 ++++++++++++ Edu.Module.Course/ClassModule.cs | 7 +- Edu.Module.Course/ScheduleCourseModule.cs | 148 +++++++++++++++++- .../Grade/RB_Class_CheckRepository.cs | 38 ++--- .../Scroll/ScheduleCourseRepository.cs | 84 +++++++++- .../Course/ScheduleCourseController.cs | 120 ++++++++++++++ 13 files changed, 578 insertions(+), 40 deletions(-) create mode 100644 Edu.Common/Enum/User/AttendanceMethodEnum.cs diff --git a/Edu.Common/Enum/User/AttendanceMethodEnum.cs b/Edu.Common/Enum/User/AttendanceMethodEnum.cs new file mode 100644 index 00000000..4ee5783f --- /dev/null +++ b/Edu.Common/Enum/User/AttendanceMethodEnum.cs @@ -0,0 +1,31 @@ +using Edu.Common.Plugin; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Edu.Common.Enum.User +{ + /// <summary> + /// å¦å‘˜ä¸Šè¯¾è€ƒå‹¤æ–¹å¼ + /// </summary> + public enum AttendanceMethodEnum + { + /// <summary> + /// 线下 + /// </summary> + [EnumField("线下")] + Offline = 1, + + /// <summary> + /// 线上 + /// </summary> + [EnumField("线上")] + Online = 2, + + /// <summary> + /// å½•æ’ + /// </summary> + [EnumField("录æ’")] + Video = 3, + } +} diff --git a/Edu.Model/Edu.Model.csproj b/Edu.Model/Edu.Model.csproj index 3a476278..c3113127 100644 --- a/Edu.Model/Edu.Model.csproj +++ b/Edu.Model/Edu.Model.csproj @@ -5,6 +5,10 @@ <NoWarn>$(NoWarn);NETSDK1138</NoWarn> </PropertyGroup> + <ItemGroup> + <None Remove="ViewModel\Scroll\ScheduleResult.cs~RF5a2d34.TMP" /> + </ItemGroup> + <ItemGroup> <PackageReference Include="VT.FW" Version="1.0.1" /> </ItemGroup> diff --git a/Edu.Model/Entity/Grade/RB_Class_Check.cs b/Edu.Model/Entity/Grade/RB_Class_Check.cs index ede5e6a0..c30aa0d9 100644 --- a/Edu.Model/Entity/Grade/RB_Class_Check.cs +++ b/Edu.Model/Entity/Grade/RB_Class_Check.cs @@ -1,4 +1,5 @@ using Edu.Common.Enum; +using Edu.Common.Enum.User; using System; using VT.FW.DB; @@ -98,5 +99,11 @@ namespace Edu.Model.Entity.Grade /// 补课状æ€(1-æ£å¸¸ï¼Œ2-å¯è¡¥è¯¾ï¼Œ3-ä¸å¯è¡¥è¯¾, 4-未处ç†) /// </summary> public int MakeUpStatus { get; set; } - } + + /// <summary> + /// 上课方å¼(1-线下;2-线上;3-录æ’) + /// </summary> + public AttendanceMethodEnum AttendanceMethod { get; set; } + + } } diff --git a/Edu.Model/Entity/Scroll/RB_Scroll_Appointment.cs b/Edu.Model/Entity/Scroll/RB_Scroll_Appointment.cs index 049bcb9c..163928af 100644 --- a/Edu.Model/Entity/Scroll/RB_Scroll_Appointment.cs +++ b/Edu.Model/Entity/Scroll/RB_Scroll_Appointment.cs @@ -1,5 +1,4 @@ -using Edu.Common.Enum; -using Edu.Common.Enum.Course; +using Edu.Common.Enum.Course; using System; using VT.FW.DB; diff --git a/Edu.Model/Entity/Sell/RB_Order_Guest.cs b/Edu.Model/Entity/Sell/RB_Order_Guest.cs index 10b6d8d7..5cbb0f64 100644 --- a/Edu.Model/Entity/Sell/RB_Order_Guest.cs +++ b/Edu.Model/Entity/Sell/RB_Order_Guest.cs @@ -246,5 +246,30 @@ namespace Edu.Model.Entity.Sell /// 课时å•ä»· (应收总金é¢-æ•™æè´¹-课件费)/总课时 2024-08-26 add by:W /// </summary> public decimal ClassUnitPrice { get; set; } + + /// <summary> + /// 排课状æ€(0-æ£å¸¸æŽ’课,1-æš‚åœæŽ’课) + /// </summary> + public int ScheduleStatus { get; set; } + + /// <summary> + /// æš‚åœæŽ’课截æ¢æ—¥æœŸ + /// </summary> + public DateTime StopDeadline { get; set; } + + /// <summary> + /// 排课备注 + /// </summary> + public string ScheduleRemark { get; set; } + + /// <summary> + /// 授课方å¼(1-线上;2-线下;3-录æ’) + /// </summary> + public int TeachingMethod { get; set; } + + /// <summary> + /// å¦ç®¡å¤‡æ³¨ + /// </summary> + public string XGRemark { get; set; } } } diff --git a/Edu.Model/ViewModel/Grade/RB_Class_Check_ViewModel.cs b/Edu.Model/ViewModel/Grade/RB_Class_Check_ViewModel.cs index 78d1354c..aa5b418f 100644 --- a/Edu.Model/ViewModel/Grade/RB_Class_Check_ViewModel.cs +++ b/Edu.Model/ViewModel/Grade/RB_Class_Check_ViewModel.cs @@ -277,5 +277,10 @@ namespace Edu.Model.ViewModel.Grade /// å¦ç”ŸID /// </summary> public int StuId { get; set; } + + /// <summary> + /// 上课计划ID + /// </summary> + public int ClassPlanId { get; set; } } } diff --git a/Edu.Model/ViewModel/Scroll/ScheduleQuery.cs b/Edu.Model/ViewModel/Scroll/ScheduleQuery.cs index e034e000..a75ccdde 100644 --- a/Edu.Model/ViewModel/Scroll/ScheduleQuery.cs +++ b/Edu.Model/ViewModel/Scroll/ScheduleQuery.cs @@ -16,9 +16,57 @@ namespace Edu.Model.ViewModel.Scroll /// </summary> public CourseRateEnum QCourseRate { get; set; } + /// <summary> + /// ç主任 + /// </summary> + public int QHeadMasterId { get; set; } + + /// <summary> + /// 结课状æ€(1-æ£å¸¸ï¼Œ7-毕业) + /// </summary> + public int QGuestState { get; set; } + + /// <summary> + /// æŽ’è¯¾çŠ¶æ€ 0-æ£å¸¸ï¼Œ 1-æš‚åœæŽ’课 + /// </summary> + public int QScheduleStatus { get; set; } = -1; + + /// <summary> + /// ä¸Šè¯¾æ–¹å¼ (1-线下,2-线上,3-录æ’) + /// </summary> + public int QTeachingMethod { get; set; } + + /// <summary> + /// å¦å‘˜å§“å + /// </summary> + public string QGuestName { get; set; } + /// <summary> /// é›†å›¢ç¼–å· /// </summary> public int Group_Id { get; set; } } + + + /// <summary> + /// 约课ç¾åˆ°æŸ¥è¯¢æ¡ä»¶ + /// </summary> + [Serializable] + public class ScrollAppointmentQuery + { + /// <summary> + /// 开始日期 + /// </summary> + public string StartDate { get; set; } + + /// <summary> + /// 结æŸæ—¥æœŸ + /// </summary> + public string EndDate { get; set; } + + /// <summary> + /// å¦å‘˜å称 + /// </summary> + public string GuestName { get; set; } + } } diff --git a/Edu.Model/ViewModel/Scroll/ScheduleResult.cs b/Edu.Model/ViewModel/Scroll/ScheduleResult.cs index 070f9bec..2337650d 100644 --- a/Edu.Model/ViewModel/Scroll/ScheduleResult.cs +++ b/Edu.Model/ViewModel/Scroll/ScheduleResult.cs @@ -1,6 +1,8 @@ using Edu.Common.Enum.Course; +using Edu.Common.Enum.User; using System; using System.Collections.Generic; +using VT.FW.DB; namespace Edu.Model.ViewModel.Scroll { @@ -8,6 +10,7 @@ namespace Edu.Model.ViewModel.Scroll /// 排课返回实体类 /// </summary> [Serializable] + [DB(ConnectionName = "DefaultConnection")] public class SchedulePlanResult { /// <summary> @@ -15,6 +18,11 @@ namespace Edu.Model.ViewModel.Scroll /// </summary> public int GuestId { get; set; } + /// <summary> + /// å¦å‘˜è¡¨ID + /// </summary> + public int StuId { get; set; } + /// <summary> /// 订å•ç¼–å· /// </summary> @@ -94,6 +102,16 @@ namespace Edu.Model.ViewModel.Scroll /// VIP总课次 /// </summary> public int TotalTimes { get; set; } + + /// <summary> + /// åœæ¢æŽ’课截æ¢æ—¶é—´ + /// </summary> + public DateTime StopDeadline { get; set; } + + /// <summary> + /// 排课备注 + /// </summary> + public string ScheduleRemark { get; set; } } @@ -101,6 +119,7 @@ namespace Edu.Model.ViewModel.Scroll /// 课程项目 /// </summary> [Serializable] + [DB(ConnectionName = "DefaultConnection")] public class PCourseItem { /// <summary> @@ -143,5 +162,82 @@ namespace Edu.Model.ViewModel.Scroll /// </summary> public decimal CurrentDeductionHours { get; set; } } + + + + /// <summary> + /// 约课ç¾åˆ°æŸ¥è¯¢ç»“æžœ + /// </summary> + [Serializable] + public class ScrollAppointmentResult + { + /// <summary> + /// 约课日期 + /// </summary> + public DateTime Date { get; set; } + + /// <summary> + /// 上课è€å¸ˆID + /// </summary> + public int AccountId { get; set; } + + /// <summary> + /// è€å¸ˆ + /// </summary> + public string TeacherName { get; set; } + + /// <summary> + /// å¦å‘˜ID + /// </summary> + public int GuestId { get; set; } + + /// <summary> + /// å¦å‘˜å§“å + /// </summary> + public string GuestName { get; set; } + + /// <summary> + /// 消课课程ID + /// </summary> + + public int LearnCourseId { get; set; } + + /// <summary> + /// æ¶ˆè¯¾ç« èŠ‚ + /// </summary> + public int CourseGradeNo { get; set; } + + /// <summary> + /// 生æˆä¸Šè¯¾è®¡åˆ’Id + /// </summary> + public int ClassPlanId { get; set; } + + /// <summary> + /// 课程å称 + /// </summary> + public string CourseName { get; set; } + + /// <summary> + /// 上课开始时间 + /// </summary> + public string StartTime { get; set; } + + /// <summary> + /// 上课结æŸæ—¶é—´ + /// </summary> + public string EndTime { get; set; } + + + /// <summary> + /// ç¾åˆ°ID + /// </summary> + public int ClassCheckId { get; set; } + + /// <summary> + /// è€ƒå‹¤æ–¹å¼ + /// </summary> + public AttendanceMethodEnum AttendanceMethod { get; set; } + + } } diff --git a/Edu.Module.Course/ClassModule.cs b/Edu.Module.Course/ClassModule.cs index 6cb162a9..c535af54 100644 --- a/Edu.Module.Course/ClassModule.cs +++ b/Edu.Module.Course/ClassModule.cs @@ -2093,12 +2093,7 @@ namespace Edu.Module.Course /// <returns></returns> public virtual async Task<bool> AddClassCheckModule(List<RB_Class_Check_ViewModel> list) { - bool flag = classCheckRepository.StudentCheckRepository(list,1); - //if (MessageCenterHub.GlobalContext != null) - //{ - // //通知教室端ç¾åˆ°æ›´æ–° - // await MessageCenterHub.GlobalContext.Clients.All.SendAsync("UpdateCheckin", "666"); - //} + bool flag = classCheckRepository.StudentCheckRepository(list); return flag; } diff --git a/Edu.Module.Course/ScheduleCourseModule.cs b/Edu.Module.Course/ScheduleCourseModule.cs index b7ba10c2..20aa5de5 100644 --- a/Edu.Module.Course/ScheduleCourseModule.cs +++ b/Edu.Module.Course/ScheduleCourseModule.cs @@ -1,11 +1,21 @@ -using Edu.Model.ViewModel.Scroll; +using Edu.Model.Entity.Grade; +using Edu.Model.Entity.Sell; +using Edu.Model.ViewModel.Course; +using Edu.Model.ViewModel.Question; +using Edu.Model.ViewModel.Scroll; +using Edu.Model.ViewModel.Sell; using Edu.Model.ViewModel.User; +using Edu.Repository.Course; +using Edu.Repository.Grade; using Edu.Repository.Scroll; +using Edu.Repository.Sell; using Edu.Repository.User; +using Org.BouncyCastle.Bcpg.OpenPgp; using System; using System.Collections.Generic; using System.Linq; using System.Text; +using VT.FW.DB; namespace Edu.Module.Course { @@ -19,6 +29,9 @@ namespace Edu.Module.Course /// </summary> private ScheduleCourseRepository scheduleCourseRepository = new ScheduleCourseRepository(); private RB_AccountRepository accountRepository = new RB_AccountRepository(); + private RB_Order_GuestRepository guestRepository = new RB_Order_GuestRepository(); + private RB_Class_CheckRepository checkRepository = new RB_Class_CheckRepository(); + private RB_CourseRepository courseRepository = new RB_CourseRepository(); /// <summary> /// 排课计划表 @@ -62,5 +75,138 @@ namespace Edu.Module.Course } return list; } + + /// <summary> + /// 修改å¦å‘˜ï¼ŒæŽ’è¯¾çŠ¶æ€ + /// </summary> + /// <param name="GuestId"></param> + /// <param name="ScheduleStatus"></param> + /// <returns></returns> + public bool SetGuestScheduleStatusModule(int GuestId, int ScheduleStatus,string ScheduleRemark,DateTime StopDeadline) + { + bool flag = false; + Dictionary<string, object> fileds = new Dictionary<string, object> + { + {nameof(RB_Order_Guest_Extend.ScheduleStatus),ScheduleStatus }, + {nameof(RB_Order_Guest_Extend.ScheduleRemark),ScheduleRemark }, + }; + if (ScheduleStatus == 0) + { + fileds.Add(nameof(RB_Order_Guest_Extend.StopDeadline),null); + } + else if (ScheduleStatus == 1) + { + fileds.Add(nameof(RB_Order_Guest_Extend.StopDeadline), StopDeadline); + } + flag = guestRepository.Update(fileds, new WhereHelper(nameof(RB_Order_Guest_Extend.Id), GuestId)); + return flag; + } + + + /// <summary> + /// 修改å¦å‘˜,å¦ç®¡å¤‡æ³¨ + /// </summary> + /// <param name="GuestId"></param> + /// <param name="ScheduleStatus"></param> + /// <param name="XGRemark"></param> + /// <returns></returns> + public bool SetGuestRemarkModule(int GuestId, string XGRemark) + { + bool flag = false; + Dictionary<string, object> fileds = new Dictionary<string, object> + { + {nameof(RB_Order_Guest_Extend.XGRemark),XGRemark }, + }; + flag = guestRepository.Update(fileds, new WhereHelper(nameof(RB_Order_Guest_Extend.Id), GuestId)); + return flag; + } + + /// <summary> + /// 修改å¦å‘˜æŽˆè¯¾æ–¹å¼ + /// </summary> + /// <param name="GuestId"></param> + /// <param name="TeachingMethod"></param> + /// <returns></returns> + public bool SetGuestTeachingMethodModule(int GuestId, int TeachingMethod) + { + bool flag = false; + Dictionary<string, object> fileds = new Dictionary<string, object>() + { + {nameof(RB_Order_Guest_Extend.TeachingMethod),TeachingMethod } + }; + flag = guestRepository.Update(fileds, new WhereHelper(nameof(RB_Order_Guest_Extend.Id), GuestId)); + return flag; + } + + /// <summary> + /// å–消å¦å‘˜ç¾åˆ° + /// </summary> + /// <param name="GuestId">å¦å‘˜ID</param> + /// <returns></returns> + public bool CancelGuestCheckModule(int GuestId) + { + bool flag = false; + var list= checkRepository.GetClassCheckList(new Model.ViewModel.Grade.RB_Class_Check_ViewModel() { OrderGuestId = GuestId }); + return flag; + } + + + /// <summary> + /// 修改å¦å‘˜ä¸Šè¯¾æ–¹å¼ + /// </summary> + /// <param name="ClassCheckId">å¦å‘˜ID</param> + /// <param name="AttendanceMethod">上课方å¼(1-线上;2-线下;3-录æ’)</param> + /// <returns></returns> + public bool SetGuestCheckStyleModule(int ClassCheckId, int AttendanceMethod) + { + bool flag = false; + Dictionary<string, object> fileds = new Dictionary<string, object>() + { + {nameof(RB_Class_Check.AttendanceMethod), AttendanceMethod} + }; + flag = checkRepository.Update(fileds, new WhereHelper(nameof(RB_Class_Check.ClassCheckId), ClassCheckId)); + return flag; + } + + /// <summary> + /// 获å–约课å¦å‘˜ç¾åˆ°åˆ—表 + /// </summary> + /// <returns></returns> + public List<ScrollAppointmentResult> GetAppointStuListModule(int pageIndex, int pageSize, out long rowsCount, ScrollAppointmentQuery query) + { + var list = scheduleCourseRepository.ScrollAppointmentCheckPageRepository(pageIndex, pageSize, out rowsCount, query); + if (list != null && list.Count > 0) + { + List<Employee_ViewModel> empList = new List<Employee_ViewModel>(); + List<RB_Course_ViewModel> courseList = new List<RB_Course_ViewModel>(); + string accountIds = string.Join(",", list.Select(qitem => qitem.AccountId).Distinct()); + string courseIds = string.Join(",", list.Select(qitem => qitem.LearnCourseId).Distinct()); + string minDate = Common.ConvertHelper.FormatDate(list.Min(qitem => qitem.Date)); + string maxDate = Common.ConvertHelper.FormatDate(list.Max(qitem => qitem.Date)); + string guestIds = string.Join(",", list.Select(qitem => qitem.GuestId).Distinct()); + + if (!string.IsNullOrEmpty(accountIds)) + { + empList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { QIds = accountIds }); + } + if (!string.IsNullOrEmpty(courseIds)) + { + courseList = courseRepository.GetCourseListRepository(new Model.ViewModel.Course.RB_Course_ViewModel() { QCourseIds = courseIds }); + } + var checkList= checkRepository.GetClassCheckList(new Model.ViewModel.Grade.RB_Class_Check_ViewModel() { QOrderGuestIds = guestIds, StartDate = minDate, EndDate = maxDate }); + foreach (var item in list) + { + item.TeacherName = empList?.FirstOrDefault(qitem => qitem.Id == item.AccountId)?.EmployeeName ?? ""; + item.CourseName = courseList?.FirstOrDefault(qitem => qitem.CourseId == item.LearnCourseId)?.CourseName ?? ""; + var tempCheck = checkList?.FirstOrDefault(qitem => qitem.ClassPlanId == item.ClassPlanId); + item.ClassCheckId = tempCheck?.ClassCheckId ?? 0; + if (tempCheck != null) + { + item.AttendanceMethod = tempCheck.AttendanceMethod; + } + } + } + return list; + } } } diff --git a/Edu.Repository/Grade/RB_Class_CheckRepository.cs b/Edu.Repository/Grade/RB_Class_CheckRepository.cs index 79a1e81b..feffcd9e 100644 --- a/Edu.Repository/Grade/RB_Class_CheckRepository.cs +++ b/Edu.Repository/Grade/RB_Class_CheckRepository.cs @@ -1,25 +1,18 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Edu.Common.Enum.Course; -using Edu.Common.Enum.System; -using System.Web; +using Edu.Common.Enum.System; +using Edu.Common.Plugin; using Edu.Model.Entity.Grade; using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Grade; +using Edu.Model.ViewModel.Scroll; using Edu.Model.ViewModel.Sell; -using Spire.Pdf.Exporting.XPS.Schema; +using Edu.Model.ViewModel.User; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Web; using VT.FW.DB; using VT.FW.DB.Dapper; -using Edu.Model.Entity.Sell; -using Edu.Model.Entity.User; -using Edu.Model.ViewModel.User; -using Org.BouncyCastle.Bcpg.OpenPgp; -using Castle.Core.Internal; -using Edu.Model.ViewModel.Scroll; -using Edu.Common.Plugin; -using System.Text.RegularExpressions; namespace Edu.Repository.Grade { @@ -52,10 +45,7 @@ WHERE 1=1 AND A.Status=0 "); { builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.Group_Id), query.Group_Id); } - if (query.School_Id > 0) - { - //builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.School_Id), query.School_Id); - } + if (query.ClassId > 0) { builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.ClassId), query.ClassId); @@ -267,7 +257,10 @@ GROUP BY A.ClassId public List<RB_Class_Check_ViewModel> GetClassCheckList(RB_Class_Check_ViewModel query) { StringBuilder builder = new StringBuilder(); - builder.AppendFormat(@" SELECT A.* FROM RB_Class_Check AS A WHERE 1=1 "); + builder.AppendFormat(@" +SELECT A.*,IFNULL(B.ClassPlanId,0) AS ClassPlanId +FROM RB_Class_Check AS A LEFT JOIN rb_class_time AS B ON A.ClassTimeId = B.ClassTimeId +WHERE 1=1 "); if (query != null) { if (query.Group_Id > 0) @@ -950,9 +943,8 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString /// ç课å¦å‘˜ç¾åˆ° /// </summary> /// <param name="list">å¦å‘˜ä¿¡æ¯</param> - /// <param name="CheckType">1-ç课,2-约课</param> /// <returns></returns> - public bool StudentCheckRepository(List<RB_Class_Check_ViewModel> list,int CheckType) + public bool StudentCheckRepository(List<RB_Class_Check_ViewModel> list) { bool flag = false; List<RB_Order_Guest_Extend> guestList = new List<RB_Order_Guest_Extend>(); diff --git a/Edu.Repository/Scroll/ScheduleCourseRepository.cs b/Edu.Repository/Scroll/ScheduleCourseRepository.cs index c39d2b07..e2fc1c5b 100644 --- a/Edu.Repository/Scroll/ScheduleCourseRepository.cs +++ b/Edu.Repository/Scroll/ScheduleCourseRepository.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; +using VT.FW.DB.Dapper; namespace Edu.Repository.Scroll { @@ -20,16 +21,18 @@ namespace Edu.Repository.Scroll /// <returns></returns> public List<SchedulePlanResult> GetScheduleCourseStuListRepository(ScheduleQuery query) { + DynamicParameters parameters = new DynamicParameters(); StringBuilder builder = new StringBuilder(); builder.AppendFormat(@" SELECT A.Id AS GuestId,A.OrderId,A.GuestName,A.GuestState,IFNULL(B.EnterID,0) AS EnterID,IFNULL(D.AssistId,0) AS HeadMasterId,B.CourseId,A.TotalHours AS TotalTimes - ,IFNULL(cs.CourseName,'') AS CourseName,IFNULL(cs.CourseRate,0) AS CourseRate + ,IFNULL(cs.CourseName,'') AS CourseName,IFNULL(cs.CourseRate,0) AS CourseRate,IFNULL(A.ScheduleStatus,0) AS ScheduleStatus,IFNULL(A.TeachingMethod,0) AS TeachingMethod + ,IFNULL(A.XGRemark,'') AS XGRemark,A.StopDeadline,IFNULL(A.ScheduleRemark,'') AS ScheduleRemark,C.Student_Id AS StuId FROM rb_order_guest AS A INNER JOIN RB_Order AS B ON A.OrderId=B.OrderId INNER JOIN rb_class AS E ON B.ClassId=E.ClassId INNER JOIN rb_student_orderguest AS C ON A.Id=C.GuestId INNER JOIN RB_Course AS cs ON B.CourseId=cs.CourseId LEFT JOIN rb_student_assist AS D ON (C.Student_Id=D.StuId AND D.AssistType=4) -WHERE 1=1 AND B.OrderState=1 AND A.GuestState in(1,5) AND B.OrderType=1 AND E.ClassScrollType=2 +WHERE 1=1 AND B.OrderState=1 AND B.OrderType=1 AND E.ClassScrollType=2 "); if (query.QCourseRate == Common.Enum.Course.CourseRateEnum.N5 || query.QCourseRate == Common.Enum.Course.CourseRateEnum.N4 @@ -43,14 +46,40 @@ WHERE 1=1 AND B.OrderState=1 AND A.GuestState in(1,5) AND B.OrderType=1 AND E.Cl { builder.AppendFormat(" AND cs.CourseRate IN({0}) ", (int)query.QCourseRate); } + if (query.QHeadMasterId > 0) + { + builder.AppendFormat(@" AND D.AssistId={0} ",query.QHeadMasterId); + } + if (query.QGuestState > 0) + { + builder.AppendFormat(@" AND A.GuestState={0} ", query.QGuestState); + } + else + { + builder.AppendFormat(@" AND A.GuestState in(1,5,7) "); + } + if (query.QScheduleStatus > -1) + { + builder.AppendFormat(@" AND A.ScheduleStatus={0} ", query.QScheduleStatus); + } + if (query.QTeachingMethod > 0) + { + builder.AppendFormat(@" AND A.TeachingMethod={0} ", query.QTeachingMethod); + } + if (!string.IsNullOrEmpty(query.QGuestName)) + { + builder.AppendFormat(" AND A.GuestName LIKE @GuestName "); + parameters.Add("GuestName", "%" + query.QGuestName + "%"); + } + builder.AppendFormat(" ORDER BY A.OrderId DESC "); - var list = Get<SchedulePlanResult>(builder.ToString()).ToList(); + var list = Get<SchedulePlanResult>(builder.ToString(), parameters).ToList(); if (list != null && list.Count > 0) { - string guestIds = string.Join(",", list.Select(qitem => qitem.GuestId)); - string courseIds = string.Join(",", list.Select(qitem => qitem.CourseId)); + string guestIds = string.Join(",", list.Select(qitem => qitem.GuestId).Distinct()); + string courseIds = string.Join(",", list.Select(qitem => qitem.CourseId).Distinct()); // string courseChapterSql = string.Format(@" //SELECT CourseId,ChapterGradeNo @@ -64,11 +93,11 @@ WHERE 1=1 AND B.OrderState=1 AND A.GuestState in(1,5) AND B.OrderType=1 AND E.Cl SELECT A.Date,A.AccountId,A.State,A.GuestId,A.LearnCourseId,A.CourseGradeId,A.CourseGradeNo,IFNULL(C.ClassCheckId,0) AS ClassCheckId,IFNULL(C.CurrentDeductionHours,0) AS CurrentDeductionHours FROM rb_scroll_appointment AS A LEFT JOIN rb_class_time AS B ON A.ClassPlanId=B.ClassPlanId LEFT JOIN rb_class_check AS C ON B.ClassTimeId=C.ClassTimeId AND A.GuestId=C.OrderGuestId -WHERE 1=1 AND A.State NOT IN(5) +WHERE 1=1 AND A.State IN(3) AND A.AppointType IN(1,2) "); - appointBuilder.AppendFormat(@" AND A.GuestId IN({0}) ", guestIds); appointBuilder.AppendFormat(@" AND A.LearnCourseId IN ({0}) ", courseIds); appointBuilder.AppendFormat(@" AND A.CourseGradeId IN ({0}) ", (int)query.QCourseRate); + appointBuilder.AppendFormat(@" AND A.GuestId IN({0}) ", guestIds); var courseList = Get<PCourseItem>(appointBuilder.ToString()).ToList(); foreach (var item in list) @@ -82,5 +111,46 @@ WHERE 1=1 AND A.State NOT IN(5) } return list; } + + + /// <summary> + /// 约课ç¾åˆ°ç®¡ç† + /// </summary> + /// <param name="pageIndex"></param> + /// <param name="pageSize"></param> + /// <param name="rowsCount"></param> + /// <param name="query"></param> + /// <returns></returns> + public List<ScrollAppointmentResult> ScrollAppointmentCheckPageRepository(int pageIndex,int pageSize,out long rowsCount, ScrollAppointmentQuery query) + { + DynamicParameters parameters = new DynamicParameters(); + StringBuilder builder = new StringBuilder(); + builder.AppendFormat(@" +SELECT A.Date,A.AccountId,A.State,A.GuestId,g.GuestName,A.LearnCourseId,A.CourseGradeId,A.CourseGradeNo,A.ClassPlanId,A.CourseETime AS EndTime,A.CourseSTime AS StartTime +FROM rb_scroll_appointment AS A LEFT JOIN rb_order_guest AS g ON A.GuestId=g.Id +WHERE 1=1 AND A.State IN(3) AND A.AppointType IN(1,2) +"); + if (query != null) + { + if (!string.IsNullOrEmpty(query.StartDate)) + { + builder.AppendFormat(@" AND A.Date>='{0}' ",query.StartDate); + } + + if (!string.IsNullOrEmpty(query.EndDate)) + { + builder.AppendFormat(@" AND A.Date<='{0} 23:59:59 ' ", query.StartDate); + } + + if (!string.IsNullOrEmpty(query.GuestName)) + { + builder.AppendFormat(@" AND g.GuestName LIKE @GuestName "); + parameters.Add("GuestName", "%" + query.GuestName + "%"); + } + } + + var list = base.GetPage<ScrollAppointmentResult>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList(); + return list; + } } } diff --git a/Edu.WebApi/Controllers/Course/ScheduleCourseController.cs b/Edu.WebApi/Controllers/Course/ScheduleCourseController.cs index b63f2ecf..ff774a52 100644 --- a/Edu.WebApi/Controllers/Course/ScheduleCourseController.cs +++ b/Edu.WebApi/Controllers/Course/ScheduleCourseController.cs @@ -4,11 +4,14 @@ using Edu.Common.Enum.Course; using Edu.Common.Plugin; using Edu.Model.ViewModel.Scroll; using Edu.Model.ViewModel.Sell; +using Edu.Model.ViewModel.User; using Edu.Module.Course; +using Edu.Module.User; using Edu.WebApi.Filter; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; +using System; using System.Collections.Generic; using System.Linq; @@ -36,6 +39,11 @@ namespace Edu.WebApi.Controllers.Course var query = new ScheduleQuery() { QCourseRate = (CourseRateEnum)base.ParmJObj.GetInt("CourseRate"), + QHeadMasterId = base.ParmJObj.GetInt("HeadMasterId"), + QGuestState = base.ParmJObj.GetInt("GuestState"), + QScheduleStatus = base.ParmJObj.GetInt("ScheduleStatus"), + QTeachingMethod = base.ParmJObj.GetInt("TeachingMethod"), + QGuestName = base.ParmJObj.GetStringValue("GuestName"), }; if (query.QCourseRate <= 0) { @@ -48,6 +56,7 @@ namespace Edu.WebApi.Controllers.Course { Dictionary<string,object> jobj =new Dictionary<string, object> (); jobj.Add("OrderId", item.OrderId); + jobj.Add("StuId", item.StuId); jobj.Add("GuestId", item.GuestId); jobj.Add("GuestName", item.GuestName); jobj.Add("GuestState", (int)item.GuestState); @@ -62,6 +71,8 @@ namespace Edu.WebApi.Controllers.Course jobj.Add("ClassProgress", (item.ClassProgress > 0 ? item.ClassProgress : 0)); jobj.Add("ScheduleStatus", (item.ScheduleStatus > 0 ? item.ScheduleStatus : -1)); jobj.Add("XGRemark", (!string.IsNullOrEmpty(item.XGRemark) ? item.XGRemark : "")); + jobj.Add("StopDeadline", Common.ConvertHelper.FormatDate(item.StopDeadline)); + jobj.Add("ScheduleRemark", item.ScheduleRemark); jobj.Add("CourseItems", item?.CourseItems?.OrderBy(qitem => qitem.CourseGradeNo)?.Select(qitem => new { Date = Common.ConvertHelper.FormatDate(qitem.Date), @@ -86,5 +97,114 @@ namespace Edu.WebApi.Controllers.Course } return ApiResult.Success(data: list); } + + + /// <summary> + /// 修改å¦å‘˜ï¼ŒæŽ’è¯¾çŠ¶æ€ + /// </summary> + /// <returns></returns> + [HttpPost] + public ApiResult SetGuestScheduleStatus() + { + int GuestId = base.ParmJObj.GetInt("GuestId"); + int ScheduleStatus = base.ParmJObj.GetInt("ScheduleStatus"); + string ScheduleRemark = base.ParmJObj.GetStringValue("ScheduleRemark"); + DateTime StopDeadline = base.ParmJObj.GetDateTime("StopDeadline"); + bool flag = scheduleCourse.SetGuestScheduleStatusModule(GuestId, ScheduleStatus, ScheduleRemark, StopDeadline); + return flag ? ApiResult.Success() : ApiResult.Failed(); + } + + /// <summary> + /// 修改å¦å‘˜å¤‡æ³¨ + /// </summary> + /// <returns></returns> + [HttpPost] + public ApiResult SetGuestRemark() + { + int GuestId = base.ParmJObj.GetInt("GuestId"); + string XGRemark = base.ParmJObj.GetStringValue("XGRemark"); + bool flag = scheduleCourse.SetGuestRemarkModule(GuestId, XGRemark); + return flag ? ApiResult.Success() : ApiResult.Failed(); + } + + /// <summary> + /// 修改å¦å‘˜æŽˆè¯¾æ–¹å¼ + /// </summary> + /// <returns></returns> + [HttpPost] + public ApiResult SetGuestTeachingMethod() + { + int GuestId = base.ParmJObj.GetInt("GuestId"); + int TeachingMethod = base.ParmJObj.GetInt("TeachingMethod"); + bool flag = scheduleCourse.SetGuestTeachingMethodModule(GuestId, TeachingMethod); + return flag ? ApiResult.Success() : ApiResult.Failed(); + } + + + + /// <summary> + /// å–消å¦å‘˜ç¾åˆ° + /// </summary> + /// <returns></returns> + [HttpPost] + public ApiResult CancalGuestCheck() + { + + return ApiResult.Failed(); + } + + /// <summary> + /// 修改å¦å‘˜ä¸Šè¯¾æ–¹å¼ + /// </summary> + /// <returns></returns> + [HttpPost] + public ApiResult SetGuestCheckStyle() + { + var ClassCheckId = base.ParmJObj.GetInt("ClassCheckId"); + int AttendanceMethod = base.ParmJObj.GetInt("AttendanceMethod"); + bool flag = scheduleCourse.SetGuestCheckStyleModule(ClassCheckId, AttendanceMethod); + return flag ? ApiResult.Success() : ApiResult.Failed(); + } + + + /// <summary> + /// 获å–约课å¦å‘˜ç¾åˆ°åˆ†é¡µåˆ—表 + /// </summary> + /// <returns></returns> + [HttpPost] + public ApiResult GetAppointCheckPage() + { + var pageModel = new ResultPageModel() + { + PageIndex=base.ParmJObj.GetInt("PageIndex"), + PageSize=base.ParmJObj.GetInt("PageSize"), + }; + var query = new ScrollAppointmentQuery() + { + StartDate = base.ParmJObj.GetStringValue("StartDate"), + EndDate = base.ParmJObj.GetStringValue("EndDate"), + GuestName = base.ParmJObj.GetStringValue("GuestName"), + }; + List<object> list = new List<object>(); + var dataList = scheduleCourse.GetAppointStuListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query); + foreach (var item in dataList) + { + list.Add(new + { + Date = Common.ConvertHelper.FormatDate(item.Date), + item.TeacherName, + item.GuestId, + item.GuestName, + item.StartTime, + item.EndTime, + item.CourseName, + item.ClassCheckId, + item.AttendanceMethod, + AttendanceMethodName = item.AttendanceMethod.ToName(), + }); + } + pageModel.PageData = list; + return ApiResult.Success(data: pageModel); + } } } -- 2.18.1