From ea3bcc24543202a55b22623cad8dd8900d550242 Mon Sep 17 00:00:00 2001 From: luohairen <3399054449@qq.com> Date: 星期二, 29 十月 2024 14:05:06 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/java/com/ycl/jxkg/excel/SelectExcel.java | 25 ++++++++ src/main/java/com/ycl/jxkg/controller/common/UploadController.java | 5 + src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java | 2 src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java | 7 ++ src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperImportVO.java | 1 src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java | 29 ++++++++- src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java | 39 ++++++++++-- src/main/resources/mapper/ClassesUserMapper.xml | 15 ++++- src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java | 4 + src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java | 4 + 10 files changed, 109 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java index 436c59a..c371fbd 100644 --- a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java +++ b/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java @@ -95,7 +95,7 @@ @GetMapping("/my") @PreAuthorize("hasAuthority('classes:my')") - @ApiOperation(value = "鎴戠殑鐝骇", notes = "鎴戠殑鐝骇") + @ApiOperation(value = "鎴戠殑鐝骇(鑰佸笀鐨勭彮绾�)", notes = "鎴戠殑鐝骇(鑰佸笀鐨勭彮绾�)") public Result myClassList() { return classesService.myClassList(); } diff --git a/src/main/java/com/ycl/jxkg/controller/common/UploadController.java b/src/main/java/com/ycl/jxkg/controller/common/UploadController.java index e8cd1a8..7026952 100644 --- a/src/main/java/com/ycl/jxkg/controller/common/UploadController.java +++ b/src/main/java/com/ycl/jxkg/controller/common/UploadController.java @@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; +import java.net.URLEncoder; import java.nio.file.Files; import java.util.HashMap; import java.util.UUID; @@ -82,9 +83,9 @@ // 璇诲彇鏂囦欢鍐呭 byte[] fileContent = Files.readAllBytes(file.toPath()); - + String downloadfile = URLEncoder.encode(fileName,"UTF-8"); // 璁剧疆鍝嶅簲澶� - response.setHeader("Content-Disposition", "attachment; filename=" + fileName); + response.setHeader("Content-Disposition", "attachment; filename=" + downloadfile); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); // 灏嗘枃浠跺唴瀹瑰啓鍏ュ搷搴旇緭鍑烘祦 diff --git a/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java b/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java index b4116d2..a56b0b6 100644 --- a/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java +++ b/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java @@ -46,11 +46,13 @@ @NotBlank(message = "璇峰~鍐欏鍛樼櫥褰曡处鍙�", groups = {Add.class, Update.class}) @ApiModelProperty("鐧诲綍璐﹀彿") - private String account; + private String userName; @ApiModelProperty("鐧诲綍瀵嗙爜") private String password; + private String birthDay; + public static ClassesUser getEntityByForm(@NonNull EditClassesUserForm form, ClassesUser entity) { if(entity == null) { entity = new ClassesUser(); diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java index cfdb39e..01f6df1 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java +++ b/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java @@ -1,10 +1,12 @@ package com.ycl.jxkg.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.jxkg.domain.base.AbsVo; import com.ycl.jxkg.domain.entity.ClassesUser; import java.util.Date; import java.util.List; + import org.springframework.lang.NonNull; import org.springframework.beans.BeanUtils; import io.swagger.annotations.ApiModel; @@ -20,26 +22,49 @@ @Data public class ClassesUserVO extends AbsVo { - /** 鐝骇ID */ + /** + * 鐝骇ID + */ private Integer classesId; - /** 鐢ㄦ埛ID */ + /** + * 鐢ㄦ埛ID + */ private Integer userId; - /** 鐪熷疄濮撳悕 */ + /** + * 鐪熷疄濮撳悕 + */ private String realName; - /** 骞撮緞 */ + /** + * 骞撮緞 + */ private Integer sex; - /** 鐢佃瘽 */ + /** + * 鐢佃瘽 + */ private String phone; - /** 鍔犲叆鏃堕棿 */ + /** + * 鍔犲叆鏃堕棿 + */ private Date createTime; + /** + * 鐢佃瘽 + */ + private String userName; + /** + * 鐢佃瘽 + */ + private String age; + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date birthDay; + private Integer status; public static ClassesUserVO getVoByEntity(@NonNull ClassesUser entity, ClassesUserVO vo) { - if(vo == null) { + if (vo == null) { vo = new ClassesUserVO(); } BeanUtils.copyProperties(entity, vo); diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperImportVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperImportVO.java index dcf9022..ca26deb 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperImportVO.java +++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperImportVO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.NumberFormat; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; diff --git a/src/main/java/com/ycl/jxkg/excel/SelectExcel.java b/src/main/java/com/ycl/jxkg/excel/SelectExcel.java index c4e8cde..2de1850 100644 --- a/src/main/java/com/ycl/jxkg/excel/SelectExcel.java +++ b/src/main/java/com/ycl/jxkg/excel/SelectExcel.java @@ -29,7 +29,7 @@ /** * 閫夐」涓嬫媺鏁版嵁 */ - private String[] optionList = {"A","B","C","D","E","F","G","H"}; + private String[] optionList = {"A", "B", "C", "D", "E", "F", "G", "H"}; public SelectExcel(List subjectNameList) { this.subjectNameList = subjectNameList; @@ -49,6 +49,8 @@ // 娣诲姞棰樼洰涓嬫媺 DataValidationConstraint questionConstraint = dataValidationHelper.createExplicitListConstraint(questionTypeList); DataValidation questionValidation = dataValidationHelper.createValidation(questionConstraint, questionTypeRange); + + setValidation(questionValidation); sheet.addValidationData(questionValidation); @@ -57,6 +59,8 @@ // 娣诲姞璇剧洰涓嬫媺 DataValidationConstraint subjectConstraint = dataValidationHelper.createExplicitListConstraint(subjectNameList.toArray((new String[0]))); DataValidation subjectValidation = dataValidationHelper.createValidation(subjectConstraint, subjectTypeRange); + + setValidation(subjectValidation); sheet.addValidationData(subjectValidation); // 璁剧疆閫夐」涓嬫媺鑼冨洿锛岀4鍒楋紝1500琛屽唴 @@ -64,6 +68,8 @@ // 娣诲姞閫夐」涓嬫媺 DataValidationConstraint optionConstraint = dataValidationHelper.createExplicitListConstraint(optionList); DataValidation optionValidation = dataValidationHelper.createValidation(optionConstraint, optionRange); + + setValidation(optionValidation); sheet.addValidationData(optionValidation); // 璁剧疆閫夐」涓嬫媺鑼冨洿锛岀4鍒楋紝1500琛屽唴 @@ -71,7 +77,24 @@ // 娣诲姞閫夐」涓嬫媺 DataValidationConstraint answerConstraint = dataValidationHelper.createExplicitListConstraint(optionList); DataValidation answerValidation = dataValidationHelper.createValidation(answerConstraint, answerRange); + setValidation(answerValidation); sheet.addValidationData(answerValidation); + // 闅鹃亾1-5 + String[] difficultList = new String[]{"1", "2", "3", "4", "5"}; + CellRangeAddressList difficultRange = new CellRangeAddressList(2, 1500, 8, 8); + // 娣诲姞閫夐」涓嬫媺 + DataValidationConstraint difficultConstraint = dataValidationHelper.createExplicitListConstraint(difficultList); + DataValidation difficultValidation = dataValidationHelper.createValidation(difficultConstraint, difficultRange); + setValidation(difficultValidation); + sheet.addValidationData(difficultValidation); + } + private DataValidation setValidation(DataValidation dataValidation){ + dataValidation.setEmptyCellAllowed(false); + dataValidation.setSuppressDropDownArrow(true); + dataValidation.setShowErrorBox(true); + //璁剧疆杈撳叆閿欒鎻愮ず淇℃伅 + dataValidation.createErrorBox("閫夋嫨閿欒鎻愮ず", "浣犺緭鍏ョ殑鍊兼湭鍦ㄥ閫夊垪琛ㄤ腑锛岃涓嬫媺閫夋嫨鍚堥�傜殑鍊�!"); + return dataValidation; } } diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java index 78a8613..6f47b44 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java @@ -182,9 +182,14 @@ @Override public Result myClassList() { Integer userId = webContext.getCurrentUser().getId(); + List<ClassesUser> classes = new LambdaQueryChainWrapper<>(classesUserService.getBaseMapper()) + .eq(ClassesUser::getTeacher, Boolean.TRUE) + .eq(ClassesUser::getUserId, userId) + .list(); + List<Integer> classesIds = classes.stream().map(ClassesUser::getClassesId).collect(Collectors.toList()); List<Classes> list = new LambdaQueryChainWrapper<>(baseMapper) .select(Classes::getId, Classes::getClassName) - .eq(Classes::getCreateUser, userId) + .in(Classes::getId, classesIds) .list(); return Result.ok(list); } diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java index 85c6fd1..909cc65 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java @@ -26,6 +26,9 @@ import org.springframework.util.Assert; import org.springframework.util.StringUtils; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Objects; @@ -55,15 +58,15 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public Result add(EditClassesUserForm form) { + public Result add(EditClassesUserForm form) { Long count = new LambdaQueryChainWrapper<>(userMapper) - .eq(User::getUserName, form.getAccount()) + .eq(User::getUserName, form.getUserName()) .count(); if (count > 0) { throw new RuntimeException("璇ョ櫥褰曡处鍙峰凡琚娇鐢�"); } User user = new User(); - user.setUserName(form.getPhone()); + user.setUserName(form.getUserName()); String password = StringUtils.hasText(form.getPassword()) ? form.getPassword() : DEFAULT_PASSWORD; user.setPassword(authenticationService.pwdEncode(password)); user.setStatus(UserStatusEnum.Enable.getCode()); @@ -72,12 +75,19 @@ user.setPhone(form.getPhone()); user.setRealName(form.getRealName()); user.setSex(form.getSex()); + DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd"); + try { + user.setBirthDay(fmt.parse(form.getBirthDay())); + } catch (ParseException e) { + throw new RuntimeException(e); + } user.setLastUpdatePasswordTime(new Date()); userMapper.insert(user); ClassesUser classesUser = new ClassesUser(); classesUser.setClassesId(form.getClassesId()); classesUser.setUserId(user.getId()); + classesUser.setTeacher(Boolean.FALSE); baseMapper.insert(classesUser); return Result.ok("娣诲姞鎴愬姛"); } @@ -90,7 +100,7 @@ throw new RuntimeException("瀛﹀憳鏁版嵁涓嶅瓨鍦�"); } Long count = new LambdaQueryChainWrapper<>(userMapper) - .eq(User::getUserName, form.getAccount()) + .eq(User::getUserName, form.getUserName()) .ne(User::getId, classesUser.getUserId()) .count(); if (count > 0) { @@ -105,11 +115,18 @@ // BeanUtils.copyProperties(classesUser, user); // userMapper.updateById(user); - user.setUserName(form.getAccount()); + user.setUserName(form.getUserName()); user.setPassword(form.getPassword()); user.setPhone(form.getPhone()); user.setRealName(form.getRealName()); user.setSex(form.getSex()); + user.setAge(form.getAge()); + DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd"); + try { + user.setBirthDay(fmt.parse(form.getBirthDay())); + } catch (ParseException e) { + throw new RuntimeException(e); + } userMapper.updateById(user); return Result.ok("淇敼鎴愬姛"); } @@ -142,12 +159,14 @@ // 鍏堝垹闄や箣鍓嶇殑 new LambdaUpdateChainWrapper<>(baseMapper) .eq(ClassesUser::getClassesId, form.getId()) + .eq(ClassesUser::getTeacher, Boolean.FALSE) .remove(); // 鍐嶆柊澧� List<ClassesUser> classesUserList = form.getStudentList().stream().map(item -> { ClassesUser classesUser = new ClassesUser(); classesUser.setClassesId(form.getId()); classesUser.setUserId(item); + classesUser.setTeacher(Boolean.FALSE); return classesUser; }).collect(Collectors.toList()); this.saveBatch(classesUserList); diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java index 612d808..db198fe 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java @@ -328,12 +328,13 @@ public List<ExamPaper> myExamPaper(Integer paperType) { Integer userId = webContext.getCurrentUser().getId(); List<ExamPaper> list = new LambdaQueryChainWrapper<>(baseMapper) - .select(ExamPaper::getId, ExamPaper::getName, ExamPaper::getVisibility) + .select(ExamPaper::getId, ExamPaper::getName, ExamPaper::getVisibility,ExamPaper::getSuggestTime) .eq(ExamPaper::getCreateUser, userId) .eq(Objects.nonNull(paperType), ExamPaper::getPaperType, paperType) .or() .eq(ExamPaper::getVisibility, VisibilityEnum.Public.getName()) .eq(Objects.nonNull(paperType), ExamPaper::getPaperType, paperType) + .orderByDesc(ExamPaper::getId) .list(); list.stream().forEach(item -> { if (VisibilityEnum.Public.getName().equals(item.getVisibility())) { @@ -382,6 +383,7 @@ // 鏌ュ嚭鎵�鏈夌殑璇剧洰锛坋xcel涓嬫媺鏁版嵁锛� List<Subject> subjects = subjectService.list(); List<String> subjectNameList = subjects.stream().map(Subject::getName).collect(Collectors.toList()); + EasyExcel.write(response.getOutputStream(), ExamPaperImportVO.class) .sheet("妯℃澘") .registerWriteHandler(new PaperSelectExcel(subjectNameList)) diff --git a/src/main/resources/mapper/ClassesUserMapper.xml b/src/main/resources/mapper/ClassesUserMapper.xml index 76f7e7c..8230ef9 100644 --- a/src/main/resources/mapper/ClassesUserMapper.xml +++ b/src/main/resources/mapper/ClassesUserMapper.xml @@ -10,6 +10,10 @@ <result column="sex" property="sex"/> <result column="phone" property="phone"/> <result column="create_time" property="createTime"/> + <result column="user_name" property="userName"/> + <result column="age" property="age"/> + <result column="birth_day" property="birthDay"/> + <result column="status" property="status"/> </resultMap> <resultMap id="ResultMap" type="com.ycl.jxkg.domain.vo.StudentExamInfoVO"> @@ -43,13 +47,18 @@ TCU.id, TU.real_name, TU.sex, - TU.phone + TU.phone, + TU.user_name, + TU.age, + TU.birth_day, + TU.status FROM t_classes_user TCU LEFT JOIN t_user TU ON TU.id = TCU.user_id and TU.deleted = 0 - WHERE TCU.deleted = 0 AND TCU.classes_id = #{query.classesId} + WHERE TCU.deleted = 0 AND TCU.classes_id = #{query.classesId} AND TCU.teacher = 0 <if test="query.studentName != null and query.studentName != ''">AND TU.real_name like concat('%', #{query.studentName}, '%') </if> + order by TU.id desc </select> @@ -62,7 +71,7 @@ t_classes_user TCU INNER JOIN t_user TU ON TU.id = TCU.user_id AND TCU.classes_id = #{classesId} WHERE - TCU.deleted = 0 + TCU.deleted = 0 AND TCU.teacher = 0 </select> <select id="getClassesByUserId" resultType="java.lang.Integer"> -- Gitblit v1.8.0