Commit 1efee8e1 authored by liudong1993's avatar liudong1993

Merge branch 'master' of http://gitlab.oytour.com/Kui2/education

parents 695ce17c 735b6966
......@@ -110,5 +110,11 @@ namespace Edu.Common.Enum.Finance
/// </summary>
[EnumField("教育留学")]
EducationStudy = 18,
/// <summary>
/// 试听班级
/// </summary>
[EnumField("试听班级")]
ReserveClass =19,
}
}
......@@ -71,6 +71,16 @@ namespace Edu.Model.ViewModel.Reserve
/// </summary>
public string StuTel { get; set; }
/// <summary>
/// QQ号码
/// </summary>
public string QQ { get; set; }
/// <summary>
/// 微信号
/// </summary>
public string WeChatNo { get; set; }
/// <summary>
/// 教师名称
/// </summary>
......
......@@ -131,8 +131,8 @@ namespace Edu.Module.Duty
}
if (visitor_ReserveRepository.ExistsVisitorReserveRepository(model))
{
message = string.Format("已存在此访客的预约试听课信息,请重新选择!");
return false;
//message = string.Format("已存在此访客的预约试听课信息,请重新选择!");
//return false;
}
if (model.Id > 0)
{
......@@ -541,7 +541,7 @@ namespace Edu.Module.Duty
/// <returns></returns>
public RB_Reserve_Class_Extend GetReserveClassModule(int ReserveClassId)
{
var extModel = reserve_ClassRepository.GetEntity<RB_Reserve_Class_Extend>(ReserveClassId);
var extModel = reserve_ClassRepository.GetReserveClassListRepository(new RB_Reserve_Class_Extend() { ReserveClassId = ReserveClassId })?.FirstOrDefault();
return extModel;
}
......
......@@ -111,6 +111,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Reserve_Class_Extend.School_Id), query.School_Id);
}
if (query.ReserveClassId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Reserve_Class_Extend.ReserveClassId), query.ReserveClassId);
}
}
return Get<RB_Reserve_Class_Extend>(builder.ToString(),parameters).ToList();
}
......
......@@ -29,14 +29,13 @@ namespace Edu.Repository.Reserve
StringBuilder builder = new StringBuilder();
var parameters = new DynamicParameters();
builder.Append(@"
SELECT A.*,IFNULL(B.`Name`,'') AS VisitorName,C.ClassDate,C.ClassTime,C.EndTime,C.ClassContent,IFNULL(D.TeacherName,'') AS TeacherName
,IFNULL(E.RoomName,'') AS RoomName,F.Id AS AccountId,IFNULL(G.LessonName,'') AS LessonName
FROM RB_Visitor_Reserve AS A LEFT JOIN rb_visitor AS B ON A.Visitor_Id=B.Id
SELECT A.*,IFNULL(B.StuName,'') AS VisitorName,C.ClassDate,C.ClassTime,C.EndTime,C.ClassContent,IFNULL(D.TeacherName,'') AS TeacherName,IFNULL(E.RoomName,'') AS RoomName
,IFNULL(B.StuTel,'') AS StuTel,IFNULL(F.LessonName,'') AS LessonName,IFNULL(B.QQ,'') AS QQ,IFNULL(B.WeChatNo,'') AS WeChatNo
FROM RB_Visitor_Reserve AS A LEFT JOIN rb_student AS B ON A.Visitor_Id=B.StuId
LEFT JOIN rb_reserve_class AS C ON A.ReserveClassId=C.ReserveClassId
LEFT JOIN rb_teacher AS D ON C.TeacherId=D.TId
LEFT JOIN rb_account AS F On C.TeacherId=F.AccountId AND F.AccountType=2
LEFT JOIN rb_class_room AS E ON C.ClassRoomId=E.RoomId
LEFT JOIN rb_triallesson AS G ON C.TrialLessonId=G.Id
LEFT JOIN rb_triallesson AS F ON C.TrialLessonId=F.Id
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.Status), (int)DateStateEnum.Normal);
......@@ -84,6 +83,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.Visitor_Id), query.Visitor_Id);
}
if (query.ReserveClassId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Visitor_Reserve_Extend.ReserveClassId), query.ReserveClassId);
}
}
builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_Visitor_Reserve_Extend.Id));
return GetPage<RB_Visitor_Reserve_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
......
......@@ -49,6 +49,7 @@ namespace Edu.WebApi.Controllers.Duty
Id=base.ParmJObj.GetInt("Id"),
IsQueryAll=base.ParmJObj.GetInt("IsQueryAll"),
Visitor_Id=base.ParmJObj.GetInt("Visitor_Id"),
ReserveClassId=base.ParmJObj.GetInt("ReserveClassId"),
};
if (query.IsQueryAll != 1)
{
......
......@@ -11,6 +11,7 @@ using Edu.Model.ViewModel.Finance;
using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.Sell;
using Edu.Module.Course;
using Edu.Module.Duty;
using Edu.Module.Finance;
using Edu.Module.StudyAbroad;
using Edu.WebApi.Filter;
......@@ -54,6 +55,11 @@ namespace Edu.WebApi.Controllers.Finance
/// </summary>
private readonly TeachingRewardsModule teachingRewardsModule = AOP.AOPHelper.CreateAOPObject<TeachingRewardsModule>();
/// <summary>
/// 试听班级处理类对象
/// </summary>
private readonly VisitorReserveModule visitorReserveModule = new VisitorReserveModule();
/// <summary>
/// 生成指定类型的佣金
/// </summary>
......@@ -247,7 +253,7 @@ namespace Edu.WebApi.Controllers.Finance
}
/// <summary>
/// 用户信息下载
/// 班级收支下载
/// </summary>
[HttpPost]
[Obsolete]
......@@ -565,6 +571,255 @@ namespace Edu.WebApi.Controllers.Finance
}
}
/// <summary>
/// 获取试听班级收支明细
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public ApiResult GetReserveClassBalanceSheet()
{
int ReserveClassId = base.ParmJObj.GetInt("ReserveClassId", 0);
if (ReserveClassId <= 0)
{
return ApiResult.Failed("试听班级Id不存在");
}
RB_Finance_Extend model = new RB_Finance_Extend() { TCID = ReserveClassId, OrderSource = OrderResourceEnum.ReserveClass, RB_Group_Id = base.UserInfo.Group_Id, FinanceType = 2 };
var financeList = financeModule.GetFinanceInfoList(model).Where(t => (t.Status == FinanceAuditStatus.InReview || t.Status == FinanceAuditStatus.Pass || t.Status == FinanceAuditStatus.CTemporary)).ToList();
var reserveClassModel = visitorReserveModule.GetReserveClassModule(ReserveClassId);
//支出
decimal PayReceive = 0;//应付
decimal PayActual = 0;//实付
PayReceive = (financeList != null && financeList.Any()) ? financeList.Where(x => x.Type == WFTempLateClassEnum.OUT).Sum(x => x.Money ?? 0) : 0;
PayActual = (financeList != null && financeList.Any()) ? financeList.Where(x => x.Type == WFTempLateClassEnum.OUT).Sum(x => x.PayMoney ?? 0) : 0;
var recultFiniceList = financeList.Select(x => new
{
x.FrID,
x.Type,
x.TCID,
x.OrderID,
x.Money,
x.PayMoney,
AirTotalMoney = x.AirTotalMoney ?? 0,
AirTotalPayMoney = x.AirTotalPayMoney ?? 0,
CostTypeList = x.CostTypeList.Distinct().ToList(),
x.OrderSource,
AuditList = x.AuditList.Select(t => new { t.AuditEmId, t.AuditEmName, AuditDate = t.AuditDate.HasValue ? t.AuditDate.Value.ToString("yyyy/MM/dd") : "" }),
StatusStr = EnumHelper.ToName(x.Status.Value),
x.RB_CreateByName,
CreateDate = x.CreateDate.Value.ToString("yyyy-MM-dd"),
TradeDate = x.TradeDate.HasValue ? x.TradeDate.Value.ToString("yyyy-MM-dd") : "",
TradeWayList = x.BankList?.Select(y => new { y.AccountType, y.Alias, y.BankNo, TypeName = EnumHelper.ToName(y.Type), y.CurrencyName, y.OriginalMoney, y.Money, y.Rate })
});
var obj = new
{
reserveClassModel.ReserveClassId,
ReserveClassName = reserveClassModel.ClassDateStr + " " + reserveClassModel.ClassTime + "【" + reserveClassModel.TeacherName + "】试听班",
reserveClassModel.LessonName,
reserveClassModel.RoomName,
reserveClassModel.TeacherName,
ClassTime = reserveClassModel.ClassDateStr + " " + reserveClassModel.ClassTime + "-" + reserveClassModel.EndTime,
PayReceive,
PayActual,
incomeList = recultFiniceList.Where(t => t.Type == WFTempLateClassEnum.IN),//其他收入
outList = recultFiniceList.Where(t => t.Type == WFTempLateClassEnum.OUT),//其他支出
};
return ApiResult.Success(data: obj);
}
/// <summary>
/// 试听班级收支下载
/// </summary>
[HttpPost]
[Obsolete]
public FileContentResult GetReserveClassBalanceSheetToExcel()
{
int ReserveClassId = base.ParmJObj.GetInt("ReserveClassId", 0);
List<ExcelDataSource> slist = new List<ExcelDataSource>();
string ExcelName = "试听班级收支明细" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
if (ReserveClassId <= 0)
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
RB_Finance_Extend model = new RB_Finance_Extend() { TCID = ReserveClassId, OrderSource = OrderResourceEnum.ReserveClass, RB_Group_Id = base.UserInfo.Group_Id, FinanceType = 2 };
var financeList = financeModule.GetFinanceInfoList(model).Where(t => (t.Status == FinanceAuditStatus.InReview || t.Status == FinanceAuditStatus.Pass || t.Status == FinanceAuditStatus.CTemporary)).ToList();
var reserveClassModel = visitorReserveModule.GetReserveClassModule(ReserveClassId);
//支出
decimal PayReceive = 0;//应付
decimal PayActual = 0;//实付
PayReceive = (financeList != null && financeList.Any()) ? financeList.Where(x => x.Type == WFTempLateClassEnum.OUT).Sum(x => x.Money ?? 0) : 0;
PayActual = (financeList != null && financeList.Any()) ? financeList.Where(x => x.Type == WFTempLateClassEnum.OUT).Sum(x => x.PayMoney ?? 0) : 0;
var recultFiniceList = financeList.Select(x => new
{
x.FrID,
x.Type,
x.TCID,
x.OrderID,
x.Money,
x.PayMoney,
AirTotalMoney = x.AirTotalMoney ?? 0,
AirTotalPayMoney = x.AirTotalPayMoney ?? 0,
CostTypeList = x.CostTypeList.Distinct().ToList(),
x.OrderSource,
AuditList = x.AuditList.Select(t => new { t.AuditEmId, t.AuditEmName, AuditDate = t.AuditDate.HasValue ? t.AuditDate.Value.ToString("yyyy/MM/dd") : "" }),
StatusStr = EnumHelper.ToName(x.Status.Value),
x.RB_CreateByName,
CreateDate = x.CreateDate.Value.ToString("yyyy-MM-dd"),
TradeDate = x.TradeDate.HasValue ? x.TradeDate.Value.ToString("yyyy-MM-dd") : "",
TradeWayList = x.BankList?.Select(y => new { y.AccountType, y.Alias, y.BankNo, TypeName = EnumHelper.ToName(y.Type), y.CurrencyName, y.OriginalMoney, y.Money, y.Rate })
});
string title = "试听班级情况";
string subtitle = "试听班级名称";
string thirdTitle = "试听课程名称:";
string fourTitle = "试听开班时间:";
List<RB_Finance_Extend> financeReciveList = financeList.Where(t => t.Type == WFTempLateClassEnum.IN).ToList();
List<RB_Finance_Extend> financePayList = financeList.Where(t => t.Type == WFTempLateClassEnum.OUT).ToList();
try
{
ExcelDataSource teamBalance = new ExcelDataSource(50)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: title,colspan:2)
{
IsBold = true,
CellWidth=30,
HAlignmentEnum= HAlignmentEnum.LEFT,
},
new ExcelColumn(value:"收入",colspan:2)
{
IsBold = true,
CellWidth=20,
HAlignmentEnum= HAlignmentEnum.LEFT
},
}
};
slist.Add(teamBalance);
ExcelDataSource firstRow = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: $"{subtitle}{reserveClassModel.ClassDateStr + " " + reserveClassModel.ClassTime + "【" + reserveClassModel.TeacherName + "】试听班"}",colspan:2)
{
HAlignmentEnum= HAlignmentEnum.LEFT,
},
new ExcelColumn(value:$"应付:¥{PayReceive}",colspan:2)
{
HAlignmentEnum= HAlignmentEnum.LEFT
},
}
};
slist.Add(firstRow);
ExcelDataSource secondRow = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: $"{thirdTitle}{reserveClassModel.LessonName}",colspan:2)
{
HAlignmentEnum= HAlignmentEnum.LEFT,
},
new ExcelColumn(value:$"实付:¥{PayActual}",colspan:2)
{
HAlignmentEnum= HAlignmentEnum.LEFT
},
}
};
slist.Add(secondRow);
ExcelDataSource thirdRow = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: $"{fourTitle}{ reserveClassModel.ClassDateStr + " " + reserveClassModel.ClassTime + "-" + reserveClassModel.EndTime}",colspan:2)
{
HAlignmentEnum= HAlignmentEnum.LEFT,
},
new ExcelColumn(value:$"待付:¥{(PayReceive-PayActual)}",colspan:2)
{
HAlignmentEnum= HAlignmentEnum.LEFT
},
}
};
slist.Add(thirdRow);
ExcelDataSource fourRow = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: $"试讲老师:{reserveClassModel.TeacherName}",colspan:2)
{
HAlignmentEnum= HAlignmentEnum.LEFT,
},
new ExcelColumn(value:"",colspan:2)
{
HAlignmentEnum= HAlignmentEnum.LEFT
},
}
};
if (ReserveClassId > 0)
{
slist.Add(fourRow);
}
ExcelDataSource splitRow = new ExcelDataSource(40)
{
ExcelRows = new List<ExcelColumn>()
};
slist.Add(splitRow);
#region 收支列表
ExcelDataSource reciveRow = new ExcelDataSource(40)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: "收入",colspan:9)
{
IsBold = true,
IsSetBorder =false,
HAlignmentEnum= HAlignmentEnum.LEFT,
}
}
};
slist.Add(reciveRow);
GenerateTeamBalanceSheet(slist, financeReciveList, WFTempLateClassEnum.IN);
ExcelDataSource payRow = new ExcelDataSource(40)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: "支出",colspan:9)
{
IsBold = true,
IsSetBorder =false,
HAlignmentEnum= HAlignmentEnum.LEFT,
}
}
};
slist.Add(payRow);
GenerateTeamBalanceSheet(slist, financePayList, WFTempLateClassEnum.OUT);
#endregion
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", ExcelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, string.Format("GetFileFromWebApi_requestData: {0}", JsonHelper.Serialize(RequestParm)));
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
}
/// <summary>
/// 添加修改班级收支设置
/// </summary>
......
......@@ -1335,7 +1335,7 @@ namespace Edu.WebApi.Controllers.User
EndLeaveTime = base.ParmJObj.GetStringValue("EndLeaveTime"),
LeaveStatus = (LeaveStatusEnum)base.ParmJObj.GetInt("LeaveStatus"),
Post_Id = base.ParmJObj.GetInt("Post_Id"),
School_Id = base.ParmJObj.GetInt("School_Id"),
School_Id = -1,
StartBirthDate = base.ParmJObj.GetStringValue("StartBirthDate"),
StartEntryTime = base.ParmJObj.GetStringValue("StartEntryTime"),
StartLeaveTime = base.ParmJObj.GetStringValue("StartLeaveTime"),
......@@ -2184,7 +2184,7 @@ namespace Edu.WebApi.Controllers.User
{
var query = new Employee_ViewModel()
{
School_Id = base.ParmJObj.GetInt("School_Id"),
School_Id = -1,
Account = base.ParmJObj.GetStringValue("Account"),
AccountType = (AccountTypeEnum)base.ParmJObj.GetInt("AccountType"),
Id = base.ParmJObj.GetInt("Id"),
......
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