Kaynağa Gözat

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

# Conflicts:
#	src/main/resources/sqlScript/20231218_sql.sql
fanxp 1 yıl önce
ebeveyn
işleme
7578f1bc03
100 değiştirilmiş dosya ile 5020 ekleme ve 170 silme
  1. 35 0
      src/main/java/com/xjrsoft/common/enums/ClaimTypeEnum.java
  2. 35 0
      src/main/java/com/xjrsoft/common/enums/ExerciseBookeTypeEnum.java
  3. 40 0
      src/main/java/com/xjrsoft/common/enums/IssueModeEnum.java
  4. 35 0
      src/main/java/com/xjrsoft/common/enums/SubscriptionTypeEnum.java
  5. 40 0
      src/main/java/com/xjrsoft/common/enums/TextbookTypeEnum.java
  6. 35 0
      src/main/java/com/xjrsoft/common/enums/WarehouseModeEnum.java
  7. 30 0
      src/main/java/com/xjrsoft/module/liteflow/node/AddExerciseBookNode.java
  8. 1 1
      src/main/java/com/xjrsoft/module/liteflow/node/AddTextbookNode.java
  9. 0 2
      src/main/java/com/xjrsoft/module/oa/dto/NewsPageDto.java
  10. 38 0
      src/main/java/com/xjrsoft/module/room/controller/DistributeRoomBedController.java
  11. 140 0
      src/main/java/com/xjrsoft/module/room/controller/RoomBedController.java
  12. 117 0
      src/main/java/com/xjrsoft/module/room/controller/RoomController.java
  13. 94 0
      src/main/java/com/xjrsoft/module/room/controller/RoomTeacherAppointController.java
  14. 58 0
      src/main/java/com/xjrsoft/module/room/dto/AddRoomBedDto.java
  15. 58 0
      src/main/java/com/xjrsoft/module/room/dto/AddRoomDto.java
  16. 48 0
      src/main/java/com/xjrsoft/module/room/dto/AddRoomTeacherAppointDto.java
  17. 43 0
      src/main/java/com/xjrsoft/module/room/dto/DistributeClassPageDto.java
  18. 27 0
      src/main/java/com/xjrsoft/module/room/dto/DistributeRoomBedDto.java
  19. 43 0
      src/main/java/com/xjrsoft/module/room/dto/DistributeRoomBedPageDto.java
  20. 49 0
      src/main/java/com/xjrsoft/module/room/dto/RoomBedPageDto.java
  21. 36 0
      src/main/java/com/xjrsoft/module/room/dto/RoomPageDto.java
  22. 39 0
      src/main/java/com/xjrsoft/module/room/dto/RoomTeacherAppointPageDto.java
  23. 32 0
      src/main/java/com/xjrsoft/module/room/dto/UpdateRoomBedDto.java
  24. 32 0
      src/main/java/com/xjrsoft/module/room/dto/UpdateRoomDto.java
  25. 32 0
      src/main/java/com/xjrsoft/module/room/dto/UpdateRoomTeacherAppointDto.java
  26. 123 0
      src/main/java/com/xjrsoft/module/room/entity/Room.java
  27. 108 0
      src/main/java/com/xjrsoft/module/room/entity/RoomBed.java
  28. 103 0
      src/main/java/com/xjrsoft/module/room/entity/RoomBedRecord.java
  29. 98 0
      src/main/java/com/xjrsoft/module/room/entity/RoomTeacherAppoint.java
  30. 44 0
      src/main/java/com/xjrsoft/module/room/mapper/RoomBedMapper.java
  31. 43 0
      src/main/java/com/xjrsoft/module/room/mapper/RoomMapper.java
  32. 25 0
      src/main/java/com/xjrsoft/module/room/mapper/RoomTeacherAppointMapper.java
  33. 54 0
      src/main/java/com/xjrsoft/module/room/service/IRoomBedService.java
  34. 39 0
      src/main/java/com/xjrsoft/module/room/service/IRoomService.java
  35. 29 0
      src/main/java/com/xjrsoft/module/room/service/IRoomTeacherAppointService.java
  36. 117 0
      src/main/java/com/xjrsoft/module/room/service/impl/RoomBedServiceImpl.java
  37. 95 0
      src/main/java/com/xjrsoft/module/room/service/impl/RoomServiceImpl.java
  38. 41 0
      src/main/java/com/xjrsoft/module/room/service/impl/RoomTeacherAppointServiceImpl.java
  39. 55 0
      src/main/java/com/xjrsoft/module/room/vo/DistributeClassPageVo.java
  40. 73 0
      src/main/java/com/xjrsoft/module/room/vo/DistributeRoomBedPageVo.java
  41. 110 0
      src/main/java/com/xjrsoft/module/room/vo/RoomBedPageVo.java
  42. 59 0
      src/main/java/com/xjrsoft/module/room/vo/RoomBedVo.java
  43. 27 0
      src/main/java/com/xjrsoft/module/room/vo/RoomClassCountVo.java
  44. 106 0
      src/main/java/com/xjrsoft/module/room/vo/RoomPageVo.java
  45. 71 0
      src/main/java/com/xjrsoft/module/room/vo/RoomTeacherAppointPageVo.java
  46. 49 0
      src/main/java/com/xjrsoft/module/room/vo/RoomTeacherAppointVo.java
  47. 74 0
      src/main/java/com/xjrsoft/module/room/vo/RoomVo.java
  48. 102 0
      src/main/java/com/xjrsoft/module/student/controller/BaseClassMajorSetController.java
  49. 58 0
      src/main/java/com/xjrsoft/module/student/dto/AddBaseClassMajorSetDto.java
  50. 26 0
      src/main/java/com/xjrsoft/module/student/dto/BaseClassMajorSetPageDto.java
  51. 19 0
      src/main/java/com/xjrsoft/module/student/dto/DistributeStudentDto.java
  52. 32 0
      src/main/java/com/xjrsoft/module/student/dto/UpdateBaseClassMajorSetDto.java
  53. 108 0
      src/main/java/com/xjrsoft/module/student/entity/BaseClassMajorSet.java
  54. 17 0
      src/main/java/com/xjrsoft/module/student/mapper/BaseClassMajorSetMapper.java
  55. 4 0
      src/main/java/com/xjrsoft/module/student/mapper/BaseStudentMapper.java
  56. 17 0
      src/main/java/com/xjrsoft/module/student/service/IBaseClassMajorSetService.java
  57. 7 7
      src/main/java/com/xjrsoft/module/student/service/impl/BaseClassMajorSetServiceImpl.java
  58. 89 0
      src/main/java/com/xjrsoft/module/student/vo/BaseClassMajorSetPageVo.java
  59. 59 0
      src/main/java/com/xjrsoft/module/student/vo/BaseClassMajorSetVo.java
  60. 3 1
      src/main/java/com/xjrsoft/module/teacher/controller/AttendanceRecordController.java
  61. 8 0
      src/main/java/com/xjrsoft/module/teacher/mapper/XjrUserMapper.java
  62. 0 116
      src/main/java/com/xjrsoft/module/textbook/controller/TextbookClassWarehouseController.java
  63. 17 5
      src/main/java/com/xjrsoft/module/textbook/controller/TextbookController.java
  64. 109 0
      src/main/java/com/xjrsoft/module/textbook/controller/TextbookIssueRecordController.java
  65. 155 0
      src/main/java/com/xjrsoft/module/textbook/controller/TextbookStudentClaimController.java
  66. 108 0
      src/main/java/com/xjrsoft/module/textbook/controller/TextbookWarehouseRecordController.java
  67. 116 0
      src/main/java/com/xjrsoft/module/textbook/controller/WfExerciseBookController.java
  68. 21 1
      src/main/java/com/xjrsoft/module/textbook/controller/WfTextbookClaimController.java
  69. 73 0
      src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookIssueRecordDto.java
  70. 63 0
      src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookStudentClaimDto.java
  71. 1 7
      src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookWarehouseRecordDto.java
  72. 64 0
      src/main/java/com/xjrsoft/module/textbook/dto/AddWfExerciseBookDto.java
  73. 58 0
      src/main/java/com/xjrsoft/module/textbook/dto/AddWfExerciseBookItemDto.java
  74. 61 0
      src/main/java/com/xjrsoft/module/textbook/dto/ConfirmDistributeDto.java
  75. 30 0
      src/main/java/com/xjrsoft/module/textbook/dto/TeacherCheckByStuDto.java
  76. 25 0
      src/main/java/com/xjrsoft/module/textbook/dto/TeacherCheckByclassDto.java
  77. 25 0
      src/main/java/com/xjrsoft/module/textbook/dto/TeacherCheckStuClaimDto.java
  78. 35 0
      src/main/java/com/xjrsoft/module/textbook/dto/TeacherConfirmDto.java
  79. 31 0
      src/main/java/com/xjrsoft/module/textbook/dto/TextbookClaimStudentConfirmDto.java
  80. 51 0
      src/main/java/com/xjrsoft/module/textbook/dto/TextbookIssueRecordPageDto.java
  81. 7 1
      src/main/java/com/xjrsoft/module/textbook/dto/TextbookPageDto.java
  82. 30 0
      src/main/java/com/xjrsoft/module/textbook/dto/TextbookStudentClaimPageDto.java
  83. 45 0
      src/main/java/com/xjrsoft/module/textbook/dto/TextbookWarehouseRecordPageDto.java
  84. 32 0
      src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookIssueRecordDto.java
  85. 2 2
      src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookStudentClaimDto.java
  86. 23 0
      src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookWarehouseRecordDto.java
  87. 33 0
      src/main/java/com/xjrsoft/module/textbook/dto/UpdateWfExerciseBookDto.java
  88. 2 9
      src/main/java/com/xjrsoft/module/textbook/dto/UpdateWfTextbookClaimDto.java
  89. 3 3
      src/main/java/com/xjrsoft/module/textbook/dto/WfExerciseBookPageDto.java
  90. 123 0
      src/main/java/com/xjrsoft/module/textbook/entity/TextbookIssueRecord.java
  91. 113 0
      src/main/java/com/xjrsoft/module/textbook/entity/TextbookStudentClaim.java
  92. 8 8
      src/main/java/com/xjrsoft/module/textbook/entity/TextbookWarehouseRecord.java
  93. 115 0
      src/main/java/com/xjrsoft/module/textbook/entity/WfExerciseBook.java
  94. 108 0
      src/main/java/com/xjrsoft/module/textbook/entity/WfExerciseBookItem.java
  95. 20 0
      src/main/java/com/xjrsoft/module/textbook/mapper/TextbookIssueRecordMapper.java
  96. 10 3
      src/main/java/com/xjrsoft/module/textbook/mapper/TextbookMapper.java
  97. 34 0
      src/main/java/com/xjrsoft/module/textbook/mapper/TextbookStudentClaimMapper.java
  98. 19 0
      src/main/java/com/xjrsoft/module/textbook/mapper/TextbookWarehouseRecordMapper.java
  99. 4 4
      src/main/java/com/xjrsoft/module/textbook/mapper/WfExerciseBookItemMapper.java
  100. 17 0
      src/main/java/com/xjrsoft/module/textbook/mapper/WfExerciseBookMapper.java

+ 35 - 0
src/main/java/com/xjrsoft/common/enums/ClaimTypeEnum.java

