Commit 5365d0d3 authored by 黄奎's avatar 黄奎

页面修改

parent 8fff8c62
...@@ -23,6 +23,16 @@ namespace Edu.Model.Entity.EduTask ...@@ -23,6 +23,16 @@ namespace Edu.Model.Entity.EduTask
/// </summary> /// </summary>
public string Title { get; set; } public string Title { get; set; }
/// <summary>
/// 班级编号
/// </summary>
public int ClassId { get; set; }
/// <summary>
/// 订单编号
/// </summary>
public int OrderId { get; set; }
/// <summary> /// <summary>
/// 单据类型 /// 单据类型
/// </summary> /// </summary>
...@@ -63,6 +73,11 @@ namespace Edu.Model.Entity.EduTask ...@@ -63,6 +73,11 @@ namespace Edu.Model.Entity.EduTask
/// </summary> /// </summary>
public DateTime UpdateTime { get; set; } public DateTime UpdateTime { get; set; }
/// <summary>
/// 抄送人(多个逗号分隔)
/// </summary>
public string RecipientIds { get; set; }
/// <summary> /// <summary>
/// 审核状态(见枚举) /// 审核状态(见枚举)
/// </summary> /// </summary>
......
...@@ -4,14 +4,14 @@ using System.Collections.Generic; ...@@ -4,14 +4,14 @@ using System.Collections.Generic;
using System.Text; using System.Text;
using VT.FW.DB; using VT.FW.DB;
namespace Edu.Model.Entity.Course namespace Edu.Model.Entity.EduTask
{ {
/// <summary> /// <summary>
/// 学员退课单据审核记录表 /// 教务单据审核记录表
/// </summary> /// </summary>
[Serializable] [Serializable]
[DB(ConnectionName = "DefaultConnection")] [DB(ConnectionName = "DefaultConnection")]
public class RB_Student_BackRecord public class RB_Education_Record
{ {
/// <summary> /// <summary>
/// 审核记录表主键编号 /// 审核记录表主键编号
......
...@@ -4,14 +4,14 @@ using System.Collections.Generic; ...@@ -4,14 +4,14 @@ using System.Collections.Generic;
using System.Text; using System.Text;
using VT.FW.DB; using VT.FW.DB;
namespace Edu.Model.Entity.Course namespace Edu.Model.Entity.EduTask
{ {
/// <summary> /// <summary>
/// 退款单据审核人员信息实体类 /// 教务单据审核人员信息实体类
/// </summary> /// </summary>
[Serializable] [Serializable]
[DB(ConnectionName = "DefaultConnection")] [DB(ConnectionName = "DefaultConnection")]
public class RB_Student_BackRelevance public class RB_Education_Relevance
{ {
/// <summary> /// <summary>
/// 主键编号 /// 主键编号
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.EduTask
{
/// <summary>
/// 教务单据审核实体类
/// </summary>
public class EduReceiptAudit
{
/// <summary>
/// 单据编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 审核状态(1-待审核,2-审核通过,3-驳回)
/// </summary>
public int AuditStatus { get; set; }
/// <summary>
/// 审核备注
/// </summary>
public string Description { get; set; }
/// <summary>
/// 是否特殊节点
/// </summary>
public int SpecialNode { get; set; }
/// <summary>
/// 抄送人
/// </summary>
public string RecipientIds { get; set; }
/// <summary>
/// 退款金额【退课单据】
/// </summary>
public decimal BackMoney { get; set; }
}
}
using Edu.Model.Entity.Course; using Edu.Model.Entity.Course;
using Edu.Model.Entity.EduTask;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
namespace Edu.Model.ViewModel.Course namespace Edu.Model.ViewModel.EduTask
{ {
/// <summary> /// <summary>
/// 学员退课单据审核记录表视图实体类 /// 教务单据审核记录表视图实体类
/// </summary> /// </summary>
public class RB_Student_BackRecord_ViewModel : RB_Student_BackRecord public class RB_Education_Record_ViewModel : RB_Education_Record
{ {
} }
......
using Edu.Model.Entity.Course; using Edu.Model.Entity.Course;
using Edu.Model.Entity.EduTask;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
namespace Edu.Model.ViewModel.Course namespace Edu.Model.ViewModel.EduTask
{ {
/// <summary> /// <summary>
/// 退款单据审核人员信息视图实体类 /// 教务单据审核人员信息视图实体类
/// </summary> /// </summary>
public class RB_Student_BackRelevance_ViewModel : RB_Student_BackRelevance public class RB_Education_Relevance_ViewModel : RB_Education_Relevance
{ {
} }
} }
...@@ -3006,7 +3006,7 @@ namespace Edu.Module.Course ...@@ -3006,7 +3006,7 @@ namespace Edu.Module.Course
result.Add(new result.Add(new
{ {
Id = item?.ClassTimeId ?? 0, Id = item?.ClassTimeId ?? 0,
ClassType = item.ClassType, item.ClassType,
item.ClassId, item.ClassId,
item.ClassName, item.ClassName,
item.CourseName, item.CourseName,
......
...@@ -9,6 +9,8 @@ using System.Text; ...@@ -9,6 +9,8 @@ using System.Text;
using System.Linq; using System.Linq;
using Edu.Model.Entity.Course; using Edu.Model.Entity.Course;
using VT.FW.DB; using VT.FW.DB;
using Edu.Model.Entity.EduTask;
using Edu.Repository.EduTask;
namespace Edu.Module.Course namespace Edu.Module.Course
{ {
...@@ -22,16 +24,7 @@ namespace Edu.Module.Course ...@@ -22,16 +24,7 @@ namespace Edu.Module.Course
/// </summary> /// </summary>
private readonly RB_Student_BackClassRepository student_BackClassRepository = new RB_Student_BackClassRepository(); 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>
/// 学员签到仓储层对象 /// 学员签到仓储层对象
/// </summary> /// </summary>
...@@ -43,9 +36,9 @@ namespace Edu.Module.Course ...@@ -43,9 +36,9 @@ namespace Edu.Module.Course
private readonly RB_Class_ConfigRepository class_ConfigRepository = new RB_Class_ConfigRepository(); private readonly RB_Class_ConfigRepository class_ConfigRepository = new RB_Class_ConfigRepository();
/// <summary> /// <summary>
/// 流程仓储层对象 /// 教务单据
/// </summary> /// </summary>
private readonly RB_FlowRepository flowRepository = new RB_FlowRepository(); private readonly RB_Education_ReceiptRepository education_ReceiptRepository = new RB_Education_ReceiptRepository();
/// <summary> /// <summary>
...@@ -80,20 +73,14 @@ namespace Edu.Module.Course ...@@ -80,20 +73,14 @@ namespace Edu.Module.Course
message = "未找到对应的班级信息!"; message = "未找到对应的班级信息!";
return false; return false;
} }
//获取退课流程
var flowModel = flowRepository.GetFlowRepository(Common.Config.BackClassFlowId);
if (flowModel == null)
{
message = "未配置退课流程!";
return false;
}
//获取教师实体信息 //获取教师实体信息
var teacherModel = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel() var teacherModel = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{ {
AccountId = classModel.Teacher_Id, AccountId = classModel.Teacher_Id,
AccountType = Common.Enum.User.AccountTypeEnum.Teacher AccountType = Common.Enum.User.AccountTypeEnum.Teacher
})?.FirstOrDefault(); })?.FirstOrDefault();
var teacherId = teacherModel?.Id ?? 0;
var totalBackCount = student_BackClassRepository.GetStudentBackClassNumRepository(); var totalBackCount = student_BackClassRepository.GetStudentBackClassNumRepository();
string backNum; string backNum;
if (totalBackCount < 10000) if (totalBackCount < 10000)
...@@ -104,7 +91,7 @@ namespace Edu.Module.Course ...@@ -104,7 +91,7 @@ namespace Edu.Module.Course
{ {
backNum = totalBackCount.ToString(); backNum = totalBackCount.ToString();
} }
var teacherId = teacherModel?.Id ?? 0;
//基础课时分钟数 //基础课时分钟数
var BasicMinutes = class_ConfigRepository.GetClassMinutesRepository(orderModel.ClassId); var BasicMinutes = class_ConfigRepository.GetClassMinutesRepository(orderModel.ClassId);
var stuCheckList = class_CheckRepository.GetGuestFinishMinutesRepository(GuestId.ToString()); var stuCheckList = class_CheckRepository.GetGuestFinishMinutesRepository(GuestId.ToString());
...@@ -144,108 +131,33 @@ namespace Edu.Module.Course ...@@ -144,108 +131,33 @@ namespace Edu.Module.Course
var newBackId = student_BackClassRepository.Insert(backClassModel); var newBackId = student_BackClassRepository.Insert(backClassModel);
backClassModel.BackId = newBackId; backClassModel.BackId = newBackId;
flag = newBackId > 0; flag = newBackId > 0;
int index = 0; if (flag)
foreach (var item in flowModel.FlowNodeList)
{ {
if (item.FlowAduitList != null && item.FlowAduitList.Count > 0) flag = education_ReceiptRepository.SetEducationReceiptRepository(new RB_Education_Receipt()
{ {
string AuditedId = "";//审核人 Id=0,
foreach (var subItem in item.FlowAduitList) Title="退课单据",
{ ClassId=orderModel.ClassId,
//指定人员 OrderId=orderModel.OrderId,
if (subItem.AuditType == Common.Enum.User.WFTAuditTypeEnum.SpecifiedMember) ReceiptType= Common.Enum.Finance.ReceiptTypeEnum.BackClass,
{ RelationId= backClassModel.BackId,
AuditedId += subItem.UserId + ","; Group_Id=orderModel.Group_Id,
} School_Id=orderModel.School_Id,
//指定角色 CreateBy=userinfo.Id,
else if (subItem.AuditType == Common.Enum.User.WFTAuditTypeEnum.Role) CreateTime=DateTime.Now,
{ UpdateBy=userinfo.Id,
//本班教师审核 UpdateTime=DateTime.Now,
if (subItem.PostType == 1) RecipientIds="",
{ VerifyStatus= Common.Enum.Finance.WFRrocessStatus.NotAudit
AuditedId += teacherId + ","; }, out message);
subItem.UserId = teacherId; if (flag)
} {
//关联销售审核 Dictionary<string, object> fileds = new Dictionary<string, object>()
else if (subItem.PostType == 2)
{
AuditedId += orderModel.EnterID + ",";
subItem.UserId = orderModel.EnterID;
}
//分区校长审核
else if (subItem.PostType == 3)
{
var headmaster = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
Post_Id = Common.Config.SchoolPostId,
Group_Id = classModel.Group_Id
})?.FirstOrDefault();
AuditedId += (headmaster?.Id ?? 0) + ",";
subItem.UserId = (headmaster?.Id ?? 0);
}
else if (subItem.PostType == 4)
{
var headmaster = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
Post_Id = Common.Config.JiaoWuZhang,
Group_Id = classModel.Group_Id
})?.FirstOrDefault();
AuditedId += (headmaster?.Id ?? 0) + ",";
subItem.UserId = (headmaster?.Id ?? 0);
}
}
}
var backLevance = new RB_Student_BackRelevance()
{ {
ConditionId = backClassModel.BackId, {nameof(RB_Order_Guest_ViewModel.GuestState),3 }
AuditDescription = item.NodeName,
AuditedId = "",
AuditWay = item.FlowAduitList[0].AuditWay,
AuditType = item.FlowAduitList[0].AuditType,
OriginalAuditId = 0,
RoleOrInitiator = 0,
PostIds=string.Join(",",item.FlowAduitList.Where(qitem=>qitem.AuditType==Common.Enum.User.WFTAuditTypeEnum.Role).Select(qitem=>qitem.PostType)),
UserIds = string.Join(",", item.FlowAduitList.Where(qitem => qitem.AuditType == Common.Enum.User.WFTAuditTypeEnum.SpecifiedMember).Select(qitem => qitem.UserId)),
ToAuditId = AuditedId.TrimEnd(','),
Sort = item.SortNum,
SpecialNode = item.FlowAduitList[0].IsSpecNode,
Stauts = Common.Enum.User.WFRrocessStatus.NotAudit,
WorkFlowId = Common.Config.BackClassFlowId,
}; };
var backLevanceId = student_BackRelevanceRepository.Insert(backLevance); flag = order_GuestRepository.Update(fileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), GuestId));
backLevance.Id = backLevanceId;
flag = backLevanceId > 0;
if (index == 0)
{
foreach (var subItem in item.FlowAduitList)
{
var recordModel = new RB_Student_BackRecord_ViewModel()
{
ConditionId = backClassModel.BackId,
AuditStatus = Common.Enum.User.WFRrocessStatus.NotAudit,
AuditId = backLevance.Id,
AuditEmId = subItem.UserId,
CreateBy = userinfo.Id,
CreateTime = DateTime.Now,
UpdateBy = userinfo.Id,
UpdateTime = DateTime.Now,
Description = "",
BackrelevanceId = backLevance.Id,
};
flag = student_BackRecordRepository.Insert(recordModel) > 0;
}
}
} }
index++;
}
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; return flag;
} }
......
...@@ -30,16 +30,7 @@ namespace Edu.Module.Course ...@@ -30,16 +30,7 @@ namespace Edu.Module.Course
/// </summary> /// </summary>
private readonly RB_Student_BackClassRepository student_BackClassRepository = new RB_Student_BackClassRepository(); 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>
/// 旅客表仓储层对象 /// 旅客表仓储层对象
...@@ -61,11 +52,7 @@ namespace Edu.Module.Course ...@@ -61,11 +52,7 @@ 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_AccountRepository accountRepository = new RB_AccountRepository();
/// <summary> /// <summary>
/// 日志 /// 日志
/// </summary> /// </summary>
...@@ -144,631 +131,6 @@ namespace Edu.Module.Course ...@@ -144,631 +131,6 @@ namespace Edu.Module.Course
return obj; return obj;
} }
/// <summary>
/// 退课单据审核
/// </summary>
/// <param name="BackId">退课单据号</param>
/// <param name="AuditStatus">审核状态(1-待审核,2-审核通过,3-驳回)</param>
/// <param name="Description">审核备注</param>
/// <param name="user">登录用户信息</param>
/// <param name="message">返回提示信息</param>
/// <param name="BackMoney"></param>
/// <returns></returns>
public virtual bool SetBackBillAduitModule(int BackId, int AuditStatus, string Description, UserInfo user, out string message, int SpecialNode = 0, decimal BackMoney = 0, string RecipientIds = "")
{
message = "";
bool flag = false;
//获取单据实体类
var backModel = student_BackClassRepository.GetEntity(BackId);
if (backModel == null)
{
message = "单据不存在,请核实!";
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()
{
ConditionId = backModel.BackId,
});
//审核关联列表
var arList = student_BackRelevanceRepository.GetStudentBackRelevanceListRepository(new RB_Student_BackRelevance_ViewModel()
{
ConditionId = backModel.BackId
});
//驳回处理
if (AuditStatus == 3)
{
//找出当前审核
int Notcount = arList.Where(x => x.Stauts == WFRrocessStatus.AuditNotThrough).Count();
if (Notcount > 0)
{
message = "该申请单已被拒绝!";
return false;
}
var ToAuditFlow = arList.Where(x => x.Stauts == WFRrocessStatus.NotAudit).OrderBy(x => x.Sort).ToList();
if (ToAuditFlow.Count <= 0)
{
message = "该申请单审核已经完结!";
return false;
}
if (ToAuditFlow.Count > 0)
{
var model = ToAuditFlow[0];
var RecordList = aurList.Where(x => x.AuditId == model.Id).ToList();
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditNotThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核记录表状态
flag = UpdateStuRecordModule(WFRrocessStatus.AuditNotThrough, Description, user.Id, amodel.Id);
#endregion
#region 更新审核关联表状态
flag = UpdateStuRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)//表示最后一个人就是子集审核 申请单 通过
{
foreach (var item in list)
{
flag = UpdateStuRecordModule(WFRrocessStatus.OtherHaveAudit, Description, user.Id, item.Id);
}
}
}
#region 更新订单旅客表未驳回状态
flag = UpdateOrderGuestStatusModule(4, backModel.StudentId);
#endregion
#region 更新退课单据为驳回状态
flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Rejected, newRecipientIds, backModel, SpecialNode: SpecialNode, BackMoney: BackMoney);
#endregion
}
//审核通过
else
{
//找出当前审核
int Notcount = arList.Where(x => x.Stauts == WFRrocessStatus.AuditNotThrough).Count();
if (Notcount > 0)
{
message = "该退课申请单已被拒绝";
return false;
}
var ToAuditFlow = arList.Where(x => x.Stauts == WFRrocessStatus.NotAudit).OrderBy(x => x.Sort).ToList();
if (ToAuditFlow.Count <= 0)
{
message = "该申请单审核已经完结";
return false;
}
//审核关联表字段
var relevanceFileds = new Dictionary<string, object>();
///目前审核为最后一步
if (ToAuditFlow.Count == 1)
{
var model = ToAuditFlow[0];
var RecordList = aurList.Where(x => x.AuditId == model.Id).ToList();
if (model.AuditWay == WFTAuditWayEnum.Countersign)
{
//会签 所有人必须审核完该流程才算完成
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
#region 更新审核记录表状态
flag = UpdateStuRecordModule(WFRrocessStatus.AuditThrough, Description, user.Id, amodel.Id);
#endregion
int AuditCount = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).Count();
if (AuditCount <= 0)//表示最后一个人就是子集审核 申请单 通过
{
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核关联表状态
flag = UpdateStuRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
//更新主表状态
flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Pass, newRecipientIds, backModel, SpecialNode: SpecialNode, BackMoney: BackMoney);
#region 更新订单旅客表未通过状态
flag = UpdateOrderGuestStatusModule(2, backModel.StudentId);
#endregion
}
else
{
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核关联表状态
flag = UpdateStuRelevanceModule(model.Id, null, model.AuditedId);
#endregion
}
}
else if (model.AuditWay == WFTAuditWayEnum.OrSign)
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核记录表状态
flag = UpdateStuRecordModule(WFRrocessStatus.AuditThrough, Description, user.Id, amodel.Id);
#endregion
#region 更新审核关联表状态
flag = UpdateStuRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)//表示最后一个人就是子集审核 申请单 通过
{
foreach (var item in list)
{
flag = UpdateStuRecordModule(WFRrocessStatus.OtherHaveAudit, Description, user.Id, item.Id);
}
}
//更新主表状态
flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Pass, newRecipientIds, backModel, SpecialNode: SpecialNode, BackMoney: BackMoney);
#region 更新订单旅客表未通过状态
flag = UpdateOrderGuestStatusModule(2, backModel.StudentId);
#endregion
}
else
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)
{
message = "流程配置出错啦!非会签,或签 都只能有一个审核人!";
return false;
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核记录表状态
flag = UpdateStuRecordModule(WFRrocessStatus.AuditThrough, Description, user.Id, amodel.Id);
#endregion
#region 更新审核关联表状态
flag = UpdateStuRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
//更新主表状态
flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Pass, newRecipientIds, backModel, SpecialNode: SpecialNode, BackMoney: BackMoney);
#region 更新订单旅客表未通过状态
flag = UpdateOrderGuestStatusModule(2, backModel.StudentId);
#endregion
}
}
//同时创建下一步审核 复制审核人到审核关联表 创建审核记录表
else
{
var model = ToAuditFlow[0];
var RecordList = aurList.Where(x => x.AuditId == model.Id).ToList();
//会签 所有人必须审核完该流程才算完成
if (model.AuditWay == WFTAuditWayEnum.Countersign)
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
//审核记录状态
#region 更新审核记录表状态
flag = UpdateStuRecordModule(WFRrocessStatus.AuditThrough, Description, user.Id, amodel.Id);
#endregion
int AuditCount = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).Count();
if (AuditCount <= 0)//表示最后一个人就是子集审核 申请单 通过
{
//同时 修改 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核关联表状态
flag = UpdateStuRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
//赋值下一步到审核记录中 并更新这一步的待审核人
var modelNext = ToAuditFlow[1];
flag = InsertAuditRelevanceNext(backModel, modelNext);
if (flag == false)
{
message = "审核流程不完整无法审核,请联系相关负责人!";
return false;
}
}
else
{
//同时 修改 审核流程
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核关联表状态
relevanceFileds = new Dictionary<string, object>
{
{ nameof(RB_Student_BackRelevance_ViewModel.AuditedId), model.AuditedId },
};
flag = student_BackRelevanceRepository.Update(relevanceFileds, new WhereHelper(nameof(RB_Student_BackRelevance_ViewModel.Id), model.Id));
#endregion
}
}
else if (model.AuditWay == WFTAuditWayEnum.OrSign)
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核记录表状态
flag = UpdateStuRecordModule(WFRrocessStatus.AuditThrough, Description, user.Id, amodel.Id);
#endregion
#region 更新审核关联表状态
flag = UpdateStuRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)//表示最后一个人就是子集审核 申请单 通过
{
foreach (var item in list)
{
flag = UpdateStuRecordModule(WFRrocessStatus.OtherHaveAudit, Description, user.Id, item.Id);
}
}
//赋值下一步到审核记录中 并更新这一步的待审核人
var modelNext = ToAuditFlow[1];
flag = InsertAuditRelevanceNext(backModel, modelNext);
if (flag == false)
{
message = "审核流程不完整无法审核,请联系相关负责人!";
return false;
}
}
else
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)
{
message = "流程配置出错啦!非会签、或签 都只能有一个审核人!";
return false;
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核记录表状态
flag = UpdateStuRecordModule(WFRrocessStatus.AuditThrough, Description, user.Id, amodel.Id);
#endregion
#region 更新审核关联表状态
flag = UpdateStuRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
//赋值下一步到审核记录中 并更新这一步的待审核人
var modelNext = ToAuditFlow[1];
flag = InsertAuditRelevanceNext(backModel, modelNext);
if (flag == false)
{
message = "审核流程不完整无法审核,请联系相关负责人!";
return false;
}
}
}
}
return flag;
}
/// <summary>
/// 更新退课主表状态
/// </summary>
/// <param name="statusEnum">审核状态</param>
/// <param name="newRecipientIds">抄送人</param>
/// <param name="backModel">退课表实体信息</param>
/// <param name="SpecialNode">是否是特殊节点(1-是)</param>
/// <param name="BackMoney">实际退款金额</param>
/// <returns></returns>
private bool UpdateStuBackBillStatusModule(BackClassAuditStatusEnum statusEnum, string newRecipientIds, RB_Student_BackClass backModel, 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), backModel.BackId));
if (flag)
{
var guestList = order_GuestRepository.GetOrderGuestListRepository(new RB_Order_Guest_ViewModel() { OrderId = backModel.OrderId });
if (guestList != null && guestList.Where(qitem => qitem.GuestState == 2).Count() == guestList.Count())
{
//更新订单为退学状态
Dictionary<string, object> orderFileds = new Dictionary<string, object>()
{
{nameof(RB_Order.OrderState),OrderStateEnum.DropOut }
};
flag = orderRepository.Update(orderFileds, new WhereHelper(nameof(RB_Order.OrderId), backModel.OrderId));
}
}
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>
/// <param name="wFRrocessStatus">审核状态</param>
/// <param name="Description">审核意见</param>
/// <param name="UserId">审核人Id</param>
/// <param name="Id">审核记录编号</param>
/// <returns></returns>
private bool UpdateStuRecordModule(WFRrocessStatus wFRrocessStatus, string Description, int UserId, int Id)
{
var recordFileds = new Dictionary<string, object>
{
{ nameof(RB_Student_BackRecord_ViewModel.AuditStatus), wFRrocessStatus },
{ nameof(RB_Student_BackRecord_ViewModel.Description),Description} ,
{ nameof(RB_Student_BackRecord_ViewModel.UpdateBy),UserId},
{ nameof(RB_Student_BackRecord_ViewModel.UpdateTime),DateTime.Now}
};
bool flag = student_BackRecordRepository.Update(recordFileds, new WhereHelper(nameof(RB_Student_BackRecord_ViewModel.Id), Id));
return flag;
}
/// <summary>
/// 更新审核流程信息
/// </summary>
/// <param name="status"></param>
/// <param name="AuditedId"></param>
/// <param name="Id"></param>
/// <returns></returns>
private bool UpdateStuRelevanceModule(int Id, WFRrocessStatus? status = null, string AuditedId = "")
{
var relevanceFileds = new Dictionary<string, object>();
if (!string.IsNullOrEmpty(AuditedId))
{
relevanceFileds.Add(nameof(RB_Student_BackRelevance_ViewModel.AuditedId), AuditedId);
}
if (status != null)
{
relevanceFileds.Add(nameof(RB_Student_BackRelevance_ViewModel.Stauts), status);
}
bool flag = student_BackRelevanceRepository.Update(relevanceFileds, new WhereHelper(nameof(RB_Student_BackRelevance_ViewModel.Id), Id));
return flag;
}
/// <summary>
/// 添加拷贝审核节点
/// </summary>
/// <param name="backModel">退课单据实体</param>
/// <param name="modelNext">审核关联</param>
private bool InsertAuditRelevanceNext(RB_Student_BackClass backModel, RB_Student_BackRelevance_ViewModel modelNext)
{
if (modelNext != null)
{
RB_Student_BackRelevance_ViewModel auditRelevance = modelNext.RefMapperTo<RB_Student_BackRelevance_ViewModel>();
if (auditRelevance != null)
{
List<int> empList = new List<int>();
//添加角色对应的人员
if (!string.IsNullOrEmpty(auditRelevance.PostIds))
{
var postList = Common.ConvertHelper.StringToList(auditRelevance.PostIds);
if (postList != null && postList.Count > 0)
{
foreach (var item in postList)
{
//本班教师审核
if (item == 1)
{
empList.Add(backModel.TeacherId);
}
//关联销售审核
else if (item == 2)
{
var orderModel = orderRepository.GetEntity(backModel.OrderId);
empList.Add(orderModel.EnterID);
}
//分区校长审核
else if (item == 3)
{
var headmaster = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
Post_Id = Common.Config.SchoolPostId,
Group_Id = backModel.Group_Id
})?.FirstOrDefault();
if (headmaster != null && headmaster.Id > 0)
{
empList.Add(headmaster.Id);
}
}
else if (item == 4)
{
var headmaster = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
Post_Id = Common.Config.JiaoWuZhang,
Group_Id = backModel.Group_Id
})?.FirstOrDefault();
if (headmaster != null && headmaster.Id > 0)
{
empList.Add(headmaster.Id);
}
}
}
}
}
//添加指定用户
if (!string.IsNullOrEmpty(auditRelevance.UserIds))
{
var userList = Common.ConvertHelper.StringToList(auditRelevance.UserIds);
foreach (var item in userList)
{
if (item > 0)
{
empList.Add(item);
}
}
}
InsertBatcheAuditRecord(empList, backModel.BackId, auditRelevance);
}
}
return true;
}
/// <summary>
/// 批量添加审核人
/// </summary>
/// <param name="empIds">审核人id集合</param>
/// <param name="wfId">工作流id</param>
/// <param name="wFTTemplateTypeEnum">工作流模板</param>
/// <param name="trans">事务</param>
/// <param name="auditRelevance">审核节点</param>
private void InsertBatcheAuditRecord(List<int> empIds, int wfId, RB_Student_BackRelevance_ViewModel auditRelevance)
{
List<RB_Student_BackRecord_ViewModel> auditrecordList = new List<RB_Student_BackRecord_ViewModel>();
foreach (var item in empIds)
{
RB_Student_BackRecord_ViewModel auditrecord = new RB_Student_BackRecord_ViewModel
{
AuditEmId = item,
AuditId = auditRelevance.Id,
AuditStatus = WFRrocessStatus.NotAudit,
CreateBy = item,
CreateTime = DateTime.Now,
UpdateBy = item,
UpdateTime = DateTime.Now,
ConditionId = wfId,
Description = "",
BackrelevanceId = auditRelevance.Id
};
auditrecordList.Add(auditrecord);
}
student_BackRecordRepository.InsertBatch(auditrecordList);
auditRelevance.ToAuditId = string.Join(",", empIds);
student_BackRelevanceRepository.Update(auditRelevance);
}
/// <summary> /// <summary>
/// 获取退课单据信息 /// 获取退课单据信息
...@@ -778,77 +140,60 @@ namespace Edu.Module.Course ...@@ -778,77 +140,60 @@ namespace Edu.Module.Course
public object GetStuBackInfoModule(int backId) public object GetStuBackInfoModule(int backId)
{ {
var obj = new List<object>(); var obj = new List<object>();
//获取单据实体类 ////获取单据实体类
var backModel = student_BackClassRepository.GetEntity(backId); //var backModel = student_BackClassRepository.GetEntity(backId);
//获取审核记录 ////获取审核记录
var aurList = student_BackRecordRepository.GetStudentBackRecordListRepository(new RB_Student_BackRecord_ViewModel() //var aurList = student_BackRecordRepository.GetStudentBackRecordListRepository(new RB_Student_BackRecord_ViewModel()
{ //{
ConditionId = backId, // ConditionId = backId,
}); //});
//审核关联列表 ////审核关联列表
var arList = student_BackRelevanceRepository.GetStudentBackRelevanceListRepository(new RB_Student_BackRelevance_ViewModel() //var arList = student_BackRelevanceRepository.GetStudentBackRelevanceListRepository(new RB_Education_Relevance_ViewModel()
{ //{
ConditionId = backId // ConditionId = backId
}); //});
obj.Add(new //obj.Add(new
{ //{
NodeName = "制单人", // NodeName = "制单人",
AduitStatus = 2, // AduitStatus = 2,
AuditWayName = "", // AuditWayName = "",
AduitStatusName = "发起", // AduitStatusName = "发起",
SubList = new List<object>() // SubList = new List<object>()
{ // {
new{ // new{
AduitName= UserReidsCache.GetUserLoginInfo(backModel.CreateBy)?.AccountName ?? "", // AduitName= UserReidsCache.GetUserLoginInfo(backModel.CreateBy)?.AccountName ?? "",
Description=backModel.ApplyReason, // Description=backModel.ApplyReason,
CreateTime=Common.ConvertHelper.FormatTime(backModel.CreateTime), // CreateTime=Common.ConvertHelper.FormatTime(backModel.CreateTime),
AuditStatus=WFRrocessStatus.AuditThrough, // AuditStatus=WFRrocessStatus.AuditThrough,
AuditStatusName = WFRrocessStatus.AuditThrough.ToName(), // AuditStatusName = WFRrocessStatus.AuditThrough.ToName(),
} // }
} // }
}); //});
var existsList = arList.Where(qitem => aurList.Any(oldItem => qitem.Id == oldItem.BackrelevanceId)); //var existsList = arList.Where(qitem => aurList.Any(oldItem => qitem.Id == oldItem.BackrelevanceId));
foreach (var item in existsList) //foreach (var item in existsList)
{ //{
obj.Add(new // obj.Add(new
{ // {
NodeName = item.AuditDescription, // NodeName = item.AuditDescription,
AduitStatus = item.Stauts, // AduitStatus = item.Stauts,
AduitStatusName = GetWFRrocessStatusStrModule(item.Stauts), // AduitStatusName = GetWFRrocessStatusStrModule(item.Stauts),
AuditWayName = item.AuditWay != WFTAuditWayEnum.Successively ? item.AuditWay.ToName() : "", // AuditWayName = item.AuditWay != WFTAuditWayEnum.Successively ? item.AuditWay.ToName() : "",
SubList = aurList.Where(qitem => qitem.AuditId == item.Id).Select(qitem => new // SubList = aurList.Where(qitem => qitem.AuditId == item.Id).Select(qitem => new
{ // {
AduitName = UserReidsCache.GetUserLoginInfo(qitem.AuditEmId)?.AccountName ?? "", // AduitName = UserReidsCache.GetUserLoginInfo(qitem.AuditEmId)?.AccountName ?? "",
Description = !string.IsNullOrEmpty(qitem.Description) ? qitem.Description : "无", // Description = !string.IsNullOrEmpty(qitem.Description) ? qitem.Description : "无",
CreateTime = Common.ConvertHelper.FormatTime(qitem.UpdateTime), // CreateTime = Common.ConvertHelper.FormatTime(qitem.UpdateTime),
qitem.AuditStatus, // qitem.AuditStatus,
AuditStatusName = GetWFRrocessStatusStrModule(qitem.AuditStatus), // AuditStatusName = GetWFRrocessStatusStrModule(qitem.AuditStatus),
}) // })
}); // });
} //}
return obj; return obj;
} }
/// <summary>
/// 获取审核状态字符串
/// </summary>
/// <param name="status"></param>
/// <returns></returns>
private string GetWFRrocessStatusStrModule(WFRrocessStatus status)
{
var statusName = "待审";
switch (status)
{
case WFRrocessStatus.AuditNotThrough: statusName = "拒绝"; break;
case WFRrocessStatus.AuditThrough: statusName = "通过"; break;
case WFRrocessStatus.NotAudit: statusName = "待审"; break;
case WFRrocessStatus.OtherHaveAudit: statusName = "通过"; break;
case WFRrocessStatus.Rejected: statusName = "驳回"; break;
}
return statusName;
}
/// <summary> /// <summary>
/// 退课一键制单 /// 退课一键制单
......
using Edu.Model.Entity.EduTask; using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.EduTask; using Edu.Model.ViewModel.EduTask;
using Edu.Repository.EduTask; using Edu.Repository.EduTask;
using Edu.Repository.Flow;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
...@@ -24,6 +25,8 @@ namespace Edu.Module.EduTask ...@@ -24,6 +25,8 @@ namespace Edu.Module.EduTask
/// </summary> /// </summary>
private readonly RB_Change_ClassPlanRepository change_ClassPlanRepository = new RB_Change_ClassPlanRepository(); private readonly RB_Change_ClassPlanRepository change_ClassPlanRepository = new RB_Change_ClassPlanRepository();
/// <summary> /// <summary>
/// 获取调课计划列表 /// 获取调课计划列表
/// </summary> /// </summary>
...@@ -77,7 +80,7 @@ namespace Edu.Module.EduTask ...@@ -77,7 +80,7 @@ namespace Edu.Module.EduTask
UpdateTime=extModel.UpdateTime, UpdateTime=extModel.UpdateTime,
VerifyStatus= Common.Enum.Finance.WFRrocessStatus.NotAudit VerifyStatus= Common.Enum.Finance.WFRrocessStatus.NotAudit
}; };
flag= education_ReceiptRepository.SetEducationReceiptRepository(educationReceipt); flag= education_ReceiptRepository.SetEducationReceiptRepository(educationReceipt,out string message);
} }
} }
return flag; return flag;
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Edu.Aop\Edu.Aop.csproj" />
<ProjectReference Include="..\Edu.Repository\Edu.Repository.csproj" /> <ProjectReference Include="..\Edu.Repository\Edu.Repository.csproj" />
</ItemGroup> </ItemGroup>
......
using Edu.Model.ViewModel.EduTask; using Edu.AOP.CustomerAttribute;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.User;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Course;
using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.EduTask;
using Edu.Repository.Course;
using Edu.Repository.EduTask; using Edu.Repository.EduTask;
using Edu.Repository.User;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text; using System.Text;
using VT.FW.DB;
namespace Edu.Module.EduTask namespace Edu.Module.EduTask
{ {
...@@ -16,6 +28,41 @@ namespace Edu.Module.EduTask ...@@ -16,6 +28,41 @@ namespace Edu.Module.EduTask
/// </summary> /// </summary>
private readonly RB_Education_ReceiptRepository education_ReceiptRepository = new RB_Education_ReceiptRepository(); private readonly RB_Education_ReceiptRepository education_ReceiptRepository = new RB_Education_ReceiptRepository();
/// <summary>
/// 教务单据审核记录仓储层对象
/// </summary>
private readonly RB_Education_RecordRepository education_RecordRepository = new RB_Education_RecordRepository();
/// <summary>
/// 教务单据审核人员信息仓储层对象
/// </summary>
private readonly RB_Education_RelevanceRepository education_RelevanceRepository = new RB_Education_RelevanceRepository();
/// <summary>
/// 账号仓储层对象
/// </summary>
private readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
/// <summary>
/// 班级仓储层对象
/// </summary>
private readonly RB_ClassRepository classRepository = new RB_ClassRepository();
/// <summary>
/// 订单仓储层对象
/// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary>
/// 订单旅客
/// </summary>
private readonly RB_Order_GuestRepository order_GuestRepository = new RB_Order_GuestRepository();
/// <summary>
/// 学员退课仓储层对象
/// </summary>
private readonly RB_Student_BackClassRepository student_BackClassRepository = new RB_Student_BackClassRepository();
/// <summary> /// <summary>
/// 获取教务单据分页列表 /// 获取教务单据分页列表
/// </summary> /// </summary>
...@@ -29,6 +76,677 @@ namespace Edu.Module.EduTask ...@@ -29,6 +76,677 @@ namespace Edu.Module.EduTask
var list = education_ReceiptRepository.GetEducationReceiptPageRepository(pageIndex, pageSize, out rowsCount, query); var list = education_ReceiptRepository.GetEducationReceiptPageRepository(pageIndex, pageSize, out rowsCount, query);
return list; return list;
} }
/// <summary>
/// 教务单据审核
/// </summary>
/// <param name="model">审核信息</param>
/// <param name="user">登录用户信息</param>
/// <param name="message">返回提示信息</param>
/// <returns></returns>
[TransactionCallHandler]
public virtual bool AduitEducationReceiptModule(EduReceiptAudit auditModel, UserInfo user, out string message)
{
message = "";
bool flag = false;
//获取单据实体类
var receipt = education_ReceiptRepository.GetEntity(auditModel.Id);
if (receipt == null)
{
message = "单据不存在,请核实!";
return flag;
}
//抄送人
string newRecipientIds = "";
if (!string.IsNullOrEmpty(auditModel.RecipientIds))
{
newRecipientIds = ((!string.IsNullOrEmpty(receipt.RecipientIds) ? receipt.RecipientIds : "") + "," + auditModel.RecipientIds).TrimStart(',').TrimEnd(',');
}
//获取审核记录
var aurList = education_RecordRepository.GetEducationRecordListRepository(new RB_Education_Record_ViewModel()
{
ConditionId = auditModel.Id,
});
//审核关联列表
var arList = education_RelevanceRepository.GetStudentBackRelevanceListRepository(new RB_Education_Relevance_ViewModel()
{
ConditionId = auditModel.Id
});
//驳回处理
if (auditModel.AuditStatus == 3)
{
//找出当前审核
int Notcount = arList.Where(x => x.Stauts == WFRrocessStatus.AuditNotThrough).Count();
if (Notcount > 0)
{
message = "该申请单已被拒绝!";
return false;
}
var ToAuditFlow = arList.Where(x => x.Stauts == WFRrocessStatus.NotAudit).OrderBy(x => x.Sort).ToList();
if (ToAuditFlow.Count <= 0)
{
message = "该申请单审核已经完结!";
return false;
}
if (ToAuditFlow.Count > 0)
{
var model = ToAuditFlow[0];
var RecordList = aurList.Where(x => x.AuditId == model.Id).ToList();
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditNotThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核记录表状态
flag = UpdateEduRecordModule(WFRrocessStatus.AuditNotThrough, auditModel.Description, user.Id, amodel.Id);
#endregion
#region 更新审核关联表状态
flag = UpdateEduRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)//表示最后一个人就是子集审核 申请单 通过
{
foreach (var item in list)
{
flag = UpdateEduRecordModule(WFRrocessStatus.OtherHaveAudit, auditModel.Description, user.Id, item.Id);
}
}
}
UpdateOtherModule(receipt,auditModel);
}
//审核通过
else
{
//找出当前审核
int Notcount = arList.Where(x => x.Stauts == WFRrocessStatus.AuditNotThrough).Count();
if (Notcount > 0)
{
message = "该退课申请单已被拒绝";
return false;
}
var ToAuditFlow = arList.Where(x => x.Stauts == WFRrocessStatus.NotAudit).OrderBy(x => x.Sort).ToList();
if (ToAuditFlow.Count <= 0)
{
message = "该申请单审核已经完结";
return false;
}
//审核关联表字段
var relevanceFileds = new Dictionary<string, object>();
///目前审核为最后一步
if (ToAuditFlow.Count == 1)
{
var model = ToAuditFlow[0];
var RecordList = aurList.Where(x => x.AuditId == model.Id).ToList();
if (model.AuditWay == WFTAuditWayEnum.Countersign)
{
//会签 所有人必须审核完该流程才算完成
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
#region 更新审核记录表状态
flag = UpdateEduRecordModule(WFRrocessStatus.AuditThrough, auditModel.Description, user.Id, amodel.Id);
#endregion
int AuditCount = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).Count();
if (AuditCount <= 0)//表示最后一个人就是子集审核 申请单 通过
{
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核关联表状态
flag = UpdateEduRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
UpdateOtherModule(receipt, auditModel);
}
else
{
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核关联表状态
flag = UpdateEduRelevanceModule(model.Id, null, model.AuditedId);
#endregion
}
}
else if (model.AuditWay == WFTAuditWayEnum.OrSign)
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核记录表状态
flag = UpdateEduRecordModule(WFRrocessStatus.AuditThrough, auditModel.Description, user.Id, amodel.Id);
#endregion
#region 更新审核关联表状态
flag = UpdateEduRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)//表示最后一个人就是子集审核 申请单 通过
{
foreach (var item in list)
{
flag = UpdateEduRecordModule(WFRrocessStatus.OtherHaveAudit, auditModel.Description, user.Id, item.Id);
}
}
UpdateOtherModule(receipt, auditModel);
}
else
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)
{
message = "流程配置出错啦!非会签,或签 都只能有一个审核人!";
return false;
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核记录表状态
flag = UpdateEduRecordModule(WFRrocessStatus.AuditThrough, auditModel.Description, user.Id, amodel.Id);
#endregion
#region 更新审核关联表状态
flag = UpdateEduRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
UpdateOtherModule(receipt, auditModel);
}
}
//同时创建下一步审核 复制审核人到审核关联表 创建审核记录表
else
{
var model = ToAuditFlow[0];
var RecordList = aurList.Where(x => x.AuditId == model.Id).ToList();
//会签 所有人必须审核完该流程才算完成
if (model.AuditWay == WFTAuditWayEnum.Countersign)
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
//审核记录状态
#region 更新审核记录表状态
flag = UpdateEduRecordModule(WFRrocessStatus.AuditThrough, auditModel.Description, user.Id, amodel.Id);
#endregion
int AuditCount = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).Count();
if (AuditCount <= 0)//表示最后一个人就是子集审核 申请单 通过
{
//同时 修改 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核关联表状态
flag = UpdateEduRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
//赋值下一步到审核记录中 并更新这一步的待审核人
var modelNext = ToAuditFlow[1];
flag = InsertAuditRelevanceNext(receipt, modelNext);
if (flag == false)
{
message = "审核流程不完整无法审核,请联系相关负责人!";
return false;
}
}
else
{
//同时 修改 审核流程
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核关联表状态
relevanceFileds = new Dictionary<string, object>
{
{ nameof(RB_Education_Relevance_ViewModel.AuditedId), model.AuditedId },
};
flag = education_RelevanceRepository.Update(relevanceFileds, new WhereHelper(nameof(RB_Education_Relevance_ViewModel.Id), model.Id));
#endregion
}
}
else if (model.AuditWay == WFTAuditWayEnum.OrSign)
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核记录表状态
flag = UpdateEduRecordModule(WFRrocessStatus.AuditThrough, auditModel.Description, user.Id, amodel.Id);
#endregion
#region 更新审核关联表状态
flag = UpdateEduRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)//表示最后一个人就是子集审核 申请单 通过
{
foreach (var item in list)
{
flag = UpdateEduRecordModule(WFRrocessStatus.OtherHaveAudit, auditModel.Description, user.Id, item.Id);
}
}
//赋值下一步到审核记录中 并更新这一步的待审核人
var modelNext = ToAuditFlow[1];
flag = InsertAuditRelevanceNext(receipt, modelNext);
if (flag == false)
{
message = "审核流程不完整无法审核,请联系相关负责人!";
return false;
}
}
else
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == user.Id).FirstOrDefault();
if (amodel == null)
{
message = "尚未匹配到审核相关信息,请联系管理员!";
return false;
}
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != user.Id).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)
{
message = "流程配置出错啦!非会签、或签 都只能有一个审核人!";
return false;
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + user.Id;
}
else
{
model.AuditedId = user.Id.ToString();
}
#region 更新审核记录表状态
flag = UpdateEduRecordModule(WFRrocessStatus.AuditThrough, auditModel.Description, user.Id, amodel.Id);
#endregion
#region 更新审核关联表状态
flag = UpdateEduRelevanceModule(model.Id, model.Stauts, model.AuditedId);
#endregion
//赋值下一步到审核记录中 并更新这一步的待审核人
var modelNext = ToAuditFlow[1];
flag = InsertAuditRelevanceNext(receipt, modelNext);
if (flag == false)
{
message = "审核流程不完整无法审核,请联系相关负责人!";
return false;
}
}
}
}
return flag;
}
/// <summary>
/// 获取审核状态字符串
/// </summary>
/// <param name="status"></param>
/// <returns></returns>
private string GetWFRrocessStatusStrModule(WFRrocessStatus status)
{
var statusName = "待审";
switch (status)
{
case WFRrocessStatus.AuditNotThrough: statusName = "拒绝"; break;
case WFRrocessStatus.AuditThrough: statusName = "通过"; break;
case WFRrocessStatus.NotAudit: statusName = "待审"; break;
case WFRrocessStatus.OtherHaveAudit: statusName = "通过"; break;
case WFRrocessStatus.Rejected: statusName = "驳回"; break;
}
return statusName;
}
/// <summary>
/// 更新其他信息
/// </summary>
/// <param name="receiptModel">单据实体</param>
/// <param name="auditModel">审核实体</param>
/// <returns></returns>
public bool UpdateOtherModule(RB_Education_Receipt receiptModel, EduReceiptAudit auditModel)
{
//#region 更新订单旅客表未驳回状态
//flag = UpdateOrderGuestStatusModule(4, backModel.StudentId);
//#endregion
//#region 更新退课单据为驳回状态
//flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Rejected, newRecipientIds, backModel, SpecialNode: SpecialNode, BackMoney: BackMoney);
//#endregion
//更新主表状态
//flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Pass, newRecipientIds, backModel, SpecialNode: SpecialNode, BackMoney: BackMoney);
//#region 更新订单旅客表未通过状态
//flag = UpdateOrderGuestStatusModule(2, backModel.StudentId);
//#endregion
////更新主表状态
//flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Pass, newRecipientIds, backModel, SpecialNode: SpecialNode, BackMoney: BackMoney);
//#region 更新订单旅客表未通过状态
//flag = UpdateOrderGuestStatusModule(2, backModel.StudentId);
//#endregion
//更新主表状态
//flag = UpdateStuBackBillStatusModule(BackClassAuditStatusEnum.Pass, newRecipientIds, backModel, SpecialNode: SpecialNode, BackMoney: BackMoney);
//#region 更新订单旅客表未通过状态
//flag = UpdateOrderGuestStatusModule(2, backModel.StudentId);
//#endregion
return true;
}
/// <summary>
/// 更新退课主表状态
/// </summary>
/// <param name="statusEnum">审核状态</param>
/// <param name="newRecipientIds">抄送人</param>
/// <param name="backModel">退课表实体信息</param>
/// <param name="SpecialNode">是否是特殊节点(1-是)</param>
/// <param name="BackMoney">实际退款金额</param>
/// <returns></returns>
private bool UpdateStuBackBillStatusModule(BackClassAuditStatusEnum statusEnum, string newRecipientIds, RB_Student_BackClass backModel, 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), backModel.BackId));
if (flag)
{
var guestList = order_GuestRepository.GetOrderGuestListRepository(new RB_Order_Guest_ViewModel() { OrderId = backModel.OrderId });
if (guestList != null && guestList.Where(qitem => qitem.GuestState == 2).Count() == guestList.Count())
{
//更新订单为退学状态
Dictionary<string, object> orderFileds = new Dictionary<string, object>()
{
{nameof(RB_Order.OrderState),OrderStateEnum.DropOut }
};
flag = orderRepository.Update(orderFileds, new WhereHelper(nameof(RB_Order.OrderId), backModel.OrderId));
}
}
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>
/// <param name="wFRrocessStatus">审核状态</param>
/// <param name="Description">审核意见</param>
/// <param name="UserId">审核人Id</param>
/// <param name="Id">审核记录编号</param>
/// <returns></returns>
private bool UpdateEduRecordModule(WFRrocessStatus wFRrocessStatus, string Description, int UserId, int Id)
{
var recordFileds = new Dictionary<string, object>
{
{ nameof(RB_Education_Record_ViewModel.AuditStatus), wFRrocessStatus },
{ nameof(RB_Education_Record_ViewModel.Description),Description} ,
{ nameof(RB_Education_Record_ViewModel.UpdateBy),UserId},
{ nameof(RB_Education_Record_ViewModel.UpdateTime),DateTime.Now}
};
bool flag = education_RecordRepository.Update(recordFileds, new WhereHelper(nameof(RB_Education_Record_ViewModel.Id), Id));
return flag;
}
/// <summary>
/// 更新审核流程信息
/// </summary>
/// <param name="status"></param>
/// <param name="AuditedId"></param>
/// <param name="Id"></param>
/// <returns></returns>
private bool UpdateEduRelevanceModule(int Id, WFRrocessStatus? status = null, string AuditedId = "")
{
var relevanceFileds = new Dictionary<string, object>();
if (!string.IsNullOrEmpty(AuditedId))
{
relevanceFileds.Add(nameof(RB_Education_Relevance_ViewModel.AuditedId), AuditedId);
}
if (status != null)
{
relevanceFileds.Add(nameof(RB_Education_Relevance_ViewModel.Stauts), status);
}
bool flag = education_RelevanceRepository.Update(relevanceFileds, new WhereHelper(nameof(RB_Education_Relevance_ViewModel.Id), Id));
return flag;
}
/// <summary>
/// 添加拷贝审核节点
/// </summary>
/// <param name="receiptModel">单据实体</param>
/// <param name="modelNext">审核关联</param>
private bool InsertAuditRelevanceNext(RB_Education_Receipt receiptModel, RB_Education_Relevance_ViewModel modelNext)
{
if (modelNext != null)
{
RB_Education_Relevance_ViewModel auditRelevance = modelNext.RefMapperTo<RB_Education_Relevance_ViewModel>();
if (auditRelevance != null)
{
List<int> empList = new List<int>();
//添加角色对应的人员
if (!string.IsNullOrEmpty(auditRelevance.PostIds))
{
var postList = Common.ConvertHelper.StringToList(auditRelevance.PostIds);
if (postList != null && postList.Count > 0)
{
foreach (var item in postList)
{
//本班教师审核
if (item == 1)
{
//班级实体类
var classModel = classRepository.GetEntity(receiptModel.ClassId);
//获取教师实体信息
var teacherModel = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
AccountId = (classModel?.Teacher_Id??0),
AccountType = Common.Enum.User.AccountTypeEnum.Teacher
})?.FirstOrDefault();
var teacherId = teacherModel?.Id ?? 0;
empList.Add(teacherId);
}
//关联销售审核
else if (item == 2)
{
var orderModel = orderRepository.GetEntity(receiptModel.OrderId);
empList.Add(orderModel.EnterID);
}
//分区校长审核
else if (item == 3)
{
var headmaster = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
Post_Id = Common.Config.SchoolPostId,
Group_Id = receiptModel.Group_Id
})?.FirstOrDefault();
if (headmaster != null && headmaster.Id > 0)
{
empList.Add(headmaster.Id);
}
}
else if (item == 4)
{
var headmaster = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
Post_Id = Common.Config.JiaoWuZhang,
Group_Id = receiptModel.Group_Id
})?.FirstOrDefault();
if (headmaster != null && headmaster.Id > 0)
{
empList.Add(headmaster.Id);
}
}
}
}
}
//添加指定用户
if (!string.IsNullOrEmpty(auditRelevance.UserIds))
{
var userList = Common.ConvertHelper.StringToList(auditRelevance.UserIds);
foreach (var item in userList)
{
if (item > 0)
{
empList.Add(item);
}
}
}
InsertBatcheAuditRecord(empList, receiptModel.Id, auditRelevance);
}
}
return true;
}
/// <summary>
/// 批量添加审核人
/// </summary>
/// <param name="empIds">审核人id集合</param>
/// <param name="wfId">工作流id</param>
/// <param name="auditRelevance">审核节点</param>
private void InsertBatcheAuditRecord(List<int> empIds, int wfId, RB_Education_Relevance_ViewModel auditRelevance)
{
List<RB_Education_Record_ViewModel> auditrecordList = new List<RB_Education_Record_ViewModel>();
foreach (var item in empIds)
{
RB_Education_Record_ViewModel auditrecord = new RB_Education_Record_ViewModel
{
AuditEmId = item,
AuditId = auditRelevance.Id,
AuditStatus = WFRrocessStatus.NotAudit,
CreateBy = item,
CreateTime = DateTime.Now,
UpdateBy = item,
UpdateTime = DateTime.Now,
ConditionId = wfId,
Description = "",
BackrelevanceId = auditRelevance.Id
};
auditrecordList.Add(auditrecord);
}
education_RecordRepository.InsertBatch(auditrecordList);
auditRelevance.ToAuditId = string.Join(",", empIds);
education_RelevanceRepository.Update(auditRelevance);
}
} }
} }
\ No newline at end of file
...@@ -28,7 +28,7 @@ namespace Edu.Repository.Course ...@@ -28,7 +28,7 @@ namespace Edu.Repository.Course
string isSpecNode = ""; string isSpecNode = "";
if (query.Conditon == Common.Enum.Course.BackClassConditionEnum.WaitAgree) if (query.Conditon == Common.Enum.Course.BackClassConditionEnum.WaitAgree)
{ {
isSpecNode = string.Format(",IFNULL((SELECT SpecialNode FROM rb_student_backrelevance WHERE Id IN(SELECT BackrelevanceId FROM rb_student_backrecord WHERE ConditionId=A.BackId AND AuditStatus=1 AND AuditEmId={0})),0) AS SpecialNode ", query.CreateBy); //isSpecNode = string.Format(",IFNULL((SELECT SpecialNode FROM rb_student_backrelevance WHERE Id IN(SELECT BackrelevanceId FROM rb_student_backrecord WHERE ConditionId=A.BackId AND AuditStatus=1 AND AuditEmId={0})),0) AS SpecialNode ", query.CreateBy);
} }
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT A.*,IFNULL(B.GuestName,'') AS GuestName,IFNULL(C.SName,'') AS SchoolName,IFNULL(D.ClassName,'') AS ClassName,IFNULL(T.TeacherName,'') AS TeacherName SELECT A.*,IFNULL(B.GuestName,'') AS GuestName,IFNULL(C.SName,'') AS SchoolName,IFNULL(D.ClassName,'') AS ClassName,IFNULL(T.TeacherName,'') AS TeacherName
......
...@@ -6,6 +6,10 @@ using System.Text; ...@@ -6,6 +6,10 @@ using System.Text;
using System.Linq; using System.Linq;
using VT.FW.DB.Dapper; using VT.FW.DB.Dapper;
using VT.FW.DB; using VT.FW.DB;
using Edu.Repository.Flow;
using Edu.Model.ViewModel.Flow;
using Edu.Repository.User;
using Edu.Repository.Course;
namespace Edu.Repository.EduTask namespace Edu.Repository.EduTask
{ {
...@@ -14,6 +18,36 @@ namespace Edu.Repository.EduTask ...@@ -14,6 +18,36 @@ namespace Edu.Repository.EduTask
/// </summary> /// </summary>
public class RB_Education_ReceiptRepository : BaseRepository<RB_Education_Receipt> public class RB_Education_ReceiptRepository : BaseRepository<RB_Education_Receipt>
{ {
/// <summary>
/// 教务单据审核人员信息仓储层对象
/// </summary>
private readonly RB_Education_RelevanceRepository student_BackRelevanceRepository = new RB_Education_RelevanceRepository();
/// <summary>
/// 教务单据审核记录仓储层对象
/// </summary>
private readonly RB_Education_RecordRepository student_BackRecordRepository = new RB_Education_RecordRepository();
/// <summary>
/// 流程仓储层对象
/// </summary>
private readonly RB_FlowRepository flowRepository = new RB_FlowRepository();
/// <summary>
/// 账号仓储层对象
/// </summary>
private readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
/// <summary>
/// 班级仓储层对象
/// </summary>
private readonly RB_ClassRepository classRepository = new RB_ClassRepository();
/// <summary>
/// 订单仓储层对象
/// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary> /// <summary>
/// 获取教务单据分页列表 /// 获取教务单据分页列表
/// </summary> /// </summary>
...@@ -51,25 +85,136 @@ WHERE 1=1 ...@@ -51,25 +85,136 @@ WHERE 1=1
/// 新增修改教务单据 /// 新增修改教务单据
/// </summary> /// </summary>
/// <param name="model"></param> /// <param name="model"></param>
/// <param name="message"></param>
/// <returns></returns> /// <returns></returns>
public bool SetEducationReceiptRepository(RB_Education_Receipt model) public bool SetEducationReceiptRepository(RB_Education_Receipt model, out string message)
{ {
message = "";
bool flag = false; bool flag = false;
if (model.Id > 0) //审核流程
var flowModel = new RB_Flow_ViewModel();
//退课流程
if (model.ReceiptType == Common.Enum.Finance.ReceiptTypeEnum.BackClass)
{ {
Dictionary<string, object> fileds = new Dictionary<string, object>() flowModel = flowRepository.GetFlowRepository(Common.Config.BackClassFlowId);
{ message = "未配置退课流程!";
{nameof(RB_Education_Receipt.UpdateBy),model.UpdateBy }, return false;
{nameof(RB_Education_Receipt.UpdateTime),model.UpdateTime },
};
flag = base.Update(fileds, new WhereHelper(nameof(RB_Education_Receipt.Id),model.Id));
} }
else
int index = 0;
foreach (var item in flowModel.FlowNodeList)
{ {
var newId = base.Insert(model); if (item.FlowAduitList != null && item.FlowAduitList.Count > 0)
model.Id = newId; {
flag = newId > 0; string AuditedId = "";//审核人
foreach (var subItem in item.FlowAduitList)
{
//指定人员
if (subItem.AuditType == Common.Enum.User.WFTAuditTypeEnum.SpecifiedMember)
{
AuditedId += subItem.UserId + ",";
}
//指定角色
else if (subItem.AuditType == Common.Enum.User.WFTAuditTypeEnum.Role)
{
//本班教师审核
if (subItem.PostType == 1)
{
//班级实体类
var classModel = classRepository.GetEntity(model.ClassId);
if (classModel == null)
{
message = "未找到对应的班级信息!";
return false;
}
//获取教师实体信息
var teacherModel = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
AccountId = classModel.Teacher_Id,
AccountType = Common.Enum.User.AccountTypeEnum.Teacher
})?.FirstOrDefault();
var teacherId = teacherModel?.Id ?? 0;
AuditedId += teacherId + ",";
subItem.UserId = teacherId;
}
//关联销售审核
else if (subItem.PostType == 2)
{
var orderModel = orderRepository.GetEntity(model.OrderId);
AuditedId += (orderModel?.EnterID ?? 0) + ",";
subItem.UserId = (orderModel?.EnterID ?? 0);
}
//分区校长审核
else if (subItem.PostType == 3)
{
var headmaster = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
Post_Id = Common.Config.SchoolPostId,
Group_Id = model.Group_Id
})?.FirstOrDefault();
AuditedId += (headmaster?.Id ?? 0) + ",";
subItem.UserId = (headmaster?.Id ?? 0);
}
//教务长审核
else if (subItem.PostType == 4)
{
var headmaster = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel()
{
Post_Id = Common.Config.JiaoWuZhang,
Group_Id = model.Group_Id
})?.FirstOrDefault();
AuditedId += (headmaster?.Id ?? 0) + ",";
subItem.UserId = (headmaster?.Id ?? 0);
}
}
}
var levance = new RB_Education_Relevance()
{
ConditionId = model.RelationId,
AuditDescription = item.NodeName,
AuditedId = "",
AuditWay = item.FlowAduitList[0].AuditWay,
AuditType = item.FlowAduitList[0].AuditType,
OriginalAuditId = 0,
RoleOrInitiator = 0,
PostIds = string.Join(",", item.FlowAduitList.Where(qitem => qitem.AuditType == Common.Enum.User.WFTAuditTypeEnum.Role).Select(qitem => qitem.PostType)),
UserIds = string.Join(",", item.FlowAduitList.Where(qitem => qitem.AuditType == Common.Enum.User.WFTAuditTypeEnum.SpecifiedMember).Select(qitem => qitem.UserId)),
ToAuditId = AuditedId.TrimEnd(','),
Sort = item.SortNum,
SpecialNode = item.FlowAduitList[0].IsSpecNode,
Stauts = Common.Enum.User.WFRrocessStatus.NotAudit,
WorkFlowId = Common.Config.BackClassFlowId,
};
var backLevanceId = student_BackRelevanceRepository.Insert(levance);
levance.Id = backLevanceId;
flag = backLevanceId > 0;
if (index == 0)
{
foreach (var subItem in item.FlowAduitList)
{
var recordModel = new RB_Education_Record_ViewModel()
{
ConditionId = model.RelationId,
AuditStatus = Common.Enum.User.WFRrocessStatus.NotAudit,
AuditId = levance.Id,
AuditEmId = subItem.UserId,
CreateBy = model.CreateBy,
CreateTime = DateTime.Now,
UpdateBy = model.CreateBy,
UpdateTime = DateTime.Now,
Description = "",
BackrelevanceId = levance.Id,
};
flag = student_BackRecordRepository.Insert(recordModel) > 0;
}
}
}
index++;
} }
var newId = base.Insert(model);
model.Id = newId;
flag = newId > 0;
return flag; return flag;
} }
} }
......
using Edu.Model.Entity.Course;  using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.EduTask;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
namespace Edu.Repository.Course namespace Edu.Repository.EduTask
{ {
/// <summary> /// <summary>
/// 学员退课单据审核记录仓储层 /// 教务单据审核记录仓储层
/// </summary> /// </summary>
public class RB_Student_BackRecordRepository : BaseRepository<RB_Student_BackRecord> public class RB_Education_RecordRepository : BaseRepository<RB_Education_Record>
{ {
/// <summary> /// <summary>
/// 获取学员退课单据审核记录列表 /// 获取教务单据审核记录列表
/// </summary> /// </summary>
/// <param name="query"></param> /// <param name="query"></param>
/// <returns></returns> /// <returns></returns>
public List<RB_Student_BackRecord_ViewModel> GetStudentBackRecordListRepository(RB_Student_BackRecord_ViewModel query) public List<RB_Education_Record_ViewModel> GetEducationRecordListRepository(RB_Education_Record_ViewModel query)
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT * SELECT *
FROM RB_Student_BackRecord FROM RB_Education_Record
WHERE 1=1 WHERE 1=1
"); ");
if (query != null) if (query != null)
{ {
if (query.ConditionId > 0) if (query.ConditionId > 0)
{ {
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Student_BackRecord_ViewModel.ConditionId), query.ConditionId); builder.AppendFormat(" AND {0}={1} ", nameof(RB_Education_Record_ViewModel.ConditionId), query.ConditionId);
} }
if (query.AuditStatus > 0) if (query.AuditStatus > 0)
{ {
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Student_BackRecord_ViewModel.AuditStatus), query.AuditStatus); builder.AppendFormat(" AND {0}={1} ", nameof(RB_Education_Record_ViewModel.AuditStatus), query.AuditStatus);
} }
} }
return Get<RB_Student_BackRecord_ViewModel>(builder.ToString()).ToList(); return Get<RB_Education_Record_ViewModel>(builder.ToString()).ToList();
} }
} }
} }
using Edu.Model.Entity.Course; using Edu.Model.Entity.Course;
using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.EduTask;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
namespace Edu.Repository.Course namespace Edu.Repository.EduTask
{ {
/// <summary> /// <summary>
/// 退款单据审核人员信息仓储层 /// 教务单据审核人员信息仓储层
/// </summary> /// </summary>
public class RB_Student_BackRelevanceRepository : BaseRepository<RB_Student_BackRelevance> public class RB_Education_RelevanceRepository : BaseRepository<RB_Education_Relevance>
{ {
/// <summary> /// <summary>
/// 获取学生退课审核列表 /// 获取教务审核列表
/// </summary> /// </summary>
/// <param name="query"></param> /// <param name="query"></param>
/// <returns></returns> /// <returns></returns>
public List<RB_Student_BackRelevance_ViewModel> GetStudentBackRelevanceListRepository(RB_Student_BackRelevance_ViewModel query) public List<RB_Education_Relevance_ViewModel> GetStudentBackRelevanceListRepository(RB_Education_Relevance_ViewModel query)
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT * SELECT *
FROM RB_Student_BackRelevance FROM RB_Education_Relevance
WHERE 1=1 WHERE 1=1
"); ");
if (query != null) if (query != null)
{ {
if (query.ConditionId > 0) if (query.ConditionId > 0)
{ {
builder.AppendFormat(" AND {0}={1} ", nameof(RB_Student_BackRelevance_ViewModel.ConditionId), query.ConditionId); builder.AppendFormat(" AND {0}={1} ", nameof(RB_Education_Relevance_ViewModel.ConditionId), query.ConditionId);
} }
} }
builder.AppendFormat(" ORDER BY Sort ASC "); builder.AppendFormat(" ORDER BY Sort ASC ");
return Get<RB_Student_BackRelevance_ViewModel>(builder.ToString()).ToList(); return Get<RB_Education_Relevance_ViewModel>(builder.ToString()).ToList();
} }
} }
} }
\ No newline at end of file
...@@ -115,8 +115,12 @@ namespace Edu.WebApi.Controllers.Course ...@@ -115,8 +115,12 @@ namespace Edu.WebApi.Controllers.Course
var SpecialNode = base.ParmJObj.GetInt("SpecialNode"); var SpecialNode = base.ParmJObj.GetInt("SpecialNode");
//抄送人 //抄送人
string RecipientIds = base.ParmJObj.GetStringValue("RecipientIds"); 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);
//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 ApiResult.Failed();
} }
/// <summary> /// <summary>
......
...@@ -531,6 +531,7 @@ namespace Edu.WebApi.Controllers.Duty ...@@ -531,6 +531,7 @@ namespace Edu.WebApi.Controllers.Duty
item.Evaluate, item.Evaluate,
item.VisitTimes, item.VisitTimes,
item.Remark, item.Remark,
item.Age,
CreateTimeStr = Common.ConvertHelper.FormatDate(item.CreateTime) CreateTimeStr = Common.ConvertHelper.FormatDate(item.CreateTime)
}); });
} }
...@@ -559,7 +560,8 @@ namespace Edu.WebApi.Controllers.Duty ...@@ -559,7 +560,8 @@ namespace Edu.WebApi.Controllers.Duty
PlanId = base.ParmJObj.GetInt("PlanId"), PlanId = base.ParmJObj.GetInt("PlanId"),
Remark = base.ParmJObj.GetStringValue("Remark"), Remark = base.ParmJObj.GetStringValue("Remark"),
Evaluate = base.ParmJObj.GetStringValue("Evaluate"), Evaluate = base.ParmJObj.GetStringValue("Evaluate"),
VisitorStatus = base.ParmJObj.GetInt("VisitorStatus") VisitorStatus = base.ParmJObj.GetInt("VisitorStatus"),
Age=base.ParmJObj.GetInt("Age"),
}; };
model.Group_Id = base.UserInfo.Group_Id; model.Group_Id = base.UserInfo.Group_Id;
model.Status = Common.Enum.DateStateEnum.Normal; model.Status = Common.Enum.DateStateEnum.Normal;
......
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