Commit b421f15a authored by 黄奎's avatar 黄奎

新增接口

parent 694e001b
using Edu.Common.Enum;
using Edu.Common.Enum.User;
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Customer
{
/// <summary>
/// 学员协助人员实体类
/// </summary>
[Serializable]
/// <summary>
/// 学员协助人员实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Student_Assist
{
......
......@@ -138,7 +138,7 @@ namespace Edu.Model.Entity.Scroll
public int AppointType { get; set; }
/// <summary>
/// 课等级ID (枚举) CourseGradeNo 组成唯一
/// 课等级ID (枚举) CourseGradeNo 组成唯一
/// </summary>
public CourseRateEnum CourseGradeId { get; set; }
......
using Edu.Common.Enum.Course;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Scroll
{
/// <summary>
/// 排课查询
/// </summary>
[Serializable]
public class ScheduleQuery
{
/// <summary>
/// 课程等级
/// </summary>
public CourseRateEnum QCourseRate { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
}
}
using Edu.Common.Enum.Course;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Scroll
{
/// <summary>
/// 排课返回实体类
/// </summary>
[Serializable]
public class SchedulePlanResult
{
/// <summary>
/// 学员RB_Order_Guest 表Id
/// </summary>
public int GuestId { get; set; }
/// <summary>
/// 订单编号
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 学员名称
/// </summary>
public string GuestName { get; set; }
/// <summary>
/// 上课方式
/// </summary>
public int TeachingMethod { get; set; }
/// <summary>
/// 上课进度
/// </summary>
public decimal ClassProgress { get; set; }
/// <summary>
/// 排课状态
/// </summary>
public int ScheduleStatus { get; set; }
/// <summary>
/// 学管备注
/// </summary>
public string XGRemark { get; set; }
/// <summary>
/// 学员状态
/// </summary>
public GuestStateEnum GuestState { get; set; }
/// <summary>
/// 业务人员
/// </summary>
public int EnterID { get; set; }
/// <summary>
/// 业务人员名称
/// </summary>
public string EnterName { get; set; }
/// <summary>
/// 班主任Id
/// </summary>
public int HeadMasterId { get; set; }
/// <summary>
/// 班主任姓名
/// </summary>
public string HeadMasterName { get; set; }
/// <summary>
/// 报名课程Id
/// </summary>
public int CourseId { get; set; }
/// <summary>
/// 报名课程名称
/// </summary>
public string CourseName { get; set; }
public List<PCourseItem> CourseItems { get; set; }
}
/// <summary>
/// 课程项目
/// </summary>
[Serializable]
public class PCourseItem
{
/// <summary>
/// 学员Id,rb_scroll_appointment表GuestId对应rb_order_guest表Id
/// </summary>
public int GuestId { get; set; }
/// <summary>
/// 报名课程ID
/// </summary>
public int LearnCourseId { get; set; }
/// <summary>
/// 约课日期
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// 状态 1待确认 2待上课 3已上课 4缺席 5取消
/// </summary>
public CourseAppointStateEnum State { get; set; }
/// <summary>
/// 签到Id(0-未签到)
/// </summary>
public int ClassCheckId { get; set; }
/// <summary>
/// 课程等级ID (枚举) CourseGradeNo 组成唯一
/// </summary>
public CourseRateEnum CourseGradeId { get; set; }
/// <summary>
/// 课程等级 对应的章节 与CourseGradeId 组成唯一 【hk2022-07-07直接修改为rb_course_chapter 中的chapterNo 需要消课的章节】
/// </summary>
public int CourseGradeNo { get; set; }
/// <summary>
/// 每次课消耗课时
/// </summary>
public decimal CurrentDeductionHours { get; set; }
}
}
using Edu.Model.ViewModel.Scroll;
using Edu.Model.ViewModel.User;
using Edu.Repository.Scroll;
using Edu.Repository.User;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Module.Course
{
/// <summary>
/// 排课相关处理类
/// </summary>
public class ScheduleCourseModule
{
/// <summary>
/// 排课相关处理类
/// </summary>
private ScheduleCourseRepository scheduleCourseRepository = new ScheduleCourseRepository();
private RB_AccountRepository accountRepository = new RB_AccountRepository();
/// <summary>
/// 排课计划表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<SchedulePlanResult> GetScheduleCourseStuListModule(ScheduleQuery query)
{
var list = scheduleCourseRepository.GetScheduleCourseStuListRepository(query);
if (list != null && list.Count > 0)
{
List<int> IdList = new List<int>();
var tempHeadMaster = list.Select(qitem => qitem.HeadMasterId).Distinct();
if (tempHeadMaster != null && tempHeadMaster.Count() > 0)
{
IdList.AddRange(tempHeadMaster);
}
var tempEnterId = list.Select(qitem => qitem.EnterID).Distinct();
if (tempEnterId != null && tempEnterId.Count() > 0)
{
IdList.AddRange(tempEnterId);
}
List<RB_Account_ViewModel> empList = new List<RB_Account_ViewModel>();
if (IdList != null && IdList.Count > 0)
{
string Ids = string.Join(",", IdList.Distinct());
empList= accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel() { QIds = Ids });
}
foreach (var item in list)
{
if (item.HeadMasterId > 0)
{
item.HeadMasterName = empList?.FirstOrDefault(qitem => qitem.Id == item.HeadMasterId)?.AccountName ?? "";
}
if (item.EnterID > 0)
{
item.EnterName = empList?.FirstOrDefault(qitem => qitem.Id == item.EnterID)?.AccountName ?? "";
}
}
}
return list;
}
}
}
using Edu.Model.Entity.Course;
using Edu.Model.Entity.Grade;
using Edu.Model.ViewModel.Scroll;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.Scroll
{
/// <summary>
/// 排课
/// </summary>
public class ScheduleCourseRepository:BaseRepository<RB_Class_Course>
{
/// <summary>
/// 排课计划表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<SchedulePlanResult> GetScheduleCourseStuListRepository(ScheduleQuery query)
{
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
FROM rb_order_guest AS A INNER JOIN RB_Order AS B ON A.OrderId=B.OrderId
LEFT JOIN rb_student_orderguest AS C ON A.Id=C.GuestId
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)
");
builder.AppendFormat(" AND EXISTS (SELECT 1 FROM rb_course_chapter WHERE CourseId=B.CourseId AND CourseRate IN({0})) ", (int)query.QCourseRate);
var list = Get<SchedulePlanResult>(builder.ToString()).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 courseChapterSql = string.Format(@"
SELECT CourseId,ChapterGradeNo
FROM rb_course_chapter
WHERE CourseId IN({0}) AND CourseRate IN({1}) ", courseIds, (int)query.QCourseRate);
var chapterList= Get<RB_Course_Chapter>(courseChapterSql).ToList();
StringBuilder appointBuilder = new StringBuilder();
appointBuilder.AppendFormat(@"
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)
");
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);
var courseList = Get<PCourseItem>(appointBuilder.ToString()).ToList();
foreach (var item in list)
{
item.CourseItems = courseList?.Where(qitem => qitem.GuestId == item.GuestId && qitem.LearnCourseId == item.CourseId)?.ToList() ?? new List<PCourseItem>();
if (item.CourseItems != null && item.CourseItems.Count > 0)
{
item.ClassProgress = item.CourseItems.Sum(qitem => qitem.CurrentDeductionHours);
}
}
}
return list;
}
}
}
using Edu.Common.API;
using Edu.Common.Enum.Course;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Scroll;
using Edu.Model.ViewModel.Sell;
using Edu.Module.Course;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;
namespace Edu.WebApi.Controllers.Course
{
/// <summary>
/// 排课相关处理类
/// </summary>
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class ScheduleCourseController : BaseController
{
private ScheduleCourseModule scheduleCourse = new ScheduleCourseModule();
/// <summary>
/// 获取待排课学员
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetScheduleCourseStu()
{
var userInfo = base.UserInfo;
var query = new ScheduleQuery()
{
QCourseRate = (CourseRateEnum)base.ParmJObj.GetInt("CourseRate"),
};
if (query.QCourseRate <= 0)
{
return ApiResult.ParamIsNull(message: "请选择课程等级");
}
query.Group_Id = userInfo.Group_Id;
var dataList = scheduleCourse.GetScheduleCourseStuListModule(query);
List<object> list = new List<object>();
foreach (var item in dataList)
{
list.Add(new
{
item.OrderId,
item.GuestId,
item.GuestName,
item.GuestState,
GuestStateName = item.GuestState.ToName(),
item.HeadMasterId,
HeadMasterName = !string.IsNullOrEmpty(item.HeadMasterName) ? item.HeadMasterName : "",
item.EnterID,
EnterName = !string.IsNullOrEmpty(item.EnterName) ? item.EnterName : "",
TeachingMethod = item.TeachingMethod > 0 ? item.TeachingMethod : -1,
ClassProgress = item.ClassProgress > 0 ? item.ClassProgress : 0,
ScheduleStatus=item.ScheduleStatus>0?item.ScheduleStatus:-1,
XGRemark = !string.IsNullOrEmpty(item.XGRemark) ? item.XGRemark : "",
CourseItems = item?.CourseItems?.Select(qitem => new
{
Date = Common.ConvertHelper.FormatDate(qitem.Date),
qitem.State,
StateName = qitem.State.ToName(),
qitem.ClassCheckId,
ChapterId = qitem.CourseGradeNo,
})
});
}
return ApiResult.Success(data: list);
}
}
}
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