From 63aaef6a0a1cc9a2ed3df52cc67499aca03a673d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BC=8D=E6=BD=9C?= <1620556043@qq.com> Date: Sat, 22 Mar 2025 14:12:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=80=83=E7=94=9F=E5=88=86?= =?UTF-8?q?=E7=BB=84=E5=AF=BC=E5=85=A5,=20=E5=AE=8C=E5=96=84=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E5=AF=BC=E5=85=A5=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/StudentGroupsController.cs | 10 +++++++++- .../StudentGroupBatchImportDto.cs | 3 +++ .../Mappings/StudentGroupProfile.cs | 2 ++ .../Implementations/StudentGroupService.cs | 10 ++++++++++ .../Implementations/StudentService.cs | 19 +++++++++++++++++++ 5 files changed, 43 insertions(+), 1 deletion(-) diff --git a/Src/CodeSpirit.ExamApi/Controllers/StudentGroupsController.cs b/Src/CodeSpirit.ExamApi/Controllers/StudentGroupsController.cs index a0e7659e..8171a685 100644 --- a/Src/CodeSpirit.ExamApi/Controllers/StudentGroupsController.cs +++ b/Src/CodeSpirit.ExamApi/Controllers/StudentGroupsController.cs @@ -1,9 +1,11 @@ using CodeSpirit.Core.Attributes; using CodeSpirit.Core.Dtos; +using CodeSpirit.ExamApi.Data.Models; using CodeSpirit.ExamApi.Dtos.StudentGroup; using CodeSpirit.ExamApi.Services.Interfaces; using CodeSpirit.Shared.Dtos.Common; using Microsoft.AspNetCore.Mvc; +using System.Linq.Expressions; namespace CodeSpirit.ExamApi.Controllers; @@ -41,7 +43,13 @@ public class StudentGroupsController : ApiControllerBase [HttpGet] public async Task>>> GetStudentGroups([FromQuery] StudentGroupQueryDto queryDto) { - PageList groups = await _studentGroupService.GetPagedListAsync(queryDto); + Expression> predicate = null; + if (!string.IsNullOrWhiteSpace(queryDto.Keywords)) + { + predicate = x => x.Name.Contains(queryDto.Keywords) || x.Description.Contains(queryDto.Keywords); + } + + PageList groups = await _studentGroupService.GetPagedListAsync(queryDto, predicate); return SuccessResponse(groups); } diff --git a/Src/CodeSpirit.ExamApi/Dtos/StudentGroup/StudentGroupBatchImportDto.cs b/Src/CodeSpirit.ExamApi/Dtos/StudentGroup/StudentGroupBatchImportDto.cs index 7e13b27b..fe61d310 100644 --- a/Src/CodeSpirit.ExamApi/Dtos/StudentGroup/StudentGroupBatchImportDto.cs +++ b/Src/CodeSpirit.ExamApi/Dtos/StudentGroup/StudentGroupBatchImportDto.cs @@ -1,3 +1,4 @@ +using Newtonsoft.Json; using System.ComponentModel; using System.ComponentModel.DataAnnotations; @@ -14,6 +15,7 @@ public class StudentGroupBatchImportDto [Required(ErrorMessage = "分组名称不能为空")] [StringLength(100, ErrorMessage = "分组名称最大长度为100")] [DisplayName("分组名称")] + [JsonProperty("分组名称")] public string Name { get; set; } = string.Empty; /// @@ -21,5 +23,6 @@ public class StudentGroupBatchImportDto /// [StringLength(500, ErrorMessage = "分组描述最大长度为500")] [DisplayName("描述")] + [JsonProperty("描述")] public string? Description { get; set; } } \ No newline at end of file diff --git a/Src/CodeSpirit.ExamApi/Mappings/StudentGroupProfile.cs b/Src/CodeSpirit.ExamApi/Mappings/StudentGroupProfile.cs index baefc1a6..3d59d445 100644 --- a/Src/CodeSpirit.ExamApi/Mappings/StudentGroupProfile.cs +++ b/Src/CodeSpirit.ExamApi/Mappings/StudentGroupProfile.cs @@ -18,5 +18,7 @@ public class StudentGroupProfile : Profile // 添加 PageList 映射配置 CreateMap, PageList>(); + + CreateMap(); } } \ No newline at end of file diff --git a/Src/CodeSpirit.ExamApi/Services/Implementations/StudentGroupService.cs b/Src/CodeSpirit.ExamApi/Services/Implementations/StudentGroupService.cs index 60b025e2..cf505818 100644 --- a/Src/CodeSpirit.ExamApi/Services/Implementations/StudentGroupService.cs +++ b/Src/CodeSpirit.ExamApi/Services/Implementations/StudentGroupService.cs @@ -168,6 +168,16 @@ public class StudentGroupService : BaseCRUDIService !existingNames.Contains(i.Name)); } + protected override Task OnImporting(StudentGroup entity) + { + base.OnImporting(entity); + + if(entity.Id == default) + entity.Id = _idGenerator.NewId(); + + return Task.CompletedTask; + } + /// /// 添加考生到分组 /// diff --git a/Src/CodeSpirit.ExamApi/Services/Implementations/StudentService.cs b/Src/CodeSpirit.ExamApi/Services/Implementations/StudentService.cs index 54093c53..31f1587d 100644 --- a/Src/CodeSpirit.ExamApi/Services/Implementations/StudentService.cs +++ b/Src/CodeSpirit.ExamApi/Services/Implementations/StudentService.cs @@ -357,6 +357,25 @@ public class StudentService : BaseCRUDIService(); var failedItems = new List(); + var studentNumberRepetition = importList.GroupBy(x => x.StudentNumber).Select(s => new { studentNumber = s.Key, count = s.Count() }); + if (studentNumberRepetition.Any(x => x.count > 1)) + { + var error = string.Join(",", studentNumberRepetition.Where(x => x.count > 1).Select(x => x.studentNumber)); + failedItems.Add($"导入数据中出现重复的学号:{error}"); + } + var idNoRepetition = importList.GroupBy(x => x.IdNo).Select(s => new { idNo = s.Key, count = s.Count() }); + if (idNoRepetition.Any(x => x.count > 1)) + { + var error = string.Join(",", idNoRepetition.Where(x => x.count > 1).Select(x => x.idNo)); + failedItems.Add($"导入数据中出现重复的身份证:{error}"); + } + var admissionTicketRepetition = importList.GroupBy(x => x.AdmissionTicket).Select(s => new { admissionTicket = s.Key, count = s.Count() }); + if (admissionTicketRepetition.Any(x => x.count > 1)) + { + var error = string.Join(",", admissionTicketRepetition.Where(x => x.count > 1).Select(x => x.admissionTicket)); + failedItems.Add($"导入数据中出现重复的准考证:{error}"); + } + var checkDatas = await Repository.CreateQuery().Where(x => importList.Select(x => x.StudentNumber).Contains(x.StudentNumber) || importList.Select(x => x.IdNo).Contains(x.IdNo) || importList.Select(x => x.AdmissionTicket).Contains(x.AdmissionTicket)) -- Gitee