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; }
......
...@@ -79,6 +79,16 @@ namespace Edu.Model.Entity.EduTask ...@@ -79,6 +79,16 @@ namespace Edu.Model.Entity.EduTask
/// <summary> /// <summary>
/// 审核状态(见枚举) /// 审核状态(见枚举)
/// </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,
......
This diff is collapsed.
...@@ -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;
} }
......
This diff is collapsed.
...@@ -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)
...@@ -335,7 +336,7 @@ LEFT JOIN (SELECT ClassId,COUNT(*) Ranks from rb_class_plan where `Status`=0 and ...@@ -335,7 +336,7 @@ LEFT JOIN (SELECT ClassId,COUNT(*) Ranks from rb_class_plan where `Status`=0 and
LEFT JOIN rb_teacher as teacher on teacher.TId=class.Teacher_Id LEFT JOIN rb_teacher as teacher on teacher.TId=class.Teacher_Id
LEFT JOIN rb_school as school on school.SId=class.School_Id LEFT JOIN rb_school as school on school.SId=class.School_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 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 and class.Status=0 and b.OrderState<>3 "); WHERE 1=1 and A.Status=0 and class.Status=0 and b.OrderState<>3 ");
if (demodel.Group_Id > 0) if (demodel.Group_Id > 0)
{ {
builder.AppendFormat($@" AND A.{nameof(RB_Order_Guest_ViewModel.Group_Id)} ={demodel.Group_Id}"); builder.AppendFormat($@" AND A.{nameof(RB_Order_Guest_ViewModel.Group_Id)} ={demodel.Group_Id}");
......
...@@ -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",
"DataStatisticsConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ", "DataStatisticsConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DataStatisticsConnectionPName": "MySql.Data.MySqlClient", "DataStatisticsConnectionPName": "MySql.Data.MySqlClient",
"LogConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_sys;CharSet=utf8mb4; Convert Zero Datetime=true; ", "LogConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_sys;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"LogConnectionPName": "MySql.Data.MySqlClient" "LogConnectionPName": "MySql.Data.MySqlClient"
}, },
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
"Default": "Information", "Default": "Information",
"Microsoft": "Warning", "Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information" "Microsoft.Hosting.Lifetime": "Information"
} }
}, },
"SettlementRate": "0.60", "SettlementRate": "0.60",
"SellCommissionFFBL": "0.15", "SellCommissionFFBL": "0.15",
"JwtSecretKey": "@VIITTOREBORN*2018", "JwtSecretKey": "@VIITTOREBORN*2018",
"MallJwtSecretKey": "@VIITTOREBORN*2018123", "MallJwtSecretKey": "@VIITTOREBORN*2018123",
"JwtExpirTime": 86400, "JwtExpirTime": 86400,
"IsSendMsg": 2, "IsSendMsg": 2,
"AllowedHosts": "*", "AllowedHosts": "*",
"OpenValidation": "False", "OpenValidation": "False",
"UploadSiteUrl": "http://192.168.1.36:8120", "UploadSiteUrl": "http://192.168.1.36:8120",
"ViewFileSiteUrl": "https://viitto-1301420277.cos.ap-chengdu.myqcloud.com", "ViewFileSiteUrl": "https://viitto-1301420277.cos.ap-chengdu.myqcloud.com",
"ErpViewFileSiteUrl": "http://imgfile.oytour.com", "ErpViewFileSiteUrl": "http://imgfile.oytour.com",
"Mongo": "mongodb://47.96.25.130:27017", "Mongo": "mongodb://47.96.25.130:27017",
"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",
"EduDateBase": "uat_reborn_edu", "EduDateBase": "uat_reborn_edu",
"JHTenantId": "15", "JHTenantId": "15",
"JHMallBaseId": "5", "JHMallBaseId": "5",
"Notice_BaseKey": "Notice_BaseKey", "Notice_BaseKey": "Notice_BaseKey",
"RabbitMqConfig": { "RabbitMqConfig": {
"HostName": "47.96.25.130", "HostName": "47.96.25.130",
"VirtualHost": "/", "VirtualHost": "/",
"Port": 5672, "Port": 5672,
"UserName": "guest", "UserName": "guest",
"Password": "viitto2019", "Password": "viitto2019",
"QueenName": "vt_sys_message_test" "QueenName": "vt_sys_message_test"
}, },
"RedisSetting": { "RedisSetting": {
"RedisServer": "47.96.23.199", "RedisServer": "47.96.23.199",
"RedisPort": "6379", "RedisPort": "6379",
"RedisPwd": "Viitto2018" "RedisPwd": "Viitto2018"
}, },
"VirtualDirectory": "WebFile", "VirtualDirectory": "WebFile",
//未填写 未打分 下降比例 //未填写 未打分 下降比例
"OKRMatterValue": "30,100,100", "OKRMatterValue": "30,100,100",
//是否是线上环境 //是否是线上环境
"IsOnline": false, "IsOnline": false,
//退课流程编号 //退课流程编号
"BackClassFlowId": 1, "BackClassFlowId": 1,
//分区校长岗位编号 //分区校长岗位编号
"SchoolPostId": 3, "SchoolPostId": 3,
//教务长 //教务长
"JiaoWuZhang": 8, "JiaoWuZhang": 8,
//留学就业部门主管审核编号[王涛] //留学就业部门主管审核编号[王涛]
"StudyAbroadDirectorId": 64, "StudyAbroadDirectorId": 64,
//留学就业部门负责人审核编号[姚顺先] //留学就业部门负责人审核编号[姚顺先]
"StudyAbroadManagerId": 52, "StudyAbroadManagerId": 52,
//合同默认抬头 //合同默认抬头
"ContractDefaultTitle": "JH-DZ-CD-", "ContractDefaultTitle": "JH-DZ-CD-",
//消息推送AppId //消息推送AppId
"PushAppId": "JiaHeJiaoYu", "PushAppId": "JiaHeJiaoYu",
//是否推送消息 //是否推送消息
"IsPushMessage": "1", "IsPushMessage": "1",
//超过下班时间60分钟不能打卡 //超过下班时间60分钟不能打卡
"MoreThanMinutes": 60, "MoreThanMinutes": 60,
//连续缺课课时 //连续缺课课时
"AbsentHours": 12, "AbsentHours": 12,
//值班时间验证日期 //值班时间验证日期
"DutyDate": "2021-06-30", "DutyDate": "2021-06-30",
//调课流程编号 //调课流程编号
"ChangeClassFlowId": 2, "ChangeClassFlowId": 2,
//停课流程编号 //停课流程编号
"StopClassFlowId": 3, "StopClassFlowId": 3,
//临时上课邀请流程编号 //临时上课邀请流程编号
"TempInvitationClassFlowId": 4, "TempInvitationClassFlowId": 4,
//订单转班流程编号 //订单转班流程编号
"OrderTransClassFlowId": 5 "OrderTransClassFlowId": 5
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment