Kaynağa Gözat

学生分班新增锁定班级功能

dzx 1 yıl önce
ebeveyn
işleme
1135ddd69a

+ 11 - 0
src/main/java/com/xjrsoft/module/banding/controller/BandingTaskClassController.java

@@ -13,6 +13,7 @@ import com.xjrsoft.module.banding.dto.BandingTaskClassListDto;
 import com.xjrsoft.module.banding.dto.BandingTaskClassPageDto;
 import com.xjrsoft.module.banding.dto.BandingTaskClassStudentPageDto;
 import com.xjrsoft.module.banding.dto.ChangeClassDto;
+import com.xjrsoft.module.banding.dto.ChangeClassStatusDto;
 import com.xjrsoft.module.banding.dto.StudentDto;
 import com.xjrsoft.module.banding.dto.SureBandingTaskDto;
 import com.xjrsoft.module.banding.dto.UpdateBandingClassDto;
@@ -266,4 +267,14 @@ public class BandingTaskClassController {
         );
         return RT.ok(list);
     }
+
+    @PostMapping(value = "/change-status")
+    @ApiOperation(value="修改状态")
+    @SaCheckPermission("officebuild:detail")
+    public RT<Boolean> changeStatus(@Valid @RequestBody ChangeClassStatusDto dto) throws Exception {
+        BandingTaskClass taskClass = bandingTaskClassService.getById(dto.getId());
+        taskClass.setStatus(dto.getStatus());
+        bandingTaskClassService.updateBatchById(taskClass);
+        return RT.ok(true);
+    }
 }

+ 30 - 0
src/main/java/com/xjrsoft/module/banding/dto/ChangeClassStatusDto.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.banding.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+* @title: 活动信息
+* @Author dzx
+* @Date: 2024-07-19
+* @Version 1.0
+*/
+@Data
+public class ChangeClassStatusDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 赛事名称
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 状态(0:未发布 1:报名中 2:报名结束 3:活动结束)
+    */
+    @ApiModelProperty("是否锁定(0:否 1:是)")
+    private Integer status;
+}

+ 2 - 0
src/main/java/com/xjrsoft/module/banding/entity/BandingTaskClass.java

@@ -122,4 +122,6 @@ public class BandingTaskClass implements Serializable {
     @ApiModelProperty("班级类型")
     private String classType;
 
+    @ApiModelProperty("是否锁定(0:否 1:是)")
+    private Integer status;
 }

+ 10 - 0
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskServiceImpl.java

@@ -142,6 +142,15 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
             throw new MyException("未能查询到该任务,无法自动分班");
         }
         //1、查询需要分班的学生信息
+        List<BandingTaskClassStudent> classStudents = classStudentService.selectJoinList(BandingTaskClassStudent.class,
+                new MPJLambdaWrapper<BandingTaskClassStudent>()
+                        .select(BandingTaskClassStudent::getId)
+                        .select(BandingTaskClassStudent.class, x -> VoToColumnUtil.fieldsToColumns(BandingTaskClassStudent.class).contains(x.getProperty()))
+                        .leftJoin(BandingTaskClass.class, BandingTaskClass::getId, BandingTaskClassStudent::getBandingTaskClassId)
+                        .eq(BandingTaskClass::getStatus, 0)
+        );
+        List<Long> studentIds = classStudents.stream().map(BandingTaskClassStudent::getNewStudentId).collect(Collectors.toList());
+
         List<String> orderColumn = new ArrayList();
         orderColumn.add("score");
         List<BaseNewStudent> baseNewStudents = newStudentService.selectJoinList(BaseNewStudent.class,
@@ -152,6 +161,7 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
                         .eq(EnrollmentPlan::getGradeId, bandingTask.getGradeId())
                         .eq(EnrollmentPlan::getEnrollType, bandingTask.getEnrollType())
                         .eq(BaseNewStudent::getStatus, 0)
+                        .notIn(!studentIds.isEmpty(), BaseNewStudent::getId, studentIds)
                         .orderByDescStr(orderColumn)
         );
         //2、查询所有班级信息

+ 1 - 1
src/main/resources/mapper/banding/BandingTaskClassMapper.xml

@@ -126,6 +126,6 @@
     </select>
 
     <select id="getListOrderByAsc" resultType="com.xjrsoft.module.banding.entity.BandingTaskClass">
-        SELECT * FROM banding_task_class WHERE delete_mark = 0 and banding_task_id = #{id} ORDER BY sort_code IS NULL, sort_code ASC
+        SELECT * FROM banding_task_class WHERE delete_mark = 0 and banding_task_id = #{id} and status = 0 ORDER BY sort_code IS NULL, sort_code ASC
     </select>
 </mapper>

+ 13 - 0
src/main/resources/sqlScript/20240718_sql.sql

@@ -348,3 +348,16 @@ ALTER TABLE `base_student_scholarship_category`
   ADD COLUMN `category` VARCHAR(30) NULL   COMMENT '奖助学金类型(xjr_dictionary_item[s_b_categories])' AFTER `remark`,
   ADD COLUMN `support_source` VARCHAR(200) NULL   COMMENT '资助单位/个人' AFTER `category`;
 
+-- ---------------------------------------------------------------------------------------------
+-- 教室信息增加字段
+-- ---------------------------------------------------------------------------------------------
+ALTER TABLE `base_classroom`   
+  ADD COLUMN `seat_number` INT NULL   COMMENT '座位数',
+  ADD COLUMN `describe` VARCHAR(500) NULL   COMMENT '描述';
+  
+-- ---------------------------------------------------------------------------------------------
+-- 自动分班增加锁定班级功能
+-- ---------------------------------------------------------------------------------------------
+ALTER TABLE `banding_task_class`   
+  ADD COLUMN `status` INT DEFAULT 0  NULL   COMMENT '是否锁定(0:否 1:是)' AFTER `class_type`;
+