Переглянути джерело

解决人数比例均衡分班的问题

dzx 1 рік тому
батько
коміт
816c091701

+ 5 - 2
src/main/java/com/xjrsoft/module/banding/service/impl/BandingTaskServiceImpl.java

@@ -183,8 +183,8 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
             //查询每个专业下面的班级人数
             Map<Long, Integer> majorClassStudentCount = taskClassMapper.getMajorClassStudentCount(bandingTask.getId())
                     .stream().collect(Collectors.toMap(IdCountVo::getId, IdCountVo::getCount));
-            //查询每个专业人数
-            Map<Long, Integer> majorStudentCount = newStudentService.getMajorStudentCount()
+            //查询每个专业符合限制条件的人数
+            Map<Long, Integer> majorStudentCount = newStudentService.getMajorStudentCount(bandingTask.getId())
                     .stream().collect(Collectors.toMap(IdCountVo::getId, IdCountVo::getCount));
 
             Map<Long, Integer> majorLimitMap = new HashMap<>();
@@ -193,6 +193,9 @@ public class BandingTaskServiceImpl extends MPJBaseServiceImpl<BandingTaskMapper
                 if(majorClassStudentCount.get(majorSetId) != null){
                     majorClassNumber = majorClassStudentCount.get(majorSetId);
                 }
+                if(majorClassNumber == 1 || majorClassNumber == 0){
+                    continue;
+                }
                 int majorStudentNumber = 0;
                 if(majorStudentCount.get(majorSetId) != null){
                     majorStudentNumber = majorStudentCount.get(majorSetId);

+ 1 - 1
src/main/java/com/xjrsoft/module/student/controller/BaseNewStudentController.java

@@ -187,7 +187,7 @@ public class BaseNewStudentController {
 
     @PostMapping("/active-account")
     @ApiOperation(value = "激活账号")
-    public RT<Boolean> activeAccount(@RequestParam MultipartFile file) throws IOException {
+    public RT<Boolean> activeAccount(@Valid @RequestBody AddBaseNewStudentDto dto) throws IOException {
         return RT.ok(true);
     }
 

+ 108 - 0
src/main/java/com/xjrsoft/module/student/dto/ActiveAccountDto.java

@@ -0,0 +1,108 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+
+/**
+* @title: 新生账号激活
+* @Author dzx
+* @Date: 2024年7月13日
+* @Version 1.0
+*/
+@Data
+public class ActiveAccountDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 毕业学校
+    */
+    @ApiModelProperty("毕业学校")
+    private String graduateSchool;
+    /**
+    * 学生姓名
+    */
+    @ApiModelProperty("学生姓名")
+    private String name;
+    /**
+    * 性别
+    */
+    @ApiModelProperty("性别")
+    private String gender;
+    /**
+    * 身份证号
+    */
+    @ApiModelProperty("身份证号")
+    private String credentialNumber;
+    /**
+    * 身高
+    */
+    @ApiModelProperty("身高")
+    private BigDecimal height;
+    /**
+    * 体重
+    */
+    @ApiModelProperty("体重")
+    private BigDecimal weight;
+    /**
+    * 成绩
+    */
+    @ApiModelProperty("成绩")
+    private BigDecimal score;
+    /**
+    * 毕业班级
+    */
+    @ApiModelProperty("毕业班级")
+    private String graduateClass;
+    /**
+    * 学生来源
+    */
+    @ApiModelProperty("学生来源")
+    private String source;
+    /**
+    * 住宿类型
+    */
+    @ApiModelProperty("住宿类型")
+    private String stduyStatus;
+    /**
+    * 手机号
+    */
+    @ApiModelProperty("手机号")
+    private String mobile;
+    /**
+    * 第一志愿
+    */
+    @ApiModelProperty("第一志愿")
+    private String firstAmbition;
+    /**
+    * 第二志愿
+    */
+    @ApiModelProperty("第二志愿")
+    private String secondAmbition;
+    /**
+    * 班级状态(0:未分配, 1:已分配)
+    */
+    @ApiModelProperty("班级状态(0:未分配, 1:已分配)")
+    private Integer status;
+
+    @ApiModelProperty("是否可调配(0:否,1:是)")
+    private Integer isAdjust;
+
+    @ApiModelProperty("招生计划id(enrollment_plan)")
+    private Long enrollmentPlanId;
+
+    @ApiModelProperty("家庭电话")
+    private String familyMobile;
+
+    @ApiModelProperty("家庭地址")
+    private String familyAddress;
+}

+ 1 - 1
src/main/java/com/xjrsoft/module/student/mapper/BaseNewStudentMapper.java

@@ -32,5 +32,5 @@ public interface BaseNewStudentMapper extends MPJBaseMapper<BaseNewStudent> {
 
     List<IdCountVo> getSecondAmbitionStudentCount(@Param("gradeId") Long gradeId, @Param("enrollType") String enrollType);
 
-    List<IdCountVo> getMajorStudentCount();
+    List<IdCountVo> getMajorStudentCount(@Param("id") Long bandingTaskId);
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/student/service/IBaseNewStudentService.java

@@ -37,5 +37,5 @@ public interface IBaseNewStudentService extends MPJBaseService<BaseNewStudent> {
 
     List<IdCountVo> getMajorStudent(Long gradeId, String enrollType, Integer index);
 
-    List<IdCountVo> getMajorStudentCount();
+    List<IdCountVo> getMajorStudentCount(Long bandingTaskId);
 }

+ 2 - 3
src/main/java/com/xjrsoft/module/student/service/impl/BaseNewStudentServiceImpl.java

@@ -11,7 +11,6 @@ import com.xjrsoft.common.enums.YesOrNoEnum;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseMajorSet;
 import com.xjrsoft.module.base.service.IBaseMajorSetService;
-import com.xjrsoft.module.base.vo.BaseClassCoursePageVo;
 import com.xjrsoft.module.outint.vo.IdCountVo;
 import com.xjrsoft.module.student.dto.BaseNewStudentPageDto;
 import com.xjrsoft.module.student.entity.BaseNewStudent;
@@ -248,8 +247,8 @@ public class BaseNewStudentServiceImpl extends MPJBaseServiceImpl<BaseNewStudent
     }
 
     @Override
-    public List<IdCountVo> getMajorStudentCount() {
-        return this.baseMapper.getMajorStudentCount();
+    public List<IdCountVo> getMajorStudentCount(Long bandingTaskId) {
+        return this.baseMapper.getMajorStudentCount(bandingTaskId);
     }
 
     /**

+ 5 - 1
src/main/resources/mapper/student/BaseNewStudentMapper.xml

@@ -101,7 +101,11 @@
         SELECT t1.id,(
         SELECT COUNT(id) FROM base_new_student WHERE delete_mark = 0
         AND (first_ambition_id = t1.id OR second_ambition_id = t1.id)
-        ) as count FROM base_major_set t1 WHERE delete_mark = 0
+        AND score >= IFNULL(t2.score,0) AND height >= IFNULL(t2.height,0)
+        ) AS COUNT FROM base_major_set t1
+        LEFT JOIN banding_task_major_condition t2 ON t1.id = t2.major_set_id AND t2.banding_task_id = #{id}
+        AND t2.delete_mark = 0
+        WHERE t1.delete_mark = 0
     </select>
 
 </mapper>