Эх сурвалжийг харах

Merge remote-tracking branch 'origin/dev_v3.3.4' into dev_v3.3.4

# Conflicts:
#	distributed-print-business/src/main/resources/db/log/wangliang.sql
wangliang 1 жил өмнө
parent
commit
64a6db3a7d

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/MatrixSubRequirementDto.java

@@ -18,6 +18,7 @@ public class MatrixSubRequirementDto extends BasicProfessional {
     // 毕业要求指标点ID
     @JsonSerialize(using = ToStringSerializer.class)
     private Long subRequirementId;
+    private Integer subRequirementSortNum;
 
     public Long getSubRequirementId() {
         return subRequirementId;
@@ -62,4 +63,12 @@ public class MatrixSubRequirementDto extends BasicProfessional {
     public void setContent(String content) {
         this.content = content;
     }
+
+    public Integer getSubRequirementSortNum() {
+        return subRequirementSortNum;
+    }
+
+    public void setSubRequirementSortNum(Integer subRequirementSortNum) {
+        this.subRequirementSortNum = subRequirementSortNum;
+    }
 }

+ 21 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/CourseTargetRequirement.java

@@ -3,6 +3,8 @@ package com.qmth.distributed.print.business.bean.result.report.studentRequiremen
 public class CourseTargetRequirement {
 
     private Long subRequirementId;
+    private String subRequirementName;
+    private Integer subRequirementSortNum;
     // 指标点权重
     private Double scale;
     private Long requirementId;
@@ -13,8 +15,10 @@ public class CourseTargetRequirement {
     public CourseTargetRequirement() {
     }
 
-    public CourseTargetRequirement(Long subRequirementId, Long requirementId, String requirementName, Integer requirementSortNum, Double scale) {
+    public CourseTargetRequirement(Long subRequirementId, String subRequirementName, Integer subRequirementSortNum, Long requirementId, String requirementName, Integer requirementSortNum, Double scale) {
         this.subRequirementId = subRequirementId;
+        this.subRequirementName = subRequirementName;
+        this.subRequirementSortNum = subRequirementSortNum;
         this.requirementId = requirementId;
         this.requirementName = requirementName;
         this.requirementSortNum = requirementSortNum;
@@ -29,6 +33,22 @@ public class CourseTargetRequirement {
         this.subRequirementId = subRequirementId;
     }
 
+    public String getSubRequirementName() {
+        return subRequirementName;
+    }
+
+    public void setSubRequirementName(String subRequirementName) {
+        this.subRequirementName = subRequirementName;
+    }
+
+    public Integer getSubRequirementSortNum() {
+        return subRequirementSortNum;
+    }
+
+    public void setSubRequirementSortNum(Integer subRequirementSortNum) {
+        this.subRequirementSortNum = subRequirementSortNum;
+    }
+
     public Double getScale() {
         return scale;
     }

+ 15 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentCourseRequirementDetail.java

@@ -1,5 +1,7 @@
 package com.qmth.distributed.print.business.bean.result.report.studentRequirement;
 
+import java.util.List;
+
 public class StudentCourseRequirementDetail {
 
     // 毕业要求名称
@@ -9,12 +11,14 @@ public class StudentCourseRequirementDetail {
     // 学生个人达成度
     private Double studentDegree;
 
+    private List<StudentCourseRequirementDetail> subRequirementDetailList;
+
     public StudentCourseRequirementDetail() {
     }
 
-    public StudentCourseRequirementDetail(String[] key, Double studentDegree) {
-        this.requirementName = key[1];
-        this.requirementSortNum = Integer.valueOf(key[0]);
+    public StudentCourseRequirementDetail(Integer requirementSortNum, String requirementName, Double studentDegree) {
+        this.requirementName = requirementName;
+        this.requirementSortNum = requirementSortNum;
         this.studentDegree = studentDegree;
     }
 
@@ -41,4 +45,12 @@ public class StudentCourseRequirementDetail {
     public void setStudentDegree(Double studentDegree) {
         this.studentDegree = studentDegree;
     }
+
+    public List<StudentCourseRequirementDetail> getSubRequirementDetailList() {
+        return subRequirementDetailList;
+    }
+
+    public void setSubRequirementDetailList(List<StudentCourseRequirementDetail> subRequirementDetailList) {
+        this.subRequirementDetailList = subRequirementDetailList;
+    }
 }

+ 12 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentTotalRequirement.java

@@ -1,5 +1,8 @@
 package com.qmth.distributed.print.business.bean.result.report.studentRequirement;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class StudentTotalRequirement {
 
     // 毕业要求名称
@@ -9,6 +12,7 @@ public class StudentTotalRequirement {
     private Double studentDegree;
     // 专业达成度
     private Double professionalDegree;
+    private List<StudentTotalRequirement> subStudentTotalRequirement = new ArrayList<>();
 
 
     public String getRequirementName() {
@@ -42,4 +46,12 @@ public class StudentTotalRequirement {
     public void setProfessionalDegree(Double professionalDegree) {
         this.professionalDegree = professionalDegree;
     }
+
+    public List<StudentTotalRequirement> getSubStudentTotalRequirement() {
+        return subStudentTotalRequirement;
+    }
+
+    public void setSubStudentTotalRequirement(List<StudentTotalRequirement> subStudentTotalRequirement) {
+        this.subStudentTotalRequirement = subStudentTotalRequirement;
+    }
 }

+ 1 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseRequirementMatrixServiceImpl.java

@@ -111,6 +111,7 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
                         matrixSubRequirementDto.setScale(Objects.nonNull(tpMatrix.getScale()) ? new BigDecimal(tpMatrix.getScale()) : new BigDecimal(0));
                         matrixSubRequirementDto.setContent(tpMatrix.getRequirementContent());
                         matrixSubRequirementDto.setSubRequirementId(tpMatrix.getObeSubRequirementId());
+                        matrixSubRequirementDto.setSubRequirementSortNum(tpMatrix.getSubRequirementSortNum());
                         return matrixSubRequirementDto;
                     }).collect(Collectors.toList());
                     matrixRequirementDto.setSubRequirements(matrixSubRequirementDtoList);

+ 13 - 21
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import ch.qos.logback.classic.pattern.EnsureExceptionHandling;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -21,6 +22,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.LinkedMultiValueMap;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -231,17 +233,15 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
             studentCourseRequirement.setCourseName(studentCourseInfoDto.getCourseName());
             studentCourseRequirement.setSemesterName(studentCourseInfoDto.getSemesterName());
             studentCourseRequirement.setScore(studentCourseInfoDto.getScore());
-            Map<String, Optional<CourseTargetRequirement>> map = studentCourseInfoDto.getCourseTargetRequirementList().stream().collect(Collectors.groupingBy(m -> m.getRequirementSortNum() + "##" + m.getRequirementName(), Collectors.minBy((o1, o2) -> {
-                if (o1.getCourseTargetDegree() != null && o2.getCourseTargetDegree() != null) {
-                    return o1.getCourseTargetDegree() - o2.getCourseTargetDegree() < 0 ? -1 : 1;
-                } else if (o1.getCourseTargetDegree() == null && o2.getCourseTargetDegree() != null) {
-                    return 1;
-                } else if (o1.getCourseTargetDegree() != null && o2.getCourseTargetDegree() == null) {
-                    return -1;
-                }
-                return 0;
-            })));
-            List<StudentCourseRequirementDetail> requirementDetailList = map.entrySet().stream().map(entry -> new StudentCourseRequirementDetail(entry.getKey().split("##"), entry.getValue().isPresent() ? entry.getValue().get().getCourseTargetDegree() : null)).collect(Collectors.toList());
+
+            Map<String, List<CourseTargetRequirement>> map = studentCourseInfoDto.getCourseTargetRequirementList().stream().collect(Collectors.groupingBy(m -> m.getRequirementSortNum() + "##" + m.getRequirementName()));
+            List<StudentCourseRequirementDetail> requirementDetailList = new ArrayList<>();
+            for (Map.Entry<String, List<CourseTargetRequirement>> entry : map.entrySet()) {
+                String[] s = entry.getKey().split("##");
+                StudentCourseRequirementDetail studentCourseRequirementDetail= new StudentCourseRequirementDetail(Integer.valueOf(s[0]), s[1], null);
+                studentCourseRequirementDetail.setSubRequirementDetailList(entry.getValue().stream().map(m-> new StudentCourseRequirementDetail(m.getSubRequirementSortNum(), m.getSubRequirementName(), m.getCourseTargetDegree())).collect(Collectors.toList()));
+                requirementDetailList.add(studentCourseRequirementDetail);
+            }
             requirementDetailList.sort(Comparator.comparingInt(StudentCourseRequirementDetail::getRequirementSortNum));
             studentCourseRequirement.setRequirementDetailList(requirementDetailList);
             studentCourseRequirementList.add(studentCourseRequirement);
@@ -251,10 +251,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
         // 汇总达成度
         List<CourseTargetRequirement> courseTargetRequirementListAll = new ArrayList<>();
         for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
-            courseTargetRequirementListAll.addAll(studentCourseInfoDto.getCourseTargetRequirementList().stream().map(m -> {
-                m.setCourseTargetDegree(m.getCourseTargetDegree() == null ? null : m.getCourseTargetDegree());
-                return m;
-            }).collect(Collectors.toList()));
+            courseTargetRequirementListAll.addAll(studentCourseInfoDto.getCourseTargetRequirementList());
         }
 
         Map<String, BigDecimal> requirementDegreeMap = new HashMap<>();
@@ -268,14 +265,9 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
         List<StudentTotalRequirement> studentTotalRequirementList = new ArrayList<>();
         for (Map.Entry<String, List<CourseTargetRequirement>> entry : stringDoubleMap.entrySet()) {
             String[] keys = entry.getKey().split("##");
-            Map<Long, Double> doubleMap = entry.getValue().stream().filter(m -> m.getCourseTargetDegree() != null).collect(Collectors.groupingBy(CourseTargetRequirement::getSubRequirementId, Collectors.summingDouble(CourseTargetRequirement::getCourseTargetDegree)));
             StudentTotalRequirement studentTotalRequirement = new StudentTotalRequirement();
             studentTotalRequirement.setRequirementName(keys[1]);
             studentTotalRequirement.setRequirementSortNum(Integer.valueOf(keys[0]));
-            if (!CollectionUtils.isEmpty(doubleMap)) {
-                Double minValue = doubleMap.values().stream().filter(m -> m != null).min(Double::compare).orElseGet(null);
-                studentTotalRequirement.setStudentDegree(minValue != null ? new BigDecimal(minValue).setScale(2, RoundingMode.HALF_UP).doubleValue() : null);
-            }
             if (requirementDegreeMap.containsKey(keys[1])) {
                 studentTotalRequirement.setProfessionalDegree(requirementDegreeMap.get(keys[1]).doubleValue());
             }
@@ -292,7 +284,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
         for (CourseRequirementMatrixDto courseRequirementMatrixDto : requirementMatrixDtoList) {
             for (MatrixRequirementDto requirement : courseRequirementMatrixDto.getRequirements()) {
                 for (MatrixSubRequirementDto subRequirement : requirement.getSubRequirements()) {
-                    courseTargetRequirementList.add(new CourseTargetRequirement(subRequirement.getSubRequirementId(), requirement.getId(), requirement.getName(), requirement.getSortNum(), subRequirement.getScale().doubleValue() != 0 ? subRequirement.getScale().doubleValue() : null));
+                    courseTargetRequirementList.add(new CourseTargetRequirement(subRequirement.getSubRequirementId(), subRequirement.getName(), subRequirement.getSubRequirementSortNum(), requirement.getId(), requirement.getName(), requirement.getSortNum(), subRequirement.getScale().doubleValue() != 0 ? subRequirement.getScale().doubleValue() : null));
                 }
             }
         }

+ 1 - 9
distributed-print-business/src/main/resources/db/log/wangliang.sql

@@ -42,12 +42,4 @@ ALTER TABLE t_r_basic_info CHANGE requirement_points requirement_points MEDIUMTE
 ALTER TABLE t_r_basic_info ADD course_suggest MEDIUMTEXT NULL COMMENT '课程持续改进';
 ALTER TABLE t_r_basic_info CHANGE course_suggest course_suggest MEDIUMTEXT NULL COMMENT '课程持续改进' AFTER requirement_points;
 ALTER TABLE t_r_basic_info ADD course_en_name varchar(100) NULL COMMENT '课程英文名称';
-ALTER TABLE t_r_basic_info CHANGE course_en_name course_en_name varchar(100) NULL COMMENT '课程英文名称' AFTER course_name;
-
--- 2024-06-20
-INSERT INTO sys_privilege
-(id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
-VALUES(2102, '毕业要求达成情况重新计算', '/api/admin/obe/requirements/again/calculate', 'URL', 2070, 4, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO  sys_privilege
-(id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
-VALUES(2101, '重新计算', 'Calculate', 'LINK', 2070, 5, 'AUTH', '2076,2077', 1, 0, 1);
+ALTER TABLE t_r_basic_info CHANGE course_en_name course_en_name varchar(100) NULL COMMENT '课程英文名称' AFTER course_name;

+ 3 - 0
distributed-print-business/src/main/resources/mapper/ObeCourseOutlineMapper.xml

@@ -66,6 +66,9 @@
                 <if test="dpr.requestUserId != null">
                     AND oco.user_id = #{dpr.requestUserId}
                 </if>
+                <if test="dpr.courseUserId != null">
+                    AND EXISTS( SELECT 1 FROM (select course_code from teach_course where user_id = #{dpr.courseUserId}) tc WHERE tc.course_code = bc.code)
+                </if>
                 <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
                     AND su.org_id IN
                     <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">

+ 3 - 0
distributed-print-business/src/main/resources/mapper/TCUsualScoreMapper.xml

@@ -40,6 +40,9 @@
                 <if test="dpr.requestUserId != null">
                     AND oco.user_id = #{dpr.requestUserId}
                 </if>
+                <if test="dpr.courseUserId != null">
+                    AND EXISTS( SELECT 1 FROM (select course_code from teach_course where user_id = #{dpr.courseUserId}) tc WHERE tc.course_code = bc.code)
+                </if>
                 <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
                     AND su.org_id IN
                     <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">

+ 14 - 1
distributed-print/install/mysql/upgrade/3.3.4.sql

@@ -339,4 +339,17 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 
 ALTER TABLE obe_course_outline
     ADD UNIQUE INDEX obe_course_outline_name_unique (school_id ASC, name ASC);
-ALTER TABLE obe_course_outline RENAME INDEX obe_course_outline_unique TO obe_course_outline_course_unique;
+ALTER TABLE obe_course_outline RENAME INDEX obe_course_outline_unique TO obe_course_outline_course_unique;
+
+ALTER TABLE t_r_basic_info ADD college varchar(200) NULL COMMENT '开课学院';
+ALTER TABLE t_r_basic_info ADD profession varchar(200) NULL COMMENT '开课专业';
+ALTER TABLE t_r_basic_info CHANGE college college varchar(200) NULL COMMENT '开课学院' AFTER period;
+ALTER TABLE t_r_basic_info CHANGE profession profession varchar(200) NULL COMMENT '开课专业' AFTER college;
+ALTER TABLE t_r_basic_info ADD finish_points MEDIUMTEXT NULL COMMENT '达成情况';
+ALTER TABLE t_r_basic_info CHANGE finish_points finish_points MEDIUMTEXT NULL COMMENT '达成情况' AFTER participant;
+ALTER TABLE t_r_basic_info ADD requirement_points MEDIUMTEXT NULL COMMENT '课程支撑毕业要求达成情况评价';
+ALTER TABLE t_r_basic_info CHANGE requirement_points requirement_points MEDIUMTEXT NULL COMMENT '课程支撑毕业要求达成情况评价' AFTER finish_points;
+ALTER TABLE t_r_basic_info ADD course_suggest MEDIUMTEXT NULL COMMENT '课程持续改进';
+ALTER TABLE t_r_basic_info CHANGE course_suggest course_suggest MEDIUMTEXT NULL COMMENT '课程持续改进' AFTER requirement_points;
+ALTER TABLE t_r_basic_info ADD course_en_name varchar(100) NULL COMMENT '课程英文名称';
+ALTER TABLE t_r_basic_info CHANGE course_en_name course_en_name varchar(100) NULL COMMENT '课程英文名称' AFTER course_name;