20220516 实名制定时器优化、考勤导入、考试接口调整
This commit is contained in:
parent
fce7d98592
commit
15256b5c7c
|
@ -30,7 +30,7 @@ namespace BLL
|
|||
}
|
||||
}
|
||||
request.Headers.Add("token", "AF17168B-87BD-4GLY-1111-F0A0A1158F9B");
|
||||
request.Timeout = 5000; /// 设置5秒超时
|
||||
request.Timeout = 20000; /// 设置5秒超时
|
||||
if (!string.IsNullOrEmpty(data))
|
||||
{
|
||||
Stream RequestStream = request.GetRequestStream();
|
||||
|
@ -93,8 +93,7 @@ namespace BLL
|
|||
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
request.Method = string.IsNullOrEmpty(method) ? "GET" : method;
|
||||
request.ContentType = string.IsNullOrEmpty(contenttype) ? "application/json;charset=utf-8" : contenttype;
|
||||
request.Timeout = 5000; /// 设置5秒超时
|
||||
request.ContentType = string.IsNullOrEmpty(contenttype) ? "application/json;charset=utf-8" : contenttype;
|
||||
if (header != null)
|
||||
{
|
||||
foreach (var i in header.Keys)
|
||||
|
@ -163,7 +162,7 @@ namespace BLL
|
|||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
request.Method = string.IsNullOrEmpty(method) ? "GET" : method;
|
||||
request.ContentType = string.IsNullOrEmpty(contenttype) ? "application/json;charset=utf-8" : contenttype;
|
||||
request.Timeout = 5000; /// 设置5秒超时
|
||||
request.Timeout = 20000; /// 设置5秒超时
|
||||
if (header != null)
|
||||
{
|
||||
foreach (var i in header.Keys)
|
||||
|
|
|
@ -66,7 +66,7 @@ namespace BLL
|
|||
returnItem.TestPlanName = getTestP.PlanName;
|
||||
returnItem.TestPlanManId = getTestP.PlanManId;
|
||||
returnItem.TestPlanManName = UserService.GetUserNameByUserId(getTestP.PlanManId);
|
||||
returnItem.TestPlanDate = string.Format("{0:yyyy-MM-dd HH:mm}", getTestP.PlanDate);
|
||||
returnItem.TestPlanDate = getTestP.PlanDate.HasValue ? string.Format("{0:yyyy-MM-dd HH:mm}", getTestP.PlanDate) : "";
|
||||
returnItem.TestStartTime = string.Format("{0:yyyy-MM-dd HH:mm}", getTestP.TestStartTime);
|
||||
returnItem.TestEndTime = string.Format("{0:yyyy-MM-dd HH:mm}", getTestP.TestEndTime);
|
||||
returnItem.Duration = getTestP.Duration;
|
||||
|
@ -81,7 +81,10 @@ namespace BLL
|
|||
returnItem.WorkPostIds = getTestP.WorkPostIds;
|
||||
returnItem.WorkPostNames = WorkPostService.getWorkPostNamesWorkPostIds(getTestP.WorkPostIds);
|
||||
returnItem.States = getTestP.States;
|
||||
returnItem.QRCodeUrl = getTestP.QRCodeUrl.Replace('\\', '/');
|
||||
if (!string.IsNullOrEmpty(getTestP.QRCodeUrl))
|
||||
{
|
||||
returnItem.QRCodeUrl = getTestP.QRCodeUrl.Replace('\\', '/');
|
||||
}
|
||||
returnItem.TrainingPlanId = getTestP.PlanId;
|
||||
}
|
||||
return returnItem;
|
||||
|
|
|
@ -63,7 +63,8 @@ namespace BLL
|
|||
}
|
||||
if (!string.IsNullOrEmpty(workPostIds))
|
||||
{
|
||||
getPersonList = getPersonList.Where(x => workPostIds.Contains(x.WorkPostId));
|
||||
List<string> wIds = Funs.GetStrListByStr(workPostIds, ',');
|
||||
getPersonList = getPersonList.Where(x => wIds.Contains(x.WorkPostId));
|
||||
}
|
||||
if (ckTrain)
|
||||
{
|
||||
|
|
|
@ -11,19 +11,15 @@ namespace BLL
|
|||
/// <summary>
|
||||
/// 监视组件
|
||||
/// </summary>
|
||||
private static Timer messageTimer;
|
||||
// private static Timer messageTimer;
|
||||
|
||||
/// <summary>
|
||||
/// 启动监视器,不一定能成功,根据系统设置决定对监视器执行的操作 系统启动5分钟
|
||||
/// </summary>
|
||||
public static void StartMonitor()
|
||||
{
|
||||
int adTimeJ = Funs.GetNewInt(ConfigurationManager.AppSettings["Intervaltime"]) ?? 30;
|
||||
//var getSynchroSet = Funs.DB.RealName_SynchroSet.FirstOrDefault();
|
||||
//if (getSynchroSet != null && getSynchroSet.Intervaltime.HasValue)
|
||||
//{
|
||||
// adTimeJ = getSynchroSet.Intervaltime.Value;
|
||||
//}
|
||||
public static void StartMonitor(string jtProCode)
|
||||
{
|
||||
int adTimeJ = Funs.GetNewInt(ConfigurationManager.AppSettings["Intervaltime"]) ?? 30;
|
||||
Timer messageTimer = new Timer();
|
||||
if (messageTimer != null)
|
||||
{
|
||||
messageTimer.Stop();
|
||||
|
@ -36,7 +32,8 @@ namespace BLL
|
|||
{
|
||||
AutoReset = true
|
||||
};
|
||||
messageTimer.Elapsed += new ElapsedEventHandler(AdUserInProcess);
|
||||
messageTimer.Elapsed += (sender, args) => AdUserInProcess(sender, jtProCode);
|
||||
//messageTimer.Elapsed += new ElapsedEventHandler(AdUserInProcess);
|
||||
messageTimer.Interval = 1000 * 60 * adTimeJ;// 60分钟 60000 * adTimeJ;
|
||||
messageTimer.Start();
|
||||
}
|
||||
|
@ -47,34 +44,45 @@ namespace BLL
|
|||
/// </summary>
|
||||
/// <param name="sender">Timer组件</param>
|
||||
/// <param name="e">事件参数</param>
|
||||
private static void AdUserInProcess(object sender, ElapsedEventArgs e)
|
||||
public static void AdUserInProcess(object sender, string jtProCode)
|
||||
{
|
||||
try
|
||||
{
|
||||
SynchroSetService.PushCollCompany();
|
||||
var getRProjects = from x in Funs.DB.RealName_Project
|
||||
select x;
|
||||
if (getRProjects.Count() > 0)
|
||||
if (!string.IsNullOrEmpty(jtProCode))
|
||||
{
|
||||
foreach (var item in getRProjects)
|
||||
{
|
||||
var getSynchroSet = Funs.DB.RealName_SynchroSet.FirstOrDefault(x => x.ProCode == item.JTproCode);
|
||||
if (getSynchroSet != null && !string.IsNullOrEmpty(item.JTproCode))
|
||||
{
|
||||
SynchroSetService.PushProCollCompany(item.JTproCode);
|
||||
//SynchroSetService.PushCollTeam(item.ProCode);
|
||||
//SynchroSetService.getCollTeam(item.ProCode);
|
||||
SynchroSetService.PushPersons(Const.BtnAdd, item.JTproCode, null);
|
||||
SynchroSetService.PushPersons(Const.BtnModify, item.JTproCode, null);
|
||||
SynchroSetService.PushAttendance(item.JTproCode);
|
||||
SynchroSetService.updatePersonsExitTime(item.JTproCode);
|
||||
}
|
||||
}
|
||||
SynchroSetService.PushProCollCompany(jtProCode);
|
||||
SynchroSetService.PushCollTeam(jtProCode);
|
||||
SynchroSetService.getCollTeam(jtProCode);
|
||||
SynchroSetService.PushPersons(Const.BtnAdd, jtProCode, null);
|
||||
SynchroSetService.PushPersons(Const.BtnModify, jtProCode, null);
|
||||
SynchroSetService.PushAttendance(jtProCode);
|
||||
SynchroSetService.updatePersonsExitTime(jtProCode);
|
||||
}
|
||||
|
||||
//var getRProjects = from x in Funs.DB.RealName_Project
|
||||
// select x;
|
||||
//if (getRProjects.Count() > 0)
|
||||
//{
|
||||
// foreach (var item in getRProjects)
|
||||
// {
|
||||
// var getSynchroSet = Funs.DB.RealName_SynchroSet.FirstOrDefault(x => x.ProCode == item.JTproCode);
|
||||
// if (getSynchroSet != null && !string.IsNullOrEmpty(item.JTproCode))
|
||||
// {
|
||||
// SynchroSetService.PushProCollCompany(item.JTproCode);
|
||||
// //SynchroSetService.PushCollTeam(item.ProCode);
|
||||
// //SynchroSetService.getCollTeam(item.ProCode);
|
||||
// SynchroSetService.PushPersons(Const.BtnAdd, item.JTproCode, null);
|
||||
// SynchroSetService.PushPersons(Const.BtnModify, item.JTproCode, null);
|
||||
// SynchroSetService.PushAttendance(item.JTproCode);
|
||||
// SynchroSetService.updatePersonsExitTime(item.JTproCode);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
StartMonitor();
|
||||
StartMonitor(jtProCode);
|
||||
ErrLogInfo.WriteLog(ex, "数据接口定时器", "RealNameMonitorService.AdUserInProcess");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,6 +56,11 @@ namespace BLL
|
|||
}
|
||||
#endregion
|
||||
|
||||
public static List<Model.RealName_Project> GetRealNameProject()
|
||||
{
|
||||
return (from x in Funs.DB.RealName_Project select x).ToList();
|
||||
}
|
||||
|
||||
#region 项目基础数据下拉框
|
||||
/// <summary>
|
||||
/// 表下拉框
|
||||
|
@ -1426,7 +1431,14 @@ namespace BLL
|
|||
|
||||
addTeam(getData.Select(x => x.TeamGroupId).Distinct().ToList(), newToken);
|
||||
getTeam(proCode, newToken);
|
||||
addPerson(getData.Select(x => x.PersonId).Distinct().ToList(), newToken);
|
||||
|
||||
var getPersonS = getData.Select(x => x.idcardNumber).Distinct().ToList();
|
||||
foreach (var pitem in getPersonS)
|
||||
{
|
||||
PushPersonsByIdentityCard(Const.BtnAdd, proCode, pitem);
|
||||
PushPersonsByIdentityCard(Const.BtnModify, proCode, pitem);
|
||||
}
|
||||
|
||||
pushContent = JsonConvert.SerializeObject(listObject);
|
||||
var returndata = BLL.APIGetHttpService.OutsideHttp(url, "POST", null, newToken, pushContent);
|
||||
if (!string.IsNullOrEmpty(returndata))
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
namespace FineUIPro.Web
|
||||
{
|
||||
using BLL;
|
||||
using Model;
|
||||
using System;
|
||||
using System.Configuration;
|
||||
using System.Globalization;
|
||||
using System.Text;
|
||||
using BLL;
|
||||
using Model;
|
||||
using System.Timers;
|
||||
|
||||
public class Global : System.Web.HttpApplication
|
||||
{
|
||||
|
@ -39,11 +40,15 @@
|
|||
|
||||
////实名制同步定时器
|
||||
try
|
||||
{
|
||||
{
|
||||
BLL.RealNameMonitorService.StartInOutMonitor();
|
||||
if (ConfigurationManager.AppSettings["EnableRealName"] == "True")
|
||||
{
|
||||
BLL.RealNameMonitorService.StartMonitor();
|
||||
var getProjects = SynchroSetService.GetRealNameProject();
|
||||
foreach (var item in getProjects)
|
||||
{
|
||||
BLL.RealNameMonitorService.StartMonitor(item.JTproCode);
|
||||
}
|
||||
}
|
||||
BLL.RealNameMonitorService.StartInOutMonitor();
|
||||
BLL.LogService.AddSys_Log(sysUser, string.Empty, string.Empty, string.Empty, "实名制同步定时器启动成功!");
|
||||
|
|
|
@ -409,16 +409,20 @@ namespace FineUIPro.Web.HSSE.SitePerson
|
|||
{
|
||||
foreach (var item in viewCheckings)
|
||||
{
|
||||
Model.SitePerson_Checking newChecking = new Model.SitePerson_Checking
|
||||
var getCheck = Funs.DB.SitePerson_Checking.FirstOrDefault(x => x.CheckingId == item.CheckingId);
|
||||
if (getCheck == null)
|
||||
{
|
||||
CheckingId = item.CheckingId,
|
||||
ProjectId = item.ProjectId,
|
||||
IdentityCard = item.IdentityCard,
|
||||
IntoOutTime = item.IntoOutTime,
|
||||
IntoOut = item.IntoOut,
|
||||
PersonId = item.PersonId
|
||||
};
|
||||
BLL.SitePerson_CheckingService.AddPersonInfo(newChecking);
|
||||
Model.SitePerson_Checking newChecking = new Model.SitePerson_Checking
|
||||
{
|
||||
CheckingId = item.CheckingId,
|
||||
ProjectId = item.ProjectId,
|
||||
IdentityCard = item.IdentityCard,
|
||||
IntoOutTime = item.IntoOutTime,
|
||||
IntoOut = item.IntoOut,
|
||||
PersonId = item.PersonId
|
||||
};
|
||||
BLL.SitePerson_CheckingService.AddPersonInfo(newChecking);
|
||||
}
|
||||
}
|
||||
//int a = viewCheckings.Count();
|
||||
//for (int i = 0; i < a; i++)
|
||||
|
|
|
@ -888,7 +888,7 @@
|
|||
}
|
||||
})
|
||||
</script>
|
||||
<script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=3.0&ak=mGX1cqaDru89SYm6Pmbj0oxxghc1otuv"></script>
|
||||
<script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=3.0&ak=Lma56vCk88x46KEXSyc2cIXk6kT2W7KB"></script>
|
||||
<script type="text/javascript">
|
||||
function randomData() {
|
||||
return Math.round(Math.random() * 1000);
|
||||
|
|
|
@ -379,6 +379,6 @@ namespace WebAPI.Controllers
|
|||
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,384 @@
|
|||
using BLL;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace WebAPI.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
/// 考试-考生记录信息
|
||||
/// </summary>
|
||||
public class TestingController : ApiController
|
||||
{
|
||||
#region 根据TestPlanId获取考生及试卷列表
|
||||
/// <summary>
|
||||
/// 根据TestPlanId获取考生及试卷列表
|
||||
/// </summary>
|
||||
/// <param name="testPlanId"></param>
|
||||
/// <returns>考试人员</returns>
|
||||
public Model.ResponeData getTestRecordListByTestPlanId(string testPlanId)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
responeData.data = APITestRecordService.getTestRecordListByTestPlanId(testPlanId);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
return responeData;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取考生
|
||||
/// </summary>
|
||||
/// <param name="testPlanId"></param>
|
||||
/// <returns></returns>
|
||||
public Model.ResponeData getTestRecordTestManByTestPlanId(string testPlanId)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
responeData.data = APITestRecordService.getTestRecordTestManByTestPlanId(testPlanId);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 根据试卷ID获取试卷记录详细
|
||||
/// <summary>
|
||||
/// 根据试卷ID获取试卷记录详细
|
||||
/// </summary>
|
||||
/// <param name="testRecordId"></param>
|
||||
/// <returns>试卷详细</returns>
|
||||
public Model.ResponeData getTestRecordByTestRecordId(string testRecordId)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
responeData.data = APITestRecordService.getTestRecordByTestRecordId(testRecordId);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 根据TestRecordId获取试卷题目列表
|
||||
/// <summary>
|
||||
/// 根据TestRecordId获取试卷题目列表
|
||||
/// </summary>
|
||||
/// <param name="testRecordId"></param>
|
||||
/// <param name="pageIndex">页码</param>
|
||||
/// <returns>试卷题目列表</returns>
|
||||
public Model.ResponeData getTestRecordItemListByTestRecordId(string testRecordId, int pageIndex)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
var getDataLists = APITestRecordService.geTestRecordItemListByTestRecordId(testRecordId, pageIndex);
|
||||
int pageCount = APITestRecordService.geTestRecordItemCount;
|
||||
responeData.data = new { pageCount, getDataLists };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 获取当前试卷的答题倒计时
|
||||
/// <summary>
|
||||
/// 获取当前试卷的答题倒计时
|
||||
/// </summary>
|
||||
/// <param name="testRecordId"></param>
|
||||
/// <returns></returns>
|
||||
public Model.ResponeData getTestTimesByTestRecordId(string testRecordId)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
int mTime = 0;
|
||||
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||
{
|
||||
var getTestRecord = db.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId);
|
||||
if (getTestRecord != null)
|
||||
{
|
||||
DateTime startTime = DateTime.Now;
|
||||
if (getTestRecord.TestStartTime.HasValue)
|
||||
{
|
||||
startTime = getTestRecord.TestStartTime.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
getTestRecord.TestStartTime = startTime;
|
||||
db.SubmitChanges();
|
||||
}
|
||||
mTime = Convert.ToInt32((getTestRecord.TestStartTime.Value.AddMinutes(getTestRecord.Duration) - DateTime.Now).TotalSeconds);
|
||||
}
|
||||
}
|
||||
responeData.data = new { mTime };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 根据TestRecordItemId获取试卷题目详细
|
||||
/// <summary>
|
||||
/// 根据TestRecordItemId获取试卷题目详细
|
||||
/// </summary>
|
||||
/// <param name="testRecordItemId"></param>
|
||||
/// <returns>考试人员</returns>
|
||||
public Model.ResponeData getTestRecordItemByTestRecordItemId(string testRecordItemId)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
responeData.data = APITestRecordService.geTestRecordItemByTestRecordItemId(testRecordItemId);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 根据ProjectId、PersonId获取当前人试卷列表
|
||||
/// <summary>
|
||||
/// 根据ProjectId、PersonId获取当前人试卷列表
|
||||
/// </summary>
|
||||
/// <param name="projectId">项目ID</param>
|
||||
/// <param name="personId">人员ID(null查全部)</param>
|
||||
/// <param name="pageIndex">页码</param>
|
||||
/// <returns>考试记录列表</returns>
|
||||
public Model.ResponeData getTrainingTestRecordListByProjectIdPersonId(string projectId, string personId, int pageIndex)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
personId = PersonService.GetPersonIdByUserId(personId);
|
||||
var getDataLists = APITestRecordService.getTrainingTestRecordListByProjectIdPersonId(projectId, personId);
|
||||
int pageCount = getDataLists.Count;
|
||||
if (pageCount > 0 && pageIndex > 0)
|
||||
{
|
||||
getDataLists = getDataLists.OrderByDescending(x => x.TestStartTime).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
|
||||
}
|
||||
responeData.data = new { pageCount, getDataLists };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 根据ProjectId获取所有考试记录列表
|
||||
/// <summary>
|
||||
/// 根据ProjectId获取所有考试记录列表
|
||||
/// </summary>
|
||||
/// <param name="projectId">项目ID</param>
|
||||
/// <param name="pageIndex">页码</param>
|
||||
/// <returns>考试记录列表</returns>
|
||||
public Model.ResponeData getTrainingTestRecordListByProjectId(string projectId, int pageIndex)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
var getDataLists = APITestRecordService.getTrainingTestRecordListByProjectId(projectId, null, null, null, null);
|
||||
int pageCount = getDataLists.Count;
|
||||
if (pageCount > 0 && pageIndex > 0)
|
||||
{
|
||||
getDataLists = getDataLists.OrderByDescending(x => x.TestStartTime).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
|
||||
}
|
||||
responeData.data = new { pageCount, getDataLists };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 根据ProjectId获取所有考试记录列表
|
||||
/// <summary>
|
||||
/// 根据ProjectId获取所有考试记录列表
|
||||
/// </summary>
|
||||
/// <param name="projectId">项目ID</param>
|
||||
/// <param name="unitId">单位ID</param>
|
||||
/// <param name="workPostId">岗位ID</param>
|
||||
/// <param name="strPass">0-未通过;1通过;空所有</param>
|
||||
/// <param name="pageIndex">页码</param>
|
||||
/// <returns>考试记录列表</returns>
|
||||
public Model.ResponeData getTrainingTestRecordListQuery(string projectId, string unitId, string workPostId, string strPass, int pageIndex)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
var getDataLists = APITestRecordService.getTrainingTestRecordListByProjectId(projectId, unitId, workPostId, strPass, string.Empty);
|
||||
int pageCount = getDataLists.Count;
|
||||
if (pageCount > 0 && pageIndex > 0)
|
||||
{
|
||||
getDataLists = getDataLists.OrderByDescending(x => x.TestStartTime).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
|
||||
}
|
||||
responeData.data = new { pageCount, getDataLists };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 根据ProjectId获取所有考试记录列表
|
||||
/// <summary>
|
||||
/// 根据ProjectId获取所有考试记录列表
|
||||
/// </summary>
|
||||
/// <param name="projectId">项目ID</param>
|
||||
/// <param name="unitId">单位ID</param>
|
||||
/// <param name="workPostId">岗位ID</param>
|
||||
/// <param name="strPass">0-未通过;1通过;空所有</param>
|
||||
/// <param name="strParam">参数</param>
|
||||
/// <param name="pageIndex">页码</param>
|
||||
/// <returns>考试记录列表</returns>
|
||||
public Model.ResponeData getTrainingTestRecordListQuery(string projectId, string unitId, string workPostId, string strPass,string strParam, int pageIndex)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
var getDataLists = APITestRecordService.getTrainingTestRecordListByProjectId(projectId, unitId, workPostId, strPass, strParam);
|
||||
int pageCount = getDataLists.Count;
|
||||
if (pageCount > 0 && pageIndex > 0)
|
||||
{
|
||||
getDataLists = getDataLists.OrderByDescending(x => x.TestStartTime).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
|
||||
}
|
||||
responeData.data = new { pageCount, getDataLists };
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 根据TestRecordItemId、selectedItem 考生答题
|
||||
/// <summary>
|
||||
/// 根据TestRecordItemId、selectedItem 考生答题
|
||||
/// </summary>
|
||||
/// <param name="testRecordItemId">题目ID</param>
|
||||
/// <param name="selectedItem">选项</param>
|
||||
public Model.ResponeData getTestRecordItemAnswerBySelectedItem(string testRecordItemId, string selectedItem)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
var getItem = TestRecordItemService.GetTestRecordItemTestRecordItemId(testRecordItemId);
|
||||
if (getItem != null)
|
||||
{
|
||||
//更新没有结束时间且超时的考试记录
|
||||
int closeCount = TestRecordService.UpdateTestEndTimeNull(getItem.TestRecordId);
|
||||
if (closeCount > 0)
|
||||
{
|
||||
responeData.code = 2;
|
||||
responeData.message = "本次考试已结束,系统自动交卷!";
|
||||
}
|
||||
else
|
||||
{
|
||||
APITestRecordService.getTestRecordItemAnswerBySelectedItem(getItem, selectedItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = "试题有问题!";
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 交卷
|
||||
/// <summary>
|
||||
/// 交卷
|
||||
/// </summary>
|
||||
/// <param name="testRecordId">试卷ID</param>
|
||||
public Model.ResponeData getSubmitTestRecordByTestRecordId(string testRecordId)
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
var getTestRecord = Funs.DB.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId);
|
||||
if (getTestRecord != null)
|
||||
{
|
||||
string returnTestRecordId = string.Empty;
|
||||
////考试分数
|
||||
decimal getTestScores = APITestRecordService.getSubmitTestRecord(getTestRecord);
|
||||
////及格分数
|
||||
int getPassScores = SysConstSetService.getPassScore();
|
||||
if (getTestScores <= getPassScores)
|
||||
{
|
||||
int testCount = Funs.DB.Training_TestRecord.Where(x => x.TestPlanId == getTestRecord.TestPlanId && x.TestManId == getTestRecord.TestManId).Count();
|
||||
if (testCount < 2)
|
||||
{
|
||||
////重新生成一条考试记录 以及考试试卷
|
||||
returnTestRecordId = APITestRecordService.getResitTestRecord(getTestRecord);
|
||||
responeData.message = "考试不合格!您的成绩为:【" + getTestScores.ToString() + "】,您将进入补考。";
|
||||
}
|
||||
else
|
||||
{
|
||||
APITestRecordService.updateAll(getTestRecord.TestPlanId);
|
||||
responeData.message = "考试不合格!您的成绩为:【" + getTestScores.ToString() + "】,请再次参加培训后补考。";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
APITestRecordService.updateAll(getTestRecord.TestPlanId);
|
||||
responeData.message = "恭喜考试通过!您的成绩为:【" + getTestScores.ToString() + "】。";
|
||||
}
|
||||
|
||||
responeData.data = new { getTestScores, getPassScores, returnTestRecordId };
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
|
||||
return responeData;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -179,6 +179,7 @@
|
|||
<Compile Include="Controllers\FaceController.cs" />
|
||||
<Compile Include="Controllers\DoorServerController.cs" />
|
||||
<Compile Include="Controllers\HJGL\GetHJDataController.cs" />
|
||||
<Compile Include="Controllers\HSSE\TestingController.cs" />
|
||||
<Compile Include="Controllers\Person\PersonCheckController.cs" />
|
||||
<Compile Include="Controllers\CQMS\CheckEquipmentController.cs" />
|
||||
<Compile Include="Controllers\CQMS\CheckListController.cs" />
|
||||
|
|
Loading…
Reference in New Issue