From 9dea0c6a0f3910ca7aa226602fb42d3782c3bf19 Mon Sep 17 00:00:00 2001 From: "@t2652009480" <2652009480@qq.com> Date: Fri, 25 Oct 2024 09:45:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A4=E5=8D=B7=E5=92=8C=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E3=80=81=E6=8A=A5=E5=91=8A=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stu/StuHomeworkExamController.java | 12 +- .../tch/TchHomeworkExamController.java | 191 +++++++++++++++++- .../trade/entity/StuAchievementInfo.java | 53 +++-- .../entity/StuAchievementInfoExample.java | 70 +++++++ .../entity/dto/StuExaminationGradesDTO.java | 37 ++++ .../sztzjy/trade/entity/dto/StuGradesDTO.java | 23 +++ .../entity/dto/StuHomeworkDetailsDTO.java | 41 ++++ .../entity/dto/StuHomeworkGradesDTO.java | 28 +++ .../trade/mapper/TchExamManageMapper.java | 2 + .../trade/mapper/TchHomeworkManageMapper.java | 2 + .../trade/service/TchHomeworkExamService.java | 12 ++ .../impl/TchHomeworkExamServiceImpl.java | 143 ++++++++++++- .../mappers/StuAchievementInfoMapper.xml | 25 ++- .../resources/mappers/TchExamManageMapper.xml | 3 + .../mappers/TchHomeworkManageMapper.xml | 4 + 15 files changed, 603 insertions(+), 43 deletions(-) create mode 100644 src/main/java/com/sztzjy/trade/entity/dto/StuExaminationGradesDTO.java create mode 100644 src/main/java/com/sztzjy/trade/entity/dto/StuGradesDTO.java create mode 100644 src/main/java/com/sztzjy/trade/entity/dto/StuHomeworkDetailsDTO.java create mode 100644 src/main/java/com/sztzjy/trade/entity/dto/StuHomeworkGradesDTO.java diff --git a/src/main/java/com/sztzjy/trade/controller/stu/StuHomeworkExamController.java b/src/main/java/com/sztzjy/trade/controller/stu/StuHomeworkExamController.java index 183b86c..3aef2dd 100644 --- a/src/main/java/com/sztzjy/trade/controller/stu/StuHomeworkExamController.java +++ b/src/main/java/com/sztzjy/trade/controller/stu/StuHomeworkExamController.java @@ -65,13 +65,17 @@ public class StuHomeworkExamController { } - @ApiOperation("附件作业下载") + @ApiOperation("附件/提交作业下载") @PostMapping("/download") @AnonymousAccess - public void download(HttpServletResponse response, String id) { + public void download(HttpServletResponse response, @ApiParam("用户ID") String id,@ApiParam("下载类型(附件/提交)") String type) { StuAchievementInfo achievementInfo = achievementInfoMapper.selectByPrimaryKey(id); - iFileUtil.download(response,achievementInfo.getHomeworkAnnex()); + if(type.equals("附件")){ + iFileUtil.download(response,achievementInfo.getHomeworkAnnex()); + }else { + iFileUtil.download(response,achievementInfo.getStuHomeworkAnnex()); + } } @ApiOperation("查询考试列表") @@ -110,7 +114,7 @@ public class StuHomeworkExamController { String upload = iFileUtil.upload(file); StuAchievementInfo achievementInfo = achievementInfoMapper.selectByPrimaryKey(id); - achievementInfo.setHomeworkAnnex(upload); + achievementInfo.setStuHomeworkAnnex(upload); achievementInfoMapper.updateByPrimaryKey(achievementInfo); diff --git a/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java b/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java index e54228f..5528563 100644 --- a/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java +++ b/src/main/java/com/sztzjy/trade/controller/tch/TchHomeworkExamController.java @@ -1,16 +1,21 @@ package com.sztzjy.trade.controller.tch; import cn.hutool.core.util.IdUtil; +import com.google.gson.Gson; import com.sztzjy.trade.annotation.AnonymousAccess; import com.sztzjy.trade.config.Constant; -import com.sztzjy.trade.entity.TchExamManage; -import com.sztzjy.trade.entity.TchExamManageExample; -import com.sztzjy.trade.entity.TchHomeworkManage; -import com.sztzjy.trade.entity.TchHomeworkManageExample; +import com.sztzjy.trade.config.security.TokenProvider; +import com.sztzjy.trade.entity.*; +import com.sztzjy.trade.entity.dto.StuExaminationGradesDTO; +import com.sztzjy.trade.entity.dto.StuHomeworkDetailsDTO; +import com.sztzjy.trade.entity.dto.StuHomeworkGradesDTO; +import com.sztzjy.trade.entity.dto.StuScoreDetailsInfoDTO; import com.sztzjy.trade.entity.dto.tch.ExamExportDTO; import com.sztzjy.trade.entity.dto.tch.HomeworkExportDTO; import com.sztzjy.trade.entity.dto.tch.TchHomeworkExamDTO; import com.sztzjy.trade.entity.dto.tch.TchTopicTypeDTO; +import com.sztzjy.trade.mapper.StuAchievementInfoMapper; +import com.sztzjy.trade.mapper.StuScoreDetailsInfoMapper; import com.sztzjy.trade.mapper.TchExamManageMapper; import com.sztzjy.trade.mapper.TchHomeworkManageMapper; import com.sztzjy.trade.service.TchHomeworkExamService; @@ -21,6 +26,7 @@ import com.sztzjy.trade.util.file.IFileUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.checkerframework.checker.units.qual.A; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -53,6 +59,10 @@ public class TchHomeworkExamController { TchHomeworkExamService tchHomeworkExamService; @Resource IFileUtil iFileUtil; + @Resource + StuAchievementInfoMapper achievementInfoMapper; + @Resource + StuScoreDetailsInfoMapper scoreDetailsInfoMapper; @ApiOperation("题库作业/附件作业/考试展示") @PostMapping("/getHomework") @@ -70,8 +80,10 @@ public class TchHomeworkExamController { @ApiOperation("新增(作业/考试)") @PostMapping("/add") @AnonymousAccess - public ResultEntity add(@RequestBody TchHomeworkExamDTO homeworkExamDTO, - @RequestParam(required = false)MultipartFile file) { + public ResultEntity add(@RequestParam(required = false)String jsonObject, @RequestParam(required = false)MultipartFile file) { + Gson gson=new Gson(); + + TchHomeworkExamDTO homeworkExamDTO = gson.fromJson(jsonObject, TchHomeworkExamDTO.class); Integer result=tchHomeworkExamService.add(homeworkExamDTO,file); @@ -85,8 +97,12 @@ public class TchHomeworkExamController { @ApiOperation("编辑(作业/考试)") @PostMapping("/update") @AnonymousAccess - public ResultEntity update(@RequestBody TchHomeworkExamDTO homeworkExamDTO, - @RequestParam(required = false)MultipartFile file) { + public ResultEntity update(@RequestParam(required = false) String jsonObject, @RequestParam(required = false)MultipartFile file) { + + Gson gson=new Gson(); + + TchHomeworkExamDTO homeworkExamDTO = gson.fromJson(jsonObject, TchHomeworkExamDTO.class); + Integer result=tchHomeworkExamService.update(homeworkExamDTO,file); @@ -238,4 +254,163 @@ public class TchHomeworkExamController { } + + + /* + * @Date 2023/10/11 + * *教师端评阅,下载报告 + */ + @GetMapping("/download") + @ApiOperation("下载报告") + public void download(@RequestParam String id, String TOKEN, HttpServletResponse response) { + TokenProvider.getJWTUser(TOKEN); + tchHomeworkExamService.download(id, response); + } + + + @ApiOperation("作业/考试成绩-侧边展示") + @PostMapping("/getBroHomeworkGrades") + @AnonymousAccess + public ResultEntity getBroHomeworkGrades(@ApiParam("班级名称")@RequestParam(required = false) String className, + @ApiParam("学号或姓名")@RequestParam(required = false) String stuIdOrName, + @ApiParam("id") String id, + @ApiParam("当前页") Integer index, + @ApiParam("每页条数") Integer size) { + + + return new ResultEntity<>(HttpStatus.OK,"成功",tchHomeworkExamService.getBroHomeworkGrades(className,stuIdOrName,id,index,size)); + } + @ApiOperation("作业/考试筛选下拉框") + @PostMapping("/getHomeworkScreening") + @AnonymousAccess + public ResultEntity getHomeworkScreening(@ApiParam("用户ID") String userId, + @ApiParam("作业类型") String type) { + + + return tchHomeworkExamService.getHomeworkScreening(userId,type); + } + + @ApiOperation("作业/考试成绩-展示") + @PostMapping("/getHomeworkGrades") + @AnonymousAccess + public ResultEntity getHomeworkGrades(@ApiParam("id") String id, + @ApiParam("当前页") Integer index, + @ApiParam("每页条数") Integer size, + @ApiParam("作业类型") String type) { + + + return tchHomeworkExamService.getHomeworkGrades(id,index,size,type); + } + + + + @ApiOperation("作业/考试成绩导出") + @PostMapping("/exportGrades") + @AnonymousAccess + public void exportGrades(HttpServletResponse response, + @ApiParam("类型") String type, + @ApiParam("id") String id) { + + //导出的表名 + String title = IdUtil.simpleUUID(); + + //实际数据结果集 + StuAchievementInfoExample achievementInfoExample=new StuAchievementInfoExample(); + + achievementInfoExample.createCriteria().andTaskIdEqualTo(id); + List stuAchievementInfos = achievementInfoMapper.selectByExample(achievementInfoExample); + + for (StuAchievementInfo stuAchievementInfo:stuAchievementInfos) { + if(stuAchievementInfo.getScore()==null){ //用户未提交 + stuAchievementInfos.remove(stuAchievementInfo); + } + } + + if(type.equals("作业")){ + String[] headers={"姓名", "学号", "班级", "得分", "完成用时"}; + + title=type+"成绩"+title; + + + + List homeworkGradesDTOS = convertUtil.entityToDTOList(stuAchievementInfos, StuHomeworkGradesDTO.class); + + + + //具体需要写入excel需要哪些字段,这些字段取自UserReward类,也就是上面的实际数据结果集的泛型 + List listColumn = Arrays.asList("name", "studentId", "className", "score", "completionTime"); + try { + FilePortUtil.exportExcel(response, title, headers, homeworkGradesDTOS, listColumn); + } catch (Exception e) { + e.printStackTrace(); + } + + }else { + String[] headers={"姓名", "学号", "班级", "完成用时", "答对数量", "答错数量", "正确率","得分"}; + + title=type+"成绩"+title; + + + + List examinationGradesDTOS = convertUtil.entityToDTOList(stuAchievementInfos, StuExaminationGradesDTO.class); + + + + //具体需要写入excel需要哪些字段,这些字段取自UserReward类,也就是上面的实际数据结果集的泛型 + List listColumn = Arrays.asList("name", "studentId", "className","completionTime", "answerNumber", + "answerIncorrectlyNumber","accuracy","score"); + try { + FilePortUtil.exportExcel(response, title, headers, examinationGradesDTOS, listColumn); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + @ApiOperation("作业/考试成绩详情-展示") + @PostMapping("/getHomeworkDetails") + @AnonymousAccess + public ResultEntity getHomeworkDetails(@ApiParam("id") String id, + @ApiParam("学号") @RequestParam(required = false) String studentId, + @ApiParam("当前页") Integer index, + @ApiParam("每页条数") Integer size) { + + + return tchHomeworkExamService.getHomeworkDetails(id,studentId,index,size); + } + + + @ApiOperation("作业/考试成绩详情导出") + @PostMapping("/exportGradesDetails") + @AnonymousAccess + public void exportGradesDetails(HttpServletResponse response, + @ApiParam("类型") String type, + @ApiParam("id") String id) { + + //导出的表名 + String title = IdUtil.simpleUUID(); + + //实际数据结果集 + StuScoreDetailsInfoExample scoreDetailsInfoExample=new StuScoreDetailsInfoExample(); + + scoreDetailsInfoExample.createCriteria().andTaskIdEqualTo(id); + List stuScoreDetailsInfos = scoreDetailsInfoMapper.selectByExample(scoreDetailsInfoExample); + List stuHomeworkDetailsDTOS = convertUtil.entityToDTOList(stuScoreDetailsInfos, StuHomeworkDetailsDTO.class); + + + if(type.equals("作业")){ + title=type+"成绩"+title; + }else { + title=type+"成绩"+title; + } + String[] headers={"姓名", "学号", "班级", "题干", "题型", "我的选项", "正确答案","状态","得分"}; + + //具体需要写入excel需要哪些字段,这些字段取自UserReward类,也就是上面的实际数据结果集的泛型 + List listColumn = Arrays.asList("name", "studentId", "className", "stem", "questionType","mySelect","answer","state","topicScore"); + try { + FilePortUtil.exportExcel(response, title, headers, stuHomeworkDetailsDTOS, listColumn); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/com/sztzjy/trade/entity/StuAchievementInfo.java b/src/main/java/com/sztzjy/trade/entity/StuAchievementInfo.java index 733ae0e..5ec4d8f 100644 --- a/src/main/java/com/sztzjy/trade/entity/StuAchievementInfo.java +++ b/src/main/java/com/sztzjy/trade/entity/StuAchievementInfo.java @@ -11,69 +11,72 @@ import io.swagger.annotations.ApiModelProperty; * stu_achievement_info */ public class StuAchievementInfo { - @ApiModelProperty("成绩ID") + @ApiModelProperty(notes = "成绩ID") private String id; - @ApiModelProperty("姓名") + @ApiModelProperty(notes = "姓名") private String name; - @ApiModelProperty("学号") + @ApiModelProperty(notes = "学号") private String studentId; - @ApiModelProperty("班级名称") + @ApiModelProperty(notes = "班级名称") private String className; - @ApiModelProperty("得分") + @ApiModelProperty(notes = "得分") private BigDecimal score; - @ApiModelProperty("完成用时") + @ApiModelProperty(notes = "完成用时") private String completionTime; - @ApiModelProperty("答对数量") + @ApiModelProperty(notes = "答对数量") private Integer answerNumber; - @ApiModelProperty("答错数量") + @ApiModelProperty(notes = "答错数量") private Integer answerIncorrectlyNumber; - @ApiModelProperty("正确率") + @ApiModelProperty(notes = "正确率") private String accuracy; - @ApiModelProperty("成绩来源(考试/作业名称)") + @ApiModelProperty(notes = "成绩来源(考试/作业名称)") private String scoreGrades; - @ApiModelProperty("用户ID") + @ApiModelProperty(notes = "用户ID") private String userId; - @ApiModelProperty("作业/考试ID") + @ApiModelProperty(notes = "作业/考试ID") private String taskId; - @ApiModelProperty("平均得分") + @ApiModelProperty(notes = "平均得分") private BigDecimal averageScore; - @ApiModelProperty("状态") + @ApiModelProperty(notes = "状态") private String state; - @ApiModelProperty("及格率") + @ApiModelProperty(notes = "及格率") private BigDecimal passRate; - @ApiModelProperty("作业附件URL") + @ApiModelProperty(notes = "作业附件URL") private String homeworkAnnex; - @ApiModelProperty("作业起始时间") + @ApiModelProperty(notes = "作业起始时间") private Date startingTime; - @ApiModelProperty("作业终止时间") + @ApiModelProperty(notes = "作业终止时间") private Date endTime; - @ApiModelProperty("教师评语") + @ApiModelProperty(notes = "教师评语") private String teacherComments; - @ApiModelProperty("本次作答次数") + @ApiModelProperty(notes = "本次作答次数") private Integer numberOfAnswer; - @ApiModelProperty("题数总量") + @ApiModelProperty(notes = "题数总量") private Integer totalQuestions; + @ApiModelProperty(notes = "学生提交作业附件URL") + private String stuHomeworkAnnex; + public String getId() { return id; } @@ -241,4 +244,12 @@ public class StuAchievementInfo { public void setTotalQuestions(Integer totalQuestions) { this.totalQuestions = totalQuestions; } + + public String getStuHomeworkAnnex() { + return stuHomeworkAnnex; + } + + public void setStuHomeworkAnnex(String stuHomeworkAnnex) { + this.stuHomeworkAnnex = stuHomeworkAnnex == null ? null : stuHomeworkAnnex.trim(); + } } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/trade/entity/StuAchievementInfoExample.java b/src/main/java/com/sztzjy/trade/entity/StuAchievementInfoExample.java index 8dd22f6..6b6d3dc 100644 --- a/src/main/java/com/sztzjy/trade/entity/StuAchievementInfoExample.java +++ b/src/main/java/com/sztzjy/trade/entity/StuAchievementInfoExample.java @@ -1485,6 +1485,76 @@ public class StuAchievementInfoExample { addCriterion("total_questions not between", value1, value2, "totalQuestions"); return (Criteria) this; } + + public Criteria andStuHomeworkAnnexIsNull() { + addCriterion("stu_homework_annex is null"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexIsNotNull() { + addCriterion("stu_homework_annex is not null"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexEqualTo(String value) { + addCriterion("stu_homework_annex =", value, "stuHomeworkAnnex"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexNotEqualTo(String value) { + addCriterion("stu_homework_annex <>", value, "stuHomeworkAnnex"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexGreaterThan(String value) { + addCriterion("stu_homework_annex >", value, "stuHomeworkAnnex"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexGreaterThanOrEqualTo(String value) { + addCriterion("stu_homework_annex >=", value, "stuHomeworkAnnex"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexLessThan(String value) { + addCriterion("stu_homework_annex <", value, "stuHomeworkAnnex"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexLessThanOrEqualTo(String value) { + addCriterion("stu_homework_annex <=", value, "stuHomeworkAnnex"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexLike(String value) { + addCriterion("stu_homework_annex like", value, "stuHomeworkAnnex"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexNotLike(String value) { + addCriterion("stu_homework_annex not like", value, "stuHomeworkAnnex"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexIn(List values) { + addCriterion("stu_homework_annex in", values, "stuHomeworkAnnex"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexNotIn(List values) { + addCriterion("stu_homework_annex not in", values, "stuHomeworkAnnex"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexBetween(String value1, String value2) { + addCriterion("stu_homework_annex between", value1, value2, "stuHomeworkAnnex"); + return (Criteria) this; + } + + public Criteria andStuHomeworkAnnexNotBetween(String value1, String value2) { + addCriterion("stu_homework_annex not between", value1, value2, "stuHomeworkAnnex"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/src/main/java/com/sztzjy/trade/entity/dto/StuExaminationGradesDTO.java b/src/main/java/com/sztzjy/trade/entity/dto/StuExaminationGradesDTO.java new file mode 100644 index 0000000..dec0c8f --- /dev/null +++ b/src/main/java/com/sztzjy/trade/entity/dto/StuExaminationGradesDTO.java @@ -0,0 +1,37 @@ +package com.sztzjy.trade.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author tz + * @date 2024/9/14 9:28 + */ +@Data +public class StuExaminationGradesDTO { + @ApiModelProperty(notes = "姓名") + private String name; + + @ApiModelProperty(notes = "学号") + private String studentId; + + @ApiModelProperty(notes = "班级名称") + private String className; + + @ApiModelProperty(notes = "得分") + private BigDecimal score; + + @ApiModelProperty(notes = "完成用时") + private String completionTime; + + @ApiModelProperty(notes = "答对数量") + private Integer answerNumber; + + @ApiModelProperty(notes = "答错数量") + private Integer answerIncorrectlyNumber; + + @ApiModelProperty(notes = "正确率") + private String accuracy; +} diff --git a/src/main/java/com/sztzjy/trade/entity/dto/StuGradesDTO.java b/src/main/java/com/sztzjy/trade/entity/dto/StuGradesDTO.java new file mode 100644 index 0000000..79adb42 --- /dev/null +++ b/src/main/java/com/sztzjy/trade/entity/dto/StuGradesDTO.java @@ -0,0 +1,23 @@ +package com.sztzjy.trade.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author tz + * @date 2024/9/14 9:32 + */ +@Data +public class StuGradesDTO { + @ApiModelProperty(notes = "姓名") + private String name; + + @ApiModelProperty(notes = "学号") + private String studentId; + + @ApiModelProperty(notes = "得分") + private BigDecimal score; + +} diff --git a/src/main/java/com/sztzjy/trade/entity/dto/StuHomeworkDetailsDTO.java b/src/main/java/com/sztzjy/trade/entity/dto/StuHomeworkDetailsDTO.java new file mode 100644 index 0000000..d930b83 --- /dev/null +++ b/src/main/java/com/sztzjy/trade/entity/dto/StuHomeworkDetailsDTO.java @@ -0,0 +1,41 @@ +package com.sztzjy.trade.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author tz + * @date 2024/9/14 13:24 + */ +@Data +public class StuHomeworkDetailsDTO { + @ApiModelProperty("姓名") + private String name; + + @ApiModelProperty("学号") + private String studentId; + + @ApiModelProperty("班级名称") + private String className; + + @ApiModelProperty("题干") + private String stem; + + @ApiModelProperty("题型") + private String questionType; + + @ApiModelProperty("我的选项(多个用逗号隔开)") + private String mySelect; + + @ApiModelProperty("正确答案(多个用逗号隔开)") + private String answer; + + @ApiModelProperty("状态") + private String state; + + @ApiModelProperty("分值") + private BigDecimal topicScore; + +} diff --git a/src/main/java/com/sztzjy/trade/entity/dto/StuHomeworkGradesDTO.java b/src/main/java/com/sztzjy/trade/entity/dto/StuHomeworkGradesDTO.java new file mode 100644 index 0000000..6c25626 --- /dev/null +++ b/src/main/java/com/sztzjy/trade/entity/dto/StuHomeworkGradesDTO.java @@ -0,0 +1,28 @@ +package com.sztzjy.trade.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author tz + * @date 2024/9/14 8:54 + */ +@Data +public class StuHomeworkGradesDTO { + @ApiModelProperty(notes = "姓名") + private String name; + + @ApiModelProperty(notes = "学号") + private String studentId; + + @ApiModelProperty(notes = "班级名称") + private String className; + + @ApiModelProperty(notes = "得分") + private BigDecimal score; + + @ApiModelProperty(notes = "完成用时") + private String completionTime; +} diff --git a/src/main/java/com/sztzjy/trade/mapper/TchExamManageMapper.java b/src/main/java/com/sztzjy/trade/mapper/TchExamManageMapper.java index 2a3530e..4e3ab42 100644 --- a/src/main/java/com/sztzjy/trade/mapper/TchExamManageMapper.java +++ b/src/main/java/com/sztzjy/trade/mapper/TchExamManageMapper.java @@ -27,4 +27,6 @@ public interface TchExamManageMapper { int updateByPrimaryKeySelective(TchExamManage record); int updateByPrimaryKey(TchExamManage record); + + List selectNameByUserId(String userId); } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/trade/mapper/TchHomeworkManageMapper.java b/src/main/java/com/sztzjy/trade/mapper/TchHomeworkManageMapper.java index 238c878..8e488f3 100644 --- a/src/main/java/com/sztzjy/trade/mapper/TchHomeworkManageMapper.java +++ b/src/main/java/com/sztzjy/trade/mapper/TchHomeworkManageMapper.java @@ -29,4 +29,6 @@ public interface TchHomeworkManageMapper { int updateByPrimaryKeySelective(TchHomeworkManage record); int updateByPrimaryKey(TchHomeworkManage record); + + List selectNameByUserId(String userId); } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java b/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java index 86e4761..f243ccf 100644 --- a/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java +++ b/src/main/java/com/sztzjy/trade/service/TchHomeworkExamService.java @@ -4,8 +4,10 @@ import com.github.pagehelper.PageInfo; import com.sztzjy.trade.entity.StuLearningAssessment; import com.sztzjy.trade.entity.dto.tch.TchHomeworkExamDTO; import com.sztzjy.trade.entity.dto.tch.TchTopicTypeDTO; +import com.sztzjy.trade.util.ResultEntity; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -28,4 +30,14 @@ public interface TchHomeworkExamService { Integer delete(String id, String type); List getTopic(String topicName, String attCourses, String topicType); + + void download(String id, HttpServletResponse response); + + PageInfo getBroHomeworkGrades(String className, String stuIdOrName, String id, Integer index, Integer size); + + ResultEntity getHomeworkScreening(String userId, String type); + + ResultEntity getHomeworkGrades(String id, Integer index, Integer size,String type); + + ResultEntity getHomeworkDetails(String id,String studentId, Integer index, Integer size); } diff --git a/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java b/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java index 45e0b93..83217c8 100644 --- a/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java +++ b/src/main/java/com/sztzjy/trade/service/impl/TchHomeworkExamServiceImpl.java @@ -3,6 +3,10 @@ package com.sztzjy.trade.service.impl; import com.github.pagehelper.PageInfo; import com.sztzjy.trade.config.exception.handler.ServiceException; import com.sztzjy.trade.entity.*; +import com.sztzjy.trade.entity.dto.StuExaminationGradesDTO; +import com.sztzjy.trade.entity.dto.StuGradesDTO; +import com.sztzjy.trade.entity.dto.StuHomeworkDetailsDTO; +import com.sztzjy.trade.entity.dto.StuHomeworkGradesDTO; import com.sztzjy.trade.entity.dto.tch.TchHomeworkExamDTO; import com.sztzjy.trade.entity.dto.tch.TchTopicDetailsDTO; import com.sztzjy.trade.entity.dto.tch.TchTopicTypeDTO; @@ -10,14 +14,16 @@ import com.sztzjy.trade.mapper.*; import com.sztzjy.trade.service.TchHomeworkExamService; import com.sztzjy.trade.util.ConvertUtil; import com.sztzjy.trade.util.PageUtil; +import com.sztzjy.trade.util.ResultEntity; import com.sztzjy.trade.util.file.IFileUtil; -import com.sztzjy.trade.util.file.LocalFileUtil; -import org.apache.poi.ss.formula.functions.T; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.util.Assert; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.*; @@ -44,6 +50,12 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { StuLearningAssessmentMapper learningAssessmentMapper; @Resource TchTopicDetailsMapper topicDetailsMapper; + @Resource + StuAchievementInfoMapper achievementInfoMapper; + @Resource + StuScoreDetailsInfoMapper stuScoreDetailsInfoMapper; + @Autowired + private IFileUtil fileUtil; @Override public PageInfo getHomework(String userId, String type, Integer index, Integer size) { if(!type.equals("考试")){ @@ -262,6 +274,8 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { //更新题库作业信息 tchHomeworkManage.setHomeworkName(homeworkExamDTO.getName()); tchHomeworkManage.setHomeworkClass(className); + tchHomeworkManage.setAverageScore(null); + tchHomeworkManage.setPassRate(new BigDecimal(0)); tchHomeworkManage.setStartingTime(homeworkExamDTO.getStartingTime()); tchHomeworkManage.setEndTime(homeworkExamDTO.getEndTime()); tchHomeworkManage.setUpdateTime(new Date()); @@ -272,6 +286,9 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { tchHomeworkManage.setParsingState(homeworkExamDTO.getParsingState()); tchHomeworkManage.setAnswerSate(homeworkExamDTO.getAnswerSate()); tchHomeworkManage.setTopicId(topicId); + tchHomeworkManage.setTotalPeople(0); + tchHomeworkManage.setTatalScore(new BigDecimal(0)); + tchHomeworkManage.setNumberPassers(0); update=homeworkManageMapper.updateByPrimaryKeySelective(tchHomeworkManage); } @@ -284,6 +301,8 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { tchHomeworkManage.setHomeworkName(homeworkExamDTO.getName()); tchHomeworkManage.setHomeworkClass(className); + tchHomeworkManage.setAverageScore(null); + tchHomeworkManage.setPassRate(new BigDecimal(0)); tchHomeworkManage.setState(0); tchHomeworkManage.setStartingTime(homeworkExamDTO.getStartingTime()); tchHomeworkManage.setEndTime(homeworkExamDTO.getEndTime()); @@ -293,6 +312,9 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { tchHomeworkManage.setHomeworkAnnex(upload); tchHomeworkManage.setUpdateTime(new Date()); + tchHomeworkManage.setTotalPeople(0); + tchHomeworkManage.setTatalScore(new BigDecimal(0)); + tchHomeworkManage.setNumberPassers(0); return homeworkManageMapper.updateByPrimaryKeySelective(tchHomeworkManage); } @@ -305,6 +327,10 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { examManage.setExamClass(className); examManage.setExamStartingTime(homeworkExamDTO.getStartingTime()); examManage.setExamEndTime(homeworkExamDTO.getEndTime()); + examManage.setAverageAnswerQuantity(null); + examManage.setAverageIncorrectAnswersQuantity(null); + examManage.setAverageAccuracy(new BigDecimal(0)); + examManage.setAverageScore(null); examManage.setUserId(homeworkExamDTO.getUserId()); examManage.setUpdateTime(new Date()); examManage.setState(0); @@ -314,6 +340,10 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { examManage.setParsingState(homeworkExamDTO.getParsingState()); examManage.setAnswerSate(homeworkExamDTO.getAnswerSate()); examManage.setTopicId(topicId); + examManage.setRespondentsPeoples(0); + examManage.setAnswerTotal(0); + examManage.setAnswerIncorrectlyTotal(0); + examManage.setTatalScore(new BigDecimal(0)); update=examManageMapper.updateByPrimaryKeySelective(examManage); @@ -351,6 +381,16 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { } } + //编辑完删除成绩表和成绩详情表,重新进行添加 + StuAchievementInfoExample achievementInfoExample=new StuAchievementInfoExample(); + achievementInfoExample.createCriteria().andTaskIdEqualTo(homeworkExamDTO.getId()); + achievementInfoMapper.deleteByExample(achievementInfoExample); + + StuScoreDetailsInfoExample scoreDetailsInfoExample=new StuScoreDetailsInfoExample(); + scoreDetailsInfoExample.createCriteria().andTaskIdEqualTo(homeworkExamDTO.getId()); + + stuScoreDetailsInfoMapper.deleteByExample(scoreDetailsInfoExample); + return 1; } @@ -488,12 +528,22 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { delete=examManageMapper.deleteByPrimaryKey(id); } - if(delete>0){ //再删除选题详情信息 + if(delete>0){ //再删除成绩和成绩详情和选题详情信息 + //成绩 + StuAchievementInfoExample achievementInfoExample=new StuAchievementInfoExample(); + achievementInfoExample.createCriteria().andTaskIdEqualTo(id); + achievementInfoMapper.deleteByExample(achievementInfoExample); + + //成绩详情 + StuScoreDetailsInfoExample scoreDetailsInfoExample=new StuScoreDetailsInfoExample(); + scoreDetailsInfoExample.createCriteria().andTaskIdEqualTo(id); + + //选题详情 TchTopicDetailsExample topicDetailsExample=new TchTopicDetailsExample(); topicDetailsExample.createCriteria().andTaskIdEqualTo(id); - int update = topicDetailsMapper.deleteByExample(topicDetailsExample); - return update; + return topicDetailsMapper.deleteByExample(topicDetailsExample); + } return 0; } @@ -518,4 +568,87 @@ public class TchHomeworkExamServiceImpl implements TchHomeworkExamService { return learningAssessmentMapper.selectByExample(assessmentExample); } + + + /* + * @author xcj + * @Date 2023/10/11 + * + *教师端评阅,下载报告 + */ + @Override + public void download(String id, HttpServletResponse response) { + StuAchievementInfo achievementInfo = achievementInfoMapper.selectByPrimaryKey(id); + Assert.isTrue(achievementInfo != null && achievementInfo.getStuHomeworkAnnex() != null, "报告不存在"); + fileUtil.download(response, "实验报告", achievementInfo.getStuHomeworkAnnex()); + } + + @Override + public PageInfo getBroHomeworkGrades(String className, String stuIdOrName, String id, Integer index, Integer size) { + StuAchievementInfoExample achievementInfoExample=new StuAchievementInfoExample(); + StuAchievementInfoExample.Criteria criteria = achievementInfoExample.createCriteria(); + + if(!className.isEmpty()){ + criteria.andClassNameEqualTo(className); + } + if(!stuIdOrName.isEmpty()){ + criteria.andStudentIdEqualTo(stuIdOrName); + criteria.andNameEqualTo(stuIdOrName); + } + criteria.andTaskIdEqualTo(id); + + List stuAchievementInfos = achievementInfoMapper.selectByExample(achievementInfoExample); + List stuGradesDTOS = convertUtil.entityToDTOList(stuAchievementInfos, StuGradesDTO.class); + + return PageUtil.pageHelper(stuGradesDTOS,index,size); + + } + + @Override + public ResultEntity getHomeworkScreening(String userId, String type) { + if(type.equals("作业")){ + List list = homeworkManageMapper.selectNameByUserId(userId); + return new ResultEntity(HttpStatus.OK,"成功",list); + + }else { + List list = examManageMapper.selectNameByUserId(userId); + return new ResultEntity(HttpStatus.OK,"成功",list); + } + } + + @Override + public ResultEntity getHomeworkGrades(String id, Integer index, Integer size,String type) { + StuAchievementInfoExample achievementInfoExample=new StuAchievementInfoExample(); + achievementInfoExample.createCriteria().andTaskIdEqualTo(id); + List stuAchievementInfos = achievementInfoMapper.selectByExample(achievementInfoExample); + for (StuAchievementInfo stuAchievementInfo:stuAchievementInfos) { + if(stuAchievementInfo.getScore()==null){ //表示学生还未提交试卷,不展示成绩 + stuAchievementInfos.remove(stuAchievementInfo); + } + } + if(type.equals("作业")){ + List stuHomeworkGradesDTOS = convertUtil.entityToDTOList(stuAchievementInfos, StuHomeworkGradesDTO.class); + return new ResultEntity(HttpStatus.OK,"成功",PageUtil.pageHelper(stuHomeworkGradesDTOS,index,size)); + }else { + List stuExaminationGradesDTOS = convertUtil.entityToDTOList(stuAchievementInfos, StuExaminationGradesDTO.class); + return new ResultEntity(HttpStatus.OK,"成功",PageUtil.pageHelper(stuExaminationGradesDTOS,index,size)); + } + } + + @Override + public ResultEntity getHomeworkDetails(String id,String studentId, Integer index, Integer size) { + StuScoreDetailsInfoExample stuScoreDetailsInfoExample=new StuScoreDetailsInfoExample(); + StuScoreDetailsInfoExample.Criteria criteria = stuScoreDetailsInfoExample.createCriteria(); + criteria.andTaskIdEqualTo(id); + if(!studentId.isEmpty()){ + criteria.andStudentIdEqualTo(studentId); + } + + List stuScoreDetailsInfos = stuScoreDetailsInfoMapper.selectByExample(stuScoreDetailsInfoExample); + + List stuHomeworkDetailsDTOS = convertUtil.entityToDTOList(stuScoreDetailsInfos, StuHomeworkDetailsDTO.class); + + + return new ResultEntity(HttpStatus.OK,"成功",PageUtil.pageHelper(stuHomeworkDetailsDTOS,index,size)); + } } diff --git a/src/main/resources/mappers/StuAchievementInfoMapper.xml b/src/main/resources/mappers/StuAchievementInfoMapper.xml index 7312c4f..61be32b 100644 --- a/src/main/resources/mappers/StuAchievementInfoMapper.xml +++ b/src/main/resources/mappers/StuAchievementInfoMapper.xml @@ -23,6 +23,7 @@ + @@ -85,7 +86,7 @@ id, name, student_id, class_name, score, completion_time, answer_number, answer_incorrectly_number, accuracy, score_grades, user_id, task_id, average_score, state, pass_rate, homework_annex, - starting_time, end_time, teacher_comments, number_of_answer, total_questions + starting_time, end_time, teacher_comments, number_of_answer, total_questions, stu_homework_annex @@ -340,6 +347,9 @@ total_questions = #{record.totalQuestions,jdbcType=INTEGER}, + + stu_homework_annex = #{record.stuHomeworkAnnex,jdbcType=VARCHAR}, + @@ -367,7 +377,8 @@ end_time = #{record.endTime,jdbcType=TIMESTAMP}, teacher_comments = #{record.teacherComments,jdbcType=VARCHAR}, number_of_answer = #{record.numberOfAnswer,jdbcType=INTEGER}, - total_questions = #{record.totalQuestions,jdbcType=INTEGER} + total_questions = #{record.totalQuestions,jdbcType=INTEGER}, + stu_homework_annex = #{record.stuHomeworkAnnex,jdbcType=VARCHAR} @@ -435,6 +446,9 @@ total_questions = #{totalQuestions,jdbcType=INTEGER}, + + stu_homework_annex = #{stuHomeworkAnnex,jdbcType=VARCHAR}, + where id = #{id,jdbcType=VARCHAR} @@ -459,7 +473,8 @@ end_time = #{endTime,jdbcType=TIMESTAMP}, teacher_comments = #{teacherComments,jdbcType=VARCHAR}, number_of_answer = #{numberOfAnswer,jdbcType=INTEGER}, - total_questions = #{totalQuestions,jdbcType=INTEGER} + total_questions = #{totalQuestions,jdbcType=INTEGER}, + stu_homework_annex = #{stuHomeworkAnnex,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR} \ No newline at end of file diff --git a/src/main/resources/mappers/TchExamManageMapper.xml b/src/main/resources/mappers/TchExamManageMapper.xml index c649576..2277de1 100644 --- a/src/main/resources/mappers/TchExamManageMapper.xml +++ b/src/main/resources/mappers/TchExamManageMapper.xml @@ -511,4 +511,7 @@ tatal_score = #{tatalScore,jdbcType=DECIMAL} where exam_id = #{examId,jdbcType=VARCHAR} + \ No newline at end of file diff --git a/src/main/resources/mappers/TchHomeworkManageMapper.xml b/src/main/resources/mappers/TchHomeworkManageMapper.xml index 813c998..2089c7d 100644 --- a/src/main/resources/mappers/TchHomeworkManageMapper.xml +++ b/src/main/resources/mappers/TchHomeworkManageMapper.xml @@ -510,4 +510,8 @@ number_passers = #{numberPassers,jdbcType=INTEGER} where homework_id = #{homeworkId,jdbcType=VARCHAR} + + \ No newline at end of file