287 lines
16 KiB
C#
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, "发生错误,请联系管理员。"));
|
|
}
|
|
}
|
|
}
|
|
}
|