Browse Source

分配床位-寝室床位选择列表

dzx 1 year ago
parent
commit
49055acd8d

+ 12 - 1
src/main/java/com/xjrsoft/module/room/controller/RoomBedController.java

@@ -10,11 +10,13 @@ import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.module.room.dto.AddRoomBedDto;
 import com.xjrsoft.module.room.dto.DistributeClassPageDto;
+import com.xjrsoft.module.room.dto.DistributeRoomBedPageDto;
 import com.xjrsoft.module.room.dto.RoomBedPageDto;
 import com.xjrsoft.module.room.dto.UpdateRoomBedDto;
 import com.xjrsoft.module.room.entity.RoomBed;
 import com.xjrsoft.module.room.service.IRoomBedService;
 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 io.swagger.annotations.Api;
@@ -64,13 +66,22 @@ public class RoomBedController {
 
     @GetMapping(value = "/distribute-class-page")
     @ApiOperation(value="分配床位班级列表(分页)")
-    @SaCheckPermission("roombedrecord:detail")
+    @SaCheckPermission("roombed:detail")
     public RT<PageOutput<DistributeClassPageVo>> distributeClassPage(@Valid DistributeClassPageDto dto){
         Page<DistributeClassPageVo> page = roomBedService.getDistributeClassInfo(new Page<>(dto.getLimit(), dto.getSize()), dto);
         PageOutput<DistributeClassPageVo> pageOutput = ConventPage.getPageOutput(page, DistributeClassPageVo.class);
         return RT.ok(pageOutput);
     }
 
+    @GetMapping(value = "/distribute-roombed-page")
+    @ApiOperation(value="分配床位寝室床位列表(分页)")
+    @SaCheckPermission("roombed:detail")
+    public RT<PageOutput<DistributeRoomBedPageVo>> distributeRoomBedPage(@Valid DistributeRoomBedPageDto dto){
+        Page<DistributeRoomBedPageVo> page = roomBedService.getDistributeRoomBedInfo(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<DistributeRoomBedPageVo> pageOutput = ConventPage.getPageOutput(page, DistributeRoomBedPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
     @GetMapping(value = "/info")
     @ApiOperation(value="根据id查询寝室床位信息")
     @SaCheckPermission("roombed:detail")

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

@@ -3,9 +3,11 @@ package com.xjrsoft.module.room.mapper;
 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.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 org.apache.ibatis.annotations.Mapper;
 
@@ -32,4 +34,6 @@ public interface RoomBedMapper extends MPJBaseMapper<RoomBed> {
     Page<RoomBedPageVo> getPage(Page<RoomBedPageVo> page, RoomBedPageDto dto);
 
     Page<DistributeClassPageVo> getDistributeClassInfo(Page<DistributeClassPageVo> page, DistributeClassPageDto dto);
+
+    Page<DistributeRoomBedPageVo> getDistributeRoomBedInfo(Page<DistributeRoomBedPageVo> page, DistributeRoomBedPageDto dto);
 }

+ 16 - 0
src/main/java/com/xjrsoft/module/room/service/IRoomBedService.java

@@ -3,9 +3,11 @@ package com.xjrsoft.module.room.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.room.dto.DistributeClassPageDto;
+import com.xjrsoft.module.room.dto.DistributeRoomBedPageDto;
 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 java.util.List;
@@ -30,5 +32,19 @@ public interface IRoomBedService extends MPJBaseService<RoomBed> {
 
     Boolean clearStudentInfo(List<Long> ids);
 
+    /**
+     * 分配床位,第一步查询班级
+     * @param page
+     * @param dto
+     * @return
+     */
     Page<DistributeClassPageVo> getDistributeClassInfo(Page<DistributeClassPageVo> page, DistributeClassPageDto dto);
+
+    /**
+     * 分配床位,第二步查询班级
+     * @param page
+     * @param dto
+     * @return
+     */
+    Page<DistributeRoomBedPageVo> getDistributeRoomBedInfo(Page<DistributeRoomBedPageVo> page, DistributeRoomBedPageDto dto);
 }

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

@@ -3,11 +3,13 @@ package com.xjrsoft.module.room.service.impl;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.xjrsoft.module.room.dto.DistributeClassPageDto;
+import com.xjrsoft.module.room.dto.DistributeRoomBedPageDto;
 import com.xjrsoft.module.room.dto.RoomBedPageDto;
 import com.xjrsoft.module.room.entity.RoomBed;
 import com.xjrsoft.module.room.mapper.RoomBedMapper;
 import com.xjrsoft.module.room.service.IRoomBedService;
 import com.xjrsoft.module.room.vo.DistributeClassPageVo;
+import com.xjrsoft.module.room.vo.DistributeRoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedPageVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -44,4 +46,9 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
     public Page<DistributeClassPageVo> getDistributeClassInfo(Page<DistributeClassPageVo> page, DistributeClassPageDto dto) {
         return roomBedMapper.getDistributeClassInfo(page, dto);
     }
+
+    @Override
+    public Page<DistributeRoomBedPageVo> getDistributeRoomBedInfo(Page<DistributeRoomBedPageVo> page, DistributeRoomBedPageDto dto) {
+        return roomBedMapper.getDistributeRoomBedInfo(page, dto);
+    }
 }

+ 29 - 16
src/main/java/com/xjrsoft/module/room/vo/DistributeRoomBedPageVo.java

@@ -22,34 +22,47 @@ public class DistributeRoomBedPageVo {
     @ApiModelProperty("主键编号")
     private String id;
 
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("序号")
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+
     /**
      * 楼栋名称
      */
     @ContentStyle(dataFormat = 49)
-    @ExcelProperty("年级")
-    @ApiModelProperty("年级")
-    private String gradeName;
+    @ExcelProperty("楼栋")
+    @ApiModelProperty("楼栋")
+    private String buildName;
 
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("专业部")
     @ApiModelProperty("专业部")
-    private String orgName;
+    private Integer floorNumer;
 
-    /**
-     * 班级名称
-     */
     @ContentStyle(dataFormat = 49)
-    @ExcelProperty("班级名称")
-    @ApiModelProperty("班级名称")
-    private String className;
+    @ExcelProperty("寝室号")
+    @ApiModelProperty("寝室号")
+    private String roomName;
 
     @ContentStyle(dataFormat = 49)
-    @ExcelProperty("需要住宿人数")
-    @ApiModelProperty("需要住宿人数")
-    private Integer needCount;
+    @ExcelProperty("入住性别")
+    @ApiModelProperty("入住性别")
+    private String genderCn;
 
     @ContentStyle(dataFormat = 49)
-    @ExcelProperty("已分配床位数")
-    @ApiModelProperty("已分配床位数")
-    private Integer distributeCount;
+    @ExcelProperty("入住身份")
+    @ApiModelProperty("入住身份")
+    private String checkInStatusCn;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("入住班级")
+    @ApiModelProperty("入住班级")
+    private String intoClass;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("床位数")
+    @ApiModelProperty("床位数")
+    private Integer bedCount;
+
 }

+ 24 - 5
src/main/resources/mapper/room/RoomBedMapper.xml

@@ -13,7 +13,7 @@
         LEFT JOIN base_student_school_roll t6 ON t1.student_user_id = t6.user_id
         LEFT JOIN base_grade t7 ON t6.grade_id = t7.id
         LEFT JOIN base_class t8 ON t6.class_id = t8.id
-        LEFT JOIN xjr_dictionary_detail t9 ON t1.gender = t9.code AND t9.item_id = 2023000000000000004
+        LEFT JOIN xjr_dictionary_detail t9 ON t2.gender = t9.code AND t9.item_id = 2023000000000000004
         <if test="dto.officeBuildId != null">
             and t2.office_build_id = #{dto.officeBuildId}
         </if>
@@ -59,9 +59,22 @@
         LEFT JOIN base_grade t2 ON t1.grade_id = t2.id
         LEFT JOIN xjr_department t3 ON t1.org_id = t3.id
         WHERE t1.delete_mark = 0
+        and (
+        SELECT COUNT(*) FROM base_student c1
+        LEFT JOIN base_student_school_roll c2 ON c1.user_id = c2.user_id
+        LEFT JOIN xjr_dictionary_detail c3 ON c2.stduy_status = c3.code AND c3.item_id = 2023000000000000030
+        WHERE c1.delete_mark = 0 AND c2.delete_mark = 0
+        AND c3.code = 'FB3002' AND c2.class_id = t1.id
+        ) !=
+        (
+        SELECT COUNT(*) FROM room_bed a1
+        LEFT JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id
+        WHERE a1.delete_mark = 0 AND a2.delete_mark = 0
+        AND a2.class_id = t1.id
+        )
     </select>
-    <select id="getDistributeRoomBedInfo" parameterType="com.xjrsoft.module.room.dto.DistributeClassPageDto" resultType="com.xjrsoft.module.room.vo.DistributeRoomBedPageVo">
-        SELECT t1.id,t1.sort_code,t2.name AS build_name,t1.room_name,t4.name AS gender_cn, t3.name AS check_in_status_cn,
+    <select id="getDistributeRoomBedInfo" parameterType="com.xjrsoft.module.room.dto.DistributeRoomBedPageDto" resultType="com.xjrsoft.module.room.vo.DistributeRoomBedPageVo">
+        SELECT t1.id,t1.sort_code,t2.name AS build_name,t1.floor_number,t1.room_name,t4.name AS gender_cn, t3.name AS check_in_status_cn,
         t1.bed_count,(
         SELECT COUNT(*) FROM room_bed
         WHERE delete_mark = 0 AND room_id = t1.id
@@ -76,7 +89,13 @@
         LEFT JOIN base_office_build t2 ON t1.office_build_id = t2.id
         LEFT JOIN xjr_dictionary_detail t3 ON t1.check_in_status = t3.code AND t3.item_id = 1739843696019435521
         LEFT JOIN xjr_dictionary_detail t4 ON t1.gender = t4.code AND t4.item_id = 2023000000000000004
-        WHERE t1.delete_mark = 0 ORDER BY t1.sort_code
-
+        WHERE t1.delete_mark = 0
+        and
+            (
+                SELECT COUNT(*) FROM room_bed
+                WHERE delete_mark = 0 AND room_id = t1.id
+                  AND student_user_id IS NOT NULL
+            ) != t1.bed_count
+        ORDER BY t1.sort_code
     </select>
 </mapper>