Commit 27e5f738 authored by liudong1993's avatar liudong1993

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

parents 03eb6667 bb6fdfb3
......@@ -449,6 +449,19 @@ namespace Edu.Common
}
}
/// <summary>
/// 超过下班时间多少分钟数不能打卡
/// </summary>
public static int MoreThanMinutes
{
get
{
int.TryParse(ReadConfigKey("MoreThanMinutes"), out int MoreThanMinutes);
return MoreThanMinutes;
}
}
/// <summary>
/// 消息推送AppId
/// </summary>
......
using Edu.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Enum.Course
{
......@@ -21,14 +18,14 @@ namespace Edu.Common.Enum.Course
[EnumField("线下发展")]
OffLine = 2,
/// <summary>
/// 同行转交
/// 一般同行
/// </summary>
[EnumField("同行转交")]
[EnumField("一般同行")]
Client = 3,
/// <summary>
/// 学员介绍
/// 转介人/学员介绍
/// </summary>
[EnumField("学员介绍")]
[EnumField("转介人/学员介绍")]
Student = 4,
/// <summary>
/// 内部亲属
......@@ -39,6 +36,11 @@ namespace Edu.Common.Enum.Course
/// 内部员工
/// </summary>
[EnumField("内部员工")]
Employee = 6
Employee = 6,
/// <summary>
/// 一般同行
/// </summary>
[EnumField("教育同行")]
EduClient = 7,
}
}
using Edu.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Enum.Sale
{
/// <summary>
/// 订单性质
/// </summary>
public enum OrderNatureEnum
{
/// <summary>
/// 直通车
/// </summary>
[EnumField("直通车")]
ThroughTrain = 1,
/// <summary>
/// 代收代付
/// </summary>
[EnumField("代收代付")]
CollectionAndPayment = 2,
/// <summary>
/// 返佣
/// </summary>
[EnumField("返佣")]
Rebate = 3,
}
}
......@@ -164,5 +164,40 @@ namespace Edu.Model.Entity.Course
/// 来源编号(OrderType=1,SourceId=0),(OrderType=2,SourceId=留学就业产品对应编号)
/// </summary>
public int SourceId { get; set; }
/// <summary>
/// 协助人员编号(协助老师编号)
/// </summary>
public int HelpEnterId { get; set; }
/// <summary>
/// 一般同行名称
/// </summary>
public string GeneralOccupation { get; set; }
/// <summary>
/// 教育同行名称
/// </summary>
public string EduOccupation { get; set; }
/// <summary>
/// 是否少价(1-是)
/// </summary>
public int IsLessPrice { get; set; }
/// <summary>
/// 少价金额
/// </summary>
public decimal LessPrice { get; set; }
/// <summary>
/// (教育订单使用)订单性质(1-直通车,2-代收代付,3-返佣)
/// </summary>
public OrderNatureEnum OrderNature { get; set; }
/// <summary>
/// (教育订单使用)订单性质(1-直通车,2-代收代付,3-返佣)
/// </summary>
public decimal OldPreferPrice { get; set; }
}
}
......@@ -48,6 +48,9 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public int ClassRoomId { get; set; }
public string RoomName { get; set; }
/// <summary>
/// 集团
/// </summary>
......
......@@ -182,5 +182,15 @@ namespace Edu.Model.ViewModel.Course
/// 销售平台
/// </summary>
public string Saleplat { get; set; }
/// <summary>
/// 课程售价
/// </summary>
public decimal CourseSellPrice { get; set; }
/// <summary>
/// 课程原价
/// </summary>
public decimal CourseOriginalPrice { get; set; }
}
}
\ No newline at end of file
......@@ -89,6 +89,7 @@ namespace Edu.Model.ViewModel.Course
/// 合同列表
/// </summary>
public List<RB_Education_Contract_ViewModel> ContractList { get; set; }
/// <summary>
/// 报名开始时间
/// </summary>
......@@ -120,5 +121,10 @@ namespace Edu.Model.ViewModel.Course
/// 留学就业产品名称
/// </summary>
public string StudyName { get; set; }
/// <summary>
/// 协助人员姓名
/// </summary>
public string HelpEnterName { get; set; }
}
}
\ No newline at end of file
......@@ -82,7 +82,7 @@ namespace Edu.Model.ViewModel.Duty
get
{
string str = Common.ConvertHelper.FormatTimeStr(this.CheckTime);
if (str == "")
if (str == "" || str == "00:00")
{
str = "未打卡";
}
......@@ -98,13 +98,23 @@ namespace Edu.Model.ViewModel.Duty
get
{
string str = Common.ConvertHelper.FormatTimeStr(this.FinishTime);
if (str == "")
if ( str == "" || str == "00:00")
{
str = "未打卡";
}
return str;
}
}
/// <summary>
/// 值班状态(0-未开始,1-值班中,2-已完成,3-未值班)
/// </summary>
public int QDutyStatus { get; set; }
/// <summary>
/// 出勤状态(1-迟到,2-早退,3-缺勤,4-正常)
/// </summary>
public int QAttendanceStatus { get; set; }
}
/// <summary>
......
......@@ -81,5 +81,15 @@ namespace Edu.Model.ViewModel.Duty
/// 交接工作总数
/// </summary>
public int TotalHandoverCount { get; set; }
/// <summary>
/// 值班状态(0-未开始,1-值班中,2-已完成,3-未值班)
/// </summary>
public int QDutyStatus { get; set; }
/// <summary>
/// 出勤状态(1-迟到,2-早退,3-缺勤,4-正常)
/// </summary>
public int QAttendanceStatus { get; set; }
}
}
......@@ -698,15 +698,28 @@ namespace Edu.Module.Course
}
/// <summary>
/// 删除班级
/// 修改班级【正常/删除】状态
/// </summary>
/// <param name="ClassId"></param>
/// <param name="Status"></param>
/// <param name="message"></param>
/// <returns></returns>
public bool RemoveClassModule(object ClassId)
public bool RemoveClassModule(int ClassId, int Status, out string message)
{
message = "";
var orderList = orderRepository.GetPageList(1, 1, out _, new RB_Order_ViewModel()
{
ClassId = ClassId,
Q_OrderState = 1
});
if (orderList != null && orderList.Count > 0)
{
message = "此班级下存在正常订单!不能删除!";
return false;
}
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{ nameof(RB_Class_ViewModel.Status),(int)DateStateEnum.Delete},
{ nameof(RB_Class_ViewModel.Status),Status},
};
return classRepository.Update(fileds, new WhereHelper(nameof(RB_Class_ViewModel.ClassId), ClassId));
}
......@@ -1543,7 +1556,20 @@ namespace Edu.Module.Course
return class_TimeRepository.GetClassTimeByRoomId(RoomId, Group_Id);
}
public int GetNowClassHours(RB_Class_Time_Extend model)
/// <summary>
/// 获取班级上课时间
/// </summary>
/// <param name="classIds"></param>
/// <returns></returns>
public List<RB_Class_Time_Extend> GetClassTimeByTId(int TId, int Group_Id)
{
return class_TimeRepository.GetClassTimeByTId(TId, Group_Id);
}
public int GetNowClassHours(RB_Class_Time_Extend model)
{
int classHours = 0;
//班级完成的总分钟数
......
......@@ -92,6 +92,11 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_QuestionRepository questionRepository = new RB_QuestionRepository();
/// <summary>
/// 班级仓储层对象
/// </summary>
private readonly RB_ClassRepository classRepository = new RB_ClassRepository();
#region 课程管理
/// <summary>
......@@ -333,15 +338,27 @@ namespace Edu.Module.Course
}
/// <summary>
/// 删除课程
/// 修改课程状态
/// </summary>
/// <param name="CourseId"></param>
/// <param name="Status">1-删除,0-启用</param>
/// <param name="message"></param>
/// <returns></returns>
public bool RemoveCourseModule(object CourseId)
public bool RemoveCourseModule(int CourseId,int Status,out string message)
{
message = "";
var classList = classRepository.GetClassListRepository(new RB_Class_ViewModel()
{
CouseId = CourseId
});
if (classList != null && classList.Count > 0)
{
message = "此课程下存在正常的班级信息,不能删除!";
return false;
}
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Course_ViewModel.Status),(int)DateStateEnum.Delete },
{nameof(RB_Course_ViewModel.Status),Status},
};
bool flag = courseRepository.Update(fileds, new WhereHelper(nameof(RB_Course_ViewModel.CourseId), CourseId));
return flag;
......
......@@ -67,6 +67,16 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_Class_PlanRepository class_PlanRepository = new RB_Class_PlanRepository();
/// <summary>
/// 课程仓储层对象
/// </summary>
private readonly RB_CourseRepository courseRepository = new RB_CourseRepository();
/// <summary>
/// 课程优惠仓储层对象
/// </summary>
private readonly RB_Course_PreferentialRepository course_PreferentialRepository = new RB_Course_PreferentialRepository();
/// <summary>
/// 教师
/// </summary>
......@@ -222,6 +232,81 @@ namespace Edu.Module.Course
{
bool flag = false;
message = "";
//查询班级信息
var classModel = classRepository.GetEntity(demodel.ClassId);
var courseModel = courseRepository.GetEntity(classModel.CouseId);
if (classModel == null)
{
flag = false;
message = "班级不存在";
return flag;
}
#region 计算订单优惠信息
//获取课程优惠
var coursePreferentialList = course_PreferentialRepository.GetCoursePreferentialListRepostory(new RB_Course_Preferential_Extend()
{
CourseId = classModel.CouseId
});
if (demodel.IsLessPrice == 1 && demodel.LessPrice > 0)
{
if (coursePreferentialList != null && coursePreferentialList.Count > 0)
{
var disModel = new RB_Course_Preferential_Extend();
if (demodel.GuestNum == 1)
{
disModel = coursePreferentialList?.Where(qitem => qitem.PriceDiscountType == CoursePriceDiscountEnum.SingleJoin)?.FirstOrDefault();
}
if (demodel.GuestNum >= 2)
{
disModel = coursePreferentialList?.Where(qitem => qitem.PriceDiscountType == CoursePriceDiscountEnum.DoubleJoin)?.FirstOrDefault();
}
decimal disMoney = 0;
var saleCommissionType = disModel?.SaleCommissionType ?? 0;
if (saleCommissionType == 0)
{
var tempMoney = (courseModel?.SellPrice ?? 0) * (disModel?.SaleCommissionMoney ?? 0);
disMoney = tempMoney / Convert.ToDecimal(100);
}
else
{
disMoney = disModel?.SaleCommissionMoney ?? 0;
}
if (demodel.LessPrice > disMoney)
{
message = string.Format("优惠金额不能大于{0}", disMoney.ToString("0.00"));
return flag;
}
}
else
{
message = "此课程未配置【优惠/少价】信息,请通知OP在课程里面添加优惠信息!";
return flag;
}
}
if (demodel.OrderSource == OrderSourceEnum.EduClient || demodel.OrderSource == OrderSourceEnum.Client)
{
if (demodel.OrderSource == OrderSourceEnum.EduClient)
{
demodel.GeneralOccupation = "";
}
else if (demodel.OrderSource == OrderSourceEnum.Client)
{
demodel.EduOccupation = "";
}
}
else
{
demodel.EduOccupation = "";
demodel.GeneralOccupation = "";
}
if (demodel.IsLessPrice == 0)
{
demodel.LessPrice = 0;
}
#endregion
if (demodel.OrderId > 0)
{
var orderModel = orderRepository.GetEntity(demodel.OrderId);
......@@ -237,7 +322,7 @@ namespace Edu.Module.Course
message = "取消订单无法修改";
return flag;
}
var classModel = classRepository.GetEntity(orderModel.ClassId);
if (classModel == null)
{
flag = false;
......@@ -275,7 +360,7 @@ namespace Edu.Module.Course
message = "成交单价不能小于最低价格";
return flag;
}
if (demodel.PreferPrice != demodel.Unit_Price * demodel.GuestNum)
if (demodel.PreferPrice != (demodel.Unit_Price * demodel.GuestNum-demodel.LessPrice))
{
flag = false;
message = "应收总额不正确";
......@@ -287,7 +372,12 @@ namespace Edu.Module.Course
{ nameof(RB_Order_ViewModel.Unit_Price),demodel.Unit_Price},
{ nameof(RB_Order_ViewModel.PreferPrice),demodel.PreferPrice},
{ nameof(RB_Order_ViewModel.OrderSource),demodel.OrderSource},
{ nameof(RB_Order_ViewModel.SaleRemark),demodel.SaleRemark}
{ nameof(RB_Order_ViewModel.SaleRemark),demodel.SaleRemark},
{ nameof(RB_Order_ViewModel.HelpEnterId),demodel.HelpEnterId},
{ nameof(RB_Order_ViewModel.GeneralOccupation),demodel.GeneralOccupation},
{ nameof(RB_Order_ViewModel.EduOccupation),demodel.EduOccupation},
{ nameof(RB_Order_ViewModel.IsLessPrice),demodel.IsLessPrice},
{ nameof(RB_Order_ViewModel.LessPrice),demodel.LessPrice},
};
flag = orderRepository.Update(keyValues, new WhereHelper(nameof(RB_Order_ViewModel.OrderId), demodel.OrderId));
if (flag)
......@@ -310,6 +400,27 @@ namespace Edu.Module.Course
{
LogContent += $",客人来源由【{orderModel.OrderSource.ToName()}】修改为【{demodel.OrderSource.ToName()}】";
}
if (orderModel.HelpEnterId != demodel.HelpEnterId)
{
var empList= accountRepository.GetAccountListRepository(new RB_Account_ViewModel() { QIds = orderModel.HelpEnterId + "," + demodel.HelpEnterId });
LogContent += $",协助人员由【{empList?.Where(qitem=>qitem.Id== orderModel.HelpEnterId)?.FirstOrDefault()?.AccountName}】修改为【{empList?.Where(qitem => qitem.Id == demodel.HelpEnterId)?.FirstOrDefault()?.AccountName}】";
}
if (orderModel.GeneralOccupation != demodel.GeneralOccupation)
{
LogContent += $",一般同行由【{orderModel.GeneralOccupation}】修改为【{demodel.GeneralOccupation}】";
}
if (orderModel.EduOccupation != demodel.EduOccupation)
{
LogContent += $",教育同行由【{orderModel.EduOccupation}】修改为【{demodel.EduOccupation}】";
}
if (orderModel.IsLessPrice != demodel.IsLessPrice)
{
LogContent += $",少价由【{(orderModel.IsLessPrice>0?"少价":"不少价")}】修改为【{(demodel.IsLessPrice > 0 ? "少价" : "不少价")}】";
}
if (orderModel.LessPrice != demodel.LessPrice)
{
LogContent += $",少价金额由【{(orderModel.LessPrice)}】修改为【{(demodel.LessPrice)}】";
}
//记录订单备注
if (orderModel.SaleRemark != demodel.SaleRemark)
{
......@@ -339,14 +450,6 @@ namespace Edu.Module.Course
}
else
{
//查询班级信息
var classModel = classRepository.GetEntity(demodel.ClassId);
if (classModel == null)
{
flag = false;
message = "班级不存在";
return flag;
}
if (classModel.ClassStatus != Common.Enum.Course.ClassStatusEnum.NonOpenClass)
{
flag = false;
......@@ -366,8 +469,8 @@ namespace Edu.Module.Course
message = "人数报超" + (classModel.ClassPersion - (BNum + demodel.GuestNum));
return flag;
}
demodel.Class_Price = classModel.SellPrice;
decimal MinPrice = classModel.SellPrice;
demodel.Class_Price = courseModel.SellPrice;
decimal MinPrice = courseModel.SellPrice;
List<RB_Class_StepPrice_ViewModel> spList = new List<RB_Class_StepPrice_ViewModel>();
if (classModel.IsStepPrice == 1)
{
......@@ -383,7 +486,7 @@ namespace Edu.Module.Course
message = "成交单价不能小于最低价格";
return flag;
}
if (demodel.PreferPrice != demodel.Unit_Price * demodel.GuestNum)
if (demodel.PreferPrice != (demodel.Unit_Price * demodel.GuestNum-demodel.LessPrice))
{
flag = false;
message = "应收总额不正确";
......@@ -447,6 +550,29 @@ namespace Edu.Module.Course
{
bool flag = false;
message = "";
var studyModel = studyAbroadRepository.GetEntity(demodel.SourceId);
if (studyModel == null)
{
flag = false;
message = "留学就业产品不存在";
return flag;
}
demodel.OldPreferPrice = studyModel.SellPrice * demodel.GuestNum;
demodel.Class_Price = studyModel.SellPrice;
decimal MinPrice = studyModel.SellPrice;
if (demodel.Unit_Price < MinPrice)
{
flag = false;
message = "成交单价不能小于最低价格";
return flag;
}
if (demodel.OrderNature == OrderNatureEnum.ThroughTrain && demodel.PreferPrice != demodel.Unit_Price * demodel.GuestNum)
{
flag = false;
message = "应收总额不正确";
return flag;
}
if (demodel.OrderId > 0)
{
var orderModel = orderRepository.GetEntity(demodel.OrderId);
......@@ -462,26 +588,15 @@ namespace Edu.Module.Course
message = "取消订单无法修改";
return flag;
}
var studyModel = studyAbroadRepository.GetEntity(orderModel.SourceId);
if (studyModel == null)
{
flag = false;
message = "留学就业产品不存在";
return flag;
}
if (demodel.PreferPrice != demodel.Unit_Price * demodel.GuestNum)
{
flag = false;
message = "应收总额不正确";
return flag;
}
Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Order_ViewModel.GuestNum),demodel.GuestNum},
{ nameof(RB_Order_ViewModel.Unit_Price),demodel.Unit_Price},
{ nameof(RB_Order_ViewModel.PreferPrice),demodel.PreferPrice},
{ nameof(RB_Order_ViewModel.OrderSource),demodel.OrderSource},
{ nameof(RB_Order_ViewModel.SaleRemark),demodel.SaleRemark}
{ nameof(RB_Order_ViewModel.SaleRemark),demodel.SaleRemark},
{ nameof(RB_Order_ViewModel.OrderNature),demodel.OrderNature},
{ nameof(RB_Order_ViewModel.OldPreferPrice),demodel.OldPreferPrice},
};
flag = orderRepository.Update(keyValues, new WhereHelper(nameof(RB_Order_ViewModel.OrderId), demodel.OrderId));
if (flag)
......@@ -504,6 +619,10 @@ namespace Edu.Module.Course
{
LogContent += $",客人来源由【{orderModel.OrderSource.ToName()}】修改为【{demodel.OrderSource.ToName()}】";
}
if (orderModel.OrderNature != demodel.OrderNature)
{
LogContent += $",订单性质由【{orderModel.OrderSource.ToName()}】修改为【{demodel.OrderSource.ToName()}】";
}
//记录订单备注
if (orderModel.SaleRemark != demodel.SaleRemark)
{
......@@ -533,36 +652,12 @@ namespace Edu.Module.Course
}
else
{
//查询留学就业产品
var studyModel = studyAbroadRepository.GetEntity(demodel.SourceId);
if (studyModel == null)
{
flag = false;
message = "留学就业产品不存在";
return flag;
}
if (studyModel.SaleState != Common.Enum.Sale.SaleStateEnum.Sell)
{
flag = false;
message = "留学就业产品不正确";
return flag;
}
demodel.Class_Price = studyModel.SellPrice;
decimal MinPrice = studyModel.SellPrice;
if (demodel.Unit_Price < MinPrice)
{
flag = false;
message = "成交单价不能小于最低价格";
return flag;
}
if (demodel.PreferPrice != demodel.Unit_Price * demodel.GuestNum)
{
flag = false;
message = "应收总额不正确";
return flag;
}
int OrderId = orderRepository.Insert(demodel);
flag = OrderId > 0;
if (flag)
......@@ -762,7 +857,7 @@ namespace Edu.Module.Course
/// <param name="SourceId">留学就业产品编号</param>
/// <param name="ClassInfo"></param>
/// <returns></returns>
public List<RB_Order_ViewModel> GetClassOrderList(int classId,int groupId,int SourceId,out object ClassInfo)
public List<RB_Order_ViewModel> GetClassOrderList(int classId, int groupId, int SourceId, out object ClassInfo)
{
ClassInfo = new { };
//获取订单列表
......@@ -786,19 +881,19 @@ namespace Edu.Module.Course
zModel?.AssistIcon
};
}
else if(SourceId>0)
else if (SourceId > 0)
{
var studyModel = studyAbroadRepository.GetEntity(SourceId);
if (studyModel != null && studyModel.Id > 0)
{
ClassInfo = new
{
StudyName=studyModel.Name,
StudyName = studyModel.Name,
};
}
}
//获取订单列表
orderList = orderRepository.GetList(new RB_Order_ViewModel() { Group_Id = groupId, ClassId = classId,SourceId=SourceId });
orderList = orderRepository.GetList(new RB_Order_ViewModel() { Group_Id = groupId, ClassId = classId, SourceId = SourceId });
if (orderList.Any())
{
string orderIds = string.Join(",", orderList.Select(x => x.OrderId));
......@@ -808,7 +903,8 @@ namespace Edu.Module.Course
var guestList = order_GuestRepository.GetList(new RB_Order_Guest_ViewModel() { OrderIds = orderIds });
//获取合同列表
var clist = education_ContractRepository.GetList(new RB_Education_Contract_ViewModel() { Group_Id = groupId, OrderIds = orderIds, Status = -1 }).Where(x => x.Status != 4).ToList();
foreach (var item in orderList) {
foreach (var item in orderList)
{
item.SaleRemarkList = remarkList.Where(x => x.OrderId == item.OrderId && x.Type == 1).ToList();
item.TeacherRemarkList = remarkList.Where(x => x.OrderId == item.OrderId && x.Type == 2).ToList();
item.RectorRemarkList = remarkList.Where(x => x.OrderId == item.OrderId && x.Type == 3).ToList();
......
......@@ -69,27 +69,11 @@ namespace Edu.Module.Duty
if (!string.IsNullOrEmpty(ids))
{
//QDutyMan=query.QDutyMan
planDetails = GetDutyPlanDetailsListModule(new RB_Duty_PlanDetails_ViewModel() { QPlanIds = ids, }, IsQueryDutyMan: true);
planDetails = GetDutyPlanDetailsListModule(new RB_Duty_PlanDetails_ViewModel() { QPlanIds = ids, QDutyStatus = query.QDutyStatus, QAttendanceStatus = query.QAttendanceStatus }, IsQueryDutyMan: true);
}
foreach (var item in list)
{
item.PlanDetails = planDetails?.Where(qitem => qitem.PlanId == item.Id)?.ToList() ?? new List<RB_Duty_PlanDetails_ViewModel>();
//item.DutyStatus = 0;
//if (item.PlanDetails != null && item.PlanDetails.Count > 0)
//{
// foreach (var subItem in item.PlanDetails)
// {
// if (subItem.Status == 2)
// {
// subItem.DutyStatus = DutyStatusEnum.DutyFinished;
// }
// else
// {
// subItem.DutyStatus = CalcDutyPlanStatusModule(item.Date, subItem?.StartTime, subItem?.EndTime);
// }
// }
// item.DutyStatus = CalcDutyStatusModule(item.PlanDetails);
//}
}
}
return list;
......@@ -117,7 +101,7 @@ namespace Edu.Module.Duty
List<RB_Duty_Content_ViewModel> dutyContentList = new List<RB_Duty_Content_ViewModel>();
if (!string.IsNullOrEmpty(ids))
{
planDetails = GetDutyPlanDetailsListModule(new RB_Duty_PlanDetails_ViewModel() { QPlanIds = ids }, IsQueryDutyMan: true);
planDetails = GetDutyPlanDetailsListModule(new RB_Duty_PlanDetails_ViewModel() { QPlanIds = ids, QDutyStatus=-1 }, IsQueryDutyMan: true);
dutyContentList = duty_ContentRepository.GetDutyContentListRepository(new RB_Duty_Content_ViewModel() { QPlanIds = ids });
}
if (planDetails != null && planDetails.Count > 0)
......@@ -142,9 +126,10 @@ namespace Edu.Module.Duty
foreach (var subItem in item.PlanDetails)
{
subItem.WorkContentList = new List<RB_Duty_PlanWork_ViewModel>();
if (subItem.Status == DutyStatusEnum.DutyFinished)
var tempContentList = dutyContentList.Where(qitem => qitem.PlanType == 1 && qitem.PlanId == item.Id && qitem.PlanShift == subItem.Shift && qitem.CreateBy == subItem.DutyMan)?.ToList();
if (tempContentList != null && tempContentList.Count > 0)
{
foreach (var dItem in dutyContentList.Where(qitem => qitem.PlanType == 1 && qitem.PlanId == item.Id && qitem.PlanShift == subItem.Shift))
foreach (var dItem in tempContentList)
{
var dutyItem = dutyItemList?.Where(qitem => qitem.Shifts.Contains(subItem.Shift.ToString()) && qitem.Id == dItem.ItemId && qitem.ItemSchools.Contains(item.School_Id.ToString()))?.FirstOrDefault();
int isFinish = 0;
......@@ -175,7 +160,8 @@ namespace Edu.Module.Duty
foreach (var dutyItem in dutyItemList.Where(qitem => qitem.ItemSchools.Contains(item.School_Id.ToString()) && qitem.Shifts.Contains(subItem.Shift.ToString())))
{
int isFinish = 0;
var dItem = dutyContentList.Where(qitem => qitem.PlanType == 1 && qitem.PlanId == item.Id && qitem.PlanShift == subItem.Shift && qitem.ItemId == dutyItem.Id)?.FirstOrDefault();
var dItem = dutyContentList.Where(qitem => qitem.PlanType == 1 && qitem.PlanId == item.Id
&& qitem.PlanShift == subItem.Shift && qitem.ItemId == dutyItem.Id && qitem.CreateBy == subItem.DutyMan)?.FirstOrDefault();
if (dutyItem.ItemType == ItemTypeEnum.Choice)
{
isFinish = dItem?.WorkIsFinish ?? 0;
......@@ -224,7 +210,7 @@ namespace Edu.Module.Duty
DutyStatusEnum dutyStatus = DutyStatusEnum.NoStart;
var dutyStartTime = Convert.ToDateTime(Common.ConvertHelper.FormatDate(planDate) + " " + startTime);
var dutyEndTime = Convert.ToDateTime(Common.ConvertHelper.FormatDate(planDate) + " " + endTime);
var dt = DateTime.Now.AddMinutes(-30);
var dt = DateTime.Now.AddMinutes(30);
if (dt > dutyEndTime)
{
dutyStatus = Common.Enum.Duty.DutyStatusEnum.DutyFinished;
......@@ -477,44 +463,27 @@ namespace Edu.Module.Duty
/// </summary>
/// <param name="Id">值班编号</param>
/// <param name="Shift">值班班次</param>
/// <param name="user">用户信息</param>
/// <param name="userId">用户信息</param>
/// <param name="isQueryWork">是否查询工作内容-TRUE(查询)</param>
/// <returns></returns>
public Dictionary<string, object> OnDutyModule(int Id, int Shift, UserInfo user, bool isQueryWork = false)
public Dictionary<string, object> OnDutyModule(int Id, int Shift, int userId, bool isQueryWork = false)
{
Dictionary<string, object> result = new Dictionary<string, object>();
var model = GetMyDutyPlanPageModule(1, 1, out _, new RB_Duty_Plan_ViewModel() { Id = Id, QDutyMan = user.Id.ToString(), QShift = Shift })?.FirstOrDefault();
var model = GetMyDutyPlanPageModule(1, 1, out _, new RB_Duty_Plan_ViewModel() { Id = Id, QDutyMan = userId.ToString(), QShift = Shift })?.FirstOrDefault();
if (model == null)
{
return result;
}
//当前班次
var currentModel = new RB_Duty_PlanDetails_ViewModel();
//上一个班次
var previousModel = new RB_Duty_PlanDetails_ViewModel();
//下一个班次
var nextModel = new RB_Duty_PlanDetails_ViewModel();
if (model.PlanDetails != null && model.PlanDetails.Count > 0)
{
//查找当前人员索引
int currentIndex = CalcCurrentDutyManIndexModule_V2(model);
//上一个班次索引
int previousIndex = currentIndex - 1;
//下一个班次索引
int nextIndex = currentIndex + 1;
//当前班次
currentModel = model.PlanDetails[currentIndex];
//上一个班次
if (previousIndex >= 0)
{
previousModel = model.PlanDetails[previousIndex];
}
//下一个班次
if (nextIndex < model.PlanDetails.Count)
{
nextModel = model.PlanDetails[nextIndex];
}
}
if (!isQueryWork)
......@@ -522,12 +491,29 @@ namespace Edu.Module.Duty
result.Add("Id", model?.Id);
result.Add("PlanDate", Common.ConvertHelper.FormatDate(model?.Date));
result.Add("WeekDay", Common.ConvertHelper.GetWeekDay(model?.Date));
result.Add("CheckTime", currentModel?.CheckTimeStr);
result.Add("CheckLateTime", currentModel?.CheckLateTime);
result.Add("CheckLateTimeStr", (currentModel?.CheckLateTime > 0 ? string.Format("[迟到{0}分钟]", currentModel.CheckLateTime) : "[正常]"));
result.Add("FinishTime", currentModel?.FinishTimeStr);
if (currentModel?.CheckTimeStr != "未打卡")
{
result.Add("CheckLateTimeStr", (currentModel?.CheckLateTime > 0 ? string.Format("[迟到{0}分钟]", currentModel.CheckLateTime) : "[正常]"));
}
else
{
result.Add("CheckLateTimeStr", "");
}
result.Add("FinishTime", currentModel?.FinishTimeStr);
result.Add("FinishLateTimeStr", (currentModel.FinishLateTime > 0 ? string.Format("[早退{0}分钟]", currentModel.FinishLateTime) : "[正常]"));
result.Add("FinishLateTime", currentModel?.FinishLateTime);
if (currentModel?.FinishTimeStr != "未打卡")
{
result.Add("FinishLateTimeStr", (currentModel?.FinishLateTime > 0 ? string.Format("[早退{0}分钟]", currentModel.FinishLateTime) : "[正常]"));
}
else
{
result.Add("FinishLateTimeStr", "");
}
result.Add("SchoolName", model?.SchoolName);
result.Add("ShiftName", currentModel?.ShiftName);
result.Add("StartTime", currentModel?.StartTime);
......@@ -536,6 +522,7 @@ namespace Edu.Module.Duty
result.Add("DutyManIcon", currentModel?.DutyManIcon);
result.Add("Status", currentModel?.Status);
result.Add("StatusStr", currentModel?.StatusStr);
result.Add("DutyMan", currentModel?.DutyMan);
}
else
{
......@@ -571,10 +558,38 @@ namespace Edu.Module.Duty
}
}
List<object> pList = new List<object>();
var currentPlanContetList = contentList.Where(qitem => qitem.PlanShift == Shift && qitem.PlanType == 1)?.ToList();
var currentPlanContetList = contentList.Where(qitem => qitem.PlanShift == Shift && qitem.PlanType == 1 && qitem.CreateBy==userId)?.ToList();
if (currentPlanContetList == null || (currentPlanContetList != null && currentPlanContetList.Count == 0))
{
foreach (var dayItem in dutyItemList)
{
duty_ContentRepository.Insert(new Model.Entity.Duty.RB_Duty_Content()
{
CreateBy = userId,
CreateTime = DateTime.Now,
FileURL = "",
Group_Id = model.Group_Id,
Id = 0,
ItemId = dayItem.Id,
OtherContent = "",
OtherRemark = "",
PlanId = model.Id,
PlanShift = Shift,
PlanType = 1,
Status = DateStateEnum.Normal,
UpdateBy = userId,
UpdateTime = DateTime.Now,
WorkContent = "",
WorkIsFinish = 0
});
}
contentList = duty_ContentRepository.GetDutyContentListRepository(new RB_Duty_Content_ViewModel() { PlanId = model.Id });
currentPlanContetList = contentList.Where(qitem => qitem.PlanShift == Shift && qitem.PlanType == 1)?.ToList();
}
if (currentModel.Status == DutyStatusEnum.DutyFinished)
{
foreach (var item in currentPlanContetList)
foreach (var item in currentPlanContetList.Where(qitem=>qitem.CreateBy==userId))
{
var c_itemModel = dutyItemList?.Where(qitem => qitem.Id == item.ItemId)?.FirstOrDefault();
if (c_itemModel != null)
......@@ -610,7 +625,7 @@ namespace Edu.Module.Duty
{
foreach (var item in PlanList)
{
var c_workModel = currentPlanContetList?.Where(qitem => qitem.ItemId == item.Id)?.FirstOrDefault();
var c_workModel = currentPlanContetList?.Where(qitem => qitem.ItemId == item.Id&&qitem.CreateBy==userId)?.FirstOrDefault();
var itemType = item.ItemType;
int workIsFinish = 0;
if (itemType == ItemTypeEnum.FillIn)
......@@ -644,7 +659,7 @@ namespace Edu.Module.Duty
{
if (item.Id != currentModel.Id)
{
var tempEmergenciesList = contentList?.Where(qitem => qitem.PlanType == 3 && qitem.PlanId == item.PlanId && qitem.PlanShift == item.Shift)?.ToList() ?? new List<RB_Duty_Content_ViewModel>();
var tempEmergenciesList = contentList?.Where(qitem => qitem.PlanType == 3 && qitem.PlanId == item.PlanId && qitem.PlanShift == item.Shift && qitem.CreateBy != userId)?.ToList() ?? new List<RB_Duty_Content_ViewModel>();
if (tempEmergenciesList != null && tempEmergenciesList.Count > 0)
{
tempEmergenciesList.ForEach(item => item.IsOperate = 0);
......@@ -658,7 +673,7 @@ namespace Edu.Module.Duty
}
else
{
var tempEmergenciesList = contentList?.Where(qitem => qitem.PlanType == 3 && qitem.PlanId == item.PlanId && qitem.PlanShift == item.Shift)?.ToList() ?? new List<RB_Duty_Content_ViewModel>();
var tempEmergenciesList = contentList?.Where(qitem => qitem.PlanType == 3 && qitem.PlanId == item.PlanId && qitem.PlanShift == item.Shift && qitem.CreateBy == userId)?.ToList() ?? new List<RB_Duty_Content_ViewModel>();
if (tempEmergenciesList != null && tempEmergenciesList.Count > 0)
{
foreach (var subItem in tempEmergenciesList)
......@@ -680,7 +695,7 @@ namespace Edu.Module.Duty
{
if (item.Status == DutyStatusEnum.DutyFinished)
{
var tempHandOverList = contentList?.Where(qitem => qitem.PlanType == 2 && qitem.PlanId == item.PlanId && qitem.PlanShift == item.Shift)?.ToList() ?? new List<RB_Duty_Content_ViewModel>();
var tempHandOverList = contentList?.Where(qitem => qitem.PlanType == 2 && qitem.PlanId == item.PlanId && qitem.PlanShift == item.Shift && qitem.CreateBy != userId)?.ToList() ?? new List<RB_Duty_Content_ViewModel>();
if (tempHandOverList != null && tempHandOverList.Count > 0)
{
foreach (var subItem in tempHandOverList)
......@@ -694,7 +709,7 @@ namespace Edu.Module.Duty
}
else
{
var tempHandOverList = contentList?.Where(qitem => qitem.PlanType == 2 && qitem.PlanId == item.PlanId && qitem.PlanShift == item.Shift)?.ToList() ?? new List<RB_Duty_Content_ViewModel>();
var tempHandOverList = contentList?.Where(qitem => qitem.PlanType == 2 && qitem.PlanId == item.PlanId && qitem.PlanShift == item.Shift && qitem.CreateBy == userId)?.ToList() ?? new List<RB_Duty_Content_ViewModel>();
if (tempHandOverList != null && tempHandOverList.Count > 0)
{
foreach (var subItem in tempHandOverList)
......@@ -707,8 +722,6 @@ namespace Edu.Module.Duty
}
}
result.Add("HandoverList", HandoverList);
result.Add("ReciveMan", nextModel?.DutyManName ?? "");
result.Add("GiveMan", previousModel?.DutyManName ?? "");
}
return result;
}
......@@ -734,6 +747,42 @@ namespace Edu.Module.Duty
return currentIndex;
}
/// <summary>
/// 计算当前值班人员索引
/// </summary>
/// <param name="planDate">值班日期</param>
/// <param name="PlanDetails">值班班次列表</param>
/// <param name="dutyManId">值班人</param>
/// <returns></returns>
public Dictionary<string, List<RB_Duty_PlanDetails_ViewModel>> CalcCurrentDutyManIndexModule_V3(RB_Duty_Plan_ViewModel model)
{
Dictionary<string, List<RB_Duty_PlanDetails_ViewModel>> plans = new Dictionary<string, List<RB_Duty_PlanDetails_ViewModel>>()
{
{"previous",new List<RB_Duty_PlanDetails_ViewModel>() },
{"current",new List<RB_Duty_PlanDetails_ViewModel>() },
{"next",new List<RB_Duty_PlanDetails_ViewModel>() },
};
var shiftList= model.PlanDetails.GroupBy(qitem => new { qitem.Shift }).Select(qitem => new { qitem.Key.Shift }).ToList();
for (var i = 0; i < shiftList.Count(); i++)
{
var subList = model.PlanDetails.Where(qitem => qitem.Shift == shiftList[i].Shift)?.ToList();
if (subList != null && subList.Where(qitem => qitem.Id == model.DetailId).Count() > 0)
{
plans["current"] = subList.Where(qitem => qitem.Id == model.DetailId).ToList();
if (i - 1 >= 0)
{
plans["previous"] = model.PlanDetails.Where(qitem => qitem.Shift == shiftList[i - 1].Shift)?.ToList();
}
if (i + 1 < shiftList.Count())
{
plans["next"] = model.PlanDetails.Where(qitem => qitem.Shift == shiftList[i + 1].Shift)?.ToList();
}
}
}
return plans;
}
/// <summary>
/// 获取值班详情
/// </summary>
......@@ -805,14 +854,15 @@ namespace Edu.Module.Duty
/// <param name="DutyMan"></param>
/// <param name="Status">Status(1-值班中,2-已完成)</param>
/// <returns></returns>
public bool DutyCheckModule(int Id, int Shift, int DutyMan, int Status)
public bool DutyCheckModule(int Id, int Shift, int DutyMan, int Status, out string message)
{
message = "";
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{ nameof(RB_Duty_PlanDetails_ViewModel.Status),Status},
};
DateTime dt = DateTime.Now;
var planModel = GetDutyPlanDetailsListModule(new RB_Duty_PlanDetails_ViewModel() { PlanId = Id, Shift = Shift, QDutyMan = DutyMan.ToString() })?.FirstOrDefault();
var planModel = GetDutyPlanDetailsListModule(new RB_Duty_PlanDetails_ViewModel() { PlanId = Id, Shift = Shift,QDutyStatus=-1, QDutyMan = DutyMan.ToString() })?.FirstOrDefault();
var startTime = Convert.ToDateTime(Common.ConvertHelper.FormatDate(dt) + " " + planModel?.StartTime);
var endTime = Convert.ToDateTime(Common.ConvertHelper.FormatDate(dt) + " " + planModel?.EndTime);
if (Status == 1)
......@@ -830,6 +880,16 @@ namespace Edu.Module.Duty
}
if (Status == 2)
{
if (dt < startTime)
{
message = "还未到下班时间,不能打卡!";
return false;
}
if (Common.ConvertHelper.CalcMinutes(endTime, dt) > Common.Config.MoreThanMinutes)
{
message = string.Format("已超过下班时间【{0}】分钟,不能打卡!", Common.Config.MoreThanMinutes);
return false;
}
fileds.Add(nameof(RB_Duty_PlanDetails_ViewModel.FinishTime), dt);
int minute = Common.ConvertHelper.CalcMinutes(dt, endTime);
if (minute > 0)
......@@ -851,6 +911,46 @@ namespace Edu.Module.Duty
return flag;
}
/// <summary>
/// 更新用户【未值班】状态
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public bool UpdateNoDutyModule(int Id)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{ nameof(RB_Duty_PlanDetails_ViewModel.Status), (int)DutyStatusEnum.NoDuty },
};
List<WhereHelper> list = new List<WhereHelper>()
{
new WhereHelper(nameof(RB_Duty_PlanDetails_ViewModel.Id), Id),
};
var flag = duty_PlanDetailsRepository.Update(fileds, list);
return flag;
}
/// <summary>
/// 更新用户【值班完成】状态
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public bool UpdateDutyFinishedModule(int Id)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{ nameof(RB_Duty_PlanDetails_ViewModel.Status), (int)DutyStatusEnum.DutyFinished },
{ nameof(RB_Duty_PlanDetails_ViewModel.FinishTime), null},
};
List<WhereHelper> list = new List<WhereHelper>()
{
new WhereHelper(nameof(RB_Duty_PlanDetails_ViewModel.Id), Id),
};
var flag = duty_PlanDetailsRepository.Update(fileds, list);
return flag;
}
/// <summary>
/// 新增修改值班事项
/// </summary>
......
......@@ -2,6 +2,7 @@
using Edu.Common.Enum.Sale;
using Edu.Model.CacheModel;
using Edu.Model.ViewModel.StudyAbroad;
using Edu.Repository.Course;
using Edu.Repository.StudyAbroad;
using System;
using System.Collections.Generic;
......@@ -26,6 +27,11 @@ namespace Edu.Module.StudyAbroad
/// </summary>
private readonly RB_StudyaBroad_PreferentialRepository studyaBroad_PreferentialRepository = new RB_StudyaBroad_PreferentialRepository();
/// <summary>
/// 订单仓储层对象
/// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary>
/// 获取留学就业分页列表
/// </summary>
......@@ -245,8 +251,19 @@ namespace Edu.Module.StudyAbroad
/// <param name="Id">供应商编号</param>
/// <param name="Status">状态(0-正常,1-删除)</param>
/// <returns></returns>
public bool RemoveStudyAbroadModule(int Id, int Status)
public bool RemoveStudyAbroadModule(int Id, int Status,out string message)
{
message = "";
var orderList = orderRepository.GetStudyOrderPageListRepository(1, 1, out _, new Model.ViewModel.Course.RB_Order_ViewModel()
{
SourceId = Id,
Q_OrderState = 1
});
if (orderList != null && orderList.Count > 0)
{
message = "此产品下存在正常订单!不能删除!";
return false;
}
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{ nameof(RB_StudyAbroad_ViewModel.Status),Status},
......
......@@ -75,7 +75,7 @@ namespace Edu.Module.User
/// <returns></returns>
public List<RB_Assist_ViewModel> GetAssistPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Assist_ViewModel query)
{
var list= assistRepository.GetAssistPageListRepository(pageIndex, pageSize, out rowsCount, query);
var list = assistRepository.GetAssistPageListRepository(pageIndex, pageSize, out rowsCount, query);
if (list != null && list.Count > 0)
{
string postIds = string.Join(",", list.Where(qitem => qitem.Post_Id > 0).Select(qitem => qitem.Post_Id));
......@@ -100,7 +100,7 @@ namespace Edu.Module.User
}
/// <summary>
/// 添加修改助教
///【员工管理端】添加修改助教
/// </summary>
/// <param name="model"></param>
/// <param name="isUpdateBasic">是否更新基础资料</param>
......@@ -134,13 +134,13 @@ namespace Edu.Module.User
model.LeaveTime = null;
}
fileds.Add(nameof(RB_Assist_ViewModel.IDCard), model.IDCard);
fileds.Add(nameof(RB_Assist_ViewModel.Sex),model.Sex);
fileds.Add(nameof(RB_Assist_ViewModel.EntryTime),model.EntryTime);
fileds.Add(nameof(RB_Assist_ViewModel.Address),model.Address);
fileds.Add(nameof(RB_Assist_ViewModel.BirthDate),model.BirthDate);
fileds.Add(nameof(RB_Assist_ViewModel.LeaveStatus),model.LeaveStatus);
fileds.Add(nameof(RB_Assist_ViewModel.LeaveTime),model.LeaveTime);
fileds.Add(nameof(RB_Assist_ViewModel.Education),model.Education);
fileds.Add(nameof(RB_Assist_ViewModel.Sex), model.Sex);
fileds.Add(nameof(RB_Assist_ViewModel.EntryTime), model.EntryTime);
fileds.Add(nameof(RB_Assist_ViewModel.Address), model.Address);
fileds.Add(nameof(RB_Assist_ViewModel.BirthDate), model.BirthDate);
fileds.Add(nameof(RB_Assist_ViewModel.LeaveStatus), model.LeaveStatus);
fileds.Add(nameof(RB_Assist_ViewModel.LeaveTime), model.LeaveTime);
fileds.Add(nameof(RB_Assist_ViewModel.Education), model.Education);
fileds.Add(nameof(RB_Assist_ViewModel.Email), model.Email);
}
string logContent = "";
......@@ -212,8 +212,8 @@ namespace Edu.Module.User
}
if (flag)
{
var account= accountModule.GetAccountListModule(new RB_Account_ViewModel() { AccountType = AccountTypeEnum.Assist, AccountId = model.AId })?.FirstOrDefault();
int Id = account?.Id??0;
var account = accountModule.GetAccountListModule(new RB_Account_ViewModel() { AccountType = AccountTypeEnum.Assist, AccountId = model.AId })?.FirstOrDefault();
int Id = account?.Id ?? 0;
flag = accountModule.SetAccountModule(new RB_Account_ViewModel()
{
Id = Id,
......@@ -233,6 +233,89 @@ namespace Edu.Module.User
return flag;
}
/// <summary>
/// 【助教端】添加修改助教
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool SetAssistModule_V2(RB_Assist_ViewModel model)
{
bool flag;
if (model.AId > 0)
{
var oldModel = GetAssistModule(model.AId);
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Assist_ViewModel.AssistName),model.AssistName.Trim() },
{nameof(RB_Assist_ViewModel.AssistTel),model.AssistTel },
{nameof(RB_Assist_ViewModel.AssistIcon),model.AssistIcon },
{nameof(RB_Assist_ViewModel.UpdateBy),model.UpdateBy },
{nameof(RB_Assist_ViewModel.UpdateTime),model.UpdateTime },
};
fileds.Add(nameof(RB_Assist_ViewModel.Dept_Id), model.Dept_Id);
fileds.Add(nameof(RB_Assist_ViewModel.Post_Id), model.Post_Id);
fileds.Add(nameof(RB_Assist_ViewModel.AssistIntro), model.AssistIntro);
fileds.Add(nameof(RB_Assist_ViewModel.Teacher_Id), model.Teacher_Id);
fileds.Add(nameof(RB_Assist_ViewModel.School_Id), model.School_Id);
string logContent = "";
if (model.AssistName != oldModel.AssistName)
{
logContent += string.Format(",将姓名由【{0}】修改为【{1}】。", oldModel.AssistName, model.AssistName);
}
if (model.AssistTel != oldModel.AssistTel)
{
logContent += string.Format(",将电话由【{0}】修改为【{1}】。", oldModel.AssistTel, model.AssistTel);
}
if (model.AssistIntro != oldModel.AssistIntro)
{
logContent += string.Format(",将简介由【{0}】修改为【{1}】。", oldModel.AssistIntro, model.AssistIntro);
}
if (model.AssistIcon != oldModel.AssistIcon)
{
logContent += string.Format(",将头像由【{0}】修改为【{1}】。", oldModel.AssistIcon, model.AssistIcon);
}
if (!string.IsNullOrEmpty(logContent))
{
//新增日志
userChangeLogModule.SetUserChangeLogModule(model.CreateBy, model.Group_Id, model.School_Id, logContent, model.AId, AccountTypeEnum.Assist);
}
flag = assistRepository.Update(fileds, new WhereHelper(nameof(RB_Assist.AId), model.AId));
}
else
{
var newId = assistRepository.Insert(model);
model.AId = newId;
userChangeLogModule.SetUserChangeLogModule(model.CreateBy, model.Group_Id, model.School_Id, "新建助教用户", newId, AccountTypeEnum.Assist);
flag = newId > 0;
}
if (flag)
{
var account = accountModule.GetAccountListModule(new RB_Account_ViewModel() { AccountType = AccountTypeEnum.Assist, AccountId = model.AId })?.FirstOrDefault();
int Id = account?.Id ?? 0;
if (Id == 0)
{
flag = accountModule.SetAccountModule(new RB_Account_ViewModel()
{
Id = Id,
Account = model.AssistTel,
Password = Common.DES.Encrypt(Common.Config.DefaultPwd),
AccountType = AccountTypeEnum.Assist,
AccountId = model.AId,
CreateBy = model.CreateBy,
UpdateBy = model.CreateBy,
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
DirectSupervisor = model.DirectSupervisor
});
}
}
return flag;
}
/// <summary>
/// 添加修改助教部门
/// </summary>
......@@ -352,7 +435,7 @@ namespace Edu.Module.User
{nameof(RB_Assist.LeaveTime),model.LeaveTime },
{nameof(RB_Assist.UpdateBy),model.UpdateBy },
{nameof(RB_Assist.UpdateTime),model.UpdateTime },
};
string logContent = "";
if (model.LeaveStatus != oldModel.LeaveStatus)
......@@ -409,7 +492,7 @@ namespace Edu.Module.User
flag = assistRepository.Update(fileds, new WhereHelper(nameof(RB_Assist.AId), AId));
var accountList = accountModule.GetAccountListExtModule(new RB_Account_ViewModel()
{
AccountId=model.AId,
AccountId = model.AId,
Account = model.AssistTel,
AccountType = AccountTypeEnum.Assist
});
......
......@@ -114,7 +114,7 @@ namespace Edu.Module.User
}
/// <summary>
/// 新增修改讲师
/// 员工管理端(新增修改讲师)
/// </summary>
/// <param name="model"></param>
/// <param name="isUpdateBasic">是否更新基础资料</param>
......@@ -238,13 +238,129 @@ namespace Edu.Module.User
flag = newId > 0;
}
if (flag)
{
var account = accountModule.GetAccountListModule(new RB_Account_ViewModel() { AccountType = AccountTypeEnum.Teacher, AccountId = model.TId })?.FirstOrDefault();
int Id = account?.Id ?? 0;
if (Id == 0)
{
flag = accountModule.SetAccountModule(new RB_Account_ViewModel()
{
Id = Id,
Account = model.TeacherAccount,
Password = Common.DES.Encrypt(Common.Config.DefaultPwd),
AccountType = AccountTypeEnum.Teacher,
AccountId = model.TId,
CreateBy = model.CreateBy,
UpdateBy = model.CreateBy,
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
DirectSupervisor = model.DirectSupervisor
});
}
}
return flag;
}
/// <summary>
/// 教师端(新增修改讲师)
/// </summary>
/// <param name="model"></param>
/// <param name="isUpdateBasic">是否更新基础资料</param>
/// <returns></returns>
public bool SetTeacherModule_V2(RB_Teacher_ViewModel model, bool isUpdateBasic = false)
{
bool flag;
if (model.TId > 0)
{
var oldModel = GetTeacherModule(model.TId);
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Teacher_ViewModel.TeacherName),model.TeacherName },
{nameof(RB_Teacher_ViewModel.TeacherTel),model.TeacherTel },
{nameof(RB_Teacher_ViewModel.TeacherHead),model.TeacherHead },
{nameof(RB_Teacher_ViewModel.TeacherIcon),model.TeacherIcon },
{nameof(RB_Teacher_ViewModel.UpdateBy),model.UpdateBy },
{nameof(RB_Teacher_ViewModel.UpdateTime),model.UpdateTime },
{nameof(RB_Teacher_ViewModel.School_Id),model.School_Id },
};
fileds.Add(nameof(RB_Teacher_ViewModel.TeachTag), model.TeachTag);
fileds.Add(nameof(RB_Teacher_ViewModel.SortNum), model.SortNum);
fileds.Add(nameof(RB_Teacher_ViewModel.IsRecommend), model.IsRecommend);
fileds.Add(nameof(RB_Teacher_ViewModel.IsShow), model.IsShow);
fileds.Add(nameof(RB_Teacher_ViewModel.TeacherIntro), model.TeacherIntro);
fileds.Add(nameof(RB_Teacher_ViewModel.TeacherSay), model.TeacherSay);
fileds.Add(nameof(RB_Teacher_ViewModel.Dept_Id), model.Dept_Id);
fileds.Add(nameof(RB_Teacher_ViewModel.Post_Id), model.Post_Id);
fileds.Add(nameof(RB_Teacher_ViewModel.BaseStuNum), model.BaseStuNum);
fileds.Add(nameof(RB_Teacher_ViewModel.BaseHourFee), model.BaseHourFee);
#region 修改日志
string logContent = "";
if (model.TeacherName != oldModel.TeacherName)
{
logContent += string.Format(",将姓名由【{0}】修改为【{1}】。", oldModel.TeacherName, model.TeacherName);
}
if (model.TeacherTel != oldModel.TeacherTel)
{
logContent += string.Format(",将电话由【{0}】修改为【{1}】。", oldModel.TeacherTel, model.TeacherTel);
}
if (model.BaseStuNum != oldModel.BaseStuNum)
{
logContent += string.Format(",将带班基础人数由【{0}】修改为【{1}】。", oldModel.BaseStuNum, model.BaseStuNum);
}
if (Common.ConvertHelper.FormatDate(model.EntryTime) != Common.ConvertHelper.FormatDate(oldModel.EntryTime))
{
logContent += string.Format(",将入职时间由【{0}】修改为【{1}】。", oldModel.EntryTime, model.EntryTime);
}
if (model.Address != oldModel.Address)
{
logContent += string.Format(",将地址由【{0}】修改为【{1}】。", oldModel.Address, model.Address);
}
if (Common.ConvertHelper.FormatDate(model.BirthDate) != Common.ConvertHelper.FormatDate(oldModel.BirthDate))
{
logContent += string.Format(",将生日由【{0}】修改为【{1}】。", Common.ConvertHelper.FormatDate(oldModel.BirthDate), Common.ConvertHelper.FormatDate(model.BirthDate));
}
if (model.Education != oldModel.Education)
{
logContent += string.Format(",将学历由【{0}】修改为【{1}】。", oldModel.Education.ToName(), model.Education.ToName());
}
if (model.Email != oldModel.Email)
{
logContent += string.Format(",将邮箱由【{0}】修改为【{1}】。", oldModel.Email, model.Email);
}
if (model.BaseHourFee != oldModel.BaseHourFee)
{
logContent += string.Format(",将基础课时费由【{0}】修改为【{1}】。", oldModel.BaseHourFee, model.BaseHourFee);
}
if (model.BaseStuNum != oldModel.BaseStuNum)
{
logContent += string.Format(",将基础带班人数由【{0}】修改为【{1}】。", oldModel.BaseStuNum, model.BaseStuNum);
}
if (!string.IsNullOrEmpty(logContent))
{
//新增日志
userChangeLogModule.SetUserChangeLogModule(model.CreateBy, model.Group_Id, model.School_Id, logContent, model.TId, AccountTypeEnum.Teacher);
}
#endregion
flag = teacherRepository.Update(fileds, new WhereHelper(nameof(RB_Teacher_ViewModel.TId), model.TId));
}
else
{
var newId = teacherRepository.Insert(model);
model.TId = newId;
userChangeLogModule.SetUserChangeLogModule(model.CreateBy, model.Group_Id, model.School_Id, "新建教师用户", newId, AccountTypeEnum.Teacher);
flag = newId > 0;
}
if (flag)
{
var account = accountModule.GetAccountListModule(new RB_Account_ViewModel() { AccountType = AccountTypeEnum.Teacher, AccountId = model.TId })?.FirstOrDefault();
int Id = account?.Id ?? 0;
flag = accountModule.SetAccountModule(new RB_Account_ViewModel()
{
Id = Id,
Account = model.TeacherAccount,
Account = model.TeacherTel,
Password = Common.DES.Encrypt(Common.Config.DefaultPwd),
AccountType = AccountTypeEnum.Teacher,
AccountId = model.TId,
......@@ -530,5 +646,15 @@ namespace Edu.Module.User
return teacherRepository.GetListByStudentId(Student_Id, Group_Id);
}
}
/// <summary>
/// 获取教师账户
/// </summary>
/// <param name="teacherIds"></param>
/// <returns></returns>
public List<RB_Teacher_ViewModel> GetTeacherByTId(int AccountId,int Group_Id)
{
return teacherRepository.GetTeacherByTId(AccountId, Group_Id);
}
}
}
......@@ -235,7 +235,7 @@ WHERE A.ClassId={0}
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,B.CourseName,D.TeacherName,IFNULL(D.TeacherHead,'') AS TeacherHead,E.SName AS SchoolName,R.RoomName
,IFNULL(t.GuestNum,0) AS OrderStudentCount
,IFNULL(t.GuestNum,0) AS OrderStudentCount,IFNULL(B.SellPrice,0) AS CourseSellPrice,IFNULL(B.OriginalPrice,0) AS CourseOriginalPrice
FROM rb_class AS A LEFT JOIN rb_course AS B ON A.CouseId=B.CourseId
LEFT JOIN rb_teacher AS D ON A.Teacher_Id=D.TId
LEFT JOIN rb_class_room AS R ON A.ClassRoomId=R.RoomId
......
......@@ -127,6 +127,27 @@ where a.`Status`=0 and c.ClassStatus =2 and a.ClassRoomId={RoomId} and a.Group_
return Get<RB_Class_Time_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 获取班级上课时间
/// </summary>
/// <param name="classIds"></param>
/// <returns></returns>
public List<RB_Class_Time_Extend> GetClassTimeByTId(int TId, int Group_Id)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat($@"SELECT t.TeacherName,croom.RoomName,t.TeacherIcon,c.ClassHours,c.ClassName,cou.CourseName,lp.LessonPlanId,A.ClassPlanId,A.ClassId,A.`Status`,A.ClassRoomId,A.Group_Id,A.School_Id,A.TeacherId,B.ClassTimeId,CONCAT( DATE_FORMAT(A.ClassDate,'%Y-%m-%d') ,' ',B.StartTime,':00') AS NewPlanDateTime,
B.EndTime,B.StartTime,B.SuiPai,B.ClassStatus,CONCAT( DATE_FORMAT(A.ClassDate,'%Y-%m-%d') ,' ',B.EndTime,':00') AS NewEndPlanDateTime
FROM rb_class_plan AS A INNER JOIN rb_class_time AS B ON A.ClassPlanId=B.ClassPlanId
LEFT JOIN rb_teacher as t on a.TeacherId=t.TId
LEFT JOIN rb_class as c on c.ClassId=a.ClassId
LEFT JOIN rb_course as cou on cou.CourseId=c.CouseId
LEFT JOIN rb_class_room as croom on croom.RoomId=a.ClassRoomId
LEFT JOIN (SELECT ClassPlanId,MAX(LessonPlanId) as LessonPlanId from rb_class_lessonplan where `Status`=0 GROUP BY ClassPlanId) as lp on lp.ClassPlanId=a.ClassPlanId
where a.`Status`=0 and c.ClassStatus =2 and a.TeacherId={TId} and a.Group_Id={Group_Id} and DATE_FORMAT(A.ClassDate,'%Y-%m-%d')>=DATE_FORMAT(NOW(),'%Y-%m-%d') ORDER BY CONCAT( DATE_FORMAT(A.ClassDate,'%Y-%m-%d') ,' ',B.EndTime,':00') asc LIMIT 10");
return Get<RB_Class_Time_Extend>(builder.ToString()).ToList();
}
#endregion
}
}
......@@ -349,6 +349,10 @@ where {where}
{
where += $@" and o.{nameof(RB_Order_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.SourceId > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.SourceId)} ={demodel.SourceId}";
}
if (demodel.OrderState > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderState)} ={(int)demodel.OrderState}";
......
......@@ -47,6 +47,31 @@ WHERE 1=1
{
builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_Duty_PlanDetails_ViewModel.DutyMan), query.QDutyMan);
}
if (query.QDutyStatus > -1)
{
builder.AppendFormat(" AND A.Status={0} ", query.QDutyStatus);
}
//迟到
if (query.QAttendanceStatus == 1)
{
builder.AppendFormat(" AND A.CheckLateTime>0 ");
}
//早退
if (query.QAttendanceStatus == 2)
{
builder.AppendFormat(" AND A.FinishLateTime>0 ");
}
//缺勤
if (query.QAttendanceStatus == 3)
{
builder.AppendFormat(" AND A.Status=0 AND A.FinishLateTime=0 AND A.CheckLateTime=0 ");
}
//正常
if (query.QAttendanceStatus == 4)
{
builder.AppendFormat(" AND A.Status=2 AND A.FinishLateTime=0 AND A.CheckLateTime=0 ");
}
}
builder.AppendFormat(" ORDER BY B.{0} ASC ", nameof(RB_Duty_Frequency_ViewModel.StartTime));
return Get<RB_Duty_PlanDetails_ViewModel>(builder.ToString()).ToList();
......
......@@ -25,9 +25,39 @@ namespace Edu.Repository.Duty
{
rowsCount = 0;
string joinTable = "";
if (query != null && !string.IsNullOrEmpty(query.QDutyMan))
if (query != null && (!string.IsNullOrEmpty(query.QDutyMan)||query.QDutyStatus>-1 || query.QAttendanceStatus>0 ))
{
joinTable = string.Format(" INNER JOIN (SELECT PlanId,DutyMan FROM rb_duty_plandetails WHERE 1=1 AND DutyMan IN({0})) AS C ON A.Id=C.PlanId ", query.QDutyMan);
string joinWhere = "";
if (!string.IsNullOrEmpty(query.QDutyMan))
{
joinWhere += string.Format(" AND DutyMan IN({0}) ", query.QDutyMan);
}
if (query.QDutyStatus >-1)
{
joinWhere += string.Format(" AND Status={0} ", query.QDutyStatus);
}
//迟到
if (query.QAttendanceStatus == 1)
{
joinWhere += string.Format(" AND CheckLateTime>0 ");
}
//早退
if (query.QAttendanceStatus == 2)
{
joinWhere += string.Format(" AND FinishLateTime>0 ");
}
//缺勤
if (query.QAttendanceStatus == 3)
{
joinWhere += string.Format(" AND Status=0 AND FinishLateTime=0 AND CheckLateTime=0 ");
}
//正常
if (query.QAttendanceStatus == 4)
{
joinWhere += string.Format(" AND Status=2 AND FinishLateTime=0 AND CheckLateTime=0 ");
}
joinTable = string.Format(" INNER JOIN (SELECT PlanId FROM rb_duty_plandetails WHERE 1=1 {0} GROUP BY PlanId ) AS C ON A.Id=C.PlanId ", joinWhere);
}
StringBuilder builder = new StringBuilder();
......@@ -125,6 +155,10 @@ WHERE 1=1 AND A.`Status`=0
{
builder.AppendFormat(@" AND B.{0}={1} ", nameof(RB_Duty_PlanDetails_ViewModel.DutyMan), query.QDutyMan);
}
if (query.QShift>0)
{
builder.AppendFormat(@" AND B.{0}={1} ", nameof(RB_Duty_PlanDetails_ViewModel.Shift), query.QShift);
}
if (query.Id > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Duty_Plan_ViewModel.Id), query.Id);
......
......@@ -202,7 +202,33 @@ where t.`Status`=0 and c.`Status`=0 and sog.`Status`=0 and c.ClassStatus in(1,2
return Get<RB_Teacher_ViewModel>(builder.ToString(), parameters).ToList();
}
/// <summary>
/// 获取教师账户
/// </summary>
/// <param name="teacherIds"></param>
/// <returns></returns>
public List<RB_Teacher_ViewModel> GetTeacherByTId(int Id, int Group_Id)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT t.*,a.Id as AccountId,s.SName,d.DeptName
FROM rb_teacher AS t
LEFT JOIN rb_account as a ON (t.TId=a.AccountId AND a.AccountType=2)
LEFT JOIN rb_school AS s ON t.School_Id=s.SId
left join rb_department as d on t.Dept_Id = d.DeptId
WHERE 1=1
");
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Teacher_ViewModel.Status), (int)DateStateEnum.Normal);
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Teacher_ViewModel.AuditStatus), (int)AccountStatusEnum.Pass);
builder.AppendFormat(" AND t.{0} ={1} ", nameof(RB_Teacher_ViewModel.TId), Id);
if (Group_Id > 0)
{
builder.AppendFormat(" AND a.Group_Id ={0} ", Group_Id);
}
return Get<RB_Teacher_ViewModel>(builder.ToString(), parameters).ToList();
}
}
}
\ No newline at end of file
......@@ -74,6 +74,7 @@ namespace Edu.WebApi.Controllers.Course
ClassStatusStr = item.ClassStatus.ToName(),
item.NewPlanDateTime,
item.ClassStatus,
item.Status,
});
}
pageModel.Count = rowsCount;
......@@ -349,8 +350,9 @@ namespace Edu.WebApi.Controllers.Course
public ApiResult RemoveClass()
{
var ClassId = base.ParmJObj.GetInt("ClassId", 0);
var flag = classModule.RemoveClassModule(ClassId);
return flag ? ApiResult.Success() : ApiResult.Failed();
int Status = base.ParmJObj.GetInt("Status", 1);
var flag = classModule.RemoveClassModule(ClassId, Status,out string message);
return flag ? ApiResult.Success(message: message) : ApiResult.Failed(message: message);
}
......@@ -1381,5 +1383,6 @@ namespace Edu.WebApi.Controllers.Course
return retult ? ApiResult.Success("课堂视频更新成功") : ApiResult.Failed("课堂视频更新失败");
}
#endregion
}
}
......@@ -298,15 +298,16 @@ namespace Edu.WebApi.Controllers.Course
}
/// <summary>
/// 删除课程
/// 修改课程状态
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult RemoveCourse()
{
var CourseId = base.ParmJObj.GetInt("CourseId", 0);
var flag = courseModule.RemoveCourseModule(CourseId);
return flag ? ApiResult.Success() : ApiResult.Failed();
int Status = base.ParmJObj.GetInt("Status", 1);
var flag = courseModule.RemoveCourseModule(CourseId, Status,out string message);
return flag ? ApiResult.Success(message: message) : ApiResult.Failed(message: message);
}
/// <summary>
......
......@@ -34,12 +34,23 @@ namespace Edu.WebApi.Controllers.Course
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetClassPruductList() {
public ApiResult GetClassPruductList()
{
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var dmodel = JsonHelper.DeserializeObject<RB_Class_ViewModel>(RequestParm.Msg.ToString());
var dmodel = new RB_Class_ViewModel()
{
School_Id = base.ParmJObj.GetInt("School_Id"),
ClassName = base.ParmJObj.GetStringValue("ClassName"),
StartTime = base.ParmJObj.GetStringValue("StartTime"),
EndTime = base.ParmJObj.GetStringValue("EndTime"),
Teacher_Id = base.ParmJObj.GetInt("Teacher_Id"),
CouseId = base.ParmJObj.GetInt("CouseId"),
Q_CanApply = base.ParmJObj.GetInt("Q_CanApply"),
JoinStartTime = base.ParmJObj.GetStringValue("JoinStartTime"),
JoinEndTime = base.ParmJObj.GetStringValue("JoinEndTime")
};
dmodel.Group_Id = userInfo.Group_Id;
var list = orderModule.GetClassPruductList(pageModel.PageIndex, pageModel.PageSize, out long count, dmodel);
pageModel.Count = Convert.ToInt32(count);
pageModel.PageData = list.Select(x => new
......@@ -56,8 +67,8 @@ namespace Edu.WebApi.Controllers.Course
OpenTime = x.OpenTime.ToString("yyyy年MM月dd日"),
EndOrderTime = x.EndOrderTime.HasValue ? x.EndOrderTime.Value.ToString("yyyy年MM月dd日") : "",
IsCanApply = x.EndOrderTime >= Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")) && x.ClassPersion > x.OrderStudentCount ? 1 : 0,
x.OriginalPrice,
x.SellPrice,
OriginalPrice=x.CourseOriginalPrice,
SellPrice=x.CourseSellPrice,
x.IsStepPrice,
x.ClassPersion,
x.OutRemark,
......@@ -147,9 +158,12 @@ namespace Edu.WebApi.Controllers.Course
x.Refund,
x.DiscountMoney,
x.PlatformTax,
x.OrderType,
DueInMoney = x.PreferPrice - (x.Income - x.Refund + x.PlatformTax + x.DiscountMoney),
x.OrderState,
OrderStateName = x.OrderState.ToName(),
x.OrderSource,
OrderSourceName=x.OrderSource.ToName(),
x.EnterID,
EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "",
x.CommissionMoney,
......@@ -162,6 +176,12 @@ namespace Edu.WebApi.Controllers.Course
x.RectorRemark,
x.DirectorRemark,
x.OfferId,
x.HelpEnterId,
HelpEnterName= UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName,
x.GeneralOccupation,
x.EduOccupation,
x.IsLessPrice,
x.LessPrice,
SaleRemarkList = x.SaleRemarkList.Select(z => new
{
z.Id,
......@@ -216,6 +236,8 @@ namespace Edu.WebApi.Controllers.Course
x.Income,
x.Refund,
x.DiscountMoney,
x.OrderType,
x.PlatformTax,
DueInMoney = x.PreferPrice - (x.Income - x.Refund + x.DiscountMoney),
x.OrderState,
OrderStateName = x.OrderState.ToName(),
......@@ -231,6 +253,12 @@ namespace Edu.WebApi.Controllers.Course
x.RectorRemark,
x.DirectorRemark,
x.OfferId,
x.HelpEnterId,
HelpEnterName = UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName,
x.GeneralOccupation,
x.EduOccupation,
x.IsLessPrice,
x.LessPrice,
SaleRemarkList = x.SaleRemarkList.Select(z => new
{
z.Id,
......@@ -296,6 +324,13 @@ namespace Edu.WebApi.Controllers.Course
SaleRemark=base.ParmJObj.GetStringValue("SaleRemark"),
SourceId=base.ParmJObj.GetInt("SourceId"),
Unit_Price=base.ParmJObj.GetDecimal("Unit_Price"),
HelpEnterId=base.ParmJObj.GetInt("HelpEnterId"),
GeneralOccupation=base.ParmJObj.GetStringValue("GeneralOccupation"),
EduOccupation=base.ParmJObj.GetStringValue("EduOccupation"),
IsLessPrice=base.ParmJObj.GetInt("IsLessPrice"),
LessPrice=base.ParmJObj.GetDecimal("LessPrice"),
OrderNature=(OrderNatureEnum)base.ParmJObj.GetInt("OrderNature"),
OldPreferPrice=base.ParmJObj.GetDecimal("OldPreferPrice")
};
if (demodel.OrderType== OrderTypeEnum.CourseOrder &&demodel.ClassId <= 0)
{
......@@ -401,6 +436,14 @@ namespace Edu.WebApi.Controllers.Course
model.SaleRemark,
model.OrderType,
model.SourceId,
model.HelpEnterId,
model.GeneralOccupation,
model.EduOccupation,
model.IsLessPrice,
model.LessPrice,
model.OrderNature,
OrderNatureName=model.OrderNature.ToName(),
model.OldPreferPrice,
},
StepPriceList = list.Select(x => new
{
......@@ -970,6 +1013,8 @@ namespace Edu.WebApi.Controllers.Course
DueInMoney = x.PreferPrice - (x.Income - x.Refund + x.PlatformTax + x.DiscountMoney),
x.OrderState,
OrderStateName = x.OrderState.ToName(),
x.OrderSource,
OrderSourceName = x.OrderSource.ToName(),
x.EnterID,
EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "",
x.CommissionMoney,
......@@ -982,6 +1027,15 @@ namespace Edu.WebApi.Controllers.Course
RectorRemark = x?.RectorRemark ?? "",
DirectorRemark = x?.DirectorRemark ?? "",
x.OfferId,
x.HelpEnterId,
HelpEnterName = UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName,
x.GeneralOccupation,
x.EduOccupation,
x.IsLessPrice,
x.LessPrice,
x.OrderNature,
OrderNatureName = x.OrderNature.ToName(),
x.OldPreferPrice,
SaleRemarkList = x?.SaleRemarkList.Select(z => new
{
z.Id,
......@@ -1096,6 +1150,8 @@ namespace Edu.WebApi.Controllers.Course
DueInMoney = x.PreferPrice - (x.Income - x.Refund + x.PlatformTax + x.DiscountMoney),
x.OrderState,
OrderStateName = x.OrderState.ToName(),
x.OrderSource,
OrderSourceName = x.OrderSource.ToName(),
x.EnterID,
EnterName = UserReidsCache.GetUserLoginInfo(x.EnterID)?.AccountName ?? "",
x.CommissionMoney,
......@@ -1108,6 +1164,15 @@ namespace Edu.WebApi.Controllers.Course
RectorRemark = x?.RectorRemark ?? "",
DirectorRemark = x?.DirectorRemark ?? "",
x.OfferId,
x.HelpEnterId,
HelpEnterName = UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName,
x.GeneralOccupation,
x.EduOccupation,
x.IsLessPrice,
x.LessPrice,
x.OrderNature,
OrderNatureName = x.OrderNature.ToName(),
x.OldPreferPrice,
SaleRemarkList = x?.SaleRemarkList.Select(z => new
{
z.Id,
......@@ -1231,6 +1296,15 @@ namespace Edu.WebApi.Controllers.Course
x.RectorRemark,
x.DirectorRemark,
x.OfferId,
x.HelpEnterId,
HelpEnterName = UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName,
x.GeneralOccupation,
x.EduOccupation,
x.IsLessPrice,
x.LessPrice,
x.OrderNature,
OrderNatureName = x.OrderNature.ToName(),
x.OldPreferPrice,
SaleRemarkList = x.SaleRemarkList.Select(z => new
{
z.Id,
......@@ -1264,7 +1338,7 @@ namespace Edu.WebApi.Controllers.Course
z.Id,
z.GuestName,
z.GuestState
})
}),
})
};
return ApiResult.Success("", pageModel);
......@@ -1341,6 +1415,15 @@ namespace Edu.WebApi.Controllers.Course
x.RectorRemark,
x.DirectorRemark,
x.OfferId,
x.HelpEnterId,
HelpEnterName = UserReidsCache.GetUserLoginInfo(x.HelpEnterId)?.AccountName,
x.GeneralOccupation,
x.EduOccupation,
x.IsLessPrice,
x.LessPrice,
x.OrderNature,
OrderNatureName = x.OrderNature.ToName(),
x.OldPreferPrice,
SaleRemarkList = x.SaleRemarkList.Select(z => new
{
z.Id,
......
using Edu.Cache.User;
using Edu.Common.API;
using Edu.Common.Enum.Duty;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Duty;
using Edu.Module.Duty;
......@@ -37,7 +38,16 @@ namespace Edu.WebApi.Controllers.Duty
QStartDate = base.ParmJObj.GetStringValue("StartDate"),
QEndDate = base.ParmJObj.GetStringValue("EndDate"),
IsFinish=base.ParmJObj.GetInt("IsFinish"),
QAttendanceStatus=base.ParmJObj.GetInt("QAttendanceStatus")
};
if (!string.IsNullOrEmpty(base.ParmJObj.GetStringValue("QDutyStatus")))
{
query.QDutyStatus = base.ParmJObj.GetInt("QDutyStatus", -1);
}
else
{
query.QDutyStatus = -1;
}
var dutyManList = Common.Plugin.JsonHelper.DeserializeObject<List<int>>(base.ParmJObj.GetStringValue("EmployeeIds"));
if (dutyManList != null && dutyManList.Count > 0)
{
......@@ -78,10 +88,10 @@ namespace Edu.WebApi.Controllers.Duty
qitem.StatusStr,
qitem.CheckTimeStr,
qitem.CheckLateTime,
CheckLateTimeStr = (qitem.CheckLateTime > 0 ? string.Format("[迟到{0}分钟]", qitem.CheckLateTime) : "[正常]"),
CheckLateTimeStr = (qitem.CheckTimeStr!="未打卡"?( qitem.CheckLateTime > 0 ? string.Format("[迟到{0}分钟]", qitem.CheckLateTime) : "[正常]"):""),
qitem.FinishTimeStr,
qitem.FinishLateTime,
FinishLateTimeStr = (qitem.FinishLateTime > 0 ? string.Format("[早退{0}分钟]", qitem.FinishLateTime) : "[正常]"),
FinishLateTimeStr = (qitem.FinishTimeStr!="未打卡"?(qitem.FinishLateTime > 0 ? string.Format("[早退{0}分钟]", qitem.FinishLateTime) : "[正常]"):""),
})
});
}
......@@ -118,47 +128,31 @@ namespace Edu.WebApi.Controllers.Duty
//当前班次
var currentModel = new RB_Duty_PlanDetails_ViewModel();
//上一个班次(交班)
var previousModel = new RB_Duty_PlanDetails_ViewModel();
var previousModel = new List<RB_Duty_PlanDetails_ViewModel>();
//下一个班次(接班)
var nextModel = new RB_Duty_PlanDetails_ViewModel();
//当前值班人员索引
int currentIndex = 0;
if (item.PlanDetails != null && item.PlanDetails.Count > 0)
{
currentIndex = dutyPlanModule.CalcCurrentDutyManIndexModule_V2(item);
//上一个班次索引
int previousIndex = currentIndex - 1;
//下一个班次索引
int nextIndex = currentIndex + 1;
//当前班次
currentModel = item.PlanDetails[currentIndex];
//上一个班次
if (previousIndex >= 0)
{
previousModel = item.PlanDetails[previousIndex];
}
//下一个班次
if (nextIndex < item.PlanDetails.Count)
{
nextModel = item.PlanDetails[nextIndex];
}
}
var nextModel = new List<RB_Duty_PlanDetails_ViewModel>();
var dic = dutyPlanModule.CalcCurrentDutyManIndexModule_V3(item);
//当前班次
currentModel = dic["current"].FirstOrDefault();
string jiaoBanMan = "";//交班人
string jieBanMan = "";//接班人
if (nextModel != null&&nextModel.Id>0)
if (dic["next"] != null&& dic["next"].Count>0)
{
jieBanMan = nextModel?.DutyManName ?? "";
jieBanMan = string.Join(",", dic["next"].Select(qitem => qitem.DutyManName));
}
if (previousModel!=null && previousModel.Id>0)
if (dic["previous"] != null && dic["previous"].Count>0)
{
jiaoBanMan = previousModel?.DutyManName ?? "";
jiaoBanMan = string.Join(",", dic["previous"].Select(qitem => qitem.DutyManName)); ;
}
DutyStatusEnum NewStatus = Common.Enum.Duty.DutyStatusEnum.NoStart;
if (currentModel.Status == Common.Enum.Duty.DutyStatusEnum.NoStart)
{
currentModel.Status= dutyPlanModule.CalcDutyPlanStatusModule(item.Date, currentModel.StartTime, currentModel.EndTime);
NewStatus = dutyPlanModule.CalcDutyPlanStatusModule(item.Date, currentModel.StartTime, currentModel.EndTime);
}
else
{
NewStatus = currentModel.Status;
}
result.Add(new
{
......@@ -169,6 +163,7 @@ namespace Edu.WebApi.Controllers.Duty
currentModel.ShiftName,
currentModel.StartTime,
currentModel.EndTime,
currentModel.DutyMan,
PlanList = currentModel?.WorkContentList ?? new List<RB_Duty_PlanWork_ViewModel>(),
currentModel.BurstCount,
currentModel.HandoverCount,
......@@ -177,14 +172,15 @@ namespace Edu.WebApi.Controllers.Duty
item.CreateByName,
currentModel.Status,
currentModel.StatusStr,
NewStatus,
item.TotalBurstCount,
item.TotalHandoverCount,
currentModel.CheckTimeStr,
currentModel.CheckLateTime,
CheckLateTimeStr = (currentModel.CheckLateTime > 0 ? string.Format("[迟到{0}分钟]", currentModel.CheckLateTime) : "[正常]"),
CheckLateTimeStr = (currentModel.CheckTimeStr != "未打卡" ? (currentModel.CheckLateTime > 0 ? string.Format("[迟到{0}分钟]", currentModel.CheckLateTime) : "[正常]") : ""),
currentModel.FinishTimeStr,
currentModel.FinishLateTime,
FinishLateTimeStr = (currentModel.FinishLateTime > 0 ? string.Format("[早退{0}分钟]", currentModel.FinishLateTime) : "[正常]"),
FinishLateTimeStr = (currentModel.FinishTimeStr != "未打卡" ? (currentModel.FinishLateTime > 0 ? string.Format("[早退{0}分钟]", currentModel.FinishLateTime) : "[正常]") : ""),
});
}
pageModel.Count = rowsCount;
......@@ -260,7 +256,13 @@ namespace Edu.WebApi.Controllers.Duty
{
var Id = base.ParmJObj.GetInt("Id");
var Shift = base.ParmJObj.GetInt("Shift");
var obj = dutyPlanModule.OnDutyModule(Id, Shift, base.UserInfo);
int UserId = base.UserInfo.Id;
int DutyMan = base.ParmJObj.GetInt("DutyMan");
if (DutyMan > 0)
{
UserId = DutyMan;
}
var obj = dutyPlanModule.OnDutyModule(Id, Shift, UserId);
return ApiResult.Success(data: obj);
}
......@@ -273,7 +275,13 @@ namespace Edu.WebApi.Controllers.Duty
{
var Id = base.ParmJObj.GetInt("Id");
var Shift = base.ParmJObj.GetInt("Shift");
var obj = dutyPlanModule.OnDutyModule(Id, Shift, base.UserInfo,isQueryWork:true);
int UserId = base.UserInfo.Id;
int DutyMan = base.ParmJObj.GetInt("DutyMan");
if (DutyMan > 0)
{
UserId = DutyMan;
}
var obj = dutyPlanModule.OnDutyModule(Id, Shift, UserId, isQueryWork:true);
return ApiResult.Success(data: obj);
}
......@@ -299,8 +307,8 @@ namespace Edu.WebApi.Controllers.Duty
var Id = base.ParmJObj.GetInt("Id");
var Shift = base.ParmJObj.GetInt("Shift");
var Status = base.ParmJObj.GetInt("Status");
var flag = dutyPlanModule.DutyCheckModule(Id, Shift, base.UserInfo.Id, Status);
return flag ? ApiResult.Success() : ApiResult.Failed();
var flag = dutyPlanModule.DutyCheckModule(Id, Shift, base.UserInfo.Id, Status,out string message);
return flag ? ApiResult.Success() : ApiResult.Failed(message: message);
}
/// <summary>
......
......@@ -269,6 +269,7 @@ namespace Edu.WebApi.Controllers.StudyAbroad
item.ManagerOpinion,
ManagerAuditTime = Common.ConvertHelper.FormatTime(item.ManagerAuditTime),
item.ImgCover,
item.Status,
});
}
pageModel.Count = rowsCount;
......@@ -511,8 +512,8 @@ namespace Edu.WebApi.Controllers.StudyAbroad
{
var Id = base.ParmJObj.GetInt("Id", 0);
var Status = base.ParmJObj.GetInt("Status", 0);
var flag = studyAbroadModule.RemoveStudyAbroadModule(Id, Status);
return flag ? ApiResult.Success() : ApiResult.Failed();
var flag = studyAbroadModule.RemoveStudyAbroadModule(Id, Status,out string message);
return flag ? ApiResult.Success(message: message) : ApiResult.Failed(message: message);
}
/// <summary>
......
......@@ -41,6 +41,10 @@ namespace Edu.WebApi.Controllers.User
/// 公用处理类
/// </summary>
private readonly PublicModule publicModule = new PublicModule();
/// <summary>
/// 教师处理类
/// </summary>
private readonly TeacherModule teacherModule = new TeacherModule();
[HttpGet]
[HttpPost]
......@@ -345,5 +349,150 @@ namespace Edu.WebApi.Controllers.User
return ApiResult.Success(data: obj);
}
}
/// <summary>
/// 人脸识别登录
/// </summary>
/// <returns></returns>
[HttpGet]
[HttpPost]
[AllowAnonymous]
public ApiResult LoginTeacherById()
{
JObject jobj = JObject.Parse(RequestParm.Msg.ToString());
int tId = jobj.GetInt("TId");
int classRoomId = jobj.GetInt("ClassRoomId", 0);
if (classRoomId == 0)
{
return ApiResult.Failed("请传入教室id");
}
var modelTeacher = teacherModule.GetTeacherByTId(tId, 0);
if (modelTeacher == null)
{
return ApiResult.Failed("老师不存在");
}
var model = accountModule.GetAccountListExtModule(new RB_Account_ViewModel()
{
AccountId = tId,
AccountType = AccountTypeEnum.Teacher
})?.FirstOrDefault();
if (model.Status == Common.Enum.DateStateEnum.Delete)
{
return ApiResult.Failed(message: $"此账号【{ model.Account }】已禁用,如需使用请联系管理员!");
}
var list = new Module.Course.ClassModule().GetClassTimeByRoomId(classRoomId, model.Group_Id);
var tempList = list.OrderBy(x => x.NewEndPlanDateTime).Where(x => x.TeacherId == model.AccountId && x.NewPlanDateTime.HasValue && System.DateTime.Now >= x.NewPlanDateTime.Value.AddMinutes(-10) && x.NewEndPlanDateTime.HasValue && System.DateTime.Now < x.NewEndPlanDateTime.Value.AddMinutes(30));
if (tempList == null || !tempList.Any())
{
list = new Module.Course.ClassModule().GetClassTimeByTId(tId, model.Group_Id);
tempList = list.OrderBy(x => x.NewEndPlanDateTime).Where(x => x.TeacherId == model.AccountId && x.NewPlanDateTime.HasValue && System.DateTime.Now >= x.NewPlanDateTime.Value.AddMinutes(-10) && x.NewEndPlanDateTime.HasValue && System.DateTime.Now < x.NewEndPlanDateTime.Value);
if (tempList == null || !tempList.Any())
{
tempList = list.OrderBy(x => x.NewEndPlanDateTime).Where(x => x.TeacherId == model.AccountId && x.NewEndPlanDateTime.HasValue && System.DateTime.Now < x.NewEndPlanDateTime.Value && x.NewEndPlanDateTime.HasValue && System.DateTime.Now.ToString("yyyy-MM-dd") == x.NewEndPlanDateTime.Value.ToString("yyyy-MM-dd"));
}
var result = new
{
TeacherName = modelTeacher.FirstOrDefault()?.TeacherName,
tempList = tempList.Select(x => new { x.RoomName, x.TeacherName, NewPlanDateTime = x.NewPlanDateTime.HasValue ? x.NewPlanDateTime.Value.ToString("yyyy-MM-dd HH:mm") : "", NewEndPlanDateTime = x.NewEndPlanDateTime.HasValue ? x.NewEndPlanDateTime.Value.ToString("yyyy-MM-dd HH:mm") : "" })
};
return ApiResult.Failed(message: $"本教室没有找到您的课", data: result);
}
else
{
var classModel = tempList.OrderBy(x => x.NewPlanDateTime).FirstOrDefault();
var extModel = new Module.Course.ClassRoomModule().GetClassRoomModule(classModel.ClassRoomId);
var classInfo = new
{
ClassName = classModel.ClassName ?? "",
CourseName = classModel.CourseName ?? "",
ClassTime = classModel.NewPlanDateTime.HasValue ? classModel.NewPlanDateTime.Value.ToString("yyyy-MM-dd HH:mm") : "",
ClassHours = new Module.Course.ClassModule().GetNowClassHours(classModel),
IsLessPlan = classModel.LessonPlanId > 0 ? 1 : 0,
RoomPicList = string.IsNullOrWhiteSpace(extModel.RoomPic) ? new List<string>() : JsonHelper.DeserializeObject<List<string>>(extModel.RoomPic),
SuiPaiList = string.IsNullOrWhiteSpace(classModel.SuiPai) ? new List<string>() : JsonHelper.DeserializeObject<List<string>>(classModel.SuiPai),
classModel.ClassId,
classModel.ClassTimeId,
classModel.ClassPlanId,
classModel.ClassRoomId,
classModel.ClassStatus,
ClassEndTime = classModel.NewEndPlanDateTime.HasValue ? classModel.NewEndPlanDateTime.Value.ToString("HH:mm") : "",
};
//生成教育token
IUserInfoToken eduUserInfo = new EduUserInfoToken()
{
requestFrom = Common.Enum.ApiRequestFromEnum.WebAdmin,
uid = model.Id.ToString()
};
//生成ERP-Token
IUserInfoToken erpUserInfo = new ErpTokenUserInfo()
{
requestFrom = Common.Enum.ApiRequestFromEnum.ERP,
uid = model.Id.ToString(),
groupId = model.Group_Id
};
string token = WebApiTokenHelper.CreateToken(Common.GlobalKey.JWT_User_Key, eduUserInfo);
string erpToken = WebApiTokenHelper.CreateToken(Common.GlobalKey.JWT_ERP_User_Key, erpUserInfo);
var treeList = menuModule.GetPostMenuTreeModule(new Model.ViewModel.System.RB_Menu_ViewModel()
{
MenuType = 2
}, out List<RB_Menu_ViewModel> userCenterList, postIds: model.Post_Id.ToString());
//获取功能权限列表
var actionList = menuModule.GetPostMenuFunctionListModule(model.Post_Id.ToString());
//上传配置
var uploadConfig = publicModule.GetFileStoreList(new Model.Public.RB_File_Store() { Group_Id = model.Group_Id, IsDefault = 1 })?.FirstOrDefault();
UserInfo obj = new UserInfo
{
Id = model.Id,
AccountId = model.AccountId,
UserMobile = model.Account,
AccountType = model.AccountType,
Group_Id = model.Group_Id,
GroupName = model.GroupName,
School_Id = model.School_Id,
AccountName = model.AccountName,
SchoolName = model.SchoolName,
Token = token,
ErpToken = erpToken,
MenuList = treeList,
UserCenterList = userCenterList,
GroupLogo = model.GroupLogo,
UserIcon = model.UserIcon,
ApiRequestFromEnum = Common.Enum.ApiRequestFromEnum.WebAdmin,
DeptId = model.Dept_Id,
DeptName = model.DeptName,
PostId = model.Post_Id,
PostName = model.PostName,
ActionMenuList = actionList?.Select(qitem => new { qitem.FunctionCode, qitem.FunctionName, qitem.MenuName, qitem.MenuUrl }),
UploadConfig = new
{
uploadConfig?.Bucket,
uploadConfig?.StoreType,
uploadConfig?.Region,
uploadConfig?.CustomDomain,
uploadConfig?.SecretKey,
uploadConfig?.SecretId,
uploadConfig?.UploadDomain
},
ClassInfo = classInfo,
StudyAbroadObj = publicModule.GetStudyAbroadListModule()
};
UserReidsCache.UserInfoSet(Cache.CacheKey.User_Login_Key + model.Id, obj, Common.Config.JwtExpirTime);
return ApiResult.Success(data: obj);
}
}
}
}
\ No newline at end of file
......@@ -12,6 +12,7 @@ using Edu.Model.ViewModel.User;
using Edu.Module.Log;
using Edu.Module.User;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
......@@ -262,12 +263,12 @@ namespace Edu.WebApi.Controllers.User
Remark = base.ParmJObj.GetStringValue("Remark"),
SAddress = base.ParmJObj.GetStringValue("SAddress"),
SDomain = base.ParmJObj.GetStringValue("SDomain"),
SId =base.ParmJObj.GetInt("SId"),
SId = base.ParmJObj.GetInt("SId"),
SLinkTel = base.ParmJObj.GetStringValue("SLinkTel"),
SLogo=base.ParmJObj.GetStringValue("SLogo"),
SLogo = base.ParmJObj.GetStringValue("SLogo"),
SName = base.ParmJObj.GetStringValue("SName"),
Status=(DateStateEnum)base.ParmJObj.GetInt("Status"),
ContractTitle=base.ParmJObj.GetStringValue("ContractTitle"),
Status = (DateStateEnum)base.ParmJObj.GetInt("Status"),
ContractTitle = base.ParmJObj.GetStringValue("ContractTitle"),
};
extModel.CreateBy = base.UserInfo.Id;
extModel.CreateTime = DateTime.Now;
......@@ -359,7 +360,7 @@ namespace Edu.WebApi.Controllers.User
{
var query = new RB_Teacher_ViewModel()
{
IsQLeave=base.ParmJObj.GetInt("IsQLeave")
IsQLeave = base.ParmJObj.GetInt("IsQLeave")
};
query.Group_Id = base.UserInfo.Group_Id;
query.School_Id = base.UserInfo.School_Id;
......@@ -390,8 +391,8 @@ namespace Edu.WebApi.Controllers.User
Dept_Id = base.ParmJObj.GetInt("Dept_Id"),
Post_Id = base.ParmJObj.GetInt("Post_Id"),
BaseStuNum = base.ParmJObj.GetInt("BaseStuNum"),
BaseHourFee=base.ParmJObj.GetDecimal("BaseHourFee"),
AuditStatus= AccountStatusEnum.Pass
BaseHourFee = base.ParmJObj.GetDecimal("BaseHourFee"),
AuditStatus = AccountStatusEnum.Pass
};
extModel.TeachTag = base.ParmJObj.GetStringValue("TeachTag");
extModel.CreateBy = base.UserInfo.Id;
......@@ -399,7 +400,7 @@ namespace Edu.WebApi.Controllers.User
extModel.UpdateBy = base.UserInfo.Id;
extModel.UpdateTime = DateTime.Now;
extModel.Group_Id = base.UserInfo.Group_Id;
bool flag = teacherModule.SetTeacherModule(extModel, isUpdateBasic: true);
bool flag = teacherModule.SetTeacherModule_V2(extModel, isUpdateBasic: true);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
......@@ -452,6 +453,31 @@ namespace Edu.WebApi.Controllers.User
var flag = teacherModule.ReApplyTeacherModule(TId);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 获取讲师列表
/// </summary>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public ApiResult GetAllTeacherList()
{
var query = new RB_Teacher_ViewModel()
{
IsQLeave = base.ParmJObj.GetInt("IsQLeave", 0),
Group_Id = base.ParmJObj.GetInt("Group_Id", 100000)
};
var list = teacherModule.GetTeacherListModule(query);
var result = list.Select(x => new
{
x.TeacherHead,
x.TId
});
return ApiResult.Success(data: result);
}
#endregion
#region 助教管理
......@@ -514,15 +540,15 @@ namespace Edu.WebApi.Controllers.User
AssistIntro = base.ParmJObj.GetStringValue("AssistIntro"),
Dept_Id = base.ParmJObj.GetInt("Dept_Id"),
Post_Id = base.ParmJObj.GetInt("Post_Id"),
AuditStatus= AccountStatusEnum.Pass
AuditStatus = AccountStatusEnum.Pass
};
extModel.CreateBy = base.UserInfo.Id;
extModel.CreateTime = DateTime.Now;
extModel.UpdateBy = base.UserInfo.Id;
extModel.UpdateTime = DateTime.Now;
extModel.Group_Id = base.UserInfo.Group_Id;
bool flag = assistModule.SetAssistModule(extModel,isUpdateBasic:true);
bool flag = assistModule.SetAssistModule_V2(extModel);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
......@@ -730,7 +756,7 @@ namespace Edu.WebApi.Controllers.User
qitem.Email,
EmAccountId = qitem.Id,
qitem.DirectSupervisor,
DirectSupervisorName= qitem.DirectSupervisor>0?base.GetUserInfo(qitem.DirectSupervisor)?.AccountName??"":"",
DirectSupervisorName = qitem.DirectSupervisor > 0 ? base.GetUserInfo(qitem.DirectSupervisor)?.AccountName ?? "" : "",
});
return ApiResult.Success(data: pageModel);
}
......@@ -775,9 +801,9 @@ namespace Edu.WebApi.Controllers.User
Education = (EducationEnum)base.ParmJObj.GetInt("Education"),
School_Id = base.ParmJObj.GetInt("School_Id"),
Email = base.ParmJObj.GetStringValue("Email"),
DirectSupervisor=base.ParmJObj.GetInt("DirectSupervisor"),
Account=base.ParmJObj.GetStringValue("Account"),
Password=base.ParmJObj.GetStringValue("Password"),
DirectSupervisor = base.ParmJObj.GetInt("DirectSupervisor"),
Account = base.ParmJObj.GetStringValue("Account"),
Password = base.ParmJObj.GetStringValue("Password"),
};
if (!string.IsNullOrEmpty(extModel.Password.Trim()))
{
......@@ -905,7 +931,7 @@ namespace Edu.WebApi.Controllers.User
[HttpPost]
public ApiResult GetEmployee()
{
var Id =0;
var Id = 0;
var AccountId = base.ParmJObj.GetInt("AccountId", 0);
var AccountType = base.ParmJObj.GetInt("AccountType", 0);
var extModel = employeeModule.GetEmployeeModule(Id, AccountId, AccountType);
......@@ -958,14 +984,17 @@ namespace Edu.WebApi.Controllers.User
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetEmployeeDirectSupervisor() {
public ApiResult SetEmployeeDirectSupervisor()
{
var parms = ParmJObj;
int UserId = parms.GetInt("UserId", 0);
int DirectSupervisor = parms.GetInt("DirectSupervisor", 0);
if (UserId <= 0) {
if (UserId <= 0)
{
return ApiResult.ParamIsNull("请传递用户id");
}
if (DirectSupervisor <= 0) {
if (DirectSupervisor <= 0)
{
return ApiResult.ParamIsNull("请传递直接主管id");
}
bool flag = employeeModule.SetEmployeeDirectSupervisor(UserId, DirectSupervisor);
......@@ -1308,7 +1337,7 @@ namespace Edu.WebApi.Controllers.User
var query = new RB_Post_ViewModel()
{
Group_Id = base.UserInfo.Group_Id,
PostName= base.ParmJObj.GetStringValue("PostName")
PostName = base.ParmJObj.GetStringValue("PostName")
};
var list = postModule.GetPostListModule(query);
return ApiResult.Success(data: list);
......@@ -1325,7 +1354,7 @@ namespace Edu.WebApi.Controllers.User
var query = new RB_Post_ViewModel()
{
Group_Id = base.UserInfo.Group_Id,
QDeptIds=base.ParmJObj.GetStringValue("QDeptIds")
QDeptIds = base.ParmJObj.GetStringValue("QDeptIds")
};
var list = postModule.GetDeptPostListModule(query);
return ApiResult.Success(data: list);
......@@ -1397,7 +1426,7 @@ namespace Edu.WebApi.Controllers.User
QDeptIds = base.ParmJObj.GetStringValue("QDeptIds"),
EmployeeName = base.ParmJObj.GetStringValue("EmployeeName"),//姓名
AccountTypeStr = base.ParmJObj.GetStringValue("AccountTypeStr"),//人员类型【逗号分割】
IsLeave=base.ParmJObj.GetInt("IsLeave"),
IsLeave = base.ParmJObj.GetInt("IsLeave"),
};
query.Group_Id = base.UserInfo.Group_Id;
var list = employeeModule.GetEmployeeListModule(query);
......
using Edu.Common.Plugin;
using Edu.Module.Duty;
using System;
using System.IO;
using System.Threading;
......@@ -7,33 +8,44 @@ namespace Edu.WebApi.Timers
{
public class TimerJobj
{
private static DutyPlanModule dutyPlanModule = AOP.AOPHelper.CreateAOPObject<DutyPlanModule>();
static System.Timers.Timer timer1; //计时器
static System.Timers.Timer timer2;//定期处理未值班数据
public static void RunTimer()
{
timer1 = new System.Timers.Timer();
timer1.Interval = 1000 * (60 * 60) * 3; //60分钟
timer1.Elapsed += new System.Timers.ElapsedEventHandler(ClearFile);
timer1.Enabled = true;
timer2 = new System.Timers.Timer();
timer2.Interval = (1000 * 60) * (1 * 60); //1小时执行一次
timer2.Elapsed += new System.Timers.ElapsedEventHandler(DealDuty);
timer2.Enabled = true;
}
public static void RunStop()
public static void RunStop()
{
timer1.Enabled = false;
timer2.Enabled = false;
}
/// <summary>
/// 防止重置
/// </summary>
private static int inTimer = 0;
private static int inTimer2 = 0;
/// <summary>
/// 清理文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void ClearFile(object sender, System.Timers.ElapsedEventArgs e) {
public static void ClearFile(object sender, System.Timers.ElapsedEventArgs e)
{
if (Interlocked.Exchange(ref inTimer, 1) == 0)
{
string rootBook = AppDomain.CurrentDomain.BaseDirectory;
......@@ -71,5 +83,55 @@ namespace Edu.WebApi.Timers
Interlocked.Exchange(ref inTimer, 0);
}
}
/// <summary>
/// 处理值班数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void DealDuty(object sender, System.Timers.ElapsedEventArgs e)
{
if (Interlocked.Exchange(ref inTimer2, 1) == 0)
{
var list = dutyPlanModule.GetDutyPlanPageModule(1, 20, out _, new Model.ViewModel.Duty.RB_Duty_Plan_ViewModel()
{
QDutyStatus = 0,
QEndDate = Common.ConvertHelper.FormatDate(DateTime.Now.AddDays(1))
});
if (list != null && list.Count > 0)
{
foreach (var item in list)
{
foreach (var subItem in item.PlanDetails)
{
var endTime = Convert.ToDateTime((Common.ConvertHelper.FormatDate(item.Date) + " " + subItem.EndTime)).AddHours(2);
if (subItem.Status== Common.Enum.Duty.DutyStatusEnum.NoStart && endTime < DateTime.Now)
{
dutyPlanModule.UpdateNoDutyModule(subItem.Id);
}
}
}
}
var list2= dutyPlanModule.GetDutyPlanPageModule(1, 20, out _, new Model.ViewModel.Duty.RB_Duty_Plan_ViewModel()
{
QDutyStatus = 1,
QEndDate = Common.ConvertHelper.FormatDate(DateTime.Now)
});
foreach (var item in list2)
{
foreach (var subItem in item.PlanDetails)
{
var endTime = Convert.ToDateTime((Common.ConvertHelper.FormatDate(item.Date) + " " + subItem.EndTime)).AddHours(2);
if (subItem.Status == Common.Enum.Duty.DutyStatusEnum.DutyIng && endTime < DateTime.Now)
{
dutyPlanModule.UpdateDutyFinishedModule(subItem.Id);
}
}
}
Interlocked.Exchange(ref inTimer2, 0);
}
}
}
}
......@@ -63,6 +63,7 @@
//消息推送AppId
"PushAppId": "JiaHeJiaoYu",
//是否推送消息
"IsPushMessage": "1"
"IsPushMessage": "1",
//超过下班时间60分钟不能打卡
"MoreThanMinutes": 60
}
\ No newline at end of file
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