@@ -0,0 +1,35 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @description: 申领类型claim_type
+ * @author: phoenix
+ * @create: 2023/12/21 11:27
+ * @Version 1.0
+ */
+public enum ClaimTypeEnum {
+    /**
+     * 学生领取
+     * */
+    ClaimStudent("claim_student", "学生领取"),
+
+    /**
+     * 教师领取
+     * */
+    ClaimTeacher("claim_teacher", "教师领取");
+
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    ClaimTypeEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 35 - 0
src/main/java/com/xjrsoft/common/enums/ExerciseBookeTypeEnum.java

@@ -0,0 +1,35 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @description: 作业本征订类型exercise_book_type
+ * @author: phoenix
+ * @create: 2023/12/21 11:27
+ * @Version 1.0
+ */
+public enum ExerciseBookeTypeEnum {
+    /**
+     * 笔记本
+     * */
+    ExerciseBook1("exercise_book1", "笔记本"),
+
+    /**
+     * 作业本
+     * */
+    ExerciseBook2("exercise_book2", "作业本");
+
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    ExerciseBookeTypeEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 40 - 0
src/main/java/com/xjrsoft/common/enums/IssueModeEnum.java

@@ -0,0 +1,40 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @description: 出库方式issue_mode
+ * @author: phoenix
+ * @create: 2023/12/21 11:27
+ * @Version 1.0
+ */
+public enum IssueModeEnum {
+    /**
+     * 学生
+     * */
+    Imtudent("im_student", "学生"),
+
+    /**
+     * 教师
+     * */
+    ImTeacher("im_teacher", "教师"),
+
+    /**
+     * 退还
+     * */
+    ImRecede("im_recede", "退还");
+
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    IssueModeEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 35 - 0
src/main/java/com/xjrsoft/common/enums/SubscriptionTypeEnum.java

@@ -0,0 +1,35 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @description: 教材征订类型subscription_type
+ * @author: phoenix
+ * @create: 2023/12/21 11:27
+ * @Version 1.0
+ */
+public enum SubscriptionTypeEnum {
+    /**
+     * 教材
+     * */
+    STextbook("s_textbook", "教材"),
+
+    /**
+     * 辅材
+     * */
+    SMaterials("s_materials", "辅材");
+
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    SubscriptionTypeEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 40 - 0
src/main/java/com/xjrsoft/common/enums/TextbookTypeEnum.java

@@ -0,0 +1,40 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @description: 教材类型textbook_type
+ * @author: phoenix
+ * @create: 2023/12/21 11:27
+ * @Version 1.0
+ */
+public enum TextbookTypeEnum {
+    /**
+     * 教材
+     * */
+    TTextbook("t_textbook", "教材"),
+
+    /**
+     * 辅材
+     * */
+    TMaterials("t_materials", "辅材"),
+
+    /**
+     * 作业本
+     * */
+    TExerciseBook("t_exercise_book", "作业本");
+
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    TextbookTypeEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 35 - 0
src/main/java/com/xjrsoft/common/enums/WarehouseModeEnum.java

@@ -0,0 +1,35 @@
+package com.xjrsoft.common.enums;
+
+/**
+ * @description: 入库方式warehouse_mode
+ * @author: phoenix
+ * @create: 2023/12/21 11:27
+ * @Version 1.0
+ */
+public enum WarehouseModeEnum {
+    /**
+     * 笔记本
+     * */
+    WmManual("wm_manual", "手动"),
+
+    /**
+     * 作业本
+     * */
+    WmRecede("wm_recede", "退书");
+
+    final String code;
+    final String value;
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getValue() {
+        return this.value;
+    }
+
+    WarehouseModeEnum(final String code, final String message) {
+        this.code = code;
+        this.value = message;
+    }
+}

+ 30 - 0
src/main/java/com/xjrsoft/module/liteflow/node/AddExerciseBookNode.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.liteflow.node;
+
+import cn.hutool.core.convert.Convert;
+import com.xjrsoft.module.textbook.service.ITextbookService;
+import com.yomahub.liteflow.core.NodeComponent;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 添加新出现的作业本数据到教材管理
+ */
+@Component("add_exercise_book_node")
+public class AddExerciseBookNode extends NodeComponent {
+    @Autowired
+    private ITextbookService textbookService;
+
+    @Override
+    public void process() throws Exception {
+        // 获取表单中数据编号
+        Map<String, Object> params = this.getFirstContextBean();
+        Object value = util.getFormDatKey(params,"id");
+        Long formId = Convert.toLong(value);
+        if (formId != null) {
+            // 数据处理
+            textbookService.dataHandleAddExerciseBookNode(formId);
+        }
+    }
+}

+ 1 - 1
src/main/java/com/xjrsoft/module/liteflow/node/AddTextbookNode.java

@@ -24,7 +24,7 @@ public class AddTextbookNode extends NodeComponent {
         Long formId = Convert.toLong(value);
         if (formId != null) {
             // 数据处理
-            textbookService.dataHandle(formId);
+            textbookService.dataHandleAddTextbookNode(formId);
         }
     }
 }

+ 0 - 2
src/main/java/com/xjrsoft/module/oa/dto/NewsPageDto.java

@@ -1,6 +1,5 @@
 package com.xjrsoft.module.oa.dto;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.xjrsoft.common.page.PageInput;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -50,7 +49,6 @@ public class NewsPageDto extends PageInput {
      * 当前用户id
      */
     @ApiModelProperty(value = "当前用户id", hidden = true)
-    @JsonIgnore
     private Long loginId;
 
 }

+ 38 - 0
src/main/java/com/xjrsoft/module/room/controller/DistributeRoomBedController.java

@@ -0,0 +1,38 @@
+package com.xjrsoft.module.room.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.module.room.dto.DistributeRoomBedDto;
+import com.xjrsoft.module.room.service.IRoomBedService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+* @title: 寝室床位
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/room" + "/distributeRoomBed")
+@Api(value = "/room"  + "/distributeRoomBed",tags = "分配床位")
+@AllArgsConstructor
+public class DistributeRoomBedController {
+
+
+    private final IRoomBedService roomBedService;
+
+    @PutMapping
+    @ApiOperation(value = "修改寝室床位")
+    @SaCheckPermission("roombed:edit")
+    public RT<Boolean> distributeRoomBed(@Valid @RequestBody DistributeRoomBedDto dto){
+        return RT.ok(roomBedService.distributeRoomBed(dto));
+    }
+}

+ 140 - 0
src/main/java/com/xjrsoft/module/room/controller/RoomBedController.java

@@ -0,0 +1,140 @@
+package com.xjrsoft.module.room.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
+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.AddRoomBedDto;
+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.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;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.http.ResponseEntity;
+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.PutMapping;
+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 org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+* @title: 寝室床位
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/room" + "/roomBed")
+@Api(value = "/room"  + "/roomBed",tags = "寝室床位代码")
+@AllArgsConstructor
+public class RoomBedController {
+
+
+    private final IRoomBedService roomBedService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="寝室床位列表(分页)")
+    @SaCheckPermission("roombed:detail")
+    public RT<PageOutput<RoomBedPageVo>> page(@Valid RoomBedPageDto dto){
+
+        Page<RoomBedPageVo> page = roomBedService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<RoomBedPageVo> pageOutput = ConventPage.getPageOutput(page, RoomBedPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/distribute-class-page")
+    @ApiOperation(value="分配床位班级列表(分页)")
+    @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")
+    public RT<RoomBedVo> info(@RequestParam Long id){
+        RoomBed roomBed = roomBedService.getById(id);
+        if (roomBed == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(roomBed, RoomBedVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增寝室床位")
+    @SaCheckPermission("roombed:add")
+    public RT<Boolean> add(@Valid @RequestBody AddRoomBedDto dto){
+        RoomBed roomBed = BeanUtil.toBean(dto, RoomBed.class);
+        boolean isSuccess = roomBedService.save(roomBed);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改寝室床位")
+    @SaCheckPermission("roombed:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateRoomBedDto dto){
+
+        RoomBed roomBed = BeanUtil.toBean(dto, RoomBed.class);
+        return RT.ok(roomBedService.updateById(roomBed));
+
+    }
+    @DeleteMapping
+    @ApiOperation(value = "删除寝室床位")
+    @SaCheckPermission("roombed:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(roomBedService.clearStudentInfo(ids));
+
+    }
+    @PostMapping("/import")
+    @ApiOperation(value = "导入")
+    public RT<Boolean> importData(@RequestParam MultipartFile file) throws IOException {
+        List<RoomBedPageVo> savedDataList = EasyExcel.read(file.getInputStream()).head(RoomBedPageVo.class).sheet().doReadSync();
+        Boolean result = roomBedService.saveBatch(BeanUtil.copyToList(savedDataList, RoomBed.class));
+        return RT.ok(result);
+    }
+
+    @GetMapping("/export")
+    @ApiOperation(value = "导出")
+    public ResponseEntity<byte[]> exportData(@Valid RoomBedPageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
+        List<RoomBedPageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<RoomBedPageVo>) page(dto).getData()).getList();
+        ByteArrayOutputStream bot = new ByteArrayOutputStream();
+        EasyExcel.write(bot, RoomBedPageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
+
+        return RT.fileStream(bot.toByteArray(), "RoomBed" + ExcelTypeEnum.XLSX.getValue());
+    }
+}

+ 117 - 0
src/main/java/com/xjrsoft/module/room/controller/RoomController.java

@@ -0,0 +1,117 @@
+package com.xjrsoft.module.room.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
+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.AddRoomDto;
+import com.xjrsoft.module.room.dto.RoomPageDto;
+import com.xjrsoft.module.room.dto.UpdateRoomDto;
+import com.xjrsoft.module.room.entity.Room;
+import com.xjrsoft.module.room.service.IRoomService;
+import com.xjrsoft.module.room.vo.RoomPageVo;
+import com.xjrsoft.module.room.vo.RoomVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.http.ResponseEntity;
+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.PutMapping;
+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 org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+* @title: 寝室
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/room" + "/room")
+@Api(value = "/room"  + "/room",tags = "寝室代码")
+@AllArgsConstructor
+public class RoomController {
+
+
+    private final IRoomService roomService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="寝室列表(分页)")
+    @SaCheckPermission("room:detail")
+    public RT<PageOutput<RoomPageVo>> page(@Valid RoomPageDto dto){
+
+        Page<RoomPageVo> page = roomService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<RoomPageVo> pageOutput = ConventPage.getPageOutput(page, RoomPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询寝室信息")
+    @SaCheckPermission("room:detail")
+    public RT<RoomVo> info(@RequestParam Long id){
+        Room room = roomService.getById(id);
+        if (room == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(room, RoomVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增寝室")
+    @SaCheckPermission("room:add")
+    public RT<Boolean> add(@Valid @RequestBody AddRoomDto dto){
+        boolean isSuccess = roomService.saveBatch(dto);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改寝室")
+    @SaCheckPermission("room:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateRoomDto dto){
+
+        Room room = BeanUtil.toBean(dto, Room.class);
+        return RT.ok(roomService.updateById(room));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除寝室")
+    @SaCheckPermission("room:delete")
+    public RT<Boolean> delete(@Valid @RequestBody Long id){
+        return RT.ok(roomService.deleteReachBed(id));
+
+    }
+    @PostMapping("/import")
+    @ApiOperation(value = "导入")
+    public RT<Boolean> importData(@RequestParam MultipartFile file) throws IOException {
+        List<RoomPageVo> savedDataList = EasyExcel.read(file.getInputStream()).head(RoomPageVo.class).sheet().doReadSync();
+        Boolean result = roomService.saveBatch(BeanUtil.copyToList(savedDataList, Room.class));
+        return RT.ok(result);
+    }
+
+    @GetMapping("/export")
+    @ApiOperation(value = "导出")
+    public ResponseEntity<byte[]> exportData(@Valid RoomPageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
+        List<RoomPageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<RoomPageVo>) page(dto).getData()).getList();
+        ByteArrayOutputStream bot = new ByteArrayOutputStream();
+        EasyExcel.write(bot, RoomPageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
+
+        return RT.fileStream(bot.toByteArray(), "Room" + ExcelTypeEnum.XLSX.getValue());
+    }
+}

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

@@ -0,0 +1,94 @@
+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.dto.UpdateRoomTeacherAppointDto;
+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.PutMapping;
+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){
+        RoomTeacherAppoint roomTeacherAppoint = BeanUtil.toBean(dto, RoomTeacherAppoint.class);
+        boolean isSuccess = roomTeacherAppointService.save(roomTeacherAppoint);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改宿管任命")
+    @SaCheckPermission("roomteacherappoint:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateRoomTeacherAppointDto dto){
+
+        RoomTeacherAppoint roomTeacherAppoint = BeanUtil.toBean(dto, RoomTeacherAppoint.class);
+        return RT.ok(roomTeacherAppointService.updateById(roomTeacherAppoint));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除宿管任命")
+    @SaCheckPermission("roomteacherappoint:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(roomTeacherAppointService.removeBatchByIds(ids));
+
+    }
+}

+ 58 - 0
src/main/java/com/xjrsoft/module/room/dto/AddRoomBedDto.java

@@ -0,0 +1,58 @@
+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;
+
+
+
+/**
+* @title: 寝室床位
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class AddRoomBedDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 寝室编号(room)
+    */
+    @ApiModelProperty("寝室编号(room)")
+    private Long roomId;
+    /**
+    * 床位号
+    */
+    @ApiModelProperty("床位号")
+    private Integer bedNumber;
+    /**
+    * 学生用户编号
+    */
+    @ApiModelProperty("学生用户编号")
+    private Long studentUserId;
+    /**
+    * 是否入住(1:是 0:否)
+    */
+    @ApiModelProperty("是否入住(1:是 0:否)")
+    private Integer isCheckIn;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

+ 58 - 0
src/main/java/com/xjrsoft/module/room/dto/AddRoomDto.java

@@ -0,0 +1,58 @@
+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;
+
+
+
+/**
+* @title: 寝室
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class AddRoomDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 楼栋(base_office_build)
+    */
+    @ApiModelProperty("楼栋(base_office_build)")
+    private Long officeBuildId;
+    /**
+    * 楼层
+    */
+    @ApiModelProperty("楼层")
+    private String floorNumber;
+    /**
+    * 入住身份(xjr_dictionary_item[check_in_status])
+    */
+    @ApiModelProperty("入住身份(xjr_dictionary_item[check_in_status])")
+    private String checkInStatus;
+    /**
+    * 入住性别(xjr_dictionary_item[gender])
+    */
+    @ApiModelProperty("入住性别(xjr_dictionary_item[gender])")
+    private String gender;
+    /**
+    * 床位数
+    */
+    @ApiModelProperty("床位数")
+    private Integer bedCount;
+    /**
+    * 是否是混合寝室【一个寝室有多个班级的学生】(1:是 0:否)
+    */
+    @ApiModelProperty("每层房间数")
+    private Integer floorRoomsCount;
+
+}

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

@@ -0,0 +1,48 @@
+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;
+
+
+
+/**
+* @title: 宿管任命
+* @Author dzx
+* @Date: 2023-12-29
+* @Version 1.0
+*/
+@Data
+public class AddRoomTeacherAppointDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 寝室编号(room)
+    */
+    @ApiModelProperty("寝室编号(room)")
+    private Long roomId;
+    /**
+    * 用户编号
+    */
+    @ApiModelProperty("用户编号")
+    private Long userId;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

+ 43 - 0
src/main/java/com/xjrsoft/module/room/dto/DistributeClassPageDto.java

@@ -0,0 +1,43 @@
+package com.xjrsoft.module.room.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 寝室床位分页查询入参
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DistributeClassPageDto extends PageInput {
+
+    @ApiModelProperty("楼栋id")
+    public Long officeBuildId;
+
+    @ApiModelProperty("楼层")
+    public Integer floorNumber;
+
+
+    @ApiModelProperty("寝室id")
+    public Long roomId;
+
+    @ApiModelProperty("入住性别")
+    public String gender;
+
+    @ApiModelProperty("寝室id")
+    public Long gradeId;
+
+    @ApiModelProperty("年级id")
+    public Long classId;
+
+    @ApiModelProperty("寝室id")
+    public String studentName;
+
+    @ApiModelProperty("学号")
+    public String studentId;
+}

+ 27 - 0
src/main/java/com/xjrsoft/module/room/dto/DistributeRoomBedDto.java

@@ -0,0 +1,27 @@
+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-27
+* @Version 1.0
+*/
+@Data
+public class DistributeRoomBedDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("班级ids")
+    private List<Long> classIds;
+
+    @ApiModelProperty("寝室ids")
+    private List<Long> roomIds;
+
+}

+ 43 - 0
src/main/java/com/xjrsoft/module/room/dto/DistributeRoomBedPageDto.java

@@ -0,0 +1,43 @@
+package com.xjrsoft.module.room.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 寝室床位分页查询入参
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DistributeRoomBedPageDto extends PageInput {
+
+    @ApiModelProperty("楼栋id")
+    public Long officeBuildId;
+
+    @ApiModelProperty("楼层")
+    public Integer floorNumber;
+
+
+    @ApiModelProperty("寝室id")
+    public Long roomId;
+
+    @ApiModelProperty("入住性别")
+    public String gender;
+
+    @ApiModelProperty("寝室id")
+    public Long gradeId;
+
+    @ApiModelProperty("年级id")
+    public Long classId;
+
+    @ApiModelProperty("寝室id")
+    public String studentName;
+
+    @ApiModelProperty("学号")
+    public String studentId;
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/room/dto/RoomBedPageDto.java

@@ -0,0 +1,49 @@
+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-27
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RoomBedPageDto extends PageInput {
+
+    @ApiModelProperty("楼栋id")
+    public Long officeBuildId;
+
+    @ApiModelProperty("楼层")
+    public Integer floorNumber;
+
+
+    @ApiModelProperty("寝室id")
+    public Long roomId;
+
+    @ApiModelProperty("入住性别")
+    public String gender;
+
+    @ApiModelProperty("寝室id")
+    public Long gradeId;
+
+    @ApiModelProperty("年级id")
+    public Long classId;
+
+    @ApiModelProperty("寝室id")
+    public String studentName;
+
+    @ApiModelProperty("学号")
+    public String studentId;
+}

+ 36 - 0
src/main/java/com/xjrsoft/module/room/dto/RoomPageDto.java

@@ -0,0 +1,36 @@
+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-27
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RoomPageDto extends PageInput {
+
+    @ApiModelProperty("楼栋id")
+    public Long officeBuildId;
+
+    @ApiModelProperty("楼层")
+    public Integer floorNumber;
+
+    @ApiModelProperty("入住身份")
+    public String checkInStatus;
+
+    @ApiModelProperty("入住性别")
+    public String gender;
+}

+ 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/UpdateRoomBedDto.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-27
+* @Version 1.0
+*/
+@Data
+public class UpdateRoomBedDto extends AddRoomBedDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/room/dto/UpdateRoomDto.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-27
+* @Version 1.0
+*/
+@Data
+public class UpdateRoomDto extends AddRoomDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

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

+ 123 - 0
src/main/java/com/xjrsoft/module/room/entity/Room.java

@@ -0,0 +1,123 @@
+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-27
+* @Version 1.0
+*/
+@Data
+@TableName("room")
+@ApiModel(value = "room", description = "寝室")
+public class Room 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_office_build)
+    */
+    @ApiModelProperty("楼栋(base_office_build)")
+    private Long officeBuildId;
+    /**
+    * 楼层
+    */
+    @ApiModelProperty("楼层")
+    private Integer floorNumber;
+    /**
+    * 寝室名称
+    */
+    @ApiModelProperty("寝室名称")
+    private String roomName;
+    /**
+    * 入住身份(xjr_dictionary_item[check_in_status])
+    */
+    @ApiModelProperty("入住身份(xjr_dictionary_item[check_in_status])")
+    private String checkInStatus;
+    /**
+    * 入住性别(xjr_dictionary_item[gender])
+    */
+    @ApiModelProperty("入住性别(xjr_dictionary_item[gender])")
+    private String gender;
+    /**
+    * 床位数
+    */
+    @ApiModelProperty("床位数")
+    private Integer bedCount;
+    /**
+    * 是否是混合寝室【一个寝室有多个班级的学生】(1:是 0:否)
+    */
+    @ApiModelProperty("是否是混合寝室【一个寝室有多个班级的学生】(1:是 0:否)")
+    private Integer isMax;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+}

+ 108 - 0
src/main/java/com/xjrsoft/module/room/entity/RoomBed.java

@@ -0,0 +1,108 @@
+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-27
+* @Version 1.0
+*/
+@Data
+@TableName("room_bed")
+@ApiModel(value = "room_bed", description = "寝室床位")
+public class RoomBed 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 Integer bedNumber;
+    /**
+    * 学生用户编号
+    */
+    @ApiModelProperty("学生用户编号")
+    private Long studentUserId;
+    /**
+    * 是否入住(1:是 0:否)
+    */
+    @ApiModelProperty("是否入住(1:是 0:否)")
+    private Integer isCheckIn;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+}

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

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

@@ -0,0 +1,44 @@
+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 com.xjrsoft.module.room.vo.RoomBedVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+* @title: 寝室床位
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Mapper
+public interface RoomBedMapper extends MPJBaseMapper<RoomBed> {
+    /**
+     * 返回最大的序号
+     * @return
+     */
+    Integer getMaxSortCode();
+
+    /**
+     * 分页查询
+     * @param page
+     * @param dto
+     * @return
+     */
+    Page<RoomBedPageVo> getPage(Page<RoomBedPageVo> page, RoomBedPageDto dto);
+
+    Page<DistributeClassPageVo> getDistributeClassInfo(Page<DistributeClassPageVo> page, DistributeClassPageDto dto);
+
+    Page<DistributeRoomBedPageVo> getDistributeRoomBedInfo(Page<DistributeRoomBedPageVo> page, DistributeRoomBedPageDto dto);
+
+    List<RoomBedVo> getBedInfo(List<Long> ids);
+}

+ 43 - 0
src/main/java/com/xjrsoft/module/room/mapper/RoomMapper.java

@@ -0,0 +1,43 @@
+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.AddRoomDto;
+import com.xjrsoft.module.room.dto.RoomPageDto;
+import com.xjrsoft.module.room.entity.Room;
+import com.xjrsoft.module.room.vo.RoomClassCountVo;
+import com.xjrsoft.module.room.vo.RoomPageVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+* @title: 寝室
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Mapper
+public interface RoomMapper extends MPJBaseMapper<Room> {
+    /**
+     * 分页查询
+     * @param page
+     * @param dto
+     * @return
+     */
+    Page<RoomPageVo> getPage(Page<RoomPageDto> page, RoomPageDto dto);
+
+
+    /**
+     * 批量添加
+     */
+    Boolean saveBatch(AddRoomDto dto);
+
+    /**
+     * 返回最大的序号
+     * @return
+     */
+    Integer getMaxSortCode();
+
+    List<RoomClassCountVo> getRoomClassCount(List<Long> ids);
+}

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

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

@@ -0,0 +1,54 @@
+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.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.DistributeRoomBedPageVo;
+import com.xjrsoft.module.room.vo.RoomBedPageVo;
+
+import java.util.List;
+
+/**
+* @title: 寝室床位
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+
+public interface IRoomBedService extends MPJBaseService<RoomBed> {
+
+    /**
+     * 分页查询
+     * @param page
+     * @param dto
+     * @return
+     */
+    Page<RoomBedPageVo> getPage(Page<RoomBedPageVo> page, RoomBedPageDto dto);
+
+
+    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);
+
+    Boolean distributeRoomBed(DistributeRoomBedDto dto);
+
+}

+ 39 - 0
src/main/java/com/xjrsoft/module/room/service/IRoomService.java

@@ -0,0 +1,39 @@
+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.AddRoomDto;
+import com.xjrsoft.module.room.dto.RoomPageDto;
+import com.xjrsoft.module.room.entity.Room;
+import com.xjrsoft.module.room.vo.RoomPageVo;
+
+import java.util.List;
+
+/**
+* @title: 寝室
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+
+public interface IRoomService extends MPJBaseService<Room> {
+
+    /**
+     * 分页查询
+     * @param page
+     * @param dto
+     * @return
+     */
+    Page<RoomPageVo> getPage(Page<RoomPageDto> page, RoomPageDto dto);
+
+    /**
+     * 批量添加
+     */
+    Boolean saveBatch(AddRoomDto dto);
+
+
+    /**
+     * 批量添加
+     */
+    Boolean deleteReachBed(Long id);
+}

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

@@ -0,0 +1,29 @@
+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.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);
+}

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

@@ -0,0 +1,117 @@
+package com.xjrsoft.module.room.service.impl;
+
+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.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.mapper.RoomBedMapper;
+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.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.mapper.BaseStudentMapper;
+import com.xjrsoft.module.student.vo.StudentInfoVo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+* @title: 寝室床位
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBed> implements IRoomBedService {
+    private final RoomMapper roomMapper;
+    private final RoomBedMapper roomBedMapper;
+    private final BaseStudentMapper baseStudentMapper;
+    @Override
+    public Page<RoomBedPageVo> getPage(Page<RoomBedPageVo> page, RoomBedPageDto dto) {
+        Page<RoomBedPageVo> result = roomBedMapper.getPage(page, dto);
+        return result;
+    }
+
+    @Override
+    public Boolean clearStudentInfo(List<Long> ids) {
+        for (Long id : ids) {
+            RoomBed roomBed = roomBedMapper.selectById(id);
+            roomBed.setStudentUserId(null);
+            roomBedMapper.updateById(roomBed);
+        }
+        return true;
+    }
+
+    @Override
+    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);
+    }
+
+    @Override
+    public Boolean distributeRoomBed(DistributeRoomBedDto dto) {
+        //查询出所有床位信息
+        List<RoomBedVo> bedInfoList = roomBedMapper.getBedInfo(dto.getRoomIds());
+
+        Room room = roomMapper.selectById(dto.getRoomIds().get(0));
+        String gender = room.getGender();
+        Integer genderNumber = null;
+        if("SB10001".equals(gender)){
+            genderNumber = 1;
+        }else if("SB10002".equals(gender)){
+            genderNumber = 2;
+        }
+
+        Date modifyDate = new Date();
+        Long modifyUserId = StpUtil.getLoginIdAsLong();
+
+        //查询每个班的学生,修改床位信息
+        int i = 0;
+        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) {
+                if(i > bedInfoList.size()){
+                    continue;
+                }
+                RoomBedVo roomBedVo = bedInfoList.get(i);
+                RoomBed roomBed = BeanUtil.toBean(roomBedVo, RoomBed.class);
+                roomBed.setStudentUserId(studentInfoVo.getUserId());
+                roomBed.setModifyDate(modifyDate);
+                roomBed.setModifyUserId(modifyUserId);
+                roomBedMapper.updateById(roomBed);
+                i ++;
+            }
+        }
+
+        //查询每个寝室住入的班级数量,大于2的设置为混合寝室
+        List<RoomClassCountVo> classCountVoList = roomMapper.getRoomClassCount(dto.getRoomIds());
+        for (RoomClassCountVo roomClassCountVo : classCountVoList) {
+            if(roomClassCountVo.getClassCount() > 1){
+                Room updRoom = roomMapper.selectById(roomClassCountVo.getId());
+                updRoom.setIsMax(1);
+                roomMapper.updateById(updRoom);
+            }
+        }
+        return true;
+    }
+}

