新增调整分接口

master
xiaochanghai 12 months ago
parent 9a2ec1ac05
commit a2349c8e9b
  1. 6
      Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs
  2. 3
      Tiobon.Core.IServices/BASE/IBaseServices.cs
  3. 2
      Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs
  4. 15
      Tiobon.Core.Services/BASE/BaseServices.cs
  5. 2
      Tiobon.Core.Services/CommonServices.cs
  6. 209
      Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs

@ -27,4 +27,10 @@ public class Ghre_ExamRecordController : BaseController<IGhre_ExamRecordServices
} }
#endregion #endregion
[HttpPost, Route("ModifyAdjustScore/{examRecordId}")]
public async Task<ServiceResult> ModifyAdjustScore(string examRecordId, [FromBody] EditGhre_ExamRecordInput edit)
{
return await _service.ModifyAdjustScore(examRecordId, edit);
}
} }

@ -130,7 +130,8 @@ namespace Tiobon.Core.IServices.BASE
Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression); Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression);
Task<List<TEntityDto>> QueryDto(Expression<Func<TEntity, bool>> whereExpression); Task<List<TEntityDto>> QueryDto(Expression<Func<TEntity, bool>> whereExpression);
Task<TEntity> QuerySingle(object objId);
Task<TEntity> QuerySingle(Expression<Func<TEntity, bool>> whereExpression);
Task<TEntityDto> QuerySingleDto(Expression<Func<TEntity, bool>> whereExpression); Task<TEntityDto> QuerySingleDto(Expression<Func<TEntity, bool>> whereExpression);
Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, string orderByFields); Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, string orderByFields);
Task<List<TResult>> Query<TResult>(Expression<Func<TEntity, TResult>> expression); Task<List<TResult>> Query<TResult>(Expression<Func<TEntity, TResult>> expression);

@ -11,5 +11,7 @@ namespace Tiobon.Core.IServices
public interface IGhre_ExamRecordServices :IBaseServices<Ghre_ExamRecord, Ghre_ExamRecordDto, InsertGhre_ExamRecordInput, EditGhre_ExamRecordInput> public interface IGhre_ExamRecordServices :IBaseServices<Ghre_ExamRecord, Ghre_ExamRecordDto, InsertGhre_ExamRecordInput, EditGhre_ExamRecordInput>
{ {
Task<ServicePageResult<Ghre_ExamRecordDto>> Query(string examId, QueryBody body); Task<ServicePageResult<Ghre_ExamRecordDto>> Query(string examId, QueryBody body);
Task<ServiceResult> ModifyAdjustScore(string examRecordId, EditGhre_ExamRecordInput edit);
} }
} }

