Commit 16073ec3 authored by 黄奎's avatar 黄奎

订单转班修改

parent 778796c4
...@@ -22,4 +22,40 @@ namespace Edu.Common.Enum.Sale ...@@ -22,4 +22,40 @@ namespace Edu.Common.Enum.Sale
[EnumField("留学就业订单")] [EnumField("留学就业订单")]
StudyabroadOrder = 2, 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 ...@@ -210,11 +210,6 @@ namespace Edu.Model.Entity.Course
/// </summary> /// </summary>
public int StartClassHours { get; set; } public int StartClassHours { get; set; }
/// <summary>
/// 是否插班报入(1是)
/// </summary>
public int IsChaBan { get; set; }
/// <summary> /// <summary>
/// 销售返佣类型 0百分比 1固定值 /// 销售返佣类型 0百分比 1固定值
/// </summary> /// </summary>
...@@ -279,9 +274,29 @@ namespace Edu.Model.Entity.Course ...@@ -279,9 +274,29 @@ namespace Edu.Model.Entity.Course
/// </summary> /// </summary>
public DateTime? LXConfirmDate { get; set; } public DateTime? LXConfirmDate { get; set; }
/// ///<summary>
/// 是否续班订单(1-是) /// 是否续班订单(1-是)
/// </summary> /// </summary>
public int IsRenewOrder { get; set; } 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 ...@@ -32,7 +32,7 @@ namespace Edu.Model.Entity.Course
public string GuestName { get; set; } public string GuestName { get; set; }
/// <summary> /// <summary>
/// 状态 1正常 2退学 3-申请中,4-驳回申请,5-停课,6-停课申请中 /// 状态 1正常 2退学 3-退课申请,4-驳回申请,5-停课,6-停课申请中,7-转班申请中
/// </summary> /// </summary>
public int GuestState { get; set; } public int GuestState { get; set; }
......
...@@ -80,5 +80,15 @@ namespace Edu.Model.Entity.EduTask ...@@ -80,5 +80,15 @@ namespace Edu.Model.Entity.EduTask
/// 审核状态(见枚举) /// 审核状态(见枚举)
/// </summary> /// </summary>
public Edu.Common.Enum.EduTask.EduTaskRrocessStatus VerifyStatus { get; set; } 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 ...@@ -80,6 +80,11 @@ namespace Edu.Model.Entity.EduTask
/// </summary> /// </summary>
public DateTime UpdateTime { get; set; } public DateTime UpdateTime { get; set; }
/// <summary>
/// 转出本班时间
/// </summary>
public DateTime OutTime { get; set; }
} }
} }
...@@ -119,6 +119,11 @@ namespace Edu.Model.ViewModel.Course ...@@ -119,6 +119,11 @@ namespace Edu.Model.ViewModel.Course
/// </summary> /// </summary>
public int ClassMinutes { get; set; } public int ClassMinutes { get; set; }
/// <summary>
/// 课时数
/// </summary>
public decimal TimeHour { get; set; }
/// <summary> /// <summary>
/// 完成情况 /// 完成情况
/// </summary> /// </summary>
......
...@@ -84,6 +84,7 @@ namespace Edu.Model.ViewModel.Course ...@@ -84,6 +84,7 @@ namespace Edu.Model.ViewModel.Course
case 4: str = "驳回申请"; break; case 4: str = "驳回申请"; break;
case 5: str = "停课"; break; case 5: str = "停课"; break;
case 6: str = "停课申请中"; break; case 6: str = "停课申请中"; break;
case 7: str = "转班申请中"; break;
} }
return str; return str;
} }
...@@ -128,16 +129,29 @@ namespace Edu.Model.ViewModel.Course ...@@ -128,16 +129,29 @@ namespace Edu.Model.ViewModel.Course
public int StartClassHours { get; set; } public int StartClassHours { get; set; }
/// <summary> /// <summary>
/// 是否插班报入(1-是) /// 订单报入类型(1-正常报入,2-插班报入,3-续费订单,4-转班订单,5-分拆订单)
/// </summary> /// </summary>
public int IsChaBan { get; set; } public OrderJoinTypeEnum JoinType { get; set; }
/// <summary> /// <summary>
/// 生效时间 /// 原订单报入类型(1-正常报入,2-插班报入,3-续费订单,4-转班订单,5-分拆订单)
/// </summary> /// </summary>
public DateTime EffectTime { get; set; } public OrderJoinTypeEnum TargetJoinType { get; set; }
/// <summary>
/// 原订单编号
/// </summary>
public int SourceOrderId { get; set; }
/// <summary>
/// 目标订单编号
/// </summary>
public int TargetOrderId { get; set; }
/// <summary>
/// 生效时间
/// </summary>
public DateTime EffectTime { get; set; }
/// <summary> /// <summary>
/// 停课生效时间 /// 停课生效时间
...@@ -192,6 +206,8 @@ namespace Edu.Model.ViewModel.Course ...@@ -192,6 +206,8 @@ namespace Edu.Model.ViewModel.Course
/// 已上课次数 /// 已上课次数
/// </summary> /// </summary>
public int Ranks { get; set; } public int Ranks { get; set; }
///<summary>
/// 是否续班订单 /// 是否续班订单
/// </summary> /// </summary>
public int IsRenewOrder { get; set; } public int IsRenewOrder { get; set; }
......
...@@ -9,6 +9,11 @@ namespace Edu.Model.ViewModel.Course ...@@ -9,6 +9,11 @@ namespace Edu.Model.ViewModel.Course
[Serializable] [Serializable]
public class RB_Order_ViewModel : Model.Entity.Course.RB_Order public class RB_Order_ViewModel : Model.Entity.Course.RB_Order
{ {
/// <summary>
/// 订单编号【查询使用】
/// </summary>
public string QOrderIds { get; set; }
/// <summary> /// <summary>
/// 班级ids /// 班级ids
/// </summary> /// </summary>
...@@ -197,8 +202,23 @@ namespace Edu.Model.ViewModel.Course ...@@ -197,8 +202,23 @@ namespace Edu.Model.ViewModel.Course
} }
/// <summary> /// <summary>
/// 园学员编号【续课使用】 /// 学员编号【续课使用,转班使用】
/// </summary> /// </summary>
public int OldGuestId { get; set; } 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
...@@ -60,5 +60,10 @@ namespace Edu.Model.ViewModel.EduTask ...@@ -60,5 +60,10 @@ namespace Edu.Model.ViewModel.EduTask
/// 结束时间 /// 结束时间
/// </summary> /// </summary>
public string EndTime { get; set; } public string EndTime { get; set; }
/// <summary>
/// 查询生效时间
/// </summary>
public string QEffectiveDate { get; set; }
} }
} }
using Edu.AOP.CustomerAttribute; using Edu.AOP.CustomerAttribute;
using Edu.Common.Enum; using Edu.Common.Enum;
using Edu.Common.Enum.Course; using Edu.Common.Enum.Course;
using Edu.Common.Plugin;
using Edu.Model.CacheModel; using Edu.Model.CacheModel;
using Edu.Model.Entity.Course; using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Course;
...@@ -1296,7 +1297,12 @@ namespace Edu.Module.Course ...@@ -1296,7 +1297,12 @@ namespace Edu.Module.Course
IsRenew = item.IsRenewOrder, IsRenew = item.IsRenewOrder,
item.RenewOrderId, item.RenewOrderId,
CheckStatus = checkStatus, CheckStatus = checkStatus,
item.IsChaBan, item.JoinType,
JoinTypeName=item.JoinType.ToName(),
item.TargetJoinType,
TargetJoinTypeName=item.TargetJoinType.ToName(),
item.SourceOrderId,
item.TargetOrderId,
item.StartClassHours, item.StartClassHours,
item.CourseName, item.CourseName,
item.EffectStatus, item.EffectStatus,
......
...@@ -340,7 +340,7 @@ namespace Edu.Module.Course ...@@ -340,7 +340,7 @@ namespace Edu.Module.Course
#region 报价单创建订单 #region 报价单创建订单
/// <summary> /// <summary>
/// 创建订单 ///报价单转订单
/// </summary> /// </summary>
/// <param name="offerId"></param> /// <param name="offerId"></param>
/// <param name="detailList"></param> /// <param name="detailList"></param>
...@@ -383,7 +383,10 @@ namespace Edu.Module.Course ...@@ -383,7 +383,10 @@ namespace Edu.Module.Course
PreferPrice = item.OriginalPrice, PreferPrice = item.OriginalPrice,
RectorRemark = "", RectorRemark = "",
Refund = 0, Refund = 0,
RenewOrderId = 0, JoinType= OrderJoinTypeEnum.Normal,
TargetJoinType= OrderJoinTypeEnum.Normal,
TargetOrderId=0,
SourceOrderId=0,
SaleRemark = item.Remark, SaleRemark = item.Remark,
TeacherRemark = "", TeacherRemark = "",
TradeWay = Common.Enum.Course.TradeWayEnum.OnLine, TradeWay = Common.Enum.Course.TradeWayEnum.OnLine,
......
...@@ -310,6 +310,36 @@ namespace Edu.Module.Course ...@@ -310,6 +310,36 @@ namespace Edu.Module.Course
/// <returns></returns> /// <returns></returns>
[TransactionCallHandler] [TransactionCallHandler]
public virtual bool SetClassOrderModule(RB_Order_ViewModel demodel, UserInfo userInfo, bool isEditOrder, out string message) 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; bool flag = false;
message = ""; message = "";
...@@ -321,7 +351,7 @@ namespace Edu.Module.Course ...@@ -321,7 +351,7 @@ namespace Edu.Module.Course
message = "班级不存在"; message = "班级不存在";
return flag; return flag;
} }
if (demodel.IsChaBan == 0) if (demodel.JoinType == OrderJoinTypeEnum.Normal)
{ {
demodel.CourseId = classModel.CouseId; demodel.CourseId = classModel.CouseId;
} }
...@@ -464,7 +494,7 @@ namespace Edu.Module.Course ...@@ -464,7 +494,7 @@ namespace Edu.Module.Course
message = "成交单价不能小于最低价格"; message = "成交单价不能小于最低价格";
return flag; 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); var newPreferPrice = Math.Round(coursePrice / courseModel.ClassHours * (courseModel.ClassHours - demodel.StartClassHours) * demodel.GuestNum, 2);
if (demodel.PreferPrice != (newPreferPrice - demodel.LessPrice)) if (demodel.PreferPrice != (newPreferPrice - demodel.LessPrice))
...@@ -474,6 +504,10 @@ namespace Edu.Module.Course ...@@ -474,6 +504,10 @@ namespace Edu.Module.Course
return flag; return flag;
} }
} }
else if (demodel.JoinType == OrderJoinTypeEnum.TransOrder)
{
//不验证应收
}
else else
{ {
if (demodel.PreferPrice != (demodel.Unit_Price * demodel.GuestNum - demodel.LessPrice)) if (demodel.PreferPrice != (demodel.Unit_Price * demodel.GuestNum - demodel.LessPrice))
...@@ -490,7 +524,7 @@ namespace Edu.Module.Course ...@@ -490,7 +524,7 @@ namespace Edu.Module.Course
string SaleRemark = ""; string SaleRemark = "";
if (demodel.OrderId > 0) if (demodel.OrderId > 0)
{ {
if (demodel.IsChaBan == 1) if (demodel.JoinType == OrderJoinTypeEnum.InsertClass)
{ {
if (orderModel.EffectStatus != 2) if (orderModel.EffectStatus != 2)
{ {
...@@ -605,7 +639,7 @@ namespace Edu.Module.Course ...@@ -605,7 +639,7 @@ namespace Edu.Module.Course
} }
else else
{ {
if (demodel.IsChaBan == 1) if (demodel.JoinType == OrderJoinTypeEnum.InsertClass)
{ {
if (demodel.EffectTime < Convert.ToDateTime(Common.ConvertHelper.FormatDate(DateTime.Now))) if (demodel.EffectTime < Convert.ToDateTime(Common.ConvertHelper.FormatDate(DateTime.Now)))
{ {
...@@ -694,8 +728,8 @@ namespace Edu.Module.Course ...@@ -694,8 +728,8 @@ namespace Edu.Module.Course
} }
#endregion #endregion
#region 续课订单 添加学员名单 #region 续课订单和转班订单 添加学员名单
if (flag && demodel.RenewOrderId > 0 && demodel.OldGuestId>0) if (flag && demodel.OldGuestId > 0)
{ {
var oldGuestModel = order_GuestRepository.GetEntity(demodel.OldGuestId); var oldGuestModel = order_GuestRepository.GetEntity(demodel.OldGuestId);
var guestModel = new RB_Order_Guest_ViewModel() var guestModel = new RB_Order_Guest_ViewModel()
...@@ -705,16 +739,16 @@ namespace Edu.Module.Course ...@@ -705,16 +739,16 @@ namespace Edu.Module.Course
ClassId = demodel.ClassId, ClassId = demodel.ClassId,
GuestName = oldGuestModel?.GuestName ?? "", GuestName = oldGuestModel?.GuestName ?? "",
GuestState = 1, GuestState = 1,
Profession = oldGuestModel?.Profession??"", Profession = oldGuestModel?.Profession ?? "",
Sex = oldGuestModel?.Sex??1, Sex = oldGuestModel?.Sex ?? 1,
Age = oldGuestModel?.Age ?? 18, Age = oldGuestModel?.Age ?? 18,
Mobile = oldGuestModel?.Mobile ?? "", Mobile = oldGuestModel?.Mobile ?? "",
Basics = oldGuestModel?.Basics, Basics = oldGuestModel?.Basics,
Education = oldGuestModel?.Education?? GuestEducationEnum.N2, Education = oldGuestModel?.Education ?? GuestEducationEnum.N2,
GuestSource = demodel.OrderSource, GuestSource = demodel.OrderSource,
LearningGoals = oldGuestModel?.LearningGoals??GuestLearningGoalsEnum.Love, LearningGoals = oldGuestModel?.LearningGoals ?? GuestLearningGoalsEnum.Love,
Contact = oldGuestModel?.Contact??"", Contact = oldGuestModel?.Contact ?? "",
ContactMobile = oldGuestModel?.ContactMobile?? "", ContactMobile = oldGuestModel?.ContactMobile ?? "",
Status = 0, Status = 0,
Group_Id = demodel.Group_Id, Group_Id = demodel.Group_Id,
School_Id = demodel.School_Id, School_Id = demodel.School_Id,
...@@ -723,7 +757,7 @@ namespace Edu.Module.Course ...@@ -723,7 +757,7 @@ namespace Edu.Module.Course
UpdateBy = demodel.UpdateBy, UpdateBy = demodel.UpdateBy,
UpdateTime = demodel.UpdateTime, UpdateTime = demodel.UpdateTime,
DropOutRemark = "", DropOutRemark = "",
IDCard = oldGuestModel?.IDCard??"", IDCard = oldGuestModel?.IDCard ?? "",
Domicile = oldGuestModel?.Domicile ?? "", Domicile = oldGuestModel?.Domicile ?? "",
ContactAddress = oldGuestModel?.ContactAddress ?? "", ContactAddress = oldGuestModel?.ContactAddress ?? "",
SourceId = 0, SourceId = 0,
...@@ -732,12 +766,21 @@ namespace Edu.Module.Course ...@@ -732,12 +766,21 @@ namespace Edu.Module.Course
VolunteerMajor = oldGuestModel?.VolunteerMajor ?? "", VolunteerMajor = oldGuestModel?.VolunteerMajor ?? "",
Price = 0, Price = 0,
StudyRemark = "", StudyRemark = "",
TotalHours = Convert.ToInt32(courseModel.ClassHours),
CompleteHours = 0, CompleteHours = 0,
MakeUpHours = 0, MakeUpHours = 0,
StuIcon = "", 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); SetOrderGuestInfo(guestModel, out string Nmessage);
demodel.NewGuestId = guestModel.Id;
} }
#endregion #endregion
} }
...@@ -780,6 +823,7 @@ namespace Edu.Module.Course ...@@ -780,6 +823,7 @@ namespace Edu.Module.Course
return flag; return flag;
} }
/// <summary> /// <summary>
/// 更新订单提成比例 /// 更新订单提成比例
/// </summary> /// </summary>
...@@ -1546,11 +1590,14 @@ namespace Edu.Module.Course ...@@ -1546,11 +1590,14 @@ namespace Edu.Module.Course
return "转入班级剩余招收人数不足,请核实后再试"; return "转入班级剩余招收人数不足,请核实后再试";
} }
Dictionary<string, object> keyValues = new Dictionary<string, object>() { Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Order_ViewModel.ClassId),classId} { nameof(RB_Order_ViewModel.ClassId),classId}
}; };
List<WhereHelper> wheres = new List<WhereHelper>() { List<WhereHelper> wheres = new List<WhereHelper>()
new WhereHelper(){ {
new WhereHelper()
{
FiledName=nameof(RB_Order_ViewModel.OrderId), FiledName=nameof(RB_Order_ViewModel.OrderId),
FiledValue=orderId, FiledValue=orderId,
OperatorEnum=OperatorEnum.Equal OperatorEnum=OperatorEnum.Equal
...@@ -1563,11 +1610,14 @@ namespace Edu.Module.Course ...@@ -1563,11 +1610,14 @@ namespace Edu.Module.Course
var glist = order_GuestRepository.GetOrderGuestListRepository(new RB_Order_Guest_ViewModel() { OrderId = orderId }); var glist = order_GuestRepository.GetOrderGuestListRepository(new RB_Order_Guest_ViewModel() { OrderId = orderId });
foreach (var item in glist) 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} { nameof(RB_Order_Guest_ViewModel.ClassId),classId}
}; };
List<WhereHelper> wheres1 = new List<WhereHelper>() { List<WhereHelper> wheres1 = new List<WhereHelper>()
new WhereHelper(){ {
new WhereHelper()
{
FiledName=nameof(RB_Order_Guest_ViewModel.Id), FiledName=nameof(RB_Order_Guest_ViewModel.Id),
FiledValue=item.Id, FiledValue=item.Id,
OperatorEnum=OperatorEnum.Equal OperatorEnum=OperatorEnum.Equal
...@@ -1866,6 +1916,7 @@ namespace Edu.Module.Course ...@@ -1866,6 +1916,7 @@ namespace Edu.Module.Course
return flag; return flag;
} }
int Id = order_GuestRepository.Insert(dmodel); int Id = order_GuestRepository.Insert(dmodel);
dmodel.Id = Id;
flag = Id > 0; flag = Id > 0;
if (flag) if (flag)
{ {
...@@ -2047,6 +2098,23 @@ namespace Edu.Module.Course ...@@ -2047,6 +2098,23 @@ namespace Edu.Module.Course
if (orderList.Any()) if (orderList.Any())
{ {
string orderIds = string.Join(",", orderList.Select(x => x.OrderId)); 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 }); var remarkList = order_RemarkRepository.GetOrderRemarkListRepository(new RB_Order_Remark_ViewModel() { QOrderIds = orderIds });
//获取名单列表 //获取名单列表
...@@ -2055,6 +2123,14 @@ namespace Edu.Module.Course ...@@ -2055,6 +2123,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(); 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) 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.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.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(); item.RectorRemarkList = remarkList.Where(x => x.OrderId == item.OrderId && x.Type == 3).ToList();
...@@ -2431,7 +2507,6 @@ namespace Edu.Module.Course ...@@ -2431,7 +2507,6 @@ namespace Edu.Module.Course
return orderRepository.GetOrderNoComplete(demodel); return orderRepository.GetOrderNoComplete(demodel);
} }
/// <summary> /// <summary>
/// 获取列表 /// 获取列表
/// </summary> /// </summary>
......
...@@ -8,6 +8,7 @@ using VT.FW.DB; ...@@ -8,6 +8,7 @@ using VT.FW.DB;
using Edu.Model.Entity.EduTask; using Edu.Model.Entity.EduTask;
using Edu.Repository.EduTask; using Edu.Repository.EduTask;
using Edu.Common.Enum.User; using Edu.Common.Enum.User;
using Edu.Common.Enum.Sale;
namespace Edu.Module.Course namespace Edu.Module.Course
{ {
...@@ -169,7 +170,7 @@ namespace Edu.Module.Course ...@@ -169,7 +170,7 @@ namespace Edu.Module.Course
var orderList = orderRepository.GetOrderListRepository(new RB_Order_ViewModel() var orderList = orderRepository.GetOrderListRepository(new RB_Order_ViewModel()
{ {
OrderState = Common.Enum.Course.OrderStateEnum.Normal, OrderState = Common.Enum.Course.OrderStateEnum.Normal,
IsChaBan = 1, JoinType = OrderJoinTypeEnum.InsertClass,
Q_EffectTime = Common.ConvertHelper.FormatDate(DateTime.Now) Q_EffectTime = Common.ConvertHelper.FormatDate(DateTime.Now)
}); });
if (orderList != null && orderList.Count > 0) if (orderList != null && orderList.Count > 0)
......
...@@ -77,6 +77,11 @@ namespace Edu.Module.EduTask ...@@ -77,6 +77,11 @@ namespace Edu.Module.EduTask
/// </summary> /// </summary>
private readonly RB_Order_ChangeRepository order_ChangeRepository = new RB_Order_ChangeRepository(); private readonly RB_Order_ChangeRepository order_ChangeRepository = new RB_Order_ChangeRepository();
/// <summary>
/// 转班订单
/// </summary>
private readonly OrderChangeModule orderChangeModule = new OrderChangeModule();
/// <summary> /// <summary>
/// 获取教务单据分页列表 /// 获取教务单据分页列表
/// </summary> /// </summary>
...@@ -986,6 +991,17 @@ namespace Edu.Module.EduTask ...@@ -986,6 +991,17 @@ namespace Edu.Module.EduTask
flag = student_StopClassRepository.UpdateStudentStopClass(receiptModel, auditModel.AuditStatus); flag = student_StopClassRepository.UpdateStudentStopClass(receiptModel, auditModel.AuditStatus);
} }
} }
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; return flag;
} }
......
using Edu.AOP.CustomerAttribute; using Edu.AOP.CustomerAttribute;
using Edu.Cache.User; using Edu.Cache.User;
using Edu.Common;
using Edu.Common.Enum.Course; 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.Entity.EduTask;
using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.EduTask; using Edu.Model.ViewModel.EduTask;
using Edu.Module.Course; using Edu.Module.Course;
using Edu.Repository.Course; using Edu.Repository.Course;
using Edu.Repository.EduTask; using Edu.Repository.EduTask;
using Edu.Repository.Log;
using Edu.Repository.User;
using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using VT.FW.DB;
namespace Edu.Module.EduTask namespace Edu.Module.EduTask
{ {
...@@ -59,6 +68,21 @@ namespace Edu.Module.EduTask ...@@ -59,6 +68,21 @@ namespace Edu.Module.EduTask
/// </summary> /// </summary>
private readonly RB_Order_GuestRepository guestRepository = new RB_Order_GuestRepository(); 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>
/// 新增订单转班、分拆 /// 新增订单转班、分拆
/// </summary> /// </summary>
...@@ -88,13 +112,77 @@ namespace Edu.Module.EduTask ...@@ -88,13 +112,77 @@ namespace Edu.Module.EduTask
CreateTime = model.CreateTime, CreateTime = model.CreateTime,
UpdateBy = model.UpdateBy, UpdateBy = model.UpdateBy,
UpdateTime = model.UpdateTime, 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); flag = education_ReceiptRepository.SetEducationReceiptRepository(educationReceipt, out message);
Dictionary<string, object> guestFileds = new Dictionary<string, object>()
{
{nameof(RB_Order_Guest_ViewModel.GuestState),7 }
};
if (flag)
{
flag = guestRepository.Update(guestFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), model.OrderGuestId));
}
} }
return flag; 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>
/// 订单转班处理类方法 /// 订单转班处理类方法
/// </summary> /// </summary>
...@@ -105,23 +193,29 @@ namespace Edu.Module.EduTask ...@@ -105,23 +193,29 @@ namespace Edu.Module.EduTask
if (receiptModel.RelationId > 0) if (receiptModel.RelationId > 0)
{ {
var orderChangeModel = order_ChangeRepository.GetEntity<RB_Order_Change_ViewModel>(receiptModel.RelationId); var orderChangeModel = order_ChangeRepository.GetEntity<RB_Order_Change_ViewModel>(receiptModel.RelationId);
if (orderChangeModel != null && orderChangeModel.Id > 0) if (orderChangeModel != null && orderChangeModel.Id > 0)
{ {
if (orderChangeModel.EffectiveDate < DateTime.Now)
{
return false;
}
var oldOrderModel = orderRepository.GetEntity(orderChangeModel.SourceOrderId); var oldOrderModel = orderRepository.GetEntity(orderChangeModel.SourceOrderId);
var newClassModel = classRepository.GetEntity(orderChangeModel.NewClassId); var newClassModel = classRepository.GetEntity(orderChangeModel.NewClassId);
var newCourseModel = courseRepository.GetEntity(orderChangeModel.NewCourseId); var newCourseModel = courseRepository.GetEntity(orderChangeModel.NewCourseId);
var userInfo = UserReidsCache.GetUserLoginInfo(oldOrderModel.EnterID); var userInfo = UserReidsCache.GetUserLoginInfo(oldOrderModel.EnterID);
var guestClassHours = classCheckRepository.GetGuestFinishMinutesRepository(orderChangeModel.OrderGuestId.ToString())?.FirstOrDefault(); var guestClassHours = GetGuestFinishMinutesModule(orderChangeModel.OrderGuestId.ToString());
var guestModel = guestRepository.GetEntity(orderChangeModel.OrderGuestId);
var guestModel = guestRepository.GetEntity(orderChangeModel.OrderGuestId);
//计算课时单价 //计算课时单价
//老订单应收 //老订单应收
decimal oldPreferPrice = oldOrderModel.PreferPrice / guestModel.TotalHours * guestClassHours.FinishClassHours; decimal oldPreferPrice = oldOrderModel.PreferPrice / guestModel.TotalHours * guestClassHours.FinishClassHours;
//新订单应收 //新订单应收
decimal newPreferPrice = oldOrderModel.PreferPrice - oldPreferPrice; decimal newPreferPrice = oldOrderModel.PreferPrice - oldPreferPrice;
//老订单实收 //退款
decimal oldIncome = 0; decimal backMoney = oldOrderModel.Income + oldOrderModel.PlatformTax - oldPreferPrice;
#region 生成新订单
var orderModel = new RB_Order_ViewModel() var orderModel = new RB_Order_ViewModel()
{ {
OrderId = 0, OrderId = 0,
...@@ -142,14 +236,15 @@ namespace Edu.Module.EduTask ...@@ -142,14 +236,15 @@ namespace Edu.Module.EduTask
LessPrice = 0, LessPrice = 0,
OrderNature = oldOrderModel.OrderNature, OrderNature = oldOrderModel.OrderNature,
OldPreferPrice = newPreferPrice,//应收, OldPreferPrice = newPreferPrice,//应收,
CourseId = 0, CourseId = orderChangeModel.NewCourseId,
StartClassHours = 0, StartClassHours = 0,
IsChaBan = 0,
UpOrderId = 0, UpOrderId = 0,
VisitorReserveId = 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.Group_Id = userInfo.Group_Id;
orderModel.School_Id = userInfo.School_Id; orderModel.School_Id = userInfo.School_Id;
orderModel.Dept_Id = userInfo.DeptId; orderModel.Dept_Id = userInfo.DeptId;
...@@ -162,10 +257,224 @@ namespace Edu.Module.EduTask ...@@ -162,10 +257,224 @@ namespace Edu.Module.EduTask
orderModel.UpdateBy = userInfo.Id; orderModel.UpdateBy = userInfo.Id;
orderModel.UpdateTime = DateTime.Now; orderModel.UpdateTime = DateTime.Now;
orderModel.OldGuestId = orderChangeModel.OrderGuestId; 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 },
};
if (flag)
{
flag = guestRepository.Update(guestFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), orderChangeModel.OrderGuestId));
}
#endregion
#region 生成财务单据
if (flag)
{
var RelevanceFrId = CreateExpenditure(backMoney,guestModel.Id,guestModel.GuestName, userInfo, oldOrderModel.ClassId, oldOrderModel.OrderId, out string msg1);
var InCome = CreateInCome(backMoney, 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; 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 = 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;
}
} }
} }
...@@ -225,6 +225,10 @@ WHERE 1=1 ...@@ -225,6 +225,10 @@ WHERE 1=1
{ {
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.Status), (int)query.Status); 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) if (query.ClassStatus > 0)
{ {
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassStatus), (int)query.ClassStatus); builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassStatus), (int)query.ClassStatus);
......
...@@ -81,6 +81,7 @@ WHERE 1=1 ...@@ -81,6 +81,7 @@ WHERE 1=1
SELECT A.*,IFNULL(B.RoomName,'') AS RoomName,IFNULL(T.TeacherName,'') AS TeacherName,IFNULL(T.TeacherHead,'') AS UserIcon SELECT A.*,IFNULL(B.RoomName,'') AS RoomName,IFNULL(T.TeacherName,'') AS TeacherName,IFNULL(T.TeacherHead,'') AS UserIcon
,Time.StartTime,time.EndTime,time.ClassTimeId ,Time.StartTime,time.EndTime,time.ClassTimeId
,TIMESTAMPDIFF(MINUTE, CONCAT('2020-12-16',' ',time.StartTime), CONCAT('2020-12-16',' ',time.EndTime)) AS ClassMinutes ,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 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_teacher AS T ON A.TeacherId=T.TId
LEFT JOIN rb_class_time AS time ON A.ClassPlanId=Time.ClassPlanId LEFT JOIN rb_class_time AS time ON A.ClassPlanId=Time.ClassPlanId
...@@ -127,7 +128,7 @@ WHERE 1=1 ...@@ -127,7 +128,7 @@ WHERE 1=1
} }
if (!string.IsNullOrEmpty(query.StartTime)) 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)) if (!string.IsNullOrEmpty(query.EndTime))
{ {
......
...@@ -27,14 +27,18 @@ namespace Edu.Repository.Course ...@@ -27,14 +27,18 @@ namespace Edu.Repository.Course
{ {
where += $@" and o.{nameof(RB_Order_ViewModel.Group_Id)} ={demodel.Group_Id}"; where += $@" and o.{nameof(RB_Order_ViewModel.Group_Id)} ={demodel.Group_Id}";
} }
if (demodel.School_Id > 0) //if (demodel.School_Id > 0)
{ //{
where += $@" and o.{nameof(RB_Order_ViewModel.School_Id)} ={demodel.School_Id}"; // where += $@" and o.{nameof(RB_Order_ViewModel.School_Id)} ={demodel.School_Id}";
} //}
if (demodel.OrderId > 0) if (demodel.OrderId > 0)
{ {
where += $@" and o.{nameof(RB_Order_ViewModel.OrderId)} ={demodel.OrderId}"; 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) if (demodel.OrderType > 0)
{ {
where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)demodel.OrderType}"; where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)demodel.OrderType}";
...@@ -98,9 +102,9 @@ namespace Edu.Repository.Course ...@@ -98,9 +102,9 @@ namespace Edu.Repository.Course
{ {
where += $@" and o.{nameof(RB_Order_ViewModel.LXConfirmDate)} <='{demodel.ConfirmETime} 23:59:59'"; 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)) if (!string.IsNullOrEmpty(demodel.Q_EffectTime))
{ {
...@@ -920,9 +924,9 @@ where {where} order by {orderBy} ...@@ -920,9 +924,9 @@ where {where} order by {orderBy}
{ {
where += $@" and o.{nameof(RB_Order_ViewModel.LXConfirmDate)} <='{demodel.ConfirmETime} 23:59:59'"; 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)) if (!string.IsNullOrEmpty(demodel.Q_EffectTime))
{ {
......
...@@ -34,6 +34,10 @@ namespace Edu.Repository.Course ...@@ -34,6 +34,10 @@ namespace Edu.Repository.Course
{ {
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.Id)} ={demodel.Id}"; 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) if (demodel.OrderId > 0)
{ {
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.OrderId)} ={demodel.OrderId}"; where += $@" and A.{nameof(RB_Order_Guest_ViewModel.OrderId)} ={demodel.OrderId}";
...@@ -60,15 +64,16 @@ namespace Edu.Repository.Course ...@@ -60,15 +64,16 @@ namespace Edu.Repository.Course
} }
if (demodel.QEffectStatus == 1) 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 = $@" string sql = $@"
SELECT A.*,IFNULL(B.IsChaBan,0) AS IsChaBan,IFNULL(B.StartClassHours,0) AS StartClassHours,IFNULL(C.CourseName,'') AS CourseName SELECT A.*,IFNULL(B.JoinType,0) AS JoinType,IFNULL(B.TargetJoinType,0) AS TargetJoinType,IFNULL(B.StartClassHours,0) AS StartClassHours
,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId,sc.StopClassEffectTime ,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 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) 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 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 {where}"; WHERE {where}";
return Get<RB_Order_Guest_ViewModel>(sql).ToList(); return Get<RB_Order_Guest_ViewModel>(sql).ToList();
} }
...@@ -88,8 +93,9 @@ WHERE {where}"; ...@@ -88,8 +93,9 @@ WHERE {where}";
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT A.* ,IFNULL(course.CourseName,'') AS CourseName,tOrder.CourseId,tOrder.OrderType,tOrder.StartClassHours,tOrder.IsChaBan,tOrder.EffectTime SELECT A.* ,IFNULL(course.CourseName,'') AS CourseName,tOrder.CourseId,tOrder.OrderType,tOrder.StartClassHours
,tOrder.EffectStatus,tOrder.UpOrderId,sc.StopClassEffectTime ,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 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 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 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
...@@ -226,13 +232,8 @@ WHERE 1=1 AND A.Status=0 ...@@ -226,13 +232,8 @@ WHERE 1=1 AND A.Status=0
{ {
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.GuestState)} ={demodel.GuestState}"; 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 = $@" 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 ,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 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 LEFT JOIN rb_class as c on a.ClassId=c.ClassId
...@@ -254,8 +255,9 @@ WHERE {where}"; ...@@ -254,8 +255,9 @@ WHERE {where}";
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" 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 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
,plan.TotalPlanNum,planr.Ranks ,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId,sc.StopClassEffectTime ,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 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_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) LEFT JOIN rb_course AS C ON (B.CourseId=C.CourseId AND B.CourseId>0 AND B.OrderType=1)
...@@ -309,9 +311,6 @@ WHERE 1=1 and A.Status=0 and class.Status=0 and b.OrderState<>3 ...@@ -309,9 +311,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(); return GetPage<RB_Order_Guest_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
} }
/// <summary> /// <summary>
/// 获取分页列表 /// 获取分页列表
/// </summary> /// </summary>
...@@ -325,8 +324,10 @@ WHERE 1=1 and A.Status=0 and class.Status=0 and b.OrderState<>3 ...@@ -325,8 +324,10 @@ WHERE 1=1 and A.Status=0 and class.Status=0 and b.OrderState<>3
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" 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 SELECT A.*,IFNULL(B.JoinType,0) AS JoinType,IFNULL(B.TargetJoinType,0) AS TargetJoinType,IFNULL(B.StartClassHours,0) AS StartClassHours,school.SName as SchoolName
,plan.TotalPlanNum,planr.Ranks ,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId,sc.StopClassEffectTime ,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 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_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) 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; ...@@ -3,6 +3,7 @@ using Edu.Model.Entity.Course;
using Edu.Model.Entity.EduTask; using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.EduTask; using Edu.Model.ViewModel.EduTask;
using Edu.Repository.EduTask;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
...@@ -27,6 +28,11 @@ namespace Edu.Repository.Course ...@@ -27,6 +28,11 @@ namespace Edu.Repository.Course
/// </summary> /// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository(); private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary>
/// 订单转班仓储层对象
/// </summary>
private readonly RB_Order_ChangeRepository order_ChangeRepository = new RB_Order_ChangeRepository();
/// <summary> /// <summary>
/// 获取学员退课单据列表 /// 获取学员退课单据列表
/// </summary> /// </summary>
...@@ -133,5 +139,34 @@ WHERE 1=1 "); ...@@ -133,5 +139,34 @@ WHERE 1=1 ");
} }
return flag; 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 = 1;
}
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 ...@@ -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>
/// 新增修改教务单据 /// 新增修改教务单据
/// </summary> /// </summary>
......
...@@ -771,7 +771,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -771,7 +771,7 @@ namespace Edu.WebApi.Controllers.Course
List<object> guestList = new List<object>(); List<object> guestList = new List<object>();
foreach (var item in orderGuestList.Where(x => x.GuestState == 1 || x.GuestState == 6 || (x.GuestState == 5 && x.StopClassEffectTime.HasValue && Convert.ToDateTime(Common.ConvertHelper.FormatDate(x.StopClassEffectTime)) >= data.ClassDate))) foreach (var item in orderGuestList.Where(x => x.GuestState == 1 || x.GuestState == 6 || (x.GuestState == 5 && x.StopClassEffectTime.HasValue && Convert.ToDateTime(Common.ConvertHelper.FormatDate(x.StopClassEffectTime)) >= 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 guestList.Add(new
{ {
...@@ -788,7 +788,12 @@ namespace Edu.WebApi.Controllers.Course ...@@ -788,7 +788,12 @@ namespace Edu.WebApi.Controllers.Course
item.TotalHours, item.TotalHours,
item.CompleteHours, item.CompleteHours,
item.StartClassHours, item.StartClassHours,
item.IsChaBan, item.JoinType,
JoinTypeName=item.JoinType.ToName(),
item.TargetJoinType,
TargetJoinTypeName=item.TargetJoinType.ToName(),
item.SourceOrderId,
item.TargetOrderId,
item.EffectStatus, item.EffectStatus,
item.EffectStatusStr, item.EffectStatusStr,
EffectTime = Common.ConvertHelper.FormatDate(item.EffectTime), EffectTime = Common.ConvertHelper.FormatDate(item.EffectTime),
......
...@@ -57,11 +57,11 @@ namespace Edu.WebApi.Controllers.Course ...@@ -57,11 +57,11 @@ namespace Edu.WebApi.Controllers.Course
List<object> result = new List<object>(); List<object> result = new List<object>();
foreach (var x in list) foreach (var x in list)
{ {
int IsChaBan = 0;//不能插班报入 int IsInsertClass = 0;//不能插班报入
int SurplusNum = x.ClassPersion - x.OrderStudentCount; int SurplusNum = x.ClassPersion - x.OrderStudentCount;
if (x.ClassStatus == ClassStatusEnum.StudyIng && SurplusNum > 0) if (x.ClassStatus == ClassStatusEnum.StudyIng && SurplusNum > 0)
{ {
IsChaBan = 1;//可以插班报入 IsInsertClass = 1;//可以插班报入
} }
var obj = new var obj = new
{ {
...@@ -102,7 +102,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -102,7 +102,7 @@ namespace Edu.WebApi.Controllers.Course
x.SchoolName, x.SchoolName,
UpdateTime = Common.ConvertHelper.FormatTime(x.UpdateTime), UpdateTime = Common.ConvertHelper.FormatTime(x.UpdateTime),
x.OtherCourseList, x.OtherCourseList,
IsChaBan, IsChaBan= IsInsertClass,
}; };
result.Add(obj); result.Add(obj);
} }
...@@ -188,7 +188,12 @@ namespace Edu.WebApi.Controllers.Course ...@@ -188,7 +188,12 @@ namespace Edu.WebApi.Controllers.Course
x.CourseId, x.CourseId,
x.CourseName, x.CourseName,
x.StartClassHours, x.StartClassHours,
x.IsChaBan, x.JoinType,
x.TargetJoinType,
x.TargetOrderId,
x.TargetClassName,
x.SourceOrderId,
x.SourceClassName,
x.ClassSchoolId, x.ClassSchoolId,
x.TradeWay, x.TradeWay,
x.Class_Price, x.Class_Price,
...@@ -233,6 +238,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -233,6 +238,7 @@ namespace Edu.WebApi.Controllers.Course
x.UpOrderId, x.UpOrderId,
x.VisitorReserveId, x.VisitorReserveId,
x.RenewOrderId, x.RenewOrderId,
SaleRemarkList = x.SaleRemarkList.Select(z => new SaleRemarkList = x.SaleRemarkList.Select(z => new
{ {
z.Id, z.Id,
...@@ -453,12 +459,18 @@ namespace Edu.WebApi.Controllers.Course ...@@ -453,12 +459,18 @@ namespace Edu.WebApi.Controllers.Course
OldPreferPrice = base.ParmJObj.GetDecimal("OldPreferPrice"), OldPreferPrice = base.ParmJObj.GetDecimal("OldPreferPrice"),
CourseId = base.ParmJObj.GetInt("CourseId"), CourseId = base.ParmJObj.GetInt("CourseId"),
StartClassHours = base.ParmJObj.GetInt("StartClassHours"), StartClassHours = base.ParmJObj.GetInt("StartClassHours"),
IsChaBan=base.ParmJObj.GetInt("IsChaBan"),
EffectTime=base.ParmJObj.GetDateTime("EffectTime"), EffectTime=base.ParmJObj.GetDateTime("EffectTime"),
UpOrderId=base.ParmJObj.GetInt("UpOrderId"), UpOrderId=base.ParmJObj.GetInt("UpOrderId"),
VisitorReserveId=base.ParmJObj.GetInt("VisitorReserveId"), 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) if (demodel.OrderType == OrderTypeEnum.CourseOrder && demodel.ClassId <= 0)
{ {
return ApiResult.ParamIsNull("请传递班级id"); return ApiResult.ParamIsNull("请传递班级id");
...@@ -493,11 +505,11 @@ namespace Edu.WebApi.Controllers.Course ...@@ -493,11 +505,11 @@ namespace Edu.WebApi.Controllers.Course
if (demodel.OrderType == OrderTypeEnum.CourseOrder) if (demodel.OrderType == OrderTypeEnum.CourseOrder)
{ {
if (demodel.IsChaBan == 0) if (demodel.JoinType == OrderJoinTypeEnum.Normal)
{ {
demodel.StartClassHours = 0; demodel.StartClassHours = 0;
} }
else if (demodel.IsChaBan == 1) else if (demodel.JoinType == OrderJoinTypeEnum.InsertClass)
{ {
if (demodel.CourseId <= 0) if (demodel.CourseId <= 0)
{ {
...@@ -588,7 +600,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -588,7 +600,7 @@ namespace Edu.WebApi.Controllers.Course
model.OrderNature, model.OrderNature,
OrderNatureName = model.OrderNature.ToName(), OrderNatureName = model.OrderNature.ToName(),
model.OldPreferPrice, model.OldPreferPrice,
model.IsChaBan, IsChaBan=model.JoinType== OrderJoinTypeEnum.InsertClass?1:0,
model.CourseId, model.CourseId,
model.StartClassHours, model.StartClassHours,
EffectTime = Common.ConvertHelper.FormatDate(model.EffectTime), EffectTime = Common.ConvertHelper.FormatDate(model.EffectTime),
...@@ -1033,7 +1045,12 @@ namespace Edu.WebApi.Controllers.Course ...@@ -1033,7 +1045,12 @@ namespace Edu.WebApi.Controllers.Course
x.CourseId, x.CourseId,
x.CourseName, x.CourseName,
x.StartClassHours, x.StartClassHours,
x.IsChaBan, x.JoinType,
JoinTypeName= x.JoinType.ToName(),
x.TargetJoinType,
TargetJoinTypeName=x.TargetJoinType.ToName(),
x.SourceOrderId,
x.TargetOrderId,
x.EffectStatus, x.EffectStatus,
x.EffectStatusStr, x.EffectStatusStr,
EffectTime=Common.ConvertHelper.FormatDate(x.EffectTime), EffectTime=Common.ConvertHelper.FormatDate(x.EffectTime),
...@@ -1181,7 +1198,14 @@ namespace Edu.WebApi.Controllers.Course ...@@ -1181,7 +1198,14 @@ namespace Edu.WebApi.Controllers.Course
x.ClassId, x.ClassId,
x.CourseId, x.CourseId,
x.CourseName, 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.StartClassHours,
x.OrderType, x.OrderType,
x.SourceId, x.SourceId,
...@@ -1340,7 +1364,14 @@ namespace Edu.WebApi.Controllers.Course ...@@ -1340,7 +1364,14 @@ namespace Edu.WebApi.Controllers.Course
x.ClassSchoolId, x.ClassSchoolId,
x.ClassName, x.ClassName,
OpenTime=Common.ConvertHelper.FormatDate(x.OpenTime), 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.StartClassHours,
x.CourseName, x.CourseName,
x.TradeWay, x.TradeWay,
......
...@@ -140,12 +140,14 @@ namespace Edu.WebApi.Controllers.Course ...@@ -140,12 +140,14 @@ namespace Edu.WebApi.Controllers.Course
OldPreferPrice = base.ParmJObj.GetDecimal("PreferPrice"),//应收, OldPreferPrice = base.ParmJObj.GetDecimal("PreferPrice"),//应收,
CourseId=0, CourseId=0,
StartClassHours=0, StartClassHours=0,
IsChaBan=0,
UpOrderId=0, UpOrderId=0,
VisitorReserveId=0, VisitorReserveId=0,
IsRenewOrder=1, IsRenewOrder=1,
JoinType= Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder,
TargetJoinType= Common.Enum.Sale.OrderJoinTypeEnum.Normal,
}; };
orderModel.RenewOrderId = OrderId; orderModel.RenewOrderId = OrderId;
orderModel.SourceOrderId = OrderId;
orderModel.Group_Id = base.UserInfo.Group_Id; orderModel.Group_Id = base.UserInfo.Group_Id;
orderModel.School_Id = base.UserInfo.School_Id; orderModel.School_Id = base.UserInfo.School_Id;
orderModel.Dept_Id = base.UserInfo.DeptId; orderModel.Dept_Id = base.UserInfo.DeptId;
...@@ -159,6 +161,10 @@ namespace Edu.WebApi.Controllers.Course ...@@ -159,6 +161,10 @@ namespace Edu.WebApi.Controllers.Course
orderModel.UpdateTime = DateTime.Now; orderModel.UpdateTime = DateTime.Now;
orderModel.OldGuestId = guestId; orderModel.OldGuestId = guestId;
bool flag = orderModule.SetClassOrderModule(orderModel, base.UserInfo, base.CheckUserActionAuth("Edit_Order"), out string message); 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); return flag ? ApiResult.Success() : ApiResult.Failed(message: message);
} }
......
...@@ -256,7 +256,13 @@ namespace Edu.WebApi.Controllers.Course ...@@ -256,7 +256,13 @@ namespace Edu.WebApi.Controllers.Course
item.EnterName, item.EnterName,
item.EnterID, item.EnterID,
item.IsRenewOrder, 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; pageModel.Count = rowsCount;
......
...@@ -7,6 +7,7 @@ using Edu.WebApi.Filter; ...@@ -7,6 +7,7 @@ using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System; using System;
using System.Linq;
namespace Edu.WebApi.Controllers.EduTask namespace Edu.WebApi.Controllers.EduTask
{ {
...@@ -29,6 +30,11 @@ namespace Edu.WebApi.Controllers.EduTask ...@@ -29,6 +30,11 @@ namespace Edu.WebApi.Controllers.EduTask
/// </summary> /// </summary>
private readonly ClassModule classModule = AOP.AOPHelper.CreateAOPObject<ClassModule>(); private readonly ClassModule classModule = AOP.AOPHelper.CreateAOPObject<ClassModule>();
/// <summary>
/// 订单处理类对象
/// </summary>
private readonly OrderModule orderModule = new OrderModule();
/// <summary> /// <summary>
/// 新增订单转班申请 /// 新增订单转班申请
/// </summary> /// </summary>
...@@ -46,8 +52,51 @@ namespace Edu.WebApi.Controllers.EduTask ...@@ -46,8 +52,51 @@ namespace Edu.WebApi.Controllers.EduTask
EffectiveDate = base.ParmJObj.GetDateTime("EffectiveDate"), EffectiveDate = base.ParmJObj.GetDateTime("EffectiveDate"),
Remarks = base.ParmJObj.GetStringValue("Remarks"), Remarks = base.ParmJObj.GetStringValue("Remarks"),
OrderGuestId=base.ParmJObj.GetInt("OrderGuestId"), 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.CreateBy = base.UserInfo.Id;
model.CreateTime = DateTime.Now; model.CreateTime = DateTime.Now;
model.Group_Id = base.UserInfo.Group_Id; model.Group_Id = base.UserInfo.Group_Id;
......
using Edu.Common.Plugin; using Edu.Common.Plugin;
using Edu.Module.Course; using Edu.Module.Course;
using Edu.Module.Duty; using Edu.Module.Duty;
using Edu.Module.EduTask;
using System; using System;
using System.IO; using System.IO;
using System.Threading; using System.Threading;
...@@ -27,6 +28,11 @@ namespace Edu.WebApi.Timers ...@@ -27,6 +28,11 @@ namespace Edu.WebApi.Timers
/// </summary> /// </summary>
private static readonly Module.EduTask.StopStudentClassModule stopStudentClassModule = AOP.AOPHelper.CreateAOPObject<Module.EduTask.StopStudentClassModule>(); 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 timer1;//计时器
static System.Timers.Timer timer2;//定期处理未值班数据 static System.Timers.Timer timer2;//定期处理未值班数据
...@@ -35,6 +41,8 @@ namespace Edu.WebApi.Timers ...@@ -35,6 +41,8 @@ namespace Edu.WebApi.Timers
static System.Timers.Timer timer4;//定时处理停课申请生效日期以及学员的上课状态 static System.Timers.Timer timer4;//定时处理停课申请生效日期以及学员的上课状态
static System.Timers.Timer changeOrder;//批量处理转班订单
public static void RunTimer() public static void RunTimer()
{ {
timer1 = new System.Timers.Timer timer1 = new System.Timers.Timer
...@@ -66,6 +74,12 @@ namespace Edu.WebApi.Timers ...@@ -66,6 +74,12 @@ namespace Edu.WebApi.Timers
timer4.Elapsed += new System.Timers.ElapsedEventHandler(UpdateAuditThroughStudent); timer4.Elapsed += new System.Timers.ElapsedEventHandler(UpdateAuditThroughStudent);
timer4.Enabled = true; timer4.Enabled = true;
changeOrder= new System.Timers.Timer()
{
Interval = (1000 * 60) * (1) //1小时执行一次
};
changeOrder.Elapsed += new System.Timers.ElapsedEventHandler(BatchDealChangeOrder);
changeOrder.Enabled = true;
} }
public static void RunStop() public static void RunStop()
...@@ -74,6 +88,7 @@ namespace Edu.WebApi.Timers ...@@ -74,6 +88,7 @@ namespace Edu.WebApi.Timers
timer2.Enabled = false; timer2.Enabled = false;
timer3.Enabled = false; timer3.Enabled = false;
timer4.Enabled = false; timer4.Enabled = false;
changeOrder.Enabled = false;
} }
/// <summary> /// <summary>
...@@ -83,6 +98,7 @@ namespace Edu.WebApi.Timers ...@@ -83,6 +98,7 @@ namespace Edu.WebApi.Timers
private static int inTimer2 = 0; private static int inTimer2 = 0;
private static int inTimer3 = 0; private static int inTimer3 = 0;
private static int inTimer4 = 0; private static int inTimer4 = 0;
private static int changeOrder_Timer = 0;
/// <summary> /// <summary>
/// 清理文件 /// 清理文件
...@@ -174,5 +190,19 @@ namespace Edu.WebApi.Timers ...@@ -174,5 +190,19 @@ namespace Edu.WebApi.Timers
Interlocked.Exchange(ref inTimer4, 0); 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
{ {
"ConnectionStrings": { "ConnectionStrings": {
"DefaultConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ", "DefaultConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=test_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient", "DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ", "FinanceConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient", "FinanceConnectionPName": "MySql.Data.MySqlClient",
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
"MongoDBName": "Edu", "MongoDBName": "Edu",
"WkHtmlToPdfPath": "D:/wkhtmltopdf/bin/", "WkHtmlToPdfPath": "D:/wkhtmltopdf/bin/",
"FinanceKey": "FinanceMallInsertToERPViitto2020", "FinanceKey": "FinanceMallInsertToERPViitto2020",
"PaymentFinanceApi": "http://192.168.1.13:8083/api/Mall/InsertFinanceBatchForMallIn", "PaymentFinanceApi": "http://192.168.20.7:8083/api/Mall/InsertFinanceBatchForMallOut",
"IncomeFinanceApi": "http://192.168.20.9:8083/api/Mall/InsertFinanceBatchForMallOut", "IncomeFinanceApi": "http://192.168.20.7:8083/api/Mall/InsertFinanceBatchForMallIn",
"sTenpayNotifyUrl": "http://eduapi.oytour.com/api/WeChatPay/WxPayCallback", //下单回调地址 "sTenpayNotifyUrl": "http://eduapi.oytour.com/api/WeChatPay/WxPayCallback", //下单回调地址
"sTenpayNotifyRefundUrl": "http://eduapi.oytour.com/api/WeChatPay/Refunds", //退款回调地址 "sTenpayNotifyRefundUrl": "http://eduapi.oytour.com/api/WeChatPay/Refunds", //退款回调地址
"FinanceDateBase": "reborn_finance", "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