+ 95 - 0
src/main/java/com/xjrsoft/module/room/service/impl/RoomServiceImpl.java

@@ -0,0 +1,95 @@
+package com.xjrsoft.module.room.service.impl;
+
+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.xjrsoft.module.room.dto.AddRoomDto;
+import com.xjrsoft.module.room.dto.RoomPageDto;
+import com.xjrsoft.module.room.entity.Room;
+import com.xjrsoft.module.room.entity.RoomBed;
+import com.xjrsoft.module.room.mapper.RoomBedMapper;
+import com.xjrsoft.module.room.mapper.RoomMapper;
+import com.xjrsoft.module.room.service.IRoomService;
+import com.xjrsoft.module.room.vo.RoomPageVo;
+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: 寝室
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class RoomServiceImpl extends MPJBaseServiceImpl<RoomMapper, Room> implements IRoomService {
+    private final RoomMapper roomMapper;
+    private final RoomBedMapper roomBedMapper;
+
+    @Override
+    public Page<RoomPageVo> getPage(Page<RoomPageDto> page, RoomPageDto dto) {
+        Page<RoomPageVo> result = roomMapper.getPage(page, dto);
+        return result;
+    }
+
+    @Override
+    public Boolean saveBatch(AddRoomDto dto) {
+        Integer maxSortCode = roomMapper.getMaxSortCode();
+        Date createDate = new Date();
+        long createUserId = StpUtil.getLoginIdAsLong();
+        for (int i = 0; i < dto.getFloorRoomsCount(); i ++){
+            for (String floorNumber : dto.getFloorNumber().split(",")) {
+                String roomName = floorNumber + String.format("%02d", (i + 1));
+                Map<String, Object> param = new HashMap<>();
+                param.put("room_name", roomName);
+                param.put("floor_number", Integer.parseInt(floorNumber));
+                param.put("office_build_id", dto.getOfficeBuildId());
+                List<Room> rooms = roomMapper.selectByMap(param);
+                if(rooms != null && !rooms.isEmpty()){
+                    continue;
+                }
+                //先添加寝室
+                Room room = BeanUtil.toBean(dto, Room.class);
+                room.setSortCode(maxSortCode + i);
+                room.setFloorNumber(Integer.parseInt(floorNumber));
+                room.setCreateDate(createDate);
+                room.setCreateUserId(createUserId);
+                room.setDeleteMark(0);
+                room.setEnabledMark(1);
+                room.setRoomName(roomName);
+                roomMapper.insert(room);
+
+                Long roomId = room.getId();
+                Integer bedMaxSortCode = roomBedMapper.getMaxSortCode() + 1;
+                //生成床位数据
+                for (int j = 1; j <= dto.getBedCount(); j ++){
+                    RoomBed bed = new RoomBed();
+                    bed.setRoomId(roomId);
+                    bed.setSortCode(bedMaxSortCode + j - 1);
+                    bed.setCreateDate(createDate);
+                    bed.setCreateUserId(createUserId);
+                    bed.setDeleteMark(0);
+                    bed.setEnabledMark(1);
+                    bed.setBedNumber(j);
+                    roomBedMapper.insert(bed);
+                }
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public Boolean deleteReachBed(Long id) {
+        roomMapper.deleteById(id);
+        Map<String, Object> param = new HashMap<>();
+        param.put("room_id", id);
+        roomBedMapper.deleteByMap(param);
+        return true;
+    }
+}

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

@@ -0,0 +1,41 @@
+package com.xjrsoft.module.room.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.courseTable.entity.CourseTable;
+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.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<CourseTable> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(CourseTable::getClassId, dto.getClassId())
+//                .eq(ObjectUtil.isNotEmpty(dto.getWeeks()), CourseTable::getWeeks,dto.getWeeks());
+//        roomTeacherAppointMapper.selectList()
+        return null;
+    }
+}

+ 55 - 0
src/main/java/com/xjrsoft/module/room/vo/DistributeClassPageVo.java

@@ -0,0 +1,55 @@
+package com.xjrsoft.module.room.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+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 DistributeClassPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("主键编号")
+    @ApiModelProperty("主键编号")
+    private String id;
+
+    /**
+     * 楼栋名称
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("年级")
+    @ApiModelProperty("年级")
+    private String gradeName;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("专业部")
+    @ApiModelProperty("专业部")
+    private String orgName;
+
+    /**
+     * 班级名称
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("班级名称")
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("需要住宿人数")
+    @ApiModelProperty("需要住宿人数")
+    private Integer needCount;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("已分配床位数")
+    @ApiModelProperty("已分配床位数")
+    private Integer distributeCount;
+}

+ 73 - 0
src/main/java/com/xjrsoft/module/room/vo/DistributeRoomBedPageVo.java

@@ -0,0 +1,73 @@
+package com.xjrsoft.module.room.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+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 DistributeRoomBedPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("主键编号")
+    @ApiModelProperty("主键编号")
+    private String id;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("序号")
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+
+    /**
+     * 楼栋名称
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("楼栋")
+    @ApiModelProperty("楼栋")
+    private String buildName;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("楼层")
+    @ApiModelProperty("楼层")
+    private Integer floorNumber;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("寝室号")
+    @ApiModelProperty("寝室号")
+    private String roomName;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("入住性别")
+    @ApiModelProperty("入住性别")
+    private String genderCn;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("入住身份")
+    @ApiModelProperty("入住身份")
+    private String checkInStatusCn;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("入住班级")
+    @ApiModelProperty("入住班级")
+    private String intoClass;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("床位数")
+    @ApiModelProperty("床位数")
+    private Integer bedCount;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("已入住人数")
+    @ApiModelProperty("已入住人数")
+    private Integer intoCount;
+
+}

+ 110 - 0
src/main/java/com/xjrsoft/module/room/vo/RoomBedPageVo.java

@@ -0,0 +1,110 @@
+package com.xjrsoft.module.room.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+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 RoomBedPageVo {
+
+    /**
+    * 主键编号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("主键编号")
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+     * 序号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("序号")
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+
+    /**
+     * 楼栋名称
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("楼栋名称")
+    @ApiModelProperty("楼栋名称")
+    private String buildName;
+
+    /**
+     * 楼层
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("楼层")
+    @ApiModelProperty("楼层")
+    private Integer floorNumber;
+    /**
+     * 寝室名称
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("寝室名称")
+    @ApiModelProperty("寝室名称")
+    private String roomName;
+
+    /**
+     * 床位号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("床位号")
+    @ApiModelProperty("床位号")
+    private Integer bedNumber;
+
+    /**
+     * 学生姓名
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("学生姓名")
+    @ApiModelProperty("学生姓名")
+    private String studentName;
+
+    /**
+     * 学生学号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("学生学号")
+    @ApiModelProperty("学生学号")
+    private String studentId;
+
+    /**
+     * 手机号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("手机号")
+    @ApiModelProperty("手机号")
+    private String mobile;
+
+    /**
+     * 入住性别(xjr_dictionary_item[gender])
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("入住性别")
+    @ApiModelProperty("入住性别")
+    private String genderCn;
+
+    /**
+     * 年级名称
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("年级名称")
+    @ApiModelProperty("年级名称")
+    private String gradeName;
+
+    /**
+     * 班级名称
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("班级名称")
+    @ApiModelProperty("班级名称")
+    private String className;
+}

+ 59 - 0
src/main/java/com/xjrsoft/module/room/vo/RoomBedVo.java

@@ -0,0 +1,59 @@
+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-27
+* @Version 1.0
+*/
+@Data
+public class RoomBedVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 寝室编号(room)
+    */
+    @ApiModelProperty("寝室编号(room)")
+    private Long roomId;
+    /**
+    * 床位号
+    */
+    @ApiModelProperty("床位号")
+    private Integer bedNumber;
+    /**
+    * 学生用户编号
+    */
+    @ApiModelProperty("学生用户编号")
+    private Long studentUserId;
+    /**
+    * 是否入住(1:是 0:否)
+    */
+    @ApiModelProperty("是否入住(1:是 0:否)")
+    private Integer isCheckIn;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+
+}

