Commit 0f6a7ce8 authored by 吴春's avatar 吴春

1

parent 68e0b6e6
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Bonus
{
/// <summary>
/// 甲鹤小语种班课销售提成(西语,法语,韩语)期数奖励实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Language_People
{
/// <summary>
/// 主键编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 期数编号
/// </summary>
public int PeriodId { get; set; }
/// <summary>
/// 关联方案编号
/// </summary>
public int RuleId { get; set; }
/// <summary>
/// 年份
/// </summary>
public int YearNum { get; set; }
/// <summary>
/// 月份编号
/// </summary>
public int MonthNum { get; set; }
/// <summary>
/// 员工编号
/// </summary>
public int EmployeeId { get; set; }
/// <summary>
/// 当月订单人数
/// </summary>
public int CurGuestNum { get; set; }
/// <summary>
/// 当月奖励金额
/// </summary>
public decimal CurRewardMoney { get; set; }
/// <summary>
/// 当月订单金额
/// </summary>
public decimal CurOrderMoney { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
///
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 学校编号
/// </summary>
public int School_Id { get; set; }
/// <summary>
/// 当月人头奖励配置数据Json格式
/// </summary>
public string HisBonusData { get; set; }
/// <summary>
/// 是否发放人头奖励[1-已发放,0-待发放]
/// </summary>
public int IsIssue { get; set; }
}
}
using Edu.Common.Enum.Course;
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Bonus
{
/// <summary>
/// 甲鹤小语种班课销售提成(西语,法语,韩语)奖励详情实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Language_PeopleDetail
{
/// <summary>
/// 奖励使用主键编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 奖励主表编号
/// </summary>
public int BonusId { get; set; }
/// <summary>
/// 订单编号
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 订单状态
/// </summary>
public OrderStateEnum OrderState { get; set; }
/// <summary>
/// 订单人数
/// </summary>
public int OrderGuestNum { get; set; }
/// <summary>
/// 班级人数
/// </summary>
public int ClassGuestNum { get; set; }
/// <summary>
/// 订单提成
/// </summary>
public decimal OrderMoney { get; set; }
/// <summary>
/// 订单实收
/// </summary>
public decimal OrderIncom { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remarks { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Bonus
{
/// <summary>
/// 甲鹤小语种班课销售提成(西语,法语,韩语)期数实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Language_Period
{
/// <summary>
/// 主键编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 期数
/// </summary>
public string Periods { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建日期
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 累计金额
/// </summary>
public decimal SumPrice { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 关联财务单据ids
/// </summary>
public string Financials { get; set; }
/// <summary>
/// 已发放人员的列表
/// </summary>
public string EmpIds { get; set; }
/// <summary>
/// 期数备注
/// </summary>
public string Remark { get; set; }
}
}
using Edu.Common.Enum;
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Sell
{
/// <summary>
/// 甲鹤小语种班课销售提成方案(西语,法语,韩语)配置阶梯实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_LanguageDetail_Rule
{
/// <summary>
/// 主键编号
/// </summary>
public int DetailId { get; set; }
/// <summary>
/// 规则编号
/// </summary>
public int RuleId { get; set; }
/// <summary>
/// 开始人数
/// </summary>
public decimal StartNum { get; set; }
/// <summary>
/// 结束人数
/// </summary>
public decimal EndNum { get; set; }
/// <summary>
/// 奖励比例
/// </summary>
public decimal RatioMoney { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public DateStateEnum Status { get; set; }
}
}
using Edu.Common.Enum;
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Sell
{
/// <summary>
/// 甲鹤小语种班课销售提成方案(西语,法语,韩语)配置实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Language_Rule
{
/// <summary>
/// 主键编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 方案名称
/// </summary>
public string PlanName { get; set; }
/// <summary>
/// 适用语种
/// </summary>
public string LanguageIds { get; set; }
/// <summary>
/// 适用人员
/// </summary>
public string SaleIds { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 学校编号
/// </summary>
public int School_Id { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public DateStateEnum Status { get; set; }
}
}
......@@ -445,5 +445,21 @@ namespace Edu.Model.Entity.Sell
/// 留学订单返佣金额
/// </summary>
public decimal StudyBroadRebateMoney { get; set; }
/// <summary>
/// 小语种提成最后一次提成金额
/// </summary>
public decimal LanguageMonry { get; set; }
/// <summary>
/// 小语种提成最后一次提成比例
/// </summary>
public decimal LanguageRate { get; set; }
/// <summary>
/// 小语种提成最后一次班级总人数
/// </summary>
public int LanguageNum { get; set; }
}
}
using Edu.Common.Plugin;
using Edu.Model.Entity.Bonus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Bonus
{
/// <summary>
/// 甲鹤小语种班课销售提成(西语,法语,韩语)奖励详情扩展实体类
/// </summary>
public class RB_Language_PeopleDetail_Extend : RB_Language_PeopleDetail
{
/// <summary>
/// 奖励主表编号【查询使用】
/// </summary>
public string QBonusIds { get; set; }
/// <summary>
/// 订单状态字符串
/// </summary>
public string OrderStateName { get { return this.OrderState.ToName(); } }
/// <summary>
/// 期数id
/// </summary>
public int PeriodId { get; set; }
/// <summary>
/// 员工id
/// </summary>
public int UserId { get; set; }
/// <summary>
/// 班级信息
/// </summary>
public int ClassId { get; set; }
/// <summary>
/// 班级名称
/// </summary>
public string ClassName { get; set; }
/// <summary>
/// 期数
/// </summary>
public string Periods { get; set; }
/// <summary>
/// 学校
/// </summary>
public int School_Id { get; set; }
/// <summary>
/// 部门
/// </summary>
public int Dept_Id { get; set; }
/// <summary>
/// 集团
/// </summary>
public int Group_Id { get; set; }
}
}
using Edu.Model.Entity.Bonus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Bonus
{
/// <summary>
/// 甲鹤小语种班课销售提成(西语,法语,韩语)奖励扩展实体类
/// </summary>
public class RB_Language_People_Extend : RB_Language_People
{
/// <summary>
/// 人头奖励详情列表
/// </summary>
public List<RB_Language_PeopleDetail_Extend> DetailList { get; set; }
/// <summary>
/// 是否查询未平账
/// </summary>
public int IsNoBalance { get; set; }
/// <summary>
/// 查询员工编号
/// </summary>
public string QEmployeeIds { get; set; }
/// <summary>
/// 期数编号【查询使用】
/// </summary>
public string QPeriodIds { get; set; }
/// <summary>
/// 员工姓名
/// </summary>
public string EmployeeName { get; set; }
}
}
using Edu.Model.Entity.Bonus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Bonus
{
/// <summary>
/// 甲鹤小语种班课销售提成(西语,法语,韩语)发放期数扩展实体类
/// </summary>
public class RB_Language_Period_Extend : RB_Language_Period
{
/// <summary>
/// 提成数据
/// </summary>
public List<RB_Language_People_Extend> BonusList { get; set; }
}
}
......@@ -39,5 +39,15 @@ namespace Edu.Model.ViewModel.Query
/// 状态(参考枚举)
/// </summary>
public GuestStateEnum GuestState { get; set; }
/// <summary>
/// 学生昵称
/// </summary>
public string StuName { get; set; }
/// <summary>
/// 开班类型 1 班课学习, 2 约课学习
/// </summary>
public int ClassScrollType { get; set; }
}
}
using Edu.Model.Entity.Sell;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Sell
{
/// <summary>
/// 甲鹤小语种班课销售提成方案(西语,法语,韩语)配置阶梯扩展实体类
/// </summary>
public class RB_LanguageDetail_Rule_Extend : RB_LanguageDetail_Rule
{
/// <summary>
/// 规则编号【查询使用】
/// </summary>
public string QRuleIds { get; set; }
}
}
using Edu.Model.Entity.Sell;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Sell
{
/// <summary>
/// 甲鹤小语种班课销售提成方案(西语,法语,韩语)配置扩展实体类
/// </summary>
public class RB_Language_Rule_Extend : RB_Language_Rule
{
/// <summary>
/// 配置详细列表实体类
/// </summary>
public List<RB_LanguageDetail_Rule_Extend> DetailList { get; set; }
/// <summary>
/// 适用语种科目
/// </summary>
public List<CourseSubjectItem> CourseSubjectList { get; set; }
/// <summary>
/// 适用人员详情列表
/// </summary>
public List<SaleManItem> SaleList { get; set; }
}
/// <summary>
/// 语种科目
/// </summary>
public class CourseSubjectItem
{
/// <summary>
/// 主键编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 科目名称
/// </summary>
public string SubjectName { get; set; }
}
}
This diff is collapsed.
......@@ -79,6 +79,11 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_CourseRepository courseRepository = new RB_CourseRepository();
/// <summary>
/// 甲鹤小语种班课销售提成方案(西语,法语,韩语)配置仓储层对象 2023-11-24 add by:W 排除小语种人员的订单信息
/// </summary>
private readonly RB_Language_RuleRepository language_RuleRepository = new RB_Language_RuleRepository();
/// <summary>
/// 获取人头奖金期数分页列表
......@@ -220,12 +225,17 @@ namespace Edu.Module.Course
message = "请先配置市场人员和课程顾问的提成配置";
return flag;
}
#region 小语种提成规则
var languageRuleList = language_RuleRepository.GetLanguageRuleListRepository(new RB_Language_Rule_Extend { Group_Id = userInfo.Group_Id });
#endregion
foreach (var item in planList)
{
var saleList = Common.ConvertHelper.StringToList(item.SaleIds);
foreach (var saleId in saleList)
{
CalcPersionBonusModule(empPeriod, item, userInfo.Group_Id, startDate, endDate, saleId);
CalcPersionBonusModule(empPeriod, item, userInfo.Group_Id, startDate, endDate, saleId, languageRuleList);
}
}
}
......@@ -361,9 +371,9 @@ namespace Edu.Module.Course
/// <param name="GroupId"></param>
/// <param name="endDate"></param>
/// <param name="saleId"></param>
private void CalcPersionBonusModule(RB_Personnel_Period period, RB_Bonus_PlanExtend item, int GroupId, string startDate, string endDate, int saleId)
private void CalcPersionBonusModule(RB_Personnel_Period period, RB_Bonus_PlanExtend item, int GroupId, string startDate, string endDate, int saleId,List<RB_Language_Rule_Extend> languageRuleList)
{
var orderList = GetSaleOrderList(item, GroupId,startDate,endDate, saleId, out List<RB_Order_ViewModel> allOrderList,out int IsOpenOrder);
var orderList = GetSaleOrderList(item, GroupId,startDate,endDate, saleId, out List<RB_Order_ViewModel> allOrderList, languageRuleList, out int IsOpenOrder);
var tempOrderList = orderList?.Where(qitem => !item.NotUseCourseIdList.Contains(qitem.CourseId))?.ToList();
var numList = tempOrderList
?.GroupBy(qitem => new { qitem.Student_Id })
......@@ -558,11 +568,11 @@ namespace Edu.Module.Course
/// <param name="orderList"></param>
/// <param name="isOpenOrder">是否有开单</param>
/// <returns></returns>
private List<PersionOrderItem> GetSaleOrderList(RB_Bonus_PlanExtend item, int GroupId,string startDate,string endDate, int SaleId, out List<RB_Order_ViewModel> orderList,out int isOpenOrder)
private List<PersionOrderItem> GetSaleOrderList(RB_Bonus_PlanExtend item, int GroupId,string startDate,string endDate, int SaleId, out List<RB_Order_ViewModel> orderList, List<RB_Language_Rule_Extend> languageRuleList,out int isOpenOrder)
{
List<PersionOrderItem> list = new List<PersionOrderItem>();
//所有当前人员订单列表
orderList = orderRepository.GetAllBonusOrderListRepository(GroupId, startDate, endDate, item.PlanType, SaleId);
orderList = orderRepository.GetAllBonusOrderListRepository(GroupId, startDate, endDate, item.PlanType, SaleId,languageRuleList);
//适用课程
if (!string.IsNullOrEmpty(item.UseCourseIds))
{
......@@ -696,6 +706,10 @@ namespace Edu.Module.Course
}, isGetDetail: true);
if (planList != null && planList.Count > 0)
{
#region 小语种提成规则
var languageRuleList = language_RuleRepository.GetLanguageRuleListRepository(new RB_Language_Rule_Extend { Group_Id = user.Group_Id });
#endregion
foreach (var item in planList)
{
var saleList = Common.ConvertHelper.StringToList(item.SaleIds);
......@@ -704,7 +718,7 @@ namespace Edu.Module.Course
if (saleId == user.Id)
{
string endDate = Common.ConvertHelper.FormatDate(endTime);
var orderList = GetSaleOrderList(item, user.Group_Id,startDate,endDate, saleId, out List<RB_Order_ViewModel> allOrderList,out int IsOpenOrder);
var orderList = GetSaleOrderList(item, user.Group_Id,startDate,endDate, saleId, out List<RB_Order_ViewModel> allOrderList, languageRuleList, out int IsOpenOrder);
monthData.GuestNum = orderList?.Where(qitem=>!item.NotUseCourseIdList.Contains(qitem.CourseId)).Sum(qitem => qitem.GuestNum) ?? 0;
monthData.OrderCount = allOrderList?.Count() ?? 0;
monthData.ReachCount = item.MonthGoalMoney > (orderList?.Where(qitem=>!item.NotUseCourseIdList.Contains(qitem.CourseId))?.Sum(qitem => qitem.OrderMoney) ?? 0) ? 1 : 0;
......
This diff is collapsed.
using Edu.Common.Enum;
using Edu.Model.ViewModel.Sell;
using Edu.Repository.Sell;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB;
namespace Edu.Module.Course
{
/// <summary>
/// 获取 甲鹤小语种班课销售提成方案(西语,法语,韩语)配置处理类
/// </summary>
public class LanguageRuleModule
{
/// <summary>
/// 获取甲鹤小语种班课销售提成方案(西语,法语,韩语)配置仓储层
/// </summary>
private readonly RB_Language_RuleRepository language_RuleRepository = new RB_Language_RuleRepository();
/// <summary>
/// 获取甲鹤小语种班课销售提成方案(西语,法语,韩语)配置阶梯仓储层
/// </summary>
private readonly RB_LanguageDetail_RuleRepository language_DetailRuleRepository = new RB_LanguageDetail_RuleRepository();
/// <summary>
/// 甲鹤小语种班课销售提成方案(西语,法语,韩语)配置列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Language_Rule_Extend> GetLanguageRuleListModule(RB_Language_Rule_Extend query, bool isGetDetail = false)
{
return language_RuleRepository.GetLanguageRuleListRepository(query, isGetDetail);
}
/// <summary>
/// 新增修改甲鹤小语种班课销售提成方案(西语,法语,韩语)配置
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool SetBonusPlanModule(RB_Language_Rule_Extend model)
{
bool flag = false;
if (model.Id > 0)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Language_Rule_Extend.PlanName),model.PlanName },
{nameof(RB_Language_Rule_Extend.LanguageIds),model.LanguageIds },
{nameof(RB_Language_Rule_Extend.SaleIds),model.SaleIds },
{nameof(RB_Language_Rule_Extend.UpdateBy),model.UpdateBy },
{nameof(RB_Language_Rule_Extend.UpdateTime),model.UpdateTime },
{nameof(RB_Language_Rule_Extend.School_Id),model.School_Id }
};
flag = language_RuleRepository.Update(fileds, new WhereHelper(nameof(RB_Language_Rule_Extend.Id), model.Id));
}
else
{
var newId = language_RuleRepository.Insert(model);
model.Id = newId;
flag = newId > 0;
}
var oldList = language_DetailRuleRepository.GetLanguageDetailListRepository(new RB_LanguageDetail_Rule_Extend()
{
RuleId = model.Id
});
//以前没有阶梯语种科目信息【直接新增】
if (oldList == null || (oldList != null && oldList.Count == 0))
{
if (model.DetailList != null && model.DetailList.Count > 0)
{
foreach (var item in model.DetailList)
{
item.Status = DateStateEnum.Normal;
item.DetailId = 0;
item.RuleId = model.Id;
language_DetailRuleRepository.Insert(item);
}
}
}
else//以前有语种科目信息
{
//现在没有阶梯语种科目信息了【直接删除以前的阶梯语种科目】
if (model.DetailList == null || (model.DetailList != null && model.DetailList.Count == 0))
{
language_DetailRuleRepository.RemoveLanguageDetailByRuleIdRepository(model.Id);
}
//找出差异的数据
var deleteList = oldList.Where(qitem => !model.DetailList.Any(oldItem => qitem.DetailId == oldItem.DetailId)).ToList();
foreach (var dItem in deleteList)
{
if (dItem.DetailId > 0)
{
language_DetailRuleRepository.RemoveLanguageDetailByRuleIdRepository(dItem.RuleId, dItem.DetailId);
}
}
foreach (var priceItem in model.DetailList)
{
priceItem.RuleId = model.Id;
if (priceItem.DetailId == 0)
{
language_DetailRuleRepository.Insert(priceItem);
}
else
{
language_DetailRuleRepository.Update(priceItem);
}
}
}
return flag;
}
/// <summary>
/// 根据编号获取甲鹤小语种班课销售提成方案(西语,法语,韩语)配置
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public object GetBonusPlanModule(int Id)
{
var extModel = language_RuleRepository.GetEntity<RB_Language_Rule_Extend>(Id);
if (extModel != null)
{
extModel.DetailList = language_DetailRuleRepository.GetLanguageDetailListRepository(new RB_LanguageDetail_Rule_Extend()
{
RuleId = extModel.Id
});
}
var obj = new
{
extModel?.Id,
extModel?.PlanName,
extModel?.LanguageIds,
CourseSubjectList = Common.ConvertHelper.StringToList(extModel?.LanguageIds),
DetailList = extModel?.DetailList ?? new List<RB_LanguageDetail_Rule_Extend>()
};
return obj;
}
/// <summary>
/// 根据编号删除甲鹤小语种班课销售提成方案(西语,法语,韩语)配置
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public bool RemoveBonusPlanModule(int Id)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Language_Rule_Extend.Status),(int)DateStateEnum.Delete }
};
bool flag = language_RuleRepository.Update(fileds, new WhereHelper(nameof(RB_Language_Rule_Extend.Id), Id));
return flag;
}
}
}
This diff is collapsed.
This diff is collapsed.
......@@ -113,6 +113,11 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_User_ChangeLogRepository user_ChangeLogRepository = new RB_User_ChangeLogRepository();
/// <summary>
/// 甲鹤小语种班课销售提成方案(西语,法语,韩语)配置仓储层对象 2023-11-24 add by:W 排除小语种人员的订单信息
/// </summary>
private readonly RB_Language_RuleRepository language_RuleRepository = new RB_Language_RuleRepository();
#region 基础配置
/// <summary>
......@@ -469,8 +474,12 @@ namespace Edu.Module.Course
courseIds += ",16,215,285";//增加 领队日语 (不参与提成)
#endregion
#region 小语种提成规则
var languageRuleList = language_RuleRepository.GetLanguageRuleListRepository(new RB_Language_Rule_Extend { Group_Id = userInfo.Group_Id });
#endregion
string EnableDate = Config.NewAchievementsEnable;//新提成启用时间
var orderList = orderRepository.GetAllMoneyCollectedOrderList(userInfo.Group_Id, EDate, courseIds, EnableDate);//开班时间 必须在选择的月份之前 要排除内部班 --------------
var orderList = orderRepository.GetAllMoneyCollectedOrderList(userInfo.Group_Id, EDate, courseIds, EnableDate, languageRuleList);//开班时间 必须在选择的月份之前 要排除内部班 --------------
if (orderList.Any())
{
#region 基础数据
......@@ -1771,9 +1780,13 @@ namespace Edu.Module.Course
#region 查询内部班
var courseList = courseRepository.GetCourseListRepository(new RB_Course_ViewModel() { Group_Id = userInfo.Group_Id, CourseName = "内部班" });
string courseIds = string.Join(",", courseList.Select(x => x.CourseId));
#endregion
#region 小语种提成规则
var languageRuleList = language_RuleRepository.GetLanguageRuleListRepository(new RB_Language_Rule_Extend { Group_Id = userInfo.Group_Id });
#endregion
string EnableDate = Config.NewAchievementsEnable;//新提成启用时间
var orderList = orderRepository.GetAllMoneyCollectedOrderList(userInfo.Group_Id, EDate, courseIds, EnableDate).Where(x => x.EnterID == userInfo.Id);//开班时间 必须在选择的月份之前 要排除内部班 --------------
var orderList = orderRepository.GetAllMoneyCollectedOrderList(userInfo.Group_Id, EDate, courseIds, EnableDate, languageRuleList).Where(x => x.EnterID == userInfo.Id);//开班时间 必须在选择的月份之前 要排除内部班 --------------
if (orderList.Any())
{
#region 基础数据
......@@ -2952,7 +2965,11 @@ namespace Edu.Module.Course
return "当月提成已创建";
}
string EDate = Convert.ToDateTime(month + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
var orderList = orderRepository.GetAllCanSendStudyAbroadCommissionList(userInfo.Group_Id, EDate);//当前时间以前的所有未发放提成的订单
#region 小语种提成规则
var languageRuleList = language_RuleRepository.GetLanguageRuleListRepository(new RB_Language_Rule_Extend { Group_Id = userInfo.Group_Id });
#endregion
var orderList = orderRepository.GetAllCanSendStudyAbroadCommissionList(userInfo.Group_Id, EDate, languageRuleList);//当前时间以前的所有未发放提成的订单
if (orderList.Any())
{
#region 基础数据
......
This diff is collapsed.
using Edu.Model.Entity.Bonus;
using Edu.Model.ViewModel.Bonus;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.Bonus
{
/// <summary>
/// 甲鹤小语种班课销售提成(西语,法语,韩语)奖励详情仓储层
/// </summary>
public class RB_Language_PeopleDetailRepository : BaseRepository<RB_Language_PeopleDetail>
{
/// <summary>
/// 获取员工人头奖励详情列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Language_PeopleDetail_Extend> GetPersonnelBonusDetailListRepository(RB_Language_PeopleDetail_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,b.EmployeeId as UserId,CONCAT(b.YearNum,'-',b.MonthNum) as Periods,b.CurGuestNum,c.ClassId,d.ClassName
FROM RB_Language_PeopleDetail AS A
INNER JOIN rb_language_people as b on a.BonusId=b.Id
LEFT JOIN rb_order as c on c.OrderId=a.OrderId
LEFT JOIN rb_class as d on d.ClassId=c.ClassId
WHERE 1=1
");
if (query != null)
{
if (query.BonusId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_PeopleDetail_Extend.BonusId), query.BonusId);
}
if (query.PeriodId > 0)
{
builder.AppendFormat(" AND B.{0}={1} ", nameof(RB_Language_PeopleDetail_Extend.PeriodId), query.PeriodId);
}
if (query.UserId > 0)
{
builder.AppendFormat(" AND B.EmployeeId={0} ", query.UserId);
}
if (query.School_Id > 0)
{
builder.AppendFormat(" AND c.School_Id={0} ", query.School_Id);
}
if (query.ClassId > 0)
{
builder.AppendFormat(" AND c.ClassId={0} ", query.ClassId);
}
if (query.Dept_Id > 0)
{
builder.AppendFormat(" AND c.Dept_Id={0} ", query.Dept_Id);
}
if (query.OrderId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_PeopleDetail_Extend.OrderId), query.OrderId);
}
if (!string.IsNullOrEmpty(query.QBonusIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Language_PeopleDetail_Extend.BonusId), query.QBonusIds);
}
}
return Get<RB_Language_PeopleDetail_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 累计提成金额
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public decimal GetSellCommissionStatistics(RB_Language_PeopleDetail_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT SUM(a.OrderMoney)
FROM RB_Language_PeopleDetail AS A
INNER JOIN rb_language_people as b on a.BonusId=b.Id
LEFT JOIN rb_order as c on c.OrderId=a.OrderId
LEFT JOIN rb_class as d on d.ClassId=c.ClassId
WHERE 1=1
");
if (query != null)
{
if (query.BonusId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_PeopleDetail_Extend.BonusId), query.BonusId);
}
if (query.PeriodId > 0)
{
builder.AppendFormat(" AND B.{0}={1} ", nameof(RB_Language_PeopleDetail_Extend.PeriodId), query.PeriodId);
}
if (query.UserId > 0)
{
builder.AppendFormat(" AND B.EmployeeId={0} ", query.UserId);
}
if (query.School_Id > 0)
{
builder.AppendFormat(" AND c.School_Id={0} ", query.School_Id);
}
if (query.ClassId > 0)
{
builder.AppendFormat(" AND c.ClassId={0} ", query.ClassId);
}
if (query.Dept_Id > 0)
{
builder.AppendFormat(" AND c.Dept_Id={0} ", query.Dept_Id);
}
if (query.OrderId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_PeopleDetail_Extend.OrderId), query.OrderId);
}
if (!string.IsNullOrEmpty(query.QBonusIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Language_PeopleDetail_Extend.BonusId), query.QBonusIds);
}
}
var obj = ExecuteScalar(builder.ToString());
return obj == null ? 0 : Convert.ToDecimal(obj);
}
/// <summary>
/// 获取员工人头奖励详情列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Language_PeopleDetail_Extend> GetLanguageDetailListPageRepository(int pageIdex, int pageSize, out long rowsCount, RB_Language_PeopleDetail_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,b.EmployeeId as UserId,CONCAT(b.YearNum,'-',b.MonthNum) as Periods,b.CurGuestNum,c.ClassId,d.ClassName
FROM RB_Language_PeopleDetail AS A
INNER JOIN rb_language_people as b on a.BonusId=b.Id
LEFT JOIN rb_order as c on c.OrderId=a.OrderId
LEFT JOIN rb_class as d on d.ClassId=c.ClassId
WHERE 1=1
");
if (query != null)
{
if (query.BonusId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_PeopleDetail_Extend.BonusId), query.BonusId);
}
if (query.PeriodId > 0)
{
builder.AppendFormat(" AND B.{0}={1} ", nameof(RB_Language_PeopleDetail_Extend.PeriodId), query.PeriodId);
}
if (query.UserId > 0)
{
builder.AppendFormat(" AND B.EmployeeId={0} ", query.UserId);
}
if (query.School_Id > 0)
{
builder.AppendFormat(" AND c.School_Id={0} ", query.School_Id);
}
if (query.ClassId > 0)
{
builder.AppendFormat(" AND c.ClassId={0} ", query.ClassId);
}
if (query.Dept_Id > 0)
{
builder.AppendFormat(" AND c.Dept_Id={0} ", query.Dept_Id);
}
if (query.OrderId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_PeopleDetail_Extend.OrderId), query.OrderId);
}
if (!string.IsNullOrEmpty(query.QBonusIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Language_PeopleDetail_Extend.BonusId), query.QBonusIds);
}
}
return GetPage<RB_Language_PeopleDetail_Extend>(pageIdex, pageSize, out rowsCount, builder.ToString()).ToList();
}
}
}
\ No newline at end of file
using Edu.Model.Entity.Bonus;
using Edu.Model.ViewModel.Bonus;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.Bonus
{
/// <summary>
/// 甲鹤小语种班课销售提成(西语,法语,韩语)奖励仓储层
/// </summary>
public class RB_Language_PeopleRepository : BaseRepository<RB_Language_People>
{
/// <summary>
/// 甲鹤小语种班课销售提成(西语,法语,韩语)奖励详情仓储层对象
/// </summary>
private readonly RB_Language_PeopleDetailRepository personnel_BonusDetailRepository = new RB_Language_PeopleDetailRepository();
/// <summary>
/// 获取甲鹤小语种班课销售提成(西语,法语,韩语)奖励分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Language_People_Extend> GetPersonnelBonusPageRepository(int pageIndex,int pageSize,out long rowsCount, RB_Language_People_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Language_People AS A
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_People_Extend.Group_Id), query.Group_Id);
}
if (query.YearNum>0)
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Language_People_Extend.YearNum), query.YearNum);
}
if (query.MonthNum > 0)
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Language_People_Extend.MonthNum), query.MonthNum);
}
if (query.EmployeeId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_People_Extend.EmployeeId), query.EmployeeId);
}
if (query.PeriodId > 0)
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Language_People_Extend.PeriodId), query.PeriodId);
}
}
return GetPage<RB_Language_People_Extend>(pageIndex,pageSize,out rowsCount,builder.ToString()).ToList();
}
/// <summary>
/// 获取甲鹤小语种班课销售提成(西语,法语,韩语)奖励列表
/// </summary>
/// <param name="query"></param>
/// <param name="isGetDetail">true-查询详情</param>
/// <returns></returns>
public List<RB_Language_People_Extend> GetPersonnelBonusListRepository(RB_Language_People_Extend query,bool isGetDetail=false)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Language_People AS A
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_People_Extend.Group_Id), query.Group_Id);
}
if (query.YearNum > 0)
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Language_People_Extend.YearNum), query.YearNum);
}
if (query.MonthNum > 0)
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Language_People_Extend.MonthNum), query.MonthNum);
}
if (query.EmployeeId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_People_Extend.EmployeeId), query.EmployeeId);
}
if (!string.IsNullOrEmpty(query.QEmployeeIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Language_People_Extend.EmployeeId), query.QEmployeeIds);
}
if (query.IsNoBalance == 1)
{
builder.AppendFormat(" AND A.DeductionMoney<>A.FinishDeductionMoney ");
}
if (query.PeriodId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_People_Extend.PeriodId), query.PeriodId);
}
if (!string.IsNullOrEmpty(query.QPeriodIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Language_People_Extend.PeriodId), query.QPeriodIds);
}
}
var list= Get<RB_Language_People_Extend>(builder.ToString()).ToList();
if (list != null && list.Count > 0)
{
string ids = string.Join(",", list.Select(qitem => qitem.Id));
List<RB_Language_PeopleDetail_Extend> detailsList = personnel_BonusDetailRepository.GetPersonnelBonusDetailListRepository(new RB_Language_PeopleDetail_Extend()
{
QBonusIds = ids
});
foreach (var item in list)
{
item.DetailList = detailsList?.Where(qitem => qitem.BonusId == item.Id)?.ToList();
}
}
return list;
}
/// <summary>
/// 设置甲鹤小语种班课销售提成(西语,法语,韩语)奖励未已发放
/// </summary>
/// <param name="Ids"></param>
/// <returns></returns>
public bool SetEmployeeBounsIsIssueRepository(string Ids)
{
string sql = string.Format(@" UPDATE RB_Language_People SET IsIssue=1 WHERE Id IN({0})", Ids);
return base.Execute(sql) > 0;
}
}
}
\ No newline at end of file
using Edu.Model.Entity.Bonus;
using Edu.Model.ViewModel.Bonus;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.Bonus
{
/// <summary>
/// 甲鹤小语种班课销售提成(西语,法语,韩语)发放期数仓储层
/// </summary>
public class RB_Language_PeriodRepository : BaseRepository<RB_Language_Period>
{
/// <summary>
/// 获取甲鹤小语种班课销售提成(西语,法语,韩语)奖金期数分页列表
/// </summary>
/// <param name="pageIdex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Language_Period_Extend> GetPersonnelPeriodPageRepository(int pageIdex, int pageSize, out long rowsCount, RB_Language_Period_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Language_Period AS A
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_Period_Extend.Group_Id), query.Group_Id);
}
}
builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_Language_Period_Extend.Id));
return GetPage<RB_Language_Period_Extend>(pageIdex, pageSize, out rowsCount, builder.ToString()).ToList();
}
/// <summary>
/// 获取甲鹤小语种班课销售提成(西语,法语,韩语)奖金期数分页列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Language_Period_Extend> GetPersonnelPeriodRepository(RB_Language_Period_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Language_Period AS A
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Language_Period_Extend.Group_Id), query.Group_Id);
}
if (!string.IsNullOrEmpty(query.Periods))
{
builder.AppendFormat(" AND A.{0}='{1}' ", nameof(RB_Language_Period_Extend.Periods), query.Periods);
}
}
builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_Language_Period_Extend.Id));
return Get<RB_Language_Period_Extend>( builder.ToString()).ToList();
}
}
}
\ No newline at end of file
using Edu.Common.Enum;
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Sell;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.Sell
{
/// <summary>
/// 甲鹤小语种班课销售提成方案(西语,法语,韩语)配置阶梯仓储层
/// </summary>
public class RB_LanguageDetail_RuleRepository : BaseRepository<RB_LanguageDetail_Rule>
{
/// <summary>
/// 获取甲鹤小语种班课销售提成方案(西语,法语,韩语)配置阶梯列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_LanguageDetail_Rule_Extend> GetLanguageDetailListRepository(RB_LanguageDetail_Rule_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_LanguageDetail_Rule AS A
WHERE 1=1
");
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_LanguageDetail_Rule_Extend.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.RuleId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_LanguageDetail_Rule_Extend.RuleId), query.RuleId);
}
if (!string.IsNullOrEmpty(query.QRuleIds))
{
builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_LanguageDetail_Rule_Extend.RuleId), query.QRuleIds);
}
}
return Get<RB_LanguageDetail_Rule_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 根据计划编号删除阶梯信息
/// </summary>
/// <param name="RuleId"></param>
/// <param name="DetailId"></param>
/// <returns></returns>
public bool RemoveLanguageDetailByRuleIdRepository(int RuleId, int DetailId=0)
{
string sql = string.Format(@" UPDATE RB_LanguageDetail_Rule SET Status=1 WHERE RuleId={0} ", RuleId);
if (DetailId > 0)
{
sql += string.Format(" AND DetailId={0} ", DetailId);
}
return base.Execute(sql) > 0;
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Sell;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Sell
{
/// <summary>
///
/// </summary>
public class RB_Language_RuleRepository : BaseRepository<RB_Language_Rule>
{
/// <summary>
/// 甲鹤小语种班课销售提成方案(西语,法语,韩语)配置阶梯仓储层对象
/// </summary>
private readonly RB_LanguageDetail_RuleRepository languageDetail_RuleRepository = new RB_LanguageDetail_RuleRepository();
/// <summary>
/// 甲鹤小语种班课销售提成方案(西语,法语,韩语)配置列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Language_Rule_Extend> GetLanguageRuleListRepository(RB_Language_Rule_Extend query, bool isGetDetail = false)
{
StringBuilder builder = new StringBuilder();
var parameters = new DynamicParameters();
builder.AppendFormat(@" SELECT A.* FROM RB_Language_Rule AS A WHERE 1=1 ");
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Language_Rule_Extend.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (!string.IsNullOrEmpty(query.PlanName))
{
builder.AppendFormat(" AND A.{0} LIKE @PlanName ", nameof(RB_Language_Rule_Extend.PlanName));
parameters.Add("PlanName", "%" + query.PlanName.Trim() + "%");
}
if (query.Group_Id > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Language_Rule_Extend.Group_Id), query.Group_Id);
}
}
var list = Get<RB_Language_Rule_Extend>(builder.ToString(), parameters).ToList();
if (list != null && list.Count > 0 && isGetDetail)
{
string ruleIds = string.Join(",", list.Select(qitem => qitem.Id));
List<RB_LanguageDetail_Rule_Extend> detailList = languageDetail_RuleRepository.GetLanguageDetailListRepository(new RB_LanguageDetail_Rule_Extend()
{
QRuleIds = ruleIds
});
foreach (var item in list)
{
item.DetailList = detailList?.Where(qitem => qitem.RuleId == item.Id)?.ToList();
}
}
return list;
}
}
}
This diff is collapsed.
......@@ -1357,5 +1357,105 @@ LEFT JOIN rb_group AS g ON t.Group_Id=g.GId
builder.AppendFormat(" ORDER BY o.CreateTime asc ");
return Get<RB_Student_ViewModel>(builder.ToString(), parameters).ToList();
}
/// <summary>
/// 获取学生分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentCoursePageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_Student_ViewModel query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT t.StuName,t.StuId,e.ClassName,d.CourseName,c.OrderId from rb_student as t
LEFT JOIN rb_student_orderguest as b on t.StuId=b.Student_Id
left JOIN rb_order as c on c.OrderId=b.OrderId
LEFT JOIN rb_course as d on d.CourseId=c.CourseId
LEFT JOIN rb_class as e on e.ClassId=c.ClassId
where e.ClassScrollType=2 and c.OrderState=1
");
if (query != null)
{
if (query.Status >= 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.Status), (int)query.Status);
}
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.Group_Id), query.Group_Id);
}
if (query.School_Id > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.School_Id), query.School_Id);
}
if (query.StuId > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.StuId), query.StuId);
}
if (!string.IsNullOrEmpty(query.StuIds))
{
builder.AppendFormat(" AND t.{0} IN({1}) ", nameof(RB_Student_ViewModel.StuId), query.StuIds);
}
if (!string.IsNullOrWhiteSpace(query.StuName))
{
builder.AppendFormat(" AND t.{0} LIKE @StuName ", nameof(RB_Student_ViewModel.StuName));
parameters.Add("StuName", "%" + query.StuName.Trim() + "%");
}
if (!string.IsNullOrWhiteSpace(query.StuTel))
{
builder.AppendFormat(" AND t.{0} LIKE @StuTel ", nameof(RB_Student_ViewModel.StuRealMobile));
parameters.Add("StuTel", "%" + query.StuTel.Trim() + "%");
}
if (!string.IsNullOrWhiteSpace(query.KeyWords))
{
builder.AppendFormat(" AND (t.{0} LIKE @KeyWords OR t.{1} LIKE @KeyWords OR t.{2} LIKE @KeyWords) ", nameof(RB_Student_ViewModel.StuName), nameof(RB_Student_ViewModel.WeChatNo), nameof(RB_Student_ViewModel.StuRealMobile));
parameters.Add("KeyWords", "%" + query.KeyWords.Trim() + "%");
}
if (query.ClassId > 0)
{
builder.AppendFormat(" AND e.{0}={1} ", nameof(RB_Student_ViewModel.ClassId), query.ClassId);
}
if (query.CourseId > 0)
{
builder.AppendFormat(" AND d.{0}={1} ", nameof(RB_Student_ViewModel.CourseId), query.CourseId);
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(" AND t.{0}>='{1}' ", nameof(RB_Student_ViewModel.CreateTime), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
builder.AppendFormat(" AND t.{0}<='{1} 23:59:59' ", nameof(RB_Student_ViewModel.CreateTime), query.EndTime);
}
if (!string.IsNullOrEmpty(query.QDate))
{
builder.AppendFormat(" AND DATE_FORMAT(t.{0},'%y/%m/%d')= DATE_FORMAT('{1}','%y/%m/%d') ", nameof(RB_Student_ViewModel.CreateTime), query.QDate);
}
if (query.CategoryId > 0)
{
builder.AppendFormat(" AND C.{0}={1} ", nameof(RB_Student_ViewModel.CategoryId), query.CategoryId);
}
if (query.AdvisorStatus > 0)
{
builder.AppendFormat(" AND t.{0}={1} ", nameof(RB_Student_ViewModel.AdvisorStatus), query.AdvisorStatus);
}
}
builder.AppendFormat(" ORDER BY t.{0} DESC ", nameof(RB_Student_ViewModel.StuId));
return GetPage<RB_Student_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
}
}
\ No newline at end of file
......@@ -21,6 +21,7 @@ namespace Edu.Repository.User
/// <returns></returns>
public List<RB_Student_OrderGuest_ViewModel> GetStrOrderGuestListRepository(RB_Student_OrderGuest_ViewModel 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.JoinType,0) AS StuJoinType,IFNULL(D.GuestState,0) AS StuGuestState
......@@ -47,10 +48,19 @@ WHERE 1=1 AND C.OrderState IN(1) AND D.Status=0
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_OrderGuest_ViewModel.OrderId), query.OrderId);
}
if (query.ClassScrollType > 0)
{
builder.AppendFormat(" AND B.{0}={1} ", nameof(RB_Student_OrderGuest_ViewModel.ClassScrollType), query.ClassScrollType);
}
if (!string.IsNullOrEmpty(query.QOrderIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Student_OrderGuest_ViewModel.OrderId), query.QOrderIds);
}
if (!string.IsNullOrEmpty(query.GuestName))
{
builder.Append(" AND D.GuestName LIKE @KeyWords ");
parameters.Add("KeyWords", "%" + query.GuestName.Trim() + "%");
}
if (query.GuestId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_OrderGuest_ViewModel.GuestId), query.GuestId);
......@@ -86,7 +96,7 @@ WHERE 1=1 AND C.OrderState IN(1) AND D.Status=0
builder.AppendFormat(@" AND D.GuestState IN({0}) ", (int)query.StuGuestState);
}
}
return Get<RB_Student_OrderGuest_ViewModel>(builder.ToString()).ToList();
return Get<RB_Student_OrderGuest_ViewModel>(builder.ToString(), parameters).ToList();
}
/// <summary>
......
......@@ -243,7 +243,7 @@ namespace Edu.WebApi.Controllers.Course
StudentNumType = (StudentNumTypeEnum)base.ParmJObj.GetInt("StudentNumType"),
ClassHourMinute = base.ParmJObj.GetInt("ClassHourMinute"),
};
extModel.ClassDateList = Common.Plugin.JsonHelper.DeserializeObject<List<string>>(base.ParmJObj.GetStringValue("ClassDateList"));
try
{
......@@ -623,7 +623,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.ParamIsNull(message: "请选择班级上课教室!");
}
extModel.CouseId = model.CouseId;
bool flag = classModule.SetClassStatusModule(extModel,base.UserInfo,out string message, out bool result);
bool flag = classModule.SetClassStatusModule(extModel, base.UserInfo, out string message, out bool result);
return flag ? ApiResult.Success(message: message, data: result) : ApiResult.Failed(message: message, data: result);
}
......@@ -1177,8 +1177,8 @@ namespace Edu.WebApi.Controllers.Course
{
var pageModel = new ResultPageModel()
{
PageIndex=base.ParmJObj.GetInt("PageIndex"),
PageSize=base.ParmJObj.GetInt("PageSize"),
PageIndex = base.ParmJObj.GetInt("PageIndex"),
PageSize = base.ParmJObj.GetInt("PageSize"),
};
var query = new RB_Class_Plan_ViewModel()
{
......@@ -1212,7 +1212,7 @@ namespace Edu.WebApi.Controllers.Course
CheckStatus = obj.GetInt("CheckStatus"),
ClassDate = obj.GetDateTime("ClassDate"),
ClassRoomId = obj.GetInt("ClassRoomId"),
OrderGuestId = obj.GetInt("OrderGuestId",0),
OrderGuestId = obj.GetInt("OrderGuestId", 0),
School_Id = obj.GetInt("School_Id"),
StudyNum = obj.GetInt("StudyNum"),
TeacherId = obj.GetInt("TeacherId"),
......@@ -1233,7 +1233,7 @@ namespace Edu.WebApi.Controllers.Course
groupId = base.UserInfo.Group_Id;
Uid = base.UserInfo.Id;
}
//判断当天是否有已签到数据
var checkLogList = classModule.GetClassCheckList(new RB_Class_Check_ViewModel
{
......@@ -1298,7 +1298,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.Failed("今日无课程,无须签到");
}
foreach (var item in list)
{
......@@ -1339,7 +1339,7 @@ namespace Edu.WebApi.Controllers.Course
{
classModule.SetClassProcessModule(list.FirstOrDefault().ClassId);
}
return result ? ApiResult.Success(message:"check_success") : ApiResult.Failed("签到失败");
return result ? ApiResult.Success(message: "check_success") : ApiResult.Failed("签到失败");
}
///// <summary>
......@@ -1572,7 +1572,7 @@ namespace Edu.WebApi.Controllers.Course
}
#endregion
#region 获取学员信息
public ApiResult GetStudentList()
{
......@@ -1695,7 +1695,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.Failed("老师教案信息为空必须更新");
}
bool flag = classModule.UpdateClassLessPlan(query,base.UserInfo);
bool flag = classModule.UpdateClassLessPlan(query, base.UserInfo);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
......@@ -2082,7 +2082,7 @@ namespace Edu.WebApi.Controllers.Course
}
query.LessonPlanList.ForEach(x => x.ProjectPic = (x.ProjectPicList != null && x.ProjectPicList.Any()) ? JsonConvert.SerializeObject(x.ProjectPicList) : "");
bool flag = classModule.GetUpdateClassLessPlanSummary(query,base.UserInfo);
bool flag = classModule.GetUpdateClassLessPlanSummary(query, base.UserInfo);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
......@@ -2321,10 +2321,10 @@ namespace Edu.WebApi.Controllers.Course
ReceiveId = query.TeacherId.ToString(),
};
var queryTargetWorkId = accountModule.GetWorkUserIdModule(query.TeacherId);
if (!string.IsNullOrEmpty(queryTargetWorkId))
if (!string.IsNullOrEmpty(queryTargetWorkId))
{
var path = $"/course/prepareclassDetails?ClassId={query.ClassId}&ClassPlanId={query.ClassPlanId}";
path=HttpUtility.UrlEncode(path);
path = HttpUtility.UrlEncode(path);
string markdownContent = $"`教师备课` 主管评论备课内容通知\n>**概要信息** \n>上课日期:<font color='info'>{query.ClassDate.Value:yyyy-MM-dd}</font>\n>评价人:<font color='warning'>{model.CreateByName}</font>\n>评价日期:<font color='comment'>{DateTime.Now:MM-dd HH:mm}</font>\n>\n>分数:<font color='comment'>{(query.Score == -1 ? "未评分" : query.Score + "分")}</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={query.TeacherId}&target={path}#target=out)";
Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
{
......@@ -2416,7 +2416,7 @@ namespace Edu.WebApi.Controllers.Course
[HttpGet]
[HttpPost]
[Microsoft.AspNetCore.Authorization.AllowAnonymous]
public ApiResult GetClassTimeListV2()
public ApiResult GetClassTimeListV2()
{
var ClassRoomId = base.ParmJObj.GetInt("ClassRoomId", 0);
var tid = base.ParmJObj.GetInt("Tid", 0);
......@@ -2429,7 +2429,7 @@ namespace Edu.WebApi.Controllers.Course
{
return ApiResult.Failed("暂无排课安排");
}
else
else
{
var result = list.OrderBy(x => x.EndTime).Select(x => new
{
......@@ -2449,7 +2449,7 @@ namespace Edu.WebApi.Controllers.Course
x.ClassId
});
return ApiResult.Success(data: result);
}
}
......@@ -2688,9 +2688,10 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.ParamIsNull();
}
var data = classModule.GetClassStudentListModuleV2(ClassTimeId, PlanType) ?? new List<RB_Order_Guest_ViewModel>();
if (data.Any())
if (data.Any())
{
var result = data.Select(x => new {
var result = data.Select(x => new
{
x.Id,
x.GuestName,
x.Sex,
......@@ -2745,7 +2746,7 @@ namespace Edu.WebApi.Controllers.Course
//课程类型(0-全部,1-正常,2-试听课,3-约课)
int ClassType = base.ParmJObj.GetInt("ClassType");
int AppointState = base.ParmJObj.GetInt("AppointState", 0);//约课状态 1待确认 2已确认
var obj = classModule.GetClassPlanStatisticalModule(query,out _,ClassType: ClassType, AppointState);
var obj = classModule.GetClassPlanStatisticalModule(query, out _, ClassType: ClassType, AppointState);
return ApiResult.Success(data: obj);
}
......@@ -2774,7 +2775,7 @@ namespace Edu.WebApi.Controllers.Course
{
endDate = Common.ConvertHelper.FormatDate(d2);
}
RB_Class_Plan_ViewModel query = new RB_Class_Plan_ViewModel()
{
StartTime = startDate,
......@@ -2793,7 +2794,7 @@ namespace Edu.WebApi.Controllers.Course
List<ExcelDataSource> slist = new List<ExcelDataSource>();
ExcelDataSource header = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30)
ExcelRows = new List<ExcelColumn>(30)
{
new ExcelColumn(value:"上课日期"){CellWidth=24,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"上课时间"){CellWidth=20,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
......@@ -2814,7 +2815,7 @@ namespace Edu.WebApi.Controllers.Course
{
JObject jItem = JObject.Parse(Common.Plugin.JsonHelper.Serialize(jobj));
var DateStr = jItem["ClassDate"].ToString();
var WeekDay= jItem["WeekStr"].ToString();
var WeekDay = jItem["WeekStr"].ToString();
JArray jArray = JArray.Parse(jItem["SubList"].ToString());
if (jArray != null && jArray.Count > 0)
{
......@@ -2866,6 +2867,7 @@ namespace Edu.WebApi.Controllers.Course
}
}
/// <summary>
/// 老师课时统计
/// </summary>
......
This diff is collapsed.
......@@ -772,7 +772,7 @@ namespace Edu.WebApi.Controllers.Course
x.OrderId,
x.CourseName,
x.CourseChapterNo,
FinishChapterNoName=x.CourseChapterNoName,
FinishChapterNoName = x.CourseChapterNoName,
x.AppointNum,
State = x.AppointNum > 0 ? 3 : 1,
x.CourseId,
......@@ -865,18 +865,18 @@ namespace Edu.WebApi.Controllers.Course
RB_Scroll_Appointment_ViewModel demodel = new RB_Scroll_Appointment_ViewModel()
{
CourseId = base.ParmJObj.GetInt("CourseId"),
CourseGradeNo=base.ParmJObj.GetInt("CourseGradeNo"),
CourseGradeNo = base.ParmJObj.GetInt("CourseGradeNo"),
Date = base.ParmJObj.GetDateTime("Date"),
RoomId = base.ParmJObj.GetInt("RoomId"),
ShiftSort = base.ParmJObj.GetStringValue("ShiftSort"),
TeacherId = base.ParmJObj.GetInt("TeacherId"),
ChapterNo=base.ParmJObj.GetInt("ChapterNo"),
ChapterNo = base.ParmJObj.GetInt("ChapterNo"),
};
demodel.State = CourseAppointStateEnum.WaitSure;
demodel.Status = 0;
demodel.Group_Id = userInfo.Group_Id;
demodel.CreateBy = userInfo.Id;
demodel.UpdateBy = userInfo.Id;
......@@ -944,7 +944,7 @@ namespace Edu.WebApi.Controllers.Course
}
#endregion
string msg = "";
foreach (var item in list)
{
......@@ -1220,6 +1220,107 @@ namespace Edu.WebApi.Controllers.Course
var list = scrollClassModule.GetStuLearnChapterList(demodel);
return ApiResult.Success("", list);
}
/// <summary>
/// 获取学员上课列表 2023-12-12 add by:W
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStuClassChapterList()
{
var userInfo = base.UserInfo;
RB_Scroll_Appointment_ViewModel demodel = JsonHelper.DeserializeObject<RB_Scroll_Appointment_ViewModel>(base.RequestParm.Msg.ToString());
demodel.Group_Id = userInfo.Group_Id;
List<Model.ViewModel.Sell.RB_Order_ViewModel> orderList = new List<Model.ViewModel.Sell.RB_Order_ViewModel>();
List<Model.ViewModel.Sell.RB_Order_Guest_ViewModel> orderGuestList = new List<Model.ViewModel.Sell.RB_Order_Guest_ViewModel>();
List<RB_Scroll_Appointment_ViewModel> AppointList = new List<RB_Scroll_Appointment_ViewModel>();
List<RB_Scroll_SkipCourse_ViewModel> SkipList = new List<RB_Scroll_SkipCourse_ViewModel>();
var list = scrollClassModule.GetStuLearnChapterList_V2(demodel, out orderList, out orderGuestList, out AppointList, out SkipList);
string excelName = "学员消课.xls";
foreach (var itemStu in list)
{
var tempOrderList = orderList.Where(x => x.OrderId == itemStu.OrderId);
foreach (var item in tempOrderList)
{
List<object> ChapterList = new List<object>();
var ogModel = list.Where(x => x.OrderId == item.OrderId).FirstOrDefault();
var oguestModel = orderGuestList.Where(x => x.Id == ogModel.GuestId).FirstOrDefault();
//根据课程Id 查询 上课课程
var cList = scrollClassModule.GetChapterListModule(new Model.ViewModel.Course.RB_Course_Chapter_ViewModel() { Group_Id = demodel.Group_Id, CourseId = item.CourseId });
if (item.ClassScrollType == 2)
{
var achildList = AppointList.Where(x => x.GuestId == ogModel.GuestId).ToList();//当前课程的
//预约课
int CourseChapterNo = achildList.Any() ? achildList.Max(x => x.ChapterNo) : 0;
int CourseChapterNo2 = SkipList.Any() ? SkipList.Max(x => x.ChapterNo) : 0;
CourseChapterNo = CourseChapterNo < CourseChapterNo2 ? CourseChapterNo2 : CourseChapterNo;
cList.ForEach(x =>
{
x.SortNum = Convert.ToDouble(x.ChapterNo);
});
cList.Where(x => x.SortNum <= CourseChapterNo).OrderByDescending(x => x.SortNum).ToList().ForEach(x =>
{
var AppointModel = achildList.Where(y => y.ChapterNo == x.SortNum && y.AppointType != 3 && y.LearnCourseId == item.CourseId).FirstOrDefault();
var SkipModel = SkipList.Where(y => y.ChapterNo == x.SortNum && y.CourseId == item.CourseId).FirstOrDefault();
int AgainNum = achildList.Where(y => y.ChapterNo == x.SortNum && y.AppointType == 3 && y.LearnCourseId == item.CourseId).Count();
int State = 3;
int AppointState = 0;
string ClassDate = "";
if (AppointModel != null)
{
ClassDate = AppointModel.Date.ToString("yyyy-MM-dd");
//正常约课
if (AppointModel.AppointType == 1)
{
State = 1;//正常上课
}
else if (AppointModel.AppointType == 2)
{
State = 2;//补课
}
AppointState = (int)AppointModel.State;
}
if (SkipModel != null && SkipModel.State == 1)
{
State = 3;//跳课
}
ChapterList.Add(new
{
x.ChapterNo,
x.ChapterName,
x.CourseRate,
CourseRateName = x.CourseRate.ToName(),
x.ChapterGradeNo,
State,
AppointState,
AgainNum,
ClassDate
});
});
}
else
{
//跟班
int CourseChapterNo = oguestModel?.CourseChapterNo ?? 0;
cList.ForEach(x => { x.SortNum = Convert.ToDouble(x.ChapterNo); });
ChapterList.AddRange(cList.Where(x => x.SortNum <= CourseChapterNo).OrderByDescending(x => x.SortNum).Select(x => new
{
x.ChapterNo,
x.ChapterName,
x.CourseRate,
CourseRateName = x.CourseRate.ToName(),
x.ChapterGradeNo,
State = 1,
AppointState = 3,
AgainNum = 0,
ClassDate = ""
}));
}
}
}
return ApiResult.Success("", list);
}
/// <summary>
......@@ -1265,12 +1366,14 @@ namespace Edu.WebApi.Controllers.Course
CourseId = base.ParmJObj.GetInt("CourseId"),
CourseRate = (CourseRateEnum)base.ParmJObj.GetInt("CourseRate"),
Student_Id = base.ParmJObj.GetInt("Student_Id"),
GuestState = (GuestStateEnum)base.ParmJObj.GetInt("GuestState")
GuestState = (GuestStateEnum)base.ParmJObj.GetInt("GuestState"),
StuName = base.ParmJObj.GetStringValue("StuName"),
ClassScrollType = base.ParmJObj.GetInt("ClassScrollType", 0)
};
demodel.Group_Id = userInfo.Group_Id;
var list = scrollClassModule.GetStuLearnChapterStaticModule(demodel, out int MaxLength);
string excelName = "学员消课.xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
......@@ -1280,7 +1383,7 @@ namespace Edu.WebApi.Controllers.Course
{
ExcelRows = new List<ExcelColumn>()
};
firstRow.ExcelRows.Add(new ExcelColumn(value: "报名课程") { CellWidth=15});
firstRow.ExcelRows.Add(new ExcelColumn(value: "报名课程") { CellWidth = 15 });
foreach (var item in list)
{
JObject jobj = JObject.Parse(Common.Plugin.JsonHelper.Serialize(item));
......@@ -1347,12 +1450,12 @@ namespace Edu.WebApi.Controllers.Course
else
{
str = chapterName;
dataRow.ExcelRows.Add(new ExcelColumn(value: str) );
dataRow.ExcelRows.Add(new ExcelColumn(value: str));
}
}
else
{
dataRow.ExcelRows.Add(new ExcelColumn(value: str) );
dataRow.ExcelRows.Add(new ExcelColumn(value: str));
}
};
slist.Add(dataRow);
......
......@@ -2446,8 +2446,8 @@ namespace Edu.WebApi.Controllers.User
columns.Add(new ExcelColumn(item.AdvisorStatusName));
columns.Add(new ExcelColumn(item.CreateType.ToName()));
columns.Add(new ExcelColumn((item.CreateType == StuCreateTypeEnum.CustomerInput && !string.IsNullOrWhiteSpace(item.EnterpriseName)) ? item.EnterpriseName : (!string.IsNullOrWhiteSpace(item.StuSourceIdName) ? item.StuSourceIdName : item.StuChannelName)));
columns.Add(new ExcelColumn(item.CourseName ));
columns.Add(new ExcelColumn( item.OrderIncome + (item.Refund > 0 ? ",已退款" + item.Refund : "")));
columns.Add(new ExcelColumn(item.CourseName));
columns.Add(new ExcelColumn(item.OrderIncome + (item.Refund > 0 ? ",已退款" + item.Refund : "")));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
......@@ -2486,6 +2486,41 @@ namespace Edu.WebApi.Controllers.User
return File(byteData1, "application/octet-stream", excelName);
}
}
/// <summary>
/// 获取学生分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStudentCoursePageList()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Student_ViewModel()
{
CourseId = base.ParmJObj.GetInt("CourseId", 0),
StuId = base.ParmJObj.GetInt("StuId", 0),
StuName = base.ParmJObj.GetStringValue("StuName"),
};
query.Group_Id = base.UserInfo.Group_Id;
var data = studentModule.GetStudentCoursePageListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
List<object> list = new List<object>();
foreach (var item in data)
{
list.Add(new
{
item.StuName,
item.StuId,
item.ClassName,
item.CourseName,
item.OrderId,
});
}
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
#endregion
}
}
......@@ -2,7 +2,7 @@
"ConnectionStrings": {
"DefaultConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=test_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient",
"DataStatisticsConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DataStatisticsConnectionPName": "MySql.Data.MySqlClient",
......
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