Commit 6ed9a120 authored by liudong1993's avatar liudong1993

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

parents 7bffa680 45879014
...@@ -20,6 +20,11 @@ namespace Edu.Model.ViewModel.EduTask ...@@ -20,6 +20,11 @@ namespace Edu.Model.ViewModel.EduTask
/// 调整新数据信息 /// 调整新数据信息
/// </summary> /// </summary>
public List<ChangePlanItem> NewChangePlanItemList { get; set; } public List<ChangePlanItem> NewChangePlanItemList { get; set; }
/// <summary>
/// 全局修改上课时间
/// </summary>
public AllChangePlanItem AllChangePlanModel { get; set; }
} }
public class ChangePlanItem public class ChangePlanItem
...@@ -51,4 +56,100 @@ namespace Edu.Model.ViewModel.EduTask ...@@ -51,4 +56,100 @@ namespace Edu.Model.ViewModel.EduTask
} }
/// <summary>
/// 全局调课修改
/// </summary>
public class AllChangePlanItem
{
/// <summary>
/// 总课时
/// </summary>
public decimal ClassHours { get; set; }
/// <summary>
/// 课时分钟数
/// </summary>
public int ClassHourMinute { get; set; }
/// <summary>
/// 开课时间
/// </summary>
public string OpenTimeStr { get; set; }
/// <summary>
/// 老师编号
/// </summary>
public int TeacherId { get; set; }
/// <summary>
/// 教室编号
/// </summary>
public int ClassRoomId { get; set; }
/// 选中的周几/或日期数组
/// </summary>
public List<string> WeekDayList { get; set; }
/// <summary>
///班级计划默认上课时间
/// </summary>
public List<ClassTimeItem> DefaultTimeList { get; set; }
/// <summary>
/// 默认选中的日期、周
/// </summary>
public string DateJson { get; set; }
/// <summary>
/// 排课方式(1-周,2-月,3-固定日期,4-约课)
/// </summary>
public Common.Enum.Course.ClassStyleEnum ClassStyle { get; set; }
/// <summary>
/// 默认时间字符串JSON
/// </summary>
public string DefaultTimeJson { get; set; }
}
///<summary>
/// 上课时间配置项
/// </summary>
public class ClassTimeItem
{
/// <summary>
/// 上课日期【ClassStyle:1-周(1,2...);2和3(具体日期);4(暂无)】
/// </summary>
public List<string> DateList { get; set; }
/// <summary>
/// 具体上课时间
/// </summary>
public List<TimeItem> TimeList { get; set; }
}
/// <summary>
/// 上课时间对象
/// </summary>
public class TimeItem
{
/// <summary>
/// 开始时间
/// </summary>
public string StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 消耗课时
/// </summary>
public decimal TimeHour { get; set; }
}
} }
...@@ -155,7 +155,7 @@ namespace Edu.Module.Course ...@@ -155,7 +155,7 @@ namespace Edu.Module.Course
/// <returns></returns> /// <returns></returns>
public List<RB_Class_ViewModel> GetClassListModule(RB_Class_ViewModel query) public List<RB_Class_ViewModel> GetClassListModule(RB_Class_ViewModel query)
{ {
var list= classRepository.GetClassListRepository(query); var list = classRepository.GetClassListRepository(query);
if (list != null && list.Count > 0) if (list != null && list.Count > 0)
{ {
string classIds = string.Join(",", list.Select(qitem => qitem.ClassId)); string classIds = string.Join(",", list.Select(qitem => qitem.ClassId));
...@@ -187,7 +187,7 @@ namespace Edu.Module.Course ...@@ -187,7 +187,7 @@ namespace Edu.Module.Course
{ {
foreach (var sItem in tempPlanList) foreach (var sItem in tempPlanList)
{ {
sItem.PlanTimeList=timeList?.Where(qitem => qitem.ClassId == item.ClassId && qitem.ClassPlanId == sItem.ClassPlanId)?.OrderBy(qitem => qitem.StartTime)?.ToList()??new List<RB_Class_Time_ViewModel> (); sItem.PlanTimeList = timeList?.Where(qitem => qitem.ClassId == item.ClassId && qitem.ClassPlanId == sItem.ClassPlanId)?.OrderBy(qitem => qitem.StartTime)?.ToList() ?? new List<RB_Class_Time_ViewModel>();
} }
} }
item.ClassPlanList = tempPlanList ?? new List<RB_Class_Plan_ViewModel>(); item.ClassPlanList = tempPlanList ?? new List<RB_Class_Plan_ViewModel>();
...@@ -2264,6 +2264,15 @@ namespace Edu.Module.Course ...@@ -2264,6 +2264,15 @@ namespace Edu.Module.Course
return classHours; return classHours;
} }
/// <summary>
/// 班级签到完成学习分钟数以及课时
/// </summary>
/// <param name="classIds">班级编号</param>
/// <returns></returns>
public List<GuestFinishMinute_ViewModel> GetClassFinishMinutesRepository(string classIds)
{
return classCheckRepository.GetClassFinishMinutesRepository(classIds);
}
/// <summary> /// <summary>
/// 更新课堂随拍 /// 更新课堂随拍
......
...@@ -100,5 +100,18 @@ namespace Edu.Module.System ...@@ -100,5 +100,18 @@ namespace Edu.Module.System
return holidayRepository.Update(fileds, new WhereHelper(nameof(HolidayId), HolidayId)); return holidayRepository.Update(fileds, new WhereHelper(nameof(HolidayId), HolidayId));
} }
/// <summary>
///批量新增节假日
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool SetHoliday(List<RB_System_Holiday> list)
{
return holidayRepository.InsertBatch(list);
}
} }
} }
...@@ -182,9 +182,9 @@ WHERE A.`Status`=0 "); ...@@ -182,9 +182,9 @@ WHERE A.`Status`=0 ");
} }
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT A.ClassId,SUM(A.FinishMinutes) AS FinishMinutes FROM SELECT A.ClassId,SUM(A.FinishMinutes) AS FinishMinutes,SUM(A.CurrentDeductionHours) AS FinishClassHours FROM
( (
SELECT A.ClassId,A.ClassDate,B.ClassPlanId,C.ClassTimeId SELECT A.ClassId,A.ClassDate,B.ClassPlanId,C.ClassTimeId,a.CurrentDeductionHours
,TIMESTAMPDIFF(MINUTE,(DATE_FORMAT(CONCAT('2021-01-01 ',C.StartTime,':00'),'%Y-%m-%d %H:%i')),(DATE_FORMAT(CONCAT('2021-01-01 ',C.EndTime,':00'), '%Y-%m-%d %H:%i'))) AS FinishMinutes ,TIMESTAMPDIFF(MINUTE,(DATE_FORMAT(CONCAT('2021-01-01 ',C.StartTime,':00'),'%Y-%m-%d %H:%i')),(DATE_FORMAT(CONCAT('2021-01-01 ',C.EndTime,':00'), '%Y-%m-%d %H:%i'))) AS FinishMinutes
FROM rb_class_check AS A INNER JOIN rb_class_plan AS B ON A.ClassId=B.ClassId AND A.ClassDate=B.ClassDate AND B.`Status`=0 FROM rb_class_check AS A INNER JOIN rb_class_plan AS B ON A.ClassId=B.ClassId AND A.ClassDate=B.ClassDate AND B.`Status`=0
INNER JOIN rb_class_time AS C ON B.ClassPlanId=C.ClassPlanId INNER JOIN rb_class_time AS C ON B.ClassPlanId=C.ClassPlanId
......
...@@ -114,9 +114,11 @@ WHERE 1=1 ...@@ -114,9 +114,11 @@ WHERE 1=1
/// <returns></returns> /// <returns></returns>
public int CheckStudentMakeUpExistsRepository(RB_Student_Makeup model) public int CheckStudentMakeUpExistsRepository(RB_Student_Makeup model)
{ {
List<WhereHelper> whereHelpers = new List<WhereHelper>(); List<WhereHelper> whereHelpers = new List<WhereHelper>
whereHelpers.Add(new WhereHelper(nameof(RB_Student_Makeup.ClassCheckId), model.ClassCheckId)); {
whereHelpers.Add(new WhereHelper(nameof(RB_Student_Makeup.OrderGuestId), model.OrderGuestId)); new WhereHelper(nameof(RB_Student_Makeup.ClassCheckId), model.ClassCheckId),
new WhereHelper(nameof(RB_Student_Makeup.OrderGuestId), model.OrderGuestId)
};
return base.Exists("Id", whereHelpers); return base.Exists("Id", whereHelpers);
} }
} }
......
...@@ -4,6 +4,8 @@ using System; ...@@ -4,6 +4,8 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Linq; using System.Linq;
using Edu.Common.Enum.Course;
using System.Threading.Tasks;
namespace Edu.Repository.EduTask namespace Edu.Repository.EduTask
{ {
...@@ -87,11 +89,12 @@ WHERE 1=1 ...@@ -87,11 +89,12 @@ WHERE 1=1
{//更新信息 {//更新信息
string logContent = ""; string logContent = "";
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
List<ChangePlanItem> oldChangePlanItemList = new List<ChangePlanItem>();
List<ChangePlanItem> newChangePlanItemList = new List<ChangePlanItem>();
List<Model.Entity.Log.RB_Class_Log> classLogList = new List<Model.Entity.Log.RB_Class_Log>(); List<Model.Entity.Log.RB_Class_Log> classLogList = new List<Model.Entity.Log.RB_Class_Log>();
if (model.ChangeType == 1)//1.调课 if (model.MoveType == 1)//固定日期
{ {
List<ChangePlanItem> oldChangePlanItemList = new List<ChangePlanItem>();
List<ChangePlanItem> newChangePlanItemList = new List<ChangePlanItem>();
//原数据 //原数据
if (!string.IsNullOrWhiteSpace(model.SourceData)) if (!string.IsNullOrWhiteSpace(model.SourceData))
{ {
...@@ -102,6 +105,8 @@ WHERE 1=1 ...@@ -102,6 +105,8 @@ WHERE 1=1
{ {
newChangePlanItemList = Common.Plugin.JsonHelper.DeserializeObject<List<ChangePlanItem>>(model.TargetData); newChangePlanItemList = Common.Plugin.JsonHelper.DeserializeObject<List<ChangePlanItem>>(model.TargetData);
} }
if (model.ChangeType == 1)//1.调课
{
foreach (var item in oldChangePlanItemList) foreach (var item in oldChangePlanItemList)
{ {
var newChangePlanItemModel = newChangePlanItemList.Where(x => x.ClassPlanId == item.ClassPlanId).FirstOrDefault(); var newChangePlanItemModel = newChangePlanItemList.Where(x => x.ClassPlanId == item.ClassPlanId).FirstOrDefault();
...@@ -196,11 +201,316 @@ WHERE 1=1 ...@@ -196,11 +201,316 @@ WHERE 1=1
} }
if (deletePlanTimeList != null && deletePlanTimeList.Any()) if (deletePlanTimeList != null && deletePlanTimeList.Any())
{ {
builder.AppendFormat(" DELETE FROM rb_class_time where classtimeId in(0)", string.Join(",", deletePlanTimeList.Select(x => x))); builder.AppendFormat(" DELETE FROM rb_class_time where classtimeId in(0);", string.Join(",", deletePlanTimeList.Select(x => x)));
}
}
}
else
{//全局修改
AllChangePlanItem allChangePlanModel = new AllChangePlanItem();
//目标数据
if (!string.IsNullOrWhiteSpace(model.TargetData))
{
allChangePlanModel = Common.Plugin.JsonHelper.DeserializeObject<AllChangePlanItem>(model.TargetData);
}
if (model.ChangeType == 1)
{
var oldPlanList = class_PlanRepository.GetClassPlanListRepository(new Edu.Model.ViewModel.Course.RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
StartTime = model.CreateTime.ToString("yyyy-MM-dd 00:00:00")
});
#region 班级计划
//默认上课时间
var defaultPlanTimeList = new List<ClassTimeItem>();
var BasicMinutes = allChangePlanModel.ClassHourMinute;
foreach (var tItem in allChangePlanModel.DefaultTimeList)
{
ClassTimeItem tModel = new ClassTimeItem()
{
DateList = new List<string>(),
TimeList = new List<TimeItem>()
};
tModel.DateList = tItem.DateList;
foreach (var subItem in tItem.TimeList)
{
var startDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + subItem.StartTime + ":00");
var endDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + subItem.EndTime + ":00");
TimeSpan span = endDate.Subtract(startDate);
var timeModel = new TimeItem()
{
StartTime = subItem.StartTime,
EndTime = subItem.EndTime,
TimeHour = subItem.TimeHour,
};
if (timeModel.TimeHour <= 0)
{
timeModel.TimeHour = Convert.ToDecimal(span.TotalMinutes / BasicMinutes);
}
tModel.TimeList.Add(timeModel);
defaultPlanTimeList.Add(tModel);
} }
} }
//班级上课计划列表
List<Model.ViewModel.Course.RB_Class_Plan_ViewModel> classPlanList = new List<Model.ViewModel.Course.RB_Class_Plan_ViewModel>();
if (allChangePlanModel.ClassHours > 0)
{
var srartDate = Convert.ToDateTime(allChangePlanModel.OpenTimeStr);
//按周排课和按月排课
if (allChangePlanModel.ClassStyle == ClassStyleEnum.Week || allChangePlanModel.ClassStyle == ClassStyleEnum.Month)
{
int i = 0;
decimal totalHours = 0;
while (allChangePlanModel.ClassHours > totalHours)
{
var newDate = srartDate.AddDays(i);
foreach (var item in allChangePlanModel.WeekDayList)
{
var planModel = new Model.ViewModel.Course.RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
ClassPlanId = 0,
ClassRoomId = allChangePlanModel.ClassRoomId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
PlanTimeList = new List<Model.ViewModel.Course.RB_Class_Time_ViewModel>(),
TeacherId = allChangePlanModel.TeacherId,
ClassDate = newDate
};
if (allChangePlanModel.ClassStyle == ClassStyleEnum.Week)
{
switch (item)
{
case "1":
if (newDate.DayOfWeek == DayOfWeek.Monday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, allChangePlanModel.ClassHourMinute, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "2":
if (newDate.DayOfWeek == DayOfWeek.Tuesday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, allChangePlanModel.ClassHourMinute, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "3":
if (newDate.DayOfWeek == DayOfWeek.Wednesday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, allChangePlanModel.ClassHourMinute, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "4":
if (newDate.DayOfWeek == DayOfWeek.Thursday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, allChangePlanModel.ClassHourMinute, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "5":
if (newDate.DayOfWeek == DayOfWeek.Friday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, allChangePlanModel.ClassHourMinute, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "6":
if (newDate.DayOfWeek == DayOfWeek.Saturday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, allChangePlanModel.ClassHourMinute, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "7":
if (newDate.DayOfWeek == DayOfWeek.Sunday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, allChangePlanModel.ClassHourMinute, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
}
}
else if (allChangePlanModel.ClassStyle == ClassStyleEnum.Month)
{
if (newDate.Day == Convert.ToInt32(item))
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, allChangePlanModel.ClassHourMinute, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
}
}
i++;
}
}
//固定日期
else if (allChangePlanModel.ClassStyle == ClassStyleEnum.FixedDate)
{
foreach (var item in allChangePlanModel.WeekDayList)
{
var planModel = new Model.ViewModel.Course.RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
ClassPlanId = 0,
ClassRoomId = allChangePlanModel.ClassRoomId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
PlanTimeList = new List<Model.ViewModel.Course.RB_Class_Time_ViewModel>(),
TeacherId = allChangePlanModel.TeacherId,
ClassDate = Convert.ToDateTime(item)
};
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
CalcDayClassHoursModule(timeList, planModel.PlanTimeList, allChangePlanModel.ClassHourMinute, BasicMinutes);
classPlanList.Add(planModel);
}
}
}
//约课
else
{
}
}
Task.Run(() =>
{
if (oldPlanList != null && oldPlanList.Any())//删除剩余的排课日期和时间
{
string ids = string.Join(",", oldPlanList.Select(qitem => qitem.ClassPlanId));
if (!string.IsNullOrEmpty(ids))
{
flag = class_TimeRepository.DeleteClassTimeByPlanIdsRepository(ids);
if (flag)
{
flag = class_PlanRepository.DeleteClassPlanRepository(ids);
}
}
}
if (classPlanList != null && classPlanList.Any())
{
foreach (var item in classPlanList)
{
if (!class_PlanRepository.CheckExistsRepository(item))
{
//添加班级上课计划
var newClassPlanId = class_PlanRepository.Insert(item);
flag = newClassPlanId > 0;
if (item.PlanTimeList != null && item.PlanTimeList.Any() && newClassPlanId > 0)
{
foreach (var subItem in item.PlanTimeList)
{
subItem.ClassTimeId = 0;
subItem.ClassPlanId = newClassPlanId;
subItem.ClassId = model.ClassId;
subItem.Group_Id = model.Group_Id;
subItem.School_Id = model.School_Id;
//添加班级上课计划的上课时间
class_TimeRepository.Insert(subItem);
}
}
}
}
if (flag)
{
classLogRepository.AddClassLogRepository(
new Model.Entity.Log.RB_Class_Log()
{
LogType = Common.Enum.Course.ClassLogTypeEnum.Class,
LogContent = "从" + allChangePlanModel.OpenTimeStr + "开始" + (Common.Plugin.EnumHelper.ToName(allChangePlanModel.ClassStyle)),
ClassId = model.ClassId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
CreateBy = model.CreateBy
});
}
}
});
#endregion
}
else if (model.ChangeType == 2 || model.ChangeType == 3)
{
if (model.ChangeType == 2)
{
builder.AppendFormat(" update RB_Class_Plan SET TeacherId={0} where DATE_FORMAT(ClassDate,'%Y-%m-%d')>=DATE_FORMAT('{1}','%Y-%m-%d')", allChangePlanModel.TeacherId, model.CreateTime);
string tIds = allChangePlanModel.TeacherId.ToString();
var teacherList = teacherRepository.GetTeacherListRepository(new Model.ViewModel.User.RB_Teacher_ViewModel() { QTIds = tIds });
logContent += string.Format("全局将讲师修改为【{0}】.", (teacherList?.Where(qitem => qitem.TId == allChangePlanModel.TeacherId)?.FirstOrDefault()?.TeacherName ?? ""));
}
else if (model.ChangeType == 3)
{
builder.AppendFormat(" update RB_Class_Plan SET ClassRoomId={0} where DATE_FORMAT(ClassDate,'%Y-%m-%d')>=DATE_FORMAT('{1}','%Y-%m-%d')", allChangePlanModel.ClassRoomId, model.CreateTime);
string roomIds = allChangePlanModel.ClassRoomId.ToString();
var roomList = class_RoomRepository.GetClassRoomListRepository(new Edu.Model.ViewModel.Course.RB_Class_Room_ViewModel() { QRoomIds = roomIds });
logContent += string.Format("全局将教室修改为【{0}】.", (roomList?.Where(qitem => qitem.RoomId == allChangePlanModel.ClassRoomId)?.FirstOrDefault()?.RoomName ?? ""));
}
}
else if (model.ChangeType == 4)
{
var oldPlanList = class_PlanRepository.GetClassPlanListRepository(new Edu.Model.ViewModel.Course.RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
StartTime = model.CreateTime.ToString("yyyy-MM-dd 00:00:00")
});
if (oldPlanList != null && oldPlanList.Any())//删除剩余的排课日期和时间
{
if (oldPlanList != null && oldPlanList.Any())
{
builder.AppendFormat(" update RB_Class_Plan SET Status=1 where ClassPlanId in(0);", string.Join(",", oldPlanList.Select(x => x.ClassPlanId)));
builder.AppendFormat(" DELETE FROM rb_class_time where ClassPlanId in(0);", string.Join(",", oldPlanList.Select(x => x.ClassPlanId)));
}
}
}
}
if (!string.IsNullOrWhiteSpace(builder.ToString()))
{
flag = class_PlanRepository.Execute(builder.ToString()) > 0; flag = class_PlanRepository.Execute(builder.ToString()) > 0;
}
if (!string.IsNullOrEmpty(logContent) && flag) if (!string.IsNullOrEmpty(logContent) && flag)
{ {
classLogRepository.AddClassLogRepository( classLogRepository.AddClassLogRepository(
...@@ -217,5 +527,48 @@ WHERE 1=1 ...@@ -217,5 +527,48 @@ WHERE 1=1
} }
return flag; return flag;
} }
/// <summary>
/// 计算每天课时
/// </summary>
/// <param name="timeList"></param>
/// <param name="classTimeList"></param>
/// <param name="model"></param>
/// <returns></returns>
private decimal CalcDayClassHoursModule(List<TimeItem> timeList, List<Model.ViewModel.Course.RB_Class_Time_ViewModel> classTimeList, int ClassHourMinute, int BasicMinutes)
{
decimal dayClassHours = 0;
decimal dayMinutes = 0;
foreach (var sItem in timeList)
{
var timeModel = new Model.ViewModel.Course.RB_Class_Time_ViewModel()
{
StartTime = sItem.StartTime,
EndTime = sItem.EndTime,
TimeHour = sItem.TimeHour,
};
classTimeList.Add(timeModel);
var startDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + sItem.StartTime + ":00");
var endDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + sItem.EndTime + ":00");
TimeSpan span = endDate.Subtract(startDate);
if (span.TotalMinutes > 0)
{
dayMinutes += Convert.ToDecimal(span.TotalMinutes);
}
}
if (ClassHourMinute > 0)
{
dayClassHours = dayMinutes / ClassHourMinute;
}
else
{
dayClassHours = dayMinutes / BasicMinutes;
}
return dayClassHours;
}
} }
} }
...@@ -69,13 +69,17 @@ namespace Edu.Repository.EduTask ...@@ -69,13 +69,17 @@ namespace Edu.Repository.EduTask
SELECT A.* {0} SELECT A.* {0}
FROM RB_Education_Receipt AS A FROM RB_Education_Receipt AS A
WHERE 1=1 WHERE 1=1
",isSpecNode); ", isSpecNode);
if (query != null) if (query != null)
{ {
if (query.Group_Id > 0) if (query.Group_Id > 0)
{ {
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Education_Receipt_ViewModel.Group_Id), query.Group_Id); builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Education_Receipt_ViewModel.Group_Id), query.Group_Id);
} }
if (!string.IsNullOrEmpty(query.QIds))
{
builder.AppendFormat(@" AND A.{0}IN({1}) ", nameof(RB_Education_Receipt_ViewModel.Id), query.QIds);
}
if (!string.IsNullOrEmpty(query.Title)) if (!string.IsNullOrEmpty(query.Title))
{ {
builder.AppendFormat(@" AND A.{0} LIKE @Title ", nameof(RB_Education_Receipt_ViewModel.Title)); builder.AppendFormat(@" AND A.{0} LIKE @Title ", nameof(RB_Education_Receipt_ViewModel.Title));
...@@ -213,8 +217,8 @@ WHERE 1=1 ...@@ -213,8 +217,8 @@ WHERE 1=1
//系统角色 //系统角色
else if (subItem.AuditType == Common.Enum.User.WFTAuditTypeEnum.Post) else if (subItem.AuditType == Common.Enum.User.WFTAuditTypeEnum.Post)
{ {
var postIds= GetPostIdsRepository(model.Group_Id, subItem.PostType.ToString()); var postIds = GetPostIdsRepository(model.Group_Id, subItem.PostType.ToString());
if (postIds!=null && postIds.Count>0) if (postIds != null && postIds.Count > 0)
{ {
AuditedId += string.Join(",", postIds) + ","; AuditedId += string.Join(",", postIds) + ",";
subItem.PostUserIds = string.Join(",", postIds); subItem.PostUserIds = string.Join(",", postIds);
...@@ -231,9 +235,9 @@ WHERE 1=1 ...@@ -231,9 +235,9 @@ WHERE 1=1
AuditType = item.FlowAduitList[0].AuditType, AuditType = item.FlowAduitList[0].AuditType,
OriginalAuditId = 0, OriginalAuditId = 0,
RoleOrInitiator = 0, RoleOrInitiator = 0,
PostIds ="", PostIds = "",
UserIds = "", UserIds = "",
SysPostIds="", SysPostIds = "",
ToAuditId = AuditedId.TrimEnd(','), ToAuditId = AuditedId.TrimEnd(','),
Sort = item.SortNum, Sort = item.SortNum,
SpecialNode = item.FlowAduitList[0].IsSpecNode, SpecialNode = item.FlowAduitList[0].IsSpecNode,
...@@ -382,13 +386,13 @@ WHERE 1=1 ...@@ -382,13 +386,13 @@ WHERE 1=1
/// <returns></returns> /// <returns></returns>
public List<int> GetPostIdsRepository(int GroupId, string PostId) public List<int> GetPostIdsRepository(int GroupId, string PostId)
{ {
List<int> result = new List<int> (); List<int> result = new List<int>();
var list = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel() var list = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{ {
Group_Id = GroupId, Group_Id = GroupId,
QPostIds = PostId QPostIds = PostId
}); });
if (list!=null &&list.Count > 0) if (list != null && list.Count > 0)
{ {
foreach (var item in list) foreach (var item in list)
{ {
......
...@@ -127,12 +127,12 @@ namespace Edu.WebApi.Controllers.Course ...@@ -127,12 +127,12 @@ namespace Edu.WebApi.Controllers.Course
int IsAddDefault = base.ParmJObj.GetInt("IsAddDefault"); int IsAddDefault = base.ParmJObj.GetInt("IsAddDefault");
var query = new RB_Class_ViewModel() var query = new RB_Class_ViewModel()
{ {
CouseId = base.ParmJObj.GetInt("CourseId",0), CouseId = base.ParmJObj.GetInt("CourseId", 0),
IsQuerySurplus = base.ParmJObj.GetInt("IsQuerySurplus"), IsQuerySurplus = base.ParmJObj.GetInt("IsQuerySurplus"),
School_Id = base.ParmJObj.GetInt("SchoolId",-1), School_Id = base.ParmJObj.GetInt("SchoolId", -1),
MoreStatus=base.ParmJObj.GetStringValue("MoreStatus"), MoreStatus = base.ParmJObj.GetStringValue("MoreStatus"),
Teacher_Id=base.ParmJObj.GetInt("Teacher_Id"), Teacher_Id = base.ParmJObj.GetInt("Teacher_Id"),
IsQuerySurplusPlan=base.ParmJObj.GetInt("IsQuerySurplusPlan") IsQuerySurplusPlan = base.ParmJObj.GetInt("IsQuerySurplusPlan")
}; };
query.Group_Id = base.UserInfo.Group_Id; query.Group_Id = base.UserInfo.Group_Id;
//if (query.School_Id == -1) //if (query.School_Id == -1)
...@@ -157,7 +157,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -157,7 +157,7 @@ namespace Edu.WebApi.Controllers.Course
subItem.RoomName, subItem.RoomName,
subItem.TeacherId, subItem.TeacherId,
subItem.TeacherName, subItem.TeacherName,
TimeList = subItem?.PlanTimeList?.Select(qitem => new { qitem.StartTime, qitem.EndTime, qitem.TimeHour }) TimeList = subItem?.PlanTimeList?.Select(qitem => new { qitem.ClassTimeId, qitem.StartTime, qitem.EndTime, qitem.TimeHour })
}; };
planList.Add(subObj); planList.Add(subObj);
} }
...@@ -1414,7 +1414,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -1414,7 +1414,7 @@ namespace Edu.WebApi.Controllers.Course
#region 追加章节信息 #region 追加章节信息
var hours = classModule.GetCurrentPlanStudyHoursRepository(model.ClassPlanId)+1; var hours = classModule.GetCurrentPlanStudyHoursRepository(model.ClassPlanId) + 1;
if (hours != -1) if (hours != -1)
{ {
var classObj = classModule.GetClassModule(model.ClassId); var classObj = classModule.GetClassModule(model.ClassId);
......
using Edu.Common.API; using Edu.Common.API;
using Edu.Common.Enum.Course;
using Edu.Common.Plugin; using Edu.Common.Plugin;
using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.EduTask; using Edu.Model.ViewModel.EduTask;
using Edu.Module.Course;
using Edu.Module.EduTask; using Edu.Module.EduTask;
using Edu.WebApi.Filter; using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
...@@ -27,7 +29,10 @@ namespace Edu.WebApi.Controllers.EduTask ...@@ -27,7 +29,10 @@ namespace Edu.WebApi.Controllers.EduTask
/// </summary> /// </summary>
private readonly ChangeClassPlanModule changeClassPlanModule = AOP.AOPHelper.CreateAOPObject<ChangeClassPlanModule>(); private readonly ChangeClassPlanModule changeClassPlanModule = AOP.AOPHelper.CreateAOPObject<ChangeClassPlanModule>();
/// <summary>
/// 班级处理类对象
/// </summary>
private readonly ClassModule classModule = AOP.AOPHelper.CreateAOPObject<ClassModule>();
/// <summary> /// <summary>
/// 新增修改班级调课 /// 新增修改班级调课
/// </summary> /// </summary>
...@@ -42,19 +47,26 @@ namespace Edu.WebApi.Controllers.EduTask ...@@ -42,19 +47,26 @@ namespace Edu.WebApi.Controllers.EduTask
CourseId = base.ParmJObj.GetInt("CourseId"), CourseId = base.ParmJObj.GetInt("CourseId"),
ChangeType = base.ParmJObj.GetInt("ChangeType"), ChangeType = base.ParmJObj.GetInt("ChangeType"),
MoveType = base.ParmJObj.GetInt("MoveType"), MoveType = base.ParmJObj.GetInt("MoveType"),
// SourceData=base.ParmJObj.GetStringValue("SourceData"),
// TargetData=base.ParmJObj.GetStringValue("TargetData"),
}; };
var classModel = classModule.GetClassModule(model.ClassId);
try try
{
if (model.MoveType == 1)
{ {
model.OldChangePlanItemList = Common.Plugin.JsonHelper.DeserializeObject<List<ChangePlanItem>>(base.ParmJObj.GetStringValue("OldChangePlanItemList")); model.OldChangePlanItemList = Common.Plugin.JsonHelper.DeserializeObject<List<ChangePlanItem>>(base.ParmJObj.GetStringValue("OldChangePlanItemList"));
model.NewChangePlanItemList = Common.Plugin.JsonHelper.DeserializeObject<List<ChangePlanItem>>(base.ParmJObj.GetStringValue("NewChangePlanItemList")); model.NewChangePlanItemList = Common.Plugin.JsonHelper.DeserializeObject<List<ChangePlanItem>>(base.ParmJObj.GetStringValue("NewChangePlanItemList"));
} }
else
{
model.AllChangePlanModel = Common.Plugin.JsonHelper.DeserializeObject<AllChangePlanItem>(base.ParmJObj.GetStringValue("AllChangePlanItem"));
}
}
catch (Exception ex) catch (Exception ex)
{ {
Common.Plugin.LogHelper.Write(ex, "SetChangeClassPlan"); Common.Plugin.LogHelper.Write(ex, "SetChangeClassPlan");
} }
if (model.MoveType == 1)//固定日期
{
if (model.ChangeType == 1)//调课 if (model.ChangeType == 1)//调课
{ {
if (model.OldChangePlanItemList.Count() != model.NewChangePlanItemList.Count()) if (model.OldChangePlanItemList.Count() != model.NewChangePlanItemList.Count())
...@@ -70,6 +82,194 @@ namespace Edu.WebApi.Controllers.EduTask ...@@ -70,6 +82,194 @@ namespace Edu.WebApi.Controllers.EduTask
} }
} }
} }
else if (model.ChangeType == 2)
{
if (model.NewChangePlanItemList == null || !model.NewChangePlanItemList.Any() || model.NewChangePlanItemList.FirstOrDefault()?.TeacherId == 0)
{
return ApiResult.Failed("请选择老师");
}
}
else if (model.ChangeType == 3)
{
if (model.NewChangePlanItemList == null || !model.NewChangePlanItemList.Any() || model.NewChangePlanItemList.FirstOrDefault()?.ClassRoomId == 0)
{
return ApiResult.Failed("请选择教室");
}
}
}
else //全局修改
{
if (model.ChangeType == 1)
{
//排课方式
try
{
// string WeekDayListStr = model.AllChangePlanModel.WeekDayList; // base.ParmJObj.GetStringValue("WeekDayList");
switch (model.AllChangePlanModel.ClassStyle)
{
//按周排课
case ClassStyleEnum.Week:
if (model.AllChangePlanModel.WeekDayList != null && model.AllChangePlanModel.WeekDayList.Any())
{
// model.AllChangePlanModel.WeekDayList = Common.Plugin.JsonHelper.DeserializeObject<List<string>>(WeekDayListStr);
model.AllChangePlanModel.DateJson = Common.Plugin.JsonHelper.Serialize(model.AllChangePlanModel.WeekDayList);
}
else
{
model.AllChangePlanModel.DateJson = "";
}
break;
//固定日期排课
case ClassStyleEnum.FixedDate:
if (model.AllChangePlanModel.WeekDayList != null && model.AllChangePlanModel.WeekDayList.Any())
{
// model.AllChangePlanModel.WeekDayList = Common.Plugin.JsonHelper.DeserializeObject<List<string>>(WeekDayListStr);
model.AllChangePlanModel.DateJson = Common.Plugin.JsonHelper.Serialize(model.AllChangePlanModel.WeekDayList);
}
else
{
model.AllChangePlanModel.DateJson = "";
}
break;
//按月排课
case ClassStyleEnum.Month:
if (model.AllChangePlanModel.WeekDayList != null && model.AllChangePlanModel.WeekDayList.Any())
{
// model.AllChangePlanModel.WeekDayList = Common.Plugin.JsonHelper.DeserializeObject<List<string>>(WeekDayListStr);
model.AllChangePlanModel.DateJson = Common.Plugin.JsonHelper.Serialize(model.AllChangePlanModel.WeekDayList);
}
else
{
model.AllChangePlanModel.DateJson = "";
}
break;
//网约课
case ClassStyleEnum.OnLine:
model.AllChangePlanModel.DateJson = "";
break;
}
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "SetChangeClassPlan");
}
//try
//{
// string DefaultPlanTimeListStr = base.ParmJObj.GetStringValue("DefaultPlanTimeList");
// if (!string.IsNullOrEmpty(DefaultPlanTimeListStr))
// {
// model.AllChangePlanModel.DefaultTimeList = Common.Plugin.JsonHelper.DeserializeObject<List<Edu.Model.ViewModel.EduTask.ClassTimeItem>>(DefaultPlanTimeListStr);
// }
// else
// {
// return ApiResult.Failed("请输入上课时间");
// }
//}
//catch (Exception ex)
//{
// Common.Plugin.LogHelper.Write(ex, "SetClass_DefaultPlanTimeList");
//}
List<string> dayList = new List<string>();
if (model.AllChangePlanModel.DefaultTimeList != null && model.AllChangePlanModel.DefaultTimeList.Count > 0)
{
foreach (var rootItem in model.AllChangePlanModel.DefaultTimeList)
{
if (rootItem.DateList == null || (rootItem.DateList != null && rootItem.DateList.Count == 0))
{
return ApiResult.ParamIsNull(message: "请选择日期/周");
}
if (rootItem.DateList != null && rootItem.DateList.Count > 0)
{
dayList.AddRange(rootItem.DateList);
}
foreach (var item in rootItem.TimeList)
{
string message = "";
if (!Common.ConvertHelper.IsTime(item.StartTime + ":00"))
{
message = "【" + item.StartTime + "】格式不正确!(参考格式为 00:00)";
}
if (!Common.ConvertHelper.IsTime(item.EndTime + ":00"))
{
if (!string.IsNullOrEmpty(message))
{
message += ",";
}
message += "【" + item.EndTime + "】格式不正确!(参考格式为 00:00)";
}
var startDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + item.StartTime + ":00");
var endDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + item.EndTime + ":00");
TimeSpan span = endDate.Subtract(startDate);
if (item.TimeHour <= 0)
{
item.TimeHour = Convert.ToDecimal(span.TotalMinutes / classModule.GetBasicMinutesModule(model.Group_Id));
}
if (!string.IsNullOrEmpty(message))
{
return ApiResult.ParamIsNull(message: message);
}
}
}
var tempList = dayList.GroupBy(qitem => new { qitem }).Where(g => g.Count() > 1).Select(qitem => new { qitem.Key.qitem });
string message2 = "";
foreach (var sItem in tempList)
{
message2 += "," + sItem.qitem;
}
if (!string.IsNullOrEmpty(message2))
{
string tempStr = "";
if (model.AllChangePlanModel.ClassStyle == ClassStyleEnum.Week)
{
tempStr = "每周";
}
if (model.AllChangePlanModel.ClassStyle == ClassStyleEnum.Month)
{
tempStr = "每月";
}
if (model.AllChangePlanModel.ClassStyle == ClassStyleEnum.FixedDate)
{
tempStr = "固定日期";
}
return ApiResult.ParamIsNull(message: "学习时间段" + (tempStr) + message2.TrimStart(',') + "重复!");
}
model.AllChangePlanModel.DefaultTimeJson = Common.Plugin.JsonHelper.Serialize(model.AllChangePlanModel.DefaultTimeList);
}
else
{
return ApiResult.Failed("请输入排课信息");
}
if (classModel != null && classModel.ClassId > 0)
{ //获取课时分钟数
model.AllChangePlanModel.ClassHourMinute = classModel?.ClassHourMinute ?? 0;
//获取剩余总课时
model.AllChangePlanModel.ClassHours = (Convert.ToDecimal(classModel.ClassHours) - (classModule.GetClassFinishMinutesRepository(model.ClassId.ToString()).FirstOrDefault()?.FinishClassHours ?? 0));
model.AllChangePlanModel.TeacherId = classModel.Teacher_Id;
model.AllChangePlanModel.ClassRoomId = classModel.ClassRoomId;
}
else
{
return ApiResult.Failed("班级信息不存在");
}
}
else if (model.ChangeType == 2)
{
if (model.AllChangePlanModel == null || model.AllChangePlanModel.TeacherId == 0)
{
return ApiResult.Failed("请选择老师");
}
}
else if (model.ChangeType == 3)
{
if (model.AllChangePlanModel == null || model.AllChangePlanModel.ClassRoomId == 0)
{
return ApiResult.Failed("请选择教室");
}
}
}
if (model.OldChangePlanItemList != null && model.OldChangePlanItemList.Any()) if (model.OldChangePlanItemList != null && model.OldChangePlanItemList.Any())
{ {
model.SourceData = JsonHelper.Serialize(model.OldChangePlanItemList); model.SourceData = JsonHelper.Serialize(model.OldChangePlanItemList);
...@@ -78,6 +278,19 @@ namespace Edu.WebApi.Controllers.EduTask ...@@ -78,6 +278,19 @@ namespace Edu.WebApi.Controllers.EduTask
{ {
model.SourceData = ""; model.SourceData = "";
} }
if (model.MoveType == 2)//全局并且是调课的时候赋值
{
if (model.AllChangePlanModel != null)
{
model.TargetData = JsonHelper.Serialize(model.AllChangePlanModel);
}
else
{
model.TargetData = "";
}
}
else
{
if (model.NewChangePlanItemList != null && model.NewChangePlanItemList.Any()) if (model.NewChangePlanItemList != null && model.NewChangePlanItemList.Any())
{ {
model.TargetData = JsonHelper.Serialize(model.NewChangePlanItemList); model.TargetData = JsonHelper.Serialize(model.NewChangePlanItemList);
...@@ -86,13 +299,13 @@ namespace Edu.WebApi.Controllers.EduTask ...@@ -86,13 +299,13 @@ namespace Edu.WebApi.Controllers.EduTask
{ {
model.TargetData = ""; model.TargetData = "";
} }
}
if (model.Id == 0) if (model.Id == 0)
{ {
model.CreateBy = base.UserInfo.Id; model.CreateBy = base.UserInfo.Id;
model.CreateTime = DateTime.Now; model.CreateTime = DateTime.Now;
model.Group_Id = base.UserInfo.Group_Id; model.Group_Id = base.UserInfo.Group_Id;
model.School_Id = base.UserInfo.School_Id; model.School_Id = classModel.School_Id;
} }
model.UpdateBy = base.UserInfo.Id; model.UpdateBy = base.UserInfo.Id;
model.UpdateTime = DateTime.Now; model.UpdateTime = DateTime.Now;
......
...@@ -45,6 +45,11 @@ namespace Edu.WebApi.Controllers.EduTask ...@@ -45,6 +45,11 @@ namespace Edu.WebApi.Controllers.EduTask
ReceiptType = base.ParmJObj.GetInt("ReceiptType"), ReceiptType = base.ParmJObj.GetInt("ReceiptType"),
Title = base.ParmJObj.GetStringValue("Title"), Title = base.ParmJObj.GetStringValue("Title"),
}; };
var id = base.ParmJObj.GetInt("Id");
if (id > 0)
{
query.QIds = id.ToString();
}
query.CreateBy = base.UserInfo.Id; query.CreateBy = base.UserInfo.Id;
var list = educationReceiptModule.GetEducationReceiptPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query); var list = educationReceiptModule.GetEducationReceiptPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.PageData = list; pageModel.PageData = list;
......
...@@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Cors; ...@@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Edu.WebApi.Controllers.Public namespace Edu.WebApi.Controllers.Public
{ {
...@@ -205,6 +206,28 @@ namespace Edu.WebApi.Controllers.Public ...@@ -205,6 +206,28 @@ namespace Edu.WebApi.Controllers.Public
return ApiResult.Failed("请求失败,数据不存在!"); return ApiResult.Failed("请求失败,数据不存在!");
} }
} }
/// <summary>
/// 批量新增节假日
/// </summary>
/// <returns></returns>
public ApiResult InsertHoliday()
{
//SetHoliday
string apiResult = Common.Plugin.HttpHelper.HttpGet("http://timor.tech/api/holiday/year/2020/");
JObject parmsJob = JObject.Parse(apiResult);
string resultCode = parmsJob.GetStringValue("code");
string holidayList = parmsJob.GetStringValue("holiday");
return ApiResult.Success("");
}
#endregion #endregion
} }
......
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