+ 27 - 0
src/main/java/com/xjrsoft/module/room/vo/RoomClassCountVo.java

@@ -0,0 +1,27 @@
+package com.xjrsoft.module.room.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 寝室表单出参
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class RoomClassCountVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("班级数量")
+    private Integer classCount;
+
+
+}

+ 106 - 0
src/main/java/com/xjrsoft/module/room/vo/RoomPageVo.java

@@ -0,0 +1,106 @@
+package com.xjrsoft.module.room.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+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 RoomPageVo {
+
+    /**
+     * 序号
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("id")
+    @ApiModelProperty("id")
+    private Long id;
+
+    /**
+    * 序号
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("序号")
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 楼栋(base_office_build)
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("楼栋名称")
+    @ApiModelProperty("楼栋名称")
+    private String bulidName;
+    /**
+    * 楼层
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("楼层")
+    @ApiModelProperty("楼层")
+    private Integer floorNumber;
+    /**
+    * 寝室名称
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("寝室名称")
+    @ApiModelProperty("寝室名称")
+    private String roomName;
+    /**
+    * 入住身份
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("入住身份")
+    @ApiModelProperty("入住身份")
+    private String checkInStatusCn;
+    /**
+    * 入住性别(xjr_dictionary_item[gender])
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("入住性别")
+    @ApiModelProperty("入住性别")
+    private String genderCn;
+    /**
+    * 床位数
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("床位数")
+    @ApiModelProperty("床位数")
+    private Integer bedCount;
+
+    /**
+     * 寝室长
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("寝室长")
+    @ApiModelProperty("寝室长")
+    private String studentAppointNames;
+
+    /**
+     * 寝室长
+     */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("宿管")
+    @ApiModelProperty("宿管")
+    private String teacherAppointNames;
+
+    /**
+    * 是否是混合寝室【一个寝室有多个班级的学生】(1:是 0:否)
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("是否是混合寝室【一个寝室有多个班级的学生】(1:是 0:否)")
+    @ApiModelProperty("是否是混合寝室【一个寝室有多个班级的学生】(1:是 0:否)")
+    private Integer isMax;
+    /**
+    * 备注
+    */
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("备注")
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

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

+ 74 - 0
src/main/java/com/xjrsoft/module/room/vo/RoomVo.java

@@ -0,0 +1,74 @@
+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-27
+* @Version 1.0
+*/
+@Data
+public class RoomVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 楼栋(base_office_build)
+    */
+    @ApiModelProperty("楼栋(base_office_build)")
+    private Long officeBuildId;
+    /**
+    * 楼层
+    */
+    @ApiModelProperty("楼层")
+    private Integer floorNumber;
+    /**
+    * 寝室名称
+    */
+    @ApiModelProperty("寝室名称")
+    private String roomName;
+    /**
+    * 入住身份(xjr_dictionary_item[check_in_status])
+    */
+    @ApiModelProperty("入住身份(xjr_dictionary_item[check_in_status])")
+    private String checkInStatus;
+    /**
+    * 入住性别(xjr_dictionary_item[gender])
+    */
+    @ApiModelProperty("入住性别(xjr_dictionary_item[gender])")
+    private String gender;
+    /**
+    * 床位数
+    */
+    @ApiModelProperty("床位数")
+    private Integer bedCount;
+    /**
+    * 是否是混合寝室【一个寝室有多个班级的学生】(1:是 0:否)
+    */
+    @ApiModelProperty("是否是混合寝室【一个寝室有多个班级的学生】(1:是 0:否)")
+    private Integer isMax;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+
+}

+ 102 - 0
src/main/java/com/xjrsoft/module/student/controller/BaseClassMajorSetController.java

@@ -0,0 +1,102 @@
+package com.xjrsoft.module.student.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.student.dto.AddBaseClassMajorSetDto;
+import com.xjrsoft.module.student.dto.UpdateBaseClassMajorSetDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.student.dto.BaseClassMajorSetPageDto;
+import com.xjrsoft.module.student.entity.BaseClassMajorSet;
+import com.xjrsoft.module.student.service.IBaseClassMajorSetService;
+import com.xjrsoft.module.student.vo.BaseClassMajorSetPageVo;
+
+import com.xjrsoft.module.student.vo.BaseClassMajorSetVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+* @title: 班级专业方向表
+* @Author szs
+* @Date: 2023-12-28
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/student" + "/baseClassMajorSet")
+@Api(value = "/student"  + "/baseClassMajorSet",tags = "班级专业方向表代码")
+@AllArgsConstructor
+public class BaseClassMajorSetController {
+
+
+    private final IBaseClassMajorSetService baseClassMajorSetService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="班级专业方向表列表(分页)")
+    @SaCheckPermission("baseclassmajorset:detail")
+    public RT<PageOutput<BaseClassMajorSetPageVo>> page(@Valid BaseClassMajorSetPageDto dto){
+
+        LambdaQueryWrapper<BaseClassMajorSet> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(BaseClassMajorSet::getId)
+                .select(BaseClassMajorSet.class,x -> VoToColumnUtil.fieldsToColumns(BaseClassMajorSetPageVo.class).contains(x.getProperty()));
+        IPage<BaseClassMajorSet> page = baseClassMajorSetService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<BaseClassMajorSetPageVo> pageOutput = ConventPage.getPageOutput(page, BaseClassMajorSetPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询班级专业方向表信息")
+    @SaCheckPermission("baseclassmajorset:detail")
+    public RT<BaseClassMajorSetVo> info(@RequestParam Long id){
+        BaseClassMajorSet baseClassMajorSet = baseClassMajorSetService.getById(id);
+        if (baseClassMajorSet == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(baseClassMajorSet, BaseClassMajorSetVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增班级专业方向表")
+    @SaCheckPermission("baseclassmajorset:add")
+    public RT<Boolean> add(@Valid @RequestBody AddBaseClassMajorSetDto dto){
+        BaseClassMajorSet baseClassMajorSet = BeanUtil.toBean(dto, BaseClassMajorSet.class);
+        boolean isSuccess = baseClassMajorSetService.save(baseClassMajorSet);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改班级专业方向表")
+    @SaCheckPermission("baseclassmajorset:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateBaseClassMajorSetDto dto){
+
+        BaseClassMajorSet baseClassMajorSet = BeanUtil.toBean(dto, BaseClassMajorSet.class);
+        return RT.ok(baseClassMajorSetService.updateById(baseClassMajorSet));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除班级专业方向表")
+    @SaCheckPermission("baseclassmajorset:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(baseClassMajorSetService.removeBatchByIds(ids));
+
+    }
+
+}

+ 58 - 0
src/main/java/com/xjrsoft/module/student/dto/AddBaseClassMajorSetDto.java

@@ -0,0 +1,58 @@
+package com.xjrsoft.module.student.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;
+
+
+
+/**
+* @title: 班级专业方向表
+* @Author szs
+* @Date: 2023-12-28
+* @Version 1.0
+*/
+@Data
+public class AddBaseClassMajorSetDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 班级(base_class_major_set)
+    */
+    @ApiModelProperty("班级(base_class_major_set)")
+    private Long classId;
+    /**
+    * 专业方向(base_major_set)
+    */
+    @ApiModelProperty("专业方向(base_major_set)")
+    private Long majorSetId;
+    /**
+    * 计划人数
+    */
+    @ApiModelProperty("计划人数")
+    private Integer planTotalStudent;
+    /**
+    * 班级人数
+    */
+    @ApiModelProperty("班级人数")
+    private Integer totalStudent;
+    /**
+    * 男生人数
+    */
+    @ApiModelProperty("男生人数")
+    private Integer boyNum;
+    /**
+    * 女生人数
+    */
+    @ApiModelProperty("女生人数")
+    private Integer girlNum;
+
+}

+ 26 - 0
src/main/java/com/xjrsoft/module/student/dto/BaseClassMajorSetPageDto.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.student.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 szs
+* @Date: 2023-12-28
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class BaseClassMajorSetPageDto extends PageInput {
+
+
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/student/dto/DistributeStudentDto.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.student.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DistributeStudentDto {
+    /**
+     * 用户ID(xjr_user)
+     */
+    @ApiModelProperty("班级id")
+    private Long classId;
+    /**
+     * 学号
+     */
+    @ApiModelProperty("性别")
+    private Integer gender;
+
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/student/dto/UpdateBaseClassMajorSetDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.student.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 szs
+* @Date: 2023-12-28
+* @Version 1.0
+*/
+@Data
+public class UpdateBaseClassMajorSetDto extends AddBaseClassMajorSetDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long id;
+}

+ 108 - 0
src/main/java/com/xjrsoft/module/student/entity/BaseClassMajorSet.java

@@ -0,0 +1,108 @@
+package com.xjrsoft.module.student.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 szs
+* @Date: 2023-12-28
+* @Version 1.0
+*/
+@Data
+@TableName("base_class_major_set")
+@ApiModel(value = "base_class_major_set", description = "班级专业方向表")
+public class BaseClassMajorSet 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;
+    /**
+    * 班级(base_class_major_set)
+    */
+    @ApiModelProperty("班级(base_class_major_set)")
+    private Long classId;
+    /**
+    * 专业方向(base_major_set)
+    */
+    @ApiModelProperty("专业方向(base_major_set)")
+    private Long majorSetId;
+    /**
+    * 计划人数
+    */
+    @ApiModelProperty("计划人数")
+    private Integer planTotalStudent;
+    /**
+    * 班级人数
+    */
+    @ApiModelProperty("班级人数")
+    private Integer totalStudent;
+    /**
+    * 男生人数
+    */
+    @ApiModelProperty("男生人数")
+    private Integer boyNum;
+    /**
+    * 女生人数
+    */
+    @ApiModelProperty("女生人数")
+    private Integer girlNum;
+
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/student/mapper/BaseClassMajorSetMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.student.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.student.entity.BaseClassMajorSet;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 班级专业方向表
+* @Author szs
+* @Date: 2023-12-28
+* @Version 1.0
+*/
+@Mapper
+public interface BaseClassMajorSetMapper extends MPJBaseMapper<BaseClassMajorSet> {
+
+}

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

@@ -1,10 +1,13 @@
 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 管理员
@@ -18,4 +21,5 @@ public interface BaseStudentMapper extends MPJBaseMapper<BaseStudent> {
      * @return
      */
     StudentInfoVo getStudentInfo(Long userId);
+    List<StudentInfoVo> getClassStudent(DistributeStudentDto dto);
 }

+ 17 - 0
src/main/java/com/xjrsoft/module/student/service/IBaseClassMajorSetService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.student.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.student.entity.BaseClassMajorSet;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 班级专业方向表
+* @Author szs
+* @Date: 2023-12-28
+* @Version 1.0
+*/
+
+public interface IBaseClassMajorSetService extends MPJBaseService<BaseClassMajorSet> {
+}

+ 7 - 7
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookClassWarehouseServiceImpl.java → src/main/java/com/xjrsoft/module/student/service/impl/BaseClassMajorSetServiceImpl.java

@@ -1,10 +1,10 @@
-package com.xjrsoft.module.textbook.service.impl;
+package com.xjrsoft.module.student.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.base.MPJBaseServiceImpl;
-import com.xjrsoft.module.textbook.entity.TextbookClassWarehouse;
-import com.xjrsoft.module.textbook.mapper.TextbookClassWarehouseMapper;
-import com.xjrsoft.module.textbook.service.ITextbookClassWarehouseService;
+import com.xjrsoft.module.student.entity.BaseClassMajorSet;
+import com.xjrsoft.module.student.mapper.BaseClassMajorSetMapper;
+import com.xjrsoft.module.student.service.IBaseClassMajorSetService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -14,12 +14,12 @@ import java.util.stream.Collectors;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 
 /**
-* @title: 教材入库
+* @title: 班级专业方向表
 * @Author szs
-* @Date: 2023-12-26
+* @Date: 2023-12-28
 * @Version 1.0
 */
 @Service
 @AllArgsConstructor
-public class TextbookClassWarehouseServiceImpl extends MPJBaseServiceImpl<TextbookClassWarehouseMapper, TextbookClassWarehouse> implements ITextbookClassWarehouseService {
+public class BaseClassMajorSetServiceImpl extends MPJBaseServiceImpl<BaseClassMajorSetMapper, BaseClassMajorSet> implements IBaseClassMajorSetService {
 }

+ 89 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseClassMajorSetPageVo.java

@@ -0,0 +1,89 @@
+package com.xjrsoft.module.student.vo;
+
+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 szs
+* @Date: 2023-12-28
+* @Version 1.0
+*/
+@Data
+public class BaseClassMajorSetPageVo {
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private String 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;
+    /**
+    * 班级(base_class_major_set)
+    */
+    @ApiModelProperty("班级(base_class_major_set)")
+    private Long classId;
+    /**
+    * 专业方向(base_major_set)
+    */
+    @ApiModelProperty("专业方向(base_major_set)")
+    private Long majorSetId;
+    /**
+    * 计划人数
+    */
+    @ApiModelProperty("计划人数")
+    private Integer planTotalStudent;
+    /**
+    * 班级人数
+    */
+    @ApiModelProperty("班级人数")
+    private Integer totalStudent;
+    /**
+    * 男生人数
+    */
+    @ApiModelProperty("男生人数")
+    private Integer boyNum;
+    /**
+    * 女生人数
+    */
+    @ApiModelProperty("女生人数")
+    private Integer girlNum;
+
+}

+ 59 - 0
src/main/java/com/xjrsoft/module/student/vo/BaseClassMajorSetVo.java

@@ -0,0 +1,59 @@
+package com.xjrsoft.module.student.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 szs
+* @Date: 2023-12-28
+* @Version 1.0
+*/
+@Data
+public class BaseClassMajorSetVo {
+
+    /**
+    * 主键
+    */
+    @ApiModelProperty("主键")
+    private Long id;
+    /**
+    * 班级(base_class_major_set)
+    */
+    @ApiModelProperty("班级(base_class_major_set)")
+    private Long classId;
+    /**
+    * 专业方向(base_major_set)
+    */
+    @ApiModelProperty("专业方向(base_major_set)")
+    private Long majorSetId;
+    /**
+    * 计划人数
+    */
+    @ApiModelProperty("计划人数")
+    private Integer planTotalStudent;
+    /**
+    * 班级人数
+    */
+    @ApiModelProperty("班级人数")
+    private Integer totalStudent;
+    /**
+    * 男生人数
+    */
+    @ApiModelProperty("男生人数")
+    private Integer boyNum;
+    /**
+    * 女生人数
+    */
+    @ApiModelProperty("女生人数")
+    private Integer girlNum;
+
+
+
+}

+ 3 - 1
src/main/java/com/xjrsoft/module/teacher/controller/AttendanceRecordController.java

@@ -61,7 +61,9 @@ public class AttendanceRecordController {
     public RT<PageOutput<AttendanceRecordPageVo>> page(@Valid AttendanceRecordPageDto dto){
 
         MPJLambdaWrapper<AttendanceRecord> queryWrapper = new MPJLambdaWrapper<>();
-        queryWrapper.select(AttendanceRecord::getId)
+        queryWrapper
+                .disableSubLogicDel()
+                .select(AttendanceRecord::getId)
                 .selectAs(XjrUser::getName, AttendanceRecordPageVo::getUserName)
                 .select(AttendanceRecord.class, x -> VoToColumnUtil.fieldsToColumns(AttendanceRecordPageVo.class).contains(x.getProperty()))
                 .leftJoin(XjrUser.class, XjrUser::getId, AttendanceRecord::getUserId)

+ 8 - 0
src/main/java/com/xjrsoft/module/teacher/mapper/XjrUserMapper.java

@@ -4,6 +4,8 @@ import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
 * @title: mapper
 * @Author 管理员
@@ -13,4 +15,10 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface XjrUserMapper extends MPJBaseMapper<XjrUser> {
 
+    /**
+     * 根据班级id查询学生用户编号
+     * @param classId
+     * @return
+     */
+    List<Long> getUserIdByClassId(Long classId);
 }

+ 0 - 116
src/main/java/com/xjrsoft/module/textbook/controller/TextbookClassWarehouseController.java

@@ -1,116 +0,0 @@
-package com.xjrsoft.module.textbook.controller;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.xjrsoft.common.constant.GlobalConstant;
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
-import com.xjrsoft.common.page.ConventPage;
-import com.xjrsoft.common.page.PageOutput;
-import com.xjrsoft.common.model.result.RT;
-import com.xjrsoft.common.utils.VoToColumnUtil;
-import com.xjrsoft.module.textbook.dto.AddTextbookClassWarehouseDto;
-import com.xjrsoft.module.textbook.dto.UpdateTextbookClassWarehouseDto;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.support.ExcelTypeEnum;
-import org.springframework.http.ResponseEntity;
-import java.io.ByteArrayOutputStream;
-import java.util.ArrayList;
-
-import com.xjrsoft.module.textbook.dto.TextbookClassWarehousePageDto;
-import com.xjrsoft.module.textbook.entity.TextbookClassWarehouse;
-import com.xjrsoft.module.textbook.service.ITextbookClassWarehouseService;
-import com.xjrsoft.module.textbook.vo.TextbookClassWarehousePageVo;
-
-import com.xjrsoft.module.textbook.vo.TextbookClassWarehouseVo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-/**
-* @title: 教材入库
-* @Author szs
-* @Date: 2023-12-26
-* @Version 1.0
-*/
-@RestController
-@RequestMapping("/textbook" + "/textbookClassWarehouse")
-@Api(value = "/textbook"  + "/textbookClassWarehouse",tags = "教材入库代码")
-@AllArgsConstructor
-public class TextbookClassWarehouseController {
-
-
-    private final ITextbookClassWarehouseService textbookClassWarehouseService;
-
-    @GetMapping(value = "/page")
-    @ApiOperation(value="教材入库列表(分页)")
-    @SaCheckPermission("textbookclasswarehouse:detail")
-    public RT<PageOutput<TextbookClassWarehousePageVo>> page(@Valid TextbookClassWarehousePageDto dto){
-
-        LambdaQueryWrapper<TextbookClassWarehouse> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper
-                    .orderByDesc(TextbookClassWarehouse::getId)
-                .select(TextbookClassWarehouse.class,x -> VoToColumnUtil.fieldsToColumns(TextbookClassWarehousePageVo.class).contains(x.getProperty()));
-        IPage<TextbookClassWarehouse> page = textbookClassWarehouseService.page(ConventPage.getPage(dto), queryWrapper);
-        PageOutput<TextbookClassWarehousePageVo> pageOutput = ConventPage.getPageOutput(page, TextbookClassWarehousePageVo.class);
-        return RT.ok(pageOutput);
-    }
-
-    @GetMapping(value = "/info")
-    @ApiOperation(value="根据id查询教材入库信息")
-    @SaCheckPermission("textbookclasswarehouse:detail")
-    public RT<TextbookClassWarehouseVo> info(@RequestParam Long id){
-        TextbookClassWarehouse textbookClassWarehouse = textbookClassWarehouseService.getById(id);
-        if (textbookClassWarehouse == null) {
-           return RT.error("找不到此数据!");
-        }
-        return RT.ok(BeanUtil.toBean(textbookClassWarehouse, TextbookClassWarehouseVo.class));
-    }
-
-
-    @PostMapping
-    @ApiOperation(value = "新增教材入库")
-    @SaCheckPermission("textbookclasswarehouse:add")
-    public RT<Boolean> add(@Valid @RequestBody AddTextbookClassWarehouseDto dto){
-        TextbookClassWarehouse textbookClassWarehouse = BeanUtil.toBean(dto, TextbookClassWarehouse.class);
-        boolean isSuccess = textbookClassWarehouseService.save(textbookClassWarehouse);
-    return RT.ok(isSuccess);
-    }
-
-    @PutMapping
-    @ApiOperation(value = "修改教材入库")
-    @SaCheckPermission("textbookclasswarehouse:edit")
-    public RT<Boolean> update(@Valid @RequestBody UpdateTextbookClassWarehouseDto dto){
-
-        TextbookClassWarehouse textbookClassWarehouse = BeanUtil.toBean(dto, TextbookClassWarehouse.class);
-        return RT.ok(textbookClassWarehouseService.updateById(textbookClassWarehouse));
-
-    }
-
-    @DeleteMapping
-    @ApiOperation(value = "删除教材入库")
-    @SaCheckPermission("textbookclasswarehouse:delete")
-    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
-        return RT.ok(textbookClassWarehouseService.removeBatchByIds(ids));
-
-    }
-
-    @GetMapping("/export")
-    @ApiOperation(value = "导出")
-    public ResponseEntity<byte[]> exportData(@Valid TextbookClassWarehousePageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
-        List<TextbookClassWarehousePageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<TextbookClassWarehousePageVo>) page(dto).getData()).getList();
-        ByteArrayOutputStream bot = new ByteArrayOutputStream();
-        EasyExcel.write(bot, TextbookClassWarehousePageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
-
-        return RT.fileStream(bot.toByteArray(), "TextbookClassWarehouse" + ExcelTypeEnum.XLSX.getValue());
-    }
-}

+ 17 - 5
src/main/java/com/xjrsoft/module/textbook/controller/TextbookController.java

@@ -8,17 +8,18 @@ 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.textbook.dto.AddTextbookClassWarehouseDto;
+import com.xjrsoft.module.textbook.dto.AddTextbookWarehouseRecordDto;
 import com.xjrsoft.module.textbook.dto.AddTextbookDto;
 import com.xjrsoft.module.textbook.dto.TextbookPageDto;
 import com.xjrsoft.module.textbook.dto.UpdateTextbookDto;
 import com.xjrsoft.module.textbook.entity.Textbook;
 import com.xjrsoft.module.textbook.service.ITextbookService;
-import com.xjrsoft.module.textbook.vo.TextbookClassWarehouseListVo;
+import com.xjrsoft.module.textbook.vo.TextbookWarehouseRecordListVo;
 import com.xjrsoft.module.textbook.vo.TextbookIssueRecordListVo;
 import com.xjrsoft.module.textbook.vo.TextbookPageVo;
 import com.xjrsoft.module.textbook.vo.TextbookSubscriptionRecordVo;
 import com.xjrsoft.module.textbook.vo.TextbookVo;
+import com.xjrsoft.module.textbook.vo.WfTextbookClaimListVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -91,8 +92,8 @@ public class TextbookController {
     @GetMapping(value = "/info-warehouse-list")
     @ApiOperation(value="教材管理-详情-入库记录")
     @SaCheckPermission("textbook:detail")
-    public RT<List<TextbookClassWarehouseListVo>> warehouseList(@RequestParam Long id){
-        List<TextbookClassWarehouseListVo> result = textbookService.warehouseList(id);
+    public RT<List<TextbookWarehouseRecordListVo>> warehouseList(@RequestParam Long id){
+        List<TextbookWarehouseRecordListVo> result = textbookService.warehouseList(id);
         if (result == null) {
             return RT.error("找不到此数据!");
         }
@@ -110,6 +111,17 @@ public class TextbookController {
         return RT.ok(result);
     }
 
+    @GetMapping(value = "/info-claim-list")
+    @ApiOperation(value="教材管理-详情-领取记录")
+    @SaCheckPermission("textbook:detail")
+    public RT<List<WfTextbookClaimListVo>> claimList(@RequestParam Long id){
+        List<WfTextbookClaimListVo> result = textbookService.claimList(id);
+        if (result == null) {
+            return RT.error("找不到此数据!");
+        }
+        return RT.ok(result);
+    }
+
 
     @PostMapping
     @ApiOperation(value = "新增教材管理")
@@ -151,7 +163,7 @@ public class TextbookController {
     @PostMapping("deliver-warehouse")
     @ApiOperation(value = "教材管理入库")
     @SaCheckPermission("textbook:add")
-    public RT<Boolean> deliverWarehouse(@Valid @RequestBody AddTextbookClassWarehouseDto dto){
+    public RT<Boolean> deliverWarehouse(@Valid @RequestBody AddTextbookWarehouseRecordDto dto){
         Boolean isSuccess = textbookService.deliverWarehouse(dto);
         return RT.ok(isSuccess);
     }

+ 109 - 0
src/main/java/com/xjrsoft/module/textbook/controller/TextbookIssueRecordController.java

@@ -0,0 +1,109 @@
+package com.xjrsoft.module.textbook.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
+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.textbook.dto.AddTextbookIssueRecordDto;
+import com.xjrsoft.module.textbook.dto.TextbookIssueRecordPageDto;
+import com.xjrsoft.module.textbook.dto.UpdateTextbookIssueRecordDto;
+import com.xjrsoft.module.textbook.entity.TextbookIssueRecord;
+import com.xjrsoft.module.textbook.service.ITextbookIssueRecordService;
+import com.xjrsoft.module.textbook.vo.TextbookIssueRecordPageVo;
+import com.xjrsoft.module.textbook.vo.TextbookIssueRecordVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.http.ResponseEntity;
+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.PutMapping;
+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.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+* @title: 教材出库记录
+* @Author szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/textbook" + "/textbookIssueRecord")
+@Api(value = "/textbook"  + "/textbookIssueRecord",tags = "教材出库记录代码")
+@AllArgsConstructor
+public class TextbookIssueRecordController {
+
+
+    private final ITextbookIssueRecordService textbookIssueRecordService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="教材出库记录列表(分页)")
+    @SaCheckPermission("textbookissuerecord:detail")
+    public RT<PageOutput<TextbookIssueRecordPageVo>> page(@Valid TextbookIssueRecordPageDto dto){
+
+        Page<TextbookIssueRecordPageVo> page = textbookIssueRecordService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<TextbookIssueRecordPageVo> pageOutput = ConventPage.getPageOutput(page, TextbookIssueRecordPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询教材出库记录信息")
+    @SaCheckPermission("textbookissuerecord:detail")
+    public RT<TextbookIssueRecordVo> info(@RequestParam Long id){
+        TextbookIssueRecord textbookIssueRecord = textbookIssueRecordService.getById(id);
+        if (textbookIssueRecord == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(textbookIssueRecord, TextbookIssueRecordVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增教材出库记录")
+    @SaCheckPermission("textbookissuerecord:add")
+    public RT<Boolean> add(@Valid @RequestBody AddTextbookIssueRecordDto dto){
+        TextbookIssueRecord textbookIssueRecord = BeanUtil.toBean(dto, TextbookIssueRecord.class);
+        boolean isSuccess = textbookIssueRecordService.save(textbookIssueRecord);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改教材出库记录")
+    @SaCheckPermission("textbookissuerecord:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateTextbookIssueRecordDto dto){
+
+        TextbookIssueRecord textbookIssueRecord = BeanUtil.toBean(dto, TextbookIssueRecord.class);
+        return RT.ok(textbookIssueRecordService.updateById(textbookIssueRecord));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除教材出库记录")
+    @SaCheckPermission("textbookissuerecord:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(textbookIssueRecordService.removeBatchByIds(ids));
+
+    }
+
+    @GetMapping("/export")
+    @ApiOperation(value = "导出")
+    public ResponseEntity<byte[]> exportData(@Valid TextbookIssueRecordPageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
+        List<TextbookIssueRecordPageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<TextbookIssueRecordPageVo>) page(dto).getData()).getList();
+        ByteArrayOutputStream bot = new ByteArrayOutputStream();
+        EasyExcel.write(bot, TextbookIssueRecordPageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
+
+        return RT.fileStream(bot.toByteArray(), "TextbookIssueRecord" + ExcelTypeEnum.XLSX.getValue());
+    }
+}

+ 155 - 0
src/main/java/com/xjrsoft/module/textbook/controller/TextbookStudentClaimController.java

@@ -0,0 +1,155 @@
+package com.xjrsoft.module.textbook.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.textbook.dto.*;
+import com.xjrsoft.module.textbook.entity.TextbookStudentClaim;
+import com.xjrsoft.module.textbook.service.ITextbookStudentClaimService;
+import com.xjrsoft.module.textbook.vo.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* @title: 学生教材认领记录
+* @Author szs
+* @Date: 2023-12-26
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/textbook" + "/textbookStudentClaim")
+@Api(value = "/textbook"  + "/textbookStudentClaim",tags = "学生教材认领记录代码")
+@AllArgsConstructor
+public class TextbookStudentClaimController {
+
+
+    private final ITextbookStudentClaimService textbookStudentClaimService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="学生教材认领记录列表(分页)")
+    @SaCheckPermission("textbookstudentclaim:detail")
+    public RT<PageOutput<TextbookStudentClaimPageVo>> page(@Valid TextbookStudentClaimPageDto dto){
+        LambdaQueryWrapper<TextbookStudentClaim> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                .orderByDesc(TextbookStudentClaim::getId)
+                .select(TextbookStudentClaim.class,x -> VoToColumnUtil.fieldsToColumns(TextbookStudentClaimPageVo.class).contains(x.getProperty()));
+        IPage<TextbookStudentClaim> page = textbookStudentClaimService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<TextbookStudentClaimPageVo> pageOutput = ConventPage.getPageOutput(page, TextbookStudentClaimPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/student-confirm-list")
+    @ApiOperation(value="学生教材领取确定页面")
+    @SaCheckPermission("textbookstudentclaim:detail")
+    public RT<TextbookClaimStudentConfirmVo> studentConfirmList(@Valid TextbookClaimStudentConfirmDto dto){
+        TextbookClaimStudentConfirmVo textbookClaimStudentConfirmVo = textbookStudentClaimService.getStudentConfirmList(dto);
+        return RT.ok(textbookClaimStudentConfirmVo);
+    }
+
+    @GetMapping(value = "/student-semester-list")
+    @ApiOperation(value="学生教材领取学期页面")
+    @SaCheckPermission("textbookstudentclaim:detail")
+    public RT<List<TextbookStudentSemesterVo>> studentSemesterList(){
+        List<TextbookStudentSemesterVo> textbookStudentSemesterVoList = textbookStudentClaimService.getStudentSemesterList();
+        return RT.ok(textbookStudentSemesterVoList);
+    }
+
+    @GetMapping(value = "/teacher-check-byClass-list")
+    @ApiOperation(value="教师教材领取按班级查看页面")
+    @SaCheckPermission("textbookstudentclaim:detail")
+    public RT<List<TeacherCheckByclassVo>> teacherCheckByClassList(@Valid TeacherCheckByclassDto dto){
+        List<TeacherCheckByclassVo> teacherCheckByclassList = textbookStudentClaimService.getTeacherCheckByclassList(dto);
+        return RT.ok(teacherCheckByclassList);
+    }
+
+    @GetMapping(value = "/teacher-check-byStu-list")
+    @ApiOperation(value="教师教材领取按学生查看页面")
+    @SaCheckPermission("textbookstudentclaim:detail")
+    public RT<List<TeacherCheckByStuVo>> teacherCheckByStuList(@Valid TeacherCheckByStuDto dto){
+        List<TeacherCheckByStuVo> teacherCheckByStuList = textbookStudentClaimService.getTeacherCheckByStuList(dto);
+        return RT.ok(teacherCheckByStuList);
+    }
+
+    @GetMapping(value = "/teacher-check-stu-claim-list")
+    @ApiOperation(value="教师查看一本教材的学生领取情况页面")
+    @SaCheckPermission("textbookstudentclaim:detail")
+    public RT<List<TeacherCheckStuClaimVo>> teacherCheckStuClaimList(@Valid TeacherCheckStuClaimDto dto){
+        List<TeacherCheckStuClaimVo> teacherCheckStuClaimList = textbookStudentClaimService.getTeacherCheckStuClaimList(dto);
+        return RT.ok(teacherCheckStuClaimList);
+    }
+
+    @GetMapping(value = "/teacher-get-stu-noClaim-list")
+    @ApiOperation(value="班主任获取班上某个学生没有认领的教材记录")
+    @SaCheckPermission("textbookstudentclaim:detail")
+    public RT<List<TextbookClaimVO>> teacherGetStuNoClaimList(@RequestParam Long studentUserId){
+        List<TextbookClaimVO> textbookClaimVOList = textbookStudentClaimService.getTeacherGetStuNoClaimList(studentUserId);
+        return RT.ok(textbookClaimVOList);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询学生教材认领记录信息")
+    @SaCheckPermission("textbookstudentclaim:detail")
+    public RT<TextbookStudentClaimVo> info(@RequestParam Long id){
+        TextbookStudentClaim textbookStudentClaim = textbookStudentClaimService.getById(id);
+        if (textbookStudentClaim == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(textbookStudentClaim, TextbookStudentClaimVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增学生教材认领记录")
+    @SaCheckPermission("textbookstudentclaim:add")
+    public RT<Boolean> add(@Valid @RequestBody AddTextbookStudentClaimDto dto){
+        TextbookStudentClaim textbookStudentClaim = BeanUtil.toBean(dto, TextbookStudentClaim.class);
+        boolean isSuccess = textbookStudentClaimService.save(textbookStudentClaim);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改学生教材认领记录")
+    @SaCheckPermission("textbookstudentclaim:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateTextbookStudentClaimDto dto){
+
+        TextbookStudentClaim textbookStudentClaim = BeanUtil.toBean(dto, TextbookStudentClaim.class);
+        return RT.ok(textbookStudentClaimService.updateById(textbookStudentClaim));
+
+    }
+
+    @PutMapping("/confirm")
+    @ApiOperation(value = "学生自己确认已经领取")
+    @SaCheckPermission("textbookstudentclaim:edit")
+    public RT<Boolean> confirm(@Valid @RequestBody List<Long> textbookStudentClaimIds){
+        return RT.ok(textbookStudentClaimService.updateByIds(textbookStudentClaimIds));
+    }
+
+    @PutMapping("/teacher-confirm")
+    @ApiOperation(value = "教师帮助学生确认已经领取")
+    @SaCheckPermission("textbookstudentclaim:edit")
+    public RT<Boolean> teacherConfirm(@Valid @RequestBody TeacherConfirmDto dto){
+        TextbookStudentClaim textbookStudentClaim = BeanUtil.toBean(dto, TextbookStudentClaim.class);
+        textbookStudentClaim.setIsClaim(1);
+        textbookStudentClaim.setRemark(dto.getRemark());
+        return RT.ok(textbookStudentClaimService.updateById(textbookStudentClaim));
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除学生教材认领记录")
+    @SaCheckPermission("textbookstudentclaim:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(textbookStudentClaimService.removeBatchByIds(ids));
+
+    }
+
+}

+ 108 - 0
src/main/java/com/xjrsoft/module/textbook/controller/TextbookWarehouseRecordController.java

@@ -0,0 +1,108 @@
+package com.xjrsoft.module.textbook.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
+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.textbook.dto.AddTextbookWarehouseRecordDto;
+import com.xjrsoft.module.textbook.dto.TextbookWarehouseRecordPageDto;
+import com.xjrsoft.module.textbook.dto.UpdateTextbookWarehouseRecordDto;
+import com.xjrsoft.module.textbook.entity.TextbookWarehouseRecord;
+import com.xjrsoft.module.textbook.service.ITextbookWarehouseRecordService;
+import com.xjrsoft.module.textbook.vo.TextbookWarehouseRecordPageVo;
+import com.xjrsoft.module.textbook.vo.TextbookWarehouseRecordVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.http.ResponseEntity;
+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.PutMapping;
+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.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+* @title: 教材入库
+* @Author szs
+* @Date: 2023-12-26
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/textbook" + "/textbookWarehouseRecord")
+@Api(value = "/textbook"  + "/textbookWarehouseRecord",tags = "教材入库代码")
+@AllArgsConstructor
+public class TextbookWarehouseRecordController {
+
+
+    private final ITextbookWarehouseRecordService textbookClassWarehouseService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="教材入库列表(分页)")
+    @SaCheckPermission("textbookclasswarehouse:detail")
+    public RT<PageOutput<TextbookWarehouseRecordPageVo>> page(@Valid TextbookWarehouseRecordPageDto dto){
+        Page<TextbookWarehouseRecordPageVo> page = textbookClassWarehouseService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<TextbookWarehouseRecordPageVo> pageOutput = ConventPage.getPageOutput(page, TextbookWarehouseRecordPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询教材入库信息")
+    @SaCheckPermission("textbookclasswarehouse:detail")
+    public RT<TextbookWarehouseRecordVo> info(@RequestParam Long id){
+        TextbookWarehouseRecord textbookWarehouseRecord = textbookClassWarehouseService.getById(id);
+        if (textbookWarehouseRecord == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(textbookWarehouseRecord, TextbookWarehouseRecordVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增教材入库")
+    @SaCheckPermission("textbookclasswarehouse:add")
+    public RT<Boolean> add(@Valid @RequestBody AddTextbookWarehouseRecordDto dto){
+        TextbookWarehouseRecord textbookWarehouseRecord = BeanUtil.toBean(dto, TextbookWarehouseRecord.class);
+        boolean isSuccess = textbookClassWarehouseService.save(textbookWarehouseRecord);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改教材入库")
+    @SaCheckPermission("textbookclasswarehouse:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateTextbookWarehouseRecordDto dto){
+
+        TextbookWarehouseRecord textbookWarehouseRecord = BeanUtil.toBean(dto, TextbookWarehouseRecord.class);
+        return RT.ok(textbookClassWarehouseService.updateById(textbookWarehouseRecord));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除教材入库")
+    @SaCheckPermission("textbookclasswarehouse:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(textbookClassWarehouseService.removeBatchByIds(ids));
+
+    }
+
+    @GetMapping("/export")
+    @ApiOperation(value = "导出")
+    public ResponseEntity<byte[]> exportData(@Valid TextbookWarehouseRecordPageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
+        List<TextbookWarehouseRecordPageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<TextbookWarehouseRecordPageVo>) page(dto).getData()).getList();
+        ByteArrayOutputStream bot = new ByteArrayOutputStream();
+        EasyExcel.write(bot, TextbookWarehouseRecordPageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
+
+        return RT.fileStream(bot.toByteArray(), "TextbookClassWarehouse" + ExcelTypeEnum.XLSX.getValue());
+    }
+}

+ 116 - 0
src/main/java/com/xjrsoft/module/textbook/controller/WfExerciseBookController.java

@@ -0,0 +1,116 @@
+package com.xjrsoft.module.textbook.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.textbook.dto.AddWfExerciseBookDto;
+import com.xjrsoft.module.textbook.dto.UpdateWfExerciseBookDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
+import org.springframework.http.ResponseEntity;
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+
+import com.xjrsoft.module.textbook.dto.WfExerciseBookPageDto;
+import com.xjrsoft.module.textbook.entity.WfExerciseBook;
+import com.xjrsoft.module.textbook.service.IWfExerciseBookService;
+import com.xjrsoft.module.textbook.vo.WfExerciseBookPageVo;
+
+import com.xjrsoft.module.textbook.vo.WfExerciseBookVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+* @title: 作业本征订
+* @Author szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/textbook" + "/wfExerciseBook")
+@Api(value = "/textbook"  + "/wfExerciseBook",tags = "作业本征订代码")
+@AllArgsConstructor
+public class WfExerciseBookController {
+
+
+    private final IWfExerciseBookService wfExerciseBookService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="作业本征订列表(分页)")
+    @SaCheckPermission("wfexercisebook:detail")
+    public RT<PageOutput<WfExerciseBookPageVo>> page(@Valid WfExerciseBookPageDto dto){
+
+        LambdaQueryWrapper<WfExerciseBook> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(WfExerciseBook::getId)
+                .select(WfExerciseBook.class,x -> VoToColumnUtil.fieldsToColumns(WfExerciseBookPageVo.class).contains(x.getProperty()));
+        IPage<WfExerciseBook> page = wfExerciseBookService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<WfExerciseBookPageVo> pageOutput = ConventPage.getPageOutput(page, WfExerciseBookPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询作业本征订信息")
+    @SaCheckPermission("wfexercisebook:detail")
+    public RT<WfExerciseBookVo> info(@RequestParam Long id){
+        WfExerciseBook wfExerciseBook = wfExerciseBookService.getByIdDeep(id);
+        if (wfExerciseBook == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(wfExerciseBook, WfExerciseBookVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增作业本征订")
+    @SaCheckPermission("wfexercisebook:add")
+    public RT<Boolean> add(@Valid @RequestBody AddWfExerciseBookDto dto){
+        WfExerciseBook wfExerciseBook = BeanUtil.toBean(dto, WfExerciseBook.class);
+        boolean isSuccess = wfExerciseBookService.add(wfExerciseBook);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改作业本征订")
+    @SaCheckPermission("wfexercisebook:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateWfExerciseBookDto dto){
+
+        WfExerciseBook wfExerciseBook = BeanUtil.toBean(dto, WfExerciseBook.class);
+        return RT.ok(wfExerciseBookService.update(wfExerciseBook));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除作业本征订")
+    @SaCheckPermission("wfexercisebook:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(wfExerciseBookService.delete(ids));
+
+    }
+
+    @GetMapping("/export")
+    @ApiOperation(value = "导出")
+    public ResponseEntity<byte[]> exportData(@Valid WfExerciseBookPageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
+        List<WfExerciseBookPageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<WfExerciseBookPageVo>) page(dto).getData()).getList();
+        ByteArrayOutputStream bot = new ByteArrayOutputStream();
+        EasyExcel.write(bot, WfExerciseBookPageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
+
+        return RT.fileStream(bot.toByteArray(), "WfExerciseBook" + ExcelTypeEnum.XLSX.getValue());
+    }
+}

+ 21 - 1
src/main/java/com/xjrsoft/module/textbook/controller/WfTextbookClaimController.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.textbook.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.xjrsoft.common.model.result.RT;
@@ -9,6 +10,7 @@ import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.QrCodeUtil;
 import com.xjrsoft.config.CommonPropertiesConfig;
 import com.xjrsoft.module.textbook.dto.AddWfTextbookClaimDto;
+import com.xjrsoft.module.textbook.dto.ConfirmDistributeDto;
 import com.xjrsoft.module.textbook.dto.UpdateWfTextbookClaimDto;
 import com.xjrsoft.module.textbook.dto.WfTextbookClaimPageDto;
 import com.xjrsoft.module.textbook.entity.WfTextbookClaim;
@@ -61,6 +63,17 @@ public class WfTextbookClaimController {
         return RT.ok(BeanUtil.toBean(wfTextbookClaim, WfTextbookClaimVo.class));
     }
 
+    @GetMapping(value = "/info-distribute")
+    @ApiOperation(value="教材发放页详情")
+    @SaCheckPermission("wftextbookclaim:detail")
+    public RT<WfTextbookClaimVo> infoDistribute(@RequestParam Long id){
+        WfTextbookClaimVo wfTextbookClaimVo = wfTextbookClaimService.infoDistribute(id);
+        if (wfTextbookClaimVo == null) {
+            return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(wfTextbookClaimVo, WfTextbookClaimVo.class));
+    }
+
 
     @PostMapping
     @ApiOperation(value = "新增教材申领")
@@ -71,6 +84,13 @@ public class WfTextbookClaimController {
     return RT.ok(isSuccess);
     }
 
+    @PutMapping("/confirm-istribute")
+    @ApiOperation(value = "确认发放")
+    @SaCheckPermission("wftextbookclaim:edit")
+    public RT<Boolean> confirmDistribute(@Valid @RequestBody ConfirmDistributeDto dto){
+        return RT.ok(wfTextbookClaimService.confirmDistribute(dto));
+    }
+
     @PutMapping
     @ApiOperation(value = "修改教材申领")
     @SaCheckPermission("wftextbookclaim:edit")
@@ -93,7 +113,7 @@ public class WfTextbookClaimController {
     @ApiOperation(value="教材领取-生成二维码")
     @SaCheckPermission("wfstudenttextbookclaim:detail")
     public RT<String> qrcode(@RequestParam Long id) throws Exception {
-        String url = commonPropertiesConfig.getDomainApp() + "/pages/material/grant?id=" + id;
+        String url = commonPropertiesConfig.getDomainApp() + "/pages/material/grant?id=" + id + "&userId=" + StpUtil.getLoginIdAsLong();
         int width = 200;
         int height = 200;
         int margin = 1;

+ 73 - 0
src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookIssueRecordDto.java

@@ -0,0 +1,73 @@
+package com.xjrsoft.module.textbook.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;
+
+
+
+/**
+* @title: 教材出库记录
+* @Author szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class AddTextbookIssueRecordDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 教材申领编号
+    */
+    @ApiModelProperty("教材申领编号")
+    private Long wfTextbookClaimId;
+    /**
+    * 教材申领项编号
+    */
+    @ApiModelProperty("教材申领项编号")
+    private Long wfTextbookClaimItemId;
+    /**
+    * 出库数量
+    */
+    @ApiModelProperty("出库数量")
+    private Integer issueNumber;
+    /**
+    * 剩余数量
+    */
+    @ApiModelProperty("剩余数量")
+    private Integer remainingNumber;
+    /**
+    * 领取用户编号
+    */
+    @ApiModelProperty("领取用户编号")
+    private Long receiveUserId;
+    /**
+    * 出库用户编号
+    */
+    @ApiModelProperty("出库用户编号")
+    private Long issueUserId;
+    /**
+    * 出库方式(xjr_dictionary_item[issue_mode])
+    */
+    @ApiModelProperty("出库方式(xjr_dictionary_item[issue_mode])")
+    private String issueMode;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

+ 63 - 0
src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookStudentClaimDto.java

@@ -0,0 +1,63 @@
+package com.xjrsoft.module.textbook.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;
+
+
+
+/**
+* @title: 学生教材认领记录
+* @Author szs
+* @Date: 2023-12-26
+* @Version 1.0
+*/
+@Data
+public class AddTextbookStudentClaimDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 学期ID(base_semester)
+    */
+    @ApiModelProperty("学期ID(base_semester)")
+    private Long baseSemesterId;
+    /**
+    * 班级编号
+    */
+    @ApiModelProperty("班级编号")
+    private Long classId;
+    /**
+    * 学生用户编号
+    */
+    @ApiModelProperty("学生用户编号")
+    private Long studentUserId;
+    /**
+    * 教材管理编号
+    */
+    @ApiModelProperty("教材管理编号")
+    private Long textbookId;
+    /**
+    * 是否领取(1:已领取 0:未领取)
+    */
+    @ApiModelProperty("是否领取(1:已领取 0:未领取)")
+    private Integer isClaim;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

+ 1 - 7
src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookClassWarehouseDto.java → src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookWarehouseRecordDto.java

@@ -3,14 +3,8 @@ package com.xjrsoft.module.textbook.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;
-
 
 
 /**
@@ -20,7 +14,7 @@ import java.util.Date;
 * @Version 1.0
 */
 @Data
-public class AddTextbookClassWarehouseDto implements Serializable {
+public class AddTextbookWarehouseRecordDto implements Serializable {
 
     private static final long serialVersionUID = 1L;
 

+ 64 - 0
src/main/java/com/xjrsoft/module/textbook/dto/AddWfExerciseBookDto.java

@@ -0,0 +1,64 @@
+package com.xjrsoft.module.textbook.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 com.xjrsoft.module.textbook.entity.WfExerciseBookItem;
+
+
+
+/**
+* @title: 作业本征订
+* @Author szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class AddWfExerciseBookDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 申请人
+    */
+    @ApiModelProperty("申请人")
+    private Long applicantUserId;
+    /**
+    * 班级编号
+    */
+    @ApiModelProperty("班级编号")
+    private Long classId;
+    /**
+    * 学期ID(base_semester)
+    */
+    @ApiModelProperty("学期ID(base_semester)")
+    private Long baseSemesterId;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+    /**
+    * 状态(1:结束 0:未结束)
+    */
+    @ApiModelProperty("状态(1:结束 0:未结束)")
+    private Integer status;
+
+    /**
+    * wfExerciseBookItem
+    */
+    @ApiModelProperty("wfExerciseBookItem子表")
+    private List<AddWfExerciseBookItemDto> wfExerciseBookItemList;
+}

+ 58 - 0
src/main/java/com/xjrsoft/module/textbook/dto/AddWfExerciseBookItemDto.java

@@ -0,0 +1,58 @@
+package com.xjrsoft.module.textbook.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;
+
+
+
+/**
+* @title: 作业本征订项
+* @Author szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class AddWfExerciseBookItemDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 作业本征订编号
+    */
+    @ApiModelProperty("作业本征订编号")
+    private Long wfExerciseBookId;
+    /**
+    * 作业本征订类型(xjr_dictionary_item[exercise_book_type])
+    */
+    @ApiModelProperty("作业本征订类型(xjr_dictionary_item[exercise_book_type])")
+    private String subscriptionType;
+    /**
+    * 规格型号
+    */
+    @ApiModelProperty("规格型号")
+    private String specificationsModels;
+    /**
+    * 估价(元)
+    */
+    @ApiModelProperty("估价(元)")
+    private BigDecimal appraisalPrice;
+    /**
+    * 征订数量
+    */
+    @ApiModelProperty("征订数量")
+    private Integer subscriptionNumber;
+
+}

+ 61 - 0
src/main/java/com/xjrsoft/module/textbook/dto/ConfirmDistributeDto.java

@@ -0,0 +1,61 @@
+package com.xjrsoft.module.textbook.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+* @title: 教材发放之确认发放入参
+* @Author szs
+* @Date: 2023-12-26
+* @Version 1.0
+*/
+@Data
+public class ConfirmDistributeDto{
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 教材申领主键编号
+    */
+    @ApiModelProperty("教材申领主键编号")
+    private Long textbookClaimId;
+
+    /**
+     * 领取用户编号
+     */
+    @ApiModelProperty("领取用户编号")
+    private Long receiveUserId;
+
+    /**
+     * 教材申领项
+     */
+    List<TextbookClaimItem> textbookClaimItemList;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @Data
+    public static class TextbookClaimItem implements Serializable {
+
+        private static final long serialVersionUID = 1L;
+
+        /**
+         * 教材申领项主键编号
+         */
+        @ApiModelProperty("教材申领项主键编号")
+        private Long textbookClaimItemId;
+
+        /**
+         * 发放数量
+         */
+        @ApiModelProperty("本次发放数量")
+        private Integer confirmNumber;
+    }
+}

+ 30 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TeacherCheckByStuDto.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.textbook.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 教师教材领取按学生查看页面入参
+* @Author szs
+* @Date: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class TeacherCheckByStuDto {
+    /**
+     * 学生用户编号
+     */
+    @ApiModelProperty("学生用户编号")
+    private Long studentUserId;
+    /**
+     * 班级编号
+     */
+    @ApiModelProperty(value = "班级编号",hidden = true)
+    private Long classId;
+    /**
+     * 领取情况(1=全部数据,2=该教材全部领取,3=该教材部分未领取)
+     */
+    @ApiModelProperty("领取情况")
+    private Integer claimStatus;
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TeacherCheckByclassDto.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.textbook.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 教师教材领取按班级查看页面
+* @Author szs
+* @Date: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class TeacherCheckByclassDto{
+    /**
+     * 班级编号
+     */
+    @ApiModelProperty(value = "班级编号",hidden = true)
+    private Long classId;
+    /**
+     * 领取情况(1=全部数据,2=该教材全部领取,3=该教材部分未领取)
+     */
+    @ApiModelProperty("领取情况")
+    private Integer claimStatus;
+}

+ 25 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TeacherCheckStuClaimDto.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.textbook.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 教师查看一本教材的学生领取情况页面入参
+* @Author szs
+* @Date: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class TeacherCheckStuClaimDto {
+    /**
+     * 教材主键编号
+     */
+    @ApiModelProperty(value = "教材主键编号")
+    private Long textbookId;
+    /**
+     * 班级编号
+     */
+    @ApiModelProperty(value = "班级编号",hidden = true)
+    private Long classId;
+}

+ 35 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TeacherConfirmDto.java

@@ -0,0 +1,35 @@
+package com.xjrsoft.module.textbook.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 教师帮助学生确认已经领取入参
+* @Author szs
+* @Date: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class TeacherConfirmDto {
+    /**
+     * 学生教材认领主键编号
+     */
+    @ApiModelProperty("学生教材认领主键编号")
+    private Long textbookStudentClaimId;
+    /**
+     * 教材主键编号
+     */
+    @ApiModelProperty(value = "教材主键编号")
+    private Long textbookId;
+    /**
+     * 学生id
+     */
+    @ApiModelProperty("学生id")
+    private Long studentUserId;
+    /**
+     * 备注
+     */
+    @ApiModelProperty("备注")
+    private String remark;
+}

+ 31 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookClaimStudentConfirmDto.java

@@ -0,0 +1,31 @@
+package com.xjrsoft.module.textbook.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 学生教材认领确定页入参
+* @Author szs
+* @Date: 2023-12-26
+* @Version 1.0
+*/
+@Data
+public class TextbookClaimStudentConfirmDto {
+
+    /**
+     * 学期ID(base_semester)
+     */
+    @ApiModelProperty(value = "学期ID(base_semester)",required = true)
+    private Long baseSemesterId;
+    /**
+     * 当前用户的id
+     */
+    @ApiModelProperty(value = "当前用户的id",hidden = true)
+    private Long studentUserId;
+    /**
+     * 查看还是确认(1 = 查看,2 = 确认)
+     */
+    @ApiModelProperty(value = "查看还是确认(1 = 查看,2 = 确认)",required = true)
+    private Integer showOrConfirm;
+}

+ 51 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookIssueRecordPageDto.java

@@ -0,0 +1,51 @@
+package com.xjrsoft.module.textbook.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 szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TextbookIssueRecordPageDto extends PageInput {
+
+    @ApiModelProperty("教材类型")
+    public String textbookType;
+
+    @ApiModelProperty("学期id")
+    public Long baseSemesterId;
+
+    @ApiModelProperty("学科组id")
+    public Long subjectGroupId;
+
+    @ApiModelProperty("课程id")
+    public Long courseSubjectId;
+
+    @ApiModelProperty("班级id")
+    public Long classId;
+
+    @ApiModelProperty("书名")
+    public String bookName;
+
+    @ApiModelProperty("书号")
+    public String issn;
+
+    @ApiModelProperty("规格型号")
+    public String specificationsModels;
+
+    @ApiModelProperty("规划教材")
+    public String isTextbookPlan;
+}

+ 7 - 1
src/main/java/com/xjrsoft/module/textbook/dto/TextbookPageDto.java

@@ -37,7 +37,13 @@ public class TextbookPageDto extends PageInput {
     @ApiModelProperty("书名")
     public String bookName;
 
-    @ApiModelProperty("书号")
+    @ApiModelProperty("规划教材")
     public String isTextbookPlan;
 
+    @ApiModelProperty("书号")
+    public String issn;
+
+    @ApiModelProperty("出版社")
+    public String editorInChief;
+
 }

+ 30 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookStudentClaimPageDto.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.textbook.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 学生教材认领记录分页查询入参
+* @Author szs
+* @Date: 2023-12-26
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TextbookStudentClaimPageDto extends PageInput {
+
+    /**
+     * 学期ID(base_semester)
+     */
+    @ApiModelProperty("学期ID(base_semester)")
+    private Long baseSemesterId;
+
+    /**
+     * 学生用户编号
+     */
+    @ApiModelProperty("学生用户编号")
+    private Long studentUserId;
+}

+ 45 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TextbookWarehouseRecordPageDto.java

@@ -0,0 +1,45 @@
+package com.xjrsoft.module.textbook.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 教材入库分页查询入参
+* @Author szs
+* @Date: 2023-12-26
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TextbookWarehouseRecordPageDto extends PageInput {
+
+    @ApiModelProperty("教材类型")
+    public String textbookType;
+
+    @ApiModelProperty("学期id")
+    public Long baseSemesterId;
+
+    @ApiModelProperty("学科组id")
+    public Long subjectGroupId;
+
+    @ApiModelProperty("课程id")
+    public Long courseSubjectId;
+
+    @ApiModelProperty("班级id")
+    public Long classId;
+
+    @ApiModelProperty("书名")
+    public String bookName;
+
+    @ApiModelProperty("书号")
+    public String issn;
+
+    @ApiModelProperty("规格型号")
+    public String specificationsModels;
+
+    @ApiModelProperty("规划教材")
+    public String isTextbookPlan;
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookIssueRecordDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.textbook.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 szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class UpdateTextbookIssueRecordDto extends AddTextbookIssueRecordDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 2 - 2
src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookClassWarehouseDto.java → src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookStudentClaimDto.java

@@ -14,13 +14,13 @@ import java.util.Date;
 
 
 /**
-* @title: 教材入库
+* @title: 学生教材认领记录
 * @Author szs
 * @Date: 2023-12-26
 * @Version 1.0
 */
 @Data
-public class UpdateTextbookClassWarehouseDto extends AddTextbookClassWarehouseDto {
+public class UpdateTextbookStudentClaimDto extends AddTextbookStudentClaimDto {
 
     private static final long serialVersionUID = 1L;
 

+ 23 - 0
src/main/java/com/xjrsoft/module/textbook/dto/UpdateTextbookWarehouseRecordDto.java

@@ -0,0 +1,23 @@
+package com.xjrsoft.module.textbook.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 教材入库
+* @Author szs
+* @Date: 2023-12-26
+* @Version 1.0
+*/
+@Data
+public class UpdateTextbookWarehouseRecordDto extends AddTextbookWarehouseRecordDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 33 - 0
src/main/java/com/xjrsoft/module/textbook/dto/UpdateWfExerciseBookDto.java

@@ -0,0 +1,33 @@
+package com.xjrsoft.module.textbook.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;
+import com.xjrsoft.module.textbook.entity.WfExerciseBookItem;
+
+
+
+/**
+* @title: 作业本征订
+* @Author szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class UpdateWfExerciseBookDto extends AddWfExerciseBookDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 2 - 9
src/main/java/com/xjrsoft/module/textbook/dto/UpdateWfTextbookClaimDto.java

@@ -2,15 +2,6 @@ package com.xjrsoft.module.textbook.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;
-import com.xjrsoft.module.textbook.entity.WfTextbookClaimItem;
 
 
 
@@ -30,4 +21,6 @@ public class UpdateWfTextbookClaimDto extends AddWfTextbookClaimDto {
     */
     @ApiModelProperty("主键编号")
     private Long id;
+
+
 }

+ 3 - 3
src/main/java/com/xjrsoft/module/textbook/dto/TextbookClassWarehousePageDto.java → src/main/java/com/xjrsoft/module/textbook/dto/WfExerciseBookPageDto.java

@@ -13,14 +13,14 @@ import java.util.Date;
 
 
 /**
-* @title: 教材入库分页查询入参
+* @title: 作业本征订分页查询入参
 * @Author szs
-* @Date: 2023-12-26
+* @Date: 2023-12-27
 * @Version 1.0
 */
 @Data
 @EqualsAndHashCode(callSuper = false)
-public class TextbookClassWarehousePageDto extends PageInput {
+public class WfExerciseBookPageDto extends PageInput {
 
 
 }

+ 123 - 0
src/main/java/com/xjrsoft/module/textbook/entity/TextbookIssueRecord.java

@@ -0,0 +1,123 @@
+package com.xjrsoft.module.textbook.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 szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+@TableName("textbook_issue_record")
+@ApiModel(value = "textbook_issue_record", description = "教材出库记录")
+public class TextbookIssueRecord 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;
+    /**
+    * 教材申领编号
+    */
+    @ApiModelProperty("教材申领编号")
+    private Long wfTextbookClaimId;
+    /**
+    * 教材申领项编号
+    */
+    @ApiModelProperty("教材申领项编号")
+    private Long wfTextbookClaimItemId;
+    /**
+    * 出库数量
+    */
+    @ApiModelProperty("出库数量")
+    private Integer issueNumber;
+    /**
+    * 剩余数量
+    */
+    @ApiModelProperty("剩余数量")
+    private Integer remainingNumber;
+    /**
+    * 领取用户编号
+    */
+    @ApiModelProperty("领取用户编号")
+    private Long receiveUserId;
+    /**
+    * 出库用户编号
+    */
+    @ApiModelProperty("出库用户编号")
+    private Long issueUserId;
+    /**
+    * 出库方式(xjr_dictionary_item[issue_mode])
+    */
+    @ApiModelProperty("出库方式(xjr_dictionary_item[issue_mode])")
+    private String issueMode;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+}

+ 113 - 0
src/main/java/com/xjrsoft/module/textbook/entity/TextbookStudentClaim.java

@@ -0,0 +1,113 @@
+package com.xjrsoft.module.textbook.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 szs
+* @Date: 2023-12-26
+* @Version 1.0
+*/
+@Data
+@TableName("textbook_student_claim")
+@ApiModel(value = "textbook_student_claim", description = "学生教材认领记录")
+public class TextbookStudentClaim 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;
+    /**
+    * 学期ID(base_semester)
+    */
+    @ApiModelProperty("学期ID(base_semester)")
+    private Long baseSemesterId;
+    /**
+    * 班级编号
+    */
+    @ApiModelProperty("班级编号")
+    private Long classId;
+    /**
+    * 学生用户编号
+    */
+    @ApiModelProperty("学生用户编号")
+    private Long studentUserId;
+    /**
+    * 教材管理编号
+    */
+    @ApiModelProperty("教材管理编号")
+    private Long textbookId;
+    /**
+    * 是否领取(1:已领取 0:未领取)
+    */
+    @ApiModelProperty("是否领取(1:已领取 0:未领取)")
+    private Integer isClaim;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+}

+ 8 - 8
src/main/java/com/xjrsoft/module/textbook/entity/TextbookClassWarehouse.java → src/main/java/com/xjrsoft/module/textbook/entity/TextbookWarehouseRecord.java

@@ -5,15 +5,11 @@ 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;
 
 
@@ -24,9 +20,9 @@ import java.util.Date;
 * @Version 1.0
 */
 @Data
-@TableName("textbook_class_warehouse")
-@ApiModel(value = "textbook_class_warehouse", description = "教材入库")
-public class TextbookClassWarehouse implements Serializable {
+@TableName("textbook_warehouse_record")
+@ApiModel(value = "textbook_warehouse_record", description = "教材入库")
+public class TextbookWarehouseRecord implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -113,6 +109,10 @@ public class TextbookClassWarehouse implements Serializable {
     */
     @ApiModelProperty("总价(元)")
     private BigDecimal totalPrice;
-
+    /**
+     * 入库方式
+     */
+    @ApiModelProperty("入库方式")
+    private String warehouseMode;
 
 }

+ 115 - 0
src/main/java/com/xjrsoft/module/textbook/entity/WfExerciseBook.java

@@ -0,0 +1,115 @@
+package com.xjrsoft.module.textbook.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 szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+@TableName("wf_exercise_book")
+@ApiModel(value = "wf_exercise_book", description = "作业本征订")
+public class WfExerciseBook 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;
+    /**
+    * 申请人
+    */
+    @ApiModelProperty("申请人")
+    private Long applicantUserId;
+    /**
+    * 班级编号
+    */
+    @ApiModelProperty("班级编号")
+    private Long classId;
+    /**
+    * 学期ID(base_semester)
+    */
+    @ApiModelProperty("学期ID(base_semester)")
+    private Long baseSemesterId;
+    /**
+    * 备注
+    */
+    @ApiModelProperty("备注")
+    private String remark;
+    /**
+    * 状态(1:结束 0:未结束)
+    */
+    @ApiModelProperty("状态(1:结束 0:未结束)")
+    private Integer status;
+
+    /**
+    * wfExerciseBookItem
+    */
+    @ApiModelProperty("wfExerciseBookItem子表")
+    @TableField(exist = false)
+    @EntityMapping(thisField = "id", joinField = "wfExerciseBookId")
+    private List<WfExerciseBookItem> wfExerciseBookItemList;
+
+}

+ 108 - 0
src/main/java/com/xjrsoft/module/textbook/entity/WfExerciseBookItem.java

@@ -0,0 +1,108 @@
+package com.xjrsoft.module.textbook.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 szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+@TableName("wf_exercise_book_item")
+@ApiModel(value = "wf_exercise_book_item", description = "作业本征订项")
+public class WfExerciseBookItem 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;
+    /**
+    * 作业本征订编号
+    */
+    @ApiModelProperty("作业本征订编号")
+    private Long wfExerciseBookId;
+    /**
+    * 作业本征订类型(xjr_dictionary_item[exercise_book_type])
+    */
+    @ApiModelProperty("作业本征订类型(xjr_dictionary_item[exercise_book_type])")
+    private String subscriptionType;
+    /**
+    * 规格型号
+    */
+    @ApiModelProperty("规格型号")
+    private String specificationsModels;
+    /**
+    * 估价(元)
+    */
+    @ApiModelProperty("估价(元)")
+    private BigDecimal appraisalPrice;
+    /**
+    * 征订数量
+    */
+    @ApiModelProperty("征订数量")
+    private Integer subscriptionNumber;
+
+
+}

+ 20 - 0
src/main/java/com/xjrsoft/module/textbook/mapper/TextbookIssueRecordMapper.java

@@ -0,0 +1,20 @@
+package com.xjrsoft.module.textbook.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.textbook.dto.TextbookIssueRecordPageDto;
+import com.xjrsoft.module.textbook.entity.TextbookIssueRecord;
+import com.xjrsoft.module.textbook.vo.TextbookIssueRecordPageVo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 教材出库记录
+* @Author szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Mapper
+public interface TextbookIssueRecordMapper extends MPJBaseMapper<TextbookIssueRecord> {
+    Page<TextbookIssueRecordPageVo> getPage(Page<TextbookIssueRecordPageDto> page, TextbookIssueRecordPageDto dto);
+}

+ 10 - 3
src/main/java/com/xjrsoft/module/textbook/mapper/TextbookMapper.java

@@ -5,13 +5,13 @@ import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.textbook.dto.TextbookPageDto;
 import com.xjrsoft.module.textbook.entity.Textbook;
 import com.xjrsoft.module.textbook.entity.TextbookClassRelation;
-import com.xjrsoft.module.textbook.vo.TextbookClassWarehouseListVo;
-import com.xjrsoft.module.textbook.vo.TextbookClassWarehouseVo;
+import com.xjrsoft.module.textbook.vo.TextbookWarehouseRecordListVo;
 import com.xjrsoft.module.textbook.vo.TextbookIssueRecordListVo;
 import com.xjrsoft.module.textbook.vo.TextbookPageVo;
 import com.xjrsoft.module.textbook.vo.TextbookSubscriptionClassVo;
 import com.xjrsoft.module.textbook.vo.TextbookSubscriptionRecordVo;
 import com.xjrsoft.module.textbook.vo.TextbookVo;
+import com.xjrsoft.module.textbook.vo.WfTextbookClaimListVo;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -61,7 +61,7 @@ public interface TextbookMapper extends MPJBaseMapper<Textbook> {
      * @param id
      * @return
      */
-    List<TextbookClassWarehouseListVo> warehouseList(Long id);
+    List<TextbookWarehouseRecordListVo> warehouseList(Long id);
 
 
     List<TextbookClassRelation> getClassRelation(Long id);
@@ -73,4 +73,11 @@ public interface TextbookMapper extends MPJBaseMapper<Textbook> {
      */
     List<TextbookIssueRecordListVo> issueList(Long id);
 
+    /**
+     * 领取记录
+     * @param id
+     * @return
+     */
+    List<WfTextbookClaimListVo> claimList(Long id);
+
 }

+ 34 - 0
src/main/java/com/xjrsoft/module/textbook/mapper/TextbookStudentClaimMapper.java

@@ -0,0 +1,34 @@
+package com.xjrsoft.module.textbook.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.textbook.dto.TeacherCheckByStuDto;
+import com.xjrsoft.module.textbook.dto.TeacherCheckStuClaimDto;
+import com.xjrsoft.module.textbook.dto.TextbookClaimStudentConfirmDto;
+import com.xjrsoft.module.textbook.entity.TextbookStudentClaim;
+import com.xjrsoft.module.textbook.vo.*;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @title: 学生教材认领记录
+* @Author szs
+* @Date: 2023-12-26
+* @Version 1.0
+*/
+@Mapper
+public interface TextbookStudentClaimMapper extends MPJBaseMapper<TextbookStudentClaim> {
+
+    List<TextbookClaimVO> getTextbookClaimList(@Param("dto")TextbookClaimStudentConfirmDto dto);
+
+    List<TeacherCheckByclassVo> getTeacherCheckByclassList(Long classId);
+
+    List<TextbookStudentSemesterVo> getStudentSemesterList(Long studentUserId);
+
+    List<TeacherCheckStuClaimVo> getTeacherCheckStuClaimList(@Param("dto")TeacherCheckStuClaimDto dto);
+
+    List<TeacherCheckByStuVo> getTeacherCheckByStuList(@Param("dto")TeacherCheckByStuDto dto);
+
+    List<TextbookClaimVO> getTextbookClaimVOList(Long classId, Long studentUserId);
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/textbook/mapper/TextbookWarehouseRecordMapper.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.textbook.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.textbook.dto.TextbookWarehouseRecordPageDto;
+import com.xjrsoft.module.textbook.entity.TextbookWarehouseRecord;
+import com.xjrsoft.module.textbook.vo.TextbookWarehouseRecordPageVo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 教材入库
+* @Author szs
+* @Date: 2023-12-26
+* @Version 1.0
+*/
+@Mapper
+public interface TextbookWarehouseRecordMapper extends MPJBaseMapper<TextbookWarehouseRecord> {
+    Page<TextbookWarehouseRecordPageVo> getPage(Page<TextbookWarehouseRecordPageDto> page, TextbookWarehouseRecordPageDto dto);
+}

+ 4 - 4
src/main/java/com/xjrsoft/module/textbook/mapper/TextbookClassWarehouseMapper.java → src/main/java/com/xjrsoft/module/textbook/mapper/WfExerciseBookItemMapper.java

@@ -2,16 +2,16 @@ package com.xjrsoft.module.textbook.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
-import com.xjrsoft.module.textbook.entity.TextbookClassWarehouse;
+import com.xjrsoft.module.textbook.entity.WfExerciseBookItem;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
-* @title: 教材入库
+* @title: 作业本征订项
 * @Author szs
-* @Date: 2023-12-26
+* @Date: 2023-12-27
 * @Version 1.0
 */
 @Mapper
-public interface TextbookClassWarehouseMapper extends MPJBaseMapper<TextbookClassWarehouse> {
+public interface WfExerciseBookItemMapper extends MPJBaseMapper<WfExerciseBookItem> {
 
 }

+ 17 - 0
src/main/java/com/xjrsoft/module/textbook/mapper/WfExerciseBookMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.textbook.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.textbook.entity.WfExerciseBook;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 作业本征订
+* @Author szs
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Mapper
+public interface WfExerciseBookMapper extends MPJBaseMapper<WfExerciseBook> {
+
+}

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor