Browse Source

解决分配床位报错问题

dzx 1 year ago
parent
commit
fe14eb8f0d

+ 1 - 7
src/main/java/com/xjrsoft/module/room/dto/AddRoomBedDto.java

@@ -2,14 +2,8 @@ package com.xjrsoft.module.room.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import java.io.Serializable;
-import com.fasterxml.jackson.annotation.JsonFormat;
 
-import java.time.LocalTime;
-import java.time.LocalDateTime;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Date;
+import java.io.Serializable;
 
 
 

+ 5 - 2
src/main/java/com/xjrsoft/module/student/dto/DistributeStudentDto.java → src/main/java/com/xjrsoft/module/room/dto/DistributeStudentDto.java

@@ -1,10 +1,13 @@
-package com.xjrsoft.module.student.dto;
+package com.xjrsoft.module.room.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.io.Serializable;
+
 @Data
-public class DistributeStudentDto {
+public class DistributeStudentDto implements Serializable {
+    private static final long serialVersionUID = 1L;
     /**
      * 用户ID(xjr_user)
      */

+ 4 - 0
src/main/java/com/xjrsoft/module/room/mapper/RoomBedMapper.java

@@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.room.dto.DistributeClassPageDto;
 import com.xjrsoft.module.room.dto.DistributeRoomBedPageDto;
+import com.xjrsoft.module.room.dto.DistributeStudentDto;
 import com.xjrsoft.module.room.dto.RoomBedPageDto;
 import com.xjrsoft.module.room.entity.RoomBed;
 import com.xjrsoft.module.room.vo.DistributeClassPageVo;
 import com.xjrsoft.module.room.vo.DistributeRoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedVo;
+import com.xjrsoft.module.student.vo.StudentInfoVo;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -41,4 +43,6 @@ public interface RoomBedMapper extends MPJBaseMapper<RoomBed> {
     Page<DistributeRoomBedPageVo> getDistributeRoomBedInfo(Page<DistributeRoomBedPageVo> page, DistributeRoomBedPageDto dto);
 
     List<RoomBedVo> getBedInfo(List<Long> ids);
+
+    List<StudentInfoVo> getClassStudent(DistributeStudentDto dto);
 }

+ 33 - 7
src/main/java/com/xjrsoft/module/room/service/impl/RoomBedServiceImpl.java

@@ -4,6 +4,9 @@ import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.toolkit.MPJWrappers;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.room.dto.DistributeClassPageDto;
 import com.xjrsoft.module.room.dto.DistributeRoomBedDto;
 import com.xjrsoft.module.room.dto.DistributeRoomBedPageDto;
@@ -18,14 +21,17 @@ import com.xjrsoft.module.room.vo.DistributeRoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedVo;
 import com.xjrsoft.module.room.vo.RoomClassCountVo;
-import com.xjrsoft.module.student.dto.DistributeStudentDto;
+import com.xjrsoft.module.student.entity.BaseStudent;
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
 import com.xjrsoft.module.student.mapper.BaseStudentMapper;
-import com.xjrsoft.module.student.vo.StudentInfoVo;
+import com.xjrsoft.module.teacher.entity.XjrUser;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
 * @title: 寝室床位
@@ -84,12 +90,24 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
 
         //查询每个班的学生,修改床位信息
         int i = 0;
+        Map<Long, Integer> classDistributeBedNumber = new HashMap<>();
+        Map<Long, Integer> classStudent = new HashMap<>();
         for (Long classId : dto.getClassIds()) {
-            DistributeStudentDto classDto = new DistributeStudentDto();
-            classDto.setClassId(classId);
-            classDto.setGender(genderNumber);
-            List<StudentInfoVo> studentList = baseStudentMapper.getClassStudent(classDto);
-            for (StudentInfoVo studentInfoVo : studentList) {
+            List<BaseStudent> studentList = baseStudentMapper.selectList(
+                MPJWrappers.<BaseStudent>lambdaJoin()
+                .select(BaseStudent::getUserId)
+                .eq(BaseClass::getId, classId)
+                .eq(XjrUser::getGender, genderNumber)
+                .eq(BaseStudentSchoolRoll::getStduyStatus, "FB3001")
+                .eq(BaseStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
+                .eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
+                .innerJoin(XjrUser.class, XjrUser::getId, BaseStudent::getUserId)
+                .leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, BaseStudent::getUserId)
+                .leftJoin(BaseClass.class, BaseClass::getId, BaseStudentSchoolRoll::getClassId)
+            );
+            //已分配床位数
+            int distributeBedNumber = 0;
+            for (BaseStudent studentInfoVo : studentList) {
                 if(i > bedInfoList.size()){
                     continue;
                 }
@@ -100,8 +118,16 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
                 roomBed.setModifyUserId(modifyUserId);
                 roomBedMapper.updateById(roomBed);
                 i ++;
+                distributeBedNumber ++;
+
             }
+            classDistributeBedNumber.put(classId, distributeBedNumber);
+            classStudent.put(classId, studentList.size());
         }
+        //插入记录表 room_bed_record
+        classStudent.forEach((classId, studentCount)->{
+
+        });
 
         //查询每个寝室住入的班级数量,大于2的设置为混合寝室
         List<RoomClassCountVo> classCountVoList = roomMapper.getRoomClassCount(dto.getRoomIds());

+ 0 - 4
src/main/java/com/xjrsoft/module/student/mapper/BaseStudentMapper.java

@@ -1,13 +1,10 @@
 package com.xjrsoft.module.student.mapper;
 
 import com.github.yulichang.base.MPJBaseMapper;
-import com.xjrsoft.module.student.dto.DistributeStudentDto;
 import com.xjrsoft.module.student.entity.BaseStudent;
 import com.xjrsoft.module.student.vo.StudentInfoVo;
 import org.apache.ibatis.annotations.Mapper;
 
-import java.util.List;
-
 /**
  * @title: mapper
  * @Author 管理员
@@ -21,5 +18,4 @@ public interface BaseStudentMapper extends MPJBaseMapper<BaseStudent> {
      * @return
      */
     StudentInfoVo getStudentInfo(Long userId);
-    List<StudentInfoVo> getClassStudent(DistributeStudentDto dto);
 }

+ 0 - 11
src/main/resources/mapper/student/BaseStudentMapper.xml

@@ -12,15 +12,4 @@
         LEFT JOIN base_major_set t6 ON t3.major_set_id = t6.id
         where  t1.delete_mark=0 and t2.delete_mark=0 and t1.user_id=#{userId};
     </select>
-
-    <select id="getClassStudent" parameterType="com.xjrsoft.module.student.dto.DistributeStudentDto" resultType="com.xjrsoft.module.student.vo.StudentInfoVo">
-        SELECT t1.user_id,t5.id as grade_id,t5.name AS grade_name,t4.id as class_id,t4.name AS class_name,t2.name AS student_name,t1.student_id,t2.gender,t3.enrollment_type,t6.id as major_id,t6.name AS major_name FROM base_student t1
-        INNER JOIN xjr_user t2 ON t1.user_id = t2.id
-        LEFT JOIN base_student_school_roll t3 ON t1.user_id = t3.user_id
-        LEFT JOIN base_class t4 ON t3.class_id = t4.id
-        LEFT JOIN base_grade t5 ON t3.grade_id = t5.id
-        LEFT JOIN base_major_set t6 ON t3.major_set_id = t6.id
-        where  t1.delete_mark=0 and t2.delete_mark=0 and t4.id = #{dto.classId}
-        AND t3.stduy_status = 'FB3001' AND t4.gender = #{dto.gender}
-    </select>
 </mapper>