@ -573,11 +573,22 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ
var data = await BaseDal.Query(whereExpression); var data = await BaseDal.Query(whereExpression);
return Mapper.Map(data).ToANew<List<TEntityDto>>(); return Mapper.Map(data).ToANew<List<TEntityDto>>();
} }
public virtual async Task<TEntity> QuerySingle(object objId)
public async Task<TEntityDto> QuerySingleDto(Expression<Func<TEntity, bool>> whereExpression) {
var entity = await BaseDal.QueryById(objId);
return entity;
}
public async Task<TEntity> QuerySingle(Expression<Func<TEntity, bool>> whereExpression)
{ {
var entitys = await BaseDal.Query(whereExpression); var entitys = await BaseDal.Query(whereExpression);
var entity = entitys.FirstOrDefault(); var entity = entitys.FirstOrDefault();
if (entity == null)
return default;
else return entity;
}
public async Task<TEntityDto> QuerySingleDto(Expression<Func<TEntity, bool>> whereExpression)
{
var entity = await QuerySingle(whereExpression);
if (entity == null) if (entity == null)
return default; return default;
else return Mapper.Map(entity).ToANew<TEntityDto>(); else return Mapper.Map(entity).ToANew<TEntityDto>();

@ -1062,6 +1062,8 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
case "F_OnlineExamScores": case "F_OnlineExamScores":
result.DT_Procedure.QueryProcedure = dt.Rows[0]["QueryProcedure"].ToString(); result.DT_Procedure.QueryProcedure = dt.Rows[0]["QueryProcedure"].ToString();
result.DT_Procedure.QueryProcedure += "/" + param.jsonParam.MasterId; result.DT_Procedure.QueryProcedure += "/" + param.jsonParam.MasterId;
toolbar = result.JM_PageControlT1.Toolbar.Where(x => x.fnKey == "DetailYN").FirstOrDefault();
if (toolbar != null) { toolbar.fnKey = "TBD3YN"; }
sql = $@"SELECT A.RoleId, B.RoleNo, B.RoleName sql = $@"SELECT A.RoleId, B.RoleNo, B.RoleName
FROM Ghrs_UserRole A LEFT JOIN Ghrs_Role B ON A.RoleId = B.RoleId FROM Ghrs_UserRole A LEFT JOIN Ghrs_Role B ON A.RoleId = B.RoleId

@ -8,126 +8,151 @@ using Newtonsoft.Json.Linq;
using Tiobon.Core.Common; using Tiobon.Core.Common;
using Tiobon.Core.Model; using Tiobon.Core.Model;
using Newtonsoft.Json; using Newtonsoft.Json;
using Microsoft.AspNetCore.Mvc; using System.Text.RegularExpressions;
namespace Tiobon.Core.Services namespace Tiobon.Core.Services;
/// <summary>
/// 考试记录 (服务)
/// </summary>
public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRecordDto, InsertGhre_ExamRecordInput, EditGhre_ExamRecordInput>, IGhre_ExamRecordServices
{ {
/// <summary> private readonly IBaseRepository<Ghre_ExamRecord> _dal;
/// 考试记录 (服务) //private readonly IGhre_ExamPaperServices _ghre_ExamPaperServices;
/// </summary> public Ghre_ExamRecordServices(ICaching caching,
public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRecordDto, InsertGhre_ExamRecordInput, EditGhre_ExamRecordInput>, IGhre_ExamRecordServices //IGhre_ExamPaperServices ghre_ExamPaperServices,
IBaseRepository<Ghre_ExamRecord> dal)
{ {
private readonly IBaseRepository<Ghre_ExamRecord> _dal; this._dal = dal;
public Ghre_ExamRecordServices(ICaching caching, IBaseRepository<Ghre_ExamRecord> dal) base.BaseDal = dal;
{ base._caching = caching;
this._dal = dal; //_ghre_ExamPaperServices = ghre_ExamPaperServices;
base.BaseDal = dal; }
base._caching = caching;
}
public override async Task<ServicePageResult<Ghre_ExamRecordDto>> QueryFilterPage(QueryBody filter, string condition, bool? IsEnable = true) public override async Task<ServicePageResult<Ghre_ExamRecordDto>> QueryFilterPage(QueryBody filter, string condition, bool? IsEnable = true)
{ {
if (string.IsNullOrWhiteSpace(filter.orderBy)) if (string.IsNullOrWhiteSpace(filter.orderBy))
filter.orderBy = "CreateTime1 DESC"; filter.orderBy = "CreateTime1 DESC";
if (filter.pageSize == 0) if (filter.pageSize == 0)
filter.pageSize = 10000; filter.pageSize = 10000;
var countSql = @$" SELECT COUNT(1) FROM Ghre_ExamRecord_V"; var countSql = @$" SELECT COUNT(1) FROM Ghre_ExamRecord_V";
var sql = @$" SELECT * var sql = @$" SELECT *
FROM Ghre_ExamRecord_V"; FROM Ghre_ExamRecord_V";
string conditions = " WHERE IsEnable = 1"; string conditions = " WHERE IsEnable = 1";
if (!string.IsNullOrEmpty(condition)) conditions += " AND " + condition;
if (filter.jsonParam != null)
foreach (JProperty jProperty in filter.jsonParam.Properties())
{
var name = jProperty.Name;
var value = jProperty.Value.ToString();
if (name == "page" || name == "pageSize")
continue;
if (!string.IsNullOrEmpty(condition)) conditions += " AND " + condition; if (name == "DueDate")
if (filter.jsonParam != null)
foreach (JProperty jProperty in filter.jsonParam.Properties())
{ {
var name = jProperty.Name; var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
var value = jProperty.Value.ToString(); conditions += $" AND FORMAT(DueDate, 'yyyy-MM-dd') = '{jsonParam.columnValue}'";
if (name == "page" || name == "pageSize") continue;
continue;
if (name == "DueDate") }
{ if (!string.IsNullOrWhiteSpace(value))
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value); {
conditions += $" AND FORMAT(DueDate, 'yyyy-MM-dd') = '{jsonParam.columnValue}'"; var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
continue;
} switch (jsonParam.operationKey)
if (!string.IsNullOrWhiteSpace(value))
{ {
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value); case "Include":
conditions += $" AND {name} LIKE '%{jsonParam.columnValue}%'";
switch (jsonParam.operationKey) break;
{ case "NotInclude":
case "Include": conditions += $" AND {name} NOT LIKE '%{jsonParam.columnValue}%'";
conditions += $" AND {name} LIKE '%{jsonParam.columnValue}%'"; break;
break; case "IsNull":
case "NotInclude": conditions += $" AND {name} IS NULL";
conditions += $" AND {name} NOT LIKE '%{jsonParam.columnValue}%'"; break;
break; case "NotNull":
case "IsNull": conditions += $" AND {name} IS NOT NULL";
conditions += $" AND {name} IS NULL"; break;
break; case "Equal":
case "NotNull": conditions += $" AND {name} ='{jsonParam.columnValue}'";
conditions += $" AND {name} IS NOT NULL"; break;
break; case "NotEqual":
case "Equal": conditions += $" AND {name} !='{jsonParam.columnValue}'";
conditions += $" AND {name} ='{jsonParam.columnValue}'"; break;
break; default:
case "NotEqual": break;
conditions += $" AND {name} !='{jsonParam.columnValue}'";
break;
default:
break;
}
} }
} }
}
sql += conditions; sql += conditions;
countSql += conditions; countSql += conditions;
int total = await Db.Ado.GetIntAsync(countSql); int total = await Db.Ado.GetIntAsync(countSql);
sql = "SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY " + filter.orderBy + ") NUM FROM (SELECT * FROM (" + sql + " "; sql = "SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY " + filter.orderBy + ") NUM FROM (SELECT * FROM (" + sql + " ";
sql += ") A ) B ) C"; sql += ") A ) B ) C";
sql += " WHERE NUM <= " + filter.pageNum * filter.pageSize + " AND NUM >" + (filter.pageNum - 1) * filter.pageSize; sql += " WHERE NUM <= " + filter.pageNum * filter.pageSize + " AND NUM >" + (filter.pageNum - 1) * filter.pageSize;
var entitys = await Db.Ado.SqlQueryAsync<Ghre_ExamRecordDto>(sql); var entitys = await Db.Ado.SqlQueryAsync<Ghre_ExamRecordDto>(sql);
entitys.ForEach(async x => entitys.ForEach(async x =>
{ {
x.ScoreStatus = await GetParaLabel("TrainingExamScoreStatus", x.ScoreStatus); x.ScoreStatus = await GetParaLabel("TrainingExamScoreStatus", x.ScoreStatus);
//x.CourseStatusLabel = await GetParaLabel("TrainingCourseStatus", x.CourseStatus); //x.CourseStatusLabel = await GetParaLabel("TrainingCourseStatus", x.CourseStatus);
//x.StudyStatusLabel = await GetParaLabel("TrainingStudyStatus", x.StudyStatus); //x.StudyStatusLabel = await GetParaLabel("TrainingStudyStatus", x.StudyStatus);
x.IsPassLabel = x.IsPass == true ? "合格" : "不合格"; x.IsPassLabel = x.IsPass == true ? "合格" : "不合格";
//x.InStatusLabel = x.InStatus == "1" ? "在职" : null; //x.InStatusLabel = x.InStatus == "1" ? "在职" : null;
//x.InStatusLabel = x.InStatus == "2" ? "离职" : null; //x.InStatusLabel = x.InStatus == "2" ? "离职" : null;
//x.InStatusLabel = x.InStatus == "0" ? "未入职" : null; //x.InStatusLabel = x.InStatus == "0" ? "未入职" : null;
if (x.BeginTime != null) if (x.BeginTime != null)
x.ExamDate = x.BeginTime.Value.ToString("yyyy-MM-dd"); x.ExamDate = x.BeginTime.Value.ToString("yyyy-MM-dd");
x.TotalScore += x.Score ?? 0; x.TotalScore += x.Score ?? 0;
x.TotalScore += x.AdjustScore ?? 0; x.TotalScore += x.AdjustScore ?? 0;
//if (x.DueDate != null) //if (x.DueDate != null)
// x.DueDate1 = x.DueDate.Value.ToString("yyyy-MM-dd"); // x.DueDate1 = x.DueDate.Value.ToString("yyyy-MM-dd");
//if (x.ExamDate != null) //if (x.ExamDate != null)
// x.ExamDate1 = x.ExamDate.Value.ToString("yyyy-MM-dd"); // x.ExamDate1 = x.ExamDate.Value.ToString("yyyy-MM-dd");
}); });
return new ServicePageResult<Ghre_ExamRecordDto>(filter.pageNum, total, filter.pageSize, entitys); return new ServicePageResult<Ghre_ExamRecordDto>(filter.pageNum, total, filter.pageSize, entitys);
} }
public async Task<ServicePageResult<Ghre_ExamRecordDto>> Query(string examId, QueryBody body)
{
return await QueryFilterPage(body, $"ExamId='{examId}'");
}
public async Task<ServiceResult> ModifyAdjustScore(string examRecordId, EditGhre_ExamRecordInput edit)
{
var entity = await QuerySingle(examRecordId);
public async Task<ServicePageResult<Ghre_ExamRecordDto>> Query(string examId, [FromBody] QueryBody body) var paper = await Db.Queryable<Ghre_ExamPaper>().FirstAsync(x => x.Id == entity.ExamPaperId);
{ if (paper == null)
return await QueryFilterPage(body, $"ExamId='{examId}'"); return ServiceResult.OprateFailed("该考试管理的试卷已被删除,暂不可变更调整分!");
}
entity.AdjustScore = edit.AdjustScore;
entity.Score += entity.AdjustScore;
string score1 = Regex.Replace(entity.Score.ToString(), @"\.(0+)$", "") + "/" + Regex.Replace(entity.Score.ToString(), @"\.(0+)$", "");
if (entity.Score < 0)
return ServiceResult.OprateFailed($"调整后得分为【{score1}】,得分不可小于0!");
if (entity.Score > paper.TotalScore)
return ServiceResult.OprateFailed($"调整后得分为【{score1}】,不可大于卷面总分【{Regex.Replace(paper.TotalScore.ToString(), @"\.(0+)$", "") + "/" + Regex.Replace(paper.TotalScore.ToString(), @"\.(0+)$", "")}】!");
await Update(entity);
return ServiceResult.OprateSuccess("修改成功!");
//return await QueryFilterPage(body, $"ExamId='{examId}'");
} }
} }
Loading…
Cancel
Save