Преглед изворни кода

add:教学班 教学学生 教师团队更改

caozixuan пре 1 година
родитељ
комит
7ec75ee7e1
20 измењених фајлова са 519 додато и 84 уклоњено
  1. 11 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/CourseWeightDetailDto.java
  2. 17 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/CourseWeightDto.java
  3. 70 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/AssignClazzParam.java
  4. 23 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/CourseWeightParam.java
  5. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/TeachClazzParams.java
  6. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/TeachStudentBatchParam.java
  7. 49 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/ClazzDistributedResult.java
  8. 48 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/CourseWeightResult.java
  9. 11 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TeachClazz.java
  10. 43 20
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TeachCourse.java
  11. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CourseWeightService.java
  12. 20 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TeachCourseService.java
  13. 75 38
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseWeightServiceImpl.java
  14. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java
  15. 97 9
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TeachCourseServiceImpl.java
  16. 15 0
      distributed-print-business/src/main/resources/db/log/脚本-caozx.sql
  17. 0 3
      distributed-print-business/src/main/resources/mapper/TeachCourseMapper.xml
  18. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/TCUsualScoreController.java
  19. 3 4
      distributed-print/src/main/java/com/qmth/distributed/print/api/TeachClazzController.java
  20. 28 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/TeachCourseController.java

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/CourseWeightDetailDto.java

@@ -21,6 +21,9 @@ public class CourseWeightDetailDto {
     @ApiModelProperty("评价方式名称")
     private String evaluationName;
 
+    @ApiModelProperty("评价方式描述")
+    private String evaluationDesc;
+
     @ApiModelProperty("是否启用")
     private Boolean enable;
 
@@ -81,4 +84,12 @@ public class CourseWeightDetailDto {
     public void setTargetScore(BigDecimal targetScore) {
         this.targetScore = targetScore;
     }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
 }

+ 17 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/CourseWeightDto.java

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 课程权重dto
@@ -24,6 +25,9 @@ public class CourseWeightDto {
     @ApiModelProperty("毕业要求指标(评价依据)")
     private List<CourseDimensionDto> dimensionList;
 
+    @ApiModelProperty("毕业要求指标(评价依据)解析字符串")
+    private String dimensionStr;
+
     @ApiModelProperty("支撑毕业要求")
     private String degreeRequirement;
 
@@ -73,6 +77,14 @@ public class CourseWeightDto {
         this.dimensionList = dimensionList;
     }
 
+    public String getDimensionStr() {
+        return dimensionStr;
+    }
+
+    public void setDimensionStr(String dimensionStr) {
+        this.dimensionStr = dimensionStr;
+    }
+
     public String getDegreeRequirement() {
         return degreeRequirement;
     }
@@ -104,4 +116,9 @@ public class CourseWeightDto {
     public void setEvaluationList(List<CourseWeightDetailDto> evaluationList) {
         this.evaluationList = evaluationList;
     }
+
+    // 解析指标集合
+    public void analyzeDimensionStr() {
+        dimensionStr = dimensionList.stream().map(e -> String.format("%s(%s)", e.getName(), e.getCode())).collect(Collectors.joining(","));
+    }
 }

+ 70 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/AssignClazzParam.java

@@ -0,0 +1,70 @@
+package com.qmth.distributed.print.business.bean.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description: 分配班级参数
+ * @Author: CaoZixuan
+ * @Date: 2024-03-07
+ */
+public class AssignClazzParam {
+    @ApiModelProperty("考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "请选择考试")
+    @Range(min = 1L, message = "请选择考试")
+    private Long examId;
+
+    @ApiModelProperty("课程编号")
+    private String courseCode;
+
+    @ApiModelProperty("教师id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "请选择教师")
+    @Range(min = 1L, message = "请选择教师")
+    private Long teacherId;
+
+    @ApiModelProperty("班级集合")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotEmpty(message = "请选择班级")
+    @Range(min = 1L, message = "请选择班级")
+    private List<Long> basicTeachClazzIdList;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public List<Long> getBasicTeachClazzIdList() {
+        return basicTeachClazzIdList;
+    }
+
+    public void setBasicTeachClazzIdList(List<Long> basicTeachClazzIdList) {
+        this.basicTeachClazzIdList = basicTeachClazzIdList;
+    }
+}

+ 23 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/CourseWeightParam.java

@@ -9,6 +9,7 @@ import org.hibernate.validator.constraints.Range;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -29,6 +30,12 @@ public class CourseWeightParam {
     @Length(min = 1, message = "缺少课程编号")
     private String courseCode;
 
+    @ApiModelProperty("默认占比")
+    private BigDecimal defaultRate;
+
+    @ApiModelProperty("自定义占比")
+    private BigDecimal customRate;
+
     @ApiModelProperty("课程权重表单")
     @NotEmpty(message = "缺少权重设置表单")
     private List<CourseWeightDto> submitForm;
@@ -49,6 +56,22 @@ public class CourseWeightParam {
         this.courseCode = courseCode;
     }
 
+    public BigDecimal getDefaultRate() {
+        return defaultRate;
+    }
+
+    public void setDefaultRate(BigDecimal defaultRate) {
+        this.defaultRate = defaultRate;
+    }
+
+    public BigDecimal getCustomRate() {
+        return customRate;
+    }
+
+    public void setCustomRate(BigDecimal customRate) {
+        this.customRate = customRate;
+    }
+
     public List<CourseWeightDto> getSubmitForm() {
         return submitForm;
     }

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/TeachClazzParams.java

@@ -22,13 +22,13 @@ public class TeachClazzParams {
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "班级id(修改时必填)")
     @NotEmpty
-    @Range(min = 1L,message = "请选择班级")
+//    @Range(min = 1L,message = "请选择班级")
     private List<Long> idList;
 
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "教学课程id")
     @NotNull(message = "教学课程id")
-    @Range(min = 1L, message = "请选择课程")
+//    @Range(min = 1L, message = "请选择课程")
     private Long teachCourseId;
 
     public List<Long> getIdList() {

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/TeachStudentBatchParam.java

@@ -8,6 +8,7 @@ import org.hibernate.validator.constraints.Range;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
 import java.util.List;
 import java.util.Set;
 
@@ -27,7 +28,7 @@ public class TeachStudentBatchParam {
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "学生字典id集合")
     @NotEmpty(message = "请选择要添加的学生")
-    @Range(min = 1L, message = "请选择要添加的学生")
+    @Size(min = 1, message = "请选择要添加的学生")
     private List<Long> basicExamStudentIdList;
 
     public Long getTeachClazzId() {

+ 49 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/ClazzDistributedResult.java

@@ -0,0 +1,49 @@
+package com.qmth.distributed.print.business.bean.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description: 班级被分配情况
+ * @Author: CaoZixuan
+ * @Date: 2024-03-07
+ */
+public class ClazzDistributedResult {
+
+    @ApiModelProperty("教学班id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long clazzId;
+
+    @ApiModelProperty("教学班名称")
+    private String clazzName;
+
+    @ApiModelProperty("教师信息集合")
+    private List<DictionaryResult> teacherList;
+
+    public Long getClazzId() {
+        return clazzId;
+    }
+
+    public void setClazzId(Long clazzId) {
+        this.clazzId = clazzId;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
+
+    public List<DictionaryResult> getTeacherList() {
+        return teacherList;
+    }
+
+    public void setTeacherList(List<DictionaryResult> teacherList) {
+        this.teacherList = teacherList;
+    }
+}

+ 48 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/CourseWeightResult.java

@@ -0,0 +1,48 @@
+package com.qmth.distributed.print.business.bean.result;
+
+import com.qmth.distributed.print.business.bean.dto.CourseWeightDto;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description: 课程权重结果
+ * @Author: CaoZixuan
+ * @Date: 2024-03-07
+ */
+public class CourseWeightResult {
+
+    @ApiModelProperty("默认占比")
+    private BigDecimal defaultRate;
+
+    @ApiModelProperty("自定义占比")
+    private BigDecimal customRate;
+
+    @ApiModelProperty("课程权重表单")
+    private List<CourseWeightDto> submitForm;
+
+    public BigDecimal getDefaultRate() {
+        return defaultRate;
+    }
+
+    public void setDefaultRate(BigDecimal defaultRate) {
+        this.defaultRate = defaultRate;
+    }
+
+    public BigDecimal getCustomRate() {
+        return customRate;
+    }
+
+    public void setCustomRate(BigDecimal customRate) {
+        this.customRate = customRate;
+    }
+
+    public List<CourseWeightDto> getSubmitForm() {
+        return submitForm;
+    }
+
+    public void setSubmitForm(List<CourseWeightDto> submitForm) {
+        this.submitForm = submitForm;
+    }
+}

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TeachClazz.java

@@ -37,6 +37,9 @@ public class TeachClazz extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "教学班名称(冗余字段【教学班名称不会变】)")
     private String clazzName;
 
+    @ApiModelProperty(value = "分配班级时属于的教学课程id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long belongTeachCourseId;
     public Long getSchoolId() {
         return schoolId;
     }
@@ -76,4 +79,12 @@ public class TeachClazz extends BaseEntity implements Serializable {
     public void setClazzName(String clazzName) {
         this.clazzName = clazzName;
     }
+
+    public Long getBelongTeachCourseId() {
+        return belongTeachCourseId;
+    }
+
+    public void setBelongTeachCourseId(Long belongTeachCourseId) {
+        this.belongTeachCourseId = belongTeachCourseId;
+    }
 }

+ 43 - 20
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TeachCourse.java

@@ -8,6 +8,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 /**
  * @Description: 教学课程表
@@ -27,11 +28,11 @@ public class TeachCourse extends BaseEntity implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long examId;
 
-//    // TODO: 2024/2/28  删除该字段
-//    @Deprecated
-//    @ApiModelProperty(value = "基础课程id")
-//    @JsonSerialize(using = ToStringSerializer.class)
-//    private Long basicCourseId;
+    //    // TODO: 2024/2/28  删除该字段
+    //    @Deprecated
+    //    @ApiModelProperty(value = "基础课程id")
+    //    @JsonSerialize(using = ToStringSerializer.class)
+    //    private Long basicCourseId;
 
     @ApiModelProperty(value = "课程编号")
     private String courseCode;
@@ -46,18 +47,24 @@ public class TeachCourse extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "权重设置")
     private Boolean weightSetting;
 
+    @ApiModelProperty(value = "默认占比")
+    private BigDecimal defaultRate;
+
+    @ApiModelProperty(value = "自定义占比")
+    private BigDecimal customRate;
+
     public TeachCourse() {
 
     }
 
-//    public TeachCourse(SysUser sysUser, Long basicCourseId, Long teachId) {
-//        setSchoolId(sysUser.getSchoolId());
-//        setBasicCourseId(basicCourseId);
-//        setUserId(teachId);
-//        insertInfo(sysUser.getId());
-//        updateInfo(sysUser.getId());
-//        this.enable = true;
-//    }
+    //    public TeachCourse(SysUser sysUser, Long basicCourseId, Long teachId) {
+    //        setSchoolId(sysUser.getSchoolId());
+    //        setBasicCourseId(basicCourseId);
+    //        setUserId(teachId);
+    //        insertInfo(sysUser.getId());
+    //        updateInfo(sysUser.getId());
+    //        this.enable = true;
+    //    }
 
     public Long getSchoolId() {
         return schoolId;
@@ -107,11 +114,27 @@ public class TeachCourse extends BaseEntity implements Serializable {
         this.weightSetting = weightSetting;
     }
 
-//    public Long getBasicCourseId() {
-//        return basicCourseId;
-//    }
-//
-//    public void setBasicCourseId(Long basicCourseId) {
-//        this.basicCourseId = basicCourseId;
-//    }
+    //    public Long getBasicCourseId() {
+    //        return basicCourseId;
+    //    }
+    //
+    //    public void setBasicCourseId(Long basicCourseId) {
+    //        this.basicCourseId = basicCourseId;
+    //    }
+
+    public BigDecimal getDefaultRate() {
+        return defaultRate;
+    }
+
+    public void setDefaultRate(BigDecimal defaultRate) {
+        this.defaultRate = defaultRate;
+    }
+
+    public BigDecimal getCustomRate() {
+        return customRate;
+    }
+
+    public void setCustomRate(BigDecimal customRate) {
+        this.customRate = customRate;
+    }
 }

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CourseWeightService.java

@@ -1,10 +1,10 @@
 package com.qmth.distributed.print.business.service;
 
-import com.qmth.distributed.print.business.bean.dto.CourseWeightDto;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.dto.CourseWeightFormDto;
 import com.qmth.distributed.print.business.bean.params.CourseWeightParam;
+import com.qmth.distributed.print.business.bean.result.CourseWeightResult;
 import com.qmth.distributed.print.business.entity.CourseWeight;
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.entity.SysUser;
 
 import java.util.List;
@@ -27,7 +27,7 @@ public interface CourseWeightService extends IService<CourseWeight> {
      * @param userId     教师id
      * @return 课程权重信息
      */
-    List<CourseWeightDto> findCourseWeight(Long examId, String courseCode, Long userId);
+    CourseWeightResult findCourseWeight(Long examId, String courseCode, Long userId);
 
     /**
      * 保存课程权重

+ 20 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TeachCourseService.java

@@ -2,7 +2,9 @@ package com.qmth.distributed.print.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.distributed.print.business.bean.params.AssignClazzParam;
 import com.qmth.distributed.print.business.bean.params.TeachCourseSelectParam;
+import com.qmth.distributed.print.business.bean.result.ClazzDistributedResult;
 import com.qmth.distributed.print.business.bean.result.CourseWeightSettingStatusResult;
 import com.qmth.distributed.print.business.bean.params.TeachCourseParams;
 import com.qmth.distributed.print.business.bean.params.TeacherTeamParam;
@@ -166,4 +168,22 @@ public interface TeachCourseService extends IService<TeachCourse> {
      * @return 课程权重设置状态
      */
     CourseWeightSettingStatusResult findCourseWeightSettingStatus(Long examId, String courseCode, Long userId);
+
+    /**
+     * 查询班级分配情况
+     *
+     * @param examId     考试id
+     * @param courseCode 课程编号
+     * @param clazzName  班级名称
+     * @return 分配情况结果
+     */
+    List<ClazzDistributedResult> findClazzDistributedStatus(Long examId, String courseCode, String clazzName);
+
+    /**
+     * 分配班级
+     *
+     * @param assignClazzParam 分配班级参数
+     * @param requestUser      登录人
+     */
+    void assignClazz(AssignClazzParam assignClazzParam, SysUser requestUser);
 }

+ 75 - 38
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseWeightServiceImpl.java

@@ -10,9 +10,12 @@ import com.qmth.distributed.print.business.bean.dto.CourseWeightFormDto;
 import com.qmth.distributed.print.business.bean.params.CourseWeightParam;
 import com.qmth.distributed.print.business.bean.result.CourseEvaluationResult;
 import com.qmth.distributed.print.business.bean.result.CourseTargetResult;
+import com.qmth.distributed.print.business.bean.result.CourseWeightResult;
+import com.qmth.distributed.print.business.entity.CourseEvaluation;
 import com.qmth.distributed.print.business.entity.CourseTarget;
 import com.qmth.distributed.print.business.entity.CourseWeight;
 import com.qmth.distributed.print.business.entity.TeachCourse;
+import com.qmth.distributed.print.business.enums.CourseEvaluationTypeEnum;
 import com.qmth.distributed.print.business.enums.CourseSettingTypeEnum;
 import com.qmth.distributed.print.business.mapper.CourseWeightMapper;
 import com.qmth.distributed.print.business.service.CourseEvaluationService;
@@ -28,10 +31,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.math.RoundingMode;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -55,8 +56,11 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
     private CourseEvaluationService courseEvaluationService;
 
     @Override
-    public List<CourseWeightDto> findCourseWeight(Long examId, String courseCode, Long userId) {
+    public CourseWeightResult findCourseWeight(Long examId, String courseCode, Long userId) {
         TeachCourse teachCourse = teachCourseService.findByExamIdCourseCodeAndUserId(examId, courseCode, userId);
+        BigDecimal defaultRate = teachCourse.getDefaultRate();
+        BigDecimal customRate = teachCourse.getCustomRate();
+
         Long teachCourseId = teachCourse.getId();
 
         // 现有目标
@@ -71,7 +75,7 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
         Map<String, CourseWeight> courseWeightMap = courseWeightList.stream()
                 .collect(Collectors.toMap(k -> k.getTargetId() + SystemConstant.HYPHEN + k.getEvaluationId(), v -> v));
 
-        List<CourseWeightDto> result = new ArrayList<>();
+        List<CourseWeightDto> submitForm = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(courseTargetList)) {
             for (CourseTargetResult courseTarget : courseTargetList) {
                 Long targetId = courseTarget.getId();
@@ -96,10 +100,14 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
                         enable = courseWeight.getEnable();
                         weight = courseWeight.getWeight();
                         targetScore = courseWeight.getTargetScore();
+                    } else if (CourseEvaluationTypeEnum.DEFAULT.equals(courseEvaluationResult.getType())) {
+                        enable = true;
+                        weight = new BigDecimal(100);
                     }
                     CourseWeightDetailDto detail = new CourseWeightDetailDto();
                     detail.setEvaluationId(evaluationId);
                     detail.setEvaluationName(evaluationName);
+                    detail.setEvaluationDesc(courseEvaluationResult.getEvaluationDesc());
                     detail.setEnable(enable);
                     detail.setWeight(weight);
                     detail.setTargetScore(targetScore);
@@ -113,23 +121,32 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
                 courseWeightDto.setCourseTargetId(targetId);
                 courseWeightDto.setCourseTargetName(targetName);
                 courseWeightDto.setDimensionList(dimensionList);
+                courseWeightDto.analyzeDimensionStr();
                 courseWeightDto.setDegreeRequirement(degreeRequirement);
                 courseWeightDto.setTotalWeight(totalWeight);
                 courseWeightDto.setTotalScore(totalScore);
                 courseWeightDto.setEvaluationList(courseWeightDetailDtoList);
-                result.add(courseWeightDto);
+                courseWeightDto.analyzeDimensionStr();
+                submitForm.add(courseWeightDto);
             }
         }
-
+        CourseWeightResult result = new CourseWeightResult();
+        result.setDefaultRate(defaultRate);
+        result.setCustomRate(customRate);
+        result.setSubmitForm(submitForm);
         return result;
     }
 
     @Transactional
     @Override
     public void saveCourseWeight(CourseWeightParam courseWeightParam, SysUser requestUser) {
+        List<String> errorMsgList = new ArrayList<>();
         Long requestUserId = requestUser.getId();
         Long examId = courseWeightParam.getExamId();
         String courseCode = courseWeightParam.getCourseCode();
+        BigDecimal defaultRate = courseWeightParam.getDefaultRate();
+        BigDecimal customRate = courseWeightParam.getCustomRate();
+
         List<CourseWeightDto> submitForm = courseWeightParam.getSubmitForm();
 
         TeachCourse teachCourse = teachCourseService.findByExamIdCourseCodeAndUserId(examId, courseCode, requestUserId);
@@ -140,15 +157,12 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
         List<CourseTarget> courseTargetList = new ArrayList<>();
         List<CourseWeight> courseWeightList = new ArrayList<>();
 
-        // 目标分值检测
-        BigDecimal checkTotalScore = BigDecimal.ZERO;
-
-        // 评价方式整体权重检测
-        BigDecimal checkEvaluationTotalWeight = BigDecimal.ZERO;
-
         // 课程目标整体权重检测
         BigDecimal checkTargetTotalWeight = BigDecimal.ZERO;
 
+        // 一个评价方式必须在一个目标下
+        Map<Long, CourseEvaluationTypeEnum> evaluationMap = new HashMap<>();
+
         for (CourseWeightDto courseWeightDto : submitForm) {
             Long courseTargetId = courseWeightDto.getCourseTargetId();
             CourseTarget courseTarget = courseTargetService.getById(courseTargetId);
@@ -162,12 +176,40 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
             courseTargetList.add(courseTarget);
             checkTargetTotalWeight = checkTargetTotalWeight.add(totalWeight);
 
+            // 评价方式整体权重检测(自定义)
+            BigDecimal checkEvaluationCustomTotalWeight = BigDecimal.ZERO;
             List<CourseWeightDetailDto> detailDtoList = courseWeightDto.getEvaluationList();
             for (CourseWeightDetailDto detail : detailDtoList) {
                 Long evaluationId = detail.getEvaluationId();
+                CourseEvaluation courseEvaluation = courseEvaluationService.getById(evaluationId);
+                BigDecimal rate = new BigDecimal(0);
+                CourseEvaluationTypeEnum evaluationType = courseEvaluation.getType();
+                if (CourseEvaluationTypeEnum.DEFAULT.equals(evaluationType)) {
+                    rate = defaultRate;
+                } else if (CourseEvaluationTypeEnum.CUSTOM.equals(evaluationType)) {
+                    rate = customRate;
+                }
+
                 Boolean enable = detail.getEnable();
                 BigDecimal weight = detail.getWeight();
-                BigDecimal targetScore = detail.getTargetScore();
+                if (enable && CourseEvaluationTypeEnum.CUSTOM.equals(evaluationType)) {
+                    if (evaluationMap.containsKey(evaluationId)) {
+                        throw ExceptionResultEnum.ERROR.exception("评价方式只能被一个课程目标使用");
+                    } else {
+                        evaluationMap.put(evaluationId, evaluationType);
+                    }
+                    checkEvaluationCustomTotalWeight = checkEvaluationCustomTotalWeight.add(weight);
+
+                }
+
+                BigDecimal denominator = new BigDecimal(100);
+                // 目标分值计算: 100 * 类型占比 * 目标占比 * 评价方式占比
+                BigDecimal targetScore = new BigDecimal(0);
+                if (enable) {
+                    targetScore = new BigDecimal(100).multiply(rate).divide(denominator, 2, RoundingMode.HALF_UP)
+                            .multiply(totalWeight).divide(denominator, 2, RoundingMode.HALF_UP).multiply(weight)
+                            .divide(denominator, 2, RoundingMode.HALF_UP);
+                }
 
                 CourseWeight courseWeight = new CourseWeight();
                 courseWeight.setTeachCourseId(teachCourseId);
@@ -182,32 +224,21 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
                 courseWeight.setTargetScore(targetScore);
                 courseWeight.insertInfo(requestUserId);
                 courseWeightList.add(courseWeight);
-
-                if (enable) {
-                    checkTotalScore = checkTotalScore.add(targetScore);
-                    checkEvaluationTotalWeight = checkEvaluationTotalWeight.add(weight);
-                }
             }
-        }
-        List<String> errorMsgList = new ArrayList<>();
-        // 数据校验1:所有课程目标的总目标分值等于100分;
-        int checkTotalScoreCompareResult = checkTotalScore.compareTo(new BigDecimal(100));
-        if (checkTotalScoreCompareResult > 0) {
-            errorMsgList.add(String.format("所有课程目标的总目标分值为[%s],超过100分", checkTotalScore));
-        } else if (checkTotalScoreCompareResult < 0) {
-            errorMsgList.add(String.format("所有课程目标的总目标分值为[%s],低于100分", checkTotalScore));
+            // 数据校验2:各课程目标下自定义评价方式的总权重应等于100%;
+            int checkEvaluationTotalWeightCompareResult = checkEvaluationCustomTotalWeight.compareTo(new BigDecimal(100));
+            if (checkEvaluationTotalWeightCompareResult > 0) {
+                errorMsgList.add(String.format("课程目标[%s]下评价方式的总权重为[%s],超过[%s]", courseTarget.getTargetName(),
+                        String.valueOf(checkEvaluationCustomTotalWeight) + '%', "100%"));
+            } else if (checkEvaluationTotalWeightCompareResult < 0) {
+                errorMsgList.add(String.format("课程目标[%s]下评价方式的总权重为[%s],低于[%s]", courseTarget.getTargetName(),
+                        String.valueOf(checkEvaluationCustomTotalWeight) + '%', "100%"));
+            }
         }
 
-        // 数据校验2:各课程目标下评价方式的总权重应等于100%;
-        int checkEvaluationTotalWeightCompareResult = checkEvaluationTotalWeight.compareTo(new BigDecimal(100));
-        if (checkEvaluationTotalWeightCompareResult > 0) {
-            errorMsgList.add(
-                    String.format("所有课程目标下评价方式的总权重为[%s],超过[%s]", String.valueOf(checkEvaluationTotalWeight) + '%',
-                            "100%"));
-        } else if (checkEvaluationTotalWeightCompareResult < 0) {
-            errorMsgList.add(
-                    String.format("所有课程目标下评价方式的总权重为[%s],低于[%s]", String.valueOf(checkEvaluationTotalWeight) + '%',
-                            "100%"));
+        // 数据校验1:默认和自定义的权重合为100;
+        if (defaultRate.add(customRate).compareTo(new BigDecimal(100)) != 0) {
+            errorMsgList.add("平时成绩权重和期末成绩权重之和不为100%");
         }
 
         // 数据校验3:目标整体权重应等于100%,用于计算课程整体达成度。
@@ -229,6 +260,8 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
         this.saveBatch(courseWeightList);
         // 更新课程权重设置状态
         teachCourse.setWeightSetting(true);
+        teachCourse.setDefaultRate(defaultRate);
+        teachCourse.setCustomRate(customRate);
         teachCourseService.updateById(teachCourse);
     }
 
@@ -240,6 +273,10 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
         courseTargetUpdateWrapper.lambda().eq(CourseTarget::getTeachCourseId, teachCourseId)
                 .set(CourseTarget::getTotalWeight, null);
         courseTargetService.update(courseTargetUpdateWrapper);
+
+        UpdateWrapper<TeachCourse> teachCourseUpdateWrapper = new UpdateWrapper<>();
+        teachCourseUpdateWrapper.lambda().eq(TeachCourse::getId, teachCourseId).set(TeachCourse::getDefaultRate, null).set(TeachCourse::getCustomRate, null);
+        teachCourseService.update(teachCourseUpdateWrapper);
     }
 
     @Override

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

@@ -119,7 +119,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
             targetWebMap = new LinkedHashMap<>();
             usualScoreMap = new LinkedHashMap<>();
             //TODO 获取曹子轩课程目标信息
-            List<CourseWeightDto> courseWeightDtoList = courseWeightService.findCourseWeight(trBasicInfo.getExamId(), trBasicInfo.getCourseCode(), sysUser.getId());
+            List<CourseWeightDto> courseWeightDtoList = courseWeightService.findCourseWeight(trBasicInfo.getExamId(), trBasicInfo.getCourseCode(), sysUser.getId()).getSubmitForm();
             if (CollectionUtils.isEmpty(courseWeightDtoList)) {
                 throw ExceptionResultEnum.ERROR.exception("未设置课程目标平时作业1");
             }

+ 97 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TeachCourseServiceImpl.java

@@ -1,15 +1,14 @@
 package com.qmth.distributed.print.business.service.impl;
 
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.google.common.collect.Lists;
-import com.qmth.distributed.print.business.bean.dto.excel.TeacherTeamDto;
+import com.qmth.distributed.print.business.bean.params.AssignClazzParam;
 import com.qmth.distributed.print.business.bean.params.TeachCourseParams;
 import com.qmth.distributed.print.business.bean.params.TeachCourseSelectParam;
 import com.qmth.distributed.print.business.bean.params.TeacherTeamParam;
+import com.qmth.distributed.print.business.bean.result.ClazzDistributedResult;
 import com.qmth.distributed.print.business.bean.result.CourseWeightSettingStatusResult;
 import com.qmth.distributed.print.business.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.TeachCourseResult;
@@ -32,13 +31,11 @@ import com.qmth.teachcloud.common.service.BasicCourseService;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.service.SysRoleService;
 import com.qmth.teachcloud.common.service.SysUserService;
-import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
@@ -85,6 +82,12 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
     @Resource
     private CourseDimensionService courseDimensionService;
 
+    @Resource
+    private BasicTeachClazzService basicTeachClazzService;
+
+    @Resource
+    private TeachStudentService teachStudentService;
+
     @Override
     public IPage<TeachCourseResult> teachCoursePage(Long examId, String courseName, int pageNumber, int pageSize, Long userId) {
         courseName = SystemConstant.translateSpecificSign(courseName);
@@ -147,7 +150,7 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
                             new QueryWrapper<TeachCourse>().lambda().eq(TeachCourse::getExamId, examId).eq(TeachCourse::getUserId, userId)).stream().map(TeachCourse::getCourseCode)
                     .collect(Collectors.toList());
 
-            courseCodeList = courseCodeList.stream().filter(occupiedCourseCodeList::contains).collect(Collectors.toList());
+            courseCodeList = courseCodeList.stream().filter(e -> !occupiedCourseCodeList.contains(e)).collect(Collectors.toList());
 
             TeachCourse tmp = new TeachCourse();
             tmp.setSchoolId(schoolId);
@@ -159,6 +162,7 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
             for (String courseCode : courseCodeList) {
                 TeachCourse cell = new TeachCourse();
                 BeanUtils.copyProperties(tmp, cell);
+                cell.setCourseCode(courseCode);
                 cell.insertInfo(userId);
                 this.save(cell);
 
@@ -231,7 +235,7 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
             throw ExceptionResultEnum.ERROR.exception(
                     String.format("[%s]课程非本人创建,无法删除", String.join(",", cantDeleteCourseCodeList)));
         }
-        List<TeachCourse> mainTeachCourseList = teachCourseList.stream().filter(e -> e.getCreateId().equals(userId)).collect(Collectors.toList());
+        List<TeachCourse> mainTeachCourseList = teachCourseList.stream().filter(e -> e.getCreateId().equals(e.getUserId())).collect(Collectors.toList());
         if (mainTeachCourseList.size() > 0) {
             for (TeachCourse mainTeachCourse : mainTeachCourseList) {
                 List<TeachCourse> teamList = this.list(
@@ -258,10 +262,17 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
             // 删除权重设置
             courseWeightService.remove(
                     new QueryWrapper<CourseWeight>().lambda().eq(CourseWeight::getTeachCourseId, teachCourseId));
+
+            // 删除教学学生
+            teachStudentService.remove(
+                    new QueryWrapper<TeachStudent>().lambda().eq(TeachStudent::getTeachCourseId, teachCourseId));
+            // 删除教学班
+            teachClazzService.remove(
+                    new QueryWrapper<TeachClazz>().lambda().eq(TeachClazz::getTeachCourseId, teachCourseId).or()
+                            .eq(TeachClazz::getBelongTeachCourseId, teachCourseId));
+
             // 删除教学课程
             this.removeById(teachCourseId);
-
-            // TODO: 2024/3/6 可能还要删除教学班学生等 
         }
     }
 
@@ -493,4 +504,81 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
         result.setCourseCreateId(createId);
         return result;
     }
+
+    @Override
+    public List<ClazzDistributedResult> findClazzDistributedStatus(Long examId, String courseCode, String clazzName) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        clazzName = SystemConstant.translateSpecificSign(clazzName);
+
+        TeachCourse teacherTeachCourse = this.findByExamIdCourseCodeAndUserId(examId, courseCode, requestUser.getId());
+        Long leaderId = teacherTeachCourse.getCreateId();
+        TeachCourse leaderTeachCourse = this.findByExamIdCourseCodeAndUserId(examId, courseCode, leaderId);
+
+        Long leaderTeachCourseId = leaderTeachCourse.getId();
+        // 所有教学班
+        List<TeachClazz> teachClazzList = teachClazzService.list(
+                new QueryWrapper<TeachClazz>().lambda().eq(TeachClazz::getTeachCourseId, leaderTeachCourseId).like(TeachClazz::getClazzName, clazzName));
+
+        // 该课程下所有教学班分配关系
+        List<TeachClazz> distributedClazzDatasource = teachClazzService.list(
+                new QueryWrapper<TeachClazz>().lambda().eq(TeachClazz::getBelongTeachCourseId, leaderTeachCourseId));
+
+        List<ClazzDistributedResult> resultList = new ArrayList<>();
+        for (TeachClazz teachClazz : teachClazzList) {
+            Long basicTeachClazzId = teachClazz.getBasicTeachClazzId();
+            List<TeachClazz> list = distributedClazzDatasource.stream().filter(e -> basicTeachClazzId.equals(e.getBasicTeachClazzId())).collect(Collectors.toList());
+            List<DictionaryResult> teacherList = sysUserService.listByIds(
+                    list.stream().map(TeachClazz::getUserId).collect(Collectors.toList())).stream().flatMap(e -> {
+                DictionaryResult dictionaryResult = new DictionaryResult();
+                dictionaryResult.setId(e.getId());
+                dictionaryResult.setName(e.getRealName());
+                dictionaryResult.setCode(e.getCode());
+                return Stream.of(dictionaryResult);
+            }).collect(Collectors.toList());
+
+            ClazzDistributedResult clazzDistributedResult = new ClazzDistributedResult();
+            clazzDistributedResult.setClazzId(teachClazz.getBasicTeachClazzId());
+            clazzDistributedResult.setClazzName(teachClazz.getClazzName());
+            clazzDistributedResult.setTeacherList(teacherList);
+            resultList.add(clazzDistributedResult);
+        }
+        return resultList;
+    }
+
+    @Transactional
+    @Override
+    public void assignClazz(AssignClazzParam assignClazzParam, SysUser requestUser) {
+        Long examId = assignClazzParam.getExamId();
+        String courseCode = assignClazzParam.getCourseCode();
+        Long teacherId = assignClazzParam.getTeacherId();
+        List<Long> basicTeachClazzIdList = assignClazzParam.getBasicTeachClazzIdList();
+
+        TeachCourse teachCourse = this.findByExamIdCourseCodeAndUserId(examId, courseCode, requestUser.getId());
+        if (!teachCourse.getCreateId().equals(teachCourse.getUserId())) {
+            throw ExceptionResultEnum.ERROR.exception("该用户没有分配教师班级的权限");
+        }
+
+        Long teachCourseId = teachCourse.getId();
+
+        TeachCourse teacherTeachCourse = this.findByExamIdCourseCodeAndUserId(examId, courseCode, teacherId);
+        Long teacherTeachCourseId = teacherTeachCourse.getId();
+
+        List<Long> alreadySelectClazzIdList = teachClazzService.list(
+                        new QueryWrapper<TeachClazz>().lambda().eq(TeachClazz::getTeachCourseId, teacherTeachCourseId)).stream()
+                .map(TeachClazz::getBasicTeachClazzId).collect(Collectors.toList());
+
+        basicTeachClazzIdList = basicTeachClazzIdList.stream().filter(e -> !alreadySelectClazzIdList.contains(e)).collect(Collectors.toList());
+
+        for (Long clazzId : basicTeachClazzIdList) {
+            TeachClazz teachClazz = new TeachClazz();
+            teachClazz.setSchoolId(teachCourse.getSchoolId());
+            teachClazz.setTeachCourseId(teacherTeachCourseId);
+            teachClazz.setBasicTeachClazzId(clazzId);
+            teachClazz.setUserId(teacherId);
+            teachClazz.setClazzName(basicTeachClazzService.getById(clazzId).getClazzName());
+            teachClazz.setBelongTeachCourseId(teachCourseId);
+            teachClazz.insertInfo(requestUser.getId());
+            teachClazzService.save(teachClazz);
+        }
+    }
 }

+ 15 - 0
distributed-print-business/src/main/resources/db/log/脚本-caozx.sql

@@ -0,0 +1,15 @@
+
+ALTER TABLE `teach_clazz`
+ADD COLUMN `belong_teach_course_id` BIGINT NULL COMMENT '分配班级时属于的教学课程id' AFTER `clazz_name`;
+
+ALTER TABLE `teach_course`
+ADD COLUMN `default_rate` DECIMAL(6,2) NULL COMMENT '默认占比' AFTER `weight_setting`,
+ADD COLUMN `custom_rate` DECIMAL(6,2) NULL COMMENT '自定义占比' AFTER `default_rate`;
+
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('1128', '教师团队管理-分配班级列表查询', '/api/admin/teach/course/find_clazz_list', 'URL', '841', '26', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('1129', '教师团队管理-分配班级', '/api/admin/teach/course/assign_clazz', 'URL', '841', '27', 'AUTH', '1', '1', '1');
+
+UPDATE `sys_privilege` SET `related` = '77,842,843,844,845,846,847,848,849,850,851,852,853,866,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1128,1129' WHERE (`id` = '841');
+
+ALTER TABLE `mark_student` 
+CHANGE COLUMN `package_code` `package_code` VARCHAR(64) NULL COMMENT '试卷袋编号' ;

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

@@ -50,9 +50,6 @@
             <if test="courseCode != null and courseCode != ''">
                 AND tc.course_code = #{courseCode}
             </if>
-            <if test="schoolId != null">
-                AND tc.school_id = #{schoolId}
-            </if>
             <if test="userInfo != null and userInfo != ''">
                 AND (su.real_name LIKE CONCAT('%',#{userInfo},'%') OR su.code LIKE CONCAT('%',#{userInfo},'%'))
             </if>

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/TCUsualScoreController.java

@@ -79,7 +79,7 @@ public class TCUsualScoreController {
                                            @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) throws IOException {
         //TODO 待曹子轩补充接口
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        List<CourseWeightDto> courseWeightDtoList = courseWeightService.findCourseWeight(examId, courseCode, sysUser.getId());
+        List<CourseWeightDto> courseWeightDtoList = courseWeightService.findCourseWeight(examId, courseCode, sysUser.getId()).getSubmitForm();
         if (CollectionUtils.isEmpty(courseWeightDtoList)) {
             throw ExceptionResultEnum.ERROR.exception("未设置课程目标平时作业1");
         }

+ 3 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/TeachClazzController.java

@@ -39,9 +39,9 @@ public class TeachClazzController {
     @ApiOperation(value = "教学班级-查询")
     @RequestMapping(value = "/page", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public Result findTeachClazzPage(@ApiParam(value = "考试id") @RequestParam(required = false) String examId,
-                                     @ApiParam(value = "课程编号") @RequestParam(required = false) String courseCode,
-                                     @ApiParam(value = "班级名称(模糊查询)") @RequestParam(required = false) String teachClazzName,
+    public Result findTeachClazzPage(@ApiParam(value = "考试id", required = true) @RequestParam String examId,
+                                     @ApiParam(value = "课程编号", required = true) @RequestParam String courseCode,
+                                     @ApiParam(value = "班级名称(模糊查询)") @RequestParam String teachClazzName,
                                      @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                      @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
         return ResultUtil.ok(teachClazzService.teachClazzPage(SystemConstant.convertIdToLong(examId),courseCode, teachClazzName, pageNumber, pageSize));
@@ -51,7 +51,6 @@ public class TeachClazzController {
     @RequestMapping(value = "/edit", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "创建成功", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
-    @Deprecated
     public Result selectTeachClazz(@Valid @RequestBody TeachClazzParams teachClazzParams, BindingResult bindingResult) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         if (bindingResult.hasErrors()) {

+ 28 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/TeachCourseController.java

@@ -1,6 +1,7 @@
 package com.qmth.distributed.print.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.bean.params.AssignClazzParam;
 import com.qmth.distributed.print.business.bean.params.TeachCourseParams;
 import com.qmth.distributed.print.business.bean.params.TeachCourseSelectParam;
 import com.qmth.distributed.print.business.bean.params.TeacherTeamParam;
@@ -107,8 +108,9 @@ public class TeachCourseController {
     @RequestMapping(value = "/delete", method = RequestMethod.POST)
     @ApiResponses({ @ApiResponse(code = 200, message = "删除成功", response = EditResult.class) })
     @OperationLogDetail(detail = "用户根据教学课程id集合[{{idList}}]批量删除教学课程", level = LevelEnum.TERTIARY, operationType = OperationTypeEnum.DELETE, operationUnit = OperationUnitEnum.TEACH_COURSE, customizedOperationType = CustomizedOperationTypeEnum.DELETE)
-    public Result deleteTeachCourse(@ApiParam(value = "选择的要删除的课程id集合", required = true) @RequestParam List<Long> idList) {
-        teachCourseService.deleteTeachCourseBatch(idList);
+    public Result deleteTeachCourse(@ApiParam(value = "选择的要删除的课程id集合", required = true) @RequestParam List<String> idList) {
+        teachCourseService.deleteTeachCourseBatch(idList.stream().map(SystemConstant::convertIdToLong).collect(
+                Collectors.toList()));
         return ResultUtil.ok();
     }
 
@@ -180,4 +182,28 @@ public class TeachCourseController {
                 teachCourseService.findCourseWeightSettingStatus(SystemConstant.convertIdToLong(examId), courseCode,
                         userId));
     }
+
+    @ApiOperation(value = "教师团队管理-分配班级列表查询")
+    @RequestMapping(value = "/find_clazz_list", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = Result.class) })
+    public Result findClazzList(@ApiParam(value = "考试id", required = true) @RequestParam String examId,
+            @ApiParam(value = "课程编号", required = true) @RequestParam String courseCode,
+            @ApiParam(value = "班级名称") @RequestParam(required = false) String clazzName) {
+        return ResultUtil.ok(
+                teachCourseService.findClazzDistributedStatus(SystemConstant.convertIdToLong(examId), courseCode,
+                        clazzName));
+    }
+
+    @ApiOperation(value = "教师团队管理-分配班级")
+    @RequestMapping(value = "/assign_clazz", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "创建成功", response = EditResult.class) })
+    @OperationLogDetail(detail = "分配班级,参数[{{assignClazzParam}}]", customizedOperationType = CustomizedOperationTypeEnum.ADD)
+    public Result assignClazz(@Valid @RequestBody AssignClazzParam assignClazzParam, BindingResult bindingResult) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        teachCourseService.assignClazz(assignClazzParam, requestUser);
+        return ResultUtil.ok();
+    }
 }