Commit 29f5cd70 authored by liudong1993's avatar liudong1993

Merge branch 'master' of http://gitlab.oytour.com/Kui2/education

parents 9bc7b442 b421f15a
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
......
......@@ -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;
}
}
}
......@@ -672,119 +672,7 @@ namespace Edu.Module.Course
var list = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = groupId, CourseEndTimeStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), State = Common.Enum.Course.CourseAppointStateEnum.WaitCourse });
if (list.Any())
{
//查询所有的上课计划
string planIds = string.Join(",", list.Select(x => x.ClassPlanId).Distinct());
//再查询上课时间
var timeList = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel() { Group_Id = groupId, QClassPlanIds = planIds });
string Date = DateTime.Now.ToString("yyyy-MM-dd");
string orderGuestIds = string.Join(",", list.Select(x => x.GuestId).Distinct());
var oldCheck = class_CheckRepository.GetClassCheckList(new RB_Class_Check_ViewModel() { Group_Id = groupId, StartDate = Date, EndDate = Date, QOrderGuestIds = orderGuestIds });
foreach (var item in list)
{
//更新约课为已上课
Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Scroll_Appointment_ViewModel.State), Common.Enum.Course.CourseAppointStateEnum.Coursed}
};
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName = nameof(RB_Scroll_Appointment_ViewModel.Id),
FiledValue = item.Id,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = scroll_AppointmentRepository.Update(keyValues, wheres);
if (flag)
{
var clist = JsonHelper.DeserializeObject<List<CourseTimeModel>>(item.CourseTime);
//更新 order_guest 表 上课章节 请假也暂时先算完成课时(请假应该是有补课的)
var gmodel = order_GuestRepository.GetEntity(item.GuestId);
if (gmodel != null)
{
//ld 2022-03-08 修改为学员上课最大课时
Dictionary<string, object> keyValues1 = new Dictionary<string, object>();
if (item.CreateTime <= new DateTime(2022, 7, 8))
{
if (gmodel.CourseChapterNo < item.ChapterNo)
{
keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.CourseChapterNo), item.ChapterNo);
keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.CompleteHours), item.ChapterNo * clist.Sum(x => x.ClassHours));
if (gmodel.TotalChapterNo <= item.ChapterNo)
{
//章节已上完了 修改为 毕业
keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.GuestState), Common.Enum.Course.GuestStateEnum.Graduate);
}
}
}
//HK 2022-07-08修改
else
{
if (gmodel.CourseChapterNo < item.CourseGradeNo)
{
keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.CourseChapterNo), item.CourseGradeNo);
keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.CompleteHours), item.CourseGradeNo * clist.Sum(x => x.ClassHours));
if (gmodel.TotalChapterNo <= item.CourseGradeNo)
{
//章节已上完了 修改为 毕业
keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.GuestState), Common.Enum.Course.GuestStateEnum.Graduate);
}
}
}
List<WhereHelper> wheres1 = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName = nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.Id),
FiledValue = gmodel.Id,
OperatorEnum =OperatorEnum.Equal
}
};
if (keyValues1 != null && keyValues1.Count > 0)
{
order_GuestRepository.Update(keyValues1, wheres1);
}
}
if (item.AppointType != 3)
{
//写入签到数据表 (非重复上课的 才写入签到数据)
var tlist = timeList.Where(x => x.ClassPlanId == item.ClassPlanId).ToList();
foreach (var qitem in tlist)
{
var ccModel = clist.Where(x => x.StartTime == qitem.StartTime).FirstOrDefault();
if (ccModel != null && !oldCheck.Where(x => x.OrderGuestId == item.GuestId && x.ClassTimeId == qitem.ClassTimeId).Any())
{
//没有数据的插入 (有数据情况 =》 请假数据)
class_CheckRepository.Insert(new RB_Class_Check()
{
ClassCheckId = 0,
ClassId = 0,
ClassDate = item.Date,
Status = 0,
ClassRoomId = item.RoomId,
Group_Id = item.Group_Id,
School_Id = qitem.School_Id,
TeacherId = item.TeacherId,
OrderGuestId = item.GuestId,
CheckStatus = 0,
CreateBy = 0,
CreateTime = DateTime.Now,
StudyNum = ccModel.Minutes,
MakeUpStatus = 1,
CurrentDeductionHours = ccModel.ClassHours,
IsAbsentHours = 0,
ClassTimeId = qitem.ClassTimeId
});
}
}
}
}
}
class_CheckRepository.AppointStuCheckRepository(list);
}
}
#endregion
......
......@@ -2851,72 +2851,13 @@ namespace Edu.Module.Course
//验证都OK了 插入预约数据
AppointId = scroll_AppointmentRepository.Insert(demodel);
demodel.Id = AppointId;
bool flag = AppointId > 0;
if (flag)
{
if (demodel.State == Common.Enum.Course.CourseAppointStateEnum.Coursed)
{
//已上课 需更新课时 + 签到记录
var clist = JsonHelper.DeserializeObject<List<CourseTimeModel>>(demodel.CourseTime);
//更新 order_guest 表 上课章节 请假也暂时先算完成课时(请假应该是有补课的)
var gmodel = order_GuestRepository.GetEntity(demodel.GuestId);
if (gmodel != null && gmodel.CourseChapterNo < demodel.ChapterNo)
{
//ld 2022-03-08 修改为学员上课最大课时
Dictionary<string, object> keyValues1 = new Dictionary<string, object>()
{
{ nameof(RB_Order_Guest_ViewModel.CourseChapterNo), demodel.ChapterNo},
{ nameof(RB_Order_Guest_ViewModel.CompleteHours), demodel.ChapterNo * clist.Sum(x=>x.ClassHours)}
};
if (gmodel.TotalChapterNo <= demodel.ChapterNo)
{
//章节已上完了 修改为 毕业
keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.GuestState), Common.Enum.Course.GuestStateEnum.Graduate);
}
List<WhereHelper> wheres1 = new List<WhereHelper>()
{
new WhereHelper(){
FiledName = nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.Id),
FiledValue = gmodel.Id,
OperatorEnum =OperatorEnum.Equal
}
};
order_GuestRepository.Update(keyValues1, wheres1);
}
if (demodel.AppointType != 3)
{
//写入签到数据表 (非重复上课的 才写入签到数据)
var tlist = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel() { Group_Id = demodel.Group_Id, ClassPlanId = demodel.ClassPlanId });
foreach (var qitem in tlist)
{
var ccModel = clist.Where(x => x.StartTime == qitem.StartTime).FirstOrDefault();
if (ccModel != null)
{
//没有数据的插入 (有数据情况 =》 请假数据)
class_CheckRepository.Insert(new RB_Class_Check()
{
ClassCheckId = 0,
ClassId = 0,
ClassDate = demodel.Date,
Status = 0,
ClassRoomId = demodel.RoomId,
Group_Id = demodel.Group_Id,
School_Id = qitem.School_Id,
TeacherId = demodel.TeacherId,
OrderGuestId = demodel.GuestId,
CheckStatus = 0,
CreateBy = 0,
CreateTime = DateTime.Now,
StudyNum = ccModel.Minutes,
MakeUpStatus = 1,
CurrentDeductionHours = ccModel.ClassHours,
IsAbsentHours = 0,
ClassTimeId = qitem.ClassTimeId
});
}
}
}
}
List<RB_Scroll_Appointment_ViewModel> list = new List<RB_Scroll_Appointment_ViewModel>();
list.Add(demodel);
class_CheckRepository.AppointStuCheckRepository(list);
}
return flag ? "" : "出错了,请联系管理员";
#endregion
......@@ -3268,225 +3209,6 @@ namespace Edu.Module.Course
}
#endregion
#region 初始化
public string InitializeAppointmentData(int group_Id)
{
string rootBook = AppDomain.CurrentDomain.BaseDirectory;
string server_path = rootBook + "/upfile/temporary/" + "约课数据.xlsx";
var list = Common.Data.AppointmentHelper.GetAppointmentData(server_path);
list = list.Where(x => !string.IsNullOrEmpty(x.Date)).ToList();
if (list.Any())
{
//根据所有的学生
var stuList = student_OrderGuestRepository.GetAppointmentStudyList(group_Id);
//查询老师信息
var teacherList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = group_Id, AccountTypeStr = "2" });
//查询教室信息
var roomList = class_RoomRepository.GetClassRoomList(new RB_Class_Room_ViewModel() { Group_Id = group_Id });
List<RB_Student_OrderGuest_ViewModel> ChapterNoList = new List<RB_Student_OrderGuest_ViewModel>();
//根据日期 教室 老师 学生分组
list.GroupBy(x => new { x.Date, x.RoomName, x.TeacherName, x.StuNames }).ToList().ForEach(item =>
{
DateTime ClassDate = Convert.ToDateTime("2022年" + item.Key.Date);
var roomModel = roomList.Where(x => x.RoomName == item.Key.RoomName).FirstOrDefault();
var teacherModel = teacherList.Where(x => x.EmployeeName == item.Key.TeacherName).FirstOrDefault();
string StuNames = item.Key.StuNames.Replace("危薇", "Camille薇薇");
List<string> StuNameList = StuNames.Split(",").ToList();
//需排除 刘卡加,艾荻,吴浪
StuNameList = StuNameList.Where(x => x != "刘卡加" && x != "艾荻" && x != "吴浪").ToList();
if (StuNameList.Any())
{
var firstStuModel = stuList.Where(x => x.GuestName == StuNameList.FirstOrDefault()).FirstOrDefault();
//开始创建 上课计划
int planId = class_PlanRepository.Insert(new RB_Class_Plan()
{
ClassPlanId = 0,
ClassId = 0,
ClassDate = ClassDate,
Status = 0,
ClassRoomId = roomModel.RoomId,
Group_Id = group_Id,
School_Id = roomModel.School_Id,// 暂时 应该要赋值 订单上的预约校区
TeacherId = teacherModel.AccountId,
BeiKeStatus = 0,
FanKuiStatus = 0,
ParentFanKuiStatus = 0,
RepeatPlanIds = "",
PlanType = 2,
CourseId = firstStuModel.CourseId
});
if (planId > 0)
{
foreach (var qitem in item)
{
string StartTime = Convert.ToDateTime("2022-02-16 " + qitem.Times.Split('~')[0]).ToString("HH:mm");
string EndTime = qitem.Times.Split('~')[1];
#region 数据整理
List<CourseTimeModel> CTList = new List<CourseTimeModel>();
int Sort = 1;
int SHour = Convert.ToDateTime("2022-02-16 " + StartTime).Hour;
if (SHour < 10)
{
Sort = 1;
}
else if (SHour < 12)
{
Sort = 2;
}
else if (SHour < 14)
{
Sort = 3;
}
else if (SHour < 16)
{
Sort = 4;
}
else if (SHour < 20)
{
Sort = 5;
}
else
{
Sort = 6;
}
CTList.Add(new CourseTimeModel()
{
StartTime = StartTime,
EndTime = EndTime,
Minutes = 90,
ClassHours = 2,
Sort = Sort
});
#endregion
//上课时间
int timeId = class_TimeRepository.Insert(new RB_Class_Time()
{
ClassTimeId = 0,
ClassId = 0,
ClassPlanId = planId,
StartTime = StartTime,
EndTime = EndTime,
Group_Id = group_Id,
School_Id = roomModel.School_Id,//暂时 应该要赋值 订单上的预约校区
ClassStatus = 0,
SuiPai = "",
VideoUrl = "",
TimeHour = 2
});
foreach (var stuName in StuNameList)
{
var stuModel = stuList.Where(x => x.GuestName == stuName).FirstOrDefault();
if (DateTime.Now > ClassDate)
{
//上课签到数据
class_CheckRepository.Insert(new RB_Class_Check()
{
ClassCheckId = 0,
ClassId = 0,
ClassDate = ClassDate,
Status = 0,
ClassRoomId = roomModel.RoomId,
Group_Id = group_Id,
School_Id = roomModel.School_Id,
TeacherId = teacherModel.AccountId,
OrderGuestId = stuModel.GuestId,
CheckStatus = 0,
CreateBy = 0,
CreateTime = DateTime.Now,
StudyNum = 90,
MakeUpStatus = 1,
CurrentDeductionHours = 2,
IsAbsentHours = 0,
ClassTimeId = timeId
});
}
int ChapterNo = ChapterNoList.Where(x => x.GuestId == stuModel.GuestId).Count() + 1;//加上当前的
//约课数据
scroll_AppointmentRepository.Insert(new Model.Entity.Scroll.RB_Scroll_Appointment()
{
Id = 0,
Date = ClassDate,
AccountId = teacherModel.Id,
StuId = stuModel.Student_Id,
CourseId = firstStuModel.CourseId,
ChapterNo = ChapterNo,
ShiftSort = string.Join(",", CTList.Select(x => x.Sort).OrderBy(x => x)),
State = DateTime.Now > ClassDate ? Common.Enum.Course.CourseAppointStateEnum.Coursed : Common.Enum.Course.CourseAppointStateEnum.WaitCourse,
Status = 0,
Group_Id = group_Id,
CreateBy = 0,
CreateTime = DateTime.Now,
UpdateBy = 0,
UpdateTime = DateTime.Now,
CourseEndTime = Convert.ToDateTime(ClassDate.ToString("yyyy-MM-dd") + " " + CTList.Max(x => x.EndTime)),
RoomId = roomModel.RoomId,
ClassPlanId = planId,
CourseTime = JsonHelper.Serialize(CTList),
GuestId = stuModel.GuestId,
OrderId = stuModel.OrderId,
CourseSTime = CTList.Min(x => x.StartTime),
CourseETime = CTList.Max(x => x.EndTime),
CourseGradeId = Common.Enum.Course.CourseRateEnum.N5,
LearnCourseId = stuModel.CourseId,
Remark = "初始化"
});
ChapterNoList.Add(new RB_Student_OrderGuest_ViewModel()
{
GuestId = stuModel.GuestId,
RenewState = DateTime.Now > ClassDate ? 1 : 2
});
}
}
}
}
});
//最后 更新 order_guest 表 完成课时 + 上课章节
foreach (var GuestId in ChapterNoList.Select(x => x.GuestId).Distinct())
{
int CourseChapterNo = ChapterNoList.Where(x => x.GuestId == GuestId && x.RenewState == 1).Count();//每节课2课时
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Order_Guest_ViewModel.CompleteHours), CourseChapterNo * 2},
{ nameof(RB_Order_Guest_ViewModel.CourseChapterNo), CourseChapterNo},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Order_Guest_ViewModel.Id),
FiledValue = GuestId,
OperatorEnum =OperatorEnum.Equal
}
};
order_GuestRepository.Update(keyValues, wheres);
}
}
return "";
}
/// <summary>
/// 初始化 跟班的上课记录
/// </summary>
/// <param name="group_Id"></param>
/// <returns></returns>
public string InitializeAppointDataForGB(int group_Id)
{
string GuestIds = "77";//艾荻、张笑三、吴浪、周杰、邓骏、刘卡加
var glist = order_GuestRepository.GetSingleListRepository(new RB_Order_Guest_ViewModel() { Group_Id = group_Id, OrderGuestIds = GuestIds });
if (glist.Any())
{
}
return "";
}
#endregion
#region 学员跳课
......
......@@ -17,6 +17,9 @@ 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
{
......@@ -944,7 +947,7 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
#endregion
/// <summary>
/// 学员签到
/// 班课学员签到
/// </summary>
/// <param name="list">学员信息</param>
/// <param name="CheckType">1-班课,2-约课</param>
......@@ -986,7 +989,7 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
string classTimeIds = string.Join(",", list.Select(qitem => qitem.ClassTimeId).Distinct());
if (!string.IsNullOrEmpty(classTimeIds))
{
classTimeList = GetClassTimeListRepository(classTimeIds);
classTimeList = GetClassTimeListRepository(classTimeIds,"");
}
string classIds = string.Join(",", list.Select(qitem => qitem.ClassId).Distinct());
if (!string.IsNullOrEmpty(classIds))
......@@ -1236,11 +1239,6 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
SourceId = guestModel.Id
});
}
//缺勤和请假
if (item.CheckStatus == 1 || item.CheckStatus == 2)
{
flag = CalcGuestHoursRepository(guestModel, item);
}
#region B2B同业推送
if (orderModel != null && orderModel.CustomerId > 0)
......@@ -1335,6 +1333,127 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
return flag;
}
/// <summary>
/// 约课学员签到
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public bool AppointStuCheckRepository(List<RB_Scroll_Appointment_ViewModel> list)
{
bool flag = false;
if (list.Any())
{
//查询所有的上课计划
string planIds = string.Join(",", list.Select(x => x.ClassPlanId).Distinct());
//再查询上课时间
var timeList = GetClassTimeListRepository("", planIds);
string Date = DateTime.Now.ToString("yyyy-MM-dd");
string orderGuestIds = string.Join(",", list.Select(x => x.GuestId).Distinct());
var guestList= GetOrderGuestListRepository(orderGuestIds);
var oldCheckList = GetClassCheckList(new RB_Class_Check_ViewModel() { QOrderGuestIds = orderGuestIds });
foreach (var item in list)
{
//更新约课为已上课
Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Scroll_Appointment_ViewModel.State), Common.Enum.Course.CourseAppointStateEnum.Coursed}
};
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName = nameof(RB_Scroll_Appointment_ViewModel.Id),
FiledValue = item.Id,
OperatorEnum =OperatorEnum.Equal
}
};
string appointSql = string.Format(" UPDATE RB_Scroll_Appointment SET State={0} WHERE Id={1} ", (int)Common.Enum.Course.CourseAppointStateEnum.Coursed, item.Id);
flag = base.Execute(appointSql) > 0;
if (flag)
{
var clist = JsonHelper.DeserializeObject<List<CourseTimeModel>>(item.CourseTime);
//更新 order_guest 表 上课章节 请假也暂时先算完成课时(请假应该是有补课的)
var gmodel = guestList?.FirstOrDefault(qitem => qitem.Id == item.GuestId);
var tempClassTimeList = timeList?.Where(qitem => qitem.ClassPlanId == item.ClassPlanId)?.ToList() ?? new List<RB_Class_Time_ViewModel>();
var guestOldCheckList = oldCheckList?.Where(qitem => qitem.OrderGuestId == item.GuestId && !tempClassTimeList.Any(sItem => sItem.ClassTimeId == qitem.ClassTimeId))?.ToList() ?? new List<RB_Class_Check_ViewModel>();
decimal guestOldFinishHours = 0;
if (guestOldCheckList != null && guestOldCheckList.Count > 0)
{
guestOldFinishHours = guestOldCheckList.Sum(qitem => qitem.CurrentDeductionHours);
}
if (gmodel != null)
{
//ld 2022-03-08 修改为学员上课最大课时
Dictionary<string, object> keyValues1 = new Dictionary<string, object>();
var completeHours = guestOldFinishHours + clist.Sum(x => x.ClassHours);
keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.CourseChapterNo), item.ChapterNo);
keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.CompleteHours), completeHours);
if (gmodel.TotalHours == completeHours)
{
keyValues1.Add(nameof(Model.ViewModel.Sell.RB_Order_Guest_ViewModel.GuestState), Common.Enum.Course.GuestStateEnum.Graduate);
}
if (keyValues1 != null && keyValues1.Count > 0)
{
DynamicParameters guestParamters = new DynamicParameters();
string guestSql = "UPDATE RB_Order_Guest SET ";
int guestIndex = 0;
foreach (var gItem in keyValues1)
{
if (guestIndex > 0)
{
guestSql += ",";
}
guestSql += string.Format("{0}=@{0} ", gItem.Key);
guestParamters.Add(string.Format("@{0}", gItem.Key), gItem.Value);
guestIndex++;
}
guestSql += string.Format(" WHERE 1=1 AND Id=@Id ");
guestParamters.Add("@Id", gmodel.Id);
flag = base.Execute(guestSql, guestParamters) > 0;
}
}
if (item.AppointType != 3)
{
//写入签到数据表 (非重复上课的 才写入签到数据)
var tlist = timeList.Where(x => x.ClassPlanId == item.ClassPlanId).ToList();
foreach (var qitem in tlist)
{
var ccModel = clist.Where(x => x.StartTime == qitem.StartTime).FirstOrDefault();
if (ccModel != null && !oldCheckList.Where(x => x.OrderGuestId == item.GuestId && x.ClassTimeId == qitem.ClassTimeId).Any())
{
//没有数据的插入 (有数据情况 =》 请假数据)
base.Insert(new RB_Class_Check()
{
ClassCheckId = 0,
ClassId = 0,
ClassDate = item.Date,
Status = 0,
ClassRoomId = item.RoomId,
Group_Id = item.Group_Id,
School_Id = qitem.School_Id,
TeacherId = item.TeacherId,
OrderGuestId = item.GuestId,
CheckStatus = 0,
CreateBy = 0,
CreateTime = DateTime.Now,
StudyNum = ccModel.Minutes,
MakeUpStatus = 1,
CurrentDeductionHours = ccModel.ClassHours,
IsAbsentHours = 0,
ClassTimeId = qitem.ClassTimeId
});
}
}
}
}
}
}
return flag;
}
/// <summary>
/// 新增日志
/// </summary>
......@@ -1358,142 +1477,6 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
}
/// <summary>
/// 计算学员缺课课时
/// </summary>
/// <param name="guestModel"></param>
/// <param name="checkModel"></param>
/// <returns></returns>
public bool CalcGuestHoursRepository(RB_Order_Guest guestModel, RB_Class_Check_ViewModel checkModel)
{
bool flag = true;
//if (guestModel.GuestState == GuestStateEnum.Normal)
//{
// decimal NoFinishHours = 0;
// //获取以前所有签到列表【倒叙】
// var checkList = GetClassCheckListRepository(new RB_Class_Check_ViewModel()
// {
// ClassId = checkModel.ClassId,
// OrderGuestId = checkModel.OrderGuestId,
// EndDate = Common.ConvertHelper.FormatDate(checkModel.ClassDate)
// }).OrderByDescending(qitem => qitem.ClassDate).ToList();
// for (var i = 0; i < checkList.Count; i++)
// {
// if ((checkList[i].CheckStatus == 1) && (checkList[i].MakeUpStatus == 3 || checkList[i].MakeUpStatus == 4 || checkList[i].MakeUpStatus == 1))
// {
// NoFinishHours += checkList[i].CurrentDeductionHours;
// }
// else
// {
// break;
// }
// }
// Dictionary<string, object> fileds = new Dictionary<string, object>();
// Dictionary<string, object> checkFileds = new Dictionary<string, object>();
// //缺勤课时超过12课时更新学员状态为【停课】
// if (NoFinishHours >= Common.Config.AbsentHours)
// {
// fileds.Add(nameof(RB_Order_Guest_ViewModel.GuestState), (int)GuestStateEnum.StopClasses);
// checkFileds.Add(nameof(RB_Class_Check_ViewModel.IsAbsentHours), 1);
// checkFileds.Add(nameof(RB_Class_Check_ViewModel.MakeUpStatus), 4);
// var orderModel = orderRepository.GetEntity(guestModel.OrderId);
// var shengyuMoney = orderModel.PreferPrice - orderModel.Income + orderModel.Refund - orderModel.PlatformTax - orderModel.DiscountMoney - orderModel.LessPrice;
// var classModel = classRepository.GetEntity<RB_Class_ViewModel>(guestModel.ClassId);
// var sellerInfo = UserReidsCache.GetUserLoginInfo(orderModel.EnterID);
// #region 欠费提醒(销售)
// var queryTargetWorkId = accountRepository.GetWorkUserIdRepository(orderModel.EnterID);
// if (!string.IsNullOrEmpty(queryTargetWorkId))
// {
// // 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
// var path = $"/sale/myOrder?OrderId={guestModel.OrderId}";
// path = HttpUtility.UrlEncode(path);
// string markdownContent = $"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>当前状态:<font color='warning'>停课</font>\n>关联单号:{guestModel.OrderId}\n>\n>待收金额:<font color='warning'>¥{shengyuMoney:0.00}</font>\n>停课理由:连续缺课超过{Config.AbsentHours}课时,系统自动停课\n>班级名称:<font>{classModel.ClassName}</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={orderModel.EnterID}&target={path})";
// Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
// {
// CategoryId = PushMessageCategoryEnum.SalePeople,
// Content = markdownContent,
// CoverImg = "",
// CreateByName = "系统",
// JumpUrl = "",
// WorkMsgType = "markdown",
// SendTime = DateTime.Now,
// SendType = 0,
// Title = "学员欠费停课通知",
// Platform = 5,
// ReceiveId = queryTargetWorkId
// };
// List<Common.Message.PushMessageModel> pushList = new List<Common.Message.PushMessageModel>() { modelWork };
// new Common.Message.MessageHelper().SendMessage(pushList);
// }
// #endregion
// #region 欠费提醒(管理者)
// var queryNotifyManager = GetWorkUserIdByDictRepository("Push_Arrears");
// if (queryNotifyManager != null && queryNotifyManager.Count > 0)
// {
// queryNotifyManager.ForEach(x =>
// {
// var path = $"/sale/orderStatistics?OrderId={guestModel.OrderId}";
// path = HttpUtility.UrlEncode(path);
// string markdownContent = $"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>当前状态:<font color='warning'>停课</font>\n>关联单号:{guestModel.OrderId}({sellerInfo.AccountName})\n>\n>待收金额:<font color='warning'>¥{shengyuMoney:0.00}</font>\n>停课理由:连续缺课超过{Common.Config.AbsentHours}课时,系统自动停课\n>班级名称:<font>{classModel.ClassName}</font>\n>请点击:[查看详情]({Common.Config.ErpUrl}/autologin?loginId={x.Id}&target={path})";
// Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
// {
// CategoryId = PushMessageCategoryEnum.SalePeople,
// Content = markdownContent,
// CoverImg = "",
// CreateByName = "系统",
// JumpUrl = "",
// WorkMsgType = "markdown",
// SendTime = DateTime.Now,
// SendType = 0,
// Title = "学员欠费停课通知",
// Platform = 5,
// ReceiveId = x.WorkUserId
// };
// List<Common.Message.PushMessageModel> pushList = new List<Common.Message.PushMessageModel>() { modelWork };
// new Common.Message.MessageHelper().SendMessage(pushList);
// });
// }
// #endregion
// }
// if (fileds != null && fileds.Count > 0 && checkFileds != null && checkFileds.Count > 0)
// {
// List<WhereHelper> wheres = new List<WhereHelper>()
// {
// new WhereHelper (nameof(RB_Order_Guest_ViewModel.Id),guestModel.Id),
// };
// flag = order_GuestRepository.Update(fileds, wheres);
// List<WhereHelper> checkWheres = new List<WhereHelper>()
// {
// new WhereHelper (nameof(RB_Class_Check_ViewModel.ClassCheckId),checkModel.ClassCheckId),
// };
// flag = classCheckRepository.Update(checkFileds, checkWheres);
// }
// if (flag && checkModel.CheckStatus == 1 && checkModel.IsUpdateMakeUp != 1)
// {
// //请假的 因为不扣课时, 无法进补课
// flag = student_MakeupRepository.SetStudentMakeUpRepository(new RB_Student_Makeup()
// {
// Id = 0,
// ClassCheckId = checkModel.ClassCheckId,
// ClassDate = checkModel.ClassDate,
// ClassId = checkModel.ClassId,
// CreateBy = checkModel.CreateBy,
// CreateTime = checkModel.CreateTime,
// Group_Id = checkModel.Group_Id,
// MakeUpStatus = 1,
// OrderGuestId = checkModel.OrderGuestId
// });
// }
//}
return flag;
}
/// <summary>
/// 根据订单编号获取订单列表
/// </summary>
......@@ -1532,14 +1515,22 @@ WHERE 1=1 AND A.Id IN({0})
/// </summary>
/// <param name="ClassTimeIds"></param>
/// <returns></returns>
public List<RB_Class_Time_ViewModel> GetClassTimeListRepository(string ClassTimeIds)
public List<RB_Class_Time_ViewModel> GetClassTimeListRepository(string ClassTimeIds,string PlanIds)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Class_Time AS A
WHERE 1=1 AND A.ClassTimeId IN({0})
", ClassTimeIds);
WHERE 1=1
");
if (!string.IsNullOrEmpty(ClassTimeIds))
{
builder.AppendFormat(" AND A.ClassTimeId IN({0}) ", ClassTimeIds);
}
if (!string.IsNullOrEmpty(PlanIds))
{
builder.AppendFormat(" AND A.ClassPlanId IN({0}) ", PlanIds);
}
return Get<RB_Class_Time_ViewModel>(builder.ToString()).ToList();
}
......
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;
}
}
}
......@@ -1927,7 +1927,7 @@ namespace Edu.WebApi.Controllers.Course
new ExcelColumn(value:"下单日期"){CellWidth=20,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"下单人"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"市场人员"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"课程顾问"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
//new ExcelColumn(value:"课程顾问"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"协助老师"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"班级"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"开班时间"){CellWidth=20,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
......@@ -1994,7 +1994,7 @@ namespace Edu.WebApi.Controllers.Course
new ExcelColumn(value: item.CreateTime.ToString("yyyy-MM-dd HH:mm")){ },
new ExcelColumn(value: (item.CreateBy > 0 ? UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "" : "")){ },
new ExcelColumn(value: (item.EnterID > 0 ? UserReidsCache.GetUserLoginInfo(item.EnterID)?.AccountName ?? "" : "")){ },
new ExcelColumn(value: (item.CourseConsultantId > 0 ? UserReidsCache.GetUserLoginInfo(item.CourseConsultantId)?.AccountName ?? "" : "")){ },
//new ExcelColumn(value: (item.CourseConsultantId > 0 ? UserReidsCache.GetUserLoginInfo(item.CourseConsultantId)?.AccountName ?? "" : "")){ },
new ExcelColumn(value: (item.HelpEnterId > 0 ? UserReidsCache.GetUserLoginInfo(item.HelpEnterId)?.AccountName ?? "" : "")){ },
new ExcelColumn(value: item.ClassName){ },
new ExcelColumn(value: item.OpenTime.ToString("yyyy-MM-dd")){ },
......@@ -2030,7 +2030,7 @@ namespace Edu.WebApi.Controllers.Course
new ExcelColumn(value: "合计"){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
//new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
......
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);
}
}
}
......@@ -1131,27 +1131,6 @@ namespace Edu.WebApi.Controllers.Course
#endregion
#region 初始化约课数据
/// <summary>
/// 初始化约课数据
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult InitializeAppointmentData()
{
var userInfo = base.UserInfo;
string msg = scrollClassModule.InitializeAppointmentData(userInfo.Group_Id);
if (msg == "")
{
return ApiResult.Success();
}
else
{
return ApiResult.Failed(msg);
}
}
#endregion
#region 学员管理
......
......@@ -407,7 +407,7 @@ namespace Edu.WebApi.Controllers.User
{
new ExcelColumn("学生"){ CellWidth=15,Rowspan=2},
new ExcelColumn("电话"){ CellWidth=15,Rowspan=2},
new ExcelColumn("课程顾问"){ CellWidth=15,Rowspan=2},
//new ExcelColumn("课程顾问"){ CellWidth=15,Rowspan=2},
new ExcelColumn("班主任"){ CellWidth=10,Rowspan=2},
new ExcelColumn("合同时间"){ CellWidth=15,Rowspan=2},
new ExcelColumn("所报课程"){ CellWidth=20,Rowspan=2},
......@@ -442,7 +442,7 @@ namespace Edu.WebApi.Controllers.User
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(),
//new ExcelColumn(),
new ExcelColumn(),
new ExcelColumn(),
new ExcelColumn(),
......@@ -508,7 +508,7 @@ namespace Edu.WebApi.Controllers.User
}
}
}
columns.Add(new ExcelColumn(courseManager));
//columns.Add(new ExcelColumn(courseManager));
columns.Add(new ExcelColumn(teacherNamager));
columns.Add(new ExcelColumn(item.ContractSTime));
columns.Add(new ExcelColumn(item.CourseName));
......
......@@ -922,7 +922,7 @@ namespace Edu.WebApi.Controllers.User
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("昵称"){ CellWidth=20},
new ExcelColumn("课程顾问"){ CellWidth=10},
//new ExcelColumn("课程顾问"){ CellWidth=10},
new ExcelColumn("协助老师"){ CellWidth=10},
new ExcelColumn("是否报名"){ CellWidth=10},
new ExcelColumn("性别"){ CellWidth=10},
......@@ -973,7 +973,7 @@ namespace Edu.WebApi.Controllers.User
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(item.StuName),
new ExcelColumn(course),
//new ExcelColumn(course),
new ExcelColumn(teacher),
new ExcelColumn(orderStr),
new ExcelColumn(item.StuSex==0?"男":"女"),
......
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