Commit 26dbb980 authored by liudong1993's avatar liudong1993

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

parents 90002721 1f264059
...@@ -498,6 +498,18 @@ namespace Edu.Common ...@@ -498,6 +498,18 @@ namespace Edu.Common
} }
} }
/// <summary>
/// 教师考核审批流程Id
/// </summary>
public static int TeacherAssessmentFlowId
{
get
{
int.TryParse(ReadConfigKey("TeacherAssessmentFlowId"), out int TeacherAssessmentFlowId);
return TeacherAssessmentFlowId;
}
}
/// <summary> /// <summary>
/// okr关注事项配置 /// okr关注事项配置
......
...@@ -6,8 +6,10 @@ ...@@ -6,8 +6,10 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNet.SignalR.Core" Version="2.4.3" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" /> <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="2.2.0" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.8" /> <PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.8" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.8" /> <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.8" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
......
...@@ -68,6 +68,12 @@ namespace Edu.Common.Enum.Finance ...@@ -68,6 +68,12 @@ namespace Edu.Common.Enum.Finance
/// 投稿审批 /// 投稿审批
/// </summary> /// </summary>
[EnumField("VIP课程申请")] [EnumField("VIP课程申请")]
VipCourse = 11 VipCourse = 11,
/// <summary>
/// 教师考核审批
/// </summary>
[EnumField("教师考核审批")]
TeacherAssessment =12,
} }
} }
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.SignalR
{
public class ClassRoomClient
{
public int RoomId { get; set; }
public int RoomName { get; set; }
}
}
using Microsoft.AspNet.SignalR.Hubs;
using Microsoft.AspNetCore.SignalR;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Edu.Common.SignalR
{
/// <summary>
/// websocket消息处理中心
/// </summary>
public class MessageCenterHub : Hub
{
public static IHubContext<MessageCenterHub> GlobalContext { get; private set; }
public static List<RoomConnectionModel> roomConnectionModels = new List<RoomConnectionModel>();
public MessageCenterHub(IHubContext<MessageCenterHub> ctx)
{
GlobalContext = ctx;
}
/// <summary>
/// 注册教室信息
/// </summary>
/// <param name="message"></param>
public void SendRoomAuth(string message)
{
int roomid = int.Parse(message);
Groups.AddToGroupAsync(Context.ConnectionId, $"room_{roomid}");
if (!roomConnectionModels.Where(x => x.RoomId == roomid).Any())
{
roomConnectionModels.Add(new RoomConnectionModel() {
RoomId = roomid,
UnLockUserName = "lock",
ConnectionId = Context.ConnectionId
});
}
SendNoticeRoomStatus();
Clients.Client(Context.ConnectionId).SendAsync("Registed", 1);
}
/// <summary>
/// 教室终端被解锁
/// </summary>
/// <param name="userName"></param>
public void SendUnLockMsg(string userName)
{
if (!string.IsNullOrEmpty(userName))
{
roomConnectionModels.ForEach(x =>
{
if (x.ConnectionId == Context.ConnectionId)
{
x.UnLockUserName = userName;
}
});
SendNoticeRoomStatus();
}
}
/// <summary>
/// 注册监听者信息
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
public async Task RigestLiver(string message)
{
await Groups.AddToGroupAsync(Context.ConnectionId, "LIVER");
await Clients.Group("LIVER").SendAsync("LIVER_HELLO", "LIVER_HELLO");
}
/// <summary>
/// 发送更新指令
/// </summary>
/// <param name="room"></param>
/// <returns></returns>
public async Task SendChangePlanAsync(int room)
{
await Clients.Group($"room_{room}").SendAsync("ChangePlan", " ");
}
/// <summary>
/// 发送拉流录屏命令
/// </summary>
/// <param name="msg"></param>
public async void BeginSaveLiveVideo(string msg)
{
await Clients.Group("LIVER").SendAsync("PULL_CLASSROOM_LIVE", msg);
}
public async void DownSaveLiveVideo(string msg)
{
await Clients.Group("LIVER").SendAsync("CLOSE_PULL_CLASSROOM_LIVE", msg);
}
/// <summary>
/// 监听客户端掉线
/// </summary>
/// <param name="exception"></param>
/// <returns></returns>
public override async Task OnDisconnectedAsync(Exception exception)
{
roomConnectionModels.RemoveAll(x => {
return x.ConnectionId == Context.ConnectionId;
});
SendNoticeRoomStatus();
await base.OnDisconnectedAsync(exception);
}
/// <summary>
/// 注册ERP链接
/// </summary>
/// <param name="msg"></param>
public async void RegistErp(string msg)
{
await Groups.AddToGroupAsync(Context.ConnectionId, "ERP");
await Clients.Group("ERP").SendAsync("RoomStatusChange", JsonConvert.SerializeObject(roomConnectionModels));
}
public async void SendNoticeRoomStatus()
{
await Clients.Group("ERP").SendAsync("RoomStatusChange", JsonConvert.SerializeObject(roomConnectionModels));
}
}
[Serializable]
public class RoomConnectionModel {
public int RoomId { get; set; }
public string UnLockUserName { get; set; }
public string ConnectionId { get; set; }
}
}
using System; using Edu.Common.Enum.EduTask;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using VT.FW.DB; using VT.FW.DB;
...@@ -95,7 +96,7 @@ namespace Edu.Model.Entity.DataStatistics ...@@ -95,7 +96,7 @@ namespace Edu.Model.Entity.DataStatistics
/// <summary> /// <summary>
/// 审核状态 /// 审核状态
/// </summary> /// </summary>
public int AuditStatus { get; set; } public EduTaskRrocessStatus AuditStatus { get; set; }
/// <summary> /// <summary>
/// 集团编号 /// 集团编号
...@@ -116,5 +117,15 @@ namespace Edu.Model.Entity.DataStatistics ...@@ -116,5 +117,15 @@ namespace Edu.Model.Entity.DataStatistics
/// 创建时间 /// 创建时间
/// </summary> /// </summary>
public DateTime CreateTime { get; set; } public DateTime CreateTime { get; set; }
}
/// <summary>
/// 教学主管是否打分
/// </summary>
public int IsTeacherFinish { get; set; }
/// <summary>
/// 教务主管是否打分
/// </summary>
public int IsJiaoWuFinish { get; set; }
}
} }
...@@ -10,6 +10,11 @@ namespace Edu.Model.ViewModel.DataStatistics ...@@ -10,6 +10,11 @@ namespace Edu.Model.ViewModel.DataStatistics
/// </summary> /// </summary>
public class RB_Teacher_Assessment_Extend : RB_Teacher_Assessment public class RB_Teacher_Assessment_Extend : RB_Teacher_Assessment
{ {
/// <summary>
/// 考核编号【查询使用】
/// </summary>
public string QIds { get; set; }
/// <summary> /// <summary>
/// 教师月度考核详情列表 /// 教师月度考核详情列表
/// </summary> /// </summary>
......
...@@ -127,5 +127,9 @@ namespace Edu.Model.ViewModel.Grade ...@@ -127,5 +127,9 @@ namespace Edu.Model.ViewModel.Grade
/// </summary> /// </summary>
public int Progress { get; set; } public int Progress { get; set; }
/// <summary>
/// 课程等级
/// </summary>
public int CourseRate { get; set; }
} }
} }
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.System
{
public class ClassRoomClient
{
public int RoomId { get; set; }
public int RoomName { get; set; }
}
}
...@@ -35,6 +35,8 @@ using Edu.Repository.Exam; ...@@ -35,6 +35,8 @@ using Edu.Repository.Exam;
using Edu.Model.ViewModel.Exam; using Edu.Model.ViewModel.Exam;
using Edu.Model.ViewModel.Scroll; using Edu.Model.ViewModel.Scroll;
using Edu.Repository.Scroll; using Edu.Repository.Scroll;
using Edu.Common.SignalR;
using Microsoft.AspNetCore.SignalR;
namespace Edu.Module.Course namespace Edu.Module.Course
{ {
...@@ -861,7 +863,7 @@ namespace Edu.Module.Course ...@@ -861,7 +863,7 @@ namespace Edu.Module.Course
{ {
if (flag) if (flag)
{ {
flag = SetClassPlanModule(item, user.Id); flag = SetClassPlanModule(item, user.Id).Result;
} }
} }
...@@ -1678,13 +1680,14 @@ namespace Edu.Module.Course ...@@ -1678,13 +1680,14 @@ namespace Edu.Module.Course
/// <param name="extModel"></param> /// <param name="extModel"></param>
/// <param name="createBy">操作人</param> /// <param name="createBy">操作人</param>
/// <returns></returns> /// <returns></returns>
public virtual bool SetClassPlanModule(RB_Class_Plan_ViewModel extModel, int createBy) public virtual async Task<bool> SetClassPlanModule(RB_Class_Plan_ViewModel extModel, int createBy)
{ {
bool flag; bool flag;
string logContent = ""; string logContent = "";
var oldPlanModel = new RB_Class_Plan();
if (extModel.ClassPlanId > 0) if (extModel.ClassPlanId > 0)
{ {
var oldPlanModel = class_PlanRepository.GetEntity(extModel.ClassPlanId); oldPlanModel = class_PlanRepository.GetEntity(extModel.ClassPlanId);
Dictionary<string, object> fileds = new Dictionary<string, object>() Dictionary<string, object> fileds = new Dictionary<string, object>()
{ {
{nameof(RB_Class_Plan_ViewModel.ClassRoomId),extModel.ClassRoomId }, {nameof(RB_Class_Plan_ViewModel.ClassRoomId),extModel.ClassRoomId },
...@@ -1831,6 +1834,18 @@ namespace Edu.Module.Course ...@@ -1831,6 +1834,18 @@ namespace Edu.Module.Course
CreateBy = createBy CreateBy = createBy
}); });
} }
if (flag)
{
if (extModel.ClassDate.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd"))
{
if (MessageCenterHub.GlobalContext != null)
{
await MessageCenterHub.GlobalContext.Clients.All.SendAsync("ChangePlan", "55555555 ");
}
}
}
return flag; return flag;
} }
...@@ -1918,6 +1933,25 @@ namespace Edu.Module.Course ...@@ -1918,6 +1933,25 @@ namespace Edu.Module.Course
return list; return list;
} }
/// <summary>
/// 获取班级学员列表
/// </summary>
/// <param name="classId">班级编号</param>
/// <returns></returns>
public List<RB_Order_Guest_ViewModel> GetClassStudentListModuleV2(int ClassTimeId,int type)
{
var orderStudentList = new List<RB_Order_Guest_ViewModel>();
if (type == 0 || type == 1)
{
orderStudentList = order_GuestRepository.GetUnCheckStudentRepository(ClassTimeId);
}
else
{
orderStudentList = order_GuestRepository.GetUnCheckAppointmentStudentRepository(ClassTimeId);
}
return orderStudentList;
}
/// <summary> /// <summary>
/// 根据班级id获取订单学员信息 /// 根据班级id获取订单学员信息
...@@ -1929,6 +1963,11 @@ namespace Edu.Module.Course ...@@ -1929,6 +1963,11 @@ namespace Edu.Module.Course
return order_GuestRepository.GetOrderGuestListRepository(model); return order_GuestRepository.GetOrderGuestListRepository(model);
} }
public int GetStudentOrderGuestIdByClassTimeIDModule(int stuId, int timeId)
{
return class_TimeRepository.GetStudentOrderGuestIdByClassTimeID(stuId,timeId);
}
/// <summary> /// <summary>
/// 根据上课id获取订单学员信息 /// 根据上课id获取订单学员信息
/// </summary> /// </summary>
...@@ -2045,7 +2084,7 @@ namespace Edu.Module.Course ...@@ -2045,7 +2084,7 @@ namespace Edu.Module.Course
/// <param name="DropOutRemark"></param> /// <param name="DropOutRemark"></param>
/// <returns></returns> /// <returns></returns>
[TransactionCallHandler] [TransactionCallHandler]
public virtual bool AddClassCheckModule(List<RB_Class_Check_ViewModel> list) public virtual async Task<bool> AddClassCheckModule(List<RB_Class_Check_ViewModel> list)
{ {
//基础课时分钟数 //基础课时分钟数
var BasicMinutes = 0; var BasicMinutes = 0;
...@@ -2502,6 +2541,8 @@ namespace Edu.Module.Course ...@@ -2502,6 +2541,8 @@ namespace Edu.Module.Course
} }
} }
} }
//通知教室端签到更新
await MessageCenterHub.GlobalContext.Clients.All.SendAsync("UpdateCheckin", "666");
return flag; return flag;
} }
...@@ -3512,9 +3553,9 @@ namespace Edu.Module.Course ...@@ -3512,9 +3553,9 @@ namespace Edu.Module.Course
return class_TimeRepository.GetClassTimeByRoomId(RoomId, Group_Id); return class_TimeRepository.GetClassTimeByRoomId(RoomId, Group_Id);
} }
public List<RB_Class_Time_Extend> GetClassTimeByRoomIdV2(int RoomId, int Group_Id) public List<RB_Class_Time_Extend> GetClassTimeByRoomIdV2(int RoomId, int Group_Id, int tid)
{ {
return class_TimeRepository.GetClassTimeByRoomIdV2(RoomId, Group_Id); return class_TimeRepository.GetClassTimeByRoomIdV2(RoomId, Group_Id,tid);
} }
/// <summary> /// <summary>
......
using Edu.Common; using Edu.Common;
using Edu.Common.Enum; using Edu.Common.Enum;
using Edu.Common.Plugin; using Edu.Common.Plugin;
using Edu.Common.SignalR;
using Edu.Model.CacheModel; using Edu.Model.CacheModel;
using Edu.Model.Entity.Grade; using Edu.Model.Entity.Grade;
using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Course;
...@@ -14,12 +15,14 @@ using Edu.Repository.Reserve; ...@@ -14,12 +15,14 @@ using Edu.Repository.Reserve;
using Edu.Repository.Scroll; using Edu.Repository.Scroll;
using Edu.Repository.Sell; using Edu.Repository.Sell;
using Edu.Repository.User; using Edu.Repository.User;
using Microsoft.AspNetCore.SignalR;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks;
using System.Web; using System.Web;
using VT.FW.DB; using VT.FW.DB;
...@@ -2794,7 +2797,7 @@ namespace Edu.Module.Course ...@@ -2794,7 +2797,7 @@ namespace Edu.Module.Course
/// <param name="date"></param> /// <param name="date"></param>
/// <param name="userInfo"></param> /// <param name="userInfo"></param>
/// <returns></returns> /// <returns></returns>
public string CancelSureAppointment(string AppointIds, int teacherId, string date, string shiftSort, UserInfo userInfo) public async Task<string> CancelSureAppointmentAsync(string AppointIds, int teacherId, string date, string shiftSort, UserInfo userInfo)
{ {
bool flag = false; bool flag = false;
List<int> appointList = JsonHelper.DeserializeObject<List<int>>("[" + AppointIds + "]"); List<int> appointList = JsonHelper.DeserializeObject<List<int>>("[" + AppointIds + "]");
...@@ -2929,6 +2932,8 @@ namespace Edu.Module.Course ...@@ -2929,6 +2932,8 @@ namespace Edu.Module.Course
} }
} }
} }
await MessageCenterHub.GlobalContext.Clients.All.SendAsync("ChangePlan", "55555555 ");
} }
return ""; return "";
} }
...@@ -2942,7 +2947,7 @@ namespace Edu.Module.Course ...@@ -2942,7 +2947,7 @@ namespace Edu.Module.Course
/// <param name="roomId"></param> /// <param name="roomId"></param>
/// <param name="userInfo"></param> /// <param name="userInfo"></param>
/// <returns></returns> /// <returns></returns>
public string SetScrollRoom(int teacherId, string date, string shiftSort, int roomId, UserInfo userInfo) public async Task<string> SetScrollRoomAsync(int teacherId, string date, string shiftSort, int roomId, UserInfo userInfo)
{ {
var appointList = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = userInfo.Group_Id, StartTime = date, EntTime = date, TeacherId = teacherId, ShiftSort = shiftSort }); var appointList = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = userInfo.Group_Id, StartTime = date, EntTime = date, TeacherId = teacherId, ShiftSort = shiftSort });
if (appointList.Any()) { if (appointList.Any()) {
...@@ -2998,6 +3003,7 @@ namespace Edu.Module.Course ...@@ -2998,6 +3003,7 @@ namespace Edu.Module.Course
class_CheckRepository.Update(keyValues, wheres); class_CheckRepository.Update(keyValues, wheres);
} }
} }
await MessageCenterHub.GlobalContext.Clients.All.SendAsync("ChangePlan", "55555555 ");
} }
} }
return ""; return "";
......
...@@ -9,6 +9,7 @@ using Edu.Model.Entity.EduTask; ...@@ -9,6 +9,7 @@ using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.BackClass; using Edu.Model.ViewModel.BackClass;
using Edu.Model.ViewModel.Contract; using Edu.Model.ViewModel.Contract;
using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.DataStatistics;
using Edu.Model.ViewModel.EduTask; using Edu.Model.ViewModel.EduTask;
using Edu.Model.ViewModel.Exam; using Edu.Model.ViewModel.Exam;
using Edu.Model.ViewModel.Grade; using Edu.Model.ViewModel.Grade;
...@@ -18,6 +19,7 @@ using Edu.Model.ViewModel.WeChat; ...@@ -18,6 +19,7 @@ using Edu.Model.ViewModel.WeChat;
using Edu.Repository.BackClass; using Edu.Repository.BackClass;
using Edu.Repository.Contract; using Edu.Repository.Contract;
using Edu.Repository.Course; using Edu.Repository.Course;
using Edu.Repository.DataStatistics;
using Edu.Repository.EduTask; using Edu.Repository.EduTask;
using Edu.Repository.Exam; using Edu.Repository.Exam;
using Edu.Repository.Grade; using Edu.Repository.Grade;
...@@ -147,6 +149,11 @@ namespace Edu.Module.EduTask ...@@ -147,6 +149,11 @@ namespace Edu.Module.EduTask
/// </summary> /// </summary>
private readonly RB_Course_VipRepository course_VipRepository = new RB_Course_VipRepository(); private readonly RB_Course_VipRepository course_VipRepository = new RB_Course_VipRepository();
/// <summary>
/// 教师月度考核仓储层对象
/// </summary>
private readonly RB_Teacher_AssessmentRepository teacher_AssessmentRepository = new RB_Teacher_AssessmentRepository();
/// <summary> /// <summary>
/// 获取教务单据分页列表 /// 获取教务单据分页列表
...@@ -206,6 +213,8 @@ namespace Edu.Module.EduTask ...@@ -206,6 +213,8 @@ namespace Edu.Module.EduTask
//vip课程申请 //vip课程申请
List<RB_Course_Vip_Extend> vipCourseApplyList = new List<RB_Course_Vip_Extend>(); List<RB_Course_Vip_Extend> vipCourseApplyList = new List<RB_Course_Vip_Extend>();
//教师考核申请列表
List<RB_Teacher_Assessment_Extend> teacherAssessmentList = new List<RB_Teacher_Assessment_Extend>();
var groupList = list.GroupBy(qitem => new { qitem.ReceiptType }).Select(qitem => new { qitem.Key.ReceiptType }); var groupList = list.GroupBy(qitem => new { qitem.ReceiptType }).Select(qitem => new { qitem.Key.ReceiptType });
string Ids = string.Join(",", list.Select(qitem => qitem.Id)); string Ids = string.Join(",", list.Select(qitem => qitem.Id));
...@@ -559,6 +568,17 @@ namespace Edu.Module.EduTask ...@@ -559,6 +568,17 @@ namespace Edu.Module.EduTask
}); });
} }
#endregion #endregion
#region 教师考核申请审批
if (subItem.ReceiptType == Common.Enum.Finance.ReceiptTypeEnum.TeacherAssessment)
{
string assessmentIds = string.Join(",", list.Where(qitem => qitem.ReceiptType == subItem.ReceiptType).Select(qitem => qitem.RelationId));
teacherAssessmentList = teacher_AssessmentRepository.GetTeacherAssessmentListRepository(new RB_Teacher_Assessment_Extend()
{
QIds = assessmentIds
});
}
#endregion
} }
foreach (var item in list) foreach (var item in list)
...@@ -695,12 +715,18 @@ namespace Edu.Module.EduTask ...@@ -695,12 +715,18 @@ namespace Edu.Module.EduTask
} }
DataObj = touGao; DataObj = touGao;
} }
//VIP课程申请
if (item.ReceiptType == Common.Enum.Finance.ReceiptTypeEnum.VipCourse) if (item.ReceiptType == Common.Enum.Finance.ReceiptTypeEnum.VipCourse)
{ {
var vipCourse = vipCourseApplyList?.Where(x => x.Id == item.RelationId)?.FirstOrDefault(); var vipCourse = vipCourseApplyList?.Where(x => x.Id == item.RelationId)?.FirstOrDefault();
DataObj = vipCourse; DataObj = vipCourse;
} }
//教师考核
if (item.ReceiptType == Common.Enum.Finance.ReceiptTypeEnum.TeacherAssessment)
{
var assessObj = teacherAssessmentList?.Where(qitem => qitem.Id == item.RelationId)?.FirstOrDefault();
DataObj = assessObj;
}
object AuditObj = new object(); object AuditObj = new object();
if (item.VerifyStatus == EduTaskRrocessStatus.NotAudit || item.VerifyStatus == EduTaskRrocessStatus.AuditIng) if (item.VerifyStatus == EduTaskRrocessStatus.NotAudit || item.VerifyStatus == EduTaskRrocessStatus.AuditIng)
{ {
......
using Edu.AOP.CustomerAttribute; using Edu.AOP.CustomerAttribute;
using Edu.Common.Enum; using Edu.Common.Enum;
using Edu.Common.Enum.EduTask;
using Edu.Common.Enum.User; using Edu.Common.Enum.User;
using Edu.Model.CacheModel; using Edu.Model.CacheModel;
using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.DataStatistics; using Edu.Model.ViewModel.DataStatistics;
using Edu.Model.ViewModel.User; using Edu.Model.ViewModel.User;
using Edu.Repository.DataStatistics; using Edu.Repository.DataStatistics;
using Edu.Repository.EduTask;
using Edu.Repository.User; using Edu.Repository.User;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
...@@ -48,7 +51,12 @@ namespace Edu.Module.User ...@@ -48,7 +51,12 @@ namespace Edu.Module.User
/// </summary> /// </summary>
private readonly Rb_dictvalueRepository dictvalueRepository = new Rb_dictvalueRepository(); private readonly Rb_dictvalueRepository dictvalueRepository = new Rb_dictvalueRepository();
/// <summary>
/// 业务单据仓储层对象
/// </summary>
private readonly RB_Education_ReceiptRepository education_ReceiptRepository = new RB_Education_ReceiptRepository();
#region 基础配置 #region 基础配置
...@@ -455,6 +463,8 @@ namespace Edu.Module.User ...@@ -455,6 +463,8 @@ namespace Edu.Module.User
Other = extModel?.Other ?? "", Other = extModel?.Other ?? "",
TeacherSignDate = Common.ConvertHelper.FormatTime(extModel?.TeacherSignDate), TeacherSignDate = Common.ConvertHelper.FormatTime(extModel?.TeacherSignDate),
AuditStatus = extModel?.AuditStatus ?? 0, AuditStatus = extModel?.AuditStatus ?? 0,
IsJiaoWuFinish = extModel?.IsJiaoWuFinish ?? 0,
IsTeacherFinish = extModel?.IsTeacherFinish ?? 0,
DetailsList = list, DetailsList = list,
S_JiaoXue_Time = Common.ConvertHelper.FormatTime(S_JiaoXue_Time), S_JiaoXue_Time = Common.ConvertHelper.FormatTime(S_JiaoXue_Time),
S_JiaoXue_CreateByName = empList?.Where(qitem => qitem.Id == S_JiaoXue_Id)?.FirstOrDefault()?.EmployeeName ?? "", S_JiaoXue_CreateByName = empList?.Where(qitem => qitem.Id == S_JiaoXue_Id)?.FirstOrDefault()?.EmployeeName ?? "",
...@@ -480,6 +490,8 @@ namespace Edu.Module.User ...@@ -480,6 +490,8 @@ namespace Edu.Module.User
{nameof(RB_Teacher_Assessment_Extend.TeacherScore),model.TeacherScore }, {nameof(RB_Teacher_Assessment_Extend.TeacherScore),model.TeacherScore },
{nameof(RB_Teacher_Assessment_Extend.JiaoWuScore),model.JiaoWuScore }, {nameof(RB_Teacher_Assessment_Extend.JiaoWuScore),model.JiaoWuScore },
{nameof(RB_Teacher_Assessment_Extend.TotalScore),model.TotalScore }, {nameof(RB_Teacher_Assessment_Extend.TotalScore),model.TotalScore },
{nameof(RB_Teacher_Assessment_Extend.IsTeacherFinish),model.IsTeacherFinish },
{nameof(RB_Teacher_Assessment_Extend.IsJiaoWuFinish),model.IsJiaoWuFinish },
}; };
flag = teacher_AssessmentRepository.Update(fileds, new WhereHelper(nameof(RB_Teacher_Assessment_Extend.Id), model.Id)); flag = teacher_AssessmentRepository.Update(fileds, new WhereHelper(nameof(RB_Teacher_Assessment_Extend.Id), model.Id));
} }
...@@ -556,6 +568,39 @@ namespace Edu.Module.User ...@@ -556,6 +568,39 @@ namespace Edu.Module.User
return flag; return flag;
} }
/// <summary>
/// 提交审批
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public bool SubmitTeacherAssessmentApprovalModule(UserInfo user, int Id, out string message)
{
var model = teacher_AssessmentRepository.GetEntity<RB_Teacher_Assessment_Extend>(Id);
var educationReceipt = new RB_Education_Receipt()
{
Id = 0,
Title = "教师考核审批",
ReceiptType = Common.Enum.Finance.ReceiptTypeEnum.TeacherAssessment,
RelationId = Id,
ClassId = 0,
Group_Id = user.Group_Id,
School_Id = model.School_Id,
CreateBy = user.Id,
CreateTime = DateTime.Now,
UpdateBy = user.Id,
UpdateTime = DateTime.Now,
VerifyStatus = Common.Enum.EduTask.EduTaskRrocessStatus.NotAudit,
ReceiptFile = ""
};
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Teacher_Assessment_Extend.AuditStatus),(int) EduTaskRrocessStatus.AuditIng}
};
bool flag = education_ReceiptRepository.SetEducationReceiptRepository(educationReceipt, out message);
flag = teacher_AssessmentRepository.Update(fileds, new WhereHelper(nameof(RB_Teacher_Assessment_Extend.Id), Id));
return flag;
}
#endregion #endregion
} }
} }
\ No newline at end of file
...@@ -551,6 +551,7 @@ namespace Edu.Module.User ...@@ -551,6 +551,7 @@ namespace Edu.Module.User
{ {
item.Id, item.Id,
item.TeacherId, item.TeacherId,
AccountId= teacherModel?.Id??0,
Dept_Id= teacherModel?.Dept_Id??0, Dept_Id= teacherModel?.Dept_Id??0,
DateStr, DateStr,
item.StudentCount, item.StudentCount,
...@@ -601,7 +602,8 @@ namespace Edu.Module.User ...@@ -601,7 +602,8 @@ namespace Edu.Module.User
{ {
Id = 0, Id = 0,
TeacherId=0, TeacherId=0,
Dept_Id=0, AccountId =0,
Dept_Id =0,
DateStr = "月总数", DateStr = "月总数",
StudentCount = tempList?.Sum(qitem => qitem.StudentCount), StudentCount = tempList?.Sum(qitem => qitem.StudentCount),
AttendClassHour = tempList?.Sum(qitem => qitem.AttendClassHour), AttendClassHour = tempList?.Sum(qitem => qitem.AttendClassHour),
...@@ -2762,6 +2764,7 @@ namespace Edu.Module.User ...@@ -2762,6 +2764,7 @@ namespace Edu.Module.User
public bool CreateTeacherStaticModule(UserInfo user, string StartTime, string EndTime, bool isInit = true) public bool CreateTeacherStaticModule(UserInfo user, string StartTime, string EndTime, bool isInit = true)
{ {
bool flag = true; bool flag = true;
//5,10,15,20 //5,10,15,20
var teacherList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() var teacherList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel()
{ {
...@@ -2783,13 +2786,13 @@ namespace Edu.Module.User ...@@ -2783,13 +2786,13 @@ namespace Edu.Module.User
int Days = (endTime - date).Days; int Days = (endTime - date).Days;
for (int i = 0; i < Days; i++) for (int i = 0; i < Days; i++)
{ {
var newDate = date.AddDays(i); var newDate = date.AddDays(i);
Common.Plugin.LogHelper.Write("开始:"+Common.ConvertHelper.FormatDate(newDate));
//获取老师迟到早退信息 //获取老师迟到早退信息
checkList = Edu.ThirdCore.QYWinXin.QYWeiXinHelper.GetWeChatCheckList(workUserIds, newDate); checkList = Edu.ThirdCore.QYWinXin.QYWeiXinHelper.GetWeChatCheckList(workUserIds, newDate);
//获取老师与学员沟通次数 //获取老师与学员沟通次数
messageList = Edu.ThirdCore.QYWinXin.QYWeiXinHelper.GetWechatStudentStatic(workUserIds, newDate); messageList = Edu.ThirdCore.QYWinXin.QYWeiXinHelper.GetWechatStudentStatic(workUserIds, newDate);
Thread.Sleep(1 * 2000);
int times = 1; int times = 1;
int newDay = newDate.Day; int newDay = newDate.Day;
//本月最后一天 //本月最后一天
...@@ -3457,6 +3460,7 @@ namespace Edu.Module.User ...@@ -3457,6 +3460,7 @@ namespace Edu.Module.User
thirdTimeStaticModel.CreateTime = DateTime.Now; thirdTimeStaticModel.CreateTime = DateTime.Now;
teacher_StaticRepository.Insert(thirdTimeStaticModel); teacher_StaticRepository.Insert(thirdTimeStaticModel);
} }
Common.Plugin.LogHelper.Write("结束:" + Common.ConvertHelper.FormatDate(newDate));
} }
return flag; return flag;
} }
......
...@@ -56,12 +56,13 @@ WHERE 1=1 ...@@ -56,12 +56,13 @@ WHERE 1=1
/// </summary> /// </summary>
/// <param name="query"></param> /// <param name="query"></param>
/// <returns></returns> /// <returns></returns>
public List<RB_Teacher_Assessment_Extend> GetTeacherAssessmentListRepository( RB_Teacher_Assessment_Extend query) public List<RB_Teacher_Assessment_Extend> GetTeacherAssessmentListRepository(RB_Teacher_Assessment_Extend query)
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT A.* SELECT A.*,IFNULL(C.TeacherName,'') AS TeacherName
FROM RB_Teacher_Assessment AS A FROM RB_Teacher_Assessment AS A LEFT JOIN rb_account AS B ON A.TeacherAccountId=B.Id
LEFT JOIN rb_teacher AS C ON B.AccountId=C.TId
WHERE 1=1 WHERE 1=1
"); ");
if (query != null) if (query != null)
...@@ -82,6 +83,10 @@ WHERE 1=1 ...@@ -82,6 +83,10 @@ WHERE 1=1
{ {
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Teacher_Assessment_Extend.TeacherAccountId), query.TeacherAccountId); builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Teacher_Assessment_Extend.TeacherAccountId), query.TeacherAccountId);
} }
if (!string.IsNullOrEmpty(query.QIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Teacher_Assessment_Extend.Id), query.QIds);
}
} }
return Get<RB_Teacher_Assessment_Extend>(builder.ToString()).ToList(); return Get<RB_Teacher_Assessment_Extend>(builder.ToString()).ToList();
} }
......
...@@ -408,6 +408,15 @@ WHERE 1=1 ...@@ -408,6 +408,15 @@ WHERE 1=1
return false; return false;
} }
} }
else if (model.ReceiptType == Common.Enum.Finance.ReceiptTypeEnum.TeacherAssessment)
{
flowModel = flowRepository.GetFlowRepository(Common.Config.TeacherAssessmentFlowId);
if (flowModel == null)
{
message = "未配置教师考核审核流程!";
return false;
}
}
if (flowModel?.FlowNodeList?.Count == 0) if (flowModel?.FlowNodeList?.Count == 0)
{ {
message = "未配置审核流程!"; message = "未配置审核流程!";
......
...@@ -223,16 +223,28 @@ where a.`Status`=0 and b.ClassStatus<>2 and c.ClassStatus in(1,2) and c.`Status ...@@ -223,16 +223,28 @@ where a.`Status`=0 and b.ClassStatus<>2 and c.ClassStatus in(1,2) and c.`Status
return Get<RB_Class_Time_Extend>(builder.ToString()).ToList(); return Get<RB_Class_Time_Extend>(builder.ToString()).ToList();
} }
public List<RB_Class_Time_Extend> GetClassTimeByRoomIdV2(int RoomId, int Group_Id) public List<RB_Class_Time_Extend> GetClassTimeByRoomIdV2(int RoomId, int Group_Id, int Tid)
{ {
string sql = "select a.ClassPlanId,c.TeacherName,c.TeacherHead,d.RoomName,b.StartTime,b.EndTime,a.PlanType,(case a.PlanType when 1 then (select CourseName from rb_course where CourseId=e.CouseId) when 2 then (select func_course_rate(CourseGradeId) from rb_scroll_appointment where ClassPlanId=a.ClassPlanId group by ClassPlanId) END) as CourseName,(case a.PlanType when 1 then (select (Count(0)+1) from rb_class_plan where `status`=0 and ClassId=a.ClassId and TO_Days(ClassDate)<TO_Days(a.ClassDate)) when 2 then (select CourseGradeNo from rb_scroll_appointment where ClassPlanId=a.ClassPlanId group by ClassPlanId) end) as Progress from rb_class_plan a left join rb_class_time b on a.ClassPlanId=b.ClassPlanId left join rb_teacher c on a.TeacherId=c.TId left join rb_class_room d on a.ClassRoomId = d.RoomId left join rb_class e on a.ClassId=e.ClassId where TO_Days(a.ClassDate)=TO_Days(now()) and c.TId is not null and a.`status`=0 and b.EndTime>=DATE_FORMAT(now(),'%H:%i') and a.Group_Id=@gid and a.ClassRoomId=@roomId;"; string sql = "select * from (select a.ClassId,b.ClassStatus,a.ClassPlanId,c.TeacherName,b.ClassTimeId,c.TeacherHead,a.TeacherId,d.RoomName,b.StartTime,b.EndTime,a.PlanType,(case a.PlanType when 1 then (select CourseName from rb_course where CourseId=e.CouseId) when 2 then (select func_course_rate(CourseGradeId) from rb_scroll_appointment where ClassPlanId=a.ClassPlanId group by ClassPlanId) END) as CourseName,(case a.PlanType when 1 then (select (Count(0)+1) from rb_class_plan where `status`=0 and ClassId=a.ClassId and TO_Days(ClassDate)<TO_Days(a.ClassDate)) when 2 then (select CourseGradeNo from rb_scroll_appointment where ClassPlanId=a.ClassPlanId group by ClassPlanId) end) as Progress,(case a.PlanType when 1 then (select CourseRate from rb_course where CourseId=e.CouseId) when 2 then (select CourseGradeId from rb_scroll_appointment where ClassPlanId=a.ClassPlanId group by ClassPlanId) END) as CourseRate from rb_class_plan a left join rb_class_time b on a.ClassPlanId=b.ClassPlanId left join rb_teacher c on a.TeacherId=c.TId left join rb_class_room d on a.ClassRoomId = d.RoomId left join rb_class e on a.ClassId=e.ClassId where TO_Days(a.ClassDate)=TO_Days(now()) and c.TId=@tid and a.`status`=0 and b.EndTime>=DATE_FORMAT(now(),'%H:%i') and a.Group_Id=@gid and a.ClassRoomId=@roomId union all select 0 as ClassId,0 as ClassStatus,ReserveClassId as ClassPlanId,b.TeacherName,ReserveClassId as ClassTimeId,b.TeacherHead,a.TeacherId,c.RoomName,a.ClassTime as StartTime,a.EndTime,3 as PlanType,a.ClassContent as CourseName,1 as Progress,1 as CourseRate from rb_reserve_class a left join rb_teacher b on a.TeacherId=b.TId left join rb_class_room c on a.ClassRoomId=c.RoomId where TO_Days(a.ClassDate)=TO_Days(now()) and b.TId=@tid and a.EndTime>=DATE_FORMAT(now(),'%H:%i') and a.`Status`=0 and a.Group_Id=@gid and a.ClassRoomId=@roomId) as aa order by aa.StartTime";
DynamicParameters parameters = new DynamicParameters(); DynamicParameters parameters = new DynamicParameters();
parameters.Add("gid", Group_Id); parameters.Add("gid", Group_Id);
parameters.Add("roomId", RoomId); parameters.Add("roomId", RoomId);
parameters.Add("tid", Tid);
return Get<RB_Class_Time_Extend>(sql, parameters).ToList(); return Get<RB_Class_Time_Extend>(sql, parameters).ToList();
} }
public int GetStudentOrderGuestIdByClassTimeID(int stuId,int timeId)
{
var sql = "select IFNULL(MAX(GuestId),0) as GuestId from rb_student_orderguest a where Student_Id=@stuId and a.GuestId in(select IF(b.PlanType=2,c.GuestId,e.Id) as GuestId from rb_class_time a left join rb_class_plan b on a.ClassPlanId=b.ClassPlanId left join rb_scroll_appointment c on b.ClassPlanId=c.ClassPlanId and b.PlanType=2 left join rb_class d on a.ClassId=d.ClassId and b.PlanType!=2 left join rb_order_guest e on e.ClassId=d.ClassId where ClassTimeId=@timeId)";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("stuId", stuId);
parameters.Add("timeId", timeId);
return Convert.ToInt32(ExecuteScalar(sql, parameters));
}
/// <summary> /// <summary>
/// 获取班级上课时间 /// 获取班级上课时间
......
...@@ -63,6 +63,35 @@ namespace Edu.Repository.Sell ...@@ -63,6 +63,35 @@ namespace Edu.Repository.Sell
return list; return list;
} }
/// <summary>
/// 获取未签到学员
/// </summary>
/// <param name="classTimeId"></param>
/// <returns></returns>
public List<RB_Order_Guest_ViewModel> GetUnCheckStudentRepository(int classTimeId)
{
string sql = "select c.ClassTimeId,b.GuestName,b.Id,b.Sex from rb_class_plan a left join rb_order_guest b on a.ClassId=b.ClassId left join rb_class_time c on a.ClassPlanId=c.ClassPlanId left join rb_class_check d on c.ClassTimeId=d.ClassTimeId and b.Id=d.OrderGuestId where c.ClassTimeId=@classTimeId and d.ClassCheckId is null and b.GuestState in(1,3,4,6,8,9)";
var parameters = new DynamicParameters();
parameters.Add("classTimeId", classTimeId);
return Get<RB_Order_Guest_ViewModel>(sql, parameters).ToList();
}
/// <summary>
/// 获取未签到学员
/// </summary>
/// <param name="classTimeId"></param>
/// <returns></returns>
public List<RB_Order_Guest_ViewModel> GetUnCheckAppointmentStudentRepository(int classTimeId)
{
string sql = "select a.ClassTimeId,e.GuestName,e.Id,e.Sex from rb_class_time a left join rb_scroll_appointment b on a.ClassPlanId=b.ClassPlanId left join rb_student_orderguest c on b.StuId=c.Student_Id left join rb_class_check d on c.GuestId=d.OrderGuestId and a.ClassTimeId = d.ClassTimeId left join rb_order_guest e on c.GuestId=e.Id where a.ClassTimeId=@classTimeId and d.ClassCheckId is null group by b.StuId";
var parameters = new DynamicParameters();
parameters.Add("classTimeId", classTimeId);
return Get<RB_Order_Guest_ViewModel>(sql, parameters).ToList();
}
/// <summary> /// <summary>
/// 获取列表 /// 获取列表
......
...@@ -918,7 +918,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -918,7 +918,7 @@ namespace Edu.WebApi.Controllers.Course
} }
} }
} }
var flag = classModule.SetClassPlanModule(extModel, base.UserInfo.Id); var flag = classModule.SetClassPlanModule(extModel, base.UserInfo.Id).Result;
if (flag) if (flag)
{ {
classModule.UpdateClassEndDateModule(extModel.ClassId); classModule.UpdateClassEndDateModule(extModel.ClassId);
...@@ -1194,15 +1194,46 @@ namespace Edu.WebApi.Controllers.Course ...@@ -1194,15 +1194,46 @@ namespace Edu.WebApi.Controllers.Course
CheckStatus = obj.GetInt("CheckStatus"), CheckStatus = obj.GetInt("CheckStatus"),
ClassDate = obj.GetDateTime("ClassDate"), ClassDate = obj.GetDateTime("ClassDate"),
ClassRoomId = obj.GetInt("ClassRoomId"), ClassRoomId = obj.GetInt("ClassRoomId"),
OrderGuestId = obj.GetInt("OrderGuestId"), OrderGuestId = obj.GetInt("OrderGuestId",0),
School_Id = obj.GetInt("School_Id"), School_Id = obj.GetInt("School_Id"),
StudyNum = obj.GetInt("StudyNum"), StudyNum = obj.GetInt("StudyNum"),
TeacherId = obj.GetInt("TeacherId"), TeacherId = obj.GetInt("TeacherId"),
ClassId = obj.GetInt("classId"), ClassId = obj.GetInt("classId"),
ClassTimeId = obj.GetInt("ClassTimeId"), ClassTimeId = obj.GetInt("ClassTimeId"),
StuId = obj.GetInt("StuId")
}); });
} }
} }
//判断当天是否有已签到数据
var checkLogList = classModule.GetClassCheckList(new RB_Class_Check_ViewModel
{
Group_Id = base.UserInfo.Group_Id,
ClassId = list.FirstOrDefault().ClassId,
StartDate = list.FirstOrDefault().ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
EndDate = list.FirstOrDefault().ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
ClassTimeId = list.FirstOrDefault().ClassTimeId,
});
#region 验证是否存在学员编号
if (list.Count == 1) {
if (list[0].OrderGuestId == 0)
{
var guestId = classModule.GetStudentOrderGuestIdByClassTimeIDModule(list[0].StuId, list[0].ClassTimeId);
if (guestId == 0)
{
return ApiResult.ParamIsNull(message: "当前课程不是你的上课内容,请联系前台");
}
else
{
list[0].OrderGuestId = guestId;
}
}
if (checkLogList.Where(x => x.OrderGuestId == list[0].OrderGuestId && x.CheckStatus == list[0].CheckStatus).Any())
{
return ApiResult.Success(message: "check_repeat");
}
}
#endregion
if (list == null || !list.Any()) if (list == null || !list.Any())
{ {
return ApiResult.ParamIsNull(message: "请选择签到学员!"); return ApiResult.ParamIsNull(message: "请选择签到学员!");
...@@ -1236,15 +1267,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -1236,15 +1267,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.Failed("今日无课程,无须签到"); return ApiResult.Failed("今日无课程,无须签到");
} }
//判断当天是否有已签到数据
var checkLogList = classModule.GetClassCheckList(new RB_Class_Check_ViewModel
{
Group_Id = base.UserInfo.Group_Id,
ClassId = list.FirstOrDefault().ClassId,
StartDate = list.FirstOrDefault().ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
EndDate = list.FirstOrDefault().ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
ClassTimeId = list.FirstOrDefault().ClassTimeId,
});
foreach (var item in list) foreach (var item in list)
{ {
...@@ -1280,12 +1303,12 @@ namespace Edu.WebApi.Controllers.Course ...@@ -1280,12 +1303,12 @@ namespace Edu.WebApi.Controllers.Course
item.Status = 0; item.Status = 0;
} }
} }
bool result = classModule.AddClassCheckModule(list); bool result = classModule.AddClassCheckModule(list).Result;
if (result) if (result)
{ {
classModule.SetClassProcessModule(list.FirstOrDefault().ClassId); classModule.SetClassProcessModule(list.FirstOrDefault().ClassId);
} }
return result ? ApiResult.Success() : ApiResult.Failed("签到失败"); return result ? ApiResult.Success(message:"check_success") : ApiResult.Failed("签到失败");
} }
/// <summary> /// <summary>
...@@ -1374,7 +1397,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -1374,7 +1397,7 @@ namespace Edu.WebApi.Controllers.Course
item.Status = 0; item.Status = 0;
} }
} }
bool result = classModule.AddClassCheckModule(list); bool result = classModule.AddClassCheckModule(list).Result;
if (result) if (result)
{ {
classModule.SetClassProcessModule(exModel.ClassId); classModule.SetClassProcessModule(exModel.ClassId);
...@@ -2334,11 +2357,12 @@ namespace Edu.WebApi.Controllers.Course ...@@ -2334,11 +2357,12 @@ namespace Edu.WebApi.Controllers.Course
public ApiResult GetClassTimeListV2() public ApiResult GetClassTimeListV2()
{ {
var ClassRoomId = base.ParmJObj.GetInt("ClassRoomId", 0); var ClassRoomId = base.ParmJObj.GetInt("ClassRoomId", 0);
if (ClassRoomId == 0) var tid = base.ParmJObj.GetInt("Tid", 0);
if (ClassRoomId == 0 || tid == 0)
{ {
return ApiResult.Failed("请传入教室ID"); return ApiResult.Failed("参数信息错误,请重新传递");
} }
var list = classModule.GetClassTimeByRoomIdV2(ClassRoomId, 100000); var list = classModule.GetClassTimeByRoomIdV2(ClassRoomId, 100000, tid);
if (list == null || !list.Any()) if (list == null || !list.Any())
{ {
return ApiResult.Failed("暂无排课安排"); return ApiResult.Failed("暂无排课安排");
...@@ -2356,7 +2380,11 @@ namespace Edu.WebApi.Controllers.Course ...@@ -2356,7 +2380,11 @@ namespace Edu.WebApi.Controllers.Course
x.EndTime, x.EndTime,
x.PlanType, x.PlanType,
x.CourseName, x.CourseName,
x.Progress x.Progress,
x.CourseRate,
x.ClassTimeId,
x.ClassStatus,
x.ClassId
}); });
return ApiResult.Success(data: result); return ApiResult.Success(data: result);
...@@ -2582,6 +2610,34 @@ namespace Edu.WebApi.Controllers.Course ...@@ -2582,6 +2610,34 @@ namespace Edu.WebApi.Controllers.Course
var data = classModule.GetClassStudentListModule(classId, schoolId, Group_Id, ClassTimeId); var data = classModule.GetClassStudentListModule(classId, schoolId, Group_Id, ClassTimeId);
return ApiResult.Success(data: data); return ApiResult.Success(data: data);
} }
/// <summary>
/// 获取学员列表以及签到状态
/// </summary>
/// <returns></returns>
[HttpPost]
[Microsoft.AspNetCore.Authorization.AllowAnonymous]
public ApiResult GetStudentCheckByClassIdV2()
{
var ClassTimeId = base.ParmJObj.GetInt("ClassTimeId", 0);
var PlanType = base.ParmJObj.GetInt("PlanType", 1);
if (ClassTimeId == 0)
{
return ApiResult.ParamIsNull();
}
var data = classModule.GetClassStudentListModuleV2(ClassTimeId, PlanType) ?? new List<RB_Order_Guest_ViewModel>();
if (data.Any())
{
var result = data.Select(x => new {
x.Id,
x.GuestName,
x.Sex,
x.ClassTimeId
});
return ApiResult.Success(data: result);
}
return ApiResult.Success(data: data);
}
#endregion #endregion
#region 老师上课统计 #region 老师上课统计
......
...@@ -171,16 +171,6 @@ namespace Edu.WebApi.Controllers.Course ...@@ -171,16 +171,6 @@ namespace Edu.WebApi.Controllers.Course
list.ForEach(x => x.RoomPicList = !string.IsNullOrWhiteSpace(x.RoomPic) ? Common.Plugin.JsonHelper.DeserializeObject<List<string>>(x.RoomPic) : new List<string>()); list.ForEach(x => x.RoomPicList = !string.IsNullOrWhiteSpace(x.RoomPic) ? Common.Plugin.JsonHelper.DeserializeObject<List<string>>(x.RoomPic) : new List<string>());
var classTimeList = classModule.GetClassTimeList(new RB_Class_Time_ViewModel
{
Group_Id = base.UserInfo.Group_Id,
School_Id = -1,
});
classTimeList.ForEach(x => x.NewPlanDateTime = System.DateTime.Now.ToString("yyyy-MM-dd ") + x.StartTime);
classTimeList.ForEach(x => x.NewEndPlanDateTime = System.DateTime.Now.ToString("yyyy-MM-dd ") + x.EndTime);
classTimeList.ForEach(x => x.SuiPaiList = !string.IsNullOrWhiteSpace(x.SuiPai) ? Common.Plugin.JsonHelper.DeserializeObject<List<string>>(x.SuiPai) : new List<string>());
List<object> resultList = new List<object>(); List<object> resultList = new List<object>();
foreach (var item in list.GroupBy(x => x.School_Id)) foreach (var item in list.GroupBy(x => x.School_Id))
...@@ -192,21 +182,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -192,21 +182,7 @@ namespace Edu.WebApi.Controllers.Course
{ {
decimal TotalMinutes = 0; decimal TotalMinutes = 0;
int UseState = 0; int UseState = 0;
var timeList = classTimeList.Where(x => x.ClassRoomId == roomItem.RoomId).ToList();
if (roomItem.TotalHour > 0)
{
foreach (var itemTime in timeList)
{
TotalMinutes += Convert.ToDecimal(Convert.ToDateTime(itemTime.EndTime).Subtract(Convert.ToDateTime(itemTime.StartTime)).TotalMinutes);
if (UseState == 0)
{
if (Convert.ToDateTime(itemTime.NewPlanDateTime) <= System.DateTime.Now && Convert.ToDateTime(itemTime.NewEndPlanDateTime) >= System.DateTime.Now)
{
UseState = 1;
}
}
}
}
roomList.Add(new roomList.Add(new
{ {
...@@ -215,8 +191,9 @@ namespace Edu.WebApi.Controllers.Course ...@@ -215,8 +191,9 @@ namespace Edu.WebApi.Controllers.Course
UserRate = ((roomItem.TotalHour > 0) ? ((TotalMinutes / roomItem.TotalHour) * 100) : 0).ToString("f2"),//使用率 UserRate = ((roomItem.TotalHour > 0) ? ((TotalMinutes / roomItem.TotalHour) * 100) : 0).ToString("f2"),//使用率
roomItem.RoomPic, roomItem.RoomPic,
roomItem.RoomPicList, roomItem.RoomPicList,
UseState, roomItem.StartTime,
TimeList = (timeList != null && timeList.Any()) ? timeList.OrderBy(x => Convert.ToDateTime(x.NewPlanDateTime)).ToList() : new List<RB_Class_Time_ViewModel>(), roomItem.EndTime,
UseState
}); });
} }
resultList.Add(new resultList.Add(new
......
...@@ -898,7 +898,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -898,7 +898,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.ParamIsNull(); return ApiResult.ParamIsNull();
} }
string msg = scrollClassModule.CancelSureAppointment(AppointIds, TeacherId, Date, ShiftSort, userInfo); string msg = scrollClassModule.CancelSureAppointmentAsync(AppointIds, TeacherId, Date, ShiftSort, userInfo).Result;
if (msg == "") if (msg == "")
{ {
return ApiResult.Success(); return ApiResult.Success();
...@@ -956,7 +956,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -956,7 +956,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.ParamIsNull(); return ApiResult.ParamIsNull();
} }
string msg = scrollClassModule.SetScrollRoom(TeacherId, Date, ShiftSort, RoomId, userInfo); string msg = scrollClassModule.SetScrollRoomAsync(TeacherId, Date, ShiftSort, RoomId, userInfo).Result;
if (msg == "") if (msg == "")
{ {
return ApiResult.Success(); return ApiResult.Success();
......
...@@ -193,7 +193,11 @@ namespace Edu.WebApi.Controllers.DataService ...@@ -193,7 +193,11 @@ namespace Edu.WebApi.Controllers.DataService
item.Help, item.Help,
item.Suggest, item.Suggest,
item.Other, item.Other,
TeacherSignDate= Common.ConvertHelper.FormatTime(item.TeacherSignDate) TeacherSignDate = Common.ConvertHelper.FormatTime(item.TeacherSignDate),
item.AuditStatus,
AuditStatusName=item.AuditStatus.ToName(),
item.IsTeacherFinish,
item.IsJiaoWuFinish,
}); });
} }
pageModel.Count = rowsCount; pageModel.Count = rowsCount;
...@@ -222,6 +226,7 @@ namespace Edu.WebApi.Controllers.DataService ...@@ -222,6 +226,7 @@ namespace Edu.WebApi.Controllers.DataService
[HttpPost] [HttpPost]
public ApiResult GetTeacherAssessmentDetail() public ApiResult GetTeacherAssessmentDetail()
{ {
int Id = base.ParmJObj.GetInt("Id"); int Id = base.ParmJObj.GetInt("Id");
var model = teacherAssessmentModule.GetTeacherAssessmentDetailModule(Id); var model = teacherAssessmentModule.GetTeacherAssessmentDetailModule(Id);
return ApiResult.Success(data: model); return ApiResult.Success(data: model);
...@@ -242,6 +247,8 @@ namespace Edu.WebApi.Controllers.DataService ...@@ -242,6 +247,8 @@ namespace Edu.WebApi.Controllers.DataService
TeacherAccountId = base.ParmJObj.GetInt("TeacherAccountId"), TeacherAccountId = base.ParmJObj.GetInt("TeacherAccountId"),
TeacherScore = base.ParmJObj.GetDecimal("TeacherScore"), TeacherScore = base.ParmJObj.GetDecimal("TeacherScore"),
JiaoWuScore = base.ParmJObj.GetDecimal("JiaoWuScore"), JiaoWuScore = base.ParmJObj.GetDecimal("JiaoWuScore"),
IsTeacherFinish = base.ParmJObj.GetInt("IsJiaoWuFinish"),
IsJiaoWuFinish = base.ParmJObj.GetInt("IsJiaoWuFinish")
}; };
if (model.YearStr <= 0 || model.MonthStr <= 0) if (model.YearStr <= 0 || model.MonthStr <= 0)
...@@ -253,6 +260,14 @@ namespace Edu.WebApi.Controllers.DataService ...@@ -253,6 +260,14 @@ namespace Edu.WebApi.Controllers.DataService
return ApiResult.Failed(message: "请选择老师!"); return ApiResult.Failed(message: "请选择老师!");
} }
CheckTypeEnum CheckType = (CheckTypeEnum)base.ParmJObj.GetInt("CheckType"); CheckTypeEnum CheckType = (CheckTypeEnum)base.ParmJObj.GetInt("CheckType");
if (CheckType == CheckTypeEnum.JiaoXueManager)
{
model.IsTeacherFinish = 1;
}
if (CheckType == CheckTypeEnum.JiaoWuManager)
{
model.IsJiaoWuFinish = 1;
}
model.DetailsList = new List<RB_Teacher_Assessment_Details_Extend>(); model.DetailsList = new List<RB_Teacher_Assessment_Details_Extend>();
var detailsLists = base.ParmJObj.GetStringValue("DetailsList"); var detailsLists = base.ParmJObj.GetStringValue("DetailsList");
if (!string.IsNullOrEmpty(detailsLists)) if (!string.IsNullOrEmpty(detailsLists))
...@@ -348,6 +363,22 @@ namespace Edu.WebApi.Controllers.DataService ...@@ -348,6 +363,22 @@ namespace Edu.WebApi.Controllers.DataService
bool flag = teacherAssessmentModule.TeacherSetHelpModule(model); bool flag = teacherAssessmentModule.TeacherSetHelpModule(model);
return flag ? ApiResult.Success() : ApiResult.Failed(); return flag ? ApiResult.Success() : ApiResult.Failed();
} }
/// <summary>
/// 提交审批
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SubmitTeacherAssessmentApproval()
{
var model = new RB_Teacher_Assessment_Extend()
{
Id = base.ParmJObj.GetInt("Id"),
};
bool flag = teacherAssessmentModule.SubmitTeacherAssessmentApprovalModule(base.UserInfo, model.Id,out string message);
return flag ? ApiResult.Success() : ApiResult.Failed(message: message);
}
#endregion #endregion
} }
} }
...@@ -1492,13 +1492,18 @@ namespace Edu.WebApi.Controllers.QYWeChat ...@@ -1492,13 +1492,18 @@ namespace Edu.WebApi.Controllers.QYWeChat
[AllowAnonymous] [AllowAnonymous]
public ApiResult SetUserCodeCallBack() public ApiResult SetUserCodeCallBack()
{ {
var parm = JObject.FromObject(RequestParm.Msg);
var referer = Request.Headers["Origin"].ToString().Replace("http://", ""); var referer = Request.Headers["Origin"].ToString().Replace("http://", "");
if (!string.IsNullOrEmpty(parm.GetStringValue("platment")))
{
referer = parm.GetStringValue("platment") == "class_room_manager" ? "edu.oytour.com" : string.Empty;
}
if (!string.IsNullOrEmpty(referer)) if (!string.IsNullOrEmpty(referer))
{ {
var group = groupModule.GetGroupEntityModule(referer); var group = groupModule.GetGroupEntityModule(referer);
if (group.GId != 0) if (group.GId != 0)
{ {
var parm = JObject.FromObject(RequestParm.Msg);
var appcode = parm.GetStringValue("appcode"); var appcode = parm.GetStringValue("appcode");
var code = parm.GetStringValue("code"); var code = parm.GetStringValue("code");
......
...@@ -3,6 +3,7 @@ using System.IO; ...@@ -3,6 +3,7 @@ using System.IO;
using System.Text.Encodings.Web; using System.Text.Encodings.Web;
using System.Text.Unicode; using System.Text.Unicode;
using System.Threading.Tasks; using System.Threading.Tasks;
using Edu.Common.SignalR;
using Edu.ThirdCore.Message; using Edu.ThirdCore.Message;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
...@@ -40,6 +41,7 @@ namespace Edu.WebApi ...@@ -40,6 +41,7 @@ namespace Edu.WebApi
options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
options.JsonSerializerOptions.PropertyNamingPolicy = null; options.JsonSerializerOptions.PropertyNamingPolicy = null;
}); });
services.AddSignalR();
List<string> corsArray = new List<string>() List<string> corsArray = new List<string>()
{ {
"http://192.168.20.214:8400", "http://192.168.20.214:8400",
...@@ -86,7 +88,7 @@ namespace Edu.WebApi ...@@ -86,7 +88,7 @@ namespace Edu.WebApi
} }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime appLifetime, IOptions<SenparcSetting> senparcSetting, IOptions<SenparcWeixinSetting> senparcWeixinSetting) public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime appLifetime, IOptions<SenparcSetting> senparcSetting, IOptions<SenparcWeixinSetting> senparcWeixinSetting)
{ {
if (env.IsDevelopment()) if (env.IsDevelopment())
...@@ -102,11 +104,14 @@ namespace Edu.WebApi ...@@ -102,11 +104,14 @@ namespace Edu.WebApi
app.UseCors("AllowCors"); app.UseCors("AllowCors");
app.UseAuthorization(); app.UseAuthorization();
//启动信息发送 //启动信息发送
// Task.Run(() => MessageCore.Init()); // Task.Run(() => MessageCore.Init());
Task.Run(() => MessageCore.Init()); Task.Run(() => MessageCore.Init());
app.UseEndpoints(endpoints => app.UseEndpoints(endpoints =>
{ {
endpoints.MapHub<MessageCenterHub>("/messagecenter");
endpoints.MapControllers(); endpoints.MapControllers();
}); });
......
{ {
"ConnectionStrings": { "ConnectionStrings": {
"DefaultConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=test_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ", "DefaultConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=test_edu3;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient", "DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ", "FinanceConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient", "FinanceConnectionPName": "MySql.Data.MySqlClient",
...@@ -120,5 +120,7 @@ ...@@ -120,5 +120,7 @@
//Vip课程申请流程编号 //Vip课程申请流程编号
"VipCourseFlowId": 11, "VipCourseFlowId": 11,
//甲鹤收款手续费 //甲鹤收款手续费
"IncomeFeeRate": "0.0025,0.0054,0.006,0.04,0.004" "IncomeFeeRate": "0.0025,0.0054,0.006,0.04,0.004",
//教师考核审批流程编号
"TeacherAssessmentFlowId":12
} }
\ No newline at end of file
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16 # Visual Studio Version 17
VisualStudioVersion = 16.0.29519.181 VisualStudioVersion = 17.1.32210.238
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Aop", "Edu.Aop\Edu.Aop.csproj", "{4AB3D35D-FC1D-4CB4-BB7B-0695E239C65B}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Aop", "Edu.Aop\Edu.Aop.csproj", "{4AB3D35D-FC1D-4CB4-BB7B-0695E239C65B}"
EndProject EndProject
...@@ -72,7 +72,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.Exam", "Edu.Modu ...@@ -72,7 +72,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.Exam", "Edu.Modu
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.Customer", "Edu.Module.Customer\Edu.Module.Customer.csproj", "{11365608-C76C-4CF7-9DBE-78A61A934448}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.Customer", "Edu.Module.Customer\Edu.Module.Customer.csproj", "{11365608-C76C-4CF7-9DBE-78A61A934448}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Edu.Module.Goods", "Edu.Module.Goods\Edu.Module.Goods.csproj", "{A0300F98-1996-47B8-BA22-0D4F10D4A28D}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.Goods", "Edu.Module.Goods\Edu.Module.Goods.csproj", "{A0300F98-1996-47B8-BA22-0D4F10D4A28D}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
......
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