Commit f9c6cb4f authored by 吴春's avatar 吴春

解决冲突

parents 059b18d3 3b8c5d00
......@@ -22,4 +22,40 @@ namespace Edu.Common.Enum.Sale
[EnumField("留学就业订单")]
StudyabroadOrder = 2,
}
/// <summary>
/// 订单报入类型
/// </summary>
public enum OrderJoinTypeEnum
{
/// <summary>
/// 正常报入
/// </summary>
[EnumField("正常报入")]
Normal = 1,
/// <summary>
/// 插班报入
/// </summary>
[EnumField("插班报入")]
InsertClass = 2,
/// <summary>
/// 续费订单
/// </summary>
[EnumField("续费订单")]
RenewOrder = 3,
/// <summary>
/// 转班订单
/// </summary>
[EnumField("转班订单")]
TransOrder = 4,
/// <summary>
/// 分拆订单
/// </summary>
[EnumField("分拆订单")]
SplitOrder = 5,
}
}
......@@ -210,11 +210,6 @@ namespace Edu.Model.Entity.Course
/// </summary>
public int StartClassHours { get; set; }
/// <summary>
/// 是否插班报入(1是)
/// </summary>
public int IsChaBan { get; set; }
/// <summary>
/// 销售返佣类型 0百分比 1固定值
/// </summary>
......@@ -279,9 +274,29 @@ namespace Edu.Model.Entity.Course
/// </summary>
public DateTime? LXConfirmDate { get; set; }
///
///<summary>
/// 是否续班订单(1-是)
/// </summary>
public int IsRenewOrder { get; set; }
/// <summary>
/// 订单报入类型(1-正常报入,2-插班报入,3-续费订单,4-转班订单,5-分拆订单)
/// </summary>
public OrderJoinTypeEnum JoinType { get; set; }
/// <summary>
/// 原订单报入类型(1-正常报入,2-插班报入,3-续费订单,4-转班订单,5-分拆订单)
/// </summary>
public OrderJoinTypeEnum TargetJoinType { get; set; }
/// <summary>
/// 原订单编号
/// </summary>
public int SourceOrderId { get; set; }
/// <summary>
/// 目标订单编号
/// </summary>
public int TargetOrderId { get; set; }
}
}
......@@ -32,7 +32,7 @@ namespace Edu.Model.Entity.Course
public string GuestName { get; set; }
/// <summary>
/// 状态 1正常 2退学 3-申请中,4-驳回申请,5-停课,6-停课申请中,7-完结的订单
/// 状态 1正常 2退学 3-申请中,4-驳回申请,5-停课,6-停课申请中,7-完结的订单,8-转班申请中
/// </summary>
public int GuestState { get; set; }
......
......@@ -80,5 +80,15 @@ namespace Edu.Model.Entity.EduTask
/// 审核状态(见枚举)
/// </summary>
public Edu.Common.Enum.EduTask.EduTaskRrocessStatus VerifyStatus { get; set; }
/// <summary>
/// 是否生成相应单据
/// </summary>
public int IsCreate { get; set; }
/// <summary>
/// 生效时间
/// </summary>
public DateTime? EffectiveDate { get; set; }
}
}
......@@ -80,6 +80,11 @@ namespace Edu.Model.Entity.EduTask
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 转出本班时间
/// </summary>
public DateTime OutTime { get; set; }
}
}
......@@ -87,6 +87,9 @@ namespace Edu.Model.ViewModel.Course
case 3: str = "申请退学中"; break;
case 4: str = "驳回申请"; break;
case 5: str = "停课"; break;
case 6: str = "停课申请中"; break;
case 7: str = "完结"; break;
case 8: str = "转班申请中"; break;
}
return str;
}
......
......@@ -124,6 +124,11 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public int ClassMinutes { get; set; }
/// <summary>
/// 课时数
/// </summary>
public decimal TimeHour { get; set; }
/// <summary>
/// 完成情况
/// </summary>
......
......@@ -84,6 +84,8 @@ namespace Edu.Model.ViewModel.Course
case 4: str = "驳回申请"; break;
case 5: str = "停课"; break;
case 6: str = "停课申请中"; break;
case 7: str = "完结"; break;
case 8: str = "转班申请中"; break;
}
return str;
}
......@@ -128,16 +130,39 @@ namespace Edu.Model.ViewModel.Course
public int StartClassHours { get; set; }
/// <summary>
/// 是否插班报入(1-是)
/// 订单报入类型(1-正常报入,2-插班报入,3-续费订单,4-转班订单,5-分拆订单)
/// </summary>
public int IsChaBan { get; set; }
public OrderJoinTypeEnum JoinType { get; set; }
/// <summary>
/// 生效时间
/// 原订单报入类型(1-正常报入,2-插班报入,3-续费订单,4-转班订单,5-分拆订单)
/// </summary>
public DateTime EffectTime { get; set; }
public OrderJoinTypeEnum TargetJoinType { get; set; }
/// <summary>
/// 原订单编号
/// </summary>
public int SourceOrderId { get; set; }
/// <summary>
/// 原订单班级名称
/// </summary>
public string SourceClassName { get; set; }
/// <summary>
/// 目标订单编号
/// </summary>
public int TargetOrderId { get; set; }
/// <summary>
/// 目标订单班级名称
/// </summary>
public string TargetClassName { get; set; }
/// <summary>
/// 生效时间
/// </summary>
public DateTime EffectTime { get; set; }
/// <summary>
/// 停课生效时间
......@@ -192,6 +217,8 @@ namespace Edu.Model.ViewModel.Course
/// 已上课次数
/// </summary>
public int Ranks { get; set; }
///<summary>
/// 是否续班订单
/// </summary>
public int IsRenewOrder { get; set; }
......
......@@ -9,6 +9,11 @@ namespace Edu.Model.ViewModel.Course
[Serializable]
public class RB_Order_ViewModel : Model.Entity.Course.RB_Order
{
/// <summary>
/// 订单编号【查询使用】
/// </summary>
public string QOrderIds { get; set; }
/// <summary>
/// 班级ids
/// </summary>
......@@ -197,8 +202,23 @@ namespace Edu.Model.ViewModel.Course
}
/// <summary>
/// 园学员编号【续课使用】
/// 学员编号【续课使用,转班使用】
/// </summary>
public int OldGuestId { get; set; }
/// <summary>
/// 学员编号【转班生成财务单据使用】
/// </summary>
public int NewGuestId { get; set; }
/// <summary>
/// 原班级名称
/// </summary>
public string SourceClassName { get; set; }
/// <summary>
/// 目标班级名称
/// </summary>
public string TargetClassName { get; set; }
}
}
\ No newline at end of file
......@@ -49,6 +49,9 @@ namespace Edu.Model.ViewModel.Course
case 3: str = "申请退学中"; break;
case 4: str = "驳回申请"; break;
case 5: str = "停课"; break;
case 6: str = "停课申请中"; break;
case 7: str = "完结"; break;
case 8: str = "转班申请中"; break;
}
return str;
}
......
......@@ -60,5 +60,10 @@ namespace Edu.Model.ViewModel.EduTask
/// 结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 查询生效时间
/// </summary>
public string QEffectiveDate { get; set; }
}
}
using Edu.AOP.CustomerAttribute;
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course;
......@@ -1296,7 +1297,14 @@ namespace Edu.Module.Course
IsRenew = item.IsRenewOrder,
item.RenewOrderId,
CheckStatus = checkStatus,
item.IsChaBan,
item.JoinType,
JoinTypeName=item.JoinType.ToName(),
item.TargetJoinType,
TargetJoinTypeName=item.TargetJoinType.ToName(),
item.SourceOrderId,
item.SourceClassName,
item.TargetOrderId,
item.TargetClassName,
item.StartClassHours,
item.CourseName,
item.EffectStatus,
......@@ -1462,10 +1470,17 @@ namespace Edu.Module.Course
{
//更新学员完成课时
var completeHours = (oldModel?.FinishClassHours ?? 0) + item.CurrentDeductionHours;
Dictionary<string, object> orderFileds = new Dictionary<string, object>()
{
{nameof(RB_Order_Guest_ViewModel.CompleteHours),completeHours }
};
//已上课时>=有效课时,如果是,修改学员状态为停课,并且备注“有效课时消耗完毕,系统自动停课”
if (completeHours > guestModel.ValidClassHours)
{
orderFileds.Add(nameof(RB_Order_Guest_ViewModel.GuestState), 5);
orderFileds.Add(nameof(RB_Order_Guest_ViewModel.DropOutRemark), "有效课时消耗完毕,系统自动停课");
}
flag = order_GuestRepository.Update(orderFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), item.OrderGuestId));
//缺勤和请假
if (item.CheckStatus == 1 || item.CheckStatus == 2)
......
......@@ -340,7 +340,7 @@ namespace Edu.Module.Course
#region 报价单创建订单
/// <summary>
/// 创建订单
///报价单转订单
/// </summary>
/// <param name="offerId"></param>
/// <param name="detailList"></param>
......@@ -383,7 +383,10 @@ namespace Edu.Module.Course
PreferPrice = item.OriginalPrice,
RectorRemark = "",
Refund = 0,
RenewOrderId = 0,
JoinType= OrderJoinTypeEnum.Normal,
TargetJoinType= OrderJoinTypeEnum.Normal,
TargetOrderId=0,
SourceOrderId=0,
SaleRemark = item.Remark,
TeacherRemark = "",
TradeWay = Common.Enum.Course.TradeWayEnum.OnLine,
......
......@@ -310,6 +310,36 @@ namespace Edu.Module.Course
/// <returns></returns>
[TransactionCallHandler]
public virtual bool SetClassOrderModule(RB_Order_ViewModel demodel, UserInfo userInfo, bool isEditOrder, out string message)
{
return SetClassOrderCommonModule(demodel, userInfo, isEditOrder, out message);
}
/// <summary>
/// 修改老订单
/// </summary>
/// <param name="OrderId"></param>
/// <param name="TargetOrderId"></param>
/// <param name="targetJoinType"></param>
/// <returns></returns>
public bool UpdateOrderJoinTypeModule(int OrderId, int TargetOrderId, OrderJoinTypeEnum targetJoinType)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Order_ViewModel.TargetOrderId),TargetOrderId },
{nameof(RB_Order_ViewModel.TargetJoinType),(int)targetJoinType }
};
return orderRepository.Update(fileds, new WhereHelper(nameof(RB_Order_ViewModel.OrderId), OrderId));
}
/// <summary>
/// 日语培训下单
/// </summary>
/// <param name="demodel"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public virtual bool SetClassOrderCommonModule(RB_Order_ViewModel demodel, UserInfo userInfo, bool isEditOrder, out string message)
{
bool flag = false;
message = "";
......@@ -321,7 +351,7 @@ namespace Edu.Module.Course
message = "班级不存在";
return flag;
}
if (demodel.IsChaBan == 0)
if (demodel.JoinType == OrderJoinTypeEnum.Normal|| demodel.JoinType == OrderJoinTypeEnum.RenewOrder)
{
demodel.CourseId = classModel.CouseId;
}
......@@ -464,7 +494,7 @@ namespace Edu.Module.Course
message = "成交单价不能小于最低价格";
return flag;
}
if (demodel.IsChaBan == 1)
if (demodel.JoinType == OrderJoinTypeEnum.InsertClass)
{
var newPreferPrice = Math.Round(coursePrice / courseModel.ClassHours * (courseModel.ClassHours - demodel.StartClassHours) * demodel.GuestNum, 2);
if (demodel.PreferPrice != (newPreferPrice - demodel.LessPrice))
......@@ -474,6 +504,10 @@ namespace Edu.Module.Course
return flag;
}
}
else if (demodel.JoinType == OrderJoinTypeEnum.TransOrder)
{
//不验证应收
}
else
{
if (demodel.PreferPrice != (demodel.Unit_Price * demodel.GuestNum - demodel.LessPrice))
......@@ -490,11 +524,11 @@ namespace Edu.Module.Course
string SaleRemark = "";
if (demodel.OrderId > 0)
{
if (demodel.IsChaBan == 1)
if (demodel.JoinType == OrderJoinTypeEnum.InsertClass)
{
if (orderModel.EffectStatus != 2)
{
if (demodel.EffectTime < Convert.ToDateTime(Common.ConvertHelper.FormatDate(DateTime.Now)))
if (Convert.ToDateTime(Common.ConvertHelper.FormatTime(demodel.EffectTime)) < Convert.ToDateTime(Common.ConvertHelper.FormatTime(DateTime.Now)))
{
demodel.EffectStatus = 1;
}
......@@ -605,9 +639,9 @@ namespace Edu.Module.Course
}
else
{
if (demodel.IsChaBan == 1)
if (demodel.JoinType == OrderJoinTypeEnum.InsertClass)
{
if (demodel.EffectTime < Convert.ToDateTime(Common.ConvertHelper.FormatDate(DateTime.Now)))
if (Convert.ToDateTime(Common.ConvertHelper.FormatTime(demodel.EffectTime)) < Convert.ToDateTime(Common.ConvertHelper.FormatTime(DateTime.Now)))
{
demodel.EffectStatus = 1;
}
......@@ -694,8 +728,8 @@ namespace Edu.Module.Course
}
#endregion
#region 续课订单 添加学员名单
if (flag && demodel.RenewOrderId > 0 && demodel.OldGuestId>0)
#region 续课订单和转班订单 添加学员名单
if (flag && demodel.OldGuestId > 0)
{
var oldGuestModel = order_GuestRepository.GetEntity(demodel.OldGuestId);
var guestModel = new RB_Order_Guest_ViewModel()
......@@ -705,16 +739,16 @@ namespace Edu.Module.Course
ClassId = demodel.ClassId,
GuestName = oldGuestModel?.GuestName ?? "",
GuestState = 1,
Profession = oldGuestModel?.Profession??"",
Sex = oldGuestModel?.Sex??1,
Profession = oldGuestModel?.Profession ?? "",
Sex = oldGuestModel?.Sex ?? 1,
Age = oldGuestModel?.Age ?? 18,
Mobile = oldGuestModel?.Mobile ?? "",
Basics = oldGuestModel?.Basics,
Education = oldGuestModel?.Education?? GuestEducationEnum.N2,
Education = oldGuestModel?.Education ?? GuestEducationEnum.N2,
GuestSource = demodel.OrderSource,
LearningGoals = oldGuestModel?.LearningGoals??GuestLearningGoalsEnum.Love,
Contact = oldGuestModel?.Contact??"",
ContactMobile = oldGuestModel?.ContactMobile?? "",
LearningGoals = oldGuestModel?.LearningGoals ?? GuestLearningGoalsEnum.Love,
Contact = oldGuestModel?.Contact ?? "",
ContactMobile = oldGuestModel?.ContactMobile ?? "",
Status = 0,
Group_Id = demodel.Group_Id,
School_Id = demodel.School_Id,
......@@ -723,7 +757,7 @@ namespace Edu.Module.Course
UpdateBy = demodel.UpdateBy,
UpdateTime = demodel.UpdateTime,
DropOutRemark = "",
IDCard = oldGuestModel?.IDCard??"",
IDCard = oldGuestModel?.IDCard ?? "",
Domicile = oldGuestModel?.Domicile ?? "",
ContactAddress = oldGuestModel?.ContactAddress ?? "",
SourceId = 0,
......@@ -732,12 +766,21 @@ namespace Edu.Module.Course
VolunteerMajor = oldGuestModel?.VolunteerMajor ?? "",
Price = 0,
StudyRemark = "",
TotalHours = Convert.ToInt32(courseModel.ClassHours),
CompleteHours = 0,
MakeUpHours = 0,
StuIcon = "",
};
if (demodel.RenewOrderId > 0)
{
guestModel.TotalHours = Convert.ToInt32(courseModel.ClassHours);
}
else if (demodel.JoinType == OrderJoinTypeEnum.TransOrder)
{
//原订单学员的剩余课时
guestModel.TotalHours = oldGuestModel.TotalHours - oldGuestModel.CompleteHours;
}
SetOrderGuestInfo(guestModel, out string Nmessage);
demodel.NewGuestId = guestModel.Id;
}
#endregion
}
......@@ -780,6 +823,7 @@ namespace Edu.Module.Course
return flag;
}
/// <summary>
/// 更新订单提成比例
/// </summary>
......@@ -1546,11 +1590,14 @@ namespace Edu.Module.Course
return "转入班级剩余招收人数不足,请核实后再试";
}
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Order_ViewModel.ClassId),classId}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Order_ViewModel.OrderId),
FiledValue=orderId,
OperatorEnum=OperatorEnum.Equal
......@@ -1563,11 +1610,14 @@ namespace Edu.Module.Course
var glist = order_GuestRepository.GetOrderGuestListRepository(new RB_Order_Guest_ViewModel() { OrderId = orderId });
foreach (var item in glist)
{
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
Dictionary<string, object> keyValues1 = new Dictionary<string, object>()
{
{ nameof(RB_Order_Guest_ViewModel.ClassId),classId}
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
List<WhereHelper> wheres1 = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Order_Guest_ViewModel.Id),
FiledValue=item.Id,
OperatorEnum=OperatorEnum.Equal
......@@ -1665,6 +1715,37 @@ namespace Edu.Module.Course
public List<RB_Order_Guest_ViewModel> GetOrderGuestPageModule(int pageIndex, int pageSize, out long count, RB_Order_Guest_ViewModel dmodel)
{
var list = order_GuestRepository.GetOrderGuestPageRepository(pageIndex, pageSize, out count, dmodel);
if (list != null && list.Count > 0)
{
List<RB_Order_ViewModel> sourceTargetList = new List<RB_Order_ViewModel>();
List<int> idList = new List<int>();
var sourceOrderIdList = Common.ConvertHelper.StringToList(string.Join(",", list.Select(x => x.SourceOrderId)));
if (sourceOrderIdList != null && sourceOrderIdList.Count > 0)
{
idList.AddRange(sourceOrderIdList);
}
var targetOrderIdList = Common.ConvertHelper.StringToList(string.Join(",", list.Select(x => x.TargetOrderId)));
if (targetOrderIdList != null && targetOrderIdList.Count > 0)
{
idList.AddRange(targetOrderIdList);
}
if (idList != null && idList.Count > 0)
{
string ids = string.Join(",", idList);
sourceTargetList = orderRepository.GetOrderListRepository(new RB_Order_ViewModel { QOrderIds = ids });
}
foreach (var item in list)
{
if (item.SourceOrderId > 0)
{
item.SourceClassName = sourceTargetList?.Where(qitem => qitem.OrderId == item.SourceOrderId)?.FirstOrDefault()?.ClassName;
}
if (item.TargetOrderId > 0)
{
item.TargetClassName = sourceTargetList?.Where(qitem => qitem.OrderId == item.TargetOrderId)?.FirstOrDefault()?.ClassName;
}
}
}
return list;
}
......@@ -1866,6 +1947,7 @@ namespace Edu.Module.Course
return flag;
}
int Id = order_GuestRepository.Insert(dmodel);
dmodel.Id = Id;
flag = Id > 0;
if (flag)
{
......@@ -2047,6 +2129,23 @@ namespace Edu.Module.Course
if (orderList.Any())
{
string orderIds = string.Join(",", orderList.Select(x => x.OrderId));
List<int> idList = new List<int>();
List<RB_Order_ViewModel> sourceTargetList = new List<RB_Order_ViewModel>();
var sourceOrderIdList = Common.ConvertHelper.StringToList(string.Join(",", orderList.Select(x => x.SourceOrderId)));
if (sourceOrderIdList != null && sourceOrderIdList.Count > 0)
{
idList.AddRange(sourceOrderIdList);
}
var targetOrderIdList = Common.ConvertHelper.StringToList(string.Join(",", orderList.Select(x => x.TargetOrderId)));
if (targetOrderIdList != null && targetOrderIdList.Count > 0)
{
idList.AddRange(targetOrderIdList);
}
if (idList != null && idList.Count > 0)
{
string ids = string.Join(",", idList);
sourceTargetList = orderRepository.GetOrderListRepository(new RB_Order_ViewModel { QOrderIds = ids });
}
//获取备注列表
var remarkList = order_RemarkRepository.GetOrderRemarkListRepository(new RB_Order_Remark_ViewModel() { QOrderIds = orderIds });
//获取名单列表
......@@ -2055,6 +2154,14 @@ namespace Edu.Module.Course
var clist = education_ContractRepository.GetList(new RB_Education_Contract_ViewModel() { Group_Id = demodel.Group_Id, OrderIds = orderIds, Status = -1 }).Where(x => x.Status != 4).ToList();
foreach (var item in orderList)
{
if (item.SourceOrderId > 0)
{
item.SourceClassName = sourceTargetList?.Where(qitem => qitem.OrderId == item.SourceOrderId)?.FirstOrDefault()?.ClassName;
}
if (item.TargetOrderId > 0)
{
item.TargetClassName = sourceTargetList?.Where(qitem => qitem.OrderId == item.TargetOrderId)?.FirstOrDefault()?.ClassName;
}
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();
......@@ -2197,8 +2304,10 @@ namespace Edu.Module.Course
LogContent = $",更新退款【{refund}】";
}
else { return false; }
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Order_ViewModel.OrderId),
FiledValue=orderId,
OperatorEnum=OperatorEnum.Equal
......@@ -2443,11 +2552,20 @@ namespace Edu.Module.Course
}
decimal validClassHours = cmodel.Unit_Price > 0 ? Math.Round(cmodel.Income / cmodel.Unit_Price, 2, MidpointRounding.AwayFromZero) : 0;
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Order_Guest.ValidClassHours),validClassHours}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
//HK2021-07-19新增【有效课时大于完成课时修改学员状态为正常】
if (gmodel.CompleteHours < validClassHours)
{
keyValues.Add(nameof(RB_Order_Guest.GuestState), 1);
keyValues.Add(nameof(RB_Order_Guest.DropOutRemark), "有效课时大于完成课时,恢复学员状态!");
}
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Order_Guest.Id),
FiledValue=guestId,
OperatorEnum= OperatorEnum.Equal
......@@ -2534,7 +2652,6 @@ namespace Edu.Module.Course
return orderRepository.GetOrderNoComplete(demodel);
}
/// <summary>
/// 获取列表
/// </summary>
......
......@@ -8,6 +8,7 @@ using VT.FW.DB;
using Edu.Model.Entity.EduTask;
using Edu.Repository.EduTask;
using Edu.Common.Enum.User;
using Edu.Common.Enum.Sale;
namespace Edu.Module.Course
{
......@@ -169,7 +170,7 @@ namespace Edu.Module.Course
var orderList = orderRepository.GetOrderListRepository(new RB_Order_ViewModel()
{
OrderState = Common.Enum.Course.OrderStateEnum.Normal,
IsChaBan = 1,
JoinType = OrderJoinTypeEnum.InsertClass,
Q_EffectTime = Common.ConvertHelper.FormatDate(DateTime.Now)
});
if (orderList != null && orderList.Count > 0)
......
......@@ -80,6 +80,11 @@ namespace Edu.Module.EduTask
/// </summary>
private readonly RB_Order_ChangeRepository order_ChangeRepository = new RB_Order_ChangeRepository();
/// <summary>
/// 转班订单
/// </summary>
private readonly OrderChangeModule orderChangeModule = new OrderChangeModule();
/// <summary>
/// 班级上课计划仓储层对象
/// </summary>
......@@ -1110,6 +1115,18 @@ namespace Edu.Module.EduTask
if (auditModel.AuditStatus == 2)
{
flag = student_TempInvitationRepository.UpdateStundetTempInvitation(receiptModel.Id);
}
}
if (receiptModel.ReceiptType == Common.Enum.Finance.ReceiptTypeEnum.OrderTransClass)
{
if (auditModel.AuditStatus == 2)
{
orderChangeModule.GetChangeOrderListModule();
}
else if (auditModel.AuditStatus == 3)
{
student_BackClassRepository.UpdateGuestStateRepository(receiptModel, auditModel);
}
}
return flag;
......
using Edu.AOP.CustomerAttribute;
using Edu.Cache.User;
using Edu.Common;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.EduTask;
using Edu.Common.Enum.Finance;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.EduTask;
using Edu.Module.Course;
using Edu.Repository.Course;
using Edu.Repository.EduTask;
using Edu.Repository.Log;
using Edu.Repository.User;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB;
namespace Edu.Module.EduTask
{
......@@ -59,6 +68,21 @@ namespace Edu.Module.EduTask
/// </summary>
private readonly RB_Order_GuestRepository guestRepository = new RB_Order_GuestRepository();
/// <summary>
/// 校区仓储层对象
/// </summary>
private readonly RB_SchoolRepository schoolRepository = new RB_SchoolRepository();
/// <summary>
/// 用户日志
/// </summary>
private readonly RB_User_ChangeLogRepository changeLogRepository = new RB_User_ChangeLogRepository();
/// <summary>
/// 上课计划+上课时间仓储对象
/// </summary>
private readonly RB_Class_PlanRepository class_PlanRepository = new RB_Class_PlanRepository();
/// <summary>
/// 新增订单转班、分拆
/// </summary>
......@@ -88,13 +112,77 @@ namespace Edu.Module.EduTask
CreateTime = model.CreateTime,
UpdateBy = model.UpdateBy,
UpdateTime = model.UpdateTime,
VerifyStatus = Common.Enum.EduTask.EduTaskRrocessStatus.NotAudit
VerifyStatus = Common.Enum.EduTask.EduTaskRrocessStatus.NotAudit,
IsCreate = 0,
EffectiveDate = model.EffectiveDate
};
flag = education_ReceiptRepository.SetEducationReceiptRepository(educationReceipt, out message);
Dictionary<string, object> guestFileds = new Dictionary<string, object>()
{
{nameof(RB_Order_Guest_ViewModel.GuestState),8}
};
if (flag)
{
flag = guestRepository.Update(guestFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), model.OrderGuestId));
}
}
return flag;
}
/// <summary>
/// 学员完成学习分钟数
/// </summary>
/// <param name="guestIds">学员编号</param>
/// <returns></returns>
public GuestFinishMinute_ViewModel GetGuestFinishMinutesModule(string guestIds)
{
var model= classCheckRepository.GetGuestFinishMinutesRepository(guestIds)?.FirstOrDefault();
if (model == null)
{
model = new GuestFinishMinute_ViewModel();
}
return model;
}
/// <summary>
/// 计算当前时间到订单生效时间有效课时数
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public decimal GetClassPlanTimeHoursModule(int ClassId,string StartTime,string EndTime)
{
var list = class_PlanRepository.GetClassPlanListExtRepository(new RB_Class_Plan_ViewModel()
{
ClassId = ClassId,
StartTime = StartTime,
EndTime = EndTime
});
return list?.Sum(qitem => qitem.TimeHour) ?? 0;
}
/// <summary>
/// 定时更新转班订单数据
/// </summary>
public void GetChangeOrderListModule()
{
var list = education_ReceiptRepository.GetEducationReceiptListRepository(new EducationReceiptQuery()
{
ReceiptType = (int)ReceiptTypeEnum.OrderTransClass,
VerifyStatus = (int)EduTaskRrocessStatus.AuditThrough,
QEffectiveDate=Common.ConvertHelper.FormatDate(DateTime.Now)
});
if (list != null && list.Count > 0)
{
foreach (var item in list)
{
if (item.IsCreate == 0)
{
UpdateOrderChangeModule(item);
}
}
}
}
/// <summary>
/// 订单转班处理类方法
/// </summary>
......@@ -105,23 +193,33 @@ namespace Edu.Module.EduTask
if (receiptModel.RelationId > 0)
{
var orderChangeModel = order_ChangeRepository.GetEntity<RB_Order_Change_ViewModel>(receiptModel.RelationId);
if (orderChangeModel != null && orderChangeModel.Id > 0)
{
if (orderChangeModel.EffectiveDate < DateTime.Now)
{
return false;
}
var oldOrderModel = orderRepository.GetEntity(orderChangeModel.SourceOrderId);
var newClassModel = classRepository.GetEntity(orderChangeModel.NewClassId);
var newCourseModel = courseRepository.GetEntity(orderChangeModel.NewCourseId);
var userInfo = UserReidsCache.GetUserLoginInfo(oldOrderModel.EnterID);
var guestClassHours = classCheckRepository.GetGuestFinishMinutesRepository(orderChangeModel.OrderGuestId.ToString())?.FirstOrDefault();
var guestModel = guestRepository.GetEntity(orderChangeModel.OrderGuestId);
var guestClassHours = GetGuestFinishMinutesModule(orderChangeModel.OrderGuestId.ToString());
var guestModel = guestRepository.GetEntity(orderChangeModel.OrderGuestId);
//计算课时单价
//老订单应收
decimal oldPreferPrice = oldOrderModel.PreferPrice / guestModel.TotalHours * guestClassHours.FinishClassHours;
//新订单应收
decimal newPreferPrice = oldOrderModel.PreferPrice - oldPreferPrice;
//老订单实收
decimal oldIncome = 0;
//单个人员的课时单价
var unitPrice= (oldOrderModel.Income + oldOrderModel.PlatformTax) / oldOrderModel.GuestNum / guestModel.TotalHours;
//单人已完成应收
var singleFinishPrice = Math.Round(guestClassHours.FinishClassHours * unitPrice, 2);
//单人应收
var singlePreferPrice = Math.Round(guestModel.TotalHours * unitPrice, 2);
//原订单应收=原订单应收-单人应收+单人完成
decimal oldPreferPrice = oldOrderModel.PreferPrice- singlePreferPrice+ singleFinishPrice;
//新订单应收和退款一致
decimal newPreferPrice = singlePreferPrice - singleFinishPrice;
#region 生成新订单
var orderModel = new RB_Order_ViewModel()
{
OrderId = 0,
......@@ -142,14 +240,15 @@ namespace Edu.Module.EduTask
LessPrice = 0,
OrderNature = oldOrderModel.OrderNature,
OldPreferPrice = newPreferPrice,//应收,
CourseId = 0,
CourseId = orderChangeModel.NewCourseId,
StartClassHours = 0,
IsChaBan = 0,
UpOrderId = 0,
VisitorReserveId = 0,
IsRenewOrder = 1,
JoinType = Common.Enum.Sale.OrderJoinTypeEnum.TransOrder,
TargetJoinType= Common.Enum.Sale.OrderJoinTypeEnum.Normal,
EffectTime= orderChangeModel.EffectiveDate,
};
//orderModel.RenewOrderId = OrderId;
orderModel.SourceOrderId = orderChangeModel.SourceOrderId;
orderModel.Group_Id = userInfo.Group_Id;
orderModel.School_Id = userInfo.School_Id;
orderModel.Dept_Id = userInfo.DeptId;
......@@ -162,10 +261,224 @@ namespace Edu.Module.EduTask
orderModel.UpdateBy = userInfo.Id;
orderModel.UpdateTime = DateTime.Now;
orderModel.OldGuestId = orderChangeModel.OrderGuestId;
flag = orderModule.SetClassOrderModule(orderModel, userInfo, false, out string message);
flag = orderModule.SetClassOrderCommonModule(orderModel, userInfo, false, out string message);
#endregion
if (flag)
{
#region 修改老订单 【目标订单和应收】
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Order_ViewModel.TargetOrderId),orderModel.OrderId },
{nameof(RB_Order_ViewModel.PreferPrice),oldPreferPrice },
{nameof(RB_Order_ViewModel.TargetJoinType),(int) Common.Enum.Sale.OrderJoinTypeEnum.TransOrder },
};
flag = orderRepository.Update(fileds, new WhereHelper(nameof(RB_Order_ViewModel.OrderId), orderChangeModel.SourceOrderId));
#endregion
#region 修改老学员课时相关
Dictionary<string, object> guestFileds = new Dictionary<string, object>()
{
{nameof(RB_Order_Guest_ViewModel.TotalHours),guestClassHours.FinishClassHours },
{nameof(RB_Order_Guest_ViewModel.GuestState),7 },
};
if (flag)
{
flag = guestRepository.Update(guestFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), orderChangeModel.OrderGuestId));
}
#endregion
#region 生成财务单据
if (flag)
{
var RelevanceFrId = CreateExpenditure(newPreferPrice, guestModel.Id,guestModel.GuestName, userInfo, oldOrderModel.ClassId, oldOrderModel.OrderId, out string msg1);
var InCome = CreateInCome(newPreferPrice, orderModel.NewGuestId, guestModel.GuestName, userInfo, orderModel.ClassId, orderModel.OrderId, RelevanceFrId, out string msg2);
flag = RelevanceFrId > 0 && InCome > 0;
}
#endregion
}
if (flag)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Education_Receipt.IsCreate),1}
};
flag = education_ReceiptRepository.Update(fileds, new WhereHelper(nameof(RB_Education_Receipt.Id), receiptModel.Id));
}
}
}
return flag;
}
/// <summary>
/// 转班收入
/// </summary>
public int CreateInCome(decimal InCome,int guestId,string GuestName, UserInfo userInfo, int classId, int orderId, int ReFinanceId, out string msg)
{
msg = "";
#region 新增财务单据
var detailList = new List<object>
{
new
{
CostTypeId=533,
Number = 1,
OriginalMoney = InCome,
UnitPrice = InCome,
Remark = "学员【"+GuestName+"】收入"
}
};
var classModel = classRepository.GetEntity(classId);
string Remark = "【" + (classModel?.ClassName ?? "") + "】下,订单" + orderId + " 客人转班";
var financeObj = new
{
BType = 1,
AccountId = 72,
IsPublic = 7,
ClientType = 3659,
CurrencyId = 1,
GuestId=guestId,
WBMoney = InCome,
PayDate = DateTime.Now.ToString("yyyy-MM-dd"),
TemplateId = 186,
OrderSource = 17,
OrderID = orderId,
TCIDList = new List<int>() { classId },
OtherType = 0,
ReFinanceId,
CallBackReFrId = ReFinanceId,
Remark,
detailList,
CreateBy = userInfo.Id,
RB_Branch_Id = classModel.School_Id,
RB_Depart_Id = userInfo.DeptId,
RB_Group_Id = userInfo.Group_Id,
RB_CreateByName = userInfo.AccountName,
RB_DepartName = userInfo.DeptName,
RB_BranchName = schoolRepository.GetEntity(classModel.School_Id)?.SName ?? "",
RB_GroupName = userInfo.GroupName,
FinanceType = 2,
RemitterName = "转班",
TradeDate = Common.ConvertHelper.FormatDate(DateTime.Now),
AccountNumber = Common.ConvertHelper.FormatDate(DateTime.Now),
};
string sign = EncryptionHelper.AesEncrypt(JsonHelper.Serialize(financeObj), Config.ReadConfigKey("FinanceKey"));
var resultInfo = new
{
msg = sign
};
string apiResult = HttpHelper.HttpPost(Config.ReadConfigKey("IncomeFinanceApi"), JsonHelper.Serialize(resultInfo), "");
JObject parmsJob = JObject.Parse(apiResult);
string resultCode = parmsJob.GetStringValue("resultCode");
int frid = parmsJob.GetInt("data", 0);
if (resultCode == "1" && frid > 0)
{
//记录日志
changeLogRepository.Insert(new Model.Entity.Log.RB_User_ChangeLog()
{
Id = 0,
Type = 1,
CreateBy = userInfo.Id,
CreateTime = DateTime.Now,
Group_Id = userInfo.Group_Id,
LogContent = "生成学员转班财务单据【" + orderId + "】",
School_Id = userInfo.School_Id,
SourceId = 0
});
}
else
{
string message = parmsJob.GetStringValue("message");
LogHelper.Write("CreateInCome:" + message);
msg += orderId + "创建财务单据失败;";
}
#endregion
return frid;
}
/// <summary>
/// 转班支出
/// </summary>
public int CreateExpenditure(decimal BackMoney,int guestId, string GuestName, UserInfo userInfo, int classId, int orderId, out string msg)
{
msg = "";
#region 新增财务单据
var detailList = new List<object>
{
new
{
CostTypeId=533,
Number = 1,
OriginalMoney = BackMoney,
UnitPrice = BackMoney,
Remark = "学员【"+GuestName+"】转班支出"
}
};
var classModel = classRepository.GetEntity(classId);
string Remark = "【" + (classModel?.ClassName ?? "") + "】下,订单" + orderId + " 学员转班支出!";
var financeObj = new
{
IsPublic = 7,
ClientType = 10,
ClientID = 3659,
CurrencyId = 1,
GuestId=guestId,
WBMoney = BackMoney,
PayDate = DateTime.Now.ToString("yyyy-MM-dd"),
TemplateId = 185,
OrderSource = 17,
OrderID = orderId,
TCIDList = new List<int>() { classId },
OtherType = 0,
Remark,
detailList,
CreateBy = userInfo.Id,
RB_Branch_Id = classModel.School_Id,
RB_Depart_Id = userInfo.DeptId,
RB_Group_Id = userInfo.Group_Id,
RB_CreateByName = userInfo.AccountName,
RB_DepartName = userInfo.DeptName,
RB_BranchName = schoolRepository.GetEntity(classModel.School_Id)?.SName ?? "",
RB_GroupName = userInfo.GroupName,
FinanceType = 2
};
string sign = EncryptionHelper.AesEncrypt(JsonHelper.Serialize(financeObj), Config.ReadConfigKey("FinanceKey"));
var resultInfo = new
{
msg = sign
};
string apiResult = HttpHelper.HttpPost(Config.ReadConfigKey("PaymentFinanceApi"), JsonHelper.Serialize(resultInfo), "");
JObject parmsJob = JObject.Parse(apiResult);
string resultCode = parmsJob.GetStringValue("resultCode");
int frid = parmsJob.GetInt("data", 0);
if (resultCode == "1" && frid > 0)
{
//记录日志
changeLogRepository.Insert(new Model.Entity.Log.RB_User_ChangeLog()
{
Id = 0,
Type = 1,
CreateBy = userInfo.Id,
CreateTime = DateTime.Now,
Group_Id = userInfo.Group_Id,
LogContent = "生成学员转班财务单据【" + orderId + "】",
School_Id = userInfo.School_Id,
SourceId = 0
});
}
else
{
string message = parmsJob.GetStringValue("message");
LogHelper.Write("CreateExpenditure:" + message);
msg += orderId + "创建财务单据失败;";
}
#endregion
return frid;
}
}
}
......@@ -181,7 +181,7 @@ namespace Edu.Module.User
if (deptList != null && deptList.Count > 0)
{
var firstList = new List<RB_Department_ViewModel>();
if (query.School_Id == 0)
if (query.School_Id == -1)
{
firstList = deptList.Where(qitem => qitem.ParentId == 0 && qitem.School_Id == 0).ToList();
}
......
......@@ -53,6 +53,16 @@ namespace Edu.Module.User
/// </summary>
private readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
/// <summary>
/// 讲师仓储层对象
/// </summary>
private readonly RB_TeacherRepository teacherRepository = new RB_TeacherRepository();
/// <summary>
/// 助教仓储层对象
/// </summary>
private readonly RB_AssistRepository assistRepository = new RB_AssistRepository();
/// <summary>
/// 获取管理者列表
/// </summary>
......@@ -210,13 +220,11 @@ namespace Edu.Module.User
var deptList = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { QDeptIds = model.Dept_Id + "," + oldModel.Dept_Id });
logContent += string.Format(",将部门由【{0}】修改为【{1}】。", (deptList.Where(qitem => qitem.DeptId == oldModel.Dept_Id)?.FirstOrDefault()?.DeptName ?? ""), (deptList.Where(qitem => qitem.DeptId == model.Dept_Id)?.FirstOrDefault()?.DeptName ?? ""));
}
if (!string.IsNullOrEmpty(logContent))
{
//新增日志
userChangeLogModule.SetUserChangeLogModule(model.CreateBy, model.Group_Id, model.School_Id, logContent, model.MId, AccountTypeEnum.Admin);
}
//修改账号表
Dictionary<string, object> accountFileds = new Dictionary<string, object>()
{
......@@ -233,7 +241,6 @@ namespace Edu.Module.User
flag = managerRepository.Update(fileds, new WhereHelper(nameof(RB_Manager_ViewModel.MId), model.MId));
}
}
return flag;
}
......@@ -251,10 +258,8 @@ namespace Edu.Module.User
var oldModel = GetManagerModule(model.MId);
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{ nameof(RB_Manager_ViewModel.UpdateBy),model.UpdateBy },
{ nameof(RB_Manager_ViewModel.UpdateTime),model.UpdateTime },
{ nameof(RB_Manager_ViewModel.Post_Id),model.Post_Id },
};
string logContent = "";
......@@ -264,7 +269,6 @@ namespace Edu.Module.User
var postList = postRepository.GetPostListRepository(new RB_Post_ViewModel() { QPostIds = model.Post_Id + "," + oldModel.Post_Id });
logContent += string.Format(",将岗位由【{0}】修改为【{1}】。", (postList.Where(qitem => qitem.PostId == oldModel.Post_Id)?.FirstOrDefault()?.PostName ?? ""), (postList.Where(qitem => qitem.PostId == model.Post_Id)?.FirstOrDefault()?.PostName ?? ""));
}
if (!string.IsNullOrEmpty(logContent))
{
//新增日志
......@@ -272,14 +276,11 @@ namespace Edu.Module.User
}
flag = managerRepository.Update(fileds, new WhereHelper(nameof(RB_Manager_ViewModel.MId), model.MId));
}
return flag;
}
/// <summary>
/// 新增修改管理者
/// 新增修改管理者离职时间和离职状态
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
......@@ -297,7 +298,6 @@ namespace Edu.Module.User
{ nameof(RB_Manager_ViewModel.LeaveTime),model.LeaveTime },
};
string logContent = "";
if (model.LeaveStatus != oldModel.LeaveStatus)
{
logContent += string.Format(",将在职状态由【{0}】修改为【{1}】。", oldModel.LeaveStatus.ToName(), model.LeaveStatus.ToName());
......@@ -306,7 +306,6 @@ namespace Edu.Module.User
{
logContent += string.Format(",将离职时间由【{0}】修改为【{1}】。", oldModel?.LeaveTime, model.LeaveTime);
}
if (!string.IsNullOrEmpty(logContent))
{
//新增日志
......@@ -314,7 +313,6 @@ namespace Edu.Module.User
}
flag = managerRepository.Update(fileds, new WhereHelper(nameof(RB_Manager_ViewModel.MId), model.MId));
}
return flag;
}
......@@ -406,8 +404,6 @@ namespace Edu.Module.User
return flag;
}
/// <summary>
/// 根据学生id获取学生对应的销售
/// </summary>
......@@ -417,5 +413,188 @@ namespace Edu.Module.User
{
return managerRepository.GetManagerListByStuId(Student_Id, Group_Id);
}
/// <summary>
/// 修改员工类型
/// </summary>
/// <param name="targetAccountType">目标用户类型</param>
/// <param name="AccountId">编号</param>
/// <param name="AccountType">类型</param>
/// <param name="Remark">调整原因</param>
/// <returns></returns>
[TransactionCallHandler]
public virtual bool SetEmployeeTypeModule(AccountTypeEnum targetAccountType, int AccountId, AccountTypeEnum AccountType, string Remark, UserInfo UserInfo)
{
bool flag = false;
var model = accountRepository.GetEmployeeListRepository(new Employee_ViewModel()
{
AccountId = AccountId,
AccountTypeStr = ((int)AccountType).ToString()
})?.FirstOrDefault();
if (model != null && model.Id > 0)
{
#region 删除原来的数据
if (model.AccountType == AccountTypeEnum.Admin)
{
flag = managerRepository.Delete(model.AccountId) > 0;
}
else if (model.AccountType == AccountTypeEnum.Teacher)
{
flag = teacherRepository.Delete(model.AccountId) > 0;
}
else if (model.AccountType == AccountTypeEnum.Assist)
{
flag = assistRepository.Delete(model.AccountId) > 0;
}
#endregion
if (flag)
{
#region 添加新数据
var newId = 0;
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Account_ViewModel.AccountType),(int)targetAccountType }
};
if (targetAccountType == AccountTypeEnum.Admin)
{
RB_Manager_ViewModel manager = new RB_Manager_ViewModel()
{
MId = 0,
MName = model.EmployeeName,
MTel = model.EmployeeTel,
MHead = model.UserIcon,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
CreateBy = UserInfo.Id,
CreateTime = DateTime.Now,
UpdateBy = UserInfo.Id,
UpdateTime = DateTime.Now,
Status = DateStateEnum.Normal,
Dept_Id = model.Dept_Id,
Post_Id = model.Post_Id,
IDCard = model.IDCard,
Sex = model.Sex,
EntryTime = model.EntryTime,
Address = model.Address,
BirthDate = model.BirthDate,
LeaveStatus = model.LeaveStatus,
LeaveTime = model.LeaveTime,
Education = model.Education,
Email = model.Email
};
newId = managerRepository.Insert(manager);
flag = newId > 0;
manager.MId = newId;
fileds.Add(nameof(RB_Account_ViewModel.AccountId), newId);
}
else if (targetAccountType == AccountTypeEnum.Teacher)
{
RB_Teacher_ViewModel teacher = new RB_Teacher_ViewModel()
{
TId = 0,
School_Id = model.School_Id,
TeacherName = model.EmployeeName,
TeacherTel = model.EmployeeTel,
TeacherHead = model.UserIcon,
TeacherIcon = model.UserIcon,
TeacherSay = "",
TeacherIntro = "",
Status = model.Status,
AuditStatus = AccountStatusEnum.Pass,
AuditRemark = "",
IsShow = 1,
IsRecommend = 0,
SortNum = 1,
CreateBy = UserInfo.Id,
CreateTime = DateTime.Now,
UpdateBy = UserInfo.Id,
UpdateTime = DateTime.Now,
Group_Id = model.Group_Id,
TeachTag = "",
Dept_Id = model.Dept_Id,
Post_Id = model.Post_Id,
IDCard = model.IDCard,
Sex = model.Sex,
EntryTime = model.EntryTime,
Address = model.Address,
BirthDate = model.BirthDate,
LeaveStatus = model.LeaveStatus,
LeaveTime = model.LeaveTime,
Education = model.Education,
BaseStuNum = 13,
Email = model.Email,
BaseHourFee = 0,
Nationality = "",
ForeignersUrl = "",
Specialty = "1,2,3,4",
BaseHoursEnabled = 1,
EnableTime = model.EnableTime,
};
newId = teacherRepository.Insert(teacher);
flag = newId > 0;
teacher.TId = newId;
fileds.Add(nameof(RB_Account_ViewModel.AccountId), newId);
}
else if (targetAccountType == AccountTypeEnum.Assist)
{
RB_Assist_ViewModel assist = new RB_Assist_ViewModel()
{
AId = 0,
School_Id = model.School_Id,
Teacher_Id = 0,
AssistName = model.EmployeeName,
AssistTel = model.EmployeeTel,
AssistIcon = model.UserIcon,
AssistIntro = "",
AuditStatus = AccountStatusEnum.Pass,
Status = model.Status,
Remark = "",
Group_Id = model.Group_Id,
CreateBy = UserInfo.Id,
CreateTime = DateTime.Now,
UpdateBy = UserInfo.Id,
UpdateTime = DateTime.Now,
Dept_Id = model.Dept_Id,
Post_Id = model.Post_Id,
IDCard = model.IDCard,
Sex = model.Sex,
EntryTime = model.EntryTime,
Address = model.Address,
BirthDate = model.BirthDate,
LeaveStatus = model.LeaveStatus,
LeaveTime = model.LeaveTime,
Education = model.Education,
Email = model.Email
};
newId = assistRepository.Insert(assist);
flag = newId > 0;
assist.AId = newId;
fileds.Add(nameof(RB_Account_ViewModel.AccountId), newId);
}
if (fileds != null && fileds.Count > 0 && flag)
{
//更新关联编号
flag = accountRepository.Update(fileds, new WhereHelper(nameof(RB_Account_ViewModel.Id), model.Id));
}
string logContent = Remark;
if (model.AccountType != targetAccountType)
{
logContent += string.Format(",将在由【{0}】修改为【{1}】。", model.AccountType.ToName(), targetAccountType.ToName());
}
if (!string.IsNullOrEmpty(logContent))
{
//新增日志
userChangeLogModule.SetUserChangeLogModule(UserInfo.Id, model.Group_Id, model.School_Id, logContent, newId, targetAccountType);
}
#endregion
}
}
return flag;
}
}
}
\ No newline at end of file
......@@ -225,6 +225,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.Status), (int)query.Status);
}
if (query.CouseId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.CouseId), query.CouseId);
}
if (query.ClassStatus > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassStatus), (int)query.ClassStatus);
......
......@@ -85,6 +85,7 @@ WHERE 1=1
SELECT A.*,IFNULL(B.RoomName,'') AS RoomName,IFNULL(T.TeacherName,'') AS TeacherName,IFNULL(T.TeacherHead,'') AS UserIcon
,Time.StartTime,time.EndTime,time.ClassTimeId
,TIMESTAMPDIFF(MINUTE, CONCAT('2020-12-16',' ',time.StartTime), CONCAT('2020-12-16',' ',time.EndTime)) AS ClassMinutes
,time.TimeHour
FROM RB_Class_Plan AS A LEFT JOIN rb_class_room AS B ON A.ClassRoomId=B.RoomId
LEFT JOIN rb_teacher AS T ON A.TeacherId=T.TId
LEFT JOIN rb_class_time AS time ON A.ClassPlanId=Time.ClassPlanId
......@@ -131,7 +132,7 @@ WHERE 1=1
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(" AND DATE_FORMAT(A.{0},'%y/%m')>='{1}' ", nameof(RB_Class_Plan_ViewModel.ClassDate), query.StartTime);
builder.AppendFormat(" AND A.{0}>='{1}' ", nameof(RB_Class_Plan_ViewModel.ClassDate), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
......
......@@ -27,14 +27,18 @@ namespace Edu.Repository.Course
{
where += $@" and o.{nameof(RB_Order_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.School_Id)} ={demodel.School_Id}";
}
//if (demodel.School_Id > 0)
//{
// where += $@" and o.{nameof(RB_Order_ViewModel.School_Id)} ={demodel.School_Id}";
//}
if (demodel.OrderId > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderId)} ={demodel.OrderId}";
}
if (!string.IsNullOrEmpty(demodel.QOrderIds))
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderId)} IN({demodel.QOrderIds})";
}
if (demodel.OrderType > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)demodel.OrderType}";
......@@ -98,9 +102,9 @@ namespace Edu.Repository.Course
{
where += $@" and o.{nameof(RB_Order_ViewModel.LXConfirmDate)} <='{demodel.ConfirmETime} 23:59:59'";
}
if (demodel.IsChaBan ==1 )
if (demodel.JoinType == OrderJoinTypeEnum.InsertClass )
{
where += $@" and o.{nameof(RB_Order_ViewModel.IsChaBan)} ={demodel.IsChaBan}";
where += $@" and o.{nameof(RB_Order_ViewModel.JoinType)} ={(int)OrderJoinTypeEnum.InsertClass}";
}
if (!string.IsNullOrEmpty(demodel.Q_EffectTime))
{
......@@ -920,9 +924,9 @@ where {where} order by {orderBy}
{
where += $@" and o.{nameof(RB_Order_ViewModel.LXConfirmDate)} <='{demodel.ConfirmETime} 23:59:59'";
}
if (demodel.IsChaBan == 1)
if (demodel.JoinType == OrderJoinTypeEnum.InsertClass)
{
where += $@" and o.{nameof(RB_Order_ViewModel.IsChaBan)} ={demodel.IsChaBan}";
where += $@" and o.{nameof(RB_Order_ViewModel.JoinType)} ={(int)OrderJoinTypeEnum.InsertClass}";
}
if (!string.IsNullOrEmpty(demodel.Q_EffectTime))
{
......
......@@ -13,6 +13,11 @@ namespace Edu.Repository.Course
/// </summary>
public class RB_Order_GuestRepository : BaseRepository<RB_Order_Guest>
{
/// <summary>
/// 订单仓储层对象
/// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary>
/// 获取列表
/// </summary>
......@@ -21,7 +26,51 @@ namespace Edu.Repository.Course
/// <returns></returns>
public List<RB_Order_Guest_ViewModel> GetOrderGuestListRepository(RB_Order_Guest_ViewModel demodel)
{
string where = $@" 1=1 and A.Status=0 ";
var list = GetCommonOrderGuestListRepository(demodel);
if (list != null)
{
List<RB_Order_ViewModel> sourceTargetList = new List<RB_Order_ViewModel>();
List<int> idList = new List<int>();
var sourceOrderIdList = Common.ConvertHelper.StringToList(string.Join(",", list.Select(x => x.SourceOrderId)));
if (sourceOrderIdList != null && sourceOrderIdList.Count > 0)
{
idList.AddRange(sourceOrderIdList);
}
var targetOrderIdList = Common.ConvertHelper.StringToList(string.Join(",", list.Select(x => x.TargetOrderId)));
if (targetOrderIdList != null && targetOrderIdList.Count > 0)
{
idList.AddRange(targetOrderIdList);
}
if (idList != null && idList.Count > 0)
{
string ids = string.Join(",", idList);
sourceTargetList = orderRepository.GetOrderListRepository(new RB_Order_ViewModel { QOrderIds = ids });
}
foreach (var item in list)
{
if (item.SourceOrderId > 0)
{
item.SourceClassName = sourceTargetList?.Where(qitem => qitem.OrderId == item.SourceOrderId)?.FirstOrDefault()?.ClassName;
}
if (item.TargetOrderId > 0)
{
item.TargetClassName = sourceTargetList?.Where(qitem => qitem.OrderId == item.TargetOrderId)?.FirstOrDefault()?.ClassName;
}
}
}
return list;
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <param name="orderIds"></param>
/// <returns></returns>
public List<RB_Order_Guest_ViewModel> GetCommonOrderGuestListRepository(RB_Order_Guest_ViewModel demodel)
{
string where = "";
if (demodel.Group_Id > 0)
{
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.Group_Id)} ={demodel.Group_Id}";
......@@ -30,6 +79,10 @@ namespace Edu.Repository.Course
{
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.Id)} ={demodel.Id}";
}
if (!string.IsNullOrEmpty(demodel.OrderGuestIds))
{
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.Id)} IN ({demodel.OrderGuestIds})";
}
if (demodel.OrderId > 0)
{
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.OrderId)} ={demodel.OrderId}";
......@@ -56,14 +109,17 @@ namespace Edu.Repository.Course
}
if (demodel.QEffectStatus == 1)
{
where += $@" AND (B.IsChaBan=0 OR (B.IsChaBan=1 AND B.EffectStatus IN(1) )) ";
where += $@" AND (B.JoinType=1 OR (B.JoinType=2 AND B.EffectStatus IN(1) )) ";
}
string sql = $@"
SELECT A.*,IFNULL(B.IsChaBan,0) AS IsChaBan,IFNULL(B.StartClassHours,0) AS StartClassHours,IFNULL(C.CourseName,'') AS CourseName
,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId
SELECT A.*,IFNULL(B.JoinType,0) AS JoinType,IFNULL(B.TargetJoinType,0) AS TargetJoinType,IFNULL(B.StartClassHours,0) AS StartClassHours
,IFNULL(C.CourseName,'') AS CourseName,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId
,sc.StopClassEffectTime,B.SourceOrderId,B.TargetOrderId
FROM RB_Order_Guest AS A LEFT JOIN rb_order AS B ON A.OrderId=B.OrderId
LEFT JOIN rb_course AS C ON (B.CourseId=C.CourseId AND B.CourseId>0 AND B.OrderType=1) WHERE {where}";
LEFT JOIN rb_course AS C ON (B.CourseId=C.CourseId AND B.CourseId>0 AND B.OrderType=1)
LEFT JOIN (SELECT OrderGuestId,MAX(TakeEffectTime) as StopClassEffectTime from rb_student_stopclass where IsAuditThrough=1 GROUP BY OrderGuestId) as sc on sc.OrderGuestId=a.Id
WHERE 1=1 and A.Status=0 {where}";
return Get<RB_Order_Guest_ViewModel>(sql).ToList();
}
......@@ -82,8 +138,9 @@ FROM RB_Order_Guest AS A LEFT JOIN rb_order AS B ON A.OrderId=B.OrderId
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.* ,IFNULL(course.CourseName,'') AS CourseName,tOrder.CourseId,tOrder.OrderType,tOrder.StartClassHours,tOrder.IsChaBan,tOrder.EffectTime
,tOrder.EffectStatus,tOrder.UpOrderId,sc.StopClassEffectTime
SELECT A.* ,IFNULL(course.CourseName,'') AS CourseName,tOrder.CourseId,tOrder.OrderType,tOrder.StartClassHours
,IFNULL(tOrder.JoinType,0) AS JoinType,IFNULL(tOrder.TargetJoinType,0) AS TargetJoinType,tOrder.EffectTime
,tOrder.EffectStatus,tOrder.UpOrderId,sc.StopClassEffectTime,tOrder.SourceOrderId,tOrder.TargetOrderId
FROM RB_Order_Guest AS A LEFT JOIN RB_Order as tOrder ON A.OrderId=tOrder.OrderId
LEFT JOIN rb_course AS course ON (tOrder.CourseId=course.CourseId AND tOrder.CourseId>0 AND tOrder.OrderType=1)
LEFT JOIN (SELECT OrderGuestId,MAX(TakeEffectTime) as StopClassEffectTime from rb_student_stopclass where IsAuditThrough=1 GROUP BY OrderGuestId) as sc on sc.OrderGuestId=a.Id
......@@ -93,10 +150,10 @@ WHERE 1=1 AND A.Status=0
{
builder.AppendFormat($@" AND A.{nameof(RB_Order_Guest_ViewModel.Group_Id)} ={demodel.Group_Id}");
}
if (demodel.School_Id > 0)
{
builder.AppendFormat($@" AND A.{nameof(RB_Order_Guest_ViewModel.School_Id)} ={demodel.School_Id}");
}
//if (demodel.School_Id > 0)
//{
// builder.AppendFormat($@" AND A.{nameof(RB_Order_Guest_ViewModel.School_Id)} ={demodel.School_Id}");
//}
if (demodel.OrderId > 0)
{
builder.AppendFormat($@" AND A.{nameof(RB_Order_Guest_ViewModel.OrderId)} ={demodel.OrderId}");
......@@ -220,13 +277,8 @@ WHERE 1=1 AND A.Status=0
{
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.GuestState)} ={demodel.GuestState}";
}
if (demodel.QEffectStatus == 1)
{
where += $@" AND (B.IsChaBan=0 OR (B.IsChaBan=1 AND B.EffectStatus IN(1) )) ";
}
string sql = $@"
SELECT A.*,IFNULL(B.IsChaBan,0) AS IsChaBan,IFNULL(B.StartClassHours,0) AS StartClassHours
SELECT A.*,IFNULL(B.StartClassHours,0) AS StartClassHours
,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId
FROM RB_Order_Guest AS A LEFT JOIN rb_order AS B ON A.OrderId=B.OrderId
LEFT JOIN rb_class as c on a.ClassId=c.ClassId
......@@ -248,8 +300,9 @@ WHERE {where}";
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.IsChaBan,0) AS IsChaBan,IFNULL(B.StartClassHours,0) AS StartClassHours,IFNULL(C.CourseName,'') AS CourseName,class.ClassName,b.EnterID
,plan.TotalPlanNum,planr.Ranks ,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId,sc.StopClassEffectTime
SELECT A.*,IFNULL(B.JoinType,0) AS JoinType,IFNULL(B.TargetJoinType,0) AS TargetJoinType,IFNULL(B.StartClassHours,0) AS StartClassHours,IFNULL(C.CourseName,'') AS CourseName
,class.ClassName,b.EnterID,plan.TotalPlanNum,planr.Ranks ,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId
,sc.StopClassEffectTime,B.SourceOrderId,B.TargetOrderId
FROM RB_Order_Guest AS A LEFT JOIN rb_order AS B ON A.OrderId=B.OrderId
LEFT JOIN rb_class as class on class.ClassId=a.ClassId
LEFT JOIN rb_course AS C ON (B.CourseId=C.CourseId AND B.CourseId>0 AND B.OrderType=1)
......@@ -303,9 +356,6 @@ WHERE 1=1 and A.Status=0 and class.Status=0 and b.OrderState<>3
return GetPage<RB_Order_Guest_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
/// <summary>
/// 获取分页列表
/// </summary>
......@@ -319,8 +369,10 @@ WHERE 1=1 and A.Status=0 and class.Status=0 and b.OrderState<>3
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.IsChaBan,0) AS IsChaBan,IFNULL(B.StartClassHours,0) AS StartClassHours,school.SName as SchoolName,teacher.TeacherName,IFNULL(C.CourseName,'') AS CourseName,class.ClassNo,class.ClassName,b.EnterID
,plan.TotalPlanNum,planr.Ranks ,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId,sc.StopClassEffectTime
SELECT A.*,IFNULL(B.JoinType,0) AS JoinType,IFNULL(B.TargetJoinType,0) AS TargetJoinType,IFNULL(B.StartClassHours,0) AS StartClassHours,school.SName as SchoolName
,teacher.TeacherName,IFNULL(C.CourseName,'') AS CourseName,class.ClassNo,class.ClassName,b.EnterID
,plan.TotalPlanNum,planr.Ranks ,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder
,B.RenewOrderId,sc.StopClassEffectTime,B.SourceOrderId,B.TargetOrderId
FROM RB_Order_Guest AS A LEFT JOIN rb_order AS B ON A.OrderId=B.OrderId
LEFT JOIN rb_class as class on class.ClassId=a.ClassId
LEFT JOIN rb_course AS C ON (B.CourseId=C.CourseId AND B.CourseId>0 AND B.OrderType=1)
......
......@@ -3,6 +3,7 @@ using Edu.Model.Entity.Course;
using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.EduTask;
using Edu.Repository.EduTask;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -27,6 +28,11 @@ namespace Edu.Repository.Course
/// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary>
/// 订单转班仓储层对象
/// </summary>
private readonly RB_Order_ChangeRepository order_ChangeRepository = new RB_Order_ChangeRepository();
/// <summary>
/// 获取学员退课单据列表
/// </summary>
......@@ -133,5 +139,34 @@ WHERE 1=1 ");
}
return flag;
}
/// <summary>
/// 更新退课相关信息
/// </summary>
/// <param name="receiptModel"></param>
/// <param name="auditModel"></param>
/// <returns></returns>
public bool UpdateGuestStateRepository(RB_Education_Receipt receiptModel, EduReceiptAudit auditModel)
{
bool flag = false;
var model = order_ChangeRepository.GetEntity(receiptModel.RelationId);
int GuestState = 0;
if (auditModel.AuditStatus == 2)
{
GuestState = 7;
}
if (auditModel.AuditStatus == 3)
{
GuestState = 4;
}
///更新学员退课状态
Dictionary<string, object> guestFileds = new Dictionary<string, object>()
{
{nameof(RB_Order_Guest_ViewModel.GuestState),GuestState }
};
flag = order_GuestRepository.Update(guestFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), model.OrderGuestId));
return flag;
}
}
}
\ No newline at end of file
......@@ -133,6 +133,64 @@ WHERE 1=1
}
/// <summary>
/// 获取教务单据列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Education_Receipt_ViewModel> GetEducationReceiptListRepository(EducationReceiptQuery query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.ClassName,'') AS ClassName,IFNULL(B.ClassNo,'') AS ClassNo,IFNULL(C.TeacherName,'') AS TeacherName
,IFNULL(D.SName,'') AS SchoolName,IFNULL(E.CourseName,'') AS CourseName
FROM RB_Education_Receipt AS A LEFT JOIN rb_class AS B ON A.ClassId=B.ClassId
LEFT JOIN rb_teacher AS C ON B.Teacher_Id=C.TId
LEFT JOIN rb_school AS D ON A.School_Id=D.SId
LEFT JOIN rb_course AS E ON B.CouseId=E.CourseId
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Education_Receipt_ViewModel.Group_Id), query.Group_Id);
}
if (!string.IsNullOrEmpty(query.QIds))
{
builder.AppendFormat(@" AND A.{0} IN ({1}) ", nameof(RB_Education_Receipt_ViewModel.Id), query.QIds);
}
if (!string.IsNullOrEmpty(query.Title))
{
builder.AppendFormat(@" AND A.{0} LIKE @Title ", nameof(RB_Education_Receipt_ViewModel.Title));
parameters.Add("Title", "%" + query.Title.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(@" AND A.{0}>='{1}' ", nameof(RB_Education_Receipt_ViewModel.CreateTime), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
builder.AppendFormat(@" AND A.{0}<='{1} 23:59:59' ", nameof(RB_Education_Receipt_ViewModel.CreateTime), query.EndTime);
}
if (query.ReceiptType > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Education_Receipt_ViewModel.ReceiptType), query.ReceiptType);
}
if (query.VerifyStatus > -1)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Education_Receipt_ViewModel.VerifyStatus), query.VerifyStatus);
}
if (!string.IsNullOrEmpty(query.QEffectiveDate))
{
builder.AppendFormat(@" AND A.{0}>='{1}' ", nameof(RB_Education_Receipt_ViewModel.EffectiveDate), query.QEffectiveDate);
}
}
return Get<RB_Education_Receipt_ViewModel>(builder.ToString(), parameters).ToList();
}
/// <summary>
/// 新增修改教务单据
/// </summary>
......
......@@ -143,17 +143,17 @@ SELECT A.*,IFNULL(G.GroupName,'') AS GroupName,IFNULL(s.SName,'') AS SchoolName,
,IFNULL(d.DeptName,'') AS DeptName,IFNULL(p.PostName,'') AS PostName
FROM
(
SELECT A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`
SELECT A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`,B.LeaveStatus
,A.AnnualLeaveDay, A.DirectSupervisor,A.OpenId,A.ActivationStatus,IFNULL(B.MName,'') AS AccountName,B.MHead AS UserIcon,B.Dept_Id,B.Post_Id,IFNULL(B.Email,'') AS Email
FROM rb_account AS A INNER JOIN rb_manager AS B ON A.AccountId=B.MId AND A.AccountType=1
WHERE 1=1 {0}
UNION ALL
SELECT A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`
SELECT A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`,B.LeaveStatus
,A.AnnualLeaveDay, A.DirectSupervisor,A.OpenId,A.ActivationStatus,IFNULL(B.TeacherName,'') AS AccountName,B.TeacherIcon AS UserIcon,B.Dept_Id,B.Post_Id,IFNULL(B.Email,'') AS Email
FROM rb_account AS A INNER JOIN rb_teacher AS B ON A.AccountId=B.TId AND A.AccountType=2
WHERE 1=1 {0}
UNION ALL
SELECT A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`
SELECT A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`,B.LeaveStatus
,A.AnnualLeaveDay, A.DirectSupervisor,A.OpenId,A.ActivationStatus,IFNULL(B.AssistName,'') AS AccountName,B.AssistIcon AS UserIcon,B.Dept_Id,B.Post_Id,IFNULL(B.Email,'') AS Email
FROM rb_account AS A INNER JOIN rb_assist AS B ON A.AccountId=B.AId AND A.AccountType=3
WHERE 1=1 {0}
......@@ -350,7 +350,7 @@ FROM
{
where.AppendFormat(" AND B.{0}={1} ", nameof(Employee_ViewModel.Group_Id), query.Group_Id);
}
if (query.School_Id > 0)
if (query.School_Id > -1)
{
where.AppendFormat(" AND B.{0}={1} ", nameof(Employee_ViewModel.School_Id), query.School_Id);
}
......
......@@ -99,7 +99,7 @@ WHERE 1=1
{
builder.Append($" AND A.{nameof(RB_Department_ViewModel.Group_Id)}={query.Group_Id} ");
}
if (query.School_Id > 0)
if (query.School_Id >= 0)
{
builder.Append($" AND A.{nameof(RB_Department_ViewModel.School_Id)}={query.School_Id} ");
}
......
......@@ -113,7 +113,7 @@ WHERE 1=1
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Teacher_ViewModel.Group_Id), query.Group_Id);
}
if (query.School_Id > 0)
if (query.School_Id > -1)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Teacher_ViewModel.School_Id), query.School_Id);
}
......
......@@ -167,6 +167,7 @@ namespace Edu.WebApi.Controllers.Course
item.ClassName,
item.CouseId,
item.CourseName,
item.Teacher_Id,
OpenTime = Common.ConvertHelper.FormatDate(item.OpenTime),
PlanList = planList
};
......@@ -775,7 +776,7 @@ namespace Edu.WebApi.Controllers.Course
List<object> guestList = new List<object>();
foreach (var item in orderGuestList.Where(x => x.GuestState == 1 || x.GuestState == 6 || ((x.GuestState == 5 || x.GuestState == 7) && x.ChangeEffectTime.HasValue && Convert.ToDateTime(Common.ConvertHelper.FormatDate(x.ChangeEffectTime)) >= data.ClassDate)))
{
if (item.IsChaBan == 0 || (item.IsChaBan == 1 && data.ClassDate >= Convert.ToDateTime(Common.ConvertHelper.FormatDate(item.EffectTime))))
if (item.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.Normal || (item.JoinType == Common.Enum.Sale.OrderJoinTypeEnum.InsertClass && data.ClassDate >= Convert.ToDateTime(Common.ConvertHelper.FormatDate(item.EffectTime))))
{
guestList.Add(new
{
......@@ -792,7 +793,12 @@ namespace Edu.WebApi.Controllers.Course
item.TotalHours,
item.CompleteHours,
item.StartClassHours,
item.IsChaBan,
item.JoinType,
JoinTypeName=item.JoinType.ToName(),
item.TargetJoinType,
TargetJoinTypeName=item.TargetJoinType.ToName(),
item.SourceOrderId,
item.TargetOrderId,
item.EffectStatus,
item.EffectStatusStr,
EffectTime = Common.ConvertHelper.FormatDate(item.EffectTime),
......
......@@ -57,11 +57,11 @@ namespace Edu.WebApi.Controllers.Course
List<object> result = new List<object>();
foreach (var x in list)
{
int IsChaBan = 0;//不能插班报入
int IsInsertClass = 0;//不能插班报入
int SurplusNum = x.ClassPersion - x.OrderStudentCount;
if (x.ClassStatus == ClassStatusEnum.StudyIng && SurplusNum > 0)
{
IsChaBan = 1;//可以插班报入
IsInsertClass = 1;//可以插班报入
}
var obj = new
{
......@@ -72,6 +72,7 @@ namespace Edu.WebApi.Controllers.Course
x.CouseId,
x.CourseFeature,
x.ClassHours,
x.Teacher_Id,
x.TeacherName,
x.TeacherHead,
x.RoomName,
......@@ -102,7 +103,7 @@ namespace Edu.WebApi.Controllers.Course
x.SchoolName,
UpdateTime = Common.ConvertHelper.FormatTime(x.UpdateTime),
x.OtherCourseList,
IsChaBan,
IsChaBan= IsInsertClass,
};
result.Add(obj);
}
......@@ -188,7 +189,12 @@ namespace Edu.WebApi.Controllers.Course
x.CourseId,
x.CourseName,
x.StartClassHours,
x.IsChaBan,
x.JoinType,
x.TargetJoinType,
x.TargetOrderId,
x.TargetClassName,
x.SourceOrderId,
x.SourceClassName,
x.ClassSchoolId,
x.TradeWay,
x.Class_Price,
......@@ -233,6 +239,7 @@ namespace Edu.WebApi.Controllers.Course
x.UpOrderId,
x.VisitorReserveId,
x.RenewOrderId,
SaleRemarkList = x.SaleRemarkList.Select(z => new
{
z.Id,
......@@ -453,12 +460,18 @@ namespace Edu.WebApi.Controllers.Course
OldPreferPrice = base.ParmJObj.GetDecimal("OldPreferPrice"),
CourseId = base.ParmJObj.GetInt("CourseId"),
StartClassHours = base.ParmJObj.GetInt("StartClassHours"),
IsChaBan=base.ParmJObj.GetInt("IsChaBan"),
EffectTime=base.ParmJObj.GetDateTime("EffectTime"),
UpOrderId=base.ParmJObj.GetInt("UpOrderId"),
VisitorReserveId=base.ParmJObj.GetInt("VisitorReserveId"),
JoinType= OrderJoinTypeEnum.Normal,
TargetJoinType= OrderJoinTypeEnum.Normal,
};
var IsInsertClass= base.ParmJObj.GetInt("IsChaBan");
if (IsInsertClass == 1)
{
demodel.JoinType = OrderJoinTypeEnum.InsertClass;
}
if (demodel.OrderType == OrderTypeEnum.CourseOrder && demodel.ClassId <= 0)
{
return ApiResult.ParamIsNull("请传递班级id");
......@@ -493,11 +506,11 @@ namespace Edu.WebApi.Controllers.Course
if (demodel.OrderType == OrderTypeEnum.CourseOrder)
{
if (demodel.IsChaBan == 0)
if (demodel.JoinType == OrderJoinTypeEnum.Normal)
{
demodel.StartClassHours = 0;
}
else if (demodel.IsChaBan == 1)
else if (demodel.JoinType == OrderJoinTypeEnum.InsertClass)
{
if (demodel.CourseId <= 0)
{
......@@ -588,7 +601,7 @@ namespace Edu.WebApi.Controllers.Course
model.OrderNature,
OrderNatureName = model.OrderNature.ToName(),
model.OldPreferPrice,
model.IsChaBan,
IsChaBan=model.JoinType== OrderJoinTypeEnum.InsertClass?1:0,
model.CourseId,
model.StartClassHours,
EffectTime = Common.ConvertHelper.FormatDate(model.EffectTime),
......@@ -1033,7 +1046,14 @@ namespace Edu.WebApi.Controllers.Course
x.CourseId,
x.CourseName,
x.StartClassHours,
x.IsChaBan,
x.JoinType,
JoinTypeName= x.JoinType.ToName(),
x.TargetJoinType,
TargetJoinTypeName=x.TargetJoinType.ToName(),
x.SourceOrderId,
x.SourceClassName,
x.TargetOrderId,
x.TargetClassName,
x.EffectStatus,
x.EffectStatusStr,
EffectTime=Common.ConvertHelper.FormatDate(x.EffectTime),
......@@ -1181,7 +1201,14 @@ namespace Edu.WebApi.Controllers.Course
x.ClassId,
x.CourseId,
x.CourseName,
x.IsChaBan,
x.JoinType,
JoinTypeName=x.JoinType.ToName(),
x.TargetJoinType,
TargetJoinTypeName=x.JoinType.ToName(),
x.SourceOrderId,
x.SourceClassName,
x.TargetOrderId,
x.TargetClassName,
x.StartClassHours,
x.OrderType,
x.SourceId,
......@@ -1340,7 +1367,14 @@ namespace Edu.WebApi.Controllers.Course
x.ClassSchoolId,
x.ClassName,
OpenTime=Common.ConvertHelper.FormatDate(x.OpenTime),
x.IsChaBan,
x.JoinType,
JoinTypeName=x.JoinType.ToName(),
x.TargetJoinType,
TargetJoinTypeName=x.TargetJoinType.ToName(),
x.SourceOrderId,
x.SourceClassName,
x.TargetOrderId,
x.TargetClassName,
x.StartClassHours,
x.CourseName,
x.TradeWay,
......
......@@ -129,7 +129,7 @@ namespace Edu.WebApi.Controllers.Course
Unit_Price = base.ParmJObj.GetDecimal("Class_Price"),//成交单价
PreferPrice = base.ParmJObj.GetDecimal("PreferPrice"),//应收,
Income = 0,
HelpEnterId=0,
HelpEnterId=oldOrderModel.HelpEnterId,
GeneralOccupation="",
EduOccupation="",
SaleRemark =base.ParmJObj.GetStringValue("SaleRemark"),//销售备注
......@@ -140,12 +140,14 @@ namespace Edu.WebApi.Controllers.Course
OldPreferPrice = base.ParmJObj.GetDecimal("PreferPrice"),//应收,
CourseId=0,
StartClassHours=0,
IsChaBan=0,
UpOrderId=0,
VisitorReserveId=0,
IsRenewOrder=1,
JoinType= Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder,
TargetJoinType= Common.Enum.Sale.OrderJoinTypeEnum.Normal,
};
orderModel.RenewOrderId = OrderId;
orderModel.SourceOrderId = OrderId;
orderModel.Group_Id = base.UserInfo.Group_Id;
orderModel.School_Id = base.UserInfo.School_Id;
orderModel.Dept_Id = base.UserInfo.DeptId;
......@@ -159,6 +161,10 @@ namespace Edu.WebApi.Controllers.Course
orderModel.UpdateTime = DateTime.Now;
orderModel.OldGuestId = guestId;
bool flag = orderModule.SetClassOrderModule(orderModel, base.UserInfo, base.CheckUserActionAuth("Edit_Order"), out string message);
if (flag)
{
flag = orderModule.UpdateOrderJoinTypeModule(OrderId, orderModel.OrderId, Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder);
}
return flag ? ApiResult.Success() : ApiResult.Failed(message: message);
}
......
......@@ -256,7 +256,13 @@ namespace Edu.WebApi.Controllers.Course
item.EnterName,
item.EnterID,
item.IsRenewOrder,
item.RenewOrderId
item.RenewOrderId,
item.JoinType,
JoinTypeName=item.JoinType.ToName(),
item.TargetJoinType,
TargetJoinTypeName=item.TargetJoinType.ToName(),
item.TargetOrderId,
item.SourceOrderId,
});
}
pageModel.Count = rowsCount;
......
......@@ -7,6 +7,7 @@ using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Linq;
namespace Edu.WebApi.Controllers.EduTask
{
......@@ -29,6 +30,11 @@ namespace Edu.WebApi.Controllers.EduTask
/// </summary>
private readonly ClassModule classModule = AOP.AOPHelper.CreateAOPObject<ClassModule>();
/// <summary>
/// 订单处理类对象
/// </summary>
private readonly OrderModule orderModule = new OrderModule();
/// <summary>
/// 新增订单转班申请
/// </summary>
......@@ -46,8 +52,51 @@ namespace Edu.WebApi.Controllers.EduTask
EffectiveDate = base.ParmJObj.GetDateTime("EffectiveDate"),
Remarks = base.ParmJObj.GetStringValue("Remarks"),
OrderGuestId=base.ParmJObj.GetInt("OrderGuestId"),
OutTime=base.ParmJObj.GetDateTime("OutTime"),
};
var classModel = classModule.GetClassModule(model.NewClassId );
if (Convert.ToDateTime(Common.ConvertHelper.FormatDate(model.OutTime)) < Convert.ToDateTime(Common.ConvertHelper.FormatDate(DateTime.Now)) )
{
return ApiResult.ParamIsNull(message: "转出本班日期必须大于今天!");
}
if (Convert.ToDateTime(Common.ConvertHelper.FormatDate(model.OutTime)) > Convert.ToDateTime(Common.ConvertHelper.FormatDate(model.EffectiveDate)))
{
return ApiResult.ParamIsNull(message: "新订单生效日期必须大于或等于转出本班日期!");
}
var oldOrderModel = orderModule.GetClassOrderInfoModule(model.SourceOrderId);
if (oldOrderModel == null)
{
return ApiResult.ParamIsNull(message: "原订单号不存在!");
}
if (oldOrderModel.PreferPrice != (oldOrderModel.Income + oldOrderModel.PlatformTax - oldOrderModel.Refund))
{
return ApiResult.ParamIsNull(message: "原订单款未收齐,不能转班!");
}
var classModel = classModule.GetClassModule(model.NewClassId);
if (oldOrderModel.CourseId != model.NewCourseId)
{
return ApiResult.ParamIsNull(message: "原订单号课程和新班级课程不一致,请核实!");
}
var guestModel = classModule.GetOrderGuestListModule(new Model.ViewModel.Course.RB_Order_Guest_ViewModel()
{
OrderId = model.SourceOrderId,
QEffectStatus = 1,
OrderGuestIds = model.OrderGuestId.ToString()
})?.FirstOrDefault();
if (guestModel != null && guestModel.Id > 0)
{
var surplusHours= orderChangeModule.GetClassPlanTimeHoursModule(oldOrderModel.ClassId,
Common.ConvertHelper.FormatDate(DateTime.Now),
Common.ConvertHelper.FormatDate(model.EffectiveDate)
);
if (guestModel.ValidClassHours - surplusHours <= 0)
{
return ApiResult.ParamIsNull(message: "当前学员预计没有足够转班的有效课时,请注意核对!");
}
}
else
{
return ApiResult.ParamIsNull(message: "学员新增状态不正确,请核实!");
}
model.CreateBy = base.UserInfo.Id;
model.CreateTime = DateTime.Now;
model.Group_Id = base.UserInfo.Group_Id;
......
......@@ -92,6 +92,10 @@ namespace Edu.WebApi.Controllers.User
{
return ApiResult.Failed(message: $"此账号【{ account }】已禁用,如需使用请联系管理员!");
}
if (model.LeaveStatus == 4)
{
return ApiResult.Failed(message: $"此账号【{ account }】已禁用,如需使用请联系管理员!");
}
//生成教育token
IUserInfoToken eduUserInfo = new EduUserInfoToken()
{
......
......@@ -343,7 +343,23 @@ namespace Edu.WebApi.Controllers.User
public ApiResult GetTeacherPageList()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = Common.Plugin.JsonHelper.DeserializeObject<RB_Teacher_ViewModel>(RequestParm.Msg.ToString());
var query = new RB_Teacher_ViewModel()
{
TeacherName = base.ParmJObj.GetStringValue("TeacherName"),
TeacherTel = base.ParmJObj.GetStringValue("TeacherTel"),
IsShow = base.ParmJObj.GetInt("IsShow"),
AuditStatus = (AccountStatusEnum)base.ParmJObj.GetInt("AuditStatus"),
School_Id = -1,
};
var schoolId = base.ParmJObj.GetStringValue("School_Id");
if (!string.IsNullOrEmpty(schoolId))
{
Int32.TryParse(schoolId, out int NewSchoolId);
if (NewSchoolId >= 0)
{
query.School_Id = NewSchoolId;
}
}
query.Group_Id = base.UserInfo.Group_Id;
var list = teacherModule.GetTeacherPageListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
......@@ -1530,5 +1546,23 @@ namespace Edu.WebApi.Controllers.User
return ApiResult.Success(data: list);
}
#endregion
#region 调整员工类型
/// <summary>
/// 调整员工类型
/// </summary>
/// <returns></returns>
public ApiResult SetEmployeeType()
{
var AccountId = base.ParmJObj.GetInt("AccountId");
var AccountType = (AccountTypeEnum)base.ParmJObj.GetInt("AccountType");
var Remark = base.ParmJObj.GetStringValue("Remark");
var targetAccountType = (AccountTypeEnum)base.ParmJObj.GetInt("TargetAccountType");
var flag = managerModule.SetEmployeeTypeModule(targetAccountType, AccountId, AccountType,Remark);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
#endregion
}
}
\ No newline at end of file
using Edu.Common.Plugin;
using Edu.Module.Course;
using Edu.Module.Duty;
using Edu.Module.EduTask;
using System;
using System.IO;
using System.Threading;
......@@ -27,6 +28,11 @@ namespace Edu.WebApi.Timers
/// </summary>
private static readonly Module.EduTask.StopStudentClassModule stopStudentClassModule = AOP.AOPHelper.CreateAOPObject<Module.EduTask.StopStudentClassModule>();
/// <summary>
/// 转班订单处理类对象
/// </summary>
private static readonly OrderChangeModule orderChangeModule = new OrderChangeModule();
static System.Timers.Timer timer1;//计时器
static System.Timers.Timer timer2;//定期处理未值班数据
......@@ -35,6 +41,8 @@ namespace Edu.WebApi.Timers
static System.Timers.Timer timer4;//定时处理停课申请生效日期以及学员的上课状态
static System.Timers.Timer changeOrder;//批量处理转班订单
public static void RunTimer()
{
timer1 = new System.Timers.Timer
......@@ -66,6 +74,12 @@ namespace Edu.WebApi.Timers
timer4.Elapsed += new System.Timers.ElapsedEventHandler(UpdateAuditThroughStudent);
timer4.Enabled = true;
changeOrder = new System.Timers.Timer()
{
Interval = (1000 * 60) * (1 * 10) //10分钟执行一次
};
changeOrder.Elapsed += new System.Timers.ElapsedEventHandler(BatchDealChangeOrder);
changeOrder.Enabled = true;
}
public static void RunStop()
......@@ -74,6 +88,7 @@ namespace Edu.WebApi.Timers
timer2.Enabled = false;
timer3.Enabled = false;
timer4.Enabled = false;
changeOrder.Enabled = false;
}
/// <summary>
......@@ -83,6 +98,7 @@ namespace Edu.WebApi.Timers
private static int inTimer2 = 0;
private static int inTimer3 = 0;
private static int inTimer4 = 0;
private static int changeOrder_Timer = 0;
/// <summary>
/// 清理文件
......@@ -174,5 +190,19 @@ namespace Edu.WebApi.Timers
Interlocked.Exchange(ref inTimer4, 0);
}
}
/// <summary>
/// 批量处理转班订单
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void BatchDealChangeOrder(object sender, System.Timers.ElapsedEventArgs e)
{
if (Interlocked.Exchange(ref changeOrder_Timer, 1) == 0)
{
orderChangeModule.GetChangeOrderListModule();
Interlocked.Exchange(ref changeOrder_Timer, 0);
}
}
}
}
\ No newline at end of file
......@@ -31,8 +31,8 @@
"MongoDBName": "Edu",
"WkHtmlToPdfPath": "D:/wkhtmltopdf/bin/",
"FinanceKey": "FinanceMallInsertToERPViitto2020",
"PaymentFinanceApi": "http://192.168.1.13:8083/api/Mall/InsertFinanceBatchForMallIn",
"IncomeFinanceApi": "http://192.168.20.9:8083/api/Mall/InsertFinanceBatchForMallOut",
"PaymentFinanceApi": "http://192.168.20.7:8083/api/Mall/InsertFinanceBatchForMallOut",
"IncomeFinanceApi": "http://192.168.20.7:8083/api/Mall/InsertFinanceBatchForMallIn",
"sTenpayNotifyUrl": "http://eduapi.oytour.com/api/WeChatPay/WxPayCallback", //下单回调地址
"sTenpayNotifyRefundUrl": "http://eduapi.oytour.com/api/WeChatPay/Refunds", //退款回调地址
"FinanceDateBase": "reborn_finance",
......
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