Commit 34b811a4 authored by liudong1993's avatar liudong1993

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

parents b354d5af 18093774
......@@ -18,9 +18,10 @@ namespace Edu.Model.Entity.Course
public int Id { get; set; }
/// <summary>
/// 工作流id
/// 单据编号
/// </summary>
public int BackrelevanceId { get; set; }
public int ConditionId { get; set; }
/// <summary>
/// 审核id
......@@ -62,5 +63,10 @@ namespace Edu.Model.Entity.Course
/// </summary>
public int AuditEmId { get; set; }
/// <summary>
/// 审核节点编号
/// </summary>
public int BackrelevanceId { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Course
{
/// <summary>
/// 学员完成分钟数
/// </summary>
public class GuestFinishMinute_ViewModel
{
/// <summary>
/// 学员编号
/// </summary>
public int GuestId { get; set; }
/// <summary>
/// 完成分钟数
/// </summary>
public decimal FinishMinutes { get; set; }
}
}
......@@ -10,6 +10,44 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public class RB_Student_BackClass_ViewModel : RB_Student_BackClass
{
/// <summary>
/// 学员名称
/// </summary>
public string GuestName { get; set; }
/// <summary>
/// 校区名称
/// </summary>
public string SchoolName { get; set; }
/// <summary>
/// 班级名称
/// </summary>
public string ClassName { get; set; }
/// <summary>
/// 教师名称
/// </summary>
public string TeacherName { get; set; }
/// <summary>
/// 申请开始时间
/// </summary>
public string QStartTime { get; set; }
/// <summary>
/// 申请结束时间
/// </summary>
public string QEndTime { get; set; }
/// <summary>
/// 申请人
/// </summary>
public string CreateByName { get; set; }
/// <summary>
/// 申请时间
/// </summary>
public string CreateTimeStr { get { return Common.ConvertHelper.FormatTime(this.CreateTime); } }
}
}
......@@ -8,6 +8,7 @@ using System.Collections.Generic;
using System.Text;
using System.Linq;
using Edu.Model.Entity.Course;
using VT.FW.DB;
namespace Edu.Module.Course
{
......@@ -31,12 +32,22 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_Student_BackRecordRepository student_BackRecordRepository = new RB_Student_BackRecordRepository();
/// <summary>
/// 学员签到仓储层对象
/// </summary>
private readonly RB_Class_CheckRepository class_CheckRepository = new RB_Class_CheckRepository();
/// <summary>
/// 班级基础配置表仓储层对象
/// </summary>
private readonly RB_Class_ConfigRepository class_ConfigRepository = new RB_Class_ConfigRepository();
/// <summary>
/// 流程仓储层对象
/// </summary>
private readonly RB_FlowRepository flowRepository = new RB_FlowRepository();
/// <summary>
/// 创建退课流程
/// </summary>
......@@ -46,7 +57,7 @@ namespace Edu.Module.Course
/// <param name="userinfo"></param>
/// <param name="message"></param>
/// <returns></returns>
public virtual bool CreateBackClassApplyModule(int GuestId,int OrderId,string reason, UserInfo userinfo,out string message)
public virtual bool CreateBackClassApplyModule(int GuestId, int OrderId, string reason, UserInfo userinfo, out string message)
{
bool flag;
message = "";
......@@ -87,27 +98,37 @@ namespace Edu.Module.Course
string backNum;
if (totalBackCount < 10000)
{
backNum= String.Format("{0:00000}", totalBackCount);
backNum = String.Format("{0:00000}", totalBackCount);
}
else
{
backNum = totalBackCount.ToString();
}
var teacherId = teacherModel?.Id ?? 0;
//基础课时分钟数
var BasicMinutes = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = userinfo.Group_Id })?.BasicMinutes ?? 45;
var stuCheckList = class_CheckRepository.GetGuestFinishMinutesRepository(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 backClassModel = new RB_Student_BackClass_ViewModel()
{
BackId = 0,
AuditStatus = Common.Enum.Course.BackClassAuditStatusEnum.InReview,
BackMoney = 0,
BackMoney = Math.Round(backMoney, 2),
BackNum = "T" + backNum,
ClassId = orderModel.ClassId,
CreateBy = userinfo.Id,
CreateTime = DateTime.Now,
FinishHours = 0,
FinishHours = FinishHours,
Group_Id = userinfo.Group_Id,
GuestId = GuestId,
SchoolId = guestModel.School_Id,
StudentId = 0,
StudentId = GuestId,
TeacherId = teacherId
};
var newBackId = student_BackClassRepository.Insert(backClassModel);
......@@ -147,7 +168,7 @@ namespace Edu.Module.Course
var headmaster = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
Post_Id = Common.Config.SchoolPostId,
School_Id = classModel.School_Id,
Group_Id = classModel.Group_Id
})?.FirstOrDefault();
AuditedId += (headmaster?.Id ?? 0) + ",";
subItem.UserId = (headmaster?.Id ?? 0);
......@@ -157,7 +178,7 @@ namespace Edu.Module.Course
var headmaster = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
Post_Id = Common.Config.JiaoWuZhang,
School_Id = classModel.School_Id,
Group_Id = classModel.Group_Id
})?.FirstOrDefault();
AuditedId += (headmaster?.Id ?? 0) + ",";
subItem.UserId = (headmaster?.Id ?? 0);
......@@ -182,10 +203,12 @@ namespace Edu.Module.Course
};
var backLevanceId = student_BackRelevanceRepository.Insert(backLevance);
backLevance.Id = backLevanceId;
flag = backLevanceId > 0;
foreach (var subItem in item.FlowAduitList)
{
var recordModel = new RB_Student_BackRecord_ViewModel()
{
ConditionId= backClassModel.BackId,
AuditStatus = 1,
AuditId = subItem.UserId,
AuditEmId = subItem.UserId,
......@@ -196,10 +219,18 @@ namespace Edu.Module.Course
Description = "",
BackrelevanceId = backLevance.Id,
};
student_BackRecordRepository.Insert(recordModel);
flag = student_BackRecordRepository.Insert(recordModel) > 0;
}
}
}
if (flag)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Order_Guest_ViewModel.GuestState),3 }
};
flag = order_GuestRepository.Update(fileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), GuestId));
}
return flag;
}
}
......

