Browse Source

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java
phoenix 1 year ago
parent
commit
bebe033d5d
30 changed files with 1116 additions and 45 deletions
  1. 2 2
      Makefile
  2. 67 0
      src/main/java/com/xjrsoft/module/base/entity/BaseOfficeBuild.java
  3. 22 2
      src/main/java/com/xjrsoft/module/room/controller/DistributeRoomBedController.java
  4. 81 0
      src/main/java/com/xjrsoft/module/room/controller/RoomTeacherAppointController.java
  5. 1 7
      src/main/java/com/xjrsoft/module/room/dto/AddRoomBedDto.java
  6. 33 0
      src/main/java/com/xjrsoft/module/room/dto/AddRoomTeacherAppointDto.java
  7. 5 2
      src/main/java/com/xjrsoft/module/room/dto/DistributeStudentDto.java
  8. 39 0
      src/main/java/com/xjrsoft/module/room/dto/RoomTeacherAppointPageDto.java
  9. 32 0
      src/main/java/com/xjrsoft/module/room/dto/UpdateRoomTeacherAppointDto.java
  10. 103 0
      src/main/java/com/xjrsoft/module/room/entity/RoomBedRecord.java
  11. 98 0
      src/main/java/com/xjrsoft/module/room/entity/RoomTeacherAppoint.java
  12. 11 0
      src/main/java/com/xjrsoft/module/room/mapper/RoomBedMapper.java
  13. 16 0
      src/main/java/com/xjrsoft/module/room/mapper/RoomBedRecordMapper.java
  14. 25 0
      src/main/java/com/xjrsoft/module/room/mapper/RoomTeacherAppointMapper.java
  15. 9 0
      src/main/java/com/xjrsoft/module/room/service/IRoomBedService.java
  16. 32 0
      src/main/java/com/xjrsoft/module/room/service/IRoomTeacherAppointService.java
  17. 72 7
      src/main/java/com/xjrsoft/module/room/service/impl/RoomBedServiceImpl.java
  18. 3 1
      src/main/java/com/xjrsoft/module/room/service/impl/RoomServiceImpl.java
  19. 61 0
      src/main/java/com/xjrsoft/module/room/service/impl/RoomTeacherAppointServiceImpl.java
  20. 34 0
      src/main/java/com/xjrsoft/module/room/vo/DistributeResultClassVo.java
  21. 45 0
      src/main/java/com/xjrsoft/module/room/vo/DistributeResultListVo.java
  22. 8 3
      src/main/java/com/xjrsoft/module/room/vo/DistributeRoomBedPageVo.java
  23. 71 0
      src/main/java/com/xjrsoft/module/room/vo/RoomTeacherAppointPageVo.java
  24. 49 0
      src/main/java/com/xjrsoft/module/room/vo/RoomTeacherAppointVo.java
  25. 0 4
      src/main/java/com/xjrsoft/module/student/mapper/BaseStudentMapper.java
  26. 22 2
      src/main/resources/mapper/room/RoomBedMapper.xml
  27. 69 0
      src/main/resources/mapper/room/RoomTeacherAppointMapper.xml
  28. 0 11
      src/main/resources/mapper/student/BaseStudentMapper.xml
  29. 77 4
      src/main/resources/sqlScript/20231218_sql.sql
  30. 29 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 2 - 2
Makefile

@@ -2,10 +2,10 @@ merge:
 	git checkout master;git merge dev;git push;git checkout dev;
 
 create-tag:
-	git checkout master;git tag v1.2.3;git push origin --tags;git checkout dev;
+	git checkout master;git tag v1.2.4;git push origin --tags;git checkout dev;
 
 remove-tag:
-	git tag -d v1.1.9;git push origin :refs/tags/v1.1.8;
+	git tag -d v1.2.0;git push origin :refs/tags/v1.1.8;
 
 gen-rsaprivatekey:
 	openssl genrsa -out rsaprivatekey.pem 1024

+ 67 - 0
src/main/java/com/xjrsoft/module/base/entity/BaseOfficeBuild.java

@@ -0,0 +1,67 @@
+package com.xjrsoft.module.base.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 学期表
+ * </p>
+ *
+ * @author baomidou
+ * @since 2023-09-02 04:52:58
+ */
+@Data
+@TableName("base_office_build")
+@ApiModel(value = "BaseOfficeBuild对象", description = "楼栋表")
+public class BaseOfficeBuild implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键")
+    private Long id;
+
+    @ApiModelProperty("创建人")
+    private Long createUserId;
+
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+
+    @ApiModelProperty("修改人")
+    private Long modifyUserId;
+
+    @ApiModelProperty("修改时间")
+    private Date modifyDate;
+
+    @ApiModelProperty("删除标记")
+    private Integer deleteMark;
+
+    @ApiModelProperty("有效标志")
+    private Integer enabledMark;
+
+    @ApiModelProperty("楼栋名称")
+    private String name;
+
+    @ApiModelProperty("所属校区(xjr_department)第一级")
+    private Long orgId;
+
+    @ApiModelProperty("楼层数")
+    private Integer floorTotal;
+
+    @ApiModelProperty("楼栋类型(xjr_dictionary_item[build_type])")
+    private String buildType;
+
+    @ApiModelProperty("状态(1:可用 0:停用)")
+    private Integer status;
+
+    @ApiModelProperty("地址")
+    private String address;
+
+    @ApiModelProperty("描述")
+    private String remark;
+}

+ 22 - 2
src/main/java/com/xjrsoft/module/room/controller/DistributeRoomBedController.java

@@ -1,9 +1,21 @@
 package com.xjrsoft.module.room.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.github.yulichang.toolkit.MPJWrappers;
+import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseOfficeBuild;
 import com.xjrsoft.module.room.dto.DistributeRoomBedDto;
+import com.xjrsoft.module.room.entity.Room;
+import com.xjrsoft.module.room.entity.RoomBed;
 import com.xjrsoft.module.room.service.IRoomBedService;
+import com.xjrsoft.module.room.vo.DistributeResultClassVo;
+import com.xjrsoft.module.room.vo.DistributeResultListVo;
+import com.xjrsoft.module.student.entity.BaseStudent;
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
+import com.xjrsoft.module.system.entity.DictionaryDetail;
+import com.xjrsoft.module.teacher.entity.XjrUser;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -13,6 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
 * @title: 寝室床位
@@ -32,7 +46,13 @@ public class DistributeRoomBedController {
     @PutMapping
     @ApiOperation(value = "修改寝室床位")
     @SaCheckPermission("roombed:edit")
-    public RT<Boolean> distributeRoomBed(@Valid @RequestBody DistributeRoomBedDto dto){
-        return RT.ok(roomBedService.distributeRoomBed(dto));
+    public RT<List<DistributeResultClassVo>> distributeRoomBed(@Valid @RequestBody DistributeRoomBedDto dto){
+        Boolean result = roomBedService.distributeRoomBed(dto);
+        List<DistributeResultClassVo> list = new ArrayList<>();
+        if(result){
+            list = roomBedService.getDistributeResult(dto);
+            return RT.ok(list);
+        }
+        return RT.ok(list);
     }
 }

+ 81 - 0
src/main/java/com/xjrsoft/module/room/controller/RoomTeacherAppointController.java

@@ -0,0 +1,81 @@
+package com.xjrsoft.module.room.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.module.room.dto.AddRoomTeacherAppointDto;
+import com.xjrsoft.module.room.dto.RoomTeacherAppointPageDto;
+import com.xjrsoft.module.room.entity.RoomTeacherAppoint;
+import com.xjrsoft.module.room.service.IRoomTeacherAppointService;
+import com.xjrsoft.module.room.vo.RoomTeacherAppointPageVo;
+import com.xjrsoft.module.room.vo.RoomTeacherAppointVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* @title: 宿管任命
+* @Author dzx
+* @Date: 2023-12-29
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/room" + "/roomTeacherAppoint")
+@Api(value = "/room"  + "/roomTeacherAppoint",tags = "宿管任命代码")
+@AllArgsConstructor
+public class RoomTeacherAppointController {
+
+
+    private final IRoomTeacherAppointService roomTeacherAppointService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="宿管任命列表(分页)")
+    @SaCheckPermission("roomteacherappoint:detail")
+    public RT<PageOutput<RoomTeacherAppointPageVo>> page(@Valid RoomTeacherAppointPageDto dto){
+
+        Page<RoomTeacherAppointPageVo> page = roomTeacherAppointService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<RoomTeacherAppointPageVo> pageOutput = ConventPage.getPageOutput(page, RoomTeacherAppointPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询宿管任命信息")
+    @SaCheckPermission("roomteacherappoint:detail")
+    public RT<RoomTeacherAppointVo> info(@RequestParam Long id){
+        RoomTeacherAppoint roomTeacherAppoint = roomTeacherAppointService.getById(id);
+        if (roomTeacherAppoint == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(roomTeacherAppoint, RoomTeacherAppointVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增宿管任命")
+    @SaCheckPermission("roomteacherappoint:add")
+    public RT<Boolean> add(@Valid @RequestBody AddRoomTeacherAppointDto dto){
+        boolean isSuccess = roomTeacherAppointService.saveBatch(dto);
+        return RT.ok(isSuccess);
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除宿管任命")
+    @SaCheckPermission("roomteacherappoint:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(roomTeacherAppointService.clearAppoint(ids));
+
+    }
+}

+ 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;
 
 
 

+ 33 - 0
src/main/java/com/xjrsoft/module/room/dto/AddRoomTeacherAppointDto.java

@@ -0,0 +1,33 @@
+package com.xjrsoft.module.room.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+
+/**
+* @title: 宿管任命
+* @Author dzx
+* @Date: 2023-12-29
+* @Version 1.0
+*/
+@Data
+public class AddRoomTeacherAppointDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 寝室编号(room)
+    */
+    @ApiModelProperty("寝室编号(roomIds)")
+    private List<Long> roomIds;
+    /**
+    * 用户编号
+    */
+    @ApiModelProperty("用户编号")
+    private List<Long> userIds;
+
+}

+ 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)
      */

+ 39 - 0
src/main/java/com/xjrsoft/module/room/dto/RoomTeacherAppointPageDto.java

@@ -0,0 +1,39 @@
+package com.xjrsoft.module.room.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 宿管任命分页查询入参
+* @Author dzx
+* @Date: 2023-12-29
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RoomTeacherAppointPageDto extends PageInput {
+
+    @ApiModelProperty("楼栋(base_office_build)")
+    private Long officeBuildId;
+
+    @ApiModelProperty("楼层号")
+    private Integer floorNumber;
+
+    @ApiModelProperty("寝室号")
+    private String roomName;
+
+    @ApiModelProperty("入住性别")
+    private String gender;
+
+    @ApiModelProperty("宿管员id")
+    private Long userId;
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/room/dto/UpdateRoomTeacherAppointDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.room.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 宿管任命
+* @Author dzx
+* @Date: 2023-12-29
+* @Version 1.0
+*/
+@Data
+public class UpdateRoomTeacherAppointDto extends AddRoomTeacherAppointDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 103 - 0
src/main/java/com/xjrsoft/module/room/entity/RoomBedRecord.java

@@ -0,0 +1,103 @@
+package com.xjrsoft.module.room.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 寝室床位记录
+* @Author dzx
+* @Date: 2023-12-28
+* @Version 1.0
+*/
+@Data
+@TableName("room_bed_record")
+@ApiModel(value = "room_bed_record", description = "寝室床位记录")
+public class RoomBedRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 入学年级(base_grade)
+    */
+    @ApiModelProperty("入学年级(base_grade)")
+    private Long gradeId;
+    /**
+    * 班级(base_class)
+    */
+    @ApiModelProperty("班级(base_class)")
+    private Long classId;
+    /**
+    * 需要床位号
+    */
+    @ApiModelProperty("需要床位号")
+    private Integer needBedNumber;
+    /**
+    * 分配床位数
+    */
+    @ApiModelProperty("分配床位数")
+    private Integer distributeBedNumber;
+
+
+}

+ 98 - 0
src/main/java/com/xjrsoft/module/room/entity/RoomTeacherAppoint.java

@@ -0,0 +1,98 @@
+package com.xjrsoft.module.room.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 宿管任命
+* @Author dzx
+* @Date: 2023-12-29
+* @Version 1.0
+*/
+@Data
+@TableName("room_teacher_appoint")
+@ApiModel(value = "room_teacher_appoint", description = "宿管任命")
+public class RoomTeacherAppoint implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 寝室编号(room)
+    */
+    @ApiModelProperty("寝室编号(room)")
+    private Long roomId;
+    /**
+    * 用户编号
+    */
+    @ApiModelProperty("用户编号")
+    private Long userId;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+}

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

@@ -3,14 +3,17 @@ 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.DistributeRoomBedDto;
 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.DistributeResultListVo;
 import com.xjrsoft.module.room.vo.DistributeRoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -41,4 +44,12 @@ public interface RoomBedMapper extends MPJBaseMapper<RoomBed> {
     Page<DistributeRoomBedPageVo> getDistributeRoomBedInfo(Page<DistributeRoomBedPageVo> page, DistributeRoomBedPageDto dto);
 
     List<RoomBedVo> getBedInfo(List<Long> ids);
+
+    /**
+     * 返回分配的结果
+     * @param dto
+     * @return
+     */
+    List<DistributeResultListVo> getDistributeResult(@Param("dto") DistributeRoomBedDto dto);
+
 }

+ 16 - 0
src/main/java/com/xjrsoft/module/room/mapper/RoomBedRecordMapper.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.room.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.room.entity.RoomBedRecord;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 寝室床位
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Mapper
+public interface RoomBedRecordMapper extends MPJBaseMapper<RoomBedRecord> {
+
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/room/mapper/RoomTeacherAppointMapper.java

@@ -0,0 +1,25 @@
+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.RoomTeacherAppointPageDto;
+import com.xjrsoft.module.room.entity.RoomTeacherAppoint;
+import com.xjrsoft.module.room.vo.RoomTeacherAppointPageVo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 宿管任命
+* @Author dzx
+* @Date: 2023-12-29
+* @Version 1.0
+*/
+@Mapper
+public interface RoomTeacherAppointMapper extends MPJBaseMapper<RoomTeacherAppoint> {
+    /**
+     * 分页查询
+     * @param page
+     * @param dto
+     * @return
+     */
+    Page<RoomTeacherAppointPageVo> getPage(Page<RoomTeacherAppointPageVo> page, RoomTeacherAppointPageDto dto);
+}

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

@@ -8,6 +8,8 @@ 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.DistributeResultClassVo;
+import com.xjrsoft.module.room.vo.DistributeResultListVo;
 import com.xjrsoft.module.room.vo.DistributeRoomBedPageVo;
 import com.xjrsoft.module.room.vo.RoomBedPageVo;
 
@@ -51,4 +53,11 @@ public interface IRoomBedService extends MPJBaseService<RoomBed> {
 
     Boolean distributeRoomBed(DistributeRoomBedDto dto);
 
+    /**
+     * 返回分配的结果
+     * @param dto
+     * @return
+     */
+    List<DistributeResultClassVo> getDistributeResult(DistributeRoomBedDto dto);
+
 }

+ 32 - 0
src/main/java/com/xjrsoft/module/room/service/IRoomTeacherAppointService.java

@@ -0,0 +1,32 @@
+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.AddRoomTeacherAppointDto;
+import com.xjrsoft.module.room.dto.RoomTeacherAppointPageDto;
+import com.xjrsoft.module.room.entity.RoomTeacherAppoint;
+import com.xjrsoft.module.room.vo.RoomTeacherAppointPageVo;
+
+import java.util.List;
+
+/**
+* @title: 宿管任命
+* @Author dzx
+* @Date: 2023-12-29
+* @Version 1.0
+*/
+
+public interface IRoomTeacherAppointService extends MPJBaseService<RoomTeacherAppoint> {
+
+    /**
+     * 分页查询
+     * @param page
+     * @param dto
+     * @return
+     */
+    Page<RoomTeacherAppointPageVo> getPage(Page<RoomTeacherAppointPageVo> page, RoomTeacherAppointPageDto dto);
+
+    Boolean clearAppoint(List<Long> ids);
+
+    Boolean saveBatch(AddRoomTeacherAppointDto dto);
+}

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

@@ -2,30 +2,44 @@ package com.xjrsoft.module.room.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 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.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.mapper.BaseClassMapper;
 import com.xjrsoft.module.room.dto.DistributeClassPageDto;
 import com.xjrsoft.module.room.dto.DistributeRoomBedDto;
 import com.xjrsoft.module.room.dto.DistributeRoomBedPageDto;
 import com.xjrsoft.module.room.dto.RoomBedPageDto;
 import com.xjrsoft.module.room.entity.Room;
 import com.xjrsoft.module.room.entity.RoomBed;
+import com.xjrsoft.module.room.entity.RoomBedRecord;
 import com.xjrsoft.module.room.mapper.RoomBedMapper;
+import com.xjrsoft.module.room.mapper.RoomBedRecordMapper;
 import com.xjrsoft.module.room.mapper.RoomMapper;
 import com.xjrsoft.module.room.service.IRoomBedService;
 import com.xjrsoft.module.room.vo.DistributeClassPageVo;
+import com.xjrsoft.module.room.vo.DistributeResultClassVo;
+import com.xjrsoft.module.room.vo.DistributeResultListVo;
 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.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
 * @title: 寝室床位
@@ -39,6 +53,8 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
     private final RoomMapper roomMapper;
     private final RoomBedMapper roomBedMapper;
     private final BaseStudentMapper baseStudentMapper;
+    private final BaseClassMapper baseClassMapper;
+    private final RoomBedRecordMapper roomBedRecordMapper;
     @Override
     public Page<RoomBedPageVo> getPage(Page<RoomBedPageVo> page, RoomBedPageDto dto) {
         Page<RoomBedPageVo> result = roomBedMapper.getPage(page, dto);
@@ -84,12 +100,27 @@ 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;
+                }
                 RoomBedVo roomBedVo = bedInfoList.get(i);
                 RoomBed roomBed = BeanUtil.toBean(roomBedVo, RoomBed.class);
                 roomBed.setStudentUserId(studentInfoVo.getUserId());
@@ -97,8 +128,18 @@ 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)->{
+            RoomBedRecord record = new RoomBedRecord();
+//            record.setClassId();
+//            roomBedRecordMapper.insert();
+        });
 
         //查询每个寝室住入的班级数量,大于2的设置为混合寝室
         List<RoomClassCountVo> classCountVoList = roomMapper.getRoomClassCount(dto.getRoomIds());
@@ -111,4 +152,28 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
         }
         return true;
     }
+
+    @Override
+    public List<DistributeResultClassVo> getDistributeResult(DistributeRoomBedDto dto) {
+        List<DistributeResultListVo> list = roomBedMapper.getDistributeResult(dto);
+        List<BaseClass> classList = baseClassMapper.selectList(
+            Wrappers.lambdaQuery(BaseClass.class).in(BaseClass::getId, dto.getClassIds())
+            .select(BaseClass.class, x -> VoToColumnUtil.fieldsToColumns(BaseClass.class).contains(x.getProperty()))
+        );
+        List<DistributeResultClassVo> result =  new ArrayList<>();
+        for (BaseClass baseClass : classList) {
+            DistributeResultClassVo classVo = new DistributeResultClassVo();
+            classVo.setClassName(baseClass.getName());
+            List<DistributeResultListVo> studentList = new ArrayList<>();
+            for (DistributeResultListVo listVo : list) {
+                if(listVo.getClassId() == null || !listVo.getClassId().equals(baseClass.getId().toString())){
+                    continue;
+                }
+                studentList.add(listVo);
+            }
+            classVo.setStudentList(studentList);
+            result.add(classVo);
+        }
+        return result;
+    }
 }

+ 3 - 1
src/main/java/com/xjrsoft/module/room/service/impl/RoomServiceImpl.java

@@ -54,9 +54,10 @@ public class RoomServiceImpl extends MPJBaseServiceImpl<RoomMapper, Room> implem
                 if(rooms != null && !rooms.isEmpty()){
                     continue;
                 }
+
                 //先添加寝室
                 Room room = BeanUtil.toBean(dto, Room.class);
-                room.setSortCode(maxSortCode + i);
+                room.setSortCode(maxSortCode);
                 room.setFloorNumber(Integer.parseInt(floorNumber));
                 room.setCreateDate(createDate);
                 room.setCreateUserId(createUserId);
@@ -64,6 +65,7 @@ public class RoomServiceImpl extends MPJBaseServiceImpl<RoomMapper, Room> implem
                 room.setEnabledMark(1);
                 room.setRoomName(roomName);
                 roomMapper.insert(room);
+                maxSortCode ++;
 
                 Long roomId = room.getId();
                 Integer bedMaxSortCode = roomBedMapper.getMaxSortCode() + 1;

+ 61 - 0
src/main/java/com/xjrsoft/module/room/service/impl/RoomTeacherAppointServiceImpl.java

@@ -0,0 +1,61 @@
+package com.xjrsoft.module.room.service.impl;
+
+import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.module.room.dto.AddRoomTeacherAppointDto;
+import com.xjrsoft.module.room.dto.RoomTeacherAppointPageDto;
+import com.xjrsoft.module.room.entity.RoomTeacherAppoint;
+import com.xjrsoft.module.room.mapper.RoomTeacherAppointMapper;
+import com.xjrsoft.module.room.service.IRoomTeacherAppointService;
+import com.xjrsoft.module.room.vo.RoomTeacherAppointPageVo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+* @title: 宿管任命
+* @Author dzx
+* @Date: 2023-12-29
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class RoomTeacherAppointServiceImpl extends MPJBaseServiceImpl<RoomTeacherAppointMapper, RoomTeacherAppoint> implements IRoomTeacherAppointService {
+    private final RoomTeacherAppointMapper roomTeacherAppointMapper;
+    @Override
+    public Page<RoomTeacherAppointPageVo> getPage(Page<RoomTeacherAppointPageVo> page, RoomTeacherAppointPageDto dto) {
+        return roomTeacherAppointMapper.getPage(page, dto);
+    }
+
+    @Override
+    public Boolean clearAppoint(List<Long> ids) {
+        LambdaQueryWrapper<RoomTeacherAppoint> wrapper = Wrappers.lambdaQuery(RoomTeacherAppoint.class).in(RoomTeacherAppoint::getRoomId, ids);
+        roomTeacherAppointMapper.delete(wrapper);
+        return true;
+    }
+
+    @Override
+    public Boolean saveBatch(AddRoomTeacherAppointDto dto) {
+        Long createUserId = StpUtil.getLoginIdAsLong();
+        Date createDate = new Date();
+        for (Long roomId : dto.getRoomIds()) {
+            for (Long userId : dto.getUserIds()) {
+                RoomTeacherAppoint appoint = new RoomTeacherAppoint();
+                appoint.setUserId(createUserId);
+                appoint.setCreateDate(createDate);
+                appoint.setDeleteMark(0);
+                appoint.setEnabledMark(1);
+                appoint.setUserId(userId);
+                appoint.setRoomId(roomId);
+                roomTeacherAppointMapper.insert(appoint);
+            }
+        }
+        return true;
+    }
+}

+ 34 - 0
src/main/java/com/xjrsoft/module/room/vo/DistributeResultClassVo.java

@@ -0,0 +1,34 @@
+package com.xjrsoft.module.room.vo;
+
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+* @title: 寝室床位分页列表出参
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class DistributeResultClassVo {
+
+    /**
+    * 主键编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("班级id")
+    private String classId;
+
+    /**
+     * 学生姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("学生姓名")
+    private String className;
+
+    private List<DistributeResultListVo> studentList;
+
+}

+ 45 - 0
src/main/java/com/xjrsoft/module/room/vo/DistributeResultListVo.java

@@ -0,0 +1,45 @@
+package com.xjrsoft.module.room.vo;
+
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 寝室床位分页列表出参
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class DistributeResultListVo {
+
+    /**
+    * 主键编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("班级id")
+    private String classId;
+
+    /**
+     * 学生姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("学生姓名")
+    private String name;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("性别")
+    private String genderCn;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("楼栋名称")
+    private String buildName;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("寝室名称")
+    private String roomName;
+
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("床位号")
+    private Integer bedNumber;
+}

+ 8 - 3
src/main/java/com/xjrsoft/module/room/vo/DistributeRoomBedPageVo.java

@@ -36,9 +36,9 @@ public class DistributeRoomBedPageVo {
     private String buildName;
 
     @ContentStyle(dataFormat = 49)
-    @ExcelProperty("专业部")
-    @ApiModelProperty("专业部")
-    private Integer floorNumer;
+    @ExcelProperty("楼层")
+    @ApiModelProperty("楼层")
+    private Integer floorNumber;
 
     @ContentStyle(dataFormat = 49)
     @ExcelProperty("寝室号")
@@ -65,4 +65,9 @@ public class DistributeRoomBedPageVo {
     @ApiModelProperty("床位数")
     private Integer bedCount;
 
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("已入住人数")
+    @ApiModelProperty("已入住人数")
+    private Integer intoCount;
+
 }

+ 71 - 0
src/main/java/com/xjrsoft/module/room/vo/RoomTeacherAppointPageVo.java

@@ -0,0 +1,71 @@
+package com.xjrsoft.module.room.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 宿管任命分页列表出参
+* @Author dzx
+* @Date: 2023-12-29
+* @Version 1.0
+*/
+@Data
+public class RoomTeacherAppointPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 序号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 楼栋名称
+    */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("楼栋名称")
+    private String buildName;
+    /**
+    * 楼层
+    */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("楼层")
+    private Integer floorNumber;
+    /**
+    * 寝室
+    */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("寝室")
+    private String roomName;
+
+    /**
+     * 寝室
+     */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("入住性别")
+    private String genderCn;
+
+    /**
+     * 寝室
+     */
+    @ContentStyle(dataFormat = 49)
+    @ApiModelProperty("宿管员")
+    private String appointUsers;
+
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/room/vo/RoomTeacherAppointVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.room.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 宿管任命表单出参
+* @Author dzx
+* @Date: 2023-12-29
+* @Version 1.0
+*/
+@Data
+public class RoomTeacherAppointVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 寝室编号(room)
+    */
+    @ApiModelProperty("寝室编号(room)")
+    private Long roomId;
+    /**
+    * 用户编号
+    */
+    @ApiModelProperty("用户编号")
+    private Long userId;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+
+}

+ 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);
 }

+ 22 - 2
src/main/resources/mapper/room/RoomBedMapper.xml

@@ -65,7 +65,7 @@
         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 = 'FB3001' 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
@@ -84,7 +84,7 @@
         LEFT JOIN base_student_school_roll c2 ON c1.student_user_id = c2.user_id
         LEFT JOIN base_class c3 ON c2.class_id = c3.id
         WHERE c1.delete_mark = 0 AND c1.room_id = t1.id
-        AND c1.student_user_id IS NOT NULL GROUP BY c3.id
+        AND c1.student_user_id IS NOT NULL
         ) AS into_class FROM room t1
         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
@@ -108,4 +108,24 @@
         </foreach>
         ORDER BY t2.sort_code,t1.sort_code
     </select>
+
+    <select id="getDistributeResult" parameterType="com.xjrsoft.module.room.dto.DistributeRoomBedDto" resultType="com.xjrsoft.module.room.vo.DistributeResultListVo">
+        SELECT t5.class_id,t4.name,t6.name AS gender_cn,t3.name AS build_name,t2.room_name,t1.bed_number FROM room_bed t1
+        LEFT JOIN room t2 ON t1.room_id = t2.id
+        LEFT JOIN base_office_build t3 ON t2.office_build_id = t3.id
+        LEFT JOIN xjr_user t4 ON t1.student_user_id = t4.id
+        LEFT JOIN base_student_school_roll t5 ON t5.user_id = t4.id
+        LEFT JOIN xjr_dictionary_detail t6 ON t2.gender = t6.code AND t6.item_id = 2023000000000000004
+        WHERE t1.student_user_id IS NOT NULL AND t1.delete_mark = 0
+        AND t1.room_id IN
+        <foreach item="roomId" index="index" collection="dto.roomIds" open="(" close=")" separator=",">
+            #{roomId}
+        </foreach>
+        AND t5.class_id IN
+        <foreach item="classId" index="index" collection="dto.classIds" open="(" close=")" separator=",">
+            #{classId}
+        </foreach>
+        ORDER BY t2.sort_code,t1.sort_code
+    </select>
+
 </mapper>

+ 69 - 0
src/main/resources/mapper/room/RoomTeacherAppointMapper.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.room.mapper.RoomTeacherAppointMapper">
+    <select id="getPage" parameterType="com.xjrsoft.module.room.dto.RoomTeacherAppointPageDto" resultType="com.xjrsoft.module.room.vo.RoomTeacherAppointPageVo">
+        SELECT t1.id,t1.sort_code,t2.name AS build_name,t1.floor_number,t1.room_name,t3.name AS gender_cn,
+        (
+        SELECT GROUP_CONCAT(c2.name) FROM room_teacher_appoint c1
+        LEFT JOIN xjr_user c2 ON c1.user_id = c2.id
+        WHERE c1.delete_mark = 0 AND c1.room_id = t1.id
+        ) AS appoint_users FROM room t1
+        LEFT JOIN base_office_build t2 ON t1.office_build_id = t2.id
+        LEFT JOIN xjr_dictionary_detail t3 ON t1.gender = t3.code AND t3.item_id = 2023000000000000004
+        WHERE t1.delete_mark = 0
+        <if test="dto.officeBuildId != null">
+            and t1.office_build_id = #{dto.officeBuildId}
+        </if>
+        <if test="dto.floorNumber != null">
+            and t1.floor_number = #{dto.floorNumber}
+        </if>
+        <if test="dto.roomName != null and dto.roomName != ''">
+            and t1.room_name like concat('%', #{dto.checkInStatus},'%')
+        </if>
+        <if test="dto.gender != null and dto.gender != ''">
+            and t1.gender = #{dto.gender}
+        </if>
+        <if test="dto.userId != null">
+            and t1.id in (
+            SELECT DISTINCT c1.room_id FROM room_teacher_appoint c1
+            LEFT JOIN xjr_user c2 ON c1.user_id = c2.id
+            WHERE c1.delete_mark = 0 AND c2.id = #{dto.userId}
+            )
+        </if>
+        ORDER BY t1.sort_code
+    </select>
+
+    <select id="getPage" parameterType="com.xjrsoft.module.room.dto.RoomTeacherAppointPageDto" resultType="com.xjrsoft.module.room.vo.RoomTeacherAppointPageVo">
+        SELECT t1.id,t1.sort_code,t2.name AS build_name,t1.floor_number,t1.room_name,t3.name AS gender_cn,
+        (
+        SELECT GROUP_CONCAT(c2.name) FROM room_teacher_appoint c1
+        LEFT JOIN xjr_user c2 ON c1.user_id = c2.id
+        WHERE c1.delete_mark = 0 AND c1.room_id = t1.id
+        ) AS appoint_users FROM room t1
+        LEFT JOIN base_office_build t2 ON t1.office_build_id = t2.id
+        LEFT JOIN xjr_dictionary_detail t3 ON t1.gender = t3.code AND t3.item_id = 2023000000000000004
+        WHERE t1.delete_mark = 0
+        <if test="dto.officeBuildId != null">
+            and t1.office_build_id = #{dto.officeBuildId}
+        </if>
+        <if test="dto.floorNumber != null">
+            and t1.floor_number = #{dto.floorNumber}
+        </if>
+        <if test="dto.roomName != null and dto.roomName != ''">
+            and t1.room_name like concat('%', #{dto.checkInStatus},'%')
+        </if>
+        <if test="dto.gender != null and dto.gender != ''">
+            and t1.gender = #{dto.gender}
+        </if>
+        <if test="dto.userId != null">
+            and t1.id in (
+            SELECT DISTINCT c1.room_id FROM room_teacher_appoint c1
+            LEFT JOIN xjr_user c2 ON c1.user_id = c2.id
+            WHERE c1.delete_mark = 0 AND c2.id = #{dto.userId}
+            )
+        </if>
+        ORDER BY t1.sort_code
+    </select>
+</mapper>

+ 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>

+ 77 - 4
src/main/resources/sqlScript/20231218_sql.sql

@@ -488,7 +488,7 @@ CREATE TABLE textbook_claim_user
 ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '教材领取人员';
 
 -- ----------------------------
--- 教材入库
+-- 教材入库记录
 -- ----------------------------
 DROP TABLE IF EXISTS textbook_warehouse_record;
 CREATE TABLE textbook_warehouse_record
@@ -511,7 +511,7 @@ CREATE TABLE textbook_warehouse_record
     `warehouse_mode` varchar(20) NULL DEFAULT NULL COMMENT '入库方式(xjr_dictionary_item[warehouse_mode])',
     `remark` varchar(1000) COMMENT '备注',
     PRIMARY KEY (`id`)
-) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '教材入库';
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '教材入库记录';
 
 -- ----------------------------
 -- 教材出库记录
@@ -533,8 +533,6 @@ CREATE TABLE textbook_issue_record
     `remaining_number` int NULL DEFAULT NULL COMMENT '剩余数量',
     `receive_user_id` bigint NULL DEFAULT NULL COMMENT '领取用户编号',
     `issue_user_id` bigint NULL DEFAULT NULL COMMENT '出库用户编号',
-    `issue_mode` varchar(20) NULL DEFAULT NULL COMMENT '出库方式(xjr_dictionary_item[issue_mode])',
-    `remark` varchar(1000) COMMENT '备注',
     PRIMARY KEY (`id`)
 ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '教材出库记录';
 
@@ -735,6 +733,81 @@ CREATE TABLE room_bed_record_item
     PRIMARY KEY (`id`)
 ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '寝室床位记录项';
 
+-- ----------------------------
+-- 寝室申请
+-- ----------------------------
+DROP TABLE IF EXISTS wf_room_applicant;
+CREATE TABLE wf_room_applicant
+(
+    id BIGINT NOT NULL COMMENT '主键编号',
+    `create_user_id` BIGINT NULL DEFAULT NULL COMMENT '创建人',
+    `create_date` datetime NULL DEFAULT NULL COMMENT '创建时间',
+    `modify_user_id` BIGINT NULL DEFAULT NULL COMMENT '修改人',
+    `modify_date` datetime NULL DEFAULT NULL COMMENT '修改时间',
+    `delete_mark` INT NOT NULL COMMENT '删除标记',
+    `enabled_mark` INT NOT NULL COMMENT '有效标志',
+    `sort_code` INT NULL DEFAULT NULL COMMENT '序号',
+    `applicant_user_id` bigint NULL DEFAULT NULL COMMENT '申请人',
+    `recede_type` varchar(20) NULL DEFAULT NULL COMMENT '寝室申请类型(xjr_dictionary_item[room_applicant_type])',
+    `class_name` varchar(200) NULL DEFAULT NULL COMMENT '班级名称',
+    `room_bed_number`  varchar(200) NULL DEFAULT NULL COMMENT '寝室+床位名称',
+    `start_time` date NULL DEFAULT NULL COMMENT '开始时间',
+    `nos_reason` varchar(20) NULL DEFAULT NULL COMMENT '离宿事由(xjr_dictionary_item[nos_reason])',
+    `remark` varchar(1000) COMMENT '备注',
+    `status` int not null default 0 COMMENT '状态(1:结束 0:未结束)',
+    PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '寝室申请';
+
+-- ----------------------------
+-- 寝室情况汇报
+-- ----------------------------
+DROP TABLE IF EXISTS wf_room_report;
+CREATE TABLE wf_room_report
+(
+    id BIGINT NOT NULL COMMENT '主键编号',
+    `create_user_id` BIGINT NULL DEFAULT NULL COMMENT '创建人',
+    `create_date` datetime NULL DEFAULT NULL COMMENT '创建时间',
+    `modify_user_id` BIGINT NULL DEFAULT NULL COMMENT '修改人',
+    `modify_date` datetime NULL DEFAULT NULL COMMENT '修改时间',
+    `delete_mark` INT NOT NULL COMMENT '删除标记',
+    `enabled_mark` INT NOT NULL COMMENT '有效标志',
+    `sort_code` INT NULL DEFAULT NULL COMMENT '序号',
+    `applicant_user_id` bigint NULL DEFAULT NULL COMMENT '申请人',
+    `room_bed_number`  varchar(200) NULL DEFAULT NULL COMMENT '寝室+床位名称',
+    `remark` varchar(1000) COMMENT '备注',
+    `file_id` BIGINT NULL DEFAULT NULL COMMENT '附件文件id',
+    `status` int not null default 0 COMMENT '状态(1:结束 0:未结束)',
+    PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '寝室情况汇报';
+
+-- ----------------------------
+-- 留校住宿申请
+-- ----------------------------
+DROP TABLE IF EXISTS wf_room_stay_overnight;
+CREATE TABLE wf_room_stay_overnight
+(
+    id BIGINT NOT NULL COMMENT '主键编号',
+    `create_user_id` BIGINT NULL DEFAULT NULL COMMENT '创建人',
+    `create_date` datetime NULL DEFAULT NULL COMMENT '创建时间',
+    `modify_user_id` BIGINT NULL DEFAULT NULL COMMENT '修改人',
+    `modify_date` datetime NULL DEFAULT NULL COMMENT '修改时间',
+    `delete_mark` INT NOT NULL COMMENT '删除标记',
+    `enabled_mark` INT NOT NULL COMMENT '有效标志',
+    `sort_code` INT NULL DEFAULT NULL COMMENT '序号',
+    `applicant_user_id` bigint NULL DEFAULT NULL COMMENT '申请人',
+    `room_bed_number`  varchar(200) NULL DEFAULT NULL COMMENT '寝室+床位名称',
+    `student_id` VARCHAR(30) NULL DEFAULT NULL COMMENT '学号',
+    `gender_name` VARCHAR(200) NULL DEFAULT NULL COMMENT '性别',
+    `class_name` VARCHAR(200) NULL DEFAULT NULL COMMENT '班级',
+    `start_time` DATE NULL DEFAULT NULL COMMENT '开始时间',
+    `end_time` DATE NULL DEFAULT NULL COMMENT '结束时间',
+    `duration` int NULL DEFAULT NULL COMMENT '时长(天)',
+    `mobile` VARCHAR(30) NULL DEFAULT NULL COMMENT '联系电话',
+    `guardian_mobile` VARCHAR(30) NULL DEFAULT NULL COMMENT '联系电话',
+    `remark` varchar(1000) COMMENT '备注',
+    `status` int not null default 0 COMMENT '状态(1:结束 0:未结束)',
+    PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '留校住宿申请';
 -- ------------------------------------------------------------------寝室管理--------------------------------------------------------------------
 
 

+ 29 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -1615,4 +1615,33 @@ public class FreeMarkerGeneratorTest {
 
         apiGeneratorService.generateCodes(params);
     }
+
+    /**
+     * 宿管员管理
+     * @throws IOException
+     */
+    @Test
+    public void gcRoomTeacherAppoint() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("room_teacher_appoint");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("dzx");//作者名称
+        params.setPackageName("room");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(true);//是否生成导入接口
+        params.setExport(true);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
 }