Commit a5f50614 authored by 黄奎's avatar 黄奎

新增页面

parent 4a6fc200
...@@ -102,5 +102,10 @@ namespace Edu.Model.Entity.Course ...@@ -102,5 +102,10 @@ namespace Edu.Model.Entity.Course
/// 财务单据id /// 财务单据id
/// </summary> /// </summary>
public int FinanceId; public int FinanceId;
/// <summary>
/// 实体退款金额
/// </summary>
public decimal RealityBackMoney { get; set; }
} }
} }
...@@ -60,11 +60,6 @@ namespace Edu.Module.Course ...@@ -60,11 +60,6 @@ namespace Edu.Module.Course
/// </summary> /// </summary>
private readonly RB_SchoolRepository schoolRepository = new RB_SchoolRepository(); private readonly RB_SchoolRepository schoolRepository = new RB_SchoolRepository();
/// <summary>
/// 流程仓储层对象
/// </summary>
private readonly RB_FlowRepository flowRepository = new RB_FlowRepository();
/// <summary> /// <summary>
/// 账号 /// 账号
/// </summary> /// </summary>
...@@ -75,6 +70,16 @@ namespace Edu.Module.Course ...@@ -75,6 +70,16 @@ namespace Edu.Module.Course
/// </summary> /// </summary>
private readonly RB_User_ChangeLogRepository changeLogRepository = new RB_User_ChangeLogRepository(); private readonly RB_User_ChangeLogRepository changeLogRepository = new RB_User_ChangeLogRepository();
/// <summary>
/// 班级基础配置表仓储层对象
/// </summary>
private readonly RB_Class_ConfigRepository class_ConfigRepository = new RB_Class_ConfigRepository();
/// <summary>
/// 学员签到仓储层对象
/// </summary>
private readonly RB_Class_CheckRepository class_CheckRepository = new RB_Class_CheckRepository();
/// <summary> /// <summary>
/// 获取学员退课单据分页列表 /// 获取学员退课单据分页列表
/// </summary> /// </summary>
...@@ -85,15 +90,41 @@ namespace Edu.Module.Course ...@@ -85,15 +90,41 @@ namespace Edu.Module.Course
/// <returns></returns> /// <returns></returns>
public List<RB_Student_BackClass_ViewModel> GetStudentBackClassPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Student_BackClass_ViewModel query) public List<RB_Student_BackClass_ViewModel> GetStudentBackClassPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Student_BackClass_ViewModel query)
{ {
var list = student_BackClassRepository.GetStudentBackClassPageListRepository(pageIndex, pageSize, out rowsCount, query); return student_BackClassRepository.GetStudentBackClassPageListRepository(pageIndex, pageSize, out rowsCount, query);
if (list != null)
{
foreach (var item in list)
{
}
} }
return list;
/// <summary>
/// 计算学员退课金额
/// </summary>
/// <param name="BackId"></param>
/// <returns></returns>
public object GetBackBillMoneyModule(int BackId)
{
var backModel = student_BackClassRepository.GetEntity(BackId);
var guestModel = order_GuestRepository.GetEntity(backModel.GuestId);
var orderModel = orderRepository.GetEntity(backModel.OrderId);
//班级实体类
var classModel = classRepository.GetEntity(backModel.ClassId);
//基础课时分钟数
var BasicMinutes = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = backModel.Group_Id })?.BasicMinutes ?? 45;
var stuCheckList = class_CheckRepository.GetGuestFinishMinutesRepository(backModel.GuestId.ToString());
//总签到上课分钟数
var totalFinishMinutes = stuCheckList?.Sum(qitem => qitem.FinishMinutes) ?? 0;
//完成课时数
var FinishHours = Convert.ToInt32(totalFinishMinutes) / BasicMinutes;
//预计退款金额
var backMoney = orderModel.PreferPrice / orderModel.GuestNum - orderModel.PreferPrice / orderModel.GuestNum / classModel.ClassHours * FinishHours;
var obj = new
{
orderModel.PreferPrice,
orderModel.GuestNum,
classModel.ClassHours,
FinishHours,
classHourPrice = Math.Round(orderModel.PreferPrice / orderModel.GuestNum / classModel.ClassHours, 2),
backMoney = Math.Round(backMoney,2)
};
return obj;
} }
/// <summary> /// <summary>
...@@ -106,7 +137,7 @@ namespace Edu.Module.Course ...@@ -106,7 +137,7 @@ namespace Edu.Module.Course
/// <param name="message">返回提示信息</param> /// <param name="message">返回提示信息</param>
/// <param name="BackMoney"></param> /// <param name="BackMoney"></param>
/// <returns></returns> /// <returns></returns>
public virtual bool SetBackBillAduitModule(int BackId, int AuditStatus, string Description, UserInfo user, out string message,int SpecialNode=0, decimal BackMoney = 0) public virtual bool SetBackBillAduitModule(int BackId, int AuditStatus, string Description, UserInfo user, out string message,int SpecialNode=0, decimal BackMoney = 0,string RecipientIds="")
{ {
message = ""; message = "";
bool flag = false; bool flag = false;
...@@ -117,6 +148,12 @@ namespace Edu.Module.Course ...@@ -117,6 +148,12 @@ namespace Edu.Module.Course
message = "单据不存在,请核实!"; message = "单据不存在,请核实!";
return flag; return flag;
} }
//抄送人
string newRecipientIds = "";
if (!string.IsNullOrEmpty(RecipientIds))
{
newRecipientIds = ((!string.IsNullOrEmpty(backModel.RecipientIds) ? backModel.RecipientIds : "") + "," + RecipientIds).TrimStart(',').TrimEnd(',');
}
//获取审核记录 //获取审核记录
var aurList = student_BackRecordRepository.GetStudentBackRecordListRepository(new RB_Student_BackRecord_ViewModel() var aurList = student_BackRecordRepository.GetStudentBackRecordListRepository(new RB_Student_BackRecord_ViewModel()
...@@ -184,19 +221,11 @@ namespace Edu.Module.Course ...@@ -184,19 +221,11 @@ namespace Edu.Module.Course
} }
#region 更新订单旅客表未驳回状态 #region 更新订单旅客表未驳回状态
Dictionary<string, object> guestFileds = new Dictionary<string, object>() flag = UpdateOrderGuestStatusModule(4, backModel.StudentId);
{
{nameof(RB_Order_Guest_ViewModel.GuestState),4 }
};
flag = order_GuestRepository.Update(guestFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), backModel.StudentId));
#endregion #endregion
#region 更新退课单据为驳回状态 #region 更新退课单据为驳回状态
Dictionary<string, object> backFileds = new Dictionary<string, object>() flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Rejected, newRecipientIds, backModel.BackId,SpecialNode:SpecialNode,BackMoney:BackMoney);
{
{nameof(RB_Student_BackClass_ViewModel.AuditStatus), (int)BackClassAuditStatusEnum.Rejected }
};
flag = student_BackClassRepository.Update(backFileds, new WhereHelper(nameof(RB_Student_BackClass_ViewModel.BackId), backModel.BackId));
#endregion #endregion
} }
//审核通过 //审核通过
...@@ -252,17 +281,8 @@ namespace Edu.Module.Course ...@@ -252,17 +281,8 @@ namespace Edu.Module.Course
#region 更新审核关联表状态 #region 更新审核关联表状态
flag = UpdateStuRelevanceModule(model.Id, model.Stauts, model.AuditedId); flag = UpdateStuRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion #endregion
//更新主表状态 //更新主表状态
Dictionary<string, object> backFileds = new Dictionary<string, object>() flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Pass, newRecipientIds, backModel.BackId, SpecialNode: SpecialNode, BackMoney: BackMoney);
{
{nameof(RB_Student_BackClass_ViewModel.AuditStatus), (int)BackClassAuditStatusEnum.Pass }
};
if (SpecialNode == 1)
{
backFileds.Add(nameof(RB_Student_BackClass_ViewModel.BackMoney), BackMoney);
}
flag = student_BackClassRepository.Update(backFileds, new WhereHelper(nameof(RB_Student_BackClass_ViewModel.BackId), backModel.BackId));
} }
else else
{ {
...@@ -316,16 +336,8 @@ namespace Edu.Module.Course ...@@ -316,16 +336,8 @@ namespace Edu.Module.Course
flag = UpdateStuRecordModule(WFRrocessStatus.OtherHaveAudit, Description, user.Id, item.Id); flag = UpdateStuRecordModule(WFRrocessStatus.OtherHaveAudit, Description, user.Id, item.Id);
} }
} }
Dictionary<string, object> backFileds = new Dictionary<string, object>() //更新主表状态
{ flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Pass, newRecipientIds, backModel.BackId, SpecialNode: SpecialNode, BackMoney: BackMoney);
{nameof(RB_Student_BackClass_ViewModel.AuditStatus), (int)BackClassAuditStatusEnum.Pass }
};
if (SpecialNode == 1)
{
backFileds.Add(nameof(RB_Student_BackClass_ViewModel.BackMoney), BackMoney);
}
flag = student_BackClassRepository.Update(backFileds, new WhereHelper(nameof(RB_Student_BackClass_ViewModel.BackId), backModel.BackId));
} }
else else
{ {
...@@ -358,17 +370,9 @@ namespace Edu.Module.Course ...@@ -358,17 +370,9 @@ namespace Edu.Module.Course
#region 更新审核关联表状态 #region 更新审核关联表状态
flag = UpdateStuRelevanceModule(model.Id, model.Stauts, model.AuditedId); flag = UpdateStuRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion #endregion
Dictionary<string, object> backFileds = new Dictionary<string, object>() //更新主表状态
{ flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Pass, newRecipientIds, backModel.BackId, SpecialNode: SpecialNode, BackMoney: BackMoney);
{nameof(RB_Student_BackClass_ViewModel.AuditStatus), (int)BackClassAuditStatusEnum.Pass }
};
if (SpecialNode == 1)
{
backFileds.Add(nameof(RB_Student_BackClass_ViewModel.BackMoney), BackMoney);
}
flag = student_BackClassRepository.Update(backFileds, new WhereHelper(nameof(RB_Student_BackClass_ViewModel.BackId), backModel.BackId));
} }
//更新抄送人状态 //更新抄送人状态
//var CopyToPeopleList = copyToPeopleRepository.GetCopyToPeopleList(WorkFlowId, TemplateType); //var CopyToPeopleList = copyToPeopleRepository.GetCopyToPeopleList(WorkFlowId, TemplateType);
//foreach (var item in CopyToPeopleList) //foreach (var item in CopyToPeopleList)
...@@ -377,7 +381,6 @@ namespace Edu.Module.Course ...@@ -377,7 +381,6 @@ namespace Edu.Module.Course
//} //}
//CopyAccountList = CopyToPeopleList.Select(x => new EmAccoutIdModel { EmAccount = x.EmLoginMobile, EmployeeId = x.EmployeeId ?? 0 }).Distinct().ToList(); //CopyAccountList = CopyToPeopleList.Select(x => new EmAccoutIdModel { EmAccount = x.EmLoginMobile, EmployeeId = x.EmployeeId ?? 0 }).Distinct().ToList();
//copyToPeopleRepository.UpdateBatch(CopyToPeopleList, trans); //copyToPeopleRepository.UpdateBatch(CopyToPeopleList, trans);
} }
//同时创建下一步审核 复制审核人到审核关联表 创建审核记录表 //同时创建下一步审核 复制审核人到审核关联表 创建审核记录表
else else
...@@ -537,6 +540,48 @@ namespace Edu.Module.Course ...@@ -537,6 +540,48 @@ namespace Edu.Module.Course
return flag; return flag;
} }
/// <summary>
/// 更新退课主表状态
/// </summary>
/// <param name="statusEnum">审核状态</param>
/// <param name="newRecipientIds">抄送人</param>
/// <param name="BackId">退课表主键编号</param>
/// <param name="SpecialNode">是否是特殊节点(1-是)</param>
/// <param name="BackMoney">实际退款金额</param>
/// <returns></returns>
private bool UpdateStuBackBillStatusModule(BackClassAuditStatusEnum statusEnum, string newRecipientIds, int BackId,int SpecialNode=0,decimal BackMoney=0)
{
Dictionary<string, object> backFileds = new Dictionary<string, object>()
{
{nameof(RB_Student_BackClass_ViewModel.AuditStatus), (int)statusEnum }
};
if (!string.IsNullOrEmpty(newRecipientIds))
{
backFileds.Add(nameof(RB_Student_BackClass_ViewModel.RecipientIds), newRecipientIds);
}
//特殊节点更新时间退课金额
if (SpecialNode == 1)
{
backFileds.Add(nameof(RB_Student_BackClass_ViewModel.RealityBackMoney), BackMoney);
}
bool flag = student_BackClassRepository.Update(backFileds, new WhereHelper(nameof(RB_Student_BackClass_ViewModel.BackId), BackId));
return flag;
}
/// <summary>
/// 更新学员退课状态
/// </summary>
/// <param name="GuestState"></param>
/// <param name="guestId"></param>
/// <returns></returns>
private bool UpdateOrderGuestStatusModule(int GuestState, int guestId)
{
Dictionary<string, object> guestFileds = new Dictionary<string, object>()
{
{nameof(RB_Order_Guest_ViewModel.GuestState),GuestState }
};
return order_GuestRepository.Update(guestFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), guestId));
}
/// <summary> /// <summary>
/// 更新审核记录表信息 /// 更新审核记录表信息
...@@ -799,8 +844,8 @@ namespace Edu.Module.Course ...@@ -799,8 +844,8 @@ namespace Edu.Module.Course
{ {
CostTypeId = Config.ReadConfigKey("StuBackCostTypeId"), CostTypeId = Config.ReadConfigKey("StuBackCostTypeId"),
Number = 1, Number = 1,
OriginalMoney = backModel.BackMoney, OriginalMoney = backModel.RealityBackMoney,
UnitPrice = backModel.BackMoney, UnitPrice = backModel.RealityBackMoney,
Remark = "学员【"+guestModel.GuestName+"】退课" Remark = "学员【"+guestModel.GuestName+"】退课"
} }
}; };
...@@ -812,7 +857,7 @@ namespace Edu.Module.Course ...@@ -812,7 +857,7 @@ namespace Edu.Module.Course
ClientType = clientType, ClientType = clientType,
ClientID = clientId, ClientID = clientId,
CurrencyId, CurrencyId,
WBMoney = backModel.BackMoney, WBMoney = backModel.RealityBackMoney,
PayDate = DateTime.Now.ToString("yyyy-MM-dd"), PayDate = DateTime.Now.ToString("yyyy-MM-dd"),
TemplateId = Config.ReadConfigKey("StuBackTemplete"), TemplateId = Config.ReadConfigKey("StuBackTemplete"),
OrderSource = 17, OrderSource = 17,
...@@ -848,8 +893,10 @@ namespace Edu.Module.Course ...@@ -848,8 +893,10 @@ namespace Edu.Module.Course
Dictionary<string, object> keyValues = new Dictionary<string, object>() { Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Student_BackClass.FinanceId),frid} { nameof(RB_Student_BackClass.FinanceId),frid}
}; };
List<WhereHelper> wheres = new List<WhereHelper>() { List<WhereHelper> wheres = new List<WhereHelper>()
new WhereHelper(){ {
new WhereHelper()
{
FiledName=nameof(RB_Teaching_Perf_ViewModel.Id), FiledName=nameof(RB_Teaching_Perf_ViewModel.Id),
FiledValue=backModel.BackId, FiledValue=backModel.BackId,
OperatorEnum=OperatorEnum.Equal OperatorEnum=OperatorEnum.Equal
......
...@@ -346,15 +346,14 @@ namespace Edu.WebApi.Controllers.Course ...@@ -346,15 +346,14 @@ namespace Edu.WebApi.Controllers.Course
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public ApiResult GetClassOrderForDetail() { public ApiResult GetClassOrderForDetail()
var userInfo = base.UserInfo; {
JObject parms = JObject.Parse(RequestParm.Msg.ToString()); JObject parms = JObject.Parse(RequestParm.Msg.ToString());
int OrderId = parms.GetInt("OrderId", 0); int OrderId = parms.GetInt("OrderId", 0);
if (OrderId <= 0) if (OrderId <= 0)
{ {
return ApiResult.ParamIsNull(); return ApiResult.ParamIsNull();
} }
var model = orderModule.GetClassOrderInfo_V2(OrderId); var model = orderModule.GetClassOrderInfo_V2(OrderId);
if (model == null) if (model == null)
{ {
......
...@@ -87,7 +87,8 @@ namespace Edu.WebApi.Controllers.Course ...@@ -87,7 +87,8 @@ namespace Edu.WebApi.Controllers.Course
item.ApplyReason, item.ApplyReason,
item.OrderId, item.OrderId,
AuditStatusName=item.AuditStatus.ToName(), AuditStatusName=item.AuditStatus.ToName(),
item.SpecialNode item.SpecialNode,
item.RealityBackMoney,
}); });
} }
pageModel.Count = rowsCount; pageModel.Count = rowsCount;
...@@ -112,10 +113,26 @@ namespace Edu.WebApi.Controllers.Course ...@@ -112,10 +113,26 @@ namespace Edu.WebApi.Controllers.Course
decimal BackMoney= base.ParmJObj.GetDecimal("BackMoney"); decimal BackMoney= base.ParmJObj.GetDecimal("BackMoney");
//是否是特殊节点 //是否是特殊节点
var SpecialNode = base.ParmJObj.GetInt("SpecialNode"); var SpecialNode = base.ParmJObj.GetInt("SpecialNode");
var flag = studentBillModule.SetBackBillAduitModule(BackId, AuditStatus, Description, base.UserInfo,out string message, SpecialNode: SpecialNode, BackMoney: BackMoney); //抄送人
string RecipientIds = base.ParmJObj.GetStringValue("RecipientIds");
var flag = studentBillModule.SetBackBillAduitModule(BackId, AuditStatus, Description, base.UserInfo,out string message, SpecialNode: SpecialNode, BackMoney: BackMoney, RecipientIds: RecipientIds);
return flag ? ApiResult.Success(message: message) : ApiResult.Failed(message: message); return flag ? ApiResult.Success(message: message) : ApiResult.Failed(message: message);
} }
/// <summary>
/// 获取学员预计退课金额
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetBackBillMoney()
{
//退课单据号
var BackId = base.ParmJObj.GetInt("BackId");
var data = studentBillModule.GetBackBillMoneyModule(BackId);
return ApiResult.Success(data: data);
}
/// <summary> /// <summary>
/// 获取单据详情 /// 获取单据详情
/// </summary> /// </summary>
......
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