Commit eb5e8241 authored by 吴春's avatar 吴春

解决冲突

parents 97ca1904 1397b2a2
using Edu.Common.Enum.System;
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
namespace Edu.Common.Plugin
{
/// <summary>
/// 企业微信推送
/// </summary>
public class PushWorkChatHelper
{
/// <summary>
/// 推送企业消息
/// </summary>
/// <param name="content">内容</param>
/// <param name="receiveid">接收人(全部:@all,多个:“LuoChao|HuangDaSha”,单个:“LuoChao”)</param>
/// <param name="title">标题</param>
/// <param name="workmsgType">类型,默认为markdown,还支持news,如果要拓展其他类型,需要到System里面拓展</param>
/// <param name="JumpUrl">跳转地址</param>
public static void PushToWorkChat(string content,string receiveid,string title,string workmsgType= "markdown",string JumpUrl="")
{
Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
{
CategoryId = PushMessageCategoryEnum.SalePeople,
Content = content,
CoverImg = "",
CreateByName = "系统",
JumpUrl = "",
WorkMsgType = workmsgType,
SendTime = DateTime.Now,
SendType = 0,
Title = title,
Platform = 5,
ReceiveId = receiveid
};
Common.Message.MessageHelper.SendMessage(modelWork);
}
}
}
...@@ -28,6 +28,7 @@ namespace Edu.Education ...@@ -28,6 +28,7 @@ namespace Edu.Education
new QuarzHelper().OKRPeriodTimer().GetAwaiter().GetResult(); new QuarzHelper().OKRPeriodTimer().GetAwaiter().GetResult();
new QuarzHelper().OKRPeriodRuleTimer().GetAwaiter().GetResult(); new QuarzHelper().OKRPeriodRuleTimer().GetAwaiter().GetResult();
new QuarzHelper().RevenueReportTimer().GetAwaiter().GetResult(); new QuarzHelper().RevenueReportTimer().GetAwaiter().GetResult();
new QuarzHelper().CheckPerparingTimer().GetAwaiter().GetResult();
} }
/// <summary> /// <summary>
......
...@@ -11,6 +11,9 @@ using Edu.Module.OKR; ...@@ -11,6 +11,9 @@ using Edu.Module.OKR;
using System.Linq; using System.Linq;
using System.Collections.Generic; using System.Collections.Generic;
using Edu.Module.Finance; using Edu.Module.Finance;
using System.Web;
using Edu.Common.Plugin;
using Edu.Common;
namespace Edu.Education.Helper namespace Edu.Education.Helper
{ {
...@@ -59,7 +62,7 @@ namespace Edu.Education.Helper ...@@ -59,7 +62,7 @@ namespace Edu.Education.Helper
/// <returns></returns> /// <returns></returns>
public async Task OKRPeriodTimer() public async Task OKRPeriodTimer()
{ {
string cronExpression = "0 0 1 * * ?"; //每天凌晨1点 string cronExpression = "0 0 1 * * ?"; //每天凌晨1点
NameValueCollection props = new NameValueCollection NameValueCollection props = new NameValueCollection
{ {
{ "quartz.serializer.type", "binary" } { "quartz.serializer.type", "binary" }
...@@ -146,8 +149,36 @@ namespace Edu.Education.Helper ...@@ -146,8 +149,36 @@ namespace Edu.Education.Helper
await scheduler.ScheduleJob(job, trigger); await scheduler.ScheduleJob(job, trigger);
} }
/// <summary>
/// 定时执行备课检查
/// </summary>
/// <returns></returns>
public async Task CheckPerparingTimer()
{
string CronExpression = "0 30 13,18 * * ?";
NameValueCollection props = new NameValueCollection
{
{ "quartz.serializer.type", "binary" }
};
StdSchedulerFactory factory = new StdSchedulerFactory(props);
IScheduler scheduler = await factory.GetScheduler();
await scheduler.Start();
IJobDetail job = JobBuilder.Create<NotifyTeachPerparing>()
.WithIdentity("job4", "group4")
.Build();
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity("trigger5", "group5")
.WithCronSchedule(CronExpression)
.Build();
await scheduler.ScheduleJob(job, trigger);
}
} }
/// <summary> /// <summary>
/// 教师绩效生成 /// 教师绩效生成
/// </summary> /// </summary>
...@@ -319,6 +350,42 @@ namespace Edu.Education.Helper ...@@ -319,6 +350,42 @@ namespace Edu.Education.Helper
} }
} }
/// <summary>
/// 备课检查通知
/// </summary>
public class NotifyTeachPerparing : IJob
{
public Task Execute(IJobExecutionContext context)
{
try
{
Console.WriteLine("开始执行未备课查询....");
ClassModule classModule = new ClassModule();
var query = classModule.GetNotPerparingTeachModule();
if (query != null && query.Count > 0)
{
Console.WriteLine($"未备课查询结果为:{query.Count}....");
query.ForEach(x =>
{
var recipientPath = HttpUtility.UrlEncode($"/teacher/myPrepareLessons?d={HttpUtility.UrlEncode(DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"))}");
var content = $"<font color='info'>备课通知</font> 明日还有班级没有完成备课\n>**概要信息** \n>上课日期:<font color='warning'>{DateTime.Now.AddDays(1).ToString("yyyy年MM月dd日")}</font>\n>未备课班级:<font color='comment'>{x.ClassCount}个</font>\n>请点击:[立即备课]({Config.ErpUrl}/autologin?loginId={x.AccountId}&target={recipientPath})";
Console.WriteLine($"开始推送内容为:{content}....");
PushWorkChatHelper.PushToWorkChat(content, x.WorkUserId, "业务单据驳回通知");
});
}
else
{
Console.WriteLine("所有老师完成明日备课....");
}
}
catch (Exception ex)
{
LogHelper.Write(ex, "CreateRevenueReport");
}
return null;
}
}
public class UpdageHistoryOrderCommissionHelper public class UpdageHistoryOrderCommissionHelper
......
...@@ -17,7 +17,7 @@ namespace Edu.EducationCore ...@@ -17,7 +17,7 @@ namespace Edu.EducationCore
ServiceBase.Run(ServicesToRun); ServiceBase.Run(ServicesToRun);
//Console.WriteLine("来了"); //Console.WriteLine("来了");
//new QuarzHelper().RevenueReportTimer().GetAwaiter().GetResult(); //new QuarzHelper().CheckPerparingTimer().GetAwaiter().GetResult();
//Console.WriteLine("结束了"); //Console.WriteLine("结束了");
//Console.ReadKey(); //Console.ReadKey();
} }
......
{ {
"ConnectionStrings": { "ConnectionStrings": {
//"DefaultConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=uat_reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ", "DefaultConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient",
"DataStatisticsConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DataStatisticsConnectionPName": "MySql.Data.MySqlClient",
"LogConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_sys;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"LogConnectionPName": "MySql.Data.MySqlClient",
"MallConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=test_reborn_mall;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"MallConnectionPName": "MySql.Data.MySqlClient"
//"DefaultConnection": "server=rm-bp1tj77h6kp0d02fb.mysql.rds.aliyuncs.com;user id=reborn;password=Reborn@2018;database=uat_reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
//"DefaultConnectionPName": "MySql.Data.MySqlClient", //"DefaultConnectionPName": "MySql.Data.MySqlClient",
//"FinanceConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ", //"FinanceConnection": "server=rm-bp1tj77h6kp0d02fb.mysql.rds.aliyuncs.com;user id=reborn;password=Reborn@2018;database=uat_reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
//"FinanceConnectionPName": "MySql.Data.MySqlClient", //"FinanceConnectionPName": "MySql.Data.MySqlClient",
//"DataStatisticsConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ", //"DataStatisticsConnection": "server=rm-bp1tj77h6kp0d02fb.mysql.rds.aliyuncs.com;user id=reborn;password=Reborn@2018;database=uat_reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ",
//"DataStatisticsConnectionPName": "MySql.Data.MySqlClient" //"DataStatisticsConnectionPName": "MySql.Data.MySqlClient"
"DefaultConnection": "server=rm-bp1tj77h6kp0d02fb.mysql.rds.aliyuncs.com;user id=reborn;password=Reborn@2018;database=uat_reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=rm-bp1tj77h6kp0d02fb.mysql.rds.aliyuncs.com;user id=reborn;password=Reborn@2018;database=uat_reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient",
"DataStatisticsConnection": "server=rm-bp1tj77h6kp0d02fb.mysql.rds.aliyuncs.com;user id=reborn;password=Reborn@2018;database=uat_reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DataStatisticsConnectionPName": "MySql.Data.MySqlClient"
}, },
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
...@@ -25,6 +29,7 @@ ...@@ -25,6 +29,7 @@
"IsSendMsg": 2, "IsSendMsg": 2,
"AllowedHosts": "*", "AllowedHosts": "*",
"OpenValidation": "False", "OpenValidation": "False",
"ErpUrl": "http://localhost:8181/#",
"UploadSiteUrl": "http://192.168.20.214:8120", "UploadSiteUrl": "http://192.168.20.214:8120",
"ViewFileSiteUrl": "https://viitto-1301420277.cos.ap-chengdu.myqcloud.com", "ViewFileSiteUrl": "https://viitto-1301420277.cos.ap-chengdu.myqcloud.com",
"ErpViewFileSiteUrl": "http://imgfile.oytour.com", "ErpViewFileSiteUrl": "http://imgfile.oytour.com",
...@@ -40,7 +45,8 @@ ...@@ -40,7 +45,8 @@
"VirtualHost": "/", "VirtualHost": "/",
"Port": 5672, "Port": 5672,
"UserName": "guest", "UserName": "guest",
"Password": "viitto2019" "Password": "viitto2019",
"QueenName": "vt_sys_message_test"
}, },
"RedisSetting": { "RedisSetting": {
"RedisServer": "47.96.23.199", "RedisServer": "47.96.23.199",
......
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.Question;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Exam
{
/// <summary>
/// 试卷题目实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Examination_Details
{
/// <summary>
/// 试卷详情编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 试卷编号
/// </summary>
public int PaperId { get; set; }
/// <summary>
/// 题库编号
/// </summary>
public int BankId { get; set; }
/// <summary>
/// 问题编号
/// </summary>
public int QuestionId { get; set; }
/// <summary>
/// 问题名称(题干)
/// </summary>
public string Title { get; set; }
/// <summary>
/// 问题内容
/// </summary>
public string QuestionContent { get; set; }
/// <summary>
/// 难易程度(1-易,2-中,3-难)
/// </summary>
public DifficultyTypeEnum DifficultyType { get; set; }
/// <summary>
/// 答案解析
/// </summary>
public string AnswerParse { get; set; }
/// <summary>
/// 问题类型编号
/// </summary>
public int QuestionTypeId { get; set; }
/// <summary>
/// 问题类型Key
/// </summary>
public string QuestionTypeKey { get; set; }
/// <summary>
/// 知识点
/// </summary>
public string Knowledge { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 是否同步修改引用此题目的作业和考试(1-是)
/// </summary>
public int IsUpdateJobExam { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public DateStateEnum Status { get; set; }
/// <summary>
/// 排序
/// </summary>
public int SortNum { get; set; }
/// <summary>
/// 问题答案【JSON字符串】
/// </summary>
public string Answer { get; set; }
/// <summary>
/// 填空题(答案顺序打乱也判正确)
/// </summary>
public int IsMutex { get; set; }
/// <summary>
/// 题目所属大类
/// </summary>
public QuestionCategoryEnum? Category { get; set; }
/// <summary>
/// 考级程度
/// </summary>
public LevelTypeEnum? LevelType { get; set; }
/// <summary>
/// 题目分数
/// </summary>
public decimal Score { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Exam
{
/// <summary>
/// 试卷题目分组实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Examination_Group
{
/// <summary>
/// 试卷分组编号
/// </summary>
public int GId { get; set; }
/// <summary>
/// 试卷编号
/// </summary>
public int PaperId { get; set; }
/// <summary>
/// 分组名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 问题类型编号
/// </summary>
public int QuestionTypeId { get; set; }
/// <summary>
/// 问题类型Key
/// </summary>
public string QuestionTypeKey { get; set; }
/// <summary>
/// 排序
/// </summary>
public int GSortNum { get; set; }
}
}
using Edu.Common.Enum.Question;
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Exam
{
/// <summary>
/// 试卷实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Examination_Paper
{
/// <summary>
/// 试卷编号
/// </summary>
public int PaperId { get; set; }
/// <summary>
/// 试卷名称
/// </summary>
public string PaperName { get; set; }
/// <summary>
/// 关联题库编号
/// </summary>
public string QuestionBandIds { get; set; }
/// <summary>
/// 难易程度(1-易,2-中,3-难)
/// </summary>
public DifficultyTypeEnum DifficultyType { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 发布次数
/// </summary>
public int PublishCount { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 学校编号
/// </summary>
public int School_Id { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
}
}
using Edu.Model.Entity.Exam;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Exam
{
/// <summary>
/// 试卷题目视图实体类
/// </summary>
public class RB_Examination_Details_ViewModel : RB_Examination_Details
{
/// <summary>
/// 试卷编号【查询使用】
/// </summary>
public string QPaperIds { get; set; }
/// <summary>
/// 显示标题
/// </summary>
public string ShowTitle { get; set; }
}
}
using Edu.Model.Entity.Exam;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Exam
{
/// <summary>
/// 试卷题目分组视图实体类
/// </summary>
public class RB_Examination_Group_ViewModel: RB_Examination_Group
{
/// <summary>
/// 试卷分组题目列表
/// </summary>
public List<RB_Examination_Details_ViewModel> DetailsList { get; set; }
/// <summary>
/// 试卷编号【查询使用】
/// </summary>
public string QPaperIds { get; set; }
}
}
using Edu.Model.Entity.Exam;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Exam
{
/// <summary>
/// 试卷师徒实体类
/// </summary>
public class RB_Examination_Paper_ViewModel : RB_Examination_Paper
{
/// <summary>
/// 创建人
/// </summary>
public string CreateByName { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public string CreateTimeStr { get { return Common.ConvertHelper.FormatDate(this.CreateTime); } }
/// <summary>
/// 试卷题目分组列表
/// </summary>
public List<RB_Examination_Group_ViewModel> GroupList { get; set; }
}
}
...@@ -174,6 +174,15 @@ namespace Edu.Model.ViewModel.Grade ...@@ -174,6 +174,15 @@ namespace Edu.Model.ViewModel.Grade
/// </summary> /// </summary>
public List<ChapterTree_ViewModel> Chapter { get; set; } public List<ChapterTree_ViewModel> Chapter { get; set; }
/// 班级数量
/// </summary>
public int ClassCount { get; set; }
/// <summary>
/// 账号编号
/// </summary>
public int AccountId { get; set; }
public string WorkUserId { get; set; }
} }
} }
...@@ -4173,7 +4173,14 @@ namespace Edu.Module.Course ...@@ -4173,7 +4173,14 @@ namespace Edu.Module.Course
return true; return true;
} }
/// <summary>
/// 返回明日未备课的老师列表
/// </summary>
/// <returns></returns>
public List<RB_Class_Plan_ViewModel> GetNotPerparingTeachModule()
{
return class_PlanRepository.GetNotPerparingTeachRepository();
}
#region 教师-我的班级 #region 教师-我的班级
......
using Edu.AOP.CustomerAttribute; using Edu.AOP.CustomerAttribute;
using Edu.Cache.User; using Edu.Cache.User;
using Edu.Common;
using Edu.Common.Enum.EduTask; using Edu.Common.Enum.EduTask;
using Edu.Common.Enum.User; using Edu.Common.Enum.User;
using Edu.Common.Plugin; using Edu.Common.Plugin;
...@@ -19,6 +20,7 @@ using Edu.Repository.User; ...@@ -19,6 +20,7 @@ using Edu.Repository.User;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Web;
using VT.FW.DB; using VT.FW.DB;
namespace Edu.Module.EduTask namespace Edu.Module.EduTask
...@@ -97,6 +99,11 @@ namespace Edu.Module.EduTask ...@@ -97,6 +99,11 @@ namespace Edu.Module.EduTask
/// </summary> /// </summary>
private readonly RB_Class_TimeRepository class_TimeRepository = new RB_Class_TimeRepository(); private readonly RB_Class_TimeRepository class_TimeRepository = new RB_Class_TimeRepository();
/// <summary>
/// 用户仓储层
/// </summary>
private readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
/// <summary> /// <summary>
/// 获取教务单据分页列表 /// 获取教务单据分页列表
...@@ -682,6 +689,23 @@ namespace Edu.Module.EduTask ...@@ -682,6 +689,23 @@ namespace Edu.Module.EduTask
if (!string.IsNullOrEmpty(auditModel.RecipientIds)) if (!string.IsNullOrEmpty(auditModel.RecipientIds))
{ {
newRecipientIds = ((!string.IsNullOrEmpty(receipt.RecipientIds) ? receipt.RecipientIds : "") + "," + auditModel.RecipientIds).TrimStart(',').TrimEnd(','); newRecipientIds = ((!string.IsNullOrEmpty(receipt.RecipientIds) ? receipt.RecipientIds : "") + "," + auditModel.RecipientIds).TrimStart(',').TrimEnd(',');
#region 抄送通知
var notifyUsers = accountRepository.GetAccountListExtRepository(new RB_Account_ViewModel() {
QIds= newRecipientIds
});
if (notifyUsers != null && notifyUsers.Count() > 0)
{
notifyUsers.ForEach(x=> {
if (!string.IsNullOrEmpty(x.WorkUserId))
{
var recipientPath = HttpUtility.UrlEncode($"/teacher/change-class-manager?tab=4&id={receipt.Id}");
var content = $"<font color='info'>抄送通知</font> 你收到了一张{EnumHelper.ToName(receipt.ReceiptType)}单据抄送\n>**概要信息** \n>抄 送 人:<font color='comment'>{user.AccountName}</font>\n>单据编号:<font color='comment'>{receipt.Id}</font>\n>创 建 人:<font color='comment'>{UserReidsCache.GetUserLoginInfo(receipt.CreateBy).AccountName}</font>\n>申请时间:<font color='comment'>{receipt.CreateTime.ToString("MM-dd HH:mm")}</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={x.Id}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content,x.WorkUserId,"抄送通知");
}
});
}
#endregion
} }
//获取审核记录 //获取审核记录
var aurList = education_RecordRepository.GetEducationRecordListRepository(new RB_Education_Record_ViewModel() var aurList = education_RecordRepository.GetEducationRecordListRepository(new RB_Education_Record_ViewModel()
...@@ -733,6 +757,19 @@ namespace Edu.Module.EduTask ...@@ -733,6 +757,19 @@ namespace Edu.Module.EduTask
#region 更新审核记录表状态 #region 更新审核记录表状态
flag = UpdateEduRecordModule(WFRrocessStatus.AuditNotThrough, auditModel.Description, user.Id, amodel.Id); flag = UpdateEduRecordModule(WFRrocessStatus.AuditNotThrough, auditModel.Description, user.Id, amodel.Id);
if (flag) {
#region 驳回通知
var notifyUsers = accountRepository.GetWorkUserIdRepository(receipt.CreateBy);
if (!string.IsNullOrEmpty(notifyUsers))
{
var recipientPath = HttpUtility.UrlEncode($"/teacher/change-class-manager?tab=1&id={receipt.Id}");
var content = $"`业务单据驳回` 你有一张业务单据被驳回\n>**概要信息** \n>审 批 人:<font color='warning'>{user.AccountName}</font>\n>单据信息:<font color='comment'>{EnumHelper.ToName(receipt.ReceiptType)}单据 ({receipt.Id})</font>\n>驳回时间:<font color='comment'>{DateTime.Now.ToString("MM-dd HH-mm")}</font>\n>驳回理由:<font color='comment'>{auditModel.Description}</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={receipt.CreateBy}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, notifyUsers, "业务单据驳回通知");
}
#endregion
}
#endregion #endregion
#region 更新审核关联表状态 #region 更新审核关联表状态
...@@ -756,6 +793,8 @@ namespace Edu.Module.EduTask ...@@ -756,6 +793,8 @@ namespace Edu.Module.EduTask
}; };
flag = education_ReceiptRepository.Update(fileds, new WhereHelper(nameof(RB_Education_Receipt_ViewModel.Id), receipt.Id)); flag = education_ReceiptRepository.Update(fileds, new WhereHelper(nameof(RB_Education_Receipt_ViewModel.Id), receipt.Id));
flag = UpdateOtherModule(receipt, auditModel); flag = UpdateOtherModule(receipt, auditModel);
} }
//审核通过 //审核通过
else else
...@@ -912,6 +951,15 @@ namespace Edu.Module.EduTask ...@@ -912,6 +951,15 @@ namespace Edu.Module.EduTask
{nameof(RB_Education_Receipt_ViewModel.VerifyStatus),(int)EduTaskRrocessStatus.AuditThrough} {nameof(RB_Education_Receipt_ViewModel.VerifyStatus),(int)EduTaskRrocessStatus.AuditThrough}
}; };
flag = education_ReceiptRepository.Update(fileds, new WhereHelper(nameof(RB_Education_Receipt_ViewModel.Id), receipt.Id)); flag = education_ReceiptRepository.Update(fileds, new WhereHelper(nameof(RB_Education_Receipt_ViewModel.Id), receipt.Id));
#region 完成通知
var notifyUsers = accountRepository.GetWorkUserIdRepository(receipt.CreateBy);
if (!string.IsNullOrEmpty(notifyUsers))
{
var recipientPath = HttpUtility.UrlEncode($"/teacher/change-class-manager?tab=1&id={receipt.Id}");
var content = $"<font color='info'>审核完成通知</font> 你有一张业务单据已审核完成\n>**概要信息** \n>审 批 人:<font color='warning'>{user.AccountName}</font>\n>单据信息:<font color='comment'>{EnumHelper.ToName(receipt.ReceiptType)}单据 ({receipt.Id})</font>\n>驳回时间:<font color='comment'>{DateTime.Now.ToString("MM-dd HH-mm")}</font>\n>审批备注:<font color='info'>已完成</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={receipt.CreateBy}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, notifyUsers, "业务单据驳回通知");
}
#endregion
} }
//同时创建下一步审核 复制审核人到审核关联表 创建审核记录表 //同时创建下一步审核 复制审核人到审核关联表 创建审核记录表
else else
...@@ -1066,6 +1114,17 @@ namespace Edu.Module.EduTask ...@@ -1066,6 +1114,17 @@ namespace Edu.Module.EduTask
return false; return false;
} }
} }
#region 通过通知
var notifyUsers = accountRepository.GetWorkUserIdRepository(receipt.CreateBy);
if (!string.IsNullOrEmpty(notifyUsers))
{
var recipientPath = HttpUtility.UrlEncode($"/teacher/change-class-manager?tab=1&id={receipt.Id}");
var content = $"<font color='info'>审核通知</font> 你有一张业务单据被通过\n>**概要信息** \n>审 批 人:<font color='warning'>{user.AccountName}</font>\n>单据信息:<font color='comment'>{EnumHelper.ToName(receipt.ReceiptType)}单据 ({receipt.Id})</font>\n>驳回时间:<font color='comment'>{DateTime.Now.ToString("MM-dd HH-mm")}</font>\n>审批备注:<font color='warning'>进行中</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={receipt.CreateBy}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, notifyUsers, "业务单据驳回通知");
}
#endregion
Dictionary<string, object> fileds = new Dictionary<string, object>() Dictionary<string, object> fileds = new Dictionary<string, object>()
{ {
{nameof(RB_Education_Receipt_ViewModel.VerifyStatus),(int)EduTaskRrocessStatus.AuditIng} {nameof(RB_Education_Receipt_ViewModel.VerifyStatus),(int)EduTaskRrocessStatus.AuditIng}
...@@ -1300,6 +1359,24 @@ namespace Edu.Module.EduTask ...@@ -1300,6 +1359,24 @@ namespace Edu.Module.EduTask
} }
} }
InsertBatcheAuditRecord(empList, receiptModel.Id, auditRelevance); InsertBatcheAuditRecord(empList, receiptModel.Id, auditRelevance);
#region 下一步审批通知
var notifyUsers = accountRepository.GetAccountListExtRepository(new RB_Account_ViewModel()
{
QIds = string.Join(",", empList)
});
if (notifyUsers != null && notifyUsers.Count() > 0)
{
notifyUsers.ForEach(x =>
{
if (!string.IsNullOrEmpty(x.WorkUserId))
{
var recipientPath = HttpUtility.UrlEncode($"/teacher/change-class-manager?tab=3&id={receiptModel.Id}");
var content = $"待审通知 你有一张业务单据等待审核\n>**概要信息** \n>单据信息:<font color='comment'>{EnumHelper.ToName(receiptModel.ReceiptType)}单据 ({receiptModel.Id})</font>\n>创 建 人:<font color='comment'>{UserReidsCache.GetUserLoginInfo(receiptModel.CreateBy).AccountName}</font>\n>创建时间:<font color='comment'>{receiptModel.CreateTime.ToString("MM-dd HH-mm")}</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={x.Id}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, x.WorkUserId, "业务单据待审通知");
}
});
}
#endregion
} }
} }
return true; return true;
......
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Edu.Aop\Edu.Aop.csproj" />
<ProjectReference Include="..\Edu.Cache\Edu.Cache.csproj" />
<ProjectReference Include="..\Edu.Common\Edu.Common.csproj" />
<ProjectReference Include="..\Edu.Model\Edu.Model.csproj" />
<ProjectReference Include="..\Edu.Repository\Edu.Repository.csproj" />
</ItemGroup>
</Project>
This diff is collapsed.
...@@ -12,6 +12,9 @@ using Edu.Repository.User; ...@@ -12,6 +12,9 @@ using Edu.Repository.User;
using Edu.Repository.Course; using Edu.Repository.Course;
using Edu.Repository.Grade; using Edu.Repository.Grade;
using Edu.Repository.Sell; using Edu.Repository.Sell;
using System.Web;
using Edu.Common.Plugin;
using Edu.Common;
namespace Edu.Repository.EduTask namespace Edu.Repository.EduTask
{ {
...@@ -410,12 +413,31 @@ WHERE 1=1 ...@@ -410,12 +413,31 @@ WHERE 1=1
recordModel.Id = 0; recordModel.Id = 0;
recordModel.AuditEmId = tItem; recordModel.AuditEmId = tItem;
flag = student_BackRecordRepository.Insert(recordModel) > 0; flag = student_BackRecordRepository.Insert(recordModel) > 0;
#region 审核通知
var account = new RB_AccountRepository().GetEmployeeInfo(tItem);
if (account!=null && !string.IsNullOrEmpty(account.WorkUserId))
{
var recipientPath = HttpUtility.UrlEncode($"/teacher/change-class-manager?tab=3&id={model.Id}");
var content = $"待审通知 你有一张业务单据等待审核\n>**概要信息** \n>单据信息:<font color='comment'>{EnumHelper.ToName(model.ReceiptType)}单据 ({model.Id})</font>\n>创 建 人:<font color='comment'>{account.EmployeeName}</font>\n>创建时间:<font color='comment'>{DateTime.Now.ToString("MM-dd HH-mm")}</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={tItem}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, account.WorkUserId, "业务单据待审通知");
}
#endregion
} }
} }
else else
{ {
recordModel.AuditEmId = subItem.UserId; recordModel.AuditEmId = subItem.UserId;
flag = student_BackRecordRepository.Insert(recordModel) > 0; flag = student_BackRecordRepository.Insert(recordModel) > 0;
#region 审核通知
var account = new RB_AccountRepository().GetEmployeeInfo(subItem.UserId);
if (account != null && !string.IsNullOrEmpty(account.WorkUserId))
{
var recipientPath = HttpUtility.UrlEncode($"/teacher/change-class-manager?tab=3&id={model.Id}");
var content = $"待审通知 你有一张业务单据等待审核\n>**概要信息** \n>单据信息:<font color='comment'>{EnumHelper.ToName(model.ReceiptType)}单据 ({model.Id})</font>\n>创 建 人:<font color='comment'>{account.EmployeeName}</font>\n>创建时间:<font color='comment'>{DateTime.Now.ToString("MM-dd HH-mm")}</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={subItem.UserId}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, account.WorkUserId, "业务单据待审通知");
}
#endregion
} }
} }
} }
......
using Edu.Common.Enum;
using Edu.Model.Entity.Exam;
using Edu.Model.ViewModel.Exam;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.Exam
{
/// <summary>
/// 试卷题目仓储层
/// </summary>
public class RB_Examination_DetailsRepository : BaseRepository<RB_Examination_Details>
{
/// <summary>
/// 获取试卷题目列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Examination_Details_ViewModel> GetExaminationDetailsListRepository(RB_Examination_Details_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Examination_Details AS A
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Examination_Details_ViewModel.Status), (int)DateStateEnum.Normal);
if (query != null)
{
if (query.PaperId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Details_ViewModel.PaperId), query.PaperId);
}
if (!string.IsNullOrEmpty(query.QPaperIds))
{
builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_Examination_Details_ViewModel.PaperId), query.QPaperIds);
}
}
return Get<RB_Examination_Details_ViewModel>(builder.ToString()).ToList();
}
}
}
using Edu.Model.Entity.Exam;
using Edu.Model.ViewModel.Exam;
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
namespace Edu.Repository.Exam
{
/// <summary>
/// 试卷题目分组仓储层
/// </summary>
public class RB_Examination_GroupRepository : BaseRepository<RB_Examination_Group>
{
/// <summary>
/// 获取试卷题目列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Examination_Group_ViewModel> GetExaminationGroupListRepository(RB_Examination_Group_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Examination_Group AS A
WHERE 1=1
");
if (query != null)
{
if (query.PaperId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Group_ViewModel.PaperId), query.PaperId);
}
if (!string.IsNullOrEmpty(query.QPaperIds))
{
builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_Examination_Group_ViewModel.PaperId), query.QPaperIds);
}
}
return Get<RB_Examination_Group_ViewModel>(builder.ToString()).ToList();
}
}
}
using Edu.Model.Entity.Exam;
using Edu.Model.ViewModel.Exam;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Exam
{
/// <summary>
/// 试卷仓储层
/// </summary>
public class RB_Examination_PaperRepository : BaseRepository<RB_Examination_Paper>
{
/// <summary>
/// 获取试卷分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Examination_Paper_ViewModel> GetExaminationPaperPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Examination_Paper_ViewModel query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Examination_Paper AS A
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.Group_Id), query.Group_Id);
}
if (!string.IsNullOrEmpty(query.PaperName))
{
builder.AppendFormat(" AND A.{0} LIKE @PaperName ", nameof(RB_Examination_Paper_ViewModel.PaperName));
parameters.Add("PaperName", "%" + query.PaperName.Trim() + "%");
}
}
return GetPage<RB_Examination_Paper_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
}
}
...@@ -1143,5 +1143,21 @@ WHERE 1=1 ...@@ -1143,5 +1143,21 @@ WHERE 1=1
return dayClassHours; return dayClassHours;
} }
/// <summary>
/// 查询明日还有未备课的老师信息
/// </summary>
/// <returns></returns>
public List<RB_Class_Plan_ViewModel> GetNotPerparingTeachRepository()
{
var sql = @"select b.Id as AccountId,b.WorkUserId,c.TeacherName,Count(0) as ClassCount from rb_class_plan a
left join rb_account b on a.TeacherId=b.AccountId and b.AccountType=2
left join rb_teacher c on a.TeacherId=c.Tid
left join rb_class d on a.ClassId=d.ClassId
where ClassDate=DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 1 DAY),'%Y-%m-%d') and a.BeiKeStatus=0 and a.TeacherId>0 and d.ClassStatus=2 and d.`Status`=0 and a.`Status`=0 and b.WorkUserId is not null
group by TeacherId";
return Get<RB_Class_Plan_ViewModel>(sql,null).ToList();
}
} }
} }
...@@ -144,17 +144,17 @@ SELECT A.*,IFNULL(G.GroupName,'') AS GroupName,IFNULL(s.SName,'') AS SchoolName, ...@@ -144,17 +144,17 @@ SELECT A.*,IFNULL(G.GroupName,'') AS GroupName,IFNULL(s.SName,'') AS SchoolName,
,IFNULL(d.DeptName,'') AS DeptName,IFNULL(p.PostName,'') AS PostName ,IFNULL(d.DeptName,'') AS DeptName,IFNULL(p.PostName,'') AS PostName
FROM FROM
( (
SELECT A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`,B.LeaveStatus SELECT A.WorkUserId,A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`,B.LeaveStatus
,A.AnnualLeaveDay, A.DirectSupervisor,A.OpenId,A.ActivationStatus,IFNULL(B.MName,'') AS AccountName,B.MHead AS UserIcon,B.Dept_Id,B.Post_Id,IFNULL(B.Email,'') AS Email ,A.AnnualLeaveDay, A.DirectSupervisor,A.OpenId,A.ActivationStatus,IFNULL(B.MName,'') AS AccountName,B.MHead AS UserIcon,B.Dept_Id,B.Post_Id,IFNULL(B.Email,'') AS Email
FROM rb_account AS A INNER JOIN rb_manager AS B ON A.AccountId=B.MId AND A.AccountType=1 FROM rb_account AS A INNER JOIN rb_manager AS B ON A.AccountId=B.MId AND A.AccountType=1
WHERE 1=1 {0} WHERE 1=1 {0}
UNION ALL UNION ALL
SELECT A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`,B.LeaveStatus SELECT A.WorkUserId,A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`,B.LeaveStatus
,A.AnnualLeaveDay, A.DirectSupervisor,A.OpenId,A.ActivationStatus,IFNULL(B.TeacherName,'') AS AccountName,B.TeacherIcon AS UserIcon,B.Dept_Id,B.Post_Id,IFNULL(B.Email,'') AS Email ,A.AnnualLeaveDay, A.DirectSupervisor,A.OpenId,A.ActivationStatus,IFNULL(B.TeacherName,'') AS AccountName,B.TeacherIcon AS UserIcon,B.Dept_Id,B.Post_Id,IFNULL(B.Email,'') AS Email
FROM rb_account AS A INNER JOIN rb_teacher AS B ON A.AccountId=B.TId AND A.AccountType=2 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 UNION ALL
SELECT A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`,B.LeaveStatus SELECT A.WorkUserId,A.Id,A.Account,A.`Password`,A.AccountType,A.AccountId,A.CreateBy,A.CreateTime,A.UpdateBy,A.UpdateTime,A.Group_Id,B.School_Id,A.`Status`,B.LeaveStatus
,A.AnnualLeaveDay, A.DirectSupervisor,A.OpenId,A.ActivationStatus,IFNULL(B.AssistName,'') AS AccountName,B.AssistIcon AS UserIcon,B.Dept_Id,B.Post_Id,IFNULL(B.Email,'') AS Email ,A.AnnualLeaveDay, A.DirectSupervisor,A.OpenId,A.ActivationStatus,IFNULL(B.AssistName,'') AS AccountName,B.AssistIcon AS UserIcon,B.Dept_Id,B.Post_Id,IFNULL(B.Email,'') AS Email
FROM rb_account AS A INNER JOIN rb_assist AS B ON A.AccountId=B.AId AND A.AccountType=3 FROM rb_account AS A INNER JOIN rb_assist AS B ON A.AccountId=B.AId AND A.AccountType=3
WHERE 1=1 {0} WHERE 1=1 {0}
...@@ -640,7 +640,7 @@ WHERE e.RB_Group_id ={GroupId} AND e.IsLeave =0 AND o.Score =0 GROUP BY e.Employ ...@@ -640,7 +640,7 @@ WHERE e.RB_Group_id ={GroupId} AND e.IsLeave =0 AND o.Score =0 GROUP BY e.Employ
var result = ExecuteScalar(sql, null); var result = ExecuteScalar(sql, null);
return !result.Equals(null)&&Convert.IsDBNull(result) ? string.Empty : result.ToString(); return result==null ? string.Empty : result.ToString();
} }
/// <summary> /// <summary>
......
...@@ -146,6 +146,9 @@ namespace Edu.WebApi.Controllers.EduTask ...@@ -146,6 +146,9 @@ namespace Edu.WebApi.Controllers.EduTask
SpecialNode = base.ParmJObj.GetInt("SpecialNode"), SpecialNode = base.ParmJObj.GetInt("SpecialNode"),
}; };
var flag = educationReceiptModule.AduitEducationReceiptModule(auditModel, base.UserInfo, out string message); var flag = educationReceiptModule.AduitEducationReceiptModule(auditModel, base.UserInfo, out string message);
return flag?ApiResult.Success():ApiResult.Failed(message: message); return flag?ApiResult.Success():ApiResult.Failed(message: message);
} }
......
using Edu.Cache.User;
using Edu.Common.API;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.Question;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Exam;
using Edu.Module.Exam;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Edu.WebApi.Controllers.Exam
{
/// <summary>
/// 改变流程相关申请
/// </summary>
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class ExamController : BaseController
{
/// <summary>
/// 试卷处理类对象
/// </summary>
private readonly PaperModule paperModule = AOP.AOPHelper.CreateAOPObject<PaperModule>();
/// <summary>
/// 获取试卷分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetPaperPage()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Examination_Paper_ViewModel()
{
PaperName = base.ParmJObj.GetStringValue("PaperName"),
};
query.Group_Id = base.UserInfo.Group_Id;
List<object> result = new List<object>();
var list = paperModule.GetExaminationPaperPageModule(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.PaperId,
item.PaperName,
item.CreateTimeStr,
item.CreateByName,
});
}
pageModel.Count = rowsCount;
pageModel.PageData = result;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 添加修改试卷
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetPaper()
{
var extModel = new RB_Examination_Paper_ViewModel()
{
PaperId = base.ParmJObj.GetInt("PaperId"),
PaperName = base.ParmJObj.GetStringValue("PaperName"),
QuestionBandIds = base.ParmJObj.GetStringValue("QuestionBandIds"),
DifficultyType=(DifficultyTypeEnum)base.ParmJObj.GetInt("DifficultyType"),
CreateBy = UserInfo.Id,
CreateTime = DateTime.Now,
Group_Id = base.UserInfo.Group_Id,
};
extModel.GroupList = new List<RB_Examination_Group_ViewModel>();
string groups = base.ParmJObj.GetStringValue("GroupList");
if (!string.IsNullOrEmpty(groups))
{
JArray jarray = JArray.Parse(groups);
if (jarray != null && jarray.Count > 0)
{
int gSortNum = 0;
foreach (var jItem in jarray)
{
JObject jobj = JObject.Parse(jItem.ToString());
RB_Examination_Group_ViewModel gModel = new RB_Examination_Group_ViewModel()
{
GId = jobj.GetInt("GId"),
PaperId = jobj.GetInt("PaperId"),
GroupName = jobj.GetStringValue("GroupName"),
QuestionTypeId = jobj.GetInt("QuestionTypeId"),
QuestionTypeKey = jobj.GetStringValue("QuestionTypeKey"),
GSortNum= gSortNum,
DetailsList = new List<RB_Examination_Details_ViewModel>(),
};
gSortNum++;
string details = jobj.GetStringValue("DetailsList");
if (!string.IsNullOrEmpty(details))
{
JArray subArray = JArray.Parse(details);
int dSortNum = 0;
foreach (var sItem in subArray)
{
JObject sObj = JObject.Parse(sItem.ToString());
var detailModel = new RB_Examination_Details_ViewModel()
{
Id = sObj.GetInt("Id"),
PaperId = sObj.GetInt("PaperId"),
BankId = sObj.GetInt("BankId"),
QuestionId = sObj.GetInt("QuestionId"),
Title = sObj.GetStringValue("Title"),
QuestionContent = sObj.GetStringValue("QuestionContent"),
DifficultyType = (DifficultyTypeEnum)sObj.GetInt("DifficultyType"),
AnswerParse = sObj.GetStringValue("AnswerParse"),
QuestionTypeId = sObj.GetInt("QuestionTypeId"),
QuestionTypeKey = sObj.GetStringValue("QuestionTypeKey"),
Knowledge = sObj.GetStringValue("Knowledge"),
CreateBy = base.UserInfo.Id,
CreateTime = DateTime.Now,
UpdateBy = base.UserInfo.Id,
UpdateTime = DateTime.Now,
IsUpdateJobExam = sObj.GetInt("IsUpdateJobExam"),
Status = Common.Enum.DateStateEnum.Normal,
SortNum = dSortNum,
Answer = sObj.GetStringValue("Answer"),
IsMutex = sObj.GetInt("IsMutex"),
Category = (QuestionCategoryEnum)sObj.GetInt("Category"),
LevelType = (LevelTypeEnum)sObj.GetInt("LevelType"),
Score = sObj.GetDecimal("Score"),
};
dSortNum++;
gModel.DetailsList.Add(detailModel);
}
}
extModel.GroupList.Add(gModel);
}
}
}
bool flag = paperModule.SetExaminationPaperModule(extModel);
return flag ? ApiResult.Success(data: extModel) : ApiResult.Failed();
}
/// <summary>
/// 根据编号获取试卷信息
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetPaper()
{
var PaperId = base.ParmJObj.GetInt("PaperId");
var model = paperModule.GetExaminationPaperModule(PaperId);
return ApiResult.Success(data: model);
}
/// <summary>
/// 根据编号删除试卷题目
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult DeletePaperQuestion()
{
var PaperId = base.ParmJObj.GetInt("PaperId");
var model = paperModule.RemoveExaminationDetailsModule(PaperId);
return ApiResult.Success(data: model);
}
}
}
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
<ProjectReference Include="..\Edu.Module.Course\Edu.Module.Course.csproj" /> <ProjectReference Include="..\Edu.Module.Course\Edu.Module.Course.csproj" />
<ProjectReference Include="..\Edu.Module.Duty\Edu.Module.Duty.csproj" /> <ProjectReference Include="..\Edu.Module.Duty\Edu.Module.Duty.csproj" />
<ProjectReference Include="..\Edu.Module.EduTask\Edu.Module.EduTask.csproj" /> <ProjectReference Include="..\Edu.Module.EduTask\Edu.Module.EduTask.csproj" />
<ProjectReference Include="..\Edu.Module.Exam\Edu.Module.Exam.csproj" />
<ProjectReference Include="..\Edu.Module.Finance\Edu.Module.Finance.csproj" /> <ProjectReference Include="..\Edu.Module.Finance\Edu.Module.Finance.csproj" />
<ProjectReference Include="..\Edu.Module.OKR\Edu.Module.OKR.csproj" /> <ProjectReference Include="..\Edu.Module.OKR\Edu.Module.OKR.csproj" />
<ProjectReference Include="..\Edu.Module.Public\Edu.Module.Public.csproj" /> <ProjectReference Include="..\Edu.Module.Public\Edu.Module.Public.csproj" />
......
...@@ -68,6 +68,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.EduTask", "Edu.M ...@@ -68,6 +68,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.EduTask", "Edu.M
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.QYWeChat", "Edu.Module.QYWeChat\Edu.Module.QYWeChat.csproj", "{00E05F5A-A5B7-46ED-AE5F-9D54D67FA78F}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.QYWeChat", "Edu.Module.QYWeChat\Edu.Module.QYWeChat.csproj", "{00E05F5A-A5B7-46ED-AE5F-9D54D67FA78F}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Edu.Module.Exam", "Edu.Module.Exam\Edu.Module.Exam.csproj", "{81C24D63-1109-4476-99AB-590EF54972E5}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
...@@ -166,6 +168,10 @@ Global ...@@ -166,6 +168,10 @@ Global
{00E05F5A-A5B7-46ED-AE5F-9D54D67FA78F}.Debug|Any CPU.Build.0 = Debug|Any CPU {00E05F5A-A5B7-46ED-AE5F-9D54D67FA78F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00E05F5A-A5B7-46ED-AE5F-9D54D67FA78F}.Release|Any CPU.ActiveCfg = Release|Any CPU {00E05F5A-A5B7-46ED-AE5F-9D54D67FA78F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00E05F5A-A5B7-46ED-AE5F-9D54D67FA78F}.Release|Any CPU.Build.0 = Release|Any CPU {00E05F5A-A5B7-46ED-AE5F-9D54D67FA78F}.Release|Any CPU.Build.0 = Release|Any CPU
{81C24D63-1109-4476-99AB-590EF54972E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{81C24D63-1109-4476-99AB-590EF54972E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{81C24D63-1109-4476-99AB-590EF54972E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{81C24D63-1109-4476-99AB-590EF54972E5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
...@@ -192,6 +198,7 @@ Global ...@@ -192,6 +198,7 @@ Global
{43408243-8E36-4F9E-84C0-998CE383EC53} = {7AC0A4EC-3215-4FF2-96DC-DE8325ED6915} {43408243-8E36-4F9E-84C0-998CE383EC53} = {7AC0A4EC-3215-4FF2-96DC-DE8325ED6915}
{FEDB8D19-2C7E-4393-8D91-332256EC89CC} = {7AC0A4EC-3215-4FF2-96DC-DE8325ED6915} {FEDB8D19-2C7E-4393-8D91-332256EC89CC} = {7AC0A4EC-3215-4FF2-96DC-DE8325ED6915}
{00E05F5A-A5B7-46ED-AE5F-9D54D67FA78F} = {7AC0A4EC-3215-4FF2-96DC-DE8325ED6915} {00E05F5A-A5B7-46ED-AE5F-9D54D67FA78F} = {7AC0A4EC-3215-4FF2-96DC-DE8325ED6915}
{81C24D63-1109-4476-99AB-590EF54972E5} = {7AC0A4EC-3215-4FF2-96DC-DE8325ED6915}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8763B446-FAB1-46BF-9743-F2628533241B} SolutionGuid = {8763B446-FAB1-46BF-9743-F2628533241B}
......
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