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

订单转班修改

parent 778796c4
......@@ -22,4 +22,40 @@ namespace Edu.Common.Enum.Sale
[EnumField("留学就业订单")]
StudyabroadOrder = 2,
}
/// <summary>
/// 订单报入类型
/// </summary>
public enum OrderJoinTypeEnum
{
/// <summary>
/// 正常报入
/// </summary>
[EnumField("正常报入")]
Normal = 1,
/// <summary>
/// 插班报入
/// </summary>
[EnumField("插班报入")]
InsertClass = 2,
/// <summary>
/// 续费订单
/// </summary>
[EnumField("续费订单")]
RenewOrder = 3,
/// <summary>
/// 转班订单
/// </summary>
[EnumField("转班订单")]
TransOrder = 4,
/// <summary>
/// 分拆订单
/// </summary>
[EnumField("分拆订单")]
SplitOrder = 5,
}
}
......@@ -210,11 +210,6 @@ namespace Edu.Model.Entity.Course
/// </summary>
public int StartClassHours { get; set; }
/// <summary>
/// 是否插班报入(1是)
/// </summary>
public int IsChaBan { get; set; }
/// <summary>
/// 销售返佣类型 0百分比 1固定值
/// </summary>
......@@ -279,9 +274,29 @@ namespace Edu.Model.Entity.Course
/// </summary>
public DateTime? LXConfirmDate { get; set; }
///
///<summary>
/// 是否续班订单(1-是)
/// </summary>
public int IsRenewOrder { get; set; }
/// <summary>
/// 订单报入类型(1-正常报入,2-插班报入,3-续费订单,4-转班订单,5-分拆订单)
/// </summary>
public OrderJoinTypeEnum JoinType { get; set; }
/// <summary>
/// 原订单报入类型(1-正常报入,2-插班报入,3-续费订单,4-转班订单,5-分拆订单)
/// </summary>
public OrderJoinTypeEnum TargetJoinType { get; set; }
/// <summary>
/// 原订单编号
/// </summary>
public int SourceOrderId { get; set; }
/// <summary>
/// 目标订单编号
/// </summary>
public int TargetOrderId { get; set; }
}
}
......@@ -32,7 +32,7 @@ namespace Edu.Model.Entity.Course
public string GuestName { get; set; }
/// <summary>
/// 状态 1正常 2退学 3-申请中,4-驳回申请,5-停课,6-停课申请中
/// 状态 1正常 2退学 3-退课申请,4-驳回申请,5-停课,6-停课申请中,7-转班申请中
/// </summary>
public int GuestState { get; set; }
......
......@@ -80,5 +80,15 @@ namespace Edu.Model.Entity.EduTask
/// 审核状态(见枚举)
/// </summary>
public Edu.Common.Enum.EduTask.EduTaskRrocessStatus VerifyStatus { get; set; }
/// <summary>
/// 是否生成相应单据
/// </summary>
public int IsCreate { get; set; }
/// <summary>
/// 生效时间
/// </summary>
public DateTime? EffectiveDate { get; set; }
}
}
......@@ -80,6 +80,11 @@ namespace Edu.Model.Entity.EduTask
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 转出本班时间
/// </summary>
public DateTime OutTime { get; set; }
}
}
......@@ -119,6 +119,11 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public int ClassMinutes { get; set; }
/// <summary>
/// 课时数
/// </summary>
public decimal TimeHour { get; set; }
/// <summary>
/// 完成情况
/// </summary>
......
......@@ -84,6 +84,7 @@ namespace Edu.Model.ViewModel.Course
case 4: str = "驳回申请"; break;
case 5: str = "停课"; break;
case 6: str = "停课申请中"; break;
case 7: str = "转班申请中"; break;
}
return str;
}
......@@ -128,16 +129,29 @@ namespace Edu.Model.ViewModel.Course
public int StartClassHours { get; set; }
/// <summary>
/// 是否插班报入(1-是)
/// 订单报入类型(1-正常报入,2-插班报入,3-续费订单,4-转班订单,5-分拆订单)
/// </summary>
public int IsChaBan { get; set; }
public OrderJoinTypeEnum JoinType { get; set; }
/// <summary>
/// 生效时间
/// 原订单报入类型(1-正常报入,2-插班报入,3-续费订单,4-转班订单,5-分拆订单)
/// </summary>
public DateTime EffectTime { get; set; }
public OrderJoinTypeEnum TargetJoinType { get; set; }
/// <summary>
/// 原订单编号
/// </summary>
public int SourceOrderId { get; set; }
/// <summary>
/// 目标订单编号
/// </summary>
public int TargetOrderId { get; set; }
/// <summary>
/// 生效时间
/// </summary>
public DateTime EffectTime { get; set; }
/// <summary>
/// 停课生效时间
......@@ -192,6 +206,8 @@ namespace Edu.Model.ViewModel.Course
/// 已上课次数
/// </summary>
public int Ranks { get; set; }
///<summary>
/// 是否续班订单
/// </summary>
public int IsRenewOrder { get; set; }
......
......@@ -9,6 +9,11 @@ namespace Edu.Model.ViewModel.Course
[Serializable]
public class RB_Order_ViewModel : Model.Entity.Course.RB_Order
{
/// <summary>
/// 订单编号【查询使用】
/// </summary>
public string QOrderIds { get; set; }
/// <summary>
/// 班级ids
/// </summary>
......@@ -197,8 +202,23 @@ namespace Edu.Model.ViewModel.Course
}
/// <summary>
/// 园学员编号【续课使用】
/// 学员编号【续课使用,转班使用】
/// </summary>
public int OldGuestId { get; set; }
/// <summary>
/// 学员编号【转班生成财务单据使用】
/// </summary>
public int NewGuestId { get; set; }
/// <summary>
/// 原班级名称
/// </summary>
public string SourceClassName { get; set; }
/// <summary>
/// 目标班级名称
/// </summary>
public string TargetClassName { get; set; }
}
}
\ No newline at end of file
......@@ -60,5 +60,10 @@ namespace Edu.Model.ViewModel.EduTask
/// 结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 查询生效时间
/// </summary>
public string QEffectiveDate { get; set; }
}
}
using Edu.AOP.CustomerAttribute;
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course;
......@@ -1296,7 +1297,12 @@ namespace Edu.Module.Course
IsRenew = item.IsRenewOrder,
item.RenewOrderId,
CheckStatus = checkStatus,
item.IsChaBan,
item.JoinType,
JoinTypeName=item.JoinType.ToName(),
item.TargetJoinType,
TargetJoinTypeName=item.TargetJoinType.ToName(),
item.SourceOrderId,
item.TargetOrderId,
item.StartClassHours,
item.CourseName,
item.EffectStatus,
......
......@@ -340,7 +340,7 @@ namespace Edu.Module.Course
#region 报价单创建订单
/// <summary>
/// 创建订单
///报价单转订单
/// </summary>
/// <param name="offerId"></param>
/// <param name="detailList"></param>
......@@ -383,7 +383,10 @@ namespace Edu.Module.Course
PreferPrice = item.OriginalPrice,
RectorRemark = "",
Refund = 0,
RenewOrderId = 0,
JoinType= OrderJoinTypeEnum.Normal,
TargetJoinType= OrderJoinTypeEnum.Normal,
TargetOrderId=0,
SourceOrderId=0,
SaleRemark = item.Remark,
TeacherRemark = "",
TradeWay = Common.Enum.Course.TradeWayEnum.OnLine,
......
This diff is collapsed.
......@@ -8,6 +8,7 @@ using VT.FW.DB;
using Edu.Model.Entity.EduTask;
using Edu.Repository.EduTask;
using Edu.Common.Enum.User;
using Edu.Common.Enum.Sale;
namespace Edu.Module.Course
{
......@@ -169,7 +170,7 @@ namespace Edu.Module.Course
var orderList = orderRepository.GetOrderListRepository(new RB_Order_ViewModel()
{
OrderState = Common.Enum.Course.OrderStateEnum.Normal,
IsChaBan = 1,
JoinType = OrderJoinTypeEnum.InsertClass,
Q_EffectTime = Common.ConvertHelper.FormatDate(DateTime.Now)
});
if (orderList != null && orderList.Count > 0)
......
......@@ -77,6 +77,11 @@ namespace Edu.Module.EduTask
/// </summary>
private readonly RB_Order_ChangeRepository order_ChangeRepository = new RB_Order_ChangeRepository();
/// <summary>
/// 转班订单
/// </summary>
private readonly OrderChangeModule orderChangeModule = new OrderChangeModule();
/// <summary>
/// 获取教务单据分页列表
/// </summary>
......@@ -986,6 +991,17 @@ namespace Edu.Module.EduTask
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;
}
......
This diff is collapsed.
......@@ -225,6 +225,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.Status), (int)query.Status);
}
if (query.CouseId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.CouseId), query.CouseId);
}
if (query.ClassStatus > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassStatus), (int)query.ClassStatus);
......
......@@ -81,6 +81,7 @@ WHERE 1=1
SELECT A.*,IFNULL(B.RoomName,'') AS RoomName,IFNULL(T.TeacherName,'') AS TeacherName,IFNULL(T.TeacherHead,'') AS UserIcon
,Time.StartTime,time.EndTime,time.ClassTimeId
,TIMESTAMPDIFF(MINUTE, CONCAT('2020-12-16',' ',time.StartTime), CONCAT('2020-12-16',' ',time.EndTime)) AS ClassMinutes
,time.TimeHour
FROM RB_Class_Plan AS A LEFT JOIN rb_class_room AS B ON A.ClassRoomId=B.RoomId
LEFT JOIN rb_teacher AS T ON A.TeacherId=T.TId
LEFT JOIN rb_class_time AS time ON A.ClassPlanId=Time.ClassPlanId
......@@ -127,7 +128,7 @@ WHERE 1=1
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(" AND DATE_FORMAT(A.{0},'%y/%m')>='{1}' ", nameof(RB_Class_Plan_ViewModel.ClassDate), query.StartTime);
builder.AppendFormat(" AND A.{0}>='{1}' ", nameof(RB_Class_Plan_ViewModel.ClassDate), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
......
......@@ -27,14 +27,18 @@ namespace Edu.Repository.Course
{
where += $@" and o.{nameof(RB_Order_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.School_Id > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.School_Id)} ={demodel.School_Id}";
}
//if (demodel.School_Id > 0)
//{
// where += $@" and o.{nameof(RB_Order_ViewModel.School_Id)} ={demodel.School_Id}";
//}
if (demodel.OrderId > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderId)} ={demodel.OrderId}";
}
if (!string.IsNullOrEmpty(demodel.QOrderIds))
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderId)} IN({demodel.QOrderIds})";
}
if (demodel.OrderType > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)demodel.OrderType}";
......@@ -98,9 +102,9 @@ namespace Edu.Repository.Course
{
where += $@" and o.{nameof(RB_Order_ViewModel.LXConfirmDate)} <='{demodel.ConfirmETime} 23:59:59'";
}
if (demodel.IsChaBan ==1 )
if (demodel.JoinType == OrderJoinTypeEnum.InsertClass )
{
where += $@" and o.{nameof(RB_Order_ViewModel.IsChaBan)} ={demodel.IsChaBan}";
where += $@" and o.{nameof(RB_Order_ViewModel.JoinType)} ={(int)OrderJoinTypeEnum.InsertClass}";
}
if (!string.IsNullOrEmpty(demodel.Q_EffectTime))
{
......@@ -920,9 +924,9 @@ where {where} order by {orderBy}
{
where += $@" and o.{nameof(RB_Order_ViewModel.LXConfirmDate)} <='{demodel.ConfirmETime} 23:59:59'";
}
if (demodel.IsChaBan == 1)
if (demodel.JoinType == OrderJoinTypeEnum.InsertClass)
{
where += $@" and o.{nameof(RB_Order_ViewModel.IsChaBan)} ={demodel.IsChaBan}";
where += $@" and o.{nameof(RB_Order_ViewModel.JoinType)} ={(int)OrderJoinTypeEnum.InsertClass}";
}
if (!string.IsNullOrEmpty(demodel.Q_EffectTime))
{
......
......@@ -34,6 +34,10 @@ namespace Edu.Repository.Course
{
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.Id)} ={demodel.Id}";
}
if (!string.IsNullOrEmpty(demodel.OrderGuestIds))
{
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.Id)} IN ({demodel.OrderGuestIds})";
}
if (demodel.OrderId > 0)
{
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.OrderId)} ={demodel.OrderId}";
......@@ -60,15 +64,16 @@ namespace Edu.Repository.Course
}
if (demodel.QEffectStatus == 1)
{
where += $@" AND (B.IsChaBan=0 OR (B.IsChaBan=1 AND B.EffectStatus IN(1) )) ";
where += $@" AND (B.JoinType=1 OR (B.JoinType=2 AND B.EffectStatus IN(1) )) ";
}
string sql = $@"
SELECT A.*,IFNULL(B.IsChaBan,0) AS IsChaBan,IFNULL(B.StartClassHours,0) AS StartClassHours,IFNULL(C.CourseName,'') AS CourseName
,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId,sc.StopClassEffectTime
SELECT A.*,IFNULL(B.JoinType,0) AS JoinType,IFNULL(B.TargetJoinType,0) AS TargetJoinType,IFNULL(B.StartClassHours,0) AS StartClassHours
,IFNULL(C.CourseName,'') AS CourseName,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId
,sc.StopClassEffectTime,B.SourceOrderId,B.TargetOrderId
FROM RB_Order_Guest AS A LEFT JOIN rb_order AS B ON A.OrderId=B.OrderId
LEFT JOIN rb_course AS C ON (B.CourseId=C.CourseId AND B.CourseId>0 AND B.OrderType=1)
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}";
return Get<RB_Order_Guest_ViewModel>(sql).ToList();
}
......@@ -88,8 +93,9 @@ WHERE {where}";
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.* ,IFNULL(course.CourseName,'') AS CourseName,tOrder.CourseId,tOrder.OrderType,tOrder.StartClassHours,tOrder.IsChaBan,tOrder.EffectTime
,tOrder.EffectStatus,tOrder.UpOrderId,sc.StopClassEffectTime
SELECT A.* ,IFNULL(course.CourseName,'') AS CourseName,tOrder.CourseId,tOrder.OrderType,tOrder.StartClassHours
,IFNULL(tOrder.JoinType,0) AS JoinType,IFNULL(tOrder.TargetJoinType,0) AS TargetJoinType,tOrder.EffectTime
,tOrder.EffectStatus,tOrder.UpOrderId,sc.StopClassEffectTime,tOrder.SourceOrderId,tOrder.TargetOrderId
FROM RB_Order_Guest AS A LEFT JOIN RB_Order as tOrder ON A.OrderId=tOrder.OrderId
LEFT JOIN rb_course AS course ON (tOrder.CourseId=course.CourseId AND tOrder.CourseId>0 AND tOrder.OrderType=1)
LEFT JOIN (SELECT OrderGuestId,MAX(TakeEffectTime) as StopClassEffectTime from rb_student_stopclass where IsAuditThrough=1 GROUP BY OrderGuestId) as sc on sc.OrderGuestId=a.Id
......@@ -226,13 +232,8 @@ WHERE 1=1 AND A.Status=0
{
where += $@" and A.{nameof(RB_Order_Guest_ViewModel.GuestState)} ={demodel.GuestState}";
}
if (demodel.QEffectStatus == 1)
{
where += $@" AND (B.IsChaBan=0 OR (B.IsChaBan=1 AND B.EffectStatus IN(1) )) ";
}
string sql = $@"
SELECT A.*,IFNULL(B.IsChaBan,0) AS IsChaBan,IFNULL(B.StartClassHours,0) AS StartClassHours
SELECT A.*,IFNULL(B.StartClassHours,0) AS StartClassHours
,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId
FROM RB_Order_Guest AS A LEFT JOIN rb_order AS B ON A.OrderId=B.OrderId
LEFT JOIN rb_class as c on a.ClassId=c.ClassId
......@@ -254,8 +255,9 @@ WHERE {where}";
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.IsChaBan,0) AS IsChaBan,IFNULL(B.StartClassHours,0) AS StartClassHours,IFNULL(C.CourseName,'') AS CourseName,class.ClassName,b.EnterID
,plan.TotalPlanNum,planr.Ranks ,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId,sc.StopClassEffectTime
SELECT A.*,IFNULL(B.JoinType,0) AS JoinType,IFNULL(B.TargetJoinType,0) AS TargetJoinType,IFNULL(B.StartClassHours,0) AS StartClassHours,IFNULL(C.CourseName,'') AS CourseName
,class.ClassName,b.EnterID,plan.TotalPlanNum,planr.Ranks ,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId
,sc.StopClassEffectTime,B.SourceOrderId,B.TargetOrderId
FROM RB_Order_Guest AS A LEFT JOIN rb_order AS B ON A.OrderId=B.OrderId
LEFT JOIN rb_class as class on class.ClassId=a.ClassId
LEFT JOIN rb_course AS C ON (B.CourseId=C.CourseId AND B.CourseId>0 AND B.OrderType=1)
......@@ -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();
}
/// <summary>
/// 获取分页列表
/// </summary>
......@@ -325,8 +324,10 @@ WHERE 1=1 and A.Status=0 and class.Status=0 and b.OrderState<>3
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.IsChaBan,0) AS IsChaBan,IFNULL(B.StartClassHours,0) AS StartClassHours,school.SName as SchoolName,teacher.TeacherName,IFNULL(C.CourseName,'') AS CourseName,class.ClassNo,class.ClassName,b.EnterID
,plan.TotalPlanNum,planr.Ranks ,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder,B.RenewOrderId,sc.StopClassEffectTime
SELECT A.*,IFNULL(B.JoinType,0) AS JoinType,IFNULL(B.TargetJoinType,0) AS TargetJoinType,IFNULL(B.StartClassHours,0) AS StartClassHours,school.SName as SchoolName
,teacher.TeacherName,IFNULL(C.CourseName,'') AS CourseName,class.ClassNo,class.ClassName,b.EnterID
,plan.TotalPlanNum,planr.Ranks ,B.EffectStatus,B.EffectTime,B.UpOrderId,B.OrderType,B.CourseId,B.IsRenewOrder
,B.RenewOrderId,sc.StopClassEffectTime,B.SourceOrderId,B.TargetOrderId
FROM RB_Order_Guest AS A LEFT JOIN rb_order AS B ON A.OrderId=B.OrderId
LEFT JOIN rb_class as class on class.ClassId=a.ClassId
LEFT JOIN rb_course AS C ON (B.CourseId=C.CourseId AND B.CourseId>0 AND B.OrderType=1)
......
......@@ -3,6 +3,7 @@ using Edu.Model.Entity.Course;
using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.EduTask;
using Edu.Repository.EduTask;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -27,6 +28,11 @@ namespace Edu.Repository.Course
/// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary>
/// 订单转班仓储层对象
/// </summary>
private readonly RB_Order_ChangeRepository order_ChangeRepository = new RB_Order_ChangeRepository();
/// <summary>
/// 获取学员退课单据列表
/// </summary>
......@@ -133,5 +139,34 @@ WHERE 1=1 ");
}
return flag;
}
/// <summary>
/// 更新退课相关信息
/// </summary>
/// <param name="receiptModel"></param>
/// <param name="auditModel"></param>
/// <returns></returns>
public bool UpdateGuestStateRepository(RB_Education_Receipt receiptModel, EduReceiptAudit auditModel)
{
bool flag = false;
var model = order_ChangeRepository.GetEntity(receiptModel.RelationId);
int GuestState = 0;
if (auditModel.AuditStatus == 2)
{
GuestState = 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
}
/// <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>
......
......@@ -771,7 +771,7 @@ namespace Edu.WebApi.Controllers.Course
List<object> guestList = new List<object>();
foreach (var item in orderGuestList.Where(x => x.GuestState == 1 || x.GuestState == 6 || (x.GuestState == 5 && x.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
{
......@@ -788,7 +788,12 @@ namespace Edu.WebApi.Controllers.Course
item.TotalHours,
item.CompleteHours,
item.StartClassHours,
item.IsChaBan,
item.JoinType,
JoinTypeName=item.JoinType.ToName(),
item.TargetJoinType,
TargetJoinTypeName=item.TargetJoinType.ToName(),
item.SourceOrderId,
item.TargetOrderId,
item.EffectStatus,
item.EffectStatusStr,
EffectTime = Common.ConvertHelper.FormatDate(item.EffectTime),
......
......@@ -57,11 +57,11 @@ namespace Edu.WebApi.Controllers.Course
List<object> result = new List<object>();
foreach (var x in list)
{
int IsChaBan = 0;//不能插班报入
int IsInsertClass = 0;//不能插班报入
int SurplusNum = x.ClassPersion - x.OrderStudentCount;
if (x.ClassStatus == ClassStatusEnum.StudyIng && SurplusNum > 0)
{
IsChaBan = 1;//可以插班报入
IsInsertClass = 1;//可以插班报入
}
var obj = new
{
......@@ -102,7 +102,7 @@ namespace Edu.WebApi.Controllers.Course
x.SchoolName,
UpdateTime = Common.ConvertHelper.FormatTime(x.UpdateTime),
x.OtherCourseList,
IsChaBan,
IsChaBan= IsInsertClass,
};
result.Add(obj);
}
......@@ -188,7 +188,12 @@ namespace Edu.WebApi.Controllers.Course
x.CourseId,
x.CourseName,
x.StartClassHours,
x.IsChaBan,
x.JoinType,
x.TargetJoinType,
x.TargetOrderId,
x.TargetClassName,
x.SourceOrderId,
x.SourceClassName,
x.ClassSchoolId,
x.TradeWay,
x.Class_Price,
......@@ -233,6 +238,7 @@ namespace Edu.WebApi.Controllers.Course
x.UpOrderId,
x.VisitorReserveId,
x.RenewOrderId,
SaleRemarkList = x.SaleRemarkList.Select(z => new
{
z.Id,
......@@ -453,12 +459,18 @@ namespace Edu.WebApi.Controllers.Course
OldPreferPrice = base.ParmJObj.GetDecimal("OldPreferPrice"),
CourseId = base.ParmJObj.GetInt("CourseId"),
StartClassHours = base.ParmJObj.GetInt("StartClassHours"),
IsChaBan=base.ParmJObj.GetInt("IsChaBan"),
EffectTime=base.ParmJObj.GetDateTime("EffectTime"),
UpOrderId=base.ParmJObj.GetInt("UpOrderId"),
VisitorReserveId=base.ParmJObj.GetInt("VisitorReserveId"),
JoinType= OrderJoinTypeEnum.Normal,
TargetJoinType= OrderJoinTypeEnum.Normal,
};
var IsInsertClass= base.ParmJObj.GetInt("IsChaBan");
if (IsInsertClass == 1)
{
demodel.JoinType = OrderJoinTypeEnum.InsertClass;
}
if (demodel.OrderType == OrderTypeEnum.CourseOrder && demodel.ClassId <= 0)
{
return ApiResult.ParamIsNull("请传递班级id");
......@@ -493,11 +505,11 @@ namespace Edu.WebApi.Controllers.Course
if (demodel.OrderType == OrderTypeEnum.CourseOrder)
{
if (demodel.IsChaBan == 0)
if (demodel.JoinType == OrderJoinTypeEnum.Normal)
{
demodel.StartClassHours = 0;
}
else if (demodel.IsChaBan == 1)
else if (demodel.JoinType == OrderJoinTypeEnum.InsertClass)
{
if (demodel.CourseId <= 0)
{
......@@ -588,7 +600,7 @@ namespace Edu.WebApi.Controllers.Course
model.OrderNature,
OrderNatureName = model.OrderNature.ToName(),
model.OldPreferPrice,
model.IsChaBan,
IsChaBan=model.JoinType== OrderJoinTypeEnum.InsertClass?1:0,
model.CourseId,
model.StartClassHours,
EffectTime = Common.ConvertHelper.FormatDate(model.EffectTime),
......@@ -1033,7 +1045,12 @@ namespace Edu.WebApi.Controllers.Course
x.CourseId,
x.CourseName,
x.StartClassHours,
x.IsChaBan,
x.JoinType,
JoinTypeName= x.JoinType.ToName(),
x.TargetJoinType,
TargetJoinTypeName=x.TargetJoinType.ToName(),
x.SourceOrderId,
x.TargetOrderId,
x.EffectStatus,
x.EffectStatusStr,
EffectTime=Common.ConvertHelper.FormatDate(x.EffectTime),
......@@ -1181,7 +1198,14 @@ namespace Edu.WebApi.Controllers.Course
x.ClassId,
x.CourseId,
x.CourseName,
x.IsChaBan,
x.JoinType,
JoinTypeName=x.JoinType.ToName(),
x.TargetJoinType,
TargetJoinTypeName=x.JoinType.ToName(),
x.SourceOrderId,
x.SourceClassName,
x.TargetOrderId,
x.TargetClassName,
x.StartClassHours,
x.OrderType,
x.SourceId,
......@@ -1340,7 +1364,14 @@ namespace Edu.WebApi.Controllers.Course
x.ClassSchoolId,
x.ClassName,
OpenTime=Common.ConvertHelper.FormatDate(x.OpenTime),
x.IsChaBan,
x.JoinType,
JoinTypeName=x.JoinType.ToName(),
x.TargetJoinType,
TargetJoinTypeName=x.TargetJoinType.ToName(),
x.SourceOrderId,
x.SourceClassName,
x.TargetOrderId,
x.TargetClassName,
x.StartClassHours,
x.CourseName,
x.TradeWay,
......
......@@ -140,12 +140,14 @@ namespace Edu.WebApi.Controllers.Course
OldPreferPrice = base.ParmJObj.GetDecimal("PreferPrice"),//应收,
CourseId=0,
StartClassHours=0,
IsChaBan=0,
UpOrderId=0,
VisitorReserveId=0,
IsRenewOrder=1,
JoinType= Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder,
TargetJoinType= Common.Enum.Sale.OrderJoinTypeEnum.Normal,
};
orderModel.RenewOrderId = OrderId;
orderModel.SourceOrderId = OrderId;
orderModel.Group_Id = base.UserInfo.Group_Id;
orderModel.School_Id = base.UserInfo.School_Id;
orderModel.Dept_Id = base.UserInfo.DeptId;
......@@ -159,6 +161,10 @@ namespace Edu.WebApi.Controllers.Course
orderModel.UpdateTime = DateTime.Now;
orderModel.OldGuestId = guestId;
bool flag = orderModule.SetClassOrderModule(orderModel, base.UserInfo, base.CheckUserActionAuth("Edit_Order"), out string message);
if (flag)
{
flag = orderModule.UpdateOrderJoinTypeModule(OrderId, orderModel.OrderId, Common.Enum.Sale.OrderJoinTypeEnum.RenewOrder);
}
return flag ? ApiResult.Success() : ApiResult.Failed(message: message);
}
......
......@@ -256,7 +256,13 @@ namespace Edu.WebApi.Controllers.Course
item.EnterName,
item.EnterID,
item.IsRenewOrder,
item.RenewOrderId
item.RenewOrderId,
item.JoinType,
JoinTypeName=item.JoinType.ToName(),
item.TargetJoinType,
TargetJoinTypeName=item.TargetJoinType.ToName(),
item.TargetOrderId,
item.SourceOrderId,
});
}
pageModel.Count = rowsCount;
......
......@@ -7,6 +7,7 @@ using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Linq;
namespace Edu.WebApi.Controllers.EduTask
{
......@@ -29,6 +30,11 @@ namespace Edu.WebApi.Controllers.EduTask
/// </summary>
private readonly ClassModule classModule = AOP.AOPHelper.CreateAOPObject<ClassModule>();
/// <summary>
/// 订单处理类对象
/// </summary>
private readonly OrderModule orderModule = new OrderModule();
/// <summary>
/// 新增订单转班申请
/// </summary>
......@@ -46,8 +52,51 @@ namespace Edu.WebApi.Controllers.EduTask
EffectiveDate = base.ParmJObj.GetDateTime("EffectiveDate"),
Remarks = base.ParmJObj.GetStringValue("Remarks"),
OrderGuestId=base.ParmJObj.GetInt("OrderGuestId"),
OutTime=base.ParmJObj.GetDateTime("OutTime"),
};
var classModel = classModule.GetClassModule(model.NewClassId );
if (Convert.ToDateTime(Common.ConvertHelper.FormatDate(model.OutTime)) < Convert.ToDateTime(Common.ConvertHelper.FormatDate(DateTime.Now)) )
{
return ApiResult.ParamIsNull(message: "转出本班日期必须大于今天!");
}
if (Convert.ToDateTime(Common.ConvertHelper.FormatDate(model.OutTime)) > Convert.ToDateTime(Common.ConvertHelper.FormatDate(model.EffectiveDate)))
{
return ApiResult.ParamIsNull(message: "新订单生效日期必须大于或等于转出本班日期!");
}
var oldOrderModel = orderModule.GetClassOrderInfoModule(model.SourceOrderId);
if (oldOrderModel == null)
{
return ApiResult.ParamIsNull(message: "原订单号不存在!");
}
if (oldOrderModel.PreferPrice != (oldOrderModel.Income + oldOrderModel.PlatformTax - oldOrderModel.Refund))
{
return ApiResult.ParamIsNull(message: "原订单款未收齐,不能转班!");
}
var classModel = classModule.GetClassModule(model.NewClassId);
if (oldOrderModel.CourseId != model.NewCourseId)
{
return ApiResult.ParamIsNull(message: "原订单号课程和新班级课程不一致,请核实!");
}
var guestModel = classModule.GetOrderGuestListModule(new Model.ViewModel.Course.RB_Order_Guest_ViewModel()
{
OrderId = model.SourceOrderId,
QEffectStatus = 1,
OrderGuestIds = model.OrderGuestId.ToString()
})?.FirstOrDefault();
if (guestModel != null && guestModel.Id > 0)
{
var surplusHours= orderChangeModule.GetClassPlanTimeHoursModule(oldOrderModel.ClassId,
Common.ConvertHelper.FormatDate(DateTime.Now),
Common.ConvertHelper.FormatDate(model.EffectiveDate)
);
if (guestModel.ValidClassHours - surplusHours <= 0)
{
return ApiResult.ParamIsNull(message: "当前学员预计没有足够转班的有效课时,请注意核对!");
}
}
else
{
return ApiResult.ParamIsNull(message: "学员新增状态不正确,请核实!");
}
model.CreateBy = base.UserInfo.Id;
model.CreateTime = DateTime.Now;
model.Group_Id = base.UserInfo.Group_Id;
......
using Edu.Common.Plugin;
using Edu.Module.Course;
using Edu.Module.Duty;
using Edu.Module.EduTask;
using System;
using System.IO;
using System.Threading;
......@@ -27,6 +28,11 @@ namespace Edu.WebApi.Timers
/// </summary>
private static readonly Module.EduTask.StopStudentClassModule stopStudentClassModule = AOP.AOPHelper.CreateAOPObject<Module.EduTask.StopStudentClassModule>();
/// <summary>
/// 转班订单处理类对象
/// </summary>
private static readonly OrderChangeModule orderChangeModule = new OrderChangeModule();
static System.Timers.Timer timer1;//计时器
static System.Timers.Timer timer2;//定期处理未值班数据
......@@ -35,6 +41,8 @@ namespace Edu.WebApi.Timers
static System.Timers.Timer timer4;//定时处理停课申请生效日期以及学员的上课状态
static System.Timers.Timer changeOrder;//批量处理转班订单
public static void RunTimer()
{
timer1 = new System.Timers.Timer
......@@ -66,6 +74,12 @@ namespace Edu.WebApi.Timers
timer4.Elapsed += new System.Timers.ElapsedEventHandler(UpdateAuditThroughStudent);
timer4.Enabled = true;
changeOrder= new System.Timers.Timer()
{
Interval = (1000 * 60) * (1) //1小时执行一次
};
changeOrder.Elapsed += new System.Timers.ElapsedEventHandler(BatchDealChangeOrder);
changeOrder.Enabled = true;
}
public static void RunStop()
......@@ -74,6 +88,7 @@ namespace Edu.WebApi.Timers
timer2.Enabled = false;
timer3.Enabled = false;
timer4.Enabled = false;
changeOrder.Enabled = false;
}
/// <summary>
......@@ -83,6 +98,7 @@ namespace Edu.WebApi.Timers
private static int inTimer2 = 0;
private static int inTimer3 = 0;
private static int inTimer4 = 0;
private static int changeOrder_Timer = 0;
/// <summary>
/// 清理文件
......@@ -174,5 +190,19 @@ namespace Edu.WebApi.Timers
Interlocked.Exchange(ref inTimer4, 0);
}
}
/// <summary>
/// 批量处理转班订单
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void BatchDealChangeOrder(object sender, System.Timers.ElapsedEventArgs e)
{
if (Interlocked.Exchange(ref changeOrder_Timer, 1) == 0)
{
orderChangeModule.GetChangeOrderListModule();
Interlocked.Exchange(ref changeOrder_Timer, 0);
}
}
}
}
\ No newline at end of file
{
"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",
"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",
......@@ -31,8 +31,8 @@
"MongoDBName": "Edu",
"WkHtmlToPdfPath": "D:/wkhtmltopdf/bin/",
"FinanceKey": "FinanceMallInsertToERPViitto2020",
"PaymentFinanceApi": "http://192.168.1.13:8083/api/Mall/InsertFinanceBatchForMallIn",
"IncomeFinanceApi": "http://192.168.20.9:8083/api/Mall/InsertFinanceBatchForMallOut",
"PaymentFinanceApi": "http://192.168.20.7:8083/api/Mall/InsertFinanceBatchForMallOut",
"IncomeFinanceApi": "http://192.168.20.7:8083/api/Mall/InsertFinanceBatchForMallIn",
"sTenpayNotifyUrl": "http://eduapi.oytour.com/api/WeChatPay/WxPayCallback", //下单回调地址
"sTenpayNotifyRefundUrl": "http://eduapi.oytour.com/api/WeChatPay/Refunds", //退款回调地址
"FinanceDateBase": "reborn_finance",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment