CompetitionAPI_dotnet/CompetitionAPI/Controllers/unity/EndExamController.cs

287 lines
16 KiB
C#

using Competition.Common.Util;
using CompetitionAPI.api.unity;
using CompetitionAPI.Util;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace CompetitionAPI.Controllers.unity
{
[Route("unity/[controller]")]
[ApiController]
public class EndExamController : Controller
{
Competition.Mysql.BLL.pow_user_exam user_exam_bll = new Competition.Mysql.BLL.pow_user_exam();
Competition.Mysql.BLL.pow_exam exam_bll = new Competition.Mysql.BLL.pow_exam();
Competition.Mysql.BLL.pow_achievement achievement_bll = new Competition.Mysql.BLL.pow_achievement();
Competition.Mysql.BLL.pow_achievement_details achievement_details_bll = new Competition.Mysql.BLL.pow_achievement_details();
Competition.Mysql.BLL.pow_config config_bll = new Competition.Mysql.BLL.pow_config();
Competition.Mysql.BLL.pow_train_record record_bll = new Competition.Mysql.BLL.pow_train_record();
Competition.Mysql.BLL.admin_user user_bll = new Competition.Mysql.BLL.admin_user();
public EndExamController()
{
}
/// <summary>
/// 结束考试接口
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
[Authorize]
[HttpPost]
[APIFilter]
public JsonResult Index([FromForm] EndExamRequest req)
{
try
{
var config_model = config_bll.GetModelList("").FirstOrDefault();
if (config_model == null)
{
return Json(Tool.GetJsonWithCode(APICode.Fail, "配置信息不存在"));
}
var achievement_model = achievement_bll.GetModelList(" ExamId='" + req.ExamId + "' and UserId='" + req.UserId + "' ").FirstOrDefault();
if (achievement_model == null)
{
return Json(Tool.GetJsonWithCode(APICode.Fail, "考生成绩信息不存在"));
}
var user_exam_model = user_exam_bll.GetModelList(" ExamId='" + req.ExamId + "' and UserId='" + req.UserId + "' ").FirstOrDefault();
var add_achievement_details_list = new List<Competition.Mysql.Model.pow_achievement_details>();
if (user_exam_model != null)
{
user_exam_model.EndExamTime = DateTime.Now;
user_exam_model.Status = "已结束";
if (user_exam_model.EnclosureIsScore != "2")
{
var item_name = "不放置围栏分值";
var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault();
if (achievement_details_model == null)
{
var enclosure_is_score = decimal.Parse(user_exam_model.EnclosureIsScore);
var points_score = 2 - enclosure_is_score;
achievement_model.TotalScore = achievement_model.TotalScore + enclosure_is_score;
if (achievement_model.TotalScore < 0)
{
achievement_model.TotalScore = 0;
}
var details_model = new Competition.Mysql.Model.pow_achievement_details();
details_model.DetailsId = Guid.NewGuid().ToString("N");
details_model.AchievementId = achievement_model.AchievementId;
details_model.ItemName = "不放置围栏分值";
details_model.ItemizedScore = -points_score;
details_model.Type = "围栏";
details_model.CreateTime = DateTime.Now;
details_model.TotalScore = 2;
add_achievement_details_list.Add(details_model);
}
}
else
{
var item_name = "不放置围栏分值";
var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault();
if (achievement_details_model == null)
{
var enclosure_is_score = decimal.Parse(user_exam_model.EnclosureIsScore);
achievement_model.TotalScore = achievement_model.TotalScore + enclosure_is_score;
if (achievement_model.TotalScore < 0)
{
achievement_model.TotalScore = 0;
}
var details_model = new Competition.Mysql.Model.pow_achievement_details();
details_model.DetailsId = Guid.NewGuid().ToString("N");
details_model.AchievementId = achievement_model.AchievementId;
details_model.ItemName = "不放置围栏分值";
details_model.ItemizedScore = 2;
details_model.Type = "围栏";
details_model.CreateTime = DateTime.Now;
details_model.TotalScore = 2;
add_achievement_details_list.Add(details_model);
}
}
if (user_exam_model.LineIsScore == "1" || user_exam_model.FaultIsScore == "1")
{
var item_name = "箱门或插座未验电或验电顺序错误";
var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault();
if (achievement_details_model == null)
{
var electricity_score = decimal.Parse(config_model.ElectricityScore);
achievement_model.TotalScore = achievement_model.TotalScore - electricity_score;
if (achievement_model.TotalScore < 0)
{
achievement_model.TotalScore = 0;
}
var details_model = new Competition.Mysql.Model.pow_achievement_details();
details_model.DetailsId = Guid.NewGuid().ToString("N");
details_model.AchievementId = achievement_model.AchievementId;
details_model.ItemName = "箱门或插座未验电或验电顺序错误";
details_model.ItemizedScore = -30;
details_model.Type = "验电";
details_model.CreateTime = DateTime.Now;
details_model.TotalScore = 2;
add_achievement_details_list.Add(details_model);
}
}
else
{
var item_name = "箱门或插座未验电或验电顺序错误";
var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault();
if (achievement_details_model == null)
{
achievement_model.TotalScore = achievement_model.TotalScore + 2;
var details_model = new Competition.Mysql.Model.pow_achievement_details();
details_model.DetailsId = Guid.NewGuid().ToString("N");
details_model.AchievementId = achievement_model.AchievementId;
details_model.ItemName = "箱门或插座未验电或验电顺序错误";
details_model.ItemizedScore = 2;
details_model.Type = "验电";
details_model.CreateTime = DateTime.Now;
details_model.TotalScore = 2;
add_achievement_details_list.Add(details_model);
}
}
#region
if (user_exam_model.ClimbrodIsScore == "1")
{
var item_name = "巡检爬杆";
var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault();
if (achievement_details_model == null)
{
var electricity_score = decimal.Parse(config_model.ClimbrodScore);
achievement_model.TotalScore = achievement_model.TotalScore - electricity_score;
if (achievement_model.TotalScore < 0)
{
achievement_model.TotalScore = 0;
}
var details_model = new Competition.Mysql.Model.pow_achievement_details();
details_model.DetailsId = Guid.NewGuid().ToString("N");
details_model.AchievementId = achievement_model.AchievementId;
details_model.ItemName = "巡检爬杆";
details_model.ItemizedScore = -30;
details_model.Type = "巡检爬杆";
details_model.CreateTime = DateTime.Now;
details_model.TotalScore = 0;
add_achievement_details_list.Add(details_model);
}
}
#endregion
if (user_exam_model.IsScore == "1")
{
var item_name = "台区选择错误分值";
var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault();
if (achievement_details_model == null)
{
var select_area_score = decimal.Parse(config_model.SelectAreaScore);
achievement_model.TotalScore = achievement_model.TotalScore - select_area_score;
if (achievement_model.TotalScore < 0)
{
achievement_model.TotalScore = 0;
}
var details_model = new Competition.Mysql.Model.pow_achievement_details();
details_model.DetailsId = Guid.NewGuid().ToString("N");
details_model.AchievementId = achievement_model.AchievementId;
details_model.ItemName = "台区选择错误分值";
details_model.ItemizedScore = -30;
details_model.Type = "台区选择";
details_model.CreateTime = DateTime.Now;
details_model.TotalScore = 0;
add_achievement_details_list.Add(details_model);
}
}
if (user_exam_model.FusibleCoreIsScore == "1")
{
var item_name = "未分闸状态拉合熔芯扣分分值";
var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault();
if (achievement_details_model == null)
{
achievement_model.TotalScore = achievement_model.TotalScore - 30;
if (achievement_model.TotalScore < 0)
{
achievement_model.TotalScore = 0;
}
var details_model = new Competition.Mysql.Model.pow_achievement_details();
details_model.DetailsId = Guid.NewGuid().ToString("N");
details_model.AchievementId = achievement_model.AchievementId;
details_model.ItemName = "未分闸状态拉合熔芯扣分分值";
details_model.ItemizedScore = -30;
details_model.Type = "未分闸状态拉合熔芯";
details_model.CreateTime = DateTime.Now;
details_model.TotalScore = 0;
add_achievement_details_list.Add(details_model);
}
}
//故障算分bug临时处理
if (achievement_model.TotalScore > 95)
{
achievement_model.TotalScore = 95;
}
var record_model = new Competition.Mysql.Model.pow_train_record();
var exam_model = exam_bll.GetModel(req.ExamId);
if (exam_model != null)
{
if (exam_model.Type == "实训")
{
var user_model = user_bll.GetModel(req.UserId);
record_model = record_bll.GetModelList(string.Format(" ExamId='{0}' and UserId='{1}' ", req.ExamId, req.UserId)).FirstOrDefault();
if (record_model == null)
{
record_model = new Competition.Mysql.Model.pow_train_record();
record_model.RecordId = Guid.NewGuid().ToString("N");
record_model.ExamId = req.ExamId;
record_model.UserId = req.UserId;
record_model.RealName = user_model != null ? user_model.real_name : "";
record_model.Schedule = "100";
record_model.TrainNumber = 1;
record_model.StudyTime = DateTime.Now;
record_model.CreateTime = DateTime.Now;
}
else
{
record_model.TrainNumber = record_model.TrainNumber.Value + 1;
record_model.StudyTime = DateTime.Now;
}
}
else
{
record_model = null;
}
}
else
{
record_model = null;
}
if (user_exam_bll.OperationUpdateAllData(DateTime.Now, "已结束", user_exam_model.UserExamId, achievement_model.AchievementId, achievement_model.TotalScore, add_achievement_details_list, record_model) > 0)
{
return Json(Tool.GetJsonWithCode(APICode.Success, "结束考试成功"));
}
else
{
return Json(Tool.GetJsonWithCode(APICode.Fail, "结束考试失败"));
}
}
else
{
return Json(Tool.GetJsonWithCode(APICode.Fail, "考生考试信息不存在"));
}
}
catch (Exception ex)
{
LogHelper.WriteLog(ex.Message + ",行号:" + ex.StackTrace);
return Json(Tool.GetJsonWithCode(APICode.Fail, "发生错误,请联系管理员。"));
}
}
}
}