using Edu.Model.ViewModel.Course;
using Edu.Repository.Course;
using Edu.Repository.Flow;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Module.Course
{
/// <summary>
/// 学员单据处理类
/// </summary>
public class StudentBillModule
{
/// <summary>
/// 学员退课单据仓储层对象
/// </summary>
private readonly RB_Student_BackClassRepository student_BackClassRepository = new RB_Student_BackClassRepository();
/// <summary>
/// 退款单据审核人员信息仓储层对象
/// </summary>
private readonly RB_Student_BackRelevanceRepository student_BackRelevanceRepository = new RB_Student_BackRelevanceRepository();
/// <summary>
/// 学员退课单据审核记录仓储层对象
/// </summary>
private readonly RB_Student_BackRecordRepository student_BackRecordRepository = new RB_Student_BackRecordRepository();
/// <summary>
/// 流程仓储层对象
/// </summary>
private readonly RB_FlowRepository flowRepository = new RB_FlowRepository();
/// <summary>
/// 获取学员退课单据分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
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);
if (list != null)
{
foreach (var item in list)
{
}
}
return list;
}
}
}
......@@ -127,5 +127,28 @@ namespace Edu.Repository.Course
decimal avgClassRate = Math.Round(Convert.ToDecimal(Num2) / Num1, 2, MidpointRounding.AwayFromZero);
return avgClassRate;
}
/// <summary>
/// 学员完成学习分钟数
/// </summary>
/// <param name="guestIds">学员编号</param>
/// <returns></returns>
public List<GuestFinishMinute_ViewModel> GetGuestFinishMinutesRepository(string guestIds)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT B.OrderGuestId AS GuestId,SUM(IFNULL(B.FinishMinutes,0)) AS FinishMinutes
FROM
(
SELECT B.ClassDate,A.OrderGuestId
,TIMESTAMPDIFF(MINUTE,(DATE_FORMAT(CONCAT('2021-01-01 ',C.StartTime,':00'),'%Y-%m-%d %H:%i')),(DATE_FORMAT(CONCAT('2021-01-01 ',C.EndTime,':00'), '%Y-%m-%d %H:%i'))) AS FinishMinutes
FROM rb_class_check AS A INNER JOIN rb_class_plan AS B ON A.ClassDate=B.ClassDate AND A.ClassId=B.ClassId AND B.`Status`=0
INNER JOIN rb_class_time AS C ON B.ClassPlanId=C.ClassPlanId
WHERE A.CheckStatus=0 AND A.OrderGuestId IN({0})
) AS B
GROUP BY B.OrderGuestId
",guestIds);
return Get<GuestFinishMinute_ViewModel>(builder.ToString()).ToList();
}
}
}
......@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Course
{
......@@ -22,15 +23,41 @@ namespace Edu.Repository.Course
/// <returns></returns>
public List<RB_Student_BackClass_ViewModel> GetStudentBackClassPageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_Student_BackClass_ViewModel query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT *
FROM RB_Student_BackClass
SELECT A.*,IFNULL(B.GuestName,'') AS GuestName,IFNULL(C.SName,'') AS SchoolName,IFNULL(D.ClassName,'') AS ClassName,IFNULL(T.TeacherName,'') AS TeacherName
FROM RB_Student_BackClass AS A LEFT JOIN rb_order_guest AS B ON A.GuestId=B.Id
LEFT JOIN rb_school AS C ON A.SchoolId=C.SId
LEFT JOIN rb_class AS D ON A.ClassId=D.ClassId
LEFT JOIN (SELECT account.Id,teac.TeacherName FROM rb_account AS account INNER JOIN rb_teacher AS teac ON account.AccountId=teac.TId AND account.AccountType=2)
AS T ON A.TeacherId=T.Id
WHERE 1=1
");
if (query != null)
{
{
if (query.Group_Id > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Student_BackClass_ViewModel.Group_Id), query.Group_Id);
}
if (!string.IsNullOrEmpty(query.ClassName))
{
builder.AppendFormat(@" AND (B.{0} LIKE @ClassName OR D.{1} @ClassName OR T.{2} LIKE @ClassName) ",
nameof(RB_Student_BackClass_ViewModel.GuestName), nameof(RB_Student_BackClass_ViewModel.ClassName), nameof(RB_Student_BackClass_ViewModel.TeacherName));
parameters.Add("ClassName", "%" + query.ClassName.Trim() + "%");
}
if (query.AuditStatus > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Student_BackClass_ViewModel.AuditStatus), (int)query.AuditStatus);
}
if (!string.IsNullOrEmpty(query.QStartTime))
{
builder.AppendFormat(@" AND A.{0}>='{1}' ", nameof(RB_Student_BackClass_ViewModel.CreateTime), query.QStartTime);
}
if (!string.IsNullOrEmpty(query.QEndTime))
{
builder.AppendFormat(@" AND A.{0}<='{1} 23:59:59' ", nameof(RB_Student_BackClass_ViewModel.CreateTime), query.QEndTime);
}
}
return GetPage<RB_Student_BackClass_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
......
......@@ -107,8 +107,13 @@ WHERE 1=1
public List<RB_Account_ViewModel> GetAccountListExtRepository(RB_Account_ViewModel query)
{
StringBuilder where = new StringBuilder();
StringBuilder where2 = new StringBuilder();
if (query != null)
{
if (query.Group_Id > 0)
{
where.AppendFormat(" AND A.{0}={1} ", nameof(RB_Account_ViewModel.Group_Id), query.Group_Id);
}
if (!string.IsNullOrWhiteSpace(query.Account))
{
where.AppendFormat(" AND A.{0}='{1}' ", nameof(RB_Account_ViewModel.Account), query.Account.Trim());
......@@ -127,11 +132,11 @@ WHERE 1=1
}
if (!string.IsNullOrEmpty(query.PostName))
{
where.AppendFormat(" AND p.{0}='{1}' ", nameof(RB_Account_ViewModel.PostName), query.PostName);
where2.AppendFormat(" AND p.{0}='{1}' ", nameof(RB_Account_ViewModel.PostName), query.PostName);
}
if (query.Post_Id>0)
{
where.AppendFormat(" AND p.{0}={1} ", nameof(RB_Account_ViewModel.Post_Id), query.Post_Id);
where2.AppendFormat(" AND A.{0}={1} ", nameof(RB_Account_ViewModel.Post_Id), query.Post_Id);
}
}
......@@ -147,7 +152,7 @@ FROM
UNION ALL
SELECT A.*,IFNULL(B.TeacherName,'') AS AccountName,B.TeacherIcon AS UserIcon,B.Dept_Id,B.Post_Id
FROM rb_account AS A INNER JOIN rb_teacher AS B ON A.AccountId=B.TId AND A.AccountType=2
WHERE 1=1 {0}
WHERE 1=1 {0}
UNION ALL
SELECT A.*,IFNULL(B.AssistName,'') AS AccountName,B.AssistIcon AS UserIcon,B.Dept_Id,B.Post_Id
FROM rb_account AS A INNER JOIN rb_assist AS B ON A.AccountId=B.AId AND A.AccountType=3
......@@ -155,12 +160,13 @@ FROM
UNION ALL
SELECT A.*,IFNULL(B.StuName,'') AS AccountName,B.StuIcon AS UserIcon,0 AS Dept_Id,0 AS Post_Id
FROM rb_account AS A INNER JOIN rb_student AS B ON A.AccountId=B.StuId AND A.AccountType=4
WHERE 1=1 {0}
WHERE 1=1 {0}
) AS A LEFT JOIN rb_group AS g ON A.Group_Id=g.GId
LEFT JOIN rb_school AS s ON A.School_Id=s.SId
LEFT JOIN rb_department AS d ON A.Dept_Id=d.DeptId
LEFT JOIN rb_post AS p ON A.Post_Id=p.PostId
", where.ToString());
WHERE 1=1 {1}
", where.ToString(), where2.ToString());
var list = Get<RB_Account_ViewModel>(builder.ToString()).ToList();
return list;
}
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Edu.Cache.User;
using Edu.Common.API;
using Edu.Common.Enum.Course;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Course;
using Edu.Module.Course;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Edu.WebApi.Controllers.Course
{
/// <summary>
/// 学员相关
/// </summary>
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class StuController : BaseController
{
/// <summary>
/// 学员单据处理类对象
/// </summary>
private readonly StudentBillModule studentBillModule = new StudentBillModule();
/// <summary>
/// 获取学员退课单据分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStudentBackClassPage()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Student_BackClass_ViewModel()
{
ClassName = base.ParmJObj.GetStringValue("ClassName"),
QStartTime=base.ParmJObj.GetStringValue("QStartTime"),
QEndTime=base.ParmJObj.GetStringValue("QEndTime"),
AuditStatus=(BackClassAuditStatusEnum)base.ParmJObj.GetInt("AuditStatus")
};
query.Group_Id = base.UserInfo.Group_Id;
List<object> result = new List<object>();
var list = studentBillModule.GetStudentBackClassPageListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
{
if (item.CreateBy > 0)
{
item.CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "";
}
result.Add(new
{
item.BackId,
item.BackNum,
item.GuestId,
item.GuestName,
item.SchoolId,
item.SchoolName,
item.ClassId,
item.ClassName,
item.TeacherId,
item.TeacherName,
item.FinishHours,
item.BackMoney,
item.CreateTimeStr,
item.CreateByName,
item.AuditStatus,
AuditStatusName=item.AuditStatus.ToName(),
});
}
pageModel.Count = rowsCount;
pageModel.PageData = result;
return ApiResult.Success(data: pageModel);
}
}
}
......@@ -46,7 +46,7 @@
//退课流程编号
"BackClassFlowId": 1,
//分区校长岗位编号
"SchoolPostId": 2,
"SchoolPostId": 3,
//教务长
"JiaoWuZhang": 8
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment