Просмотр исходного кода

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

wangliang 1 год назад
Родитель
Сommit
c70887be9f

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

@@ -19,6 +19,9 @@ public class CourseWeightResult {
     @ApiModelProperty("自定义占比")
     private BigDecimal customRate;
 
+    @ApiModelProperty("权重设置标记")
+    private Long weightSettingSign;
+
     @ApiModelProperty("课程权重表单")
     private List<CourseWeightDto> submitForm;
 
@@ -38,6 +41,14 @@ public class CourseWeightResult {
         this.customRate = customRate;
     }
 
+    public Long getWeightSettingSign() {
+        return weightSettingSign;
+    }
+
+    public void setWeightSettingSign(Long weightSettingSign) {
+        this.weightSettingSign = weightSettingSign;
+    }
+
     public List<CourseWeightDto> getSubmitForm() {
         return submitForm;
     }

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

@@ -47,6 +47,9 @@ public class TeachCourse extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "权重设置")
     private Boolean weightSetting;
 
+    @ApiModelProperty(value = "")
+    private Long weightSettingSign;
+
     @ApiModelProperty(value = "默认占比")
     private BigDecimal defaultRate;
 
@@ -137,4 +140,12 @@ public class TeachCourse extends BaseEntity implements Serializable {
     public void setCustomRate(BigDecimal customRate) {
         this.customRate = customRate;
     }
+
+    public Long getWeightSettingSign() {
+        return weightSettingSign;
+    }
+
+    public void setWeightSettingSign(Long weightSettingSign) {
+        this.weightSettingSign = weightSettingSign;
+    }
 }

+ 5 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TeachClazzMapper.java

@@ -17,11 +17,12 @@ public interface TeachClazzMapper extends BaseMapper<TeachClazz> {
     /**
      * 分页查询教学班级(自己分配到的)
      *
-     * @param iPage          分页参数
-     * @param teachCourseId  教学课程id
-     * @param teachClazzName 教学班
+     * @param iPage               分页参数
+     * @param teachCourseId       教学课程id
+     * @param teachClazzName      教学班
+     * @param belongTeachCourseId 分配所属教学课程id
      * @return 结果
      */
     IPage<TeachClazzResult> findTeachClazzPage(@Param("iPage") Page<TeachClazzResult> iPage, @Param("teachCourseId") Long teachCourseId,
-            @Param("teachClazzName") String teachClazzName);
+            @Param("teachClazzName") String teachClazzName, @Param("belongTeachCourseId") Long belongTeachCourseId);
 }

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

@@ -138,6 +138,7 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
             }
         }
         CourseWeightResult result = new CourseWeightResult();
+        result.setWeightSettingSign(teachCourse.getWeightSettingSign());
         result.setDefaultRate(defaultRate);
         result.setCustomRate(customRate);
         result.setSubmitForm(submitForm);
@@ -222,6 +223,7 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
             }
         }
         CourseWeightResult result = new CourseWeightResult();
+        result.setWeightSettingSign(teachCourse.getWeightSettingSign());
         result.setDefaultRate(defaultRate);
         result.setCustomRate(customRate);
         result.setSubmitForm(submitForm);
@@ -351,6 +353,7 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
         this.saveBatch(courseWeightList);
         // 更新课程权重设置状态
         teachCourse.setWeightSetting(true);
+        teachCourse.setWeightSettingSign(SystemConstant.getDbUuid());
         teachCourse.setDefaultRate(defaultRate);
         teachCourse.setCustomRate(customRate);
         teachCourseService.updateById(teachCourse);
@@ -366,7 +369,8 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
         courseTargetService.update(courseTargetUpdateWrapper);
 
         UpdateWrapper<TeachCourse> teachCourseUpdateWrapper = new UpdateWrapper<>();
-        teachCourseUpdateWrapper.lambda().eq(TeachCourse::getId, teachCourseId).set(TeachCourse::getDefaultRate, null).set(TeachCourse::getCustomRate, null);
+        teachCourseUpdateWrapper.lambda().eq(TeachCourse::getId, teachCourseId)
+                .set(TeachCourse::getWeightSettingSign, null).set(TeachCourse::getDefaultRate, null).set(TeachCourse::getCustomRate, null);
         teachCourseService.update(teachCourseUpdateWrapper);
     }
 

+ 6 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TeachClazzServiceImpl.java

@@ -55,19 +55,20 @@ public class TeachClazzServiceImpl extends ServiceImpl<TeachClazzMapper,TeachCla
         Long userId = sysUser.getId();
         TeachCourse teachCourse = teachCourseService.findByExamIdCourseCodeAndUserId(examId, courseCode, userId);
         Long teachCourseId = teachCourse.getId();
+        Long leaderId = teachCourse.getCreateId();
+
+        TeachCourse leaderTeachCourse = teachCourseService.findByExamIdCourseCodeAndUserId(examId, courseCode, leaderId);
+        Long leaderTeachCourseId = leaderTeachCourse.getId();
 
         teachClazzName = SystemConstant.translateSpecificSign(teachClazzName);
         IPage<TeachClazzResult> resultIPage;
 
         IPage<TeachClazzResult> selfPage = this.baseMapper.findTeachClazzPage(new Page<>(pageNumber, pageSize),
-                teachCourseId, teachClazzName);
+                teachCourseId, teachClazzName, leaderTeachCourseId);
         if (CollectionUtils.isEmpty(selfPage.getRecords())) {
             // 查询该教学课程下所有教学班
-            TeachCourse leaderTeachCourse = teachCourseService.findByExamIdCourseCodeAndUserId(examId, courseCode,
-                    teachCourse.getCreateId());
-            Long leaderTeachCourseId = leaderTeachCourse.getId();
             resultIPage = this.baseMapper.findTeachClazzPage(new Page<>(pageNumber, pageSize), leaderTeachCourseId,
-                    teachClazzName);
+                    teachClazzName, null);
         } else {
             resultIPage = selfPage;
         }

+ 42 - 29
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TeachCourseServiceImpl.java

@@ -1,6 +1,7 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -160,7 +161,7 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
             tmp.setWeightSetting(false);
 
             for (String courseCode : courseCodeList) {
-                if (Objects.isNull(basicCourseService.findByCourseCode(courseCode,schoolId))){
+                if (Objects.isNull(basicCourseService.findByCourseCode(courseCode, schoolId))) {
                     throw ExceptionResultEnum.ERROR.exception("课程不存在");
                 }
                 TeachCourse cell = new TeachCourse();
@@ -511,17 +512,19 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
     @Override
     public List<ClazzDistributedResult> findClazzDistributedStatus(Long examId, String courseCode, String clazzName) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        Long requestUserId = requestUser.getId();
         clazzName = SystemConstant.translateSpecificSign(clazzName);
 
-        TeachCourse teacherTeachCourse = this.findByExamIdCourseCodeAndUserId(examId, courseCode, requestUser.getId());
-        Long leaderId = teacherTeachCourse.getCreateId();
-        TeachCourse leaderTeachCourse = this.findByExamIdCourseCodeAndUserId(examId, courseCode, leaderId);
+        TeachCourse teachCourse = this.findByExamIdCourseCodeAndUserId(examId, courseCode, requestUserId);
+        if (!requestUserId.equals(teachCourse.getCreateId())) {
+            throw ExceptionResultEnum.ERROR.exception("非课程创建人没有分配班级的权限");
+        }
+        Long leaderTeachCourseId = teachCourse.getId();
 
-        Long leaderTeachCourseId = leaderTeachCourse.getId();
         // 所有教学班
         QueryWrapper<TeachClazz> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(TeachClazz::getTeachCourseId, leaderTeachCourseId);
-        if (SystemConstant.strNotNull(clazzName)){
+        if (SystemConstant.strNotNull(clazzName)) {
             queryWrapper.lambda().like(TeachClazz::getClazzName, clazzName);
         }
         List<TeachClazz> teachClazzList = teachClazzService.list(queryWrapper);
@@ -535,7 +538,7 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
             Long basicTeachClazzId = teachClazz.getBasicTeachClazzId();
             List<DictionaryResult> teacherList = new ArrayList<>();
             List<TeachClazz> list = distributedClazzDatasource.stream().filter(e -> basicTeachClazzId.equals(e.getBasicTeachClazzId())).collect(Collectors.toList());
-            if (CollectionUtils.isNotEmpty(list)){
+            if (CollectionUtils.isNotEmpty(list)) {
                 teacherList = sysUserService.listByIds(
                         list.stream().map(TeachClazz::getUserId).collect(Collectors.toList())).stream().flatMap(e -> {
                     DictionaryResult dictionaryResult = new DictionaryResult();
@@ -557,37 +560,47 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
     @Transactional
     @Override
     public void assignClazz(AssignClazzParam assignClazzParam, SysUser requestUser) {
+        Long requestUserId = requestUser.getId();
         Long examId = assignClazzParam.getExamId();
         String courseCode = assignClazzParam.getCourseCode();
         Long teacherId = assignClazzParam.getTeacherId();
         List<Long> basicTeachClazzIdList = assignClazzParam.getClazzIdList();
 
-        TeachCourse teachCourse = this.findByExamIdCourseCodeAndUserId(examId, courseCode, requestUser.getId());
-        if (!teachCourse.getCreateId().equals(teachCourse.getUserId())) {
+        TeachCourse teachCourse = this.findByExamIdCourseCodeAndUserId(examId, courseCode, requestUserId);
+        if (!teachCourse.getCreateId().equals(requestUserId)) {
             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);
+        if (teacherId.equals(requestUserId)) {
+            // 课程负责人分配自己的班级
+            UpdateWrapper<TeachClazz> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(TeachClazz::getBelongTeachCourseId, teachCourseId)
+                    .set(TeachClazz::getUpdateId, requestUserId)
+                    .set(TeachClazz::getUpdateTime, System.currentTimeMillis())
+                    .set(TeachClazz::getUserId, requestUserId).eq(TeachClazz::getTeachCourseId, teachCourseId)
+                    .in(TeachClazz::getBasicTeachClazzId, basicTeachClazzIdList);
+            teachClazzService.update(updateWrapper);
+        } else {
+            // 课程负责人分配其他老师的班级
+            TeachCourse teacherTeachCourse = this.findByExamIdCourseCodeAndUserId(examId, courseCode, teacherId);
+            Long teacherTeachCourseId = teacherTeachCourse.getId();
+            // 删除之前分配的班级数据
+            teachClazzService.remove(
+                    new QueryWrapper<TeachClazz>().lambda().eq(TeachClazz::getTeachCourseId, teacherTeachCourseId)
+                            .eq(TeachClazz::getBelongTeachCourseId, teachCourseId));
+            // 新增新班级分配数据
+            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);
+            }
         }
     }
 

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

@@ -0,0 +1,6 @@
+
+ALTER TABLE `teach_clazz`
+CHANGE COLUMN `user_id` `user_id` BIGINT NULL COMMENT '用户id' ;
+
+ALTER TABLE `teach_course`
+ADD COLUMN `weight_setting_sign` BIGINT NULL COMMENT '课程权重设置标识' AFTER `weight_setting`;

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

@@ -18,6 +18,9 @@
             <if test="teachClazzName != null and teachClazzName != ''">
                 AND teach_clazz_name LIKE CONCAT('%',#{teachClazzName},'%')
             </if>
+            <if test="belongTeachCourseId != null">
+                AND belong_teach_course_id = #{belongTeachCourseId}
+            </if>
         </where>
         ORDER BY create_time DESC
     </select>