提交代码

This commit is contained in:
zlwu committed 2025-08-15 23:01:07 +08:00
1 parent 7a4881592a
commit d6924b211f
16 files changed
+3857

No files matched your search

@@ -0,0 +1,114 @@
package org.dromara.xg.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.xg.domain.vo.XgHolidayStayVo;
import org.dromara.xg.domain.bo.XgHolidayStayBo;
import org.dromara.xg.domain.vo.StudentOptionVo;
import org.dromara.xg.domain.bo.StudentOptionBo;
import org.dromara.xg.service.IXgHolidayStayService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 假期留宿管理
*
* @author zlwu
* @date 2025-08-15
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/holidayStay/holidayStay")
public class XgHolidayStayController extends BaseController {
private final IXgHolidayStayService xgHolidayStayService;
/**
* 查询假期留宿管理列表
*/
@SaCheckPermission("holidayStay:holidayStay:list")
@GetMapping("/list")
public TableDataInfo<XgHolidayStayVo> list(XgHolidayStayBo bo, PageQuery pageQuery) {
return xgHolidayStayService.queryPageList(bo, pageQuery);
}
/**
* 导出假期留宿管理列表
*/
@SaCheckPermission("holidayStay:holidayStay:export")
@Log(title = "假期留宿管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XgHolidayStayBo bo, HttpServletResponse response) {
List<XgHolidayStayVo> list = xgHolidayStayService.queryList(bo);
ExcelUtil.exportExcel(list, "假期留宿管理", XgHolidayStayVo.class, response);
}
/**
* 获取假期留宿管理详细信息
*
* @param id 主键
*/
@SaCheckPermission("holidayStay:holidayStay:query")
@GetMapping("/{id}")
public R<XgHolidayStayVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
return R.ok(xgHolidayStayService.queryById(id));
}
/**
* 新增假期留宿管理
*/
@SaCheckPermission("holidayStay:holidayStay:add")
@Log(title = "假期留宿管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgHolidayStayBo bo) {
return toAjax(xgHolidayStayService.insertByBo(bo));
}
/**
* 修改假期留宿管理
*/
@SaCheckPermission("holidayStay:holidayStay:edit")
@Log(title = "假期留宿管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgHolidayStayBo bo) {
return toAjax(xgHolidayStayService.updateByBo(bo));
}
/**
* 删除假期留宿管理
*
* @param ids 主键串
*/
@SaCheckPermission("holidayStay:holidayStay:remove")
@Log(title = "假期留宿管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
return toAjax(xgHolidayStayService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 获取学生选择器选项列表(支持按学号、姓名检索)
*/
@SaCheckPermission("holidayStay:holidayStay:list")
@GetMapping("/studentOptions")
public TableDataInfo<StudentOptionVo> getStudentOptions(StudentOptionBo bo, PageQuery pageQuery) {
return xgHolidayStayService.getStudentOptions(bo, pageQuery);
}
}
@@ -0,0 +1,203 @@
package org.dromara.xg.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 假期留宿管理对象 xg_holiday_stay
*
* @author zlwu
* @date 2025-08-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xg_holiday_stay")
public class XgHolidayStay extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 删除标志(0代表存在 1代表删除)
*/
private Long deleted;
/**
* 学生ID,关联xg_student_msg.id
*/
private Long studentId;
/**
* 学生姓名
*/
private String studentName;
/**
* 学号
*/
private String studentNo;
/**
* 班级ID
*/
private Long classId;
/**
* 班级名称
*/
private String className;
/**
* 专业ID
*/
private Long majorId;
/**
* 专业名称
*/
private String majorName;
/**
* 学院ID
*/
private Long collegeId;
/**
* 学院名称
*/
private String collegeName;
/**
* 校区ID,关联xg_dorm_campus.id
*/
private Long campusId;
/**
* 校区名称
*/
private String campusName;
/**
* 宿舍区ID,关联xg_dorm_area.id
*/
private Long areaId;
/**
* 宿舍区名称
*/
private String areaName;
/**
* 宿舍楼ID,关联xg_dorm_building.id
*/
private Long buildingId;
/**
* 宿舍楼名称
*/
private String buildingName;
/**
* 房间ID,关联xg_dorm_room.id
*/
private Long roomId;
/**
* 房间名称
*/
private String roomName;
/**
* 床位ID,关联xg_dorm_bed.id
*/
private Long bedId;
/**
* 床位名称
*/
private String bedName;
/**
* 假期类型(寒假、暑假、春节假期、国庆假期等)
*/
private String holidayType;
/**
* 申请留宿开始日期
*/
private Date applyStartDate;
/**
* 申请留宿结束日期
*/
private Date applyEndDate;
/**
* 留宿原因(必填)
*/
private String stayReason;
/**
* 留宿原因类型(学习、实习、家庭困难、其他)
*/
private String stayReasonType;
/**
* 学生联系电话
*/
private String studentPhone;
/**
* 紧急联系人姓名
*/
private String emergencyContact;
/**
* 紧急联系人电话
*/
private String emergencyPhone;
/**
* 家长同意(0否 1是)
*/
private String parentConsent;
/**
* 附件OSS文件ID,多个用逗号分隔(申请材料、证明文件等)
*/
private String attachmentOssIds;
/**
* 扩展字段1
*/
private String extField1;
/**
* 扩展字段2
*/
private String extField2;
/**
* 扩展字段3
*/
private String extField3;
/**
* 备注信息
*/
private String remark;
}
@@ -0,0 +1,21 @@
package org.dromara.xg.domain.bo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
/**
* 学生选择器查询业务对象
*
* @author zlwu
* @date 2025-08-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class StudentOptionBo extends BaseEntity {
/**
* 搜索关键字(学号或姓名)
*/
private String keyword;
}
@@ -0,0 +1,213 @@
package org.dromara.xg.domain.bo;
import org.dromara.xg.domain.XgHolidayStay;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 假期留宿管理业务对象 xg_holiday_stay
*
* @author zlwu
* @date 2025-08-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XgHolidayStay.class, reverseConvertGenerate = false)
public class XgHolidayStayBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 删除标志(0代表存在 1代表删除)
*/
private Long deleted;
/**
* 学生ID,关联xg_student_msg.id
*/
@NotNull(message = "学生ID,关联xg_student_msg.id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long studentId;
/**
* 学生姓名
*/
@NotBlank(message = "学生姓名不能为空", groups = { AddGroup.class, EditGroup.class })
private String studentName;
/**
* 学号
*/
@NotBlank(message = "学号不能为空", groups = { AddGroup.class, EditGroup.class })
private String studentNo;
/**
* 班级ID
*/
private Long classId;
/**
* 班级名称
*/
private String className;
/**
* 专业ID
*/
private Long majorId;
/**
* 专业名称
*/
private String majorName;
/**
* 学院ID
*/
private Long collegeId;
/**
* 学院名称
*/
private String collegeName;
/**
* 校区ID,关联xg_dorm_campus.id
*/
private Long campusId;
/**
* 校区名称
*/
private String campusName;
/**
* 宿舍区ID,关联xg_dorm_area.id
*/
private Long areaId;
/**
* 宿舍区名称
*/
private String areaName;
/**
* 宿舍楼ID,关联xg_dorm_building.id
*/
private Long buildingId;
/**
* 宿舍楼名称
*/
private String buildingName;
/**
* 房间ID,关联xg_dorm_room.id
*/
private Long roomId;
/**
* 房间名称
*/
private String roomName;
/**
* 床位ID,关联xg_dorm_bed.id
*/
private Long bedId;
/**
* 床位名称
*/
private String bedName;
/**
* 假期类型(寒假、暑假、春节假期、国庆假期等)
*/
@NotBlank(message = "假期类型(寒假、暑假、春节假期、国庆假期等)不能为空", groups = { AddGroup.class, EditGroup.class })
private String holidayType;
/**
* 申请留宿开始日期
*/
@NotNull(message = "申请留宿开始日期不能为空", groups = { AddGroup.class, EditGroup.class })
private Date applyStartDate;
/**
* 申请留宿结束日期
*/
@NotNull(message = "申请留宿结束日期不能为空", groups = { AddGroup.class, EditGroup.class })
private Date applyEndDate;
/**
* 留宿原因(必填)
*/
@NotBlank(message = "留宿原因(必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private String stayReason;
/**
* 留宿原因类型(学习、实习、家庭困难、其他)
*/
private String stayReasonType;
/**
* 学生联系电话
*/
@NotBlank(message = "学生联系电话不能为空", groups = { AddGroup.class, EditGroup.class })
private String studentPhone;
/**
* 紧急联系人姓名
*/
@NotBlank(message = "紧急联系人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
private String emergencyContact;
/**
* 紧急联系人电话
*/
@NotBlank(message = "紧急联系人电话不能为空", groups = { AddGroup.class, EditGroup.class })
private String emergencyPhone;
/**
* 家长同意(0否 1是)
*/
@NotBlank(message = "家长同意(0否 1是)不能为空", groups = { AddGroup.class, EditGroup.class })
private String parentConsent;
/**
* 附件OSS文件ID,多个用逗号分隔(申请材料、证明文件等)
*/
private String attachmentOssIds;
/**
* 扩展字段1
*/
private String extField1;
/**
* 扩展字段2
*/
private String extField2;
/**
* 扩展字段3
*/
private String extField3;
/**
* 备注信息
*/
private String remark;
}
@@ -0,0 +1,156 @@
package org.dromara.xg.domain.vo;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 学生选择器选项视图对象
*
* @author zlwu
* @date 2025-08-15
*/
@Data
public class StudentOptionVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 学生ID
*/
private Long id;
/**
* 学号
*/
private String studentNo;
/**
* 学生姓名
*/
private String name;
/**
* 性别:0-男,1-女
*/
private String gender;
/**
* 学院ID
*/
private Long collegeId;
/**
* 学院名称
*/
private String collegeName;
/**
* 专业ID
*/
private Long majorId;
/**
* 专业名称
*/
private String majorName;
/**
* 班级ID
*/
private Long classId;
/**
* 班级名称
*/
private String className;
/**
* 学生联系电话
*/
private String phone;
/**
* 宿舍信息
*/
private DormInfo dormInfo;
/**
* 基础字段 - 创建者
*/
private Long createBy;
/**
* 基础字段 - 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 基础字段 - 更新者
*/
private Long updateBy;
/**
* 基础字段 - 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@Data
public static class DormInfo implements Serializable {
/**
* 校区ID
*/
private Long campusId;
/**
* 校区名称
*/
private String campusName;
/**
* 宿舍区ID
*/
private Long areaId;
/**
* 宿舍区名称
*/
private String areaName;
/**
* 宿舍楼ID
*/
private Long buildingId;
/**
* 宿舍楼名称
*/
private String buildingName;
/**
* 房间ID
*/
private Long roomId;
/**
* 房间名称
*/
private String roomName;
/**
* 床位ID
*/
private Long bedId;
/**
* 床位名称
*/
private String bedName;
}
}
@@ -0,0 +1,250 @@
package org.dromara.xg.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xg.domain.XgHolidayStay;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 假期留宿管理视图对象 xg_holiday_stay
*
* @author zlwu
* @date 2025-08-15
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XgHolidayStay.class)
public class XgHolidayStayVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 删除标志(0代表存在 1代表删除)
*/
@ExcelProperty(value = "删除标志", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=代表存在,1=代表删除")
private Long deleted;
/**
* 学生ID,关联xg_student_msg.id
*/
@ExcelProperty(value = "学生ID,关联xg_student_msg.id")
private Long studentId;
/**
* 学生姓名
*/
@ExcelProperty(value = "学生姓名")
private String studentName;
/**
* 学号
*/
@ExcelProperty(value = "学号")
private String studentNo;
/**
* 班级ID
*/
@ExcelProperty(value = "班级ID")
private Long classId;
/**
* 班级名称
*/
@ExcelProperty(value = "班级名称")
private String className;
/**
* 专业ID
*/
@ExcelProperty(value = "专业ID")
private Long majorId;
/**
* 专业名称
*/
@ExcelProperty(value = "专业名称")
private String majorName;
/**
* 学院ID
*/
@ExcelProperty(value = "学院ID")
private Long collegeId;
/**
* 学院名称
*/
@ExcelProperty(value = "学院名称")
private String collegeName;
/**
* 校区ID,关联xg_dorm_campus.id
*/
@ExcelProperty(value = "校区ID,关联xg_dorm_campus.id")
private Long campusId;
/**
* 校区名称
*/
@ExcelProperty(value = "校区名称")
private String campusName;
/**
* 宿舍区ID,关联xg_dorm_area.id
*/
@ExcelProperty(value = "宿舍区ID,关联xg_dorm_area.id")
private Long areaId;
/**
* 宿舍区名称
*/
@ExcelProperty(value = "宿舍区名称")
private String areaName;
/**
* 宿舍楼ID,关联xg_dorm_building.id
*/
@ExcelProperty(value = "宿舍楼ID,关联xg_dorm_building.id")
private Long buildingId;
/**
* 宿舍楼名称
*/
@ExcelProperty(value = "宿舍楼名称")
private String buildingName;
/**
* 房间ID,关联xg_dorm_room.id
*/
@ExcelProperty(value = "房间ID,关联xg_dorm_room.id")
private Long roomId;
/**
* 房间名称
*/
@ExcelProperty(value = "房间名称")
private String roomName;
/**
* 床位ID,关联xg_dorm_bed.id
*/
@ExcelProperty(value = "床位ID,关联xg_dorm_bed.id")
private Long bedId;
/**
* 床位名称
*/
@ExcelProperty(value = "床位名称")
private String bedName;
/**
* 假期类型(寒假、暑假、春节假期、国庆假期等)
*/
@ExcelProperty(value = "假期类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xg_holiday_type")
private String holidayType;
/**
* 申请留宿开始日期
*/
@ExcelProperty(value = "申请留宿开始日期")
private Date applyStartDate;
/**
* 申请留宿结束日期
*/
@ExcelProperty(value = "申请留宿结束日期")
private Date applyEndDate;
/**
* 留宿原因(必填)
*/
@ExcelProperty(value = "留宿原因", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "必=填")
private String stayReason;
/**
* 留宿原因类型(学习、实习、家庭困难、其他)
*/
@ExcelProperty(value = "留宿原因类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xg_stay_reason_type")
private String stayReasonType;
/**
* 学生联系电话
*/
@ExcelProperty(value = "学生联系电话")
private String studentPhone;
/**
* 紧急联系人姓名
*/
@ExcelProperty(value = "紧急联系人姓名")
private String emergencyContact;
/**
* 紧急联系人电话
*/
@ExcelProperty(value = "紧急联系人电话")
private String emergencyPhone;
/**
* 家长同意(0否 1是)
*/
@ExcelProperty(value = "家长同意", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sys_yesno")
private String parentConsent;
/**
* 附件OSS文件ID,多个用逗号分隔(申请材料、证明文件等)
*/
@ExcelProperty(value = "附件OSS文件ID,多个用逗号分隔", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "申=请材料、证明文件等")
private String attachmentOssIds;
/**
* 扩展字段1
*/
@ExcelProperty(value = "扩展字段1")
private String extField1;
/**
* 扩展字段2
*/
@ExcelProperty(value = "扩展字段2")
private String extField2;
/**
* 扩展字段3
*/
@ExcelProperty(value = "扩展字段3")
private String extField3;
/**
* 备注信息
*/
@ExcelProperty(value = "备注信息")
private String remark;
}
@@ -0,0 +1,37 @@
package org.dromara.xg.mapper;
import org.dromara.xg.domain.XgHolidayStay;
import org.dromara.xg.domain.vo.XgHolidayStayVo;
import org.dromara.xg.domain.vo.StudentOptionVo;
import org.dromara.xg.domain.bo.StudentOptionBo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
/**
* 假期留宿管理Mapper接口
*
* @author zlwu
* @date 2025-08-15
*/
public interface XgHolidayStayMapper extends BaseMapperPlus<XgHolidayStay, XgHolidayStayVo> {
/**
* 查询学生选择器选项列表(支持按学号、姓名检索)
*
* @param page 分页参数
* @param bo 查询条件
* @return 学生选项列表
*/
Page<StudentOptionVo> selectStudentOptions(IPage<?> page, @Param("bo") StudentOptionBo bo);
/**
* 测试查询:简化版本,只查询学生基本信息
*
* @param page 分页参数
* @param bo 查询条件
* @return 学生选项列表
*/
Page<StudentOptionVo> selectStudentOptionsSimple(IPage<?> page, @Param("bo") StudentOptionBo bo);
}
@@ -0,0 +1,80 @@
package org.dromara.xg.service;
import org.dromara.xg.domain.vo.XgHolidayStayVo;
import org.dromara.xg.domain.bo.XgHolidayStayBo;
import org.dromara.xg.domain.vo.StudentOptionVo;
import org.dromara.xg.domain.bo.StudentOptionBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 假期留宿管理Service接口
*
* @author zlwu
* @date 2025-08-15
*/
public interface IXgHolidayStayService {
/**
* 查询假期留宿管理
*
* @param id 主键
* @return 假期留宿管理
*/
XgHolidayStayVo queryById(Long id);
/**
* 分页查询假期留宿管理列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 假期留宿管理分页列表
*/
TableDataInfo<XgHolidayStayVo> queryPageList(XgHolidayStayBo bo, PageQuery pageQuery);
/**
* 查询符合条件的假期留宿管理列表
*
* @param bo 查询条件
* @return 假期留宿管理列表
*/
List<XgHolidayStayVo> queryList(XgHolidayStayBo bo);
/**
* 新增假期留宿管理
*
* @param bo 假期留宿管理
* @return 是否新增成功
*/
Boolean insertByBo(XgHolidayStayBo bo);
/**
* 修改假期留宿管理
*
* @param bo 假期留宿管理
* @return 是否修改成功
*/
Boolean updateByBo(XgHolidayStayBo bo);
/**
* 校验并批量删除假期留宿管理信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 获取学生选择器选项列表(支持按学号、姓名检索)
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 学生选项分页列表
*/
TableDataInfo<StudentOptionVo> getStudentOptions(StudentOptionBo bo, PageQuery pageQuery);
}
@@ -0,0 +1,183 @@
package org.dromara.xg.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.xg.domain.bo.XgHolidayStayBo;
import org.dromara.xg.domain.vo.XgHolidayStayVo;
import org.dromara.xg.domain.XgHolidayStay;
import org.dromara.xg.domain.bo.StudentOptionBo;
import org.dromara.xg.domain.vo.StudentOptionVo;
import org.dromara.xg.mapper.XgHolidayStayMapper;
import org.dromara.xg.service.IXgHolidayStayService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 假期留宿管理Service业务层处理
*
* @author zlwu
* @date 2025-08-15
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class XgHolidayStayServiceImpl implements IXgHolidayStayService {
private final XgHolidayStayMapper baseMapper;
/**
* 查询假期留宿管理
*
* @param id 主键
* @return 假期留宿管理
*/
@Override
public XgHolidayStayVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
/**
* 分页查询假期留宿管理列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 假期留宿管理分页列表
*/
@Override
public TableDataInfo<XgHolidayStayVo> queryPageList(XgHolidayStayBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XgHolidayStay> lqw = buildQueryWrapper(bo);
Page<XgHolidayStayVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的假期留宿管理列表
*
* @param bo 查询条件
* @return 假期留宿管理列表
*/
@Override
public List<XgHolidayStayVo> queryList(XgHolidayStayBo bo) {
LambdaQueryWrapper<XgHolidayStay> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XgHolidayStay> buildQueryWrapper(XgHolidayStayBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XgHolidayStay> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(XgHolidayStay::getId);
lqw.eq(bo.getDeleted() != null, XgHolidayStay::getDeleted, bo.getDeleted());
lqw.eq(bo.getStudentId() != null, XgHolidayStay::getStudentId, bo.getStudentId());
lqw.like(StringUtils.isNotBlank(bo.getStudentName()), XgHolidayStay::getStudentName, bo.getStudentName());
lqw.like(StringUtils.isNotBlank(bo.getStudentNo()), XgHolidayStay::getStudentNo, bo.getStudentNo());
lqw.eq(bo.getClassId() != null, XgHolidayStay::getClassId, bo.getClassId());
lqw.like(StringUtils.isNotBlank(bo.getClassName()), XgHolidayStay::getClassName, bo.getClassName());
lqw.eq(bo.getMajorId() != null, XgHolidayStay::getMajorId, bo.getMajorId());
lqw.like(StringUtils.isNotBlank(bo.getMajorName()), XgHolidayStay::getMajorName, bo.getMajorName());
lqw.eq(bo.getCollegeId() != null, XgHolidayStay::getCollegeId, bo.getCollegeId());
lqw.like(StringUtils.isNotBlank(bo.getCollegeName()), XgHolidayStay::getCollegeName, bo.getCollegeName());
lqw.eq(bo.getCampusId() != null, XgHolidayStay::getCampusId, bo.getCampusId());
lqw.like(StringUtils.isNotBlank(bo.getCampusName()), XgHolidayStay::getCampusName, bo.getCampusName());
lqw.eq(bo.getAreaId() != null, XgHolidayStay::getAreaId, bo.getAreaId());
lqw.like(StringUtils.isNotBlank(bo.getAreaName()), XgHolidayStay::getAreaName, bo.getAreaName());
lqw.eq(bo.getBuildingId() != null, XgHolidayStay::getBuildingId, bo.getBuildingId());
lqw.like(StringUtils.isNotBlank(bo.getBuildingName()), XgHolidayStay::getBuildingName, bo.getBuildingName());
lqw.eq(bo.getRoomId() != null, XgHolidayStay::getRoomId, bo.getRoomId());
lqw.like(StringUtils.isNotBlank(bo.getRoomName()), XgHolidayStay::getRoomName, bo.getRoomName());
lqw.eq(bo.getBedId() != null, XgHolidayStay::getBedId, bo.getBedId());
lqw.like(StringUtils.isNotBlank(bo.getBedName()), XgHolidayStay::getBedName, bo.getBedName());
lqw.eq(StringUtils.isNotBlank(bo.getHolidayType()), XgHolidayStay::getHolidayType, bo.getHolidayType());
lqw.ge(bo.getApplyStartDate() != null, XgHolidayStay::getApplyStartDate, bo.getApplyStartDate());
lqw.le(bo.getApplyEndDate() != null, XgHolidayStay::getApplyEndDate, bo.getApplyEndDate());
lqw.like(StringUtils.isNotBlank(bo.getStayReason()), XgHolidayStay::getStayReason, bo.getStayReason());
lqw.eq(StringUtils.isNotBlank(bo.getStayReasonType()), XgHolidayStay::getStayReasonType,
bo.getStayReasonType());
lqw.like(StringUtils.isNotBlank(bo.getStudentPhone()), XgHolidayStay::getStudentPhone, bo.getStudentPhone());
lqw.like(StringUtils.isNotBlank(bo.getEmergencyContact()), XgHolidayStay::getEmergencyContact,
bo.getEmergencyContact());
lqw.like(StringUtils.isNotBlank(bo.getEmergencyPhone()), XgHolidayStay::getEmergencyPhone,
bo.getEmergencyPhone());
lqw.eq(StringUtils.isNotBlank(bo.getParentConsent()), XgHolidayStay::getParentConsent, bo.getParentConsent());
lqw.like(StringUtils.isNotBlank(bo.getAttachmentOssIds()), XgHolidayStay::getAttachmentOssIds,
bo.getAttachmentOssIds());
lqw.eq(StringUtils.isNotBlank(bo.getExtField1()), XgHolidayStay::getExtField1, bo.getExtField1());
lqw.eq(StringUtils.isNotBlank(bo.getExtField2()), XgHolidayStay::getExtField2, bo.getExtField2());
lqw.eq(StringUtils.isNotBlank(bo.getExtField3()), XgHolidayStay::getExtField3, bo.getExtField3());
return lqw;
}
/**
* 新增假期留宿管理
*
* @param bo 假期留宿管理
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XgHolidayStayBo bo) {
XgHolidayStay add = MapstructUtils.convert(bo, XgHolidayStay.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改假期留宿管理
*
* @param bo 假期留宿管理
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XgHolidayStayBo bo) {
XgHolidayStay update = MapstructUtils.convert(bo, XgHolidayStay.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XgHolidayStay entity) {
// TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除假期留宿管理信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
// TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取学生选择器选项列表(支持按学号、姓名检索)
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 学生选项分页列表
*/
@Override
public TableDataInfo<StudentOptionVo> getStudentOptions(StudentOptionBo bo, PageQuery pageQuery) {
Page<StudentOptionVo> result = baseMapper.selectStudentOptions(pageQuery.build(), bo);
return TableDataInfo.build(result);
}
}
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xg.mapper.XgHolidayStayMapper">
<!-- 学生选项查询结果映射 -->
<resultMap id="StudentOptionResult" type="org.dromara.xg.domain.vo.StudentOptionVo">
<id property="id" column="id"/>
<result property="studentNo" column="student_no"/>
<result property="name" column="name"/>
<result property="gender" column="gender"/>
<result property="collegeId" column="college_id"/>
<result property="collegeName" column="college_name"/>
<result property="majorId" column="major_id"/>
<result property="majorName" column="major_name"/>
<result property="classId" column="class_id"/>
<result property="className" column="class_name"/>
<result property="phone" column="phone"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<association property="dormInfo" javaType="org.dromara.xg.domain.vo.StudentOptionVo$DormInfo">
<result property="campusId" column="campus_id"/>
<result property="campusName" column="campus_name"/>
<result property="areaId" column="area_id"/>
<result property="areaName" column="area_name"/>
<result property="buildingId" column="building_id"/>
<result property="buildingName" column="building_name"/>
<result property="roomId" column="room_id"/>
<result property="roomName" column="room_name"/>
<result property="bedId" column="bed_id"/>
<result property="bedName" column="bed_name"/>
</association>
</resultMap>
<!-- 查询学生选择器选项列表 -->
<select id="selectStudentOptions" resultMap="StudentOptionResult">
SELECT
s.id,
s.student_no,
s.name,
s.gender,
s.college_id,
s.college_name,
s.major_id,
s.major_name,
s.class_id,
s.class_name,
s.phone,
s.create_by,
s.create_time,
s.update_by,
s.update_time,
COALESCE(dc.id, NULL) as campus_id,
COALESCE(dc.campus_name, NULL) as campus_name,
COALESCE(da.id, NULL) as area_id,
COALESCE(da.area_name, NULL) as area_name,
COALESCE(db.id, NULL) as building_id,
COALESCE(db.building_name, NULL) as building_name,
COALESCE(dr.id, NULL) as room_id,
COALESCE(dr.room_name, NULL) as room_name,
COALESCE(bed.id, NULL) as bed_id,
COALESCE(bed.bed_name, NULL) as bed_name
FROM xg_student_msg s
LEFT JOIN xg_dorm_bed_student dbs ON s.id = dbs.student_id AND dbs.deleted = 0
LEFT JOIN xg_dorm_bed bed ON dbs.bed_id = bed.id AND bed.deleted = 0
LEFT JOIN xg_dorm_room dr ON bed.room_id = dr.id AND dr.deleted = 0
LEFT JOIN xg_dorm_building db ON dr.building_id = db.id AND db.deleted = 0
LEFT JOIN xg_dorm_area da ON db.area_id = da.id AND da.deleted = 0
LEFT JOIN xg_dorm_campus dc ON da.campus_id = dc.id AND dc.deleted = 0
WHERE s.deleted = 0
AND s.student_status = '1'
<if test="bo.keyword != null and bo.keyword != ''">
AND (s.student_no LIKE CONCAT('%', #{bo.keyword}, '%')
OR s.name LIKE CONCAT('%', #{bo.keyword}, '%'))
</if>
ORDER BY s.student_no ASC
</select>
</mapper>
@@ -0,0 +1,105 @@
-- ----------------------------
-- 假期留宿管理表
-- 模块:学工管理-宿舍管理
-- 功能:管理学生假期留宿申请、审批、入住等全流程
-- 作者:系统设计
-- 创建时间:2025-01-27
-- ----------------------------
DROP TABLE IF EXISTS `xg_holiday_stay`;
CREATE TABLE `xg_holiday_stay` (
-- =============基础字段(强制性)=============
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- =============业务关联字段=============
`student_id` bigint(20) NOT NULL COMMENT '学生ID,关联xg_student_msg.id',
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
`student_no` varchar(20) NOT NULL COMMENT '学号',
`class_id` bigint(20) DEFAULT NULL COMMENT '班级ID',
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
`major_id` bigint(20) DEFAULT NULL COMMENT '专业ID',
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
`college_id` bigint(20) DEFAULT NULL COMMENT '学院ID',
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
-- =============宿舍信息字段=============
`campus_id` bigint(20) DEFAULT NULL COMMENT '校区ID,关联xg_dorm_campus.id',
`campus_name` varchar(100) DEFAULT NULL COMMENT '校区名称',
`area_id` bigint(20) DEFAULT NULL COMMENT '宿舍区ID,关联xg_dorm_area.id',
`area_name` varchar(100) DEFAULT NULL COMMENT '宿舍区名称',
`building_id` bigint(20) DEFAULT NULL COMMENT '宿舍楼ID,关联xg_dorm_building.id',
`building_name` varchar(100) DEFAULT NULL COMMENT '宿舍楼名称',
`room_id` bigint(20) DEFAULT NULL COMMENT '房间ID,关联xg_dorm_room.id',
`room_name` varchar(100) DEFAULT NULL COMMENT '房间名称',
`bed_id` bigint(20) DEFAULT NULL COMMENT '床位ID,关联xg_dorm_bed.id',
`bed_name` varchar(100) DEFAULT NULL COMMENT '床位名称',
-- =============申请信息字段=============
`holiday_type` varchar(50) NOT NULL COMMENT '假期类型(寒假、暑假、春节假期、国庆假期等)',
`apply_start_date` date NOT NULL COMMENT '申请留宿开始日期',
`apply_end_date` date NOT NULL COMMENT '申请留宿结束日期',
`stay_reason` text NOT NULL COMMENT '留宿原因(必填)',
`stay_reason_type` varchar(20) DEFAULT NULL COMMENT '留宿原因类型(学习、实习、家庭困难、其他)',
-- =============联系信息字段=============
`student_phone` varchar(20) NOT NULL COMMENT '学生联系电话',
`emergency_contact` varchar(50) NOT NULL COMMENT '紧急联系人姓名',
`emergency_phone` varchar(20) NOT NULL COMMENT '紧急联系人电话',
`parent_consent` char(1) NOT NULL DEFAULT '1' COMMENT '家长同意(0否 1是)',
-- =============附件字段=============
`attachment_oss_ids` varchar(1000) DEFAULT NULL COMMENT '附件OSS文件ID,多个用逗号分隔(申请材料、证明文件等)',
-- =============扩展字段=============
`ext_field1` varchar(200) DEFAULT NULL COMMENT '扩展字段1',
`ext_field2` varchar(200) DEFAULT NULL COMMENT '扩展字段2',
`ext_field3` varchar(500) DEFAULT NULL COMMENT '扩展字段3',
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
-- =============索引定义=============
PRIMARY KEY (`id`) USING BTREE,
-- 基础索引(必须)
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_create_time` (`create_time`),
KEY `idx_tenant_deleted` (`tenant_id`, `deleted`),
-- 业务索引
KEY `idx_student_id` (`student_id`),
KEY `idx_student_no` (`student_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='假期留宿管理表';
-- =============表说明=============
/*
表功能说明:
1. 支持学生假期留宿申请的全流程管理
2. 记录申请信息、管理员处理信息、实际入住信息
3. 支持费用管理和缴费状态跟踪
4. 关联宿舍管理相关表(校区、宿舍区、宿舍楼、房间、床位)
5. 支持附件上传和扩展字段
6. 遵循项目数据库设计规范(强制性基础字段、雪花ID、逻辑删除)
状态说明:
- 0:申请中 - 学生提交申请,等待管理员处理
- 1:已安排 - 管理员已安排宿舍,可以入住
- 2:已取消 - 申请被取消(管理员取消或学生取消)
- 3:已入住 - 学生已办理入住手续
- 4:已退宿 - 学生已办理退宿手续
使用场景:
- 寒假、暑假期间学生留宿申请和管理
- 春节、国庆等长假期间住宿管理
- 宿舍管理员直接安排和管理假期留宿学生
- 留宿费用收取和管理
- 安全管理和紧急联系人管理
- 简化流程,提高管理效率
*/
@@ -0,0 +1,40 @@
-- ----------------------------
-- 假期留宿管理相关字典数据
-- 模块:学工管理-宿舍管理
-- 功能:为假期留宿管理提供字典数据支持
-- 创建时间:2025-01-27
-- ----------------------------
-- =============假期类型字典=============
-- 1. 假期类型字典类型
INSERT INTO `sys_dict_type` (`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (1700000001, '000000', '假期类型', 'xg_holiday_type', 1, now(), 1, now(), '学生假期留宿申请中的假期类型选项');
-- 2. 假期类型字典数据
INSERT INTO `sys_dict_data` (`dict_code`, `tenant_id`, `sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES
(1700000001, '000000', 1, '寒假', 'winter_vacation', 'xg_holiday_type', '', 'primary', 'N', 1, now(), 1, now(), '寒假期间留宿'),
(1700000002, '000000', 2, '暑假', 'summer_vacation', 'xg_holiday_type', '', 'success', 'N', 1, now(), 1, now(), '暑假期间留宿'),
(1700000003, '000000', 3, '春节假期', 'spring_festival', 'xg_holiday_type', '', 'warning', 'N', 1, now(), 1, now(), '春节长假期间留宿'),
(1700000004, '000000', 4, '国庆假期', 'national_day', 'xg_holiday_type', '', 'info', 'N', 1, now(), 1, now(), '国庆长假期间留宿'),
(1700000005, '000000', 5, '五一假期', 'labor_day', 'xg_holiday_type', '', 'default', 'N', 1, now(), 1, now(), '五一假期留宿'),
(1700000006, '000000', 6, '清明假期', 'tomb_sweeping_day', 'xg_holiday_type', '', 'default', 'N', 1, now(), 1, now(), '清明假期留宿'),
(1700000007, '000000', 7, '端午假期', 'dragon_boat_festival', 'xg_holiday_type', '', 'default', 'N', 1, now(), 1, now(), '端午假期留宿'),
(1700000008, '000000', 8, '中秋假期', 'mid_autumn_festival', 'xg_holiday_type', '', 'default', 'N', 1, now(), 1, now(), '中秋假期留宿'),
(1700000009, '000000', 9, '其他假期', 'other_holiday', 'xg_holiday_type', '', 'default', 'N', 1, now(), 1, now(), '其他类型假期留宿');
-- =============留宿原因类型字典=============
-- 1. 留宿原因类型字典类型
INSERT INTO `sys_dict_type` (`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (1700000002, '000000', '留宿原因类型', 'xg_stay_reason_type', 1, now(), 1, now(), '学生假期留宿的原因类型分类');
-- 2. 留宿原因类型字典数据
INSERT INTO `sys_dict_data` (`dict_code`, `tenant_id`, `sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES
(1700000011, '000000', 1, '学习研究', 'study', 'xg_stay_reason_type', '', 'primary', 'Y', 1, now(), 1, now(), '因学习、科研等需要留宿'),
(1700000012, '000000', 2, '实习工作', 'internship', 'xg_stay_reason_type', '', 'success', 'N', 1, now(), 1, now(), '因实习、兼职工作等需要留宿'),
(1700000013, '000000', 3, '家庭困难', 'family_difficulty', 'xg_stay_reason_type', '', 'warning', 'N', 1, now(), 1, now(), '因家庭经济困难无法回家'),
(1700000014, '000000', 4, '路程遥远', 'long_distance', 'xg_stay_reason_type', '', 'info', 'N', 1, now(), 1, now(), '因家距离学校较远,回家不便'),
(1700000015, '000000', 5, '考试准备', 'exam_preparation', 'xg_stay_reason_type', '', 'primary', 'N', 1, now(), 1, now(), '因准备各类考试需要留宿'),
(1700000016, '000000', 6, '项目开发', 'project_development', 'xg_stay_reason_type', '', 'success', 'N', 1, now(), 1, now(), '因参与项目开发需要留宿'),
(1700000017, '000000', 7, '社会实践', 'social_practice', 'xg_stay_reason_type', '', 'info', 'N', 1, now(), 1, now(), '因参与社会实践活动需要留宿'),
(1700000018, '000000', 8, '身体原因', 'health_reason', 'xg_stay_reason_type', '', 'warning', 'N', 1, now(), 1, now(), '因身体健康原因无法回家'),
(1700000019, '000000', 9, '其他原因', 'other', 'xg_stay_reason_type', '', 'default', 'N', 1, now(), 1, now(), '其他特殊原因');
@@ -0,0 +1,259 @@
-- ----------------------------
-- 假期留宿管理表示例数据(简化流程版)
-- 模块:学工管理-宿舍管理
-- 功能:提供假期留宿管理的测试和演示数据
-- 创建时间:2025-01-27
-- 更新时间:2025-01-27 - 简化流程,移除审批环节
-- 注意:本文件仅用于开发测试,生产环境请勿执行
-- ----------------------------
-- =============示例数据说明=============
/*
示例数据涵盖以下简化后的流程场景:
1. 申请中 - 学生刚提交的申请
2. 已安排 - 管理员已安排宿舍
3. 已取消 - 申请被取消
4. 已入住 - 正在留宿中
5. 已退宿 - 完成留宿流程
涵盖多种假期类型和留宿原因,提供完整的业务场景测试数据
新流程:学生申请 → 管理员直接安排 → 入住 → 退宿
*/
-- 清理现有示例数据(开发环境)
-- DELETE FROM xg_holiday_stay WHERE tenant_id = '000000' AND remark LIKE '%示例数据%';
-- =============示例数据1:申请中的寒假留宿申请=============
INSERT INTO `xg_holiday_stay` (
`id`, `tenant_id`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`,
`student_id`, `student_name`, `student_no`, `class_id`, `class_name`, `major_id`, `major_name`, `college_id`, `college_name`,
`holiday_type`, `apply_start_date`, `apply_end_date`, `stay_duration`, `stay_reason`, `stay_reason_type`,
`student_phone`, `emergency_contact`, `emergency_phone`, `emergency_relation`, `parent_consent`,
`status`, `safety_commitment`, `rule_commitment`,
`accommodation_fee`, `water_fee`, `electricity_fee`, `total_fee`, `payment_status`,
`remark`
) VALUES (
1800000001, '000000', 103, 2001, now(), 2001, now(), 0,
2100000001, '张三', '2021001001', 2200000001, '计算机科学与技术2021级1班', 2300000001, '计算机科学与技术', 2400000001, '信息工程学院',
'winter_vacation', '2025-01-25', '2025-02-20', 26, '需要准备研究生入学考试,寒假期间需要在图书馆学习', 'exam_preparation',
'13812345001', '张父', '13812345002', 'father', '1',
'0', '1', '1',
200.00, 50.00, 100.00, 350.00, '0',
'示例数据 - 申请中的寒假留宿申请'
);
-- =============示例数据2:已安排的暑假留宿申请=============
INSERT INTO `xg_holiday_stay` (
`id`, `tenant_id`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`,
`student_id`, `student_name`, `student_no`, `class_id`, `class_name`, `major_id`, `major_name`, `college_id`, `college_name`,
`campus_id`, `campus_name`, `area_id`, `area_name`, `building_id`, `building_name`, `room_id`, `room_name`, `bed_id`, `bed_name`,
`holiday_type`, `apply_start_date`, `apply_end_date`, `stay_duration`, `stay_reason`, `stay_reason_type`,
`student_phone`, `emergency_contact`, `emergency_phone`, `emergency_relation`, `parent_consent`,
`status`, `handle_by`, `handle_name`, `handle_time`, `handle_remark`,
`safety_commitment`, `rule_commitment`,
`manager_id`, `manager_name`,
`accommodation_fee`, `water_fee`, `electricity_fee`, `total_fee`, `payment_status`,
`remark`
) VALUES (
1800000002, '000000', 103, 2001, now(), 2001, now(), 0,
2100000002, '李四', '2021001002', 2200000002, '软件工程2021级1班', 2300000002, '软件工程', 2400000001, '信息工程学院',
3100000001, '主校区', 3200000001, '学生宿舍区A区', 3300000001, 'A1栋', 3400000002, 'A1-102', 3500000002, 'A1-102-1',
'summer_vacation', '2024-07-15', '2024-08-25', 41, '参与导师的科研项目开发,需要在暑假期间继续在实验室工作', 'project_development',
'13812345003', '李母', '13812345004', 'mother', '1',
'1', 4001, '王宿管', '2024-07-10 14:30:00', '科研需要,已安排A1-102床位,请及时缴费',
'1', '1',
4100000001, '王宿管',
300.00, 80.00, 150.00, 530.00, '1',
'示例数据 - 已安排的暑假留宿申请'
);
-- =============示例数据3:已取消的国庆留宿申请=============
INSERT INTO `xg_holiday_stay` (
`id`, `tenant_id`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`,
`student_id`, `student_name`, `student_no`, `class_id`, `class_name`, `major_id`, `major_name`, `college_id`, `college_name`,
`holiday_type`, `apply_start_date`, `apply_end_date`, `stay_duration`, `stay_reason`, `stay_reason_type`,
`student_phone`, `emergency_contact`, `emergency_phone`, `emergency_relation`, `parent_consent`,
`status`, `handle_by`, `handle_name`, `handle_time`, `handle_remark`,
`safety_commitment`, `rule_commitment`,
`remark`
) VALUES (
1800000003, '000000', 103, 2001, now(), 2001, now(), 0,
2100000003, '王五', '2021001003', 2200000003, '电子信息工程2021级1班', 2300000003, '电子信息工程', 2400000001, '信息工程学院',
'national_day', '2024-10-01', '2024-10-07', 7, '想在国庆假期打游戏和追剧,不想回家', 'other',
'13812345005', '王父', '13812345006', 'father', '1',
'2', 4001, '王宿管', '2024-09-28 16:45:00', '申请理由不充分,国庆假期建议回家与家人团聚',
'1', '1',
'示例数据 - 已取消的国庆留宿申请'
);
-- =============示例数据4:学生取消的春节留宿申请=============
INSERT INTO `xg_holiday_stay` (
`id`, `tenant_id`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`,
`student_id`, `student_name`, `student_no`, `class_id`, `class_name`, `major_id`, `major_name`, `college_id`, `college_name`,
`holiday_type`, `apply_start_date`, `apply_end_date`, `stay_duration`, `stay_reason`, `stay_reason_type`,
`student_phone`, `emergency_contact`, `emergency_phone`, `emergency_relation`, `parent_consent`,
`status`, `handle_by`, `handle_name`, `handle_time`, `handle_remark`,
`safety_commitment`, `rule_commitment`,
`remark`
) VALUES (
1800000004, '000000', 103, 2001, now(), 2001, now(), 0,
2100000004, '赵六', '2021001004', 2200000004, '网络工程2021级1班', 2300000004, '网络工程', 2400000001, '信息工程学院',
'spring_festival', '2025-01-28', '2025-02-15', 18, '家庭困难,路费较贵,春节期间计划留校', 'family_difficulty',
'13812345007', '赵母', '13812345008', 'mother', '1',
'2', 2001, '赵六', '2025-01-26 10:00:00', '学生主动取消,已联系到回家车票',
'1', '1',
'示例数据 - 学生主动取消的春节留宿申请'
);
-- =============示例数据5:已入住的寒假留宿(当前进行中)=============
INSERT INTO `xg_holiday_stay` (
`id`, `tenant_id`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`,
`student_id`, `student_name`, `student_no`, `class_id`, `class_name`, `major_id`, `major_name`, `college_id`, `college_name`,
`campus_id`, `campus_name`, `area_id`, `area_name`, `building_id`, `building_name`, `room_id`, `room_name`, `bed_id`, `bed_name`,
`holiday_type`, `apply_start_date`, `apply_end_date`, `stay_duration`, `stay_reason`, `stay_reason_type`,
`student_phone`, `emergency_contact`, `emergency_phone`, `emergency_relation`, `parent_consent`,
`status`, `handle_by`, `handle_name`, `handle_time`, `handle_remark`,
`actual_checkin_date`, `checkin_by`, `checkin_by_name`,
`safety_commitment`, `rule_commitment`,
`manager_id`, `manager_name`,
`accommodation_fee`, `water_fee`, `electricity_fee`, `total_fee`, `payment_status`, `payment_time`,
`remark`
) VALUES (
1800000005, '000000', 103, 2001, now(), 2001, now(), 0,
2100000005, '钱七', '2021001005', 2200000005, '信息安全2021级1班', 2300000005, '信息安全', 2400000001, '信息工程学院',
3100000001, '主校区', 3200000001, '学生宿舍区A区', 3300000001, 'A1栋', 3400000003, 'A1-103', 3500000003, 'A1-103-1',
'winter_vacation', '2025-01-20', '2025-02-25', 36, '参与学校实习项目,需要每天到实验室工作', 'internship',
'13812345009', '钱父', '13812345010', 'father', '1',
'3', 4001, '王宿管', '2025-01-15 10:20:00', '实习项目重要,已安排A1-103床位',
'2025-01-20', 4002, '李宿管',
'1', '1',
4100000001, '王宿管',
400.00, 100.00, 200.00, 700.00, '1', '2025-01-18 15:30:00',
'示例数据 - 已入住的寒假留宿(当前进行中)'
);
-- =============示例数据6:已完成的暑假留宿(已退宿)=============
INSERT INTO `xg_holiday_stay` (
`id`, `tenant_id`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`,
`student_id`, `student_name`, `student_no`, `class_id`, `class_name`, `major_id`, `major_name`, `college_id`, `college_name`,
`campus_id`, `campus_name`, `area_id`, `area_name`, `building_id`, `building_name`, `room_id`, `room_name`, `bed_id`, `bed_name`,
`holiday_type`, `apply_start_date`, `apply_end_date`, `stay_duration`, `stay_reason`, `stay_reason_type`,
`student_phone`, `emergency_contact`, `emergency_phone`, `emergency_relation`, `parent_consent`,
`status`, `handle_by`, `handle_name`, `handle_time`, `handle_remark`,
`actual_checkin_date`, `actual_checkout_date`, `actual_stay_duration`,
`checkin_by`, `checkin_by_name`, `checkout_by`, `checkout_by_name`,
`safety_commitment`, `rule_commitment`,
`manager_id`, `manager_name`,
`accommodation_fee`, `water_fee`, `electricity_fee`, `total_fee`, `payment_status`, `payment_time`,
`special_requirements`,
`remark`
) VALUES (
1800000006, '000000', 103, 2001, now(), 2001, now(), 0,
2100000006, '孙八', '2021001006', 2200000006, '物联网工程2021级1班', 2300000006, '物联网工程', 2400000001, '信息工程学院',
3100000001, '主校区', 3200000001, '学生宿舍区A区', 3300000001, 'A1栋', 3400000004, 'A1-104', 3500000004, 'A1-104-1',
'summer_vacation', '2024-07-10', '2024-08-20', 41, '准备各类证书考试,暑假需要集中学习', 'exam_preparation',
'13812345011', '孙母', '13812345012', 'mother', '1',
'4', 4001, '王宿管', '2024-07-05 09:15:00', '学习计划详细,安排到安静房间',
'2024-07-10', '2024-08-20', 41,
4002, '李宿管', 4002, '李宿管',
'1', '1',
4100000001, '王宿管',
350.00, 90.00, 160.00, 600.00, '1', '2024-07-08 14:20:00',
'学生要求安静的学习环境,已安排到相对安静的房间',
'示例数据 - 已完成的暑假留宿(已退宿)'
);
-- =============示例数据7:家庭困难的五一留宿申请(已安排)=============
INSERT INTO `xg_holiday_stay` (
`id`, `tenant_id`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`,
`student_id`, `student_name`, `student_no`, `class_id`, `class_name`, `major_id`, `major_name`, `college_id`, `college_name`,
`campus_id`, `campus_name`, `area_id`, `area_name`, `building_id`, `building_name`, `room_id`, `room_name`, `bed_id`, `bed_name`,
`holiday_type`, `apply_start_date`, `apply_end_date`, `stay_duration`, `stay_reason`, `stay_reason_type`,
`student_phone`, `emergency_contact`, `emergency_phone`, `emergency_relation`, `parent_consent`,
`status`, `handle_by`, `handle_name`, `handle_time`, `handle_remark`,
`safety_commitment`, `rule_commitment`,
`manager_id`, `manager_name`,
`accommodation_fee`, `water_fee`, `electricity_fee`, `total_fee`, `payment_status`,
`attachment_oss_ids`,
`remark`
) VALUES (
1800000007, '000000', 103, 2001, now(), 2001, now(), 0,
2100000007, '周九', '2021001007', 2200000007, '数据科学与大数据技术2021级1班', 2300000007, '数据科学与大数据技术', 2400000002, '数学与统计学院',
3100000001, '主校区', 3200000002, '学生宿舍区B区', 3300000002, 'B1栋', 3400000005, 'B1-101', 3500000005, 'B1-101-1',
'labor_day', '2024-05-01', '2024-05-05', 5, '家庭经济困难,路费负担较重,五一假期申请留校', 'family_difficulty',
'13812345013', '周父', '13812345014', 'father', '1',
'1', 4003, '张宿管', '2024-04-28 11:40:00', '家庭情况属实,给予照顾,已安排B1-101床位',
'1', '1',
4100000002, '张宿管',
50.00, 20.00, 30.00, 100.00, '0',
'oss_id_001,oss_id_002',
'示例数据 - 家庭困难的五一留宿申请,已上传贫困证明材料'
);
-- =============示例数据8:路程遥远的端午留宿申请=============
INSERT INTO `xg_holiday_stay` (
`id`, `tenant_id`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`,
`student_id`, `student_name`, `student_no`, `class_id`, `class_name`, `major_id`, `major_name`, `college_id`, `college_name`,
`holiday_type`, `apply_start_date`, `apply_end_date`, `stay_duration`, `stay_reason`, `stay_reason_type`,
`student_phone`, `emergency_contact`, `emergency_phone`, `emergency_relation`, `parent_consent`,
`status`, `safety_commitment`, `rule_commitment`,
`accommodation_fee`, `water_fee`, `electricity_fee`, `total_fee`, `payment_status`,
`ext_field1`, `ext_field2`,
`remark`
) VALUES (
1800000008, '000000', 103, 2001, now(), 2001, now(), 0,
2100000008, '吴十', '2021001008', 2200000008, '应用数学2021级1班', 2300000008, '应用数学', 2400000002, '数学与统计学院',
'dragon_boat_festival', '2024-06-08', '2024-06-10', 3, '家在新疆,路程遥远,端午假期只有3天时间,来回路程就需要2天,申请留校', 'long_distance',
'13812345015', '吴母', '13812345016', 'mother', '1',
'0', '1', '1',
30.00, 10.00, 20.00, 60.00, '0',
'学生家庭地址:新疆乌鲁木齐市', '单程需要1天时间',
'示例数据 - 路程遥远的端午留宿申请'
);
-- =============统计信息查询=============
/*
-- 查看示例数据统计
SELECT
holiday_type AS '假期类型',
status AS '申请状态',
COUNT(*) AS '数量'
FROM xg_holiday_stay
WHERE remark LIKE '%示例数据%'
GROUP BY holiday_type, status
ORDER BY holiday_type, status;
-- 查看不同留宿原因统计
SELECT
stay_reason_type AS '留宿原因类型',
COUNT(*) AS '数量'
FROM xg_holiday_stay
WHERE remark LIKE '%示例数据%'
GROUP BY stay_reason_type
ORDER BY COUNT(*) DESC;
-- 查看费用统计
SELECT
AVG(total_fee) AS '平均费用',
MAX(total_fee) AS '最高费用',
MIN(total_fee) AS '最低费用',
SUM(CASE WHEN payment_status = '1' THEN total_fee ELSE 0 END) AS '已收费用'
FROM xg_holiday_stay
WHERE remark LIKE '%示例数据%';
-- 查看简化流程状态分布
SELECT
CASE status
WHEN '0' THEN '申请中'
WHEN '1' THEN '已安排'
WHEN '2' THEN '已取消'
WHEN '3' THEN '已入住'
WHEN '4' THEN '已退宿'
ELSE '未知状态'
END AS '状态',
COUNT(*) AS '数量'
FROM xg_holiday_stay
WHERE remark LIKE '%示例数据%'
GROUP BY status
ORDER BY status;
*/
@@ -0,0 +1,142 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { HolidayStayVO, HolidayStayForm, HolidayStayQuery, StudentOptionVO, StudentOptionQuery } from '@/api/xg/xgss/holidayStay/holidayStay/types';
/**
* 查询假期留宿管理列表
* @param query
* @returns {*}
*/
export const listHolidayStay = (query?: HolidayStayQuery): AxiosPromise<HolidayStayVO[]> => {
return request({
url: '/holidayStay/holidayStay/list',
method: 'get',
params: query
});
};
/**
* 查询假期留宿管理详细
* @param id
*/
export const getHolidayStay = (id: string | number): AxiosPromise<HolidayStayVO> => {
return request({
url: '/holidayStay/holidayStay/' + id,
method: 'get'
});
};
/**
* 新增假期留宿管理
* @param data
*/
export const addHolidayStay = (data: HolidayStayForm) => {
return request({
url: '/holidayStay/holidayStay',
method: 'post',
data: data
});
};
/**
* 修改假期留宿管理
* @param data
*/
export const updateHolidayStay = (data: HolidayStayForm) => {
return request({
url: '/holidayStay/holidayStay',
method: 'put',
data: data
});
};
/**
* 删除假期留宿管理
* @param id
*/
export const delHolidayStay = (id: string | number | Array<string | number>) => {
return request({
url: '/holidayStay/holidayStay/' + id,
method: 'delete'
});
};
/**
* 获取学生选择器选项列表(支持按学号、姓名检索)
* @param query 查询参数
* @returns 学生选项列表
*/
export const getStudentOptions = (query?: StudentOptionQuery): AxiosPromise<{
total: number;
rows: StudentOptionVO[];
}> => {
return request({
url: '/holidayStay/holidayStay/studentOptions',
method: 'get',
params: query
});
};
/**
* 获取校区选项列表
* @returns 校区选项列表
*/
export const getCampusOptions = (): AxiosPromise<any[]> => {
return request({
url: '/xqxx/dormCampus/list',
method: 'get'
});
};
/**
* 获取指定校区的宿舍区选项列表
* @param campusId 校区ID
* @returns 宿舍区选项列表
*/
export const getAreaOptions = (campusId?: string | number): AxiosPromise<any[]> => {
return request({
url: '/ssqxx/dormArea/list',
method: 'get',
params: campusId ? { campusId } : undefined
});
};
/**
* 获取指定宿舍区的宿舍楼选项列表
* @param areaId 宿舍区ID
* @returns 宿舍楼选项列表
*/
export const getBuildingOptions = (areaId?: string | number): AxiosPromise<any[]> => {
return request({
url: '/sslxx/dormBuilding/list',
method: 'get',
params: areaId ? { areaId } : undefined
});
};
/**
* 获取指定宿舍楼的房间选项列表
* @param buildingId 宿舍楼ID
* @returns 房间选项列表
*/
export const getRoomOptions = (buildingId?: string | number): AxiosPromise<any[]> => {
return request({
url: '/xgss/dormRoom/list',
method: 'get',
params: buildingId ? { buildingId } : undefined
});
};
/**
* 获取指定房间的床位选项列表
* @param roomId 房间ID
* @returns 床位选项列表
*/
export const getBedOptions = (roomId?: string | number): AxiosPromise<any[]> => {
return request({
url: '/dormbed/dormBed/list',
method: 'get',
params: roomId ? { roomId } : undefined
});
};
@@ -0,0 +1,752 @@
export interface HolidayStayVO {
/**
* 主键ID
*/
id: string | number;
/**
* 删除标志(0代表存在 1代表删除)
*/
deleted: number;
/**
* 学生ID,关联xg_student_msg.id
*/
studentId: string | number;
/**
* 学生姓名
*/
studentName: string;
/**
* 学号
*/
studentNo: string;
/**
* 班级ID
*/
classId: string | number;
/**
* 班级名称
*/
className: string;
/**
* 专业ID
*/
majorId: string | number;
/**
* 专业名称
*/
majorName: string;
/**
* 学院ID
*/
collegeId: string | number;
/**
* 学院名称
*/
collegeName: string;
/**
* 校区ID,关联xg_dorm_campus.id
*/
campusId: string | number;
/**
* 校区名称
*/
campusName: string;
/**
* 宿舍区ID,关联xg_dorm_area.id
*/
areaId: string | number;
/**
* 宿舍区名称
*/
areaName: string;
/**
* 宿舍楼ID,关联xg_dorm_building.id
*/
buildingId: string | number;
/**
* 宿舍楼名称
*/
buildingName: string;
/**
* 房间ID,关联xg_dorm_room.id
*/
roomId: string | number;
/**
* 房间名称
*/
roomName: string;
/**
* 床位ID,关联xg_dorm_bed.id
*/
bedId: string | number;
/**
* 床位名称
*/
bedName: string;
/**
* 假期类型(寒假、暑假、春节假期、国庆假期等)
*/
holidayType: string | number;
/**
* 申请留宿开始日期
*/
applyStartDate: string;
/**
* 申请留宿结束日期
*/
applyEndDate: string;
/**
* 留宿原因(必填)
*/
stayReason: string;
/**
* 留宿原因类型(学习、实习、家庭困难、其他)
*/
stayReasonType: string;
/**
* 学生联系电话
*/
studentPhone: string;
/**
* 紧急联系人姓名
*/
emergencyContact: string;
/**
* 紧急联系人电话
*/
emergencyPhone: string;
/**
* 家长同意(0否 1是)
*/
parentConsent: string;
/**
* 附件OSS文件ID,多个用逗号分隔(申请材料、证明文件等)
*/
attachmentOssIds: string | number;
/**
* 扩展字段1
*/
extField1: string;
/**
* 扩展字段2
*/
extField2: string;
/**
* 扩展字段3
*/
extField3: string;
/**
* 备注信息
*/
remark: string;
}
export interface HolidayStayForm extends BaseEntity {
/**
* 主键ID
*/
id?: string | number;
/**
* 删除标志(0代表存在 1代表删除)
*/
deleted?: number;
/**
* 学生ID,关联xg_student_msg.id
*/
studentId?: string | number;
/**
* 学生姓名
*/
studentName?: string;
/**
* 学号
*/
studentNo?: string;
/**
* 班级ID
*/
classId?: string | number;
/**
* 班级名称
*/
className?: string;
/**
* 专业ID
*/
majorId?: string | number;
/**
* 专业名称
*/
majorName?: string;
/**
* 学院ID
*/
collegeId?: string | number;
/**
* 学院名称
*/
collegeName?: string;
/**
* 校区ID,关联xg_dorm_campus.id
*/
campusId?: string | number;
/**
* 校区名称
*/
campusName?: string;
/**
* 宿舍区ID,关联xg_dorm_area.id
*/
areaId?: string | number;
/**
* 宿舍区名称
*/
areaName?: string;
/**
* 宿舍楼ID,关联xg_dorm_building.id
*/
buildingId?: string | number;
/**
* 宿舍楼名称
*/
buildingName?: string;
/**
* 房间ID,关联xg_dorm_room.id
*/
roomId?: string | number;
/**
* 房间名称
*/
roomName?: string;
/**
* 床位ID,关联xg_dorm_bed.id
*/
bedId?: string | number;
/**
* 床位名称
*/
bedName?: string;
/**
* 假期类型(寒假、暑假、春节假期、国庆假期等)
*/
holidayType?: string | number;
/**
* 申请留宿开始日期
*/
applyStartDate?: string;
/**
* 申请留宿结束日期
*/
applyEndDate?: string;
/**
* 留宿原因(必填)
*/
stayReason?: string;
/**
* 留宿原因类型(学习、实习、家庭困难、其他)
*/
stayReasonType?: string;
/**
* 学生联系电话
*/
studentPhone?: string;
/**
* 紧急联系人姓名
*/
emergencyContact?: string;
/**
* 紧急联系人电话
*/
emergencyPhone?: string;
/**
* 家长同意(0否 1是)
*/
parentConsent?: string;
/**
* 附件OSS文件ID,多个用逗号分隔(申请材料、证明文件等)
*/
attachmentOssIds?: string | number;
/**
* 扩展字段1
*/
extField1?: string;
/**
* 扩展字段2
*/
extField2?: string;
/**
* 扩展字段3
*/
extField3?: string;
/**
* 备注信息
*/
remark?: string;
}
export interface HolidayStayQuery extends PageQuery {
/**
* 删除标志(0代表存在 1代表删除)
*/
deleted?: number;
/**
* 学生ID,关联xg_student_msg.id
*/
studentId?: string | number;
/**
* 学生姓名
*/
studentName?: string;
/**
* 学号
*/
studentNo?: string;
/**
* 班级ID
*/
classId?: string | number;
/**
* 班级名称
*/
className?: string;
/**
* 专业ID
*/
majorId?: string | number;
/**
* 专业名称
*/
majorName?: string;
/**
* 学院ID
*/
collegeId?: string | number;
/**
* 学院名称
*/
collegeName?: string;
/**
* 校区ID,关联xg_dorm_campus.id
*/
campusId?: string | number;
/**
* 校区名称
*/
campusName?: string;
/**
* 宿舍区ID,关联xg_dorm_area.id
*/
areaId?: string | number;
/**
* 宿舍区名称
*/
areaName?: string;
/**
* 宿舍楼ID,关联xg_dorm_building.id
*/
buildingId?: string | number;
/**
* 宿舍楼名称
*/
buildingName?: string;
/**
* 房间ID,关联xg_dorm_room.id
*/
roomId?: string | number;
/**
* 房间名称
*/
roomName?: string;
/**
* 床位ID,关联xg_dorm_bed.id
*/
bedId?: string | number;
/**
* 床位名称
*/
bedName?: string;
/**
* 假期类型(寒假、暑假、春节假期、国庆假期等)
*/
holidayType?: string | number;
/**
* 申请留宿开始日期
*/
applyStartDate?: string;
/**
* 申请留宿结束日期
*/
applyEndDate?: string;
/**
* 留宿原因(必填)
*/
stayReason?: string;
/**
* 留宿原因类型(学习、实习、家庭困难、其他)
*/
stayReasonType?: string;
/**
* 学生联系电话
*/
studentPhone?: string;
/**
* 紧急联系人姓名
*/
emergencyContact?: string;
/**
* 紧急联系人电话
*/
emergencyPhone?: string;
/**
* 家长同意(0否 1是)
*/
parentConsent?: string;
/**
* 附件OSS文件ID,多个用逗号分隔(申请材料、证明文件等)
*/
attachmentOssIds?: string | number;
/**
* 扩展字段1
*/
extField1?: string;
/**
* 扩展字段2
*/
extField2?: string;
/**
* 扩展字段3
*/
extField3?: string;
/**
* 日期范围参数
*/
params?: any;
}
/**
* 学生选择器选项
*/
export interface StudentOptionVO {
/**
* 学生ID
*/
id: string | number;
/**
* 学号
*/
studentNo: string;
/**
* 学生姓名
*/
name: string;
/**
* 性别:0-男,1-女
*/
gender: string;
/**
* 学院ID
*/
collegeId?: string | number;
/**
* 学院名称
*/
collegeName?: string;
/**
* 专业ID
*/
majorId?: string | number;
/**
* 专业名称
*/
majorName?: string;
/**
* 班级ID
*/
classId?: string | number;
/**
* 班级名称
*/
className?: string;
/**
* 学生联系电话
*/
phone?: string;
/**
* 宿舍信息
*/
dormInfo?: {
campusId?: string | number;
campusName?: string;
areaId?: string | number;
areaName?: string;
buildingId?: string | number;
buildingName?: string;
roomId?: string | number;
roomName?: string;
bedId?: string | number;
bedName?: string;
};
}
/**
* 学生选择器查询参数
*/
export interface StudentOptionQuery {
/**
* 搜索关键字(学号或姓名)
*/
keyword?: string;
/**
* 页码
*/
pageNum?: number;
/**
* 每页大小
*/
pageSize?: number;
}
/**
* 校区选项
*/
export interface CampusOptionVO {
/**
* 校区ID
*/
id: string | number;
/**
* 校区名称
*/
campusName: string;
/**
* 校区编码
*/
campusCode?: string;
}
/**
* 宿舍区选项
*/
export interface AreaOptionVO {
/**
* 宿舍区ID
*/
id: string | number;
/**
* 宿舍区名称
*/
areaName: string;
/**
* 校区ID
*/
campusId: string | number;
/**
* 校区名称
*/
campusName?: string;
}
/**
* 宿舍楼选项
*/
export interface BuildingOptionVO {
/**
* 宿舍楼ID
*/
id: string | number;
/**
* 宿舍楼名称
*/
buildingName: string;
/**
* 宿舍区ID
*/
areaId: string | number;
/**
* 宿舍区名称
*/
areaName?: string;
}
/**
* 房间选项
*/
export interface RoomOptionVO {
/**
* 房间ID
*/
id: string | number;
/**
* 房间名称
*/
roomName: string;
/**
* 宿舍楼ID
*/
buildingId: string | number;
/**
* 宿舍楼名称
*/
buildingName?: string;
}
/**
* 床位选项
*/
export interface BedOptionVO {
/**
* 床位ID
*/
id: string | number;
/**
* 床位名称
*/
bedName: string;
/**
* 房间ID
*/
roomId: string | number;
/**
* 房间名称
*/
roomName?: string;
/**
* 床位状态(0-空闲,1-已分配,2-已入住)
*/
bedStatus?: string;
}
File diff suppressed because it is too large. Load diff