From 29d21f0233511243b322d0f57b816c29c9287b0b Mon Sep 17 00:00:00 2001 From: winter <2436197699@qq.com> Date: Wed, 29 Nov 2023 18:11:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AF=84=E4=BB=B7=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E6=88=96=E7=8F=AD=E7=BA=A7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/teammodel/common/CommonConstant.java | 9 ++ src/main/java/cn/teammodel/common/PK.java | 1 + .../dao/AppraiseRecordRepository.java | 8 +- .../cn/teammodel/dao/AppraiseRepository.java | 4 +- .../cn/teammodel/dao/SchoolRepository.java | 11 ++- .../model/dto/Appraise/AppraiseVoteDto.java | 21 +++- .../model/entity/appraise/AppraiseRecord.java | 12 ++- .../entity/appraise/AppraiseRecordItem.java | 4 + .../teammodel/model/entity/school/School.java | 45 ++++++++- .../model/entity/school/Semester.java | 30 ------ .../service/impl/EvaluationServiceImpl.java | 95 +++++++++++++++++-- .../cn/teammodel/utils/RepositoryUtil.java | 23 +++++ .../cn/teammodel/utils/SchoolDateUtil.java | 36 +++++-- .../TeamModelExtensionApplicationTests.java | 11 ++- .../java/cn/teammodel/TestWithoutSpring.java | 17 ++-- 15 files changed, 254 insertions(+), 73 deletions(-) create mode 100644 src/main/java/cn/teammodel/common/CommonConstant.java delete mode 100644 src/main/java/cn/teammodel/model/entity/school/Semester.java create mode 100644 src/main/java/cn/teammodel/utils/RepositoryUtil.java diff --git a/src/main/java/cn/teammodel/common/CommonConstant.java b/src/main/java/cn/teammodel/common/CommonConstant.java new file mode 100644 index 0000000..e5b6698 --- /dev/null +++ b/src/main/java/cn/teammodel/common/CommonConstant.java @@ -0,0 +1,9 @@ +package cn.teammodel.common; + +/** + * @author winter + * @create 2023-11-29 14:26 + */ +public interface CommonConstant { + String DASH = "-"; +} diff --git a/src/main/java/cn/teammodel/common/PK.java b/src/main/java/cn/teammodel/common/PK.java index 9b0df58..4fcb4ec 100644 --- a/src/main/java/cn/teammodel/common/PK.java +++ b/src/main/java/cn/teammodel/common/PK.java @@ -17,6 +17,7 @@ public interface PK { * 参数数量: 1 , 拼接: SchoolId */ String PK_APPRAISE_RECORD = "AppraiseRecord-%s"; + String COMMON_BASE = "Base"; /** * 构建分区键 diff --git a/src/main/java/cn/teammodel/dao/AppraiseRecordRepository.java b/src/main/java/cn/teammodel/dao/AppraiseRecordRepository.java index f5be2d4..6685f7e 100644 --- a/src/main/java/cn/teammodel/dao/AppraiseRecordRepository.java +++ b/src/main/java/cn/teammodel/dao/AppraiseRecordRepository.java @@ -1,6 +1,6 @@ package cn.teammodel.dao; -import cn.teammodel.model.entity.appraise.Appraise; +import cn.teammodel.model.entity.appraise.AppraiseRecord; import com.azure.spring.data.cosmos.repository.CosmosRepository; import org.springframework.stereotype.Repository; @@ -15,6 +15,10 @@ import org.springframework.stereotype.Repository; * List findByLastname(String lastname, Pageable pageable);
*/ @Repository -public interface AppraiseRecordRepository extends CosmosRepository { +public interface AppraiseRecordRepository extends CosmosRepository { + /** + * 查询评价记录 + */ + AppraiseRecord findAppraiseRecordByTargetIdAndAcademicYearIdAndCode(String targetId, String academicYearId, String code); } diff --git a/src/main/java/cn/teammodel/dao/AppraiseRepository.java b/src/main/java/cn/teammodel/dao/AppraiseRepository.java index 7bbf01d..fa2cd47 100644 --- a/src/main/java/cn/teammodel/dao/AppraiseRepository.java +++ b/src/main/java/cn/teammodel/dao/AppraiseRepository.java @@ -24,7 +24,7 @@ import java.util.List; public interface AppraiseRepository extends CosmosRepository { Appraise findBySchoolId(String schoolId, PartitionKey partitionKey); Appraise findAppraiseBySchoolIdAndPeriodIdAndCode(String schoolId, String periodId, String code); - @Query("SELECT value n FROM School AS s join n in s.nodes where s.schoolId = @schoolId and s.periodId = @periodId and s.code = @code and n.id = @nodeId") - List findNodeById(@Param("schoolId") String schoolId, @Param("periodId") String periodId, @Param("code") String code, @Param("nodeId") String nodeId); + @Query("SELECT value n FROM School AS s join n in s.nodes where s.code = @code and n.id = @nodeId") + List findNodeById(@Param("code") String code, @Param("nodeId") String nodeId); } diff --git a/src/main/java/cn/teammodel/dao/SchoolRepository.java b/src/main/java/cn/teammodel/dao/SchoolRepository.java index 4062adb..4f6f066 100644 --- a/src/main/java/cn/teammodel/dao/SchoolRepository.java +++ b/src/main/java/cn/teammodel/dao/SchoolRepository.java @@ -2,14 +2,21 @@ package cn.teammodel.dao; import cn.teammodel.model.entity.school.School; import com.azure.spring.data.cosmos.repository.CosmosRepository; +import com.azure.spring.data.cosmos.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + /** * @author winter * @create 2023-11-28 17:39 */ @Repository public interface SchoolRepository extends CosmosRepository { - //@Query("select c.period.semesters from c where c.id = @id and c.code = @code") - //List findSemestersById(@Param("id") String id, @Param("code") String code); + /** + * 动态投影, 查询还是要将所有的值查出来,类的动态查询不能嵌套 + */ + @Query("select value p from School as s join p in s.period where s.id = @schoolId and s.code = 'Base' and p.id = @periodId") + List findPeriodById(@Param("schoolId") String schoolId, @Param("periodId") String periodId); } diff --git a/src/main/java/cn/teammodel/model/dto/Appraise/AppraiseVoteDto.java b/src/main/java/cn/teammodel/model/dto/Appraise/AppraiseVoteDto.java index 2ca0a7a..21fc369 100644 --- a/src/main/java/cn/teammodel/model/dto/Appraise/AppraiseVoteDto.java +++ b/src/main/java/cn/teammodel/model/dto/Appraise/AppraiseVoteDto.java @@ -1,5 +1,6 @@ package cn.teammodel.model.dto.Appraise; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -11,11 +12,23 @@ import javax.validation.constraints.NotNull; @Data public class AppraiseVoteDto { @NotNull - private String studentId; - @NotNull // todo: semester 还是 period - private String semesterId; + @ApiModelProperty(value = "评价对象为班级 或 学生") + private String targetId; + + @NotNull + @ApiModelProperty(value = "评价对象类型:", allowableValues = "student ,class") + private String targetType; + + @ApiModelProperty(value = "评分是否传播到班级下的所有学生(字段仅在 targetType=class 时生效)") + private boolean spread; + /** + * 可以当作唯一 id + */ @NotNull + @ApiModelProperty(value = "评价项唯一 id", required = true) private String appraiseId; - // 校区 id + + @ApiModelProperty(value = "学段 id,用于拿到 semesterId", required = true) + @NotNull private String periodId; } diff --git a/src/main/java/cn/teammodel/model/entity/appraise/AppraiseRecord.java b/src/main/java/cn/teammodel/model/entity/appraise/AppraiseRecord.java index eaf9257..d3d2d49 100644 --- a/src/main/java/cn/teammodel/model/entity/appraise/AppraiseRecord.java +++ b/src/main/java/cn/teammodel/model/entity/appraise/AppraiseRecord.java @@ -10,7 +10,7 @@ import java.util.List; /** * 一个学生在一个学年(学校+学年 = 分区键)的所有评价记录
- * 注意: Id 为 学年 + semesterId + * 注意: 唯一定位: academicYearId(学年-{semesterId}) + studentId + code(AppraiseRecord-{schoolId}) * @author winter * @create 2023-11-27 11:02 */ @@ -23,7 +23,15 @@ public class AppraiseRecord extends BaseItem { * 学段 id */ private String periodId; - private String studentId; + /** + * 学年(组合 id: 学年-semesterId -> 2023-{semesterId}) + */ + private String academicYearId; + /** + * 学生 id + */ + private String targetId; + private String targetType; /** * 表扬次数 */ diff --git a/src/main/java/cn/teammodel/model/entity/appraise/AppraiseRecordItem.java b/src/main/java/cn/teammodel/model/entity/appraise/AppraiseRecordItem.java index ae9fb02..ea9eea6 100644 --- a/src/main/java/cn/teammodel/model/entity/appraise/AppraiseRecordItem.java +++ b/src/main/java/cn/teammodel/model/entity/appraise/AppraiseRecordItem.java @@ -17,6 +17,10 @@ import java.time.LocalDateTime; public class AppraiseRecordItem { private String id; private String appraiseNodeId; + /** + * 用包装类,这样为 null 时就不会持久化 + */ + private Boolean spread; String creator; String creatorId; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/src/main/java/cn/teammodel/model/entity/school/School.java b/src/main/java/cn/teammodel/model/entity/school/School.java index 9bb3269..507cfe1 100644 --- a/src/main/java/cn/teammodel/model/entity/school/School.java +++ b/src/main/java/cn/teammodel/model/entity/school/School.java @@ -3,8 +3,10 @@ package cn.teammodel.model.entity.school; import cn.teammodel.model.entity.BaseItem; import com.azure.spring.data.cosmos.core.mapping.Container; import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import java.util.List; @@ -47,7 +49,16 @@ public class School extends BaseItem { private List grades; private List subjects; private List semesters; + private List timetable; private String name; + private String id; + private String gradeCount; + private String semesterCount; + private String subjectCount; + private String campusId; + private Analysis analysis; + // 学段类型 + private String periodType; } @Data @@ -55,6 +66,26 @@ public class School extends BaseItem { private String id; private String name; } + @Data + public static class Timetable { + private String id; + private String label; + private String time; + // todo: 待补充 + //private String weeklies; + } + @Data + public static class Analysis { + private List type; + private Integer income; + private Integer eugenics; + private Integer touch; + } + @Data + public static class Type { + private String id; + private String name; + } @Data public static class Subject { @@ -66,13 +97,25 @@ public class School extends BaseItem { @Data + @AllArgsConstructor + @NoArgsConstructor public static class Semester { + private String id; private String name; + /** + * start = 1 则代表一年开始的学期 + */ private Integer start; + /** + * 开始的月份 + */ private Integer month; + /** + * 开始的日 + */ private Integer day; - private String id; } + @Data public static class Campus { private String name; diff --git a/src/main/java/cn/teammodel/model/entity/school/Semester.java b/src/main/java/cn/teammodel/model/entity/school/Semester.java deleted file mode 100644 index 6c528e7..0000000 --- a/src/main/java/cn/teammodel/model/entity/school/Semester.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.teammodel.model.entity.school; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 学期(标记了学期的开始与结束) - * @author winter - * @create 2023-11-28 10:39 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Semester { - private String id; - private String name; - /** - * start = 1 则代表一年开始的学期 - */ - private Integer start; - /** - * 开始的月份 - */ - private Integer month; - /** - * 开始的日 - */ - private Integer day; -} diff --git a/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java b/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java index 5105614..95c6611 100644 --- a/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java +++ b/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java @@ -4,13 +4,21 @@ import cn.hutool.core.lang.UUID; import cn.teammodel.common.ErrorCode; import cn.teammodel.common.PK; import cn.teammodel.config.exception.ServiceException; +import cn.teammodel.dao.AppraiseRecordRepository; import cn.teammodel.dao.AppraiseRepository; +import cn.teammodel.dao.SchoolRepository; import cn.teammodel.model.dto.Appraise.*; +import cn.teammodel.model.entity.User; import cn.teammodel.model.entity.appraise.Appraise; +import cn.teammodel.model.entity.appraise.AppraiseRecord; +import cn.teammodel.model.entity.appraise.AppraiseRecordItem; import cn.teammodel.model.entity.appraise.AppraiseTreeNode; -import cn.teammodel.model.entity.User; +import cn.teammodel.model.entity.school.School; import cn.teammodel.security.utils.SecurityUtil; import cn.teammodel.service.EvaluationService; +import cn.teammodel.utils.RepositoryUtil; +import cn.teammodel.utils.SchoolDateUtil; +import com.azure.cosmos.models.CosmosPatchOperations; import com.azure.spring.data.cosmos.core.CosmosTemplate; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -18,8 +26,10 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -28,9 +38,18 @@ import java.util.List; */ @Service public class EvaluationServiceImpl implements EvaluationService { + /** + * 评价记录对象的类型 + */ + private final static String TARGET_STUDENT = "student"; + private final static String TARGET_CLASS = "class"; @Resource CosmosTemplate cosmosTemplate; @Resource + private SchoolRepository schoolRepository; + @Resource + private AppraiseRecordRepository appraiseRecordRepository; + @Resource private AppraiseRepository appraiseRepository; /** @@ -98,6 +117,7 @@ public class EvaluationServiceImpl implements EvaluationService { @Override public Appraise insertNode(InsertNodeDto insertNodeDto) { + // todo: 如果不存在 Appraise appraise = findAppraise(insertNodeDto.getPeriodId()); User loginUser = SecurityUtil.getLoginUser(); @@ -168,19 +188,74 @@ public class EvaluationServiceImpl implements EvaluationService { @Override public void vote(AppraiseVoteDto appraiseVoteDto) { - String studentId = appraiseVoteDto.getStudentId(); + String targetId = appraiseVoteDto.getTargetId(); + boolean spread = appraiseVoteDto.isSpread(); + String targetType = appraiseVoteDto.getTargetType(); String appraiseId = appraiseVoteDto.getAppraiseId(); + // 获取 school 中的 semesters String periodId = appraiseVoteDto.getPeriodId(); - periodId = StringUtils.isEmpty(periodId) ? "default" : periodId; - User loginUser = SecurityUtil.getLoginUser(); - List nodes = appraiseRepository.findNodeById(loginUser.getSchoolId(), periodId, PK.PK_APPRAISE, appraiseId); - if (ObjectUtils.isEmpty(nodes) || nodes.size() > 1) { - throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "找不到该评价项"); - } - AppraiseTreeNode node = nodes.get(0); + String schoolId = loginUser.getSchoolId(); - // 组装 AppraiseRecord + List nodes = appraiseRepository.findNodeById(PK.PK_APPRAISE, appraiseId); + AppraiseTreeNode appraiseTreeNode = RepositoryUtil.findOne(nodes); + + // 通过 periodId 获取 semesters + List periodById = schoolRepository.findPeriodById(schoolId, periodId); + School.Period period = RepositoryUtil.findOne(periodById); + List semesters = period.getSemesters(); + + // 获取当前学年学期组合 ID + String academicYearId = SchoolDateUtil.generateAcademicId(semesters, LocalDate.now()); + + // 查询是否存在记录,不存在则创建一条新的,存在则处理一下分值后再向其 nodes 中插入一条 item + AppraiseRecord record = appraiseRecordRepository.findAppraiseRecordByTargetIdAndAcademicYearIdAndCode( + targetId, + academicYearId, + String.format(PK.PK_APPRAISE_RECORD,schoolId) + ); + + // 初始化新的评价节点 + AppraiseRecordItem item = new AppraiseRecordItem(); + item.setId(UUID.randomUUID().toString()); + item.setAppraiseNodeId(appraiseId); + item.setCreator(loginUser.getName()); + item.setCreatorId(loginUser.getId()); + item.setCreateTime(LocalDateTime.now()); + + if (record == null) { + // 不存在, 创建新的 AppraiseRecord + List items = Collections.singletonList(item); + + record = new AppraiseRecord(); + if (targetType.equals(TARGET_STUDENT)) { + record.setTargetType(TARGET_STUDENT); + } else if (targetType.equals(TARGET_CLASS)){ + record.setTargetType(TARGET_CLASS); + } else { + throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "不受支持的评价对象"); + } + record.setTargetId(targetId); + record.setAcademicYearId(academicYearId); + record.setPraiseCount(0); + record.setScore(0); + record.setNodes(items); + record.setCode(String.format(PK.PK_APPRAISE_RECORD, schoolId)); + appraiseRecordRepository.save(record); + } else { + // 处理学校与学生的差异 +it + CosmosPatchOperations operations = CosmosPatchOperations.create(); + operations.add("/nodes/0", item); + // 表扬 + long praise = appraiseTreeNode.isPraise() ? 1 : -1; + operations.increment("/praiseCount", praise); + // 加分 + int scoreToPlus = ObjectUtils.isEmpty(appraiseTreeNode.getScore()) ? 0 : appraiseTreeNode.getScore(); + operations.increment("/score", scoreToPlus); + // patch doc + appraiseRecordRepository.save(record.getId(), PK.buildOf(PK.PK_APPRAISE_RECORD, schoolId), AppraiseRecord.class, operations); + } } /** diff --git a/src/main/java/cn/teammodel/utils/RepositoryUtil.java b/src/main/java/cn/teammodel/utils/RepositoryUtil.java new file mode 100644 index 0000000..6edfde2 --- /dev/null +++ b/src/main/java/cn/teammodel/utils/RepositoryUtil.java @@ -0,0 +1,23 @@ +package cn.teammodel.utils; + +import cn.teammodel.common.ErrorCode; +import cn.teammodel.config.exception.ServiceException; +import org.apache.commons.lang3.ObjectUtils; + +import java.util.List; + +/** + * @author winter + * @create 2023-11-29 15:41 + */ +public class RepositoryUtil { + /** + * 获取唯一一个结果,如果list为空或者list长度大于1,抛出参数错误异常 + */ + public static T findOne(List list) { + if (ObjectUtils.isEmpty(list) || list.size() > 1) { + throw new ServiceException(ErrorCode.PARAMS_ERROR); + } + return list.get(0); + } +} diff --git a/src/main/java/cn/teammodel/utils/SchoolDateUtil.java b/src/main/java/cn/teammodel/utils/SchoolDateUtil.java index 467b104..4915a70 100644 --- a/src/main/java/cn/teammodel/utils/SchoolDateUtil.java +++ b/src/main/java/cn/teammodel/utils/SchoolDateUtil.java @@ -1,6 +1,8 @@ package cn.teammodel.utils; -import cn.teammodel.model.entity.school.Semester; +import cn.teammodel.common.CommonConstant; +import cn.teammodel.model.entity.school.School; +import org.apache.commons.lang3.tuple.Pair; import java.time.LocalDate; import java.util.Comparator; @@ -38,7 +40,7 @@ public class SchoolDateUtil { * 注意: 处理跨年问题 -> 2024.1.1, 应该也是 2023学年上学期,同时你需要注意,semesters 可能不止两个学期 *

*/ - public static String getSemesterByNow(List semesters, LocalDate date) { + public static Pair getSemesterByNow(List semesters, LocalDate date) { if (semesters == null || semesters.isEmpty() || date == null) { throw new IllegalArgumentException("Invalid input: semesters and date must not be null or empty."); } @@ -49,19 +51,33 @@ public class SchoolDateUtil { // i = 0 的日期是开学最早, i = size - 1 是开学最晚 int size = semesters.size(); // 拿到最晚开学的日期,将年份 - 1后,与头节点组成可跨年区间 - Semester lastSemester = semesters.get(size - 1); - LocalDate tmpSemester = LocalDate.of(date.getYear() - 1, lastSemester.getMonth(), lastSemester.getDay()); - for (Semester semester : semesters) { + School.Semester lastSemester = semesters.get(size - 1); + LocalDate lastSemesterStart = LocalDate.of(date.getYear() - 1, lastSemester.getMonth(), lastSemester.getDay()); + String lastSemesterId = lastSemester.getId(); + for (School.Semester semester : semesters) { // 特判头尾的提起,分别将学期区间提前和延后一年(不用延后),例如 2023.3.1 与 2023.9.1 我们分别向添加一个节点,划分其为 3 个区间: // 2022.9.1 - 2023.3.1, 2023.3.1 - 2023.9.1, 2023.9.1 - 2024.3.1 - LocalDate curSemester = LocalDate.of(date.getYear(), semester.getMonth(), semester.getDay()); - if (date.isEqual(tmpSemester) || date.isAfter(tmpSemester) && date.isBefore(curSemester)) { - return tmpSemester.toString(); + LocalDate curSemesterStart = LocalDate.of(date.getYear(), semester.getMonth(), semester.getDay()); + if (date.isEqual(lastSemesterStart) || date.isAfter(lastSemesterStart) && date.isBefore(curSemesterStart)) { + return Pair.of(lastSemesterId, lastSemesterStart); } - tmpSemester = curSemester; + lastSemesterStart = curSemesterStart; + lastSemesterId = semester.getId(); } // 剩下的时间段, 学年应该就是最后一个学年 - return LocalDate.of(date.getYear(), lastSemester.getMonth(), lastSemester.getDay()).toString(); + return Pair.of(lastSemester.getId(), LocalDate.of(date.getYear(), lastSemester.getMonth(), lastSemester.getDay())); } + + /** + * 返回 ID -> 学年(组合 id: 学年-semesterId -> 2023-{semesterId}) + */ + public static String generateAcademicId(List semesters, LocalDate date) { + Pair pair = getSemesterByNow(semesters, date); + String semesterId = pair.getLeft(); + LocalDate academicYear = pair.getRight(); + return academicYear.getYear() + CommonConstant.DASH + semesterId; + } + + } diff --git a/src/test/java/cn/teammodel/TeamModelExtensionApplicationTests.java b/src/test/java/cn/teammodel/TeamModelExtensionApplicationTests.java index c4df836..a2951a9 100644 --- a/src/test/java/cn/teammodel/TeamModelExtensionApplicationTests.java +++ b/src/test/java/cn/teammodel/TeamModelExtensionApplicationTests.java @@ -1,10 +1,13 @@ package cn.teammodel; +import cn.teammodel.common.PK; +import cn.teammodel.dao.AppraiseRecordRepository; import cn.teammodel.dao.AppraiseRepository; import cn.teammodel.dao.SchoolRepository; import cn.teammodel.dao.StudentRepository; import cn.teammodel.manager.DingAlertNotifier; import cn.teammodel.model.entity.appraise.Appraise; +import cn.teammodel.model.entity.appraise.AppraiseRecord; import cn.teammodel.model.entity.appraise.AppraiseTreeNode; import cn.teammodel.service.EvaluationService; import cn.teammodel.service.impl.EvaluationServiceImpl; @@ -27,6 +30,8 @@ class TeamModelExtensionApplicationTests { @Autowired private DingAlertNotifier notifier; + @Autowired + AppraiseRecordRepository appraiseRecordRepository; @Autowired StudentRepository studentRepository; @Autowired @@ -83,7 +88,11 @@ class TeamModelExtensionApplicationTests { //List nodeById = appraiseRepository.findNodeById("habook", "default", "Appraise", "43e23f03-288c-4012-b5f3-4d5c022739a2"); //System.out.println(nodeById); - System.out.println(schoolRepository.findSemestersById("hbcn", "Base")); + //System.out.println(schoolRepository.findSchoolByIdAndCode("hbcn", "Base", Semester.class)); + AppraiseRecord record = appraiseRecordRepository.findAppraiseRecordByStudentIdAndAcademicYearIdAndCode("fakeStudentId1", + "2023-71fbd0bd-9a46-0490-f6b3-7d16cba4c017", + String.format(PK.PK_APPRAISE_RECORD,"habook") + ); } @Test public void testUpdate() { diff --git a/src/test/java/cn/teammodel/TestWithoutSpring.java b/src/test/java/cn/teammodel/TestWithoutSpring.java index 6a456d7..6bd60b0 100644 --- a/src/test/java/cn/teammodel/TestWithoutSpring.java +++ b/src/test/java/cn/teammodel/TestWithoutSpring.java @@ -2,9 +2,8 @@ package cn.teammodel; import cn.teammodel.model.entity.appraise.Appraise; import cn.teammodel.model.entity.appraise.AppraiseTreeNode; -import cn.teammodel.model.entity.school.Semester; +import cn.teammodel.model.entity.school.School; import cn.teammodel.service.impl.EvaluationServiceImpl; -import cn.teammodel.utils.SchoolDateUtil; import com.dingtalk.api.DefaultDingTalkClient; import com.dingtalk.api.DingTalkClient; import com.dingtalk.api.request.OapiRobotSendRequest; @@ -139,16 +138,16 @@ public class TestWithoutSpring { @Test public void testLocalDateTime() { - List semesters = Arrays.asList( - new Semester("1", "上学期", 1, 2, 1), - new Semester("3", "下学期", 0, 8, 1), - new Semester("4", "下学期", 0, 11, 1), - new Semester("2", "下学期", 0, 5, 1) + List semesters = Arrays.asList( + new School.Semester("1", "上学期", 1, 2, 1), + new School.Semester("3", "下学期", 0, 8, 1), + new School.Semester("4", "下学期", 0, 11, 1), + new School.Semester("2", "下学期", 0, 5, 1) ); LocalDate currentDate = LocalDate.of(2024, 1, 1); - String currentSemester = SchoolDateUtil.getSemesterByNow(semesters, currentDate); - System.out.println(currentSemester); + //String currentSemester = SchoolDateUtil.getSemesterByNow(semesters, currentDate); + //System.out.println(currentSemester); } }