提交代码

This commit is contained in:
zlwu committed 2025-08-16 05:35:46 +08:00
1 parent ac1c2e69be
commit bee68f318d
14 files changed
+3761

No files matched your search

@@ -0,0 +1,105 @@
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.XgDormViolationVo;
import org.dromara.xg.domain.bo.XgDormViolationBo;
import org.dromara.xg.service.IXgDormViolationService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 宿舍违纪记录
*
* @author zlwu
* @date 2025-08-16
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/dormViolation/dormViolation")
public class XgDormViolationController extends BaseController {
private final IXgDormViolationService xgDormViolationService;
/**
* 查询宿舍违纪记录列表
*/
@SaCheckPermission("dormViolation:dormViolation:list")
@GetMapping("/list")
public TableDataInfo<XgDormViolationVo> list(XgDormViolationBo bo, PageQuery pageQuery) {
return xgDormViolationService.queryPageList(bo, pageQuery);
}
/**
* 导出宿舍违纪记录列表
*/
@SaCheckPermission("dormViolation:dormViolation:export")
@Log(title = "宿舍违纪记录", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XgDormViolationBo bo, HttpServletResponse response) {
List<XgDormViolationVo> list = xgDormViolationService.queryList(bo);
ExcelUtil.exportExcel(list, "宿舍违纪记录", XgDormViolationVo.class, response);
}
/**
* 获取宿舍违纪记录详细信息
*
* @param id 主键
*/
@SaCheckPermission("dormViolation:dormViolation:query")
@GetMapping("/{id}")
public R<XgDormViolationVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xgDormViolationService.queryById(id));
}
/**
* 新增宿舍违纪记录
*/
@SaCheckPermission("dormViolation:dormViolation:add")
@Log(title = "宿舍违纪记录", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgDormViolationBo bo) {
return toAjax(xgDormViolationService.insertByBo(bo));
}
/**
* 修改宿舍违纪记录
*/
@SaCheckPermission("dormViolation:dormViolation:edit")
@Log(title = "宿舍违纪记录", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgDormViolationBo bo) {
return toAjax(xgDormViolationService.updateByBo(bo));
}
/**
* 删除宿舍违纪记录
*
* @param ids 主键串
*/
@SaCheckPermission("dormViolation:dormViolation:remove")
@Log(title = "宿舍违纪记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xgDormViolationService.deleteWithValidByIds(List.of(ids), true));
}
}
@@ -0,0 +1,168 @@
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_dorm_violation
*
* @author zlwu
* @date 2025-08-16
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xg_dorm_violation")
public class XgDormViolation extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 违纪记录ID(主键)
*/
@TableId(value = "id")
private Long id;
/**
* 学生ID
*/
private Long studentId;
/**
* 学生姓名
*/
private String studentName;
/**
* 学号
*/
private String studentNo;
/**
* 学院ID
*/
private Long collegeId;
/**
* 学院名称
*/
private String collegeName;
/**
* 专业ID
*/
private Long majorId;
/**
* 专业名称
*/
private String majorName;
/**
* 班级ID
*/
private Long classId;
/**
* 班级名称
*/
private String className;
/**
* 校区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;
/**
* 违纪类型
*/
private String violationType;
/**
* 违纪等级:1轻微 2一般 3严重 4特别严重
*/
private String violationLevel;
/**
* 违纪发生时间
*/
private Date violationTime;
/**
* 违纪行为描述
*/
private String violationDescription;
/**
* 涉及其他学生id(逗号分隔)
*/
private String involvedStudents;
/**
* 附件OSS ID列表(逗号分隔)
*/
private String attachmentOssIds;
/**
* 删除标志(0代表存在 1代表删除)
*/
private String deleted;
/**
* 备注
*/
private String remark;
}
@@ -0,0 +1,178 @@
package org.dromara.xg.domain.bo;
import org.dromara.xg.domain.XgDormViolation;
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_dorm_violation
*
* @author zlwu
* @date 2025-08-16
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XgDormViolation.class, reverseConvertGenerate = false)
public class XgDormViolationBo extends BaseEntity {
/**
* 违纪记录ID(主键)
*/
@NotNull(message = "违纪记录ID(主键)不能为空", groups = { EditGroup.class })
private Long id;
/**
* 学生ID
*/
@NotNull(message = "学生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 collegeId;
/**
* 学院名称
*/
private String collegeName;
/**
* 专业ID
*/
private Long majorId;
/**
* 专业名称
*/
private String majorName;
/**
* 班级ID
*/
private Long classId;
/**
* 班级名称
*/
private String className;
/**
* 校区ID
*/
private Long campusId;
/**
* 校区名称
*/
private String campusName;
/**
* 宿舍区域ID
*/
private Long areaId;
/**
* 宿舍区域名称
*/
private String areaName;
/**
* 宿舍楼ID
*/
@NotNull(message = "宿舍楼ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long buildingId;
/**
* 宿舍楼名称
*/
@NotBlank(message = "宿舍楼名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String buildingName;
/**
* 宿舍房间ID
*/
@NotNull(message = "宿舍房间ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long roomId;
/**
* 房间名称
*/
@NotBlank(message = "房间名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String roomName;
/**
* 床位ID
*/
private Long bedId;
/**
* 床位名称
*/
private String bedName;
/**
* 违纪类型
*/
@NotBlank(message = "违纪类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String violationType;
/**
* 违纪等级:1轻微 2一般 3严重 4特别严重
*/
@NotBlank(message = "违纪等级:1轻微 2一般 3严重 4特别严重不能为空", groups = { AddGroup.class, EditGroup.class })
private String violationLevel;
/**
* 违纪发生时间
*/
@NotNull(message = "违纪发生时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date violationTime;
/**
* 违纪行为描述
*/
@NotBlank(message = "违纪行为描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String violationDescription;
/**
* 涉及其他学生id(逗号分隔)
*/
private String involvedStudents;
/**
* 附件OSS ID列表(逗号分隔)
*/
private String attachmentOssIds;
/**
* 删除标志(0代表存在 1代表删除)
*/
private String deleted;
/**
* 备注
*/
private String remark;
}
@@ -0,0 +1,208 @@
package org.dromara.xg.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xg.domain.XgDormViolation;
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_dorm_violation
*
* @author zlwu
* @date 2025-08-16
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XgDormViolation.class)
public class XgDormViolationVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 违纪记录ID(主键)
*/
@ExcelProperty(value = "违纪记录ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "主=键")
private Long id;
/**
* 学生ID
*/
@ExcelProperty(value = "学生ID")
private Long studentId;
/**
* 学生姓名
*/
@ExcelProperty(value = "学生姓名")
private String studentName;
/**
* 学号
*/
@ExcelProperty(value = "学号")
private String studentNo;
/**
* 学院ID
*/
@ExcelProperty(value = "学院ID")
private Long collegeId;
/**
* 学院名称
*/
@ExcelProperty(value = "学院名称")
private String collegeName;
/**
* 专业ID
*/
@ExcelProperty(value = "专业ID")
private Long majorId;
/**
* 专业名称
*/
@ExcelProperty(value = "专业名称")
private String majorName;
/**
* 班级ID
*/
@ExcelProperty(value = "班级ID")
private Long classId;
/**
* 班级名称
*/
@ExcelProperty(value = "班级名称")
private String className;
/**
* 校区ID
*/
@ExcelProperty(value = "校区ID")
private Long campusId;
/**
* 校区名称
*/
@ExcelProperty(value = "校区名称")
private String campusName;
/**
* 宿舍区域ID
*/
@ExcelProperty(value = "宿舍区域ID")
private Long areaId;
/**
* 宿舍区域名称
*/
@ExcelProperty(value = "宿舍区域名称")
private String areaName;
/**
* 宿舍楼ID
*/
@ExcelProperty(value = "宿舍楼ID")
private Long buildingId;
/**
* 宿舍楼名称
*/
@ExcelProperty(value = "宿舍楼名称")
private String buildingName;
/**
* 宿舍房间ID
*/
@ExcelProperty(value = "宿舍房间ID")
private Long roomId;
/**
* 房间名称
*/
@ExcelProperty(value = "房间名称")
private String roomName;
/**
* 床位ID
*/
@ExcelProperty(value = "床位ID")
private Long bedId;
/**
* 床位名称
*/
@ExcelProperty(value = "床位名称")
private String bedName;
/**
* 违纪类型
*/
@ExcelProperty(value = "违纪类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "dorm_violation_type")
private String violationType;
/**
* 违纪等级:1轻微 2一般 3严重 4特别严重
*/
@ExcelProperty(value = "违纪等级:1轻微 2一般 3严重 4特别严重", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "dorm_violation_level")
private String violationLevel;
/**
* 违纪发生时间
*/
@ExcelProperty(value = "违纪发生时间")
private Date violationTime;
/**
* 违纪行为描述
*/
@ExcelProperty(value = "违纪行为描述")
private String violationDescription;
/**
* 涉及其他学生id(逗号分隔)
*/
@ExcelProperty(value = "涉及其他学生id", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "逗=号分隔")
private String involvedStudents;
/**
* 附件OSS ID列表(逗号分隔)
*/
@ExcelProperty(value = "附件OSS ID列表", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "逗=号分隔")
private String attachmentOssIds;
/**
* 删除标志(0代表存在 1代表删除)
*/
@ExcelProperty(value = "删除标志", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=代表存在,1=代表删除")
private String deleted;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}
@@ -0,0 +1,15 @@
package org.dromara.xg.mapper;
import org.dromara.xg.domain.XgDormViolation;
import org.dromara.xg.domain.vo.XgDormViolationVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 宿舍违纪记录Mapper接口
*
* @author zlwu
* @date 2025-08-16
*/
public interface XgDormViolationMapper extends BaseMapperPlus<XgDormViolation, XgDormViolationVo> {
}
@@ -0,0 +1,68 @@
package org.dromara.xg.service;
import org.dromara.xg.domain.vo.XgDormViolationVo;
import org.dromara.xg.domain.bo.XgDormViolationBo;
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-16
*/
public interface IXgDormViolationService {
/**
* 查询宿舍违纪记录
*
* @param id 主键
* @return 宿舍违纪记录
*/
XgDormViolationVo queryById(Long id);
/**
* 分页查询宿舍违纪记录列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 宿舍违纪记录分页列表
*/
TableDataInfo<XgDormViolationVo> queryPageList(XgDormViolationBo bo, PageQuery pageQuery);
/**
* 查询符合条件的宿舍违纪记录列表
*
* @param bo 查询条件
* @return 宿舍违纪记录列表
*/
List<XgDormViolationVo> queryList(XgDormViolationBo bo);
/**
* 新增宿舍违纪记录
*
* @param bo 宿舍违纪记录
* @return 是否新增成功
*/
Boolean insertByBo(XgDormViolationBo bo);
/**
* 修改宿舍违纪记录
*
* @param bo 宿舍违纪记录
* @return 是否修改成功
*/
Boolean updateByBo(XgDormViolationBo bo);
/**
* 校验并批量删除宿舍违纪记录信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}
@@ -0,0 +1,157 @@
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.XgDormViolationBo;
import org.dromara.xg.domain.vo.XgDormViolationVo;
import org.dromara.xg.domain.XgDormViolation;
import org.dromara.xg.mapper.XgDormViolationMapper;
import org.dromara.xg.service.IXgDormViolationService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 宿舍违纪记录Service业务层处理
*
* @author zlwu
* @date 2025-08-16
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class XgDormViolationServiceImpl implements IXgDormViolationService {
private final XgDormViolationMapper baseMapper;
/**
* 查询宿舍违纪记录
*
* @param id 主键
* @return 宿舍违纪记录
*/
@Override
public XgDormViolationVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询宿舍违纪记录列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 宿舍违纪记录分页列表
*/
@Override
public TableDataInfo<XgDormViolationVo> queryPageList(XgDormViolationBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XgDormViolation> lqw = buildQueryWrapper(bo);
Page<XgDormViolationVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的宿舍违纪记录列表
*
* @param bo 查询条件
* @return 宿舍违纪记录列表
*/
@Override
public List<XgDormViolationVo> queryList(XgDormViolationBo bo) {
LambdaQueryWrapper<XgDormViolation> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XgDormViolation> buildQueryWrapper(XgDormViolationBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XgDormViolation> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(XgDormViolation::getId);
lqw.eq(bo.getStudentId() != null, XgDormViolation::getStudentId, bo.getStudentId());
lqw.like(StringUtils.isNotBlank(bo.getStudentName()), XgDormViolation::getStudentName, bo.getStudentName());
lqw.like(StringUtils.isNotBlank(bo.getStudentNo()), XgDormViolation::getStudentNo, bo.getStudentNo());
lqw.eq(bo.getCollegeId() != null, XgDormViolation::getCollegeId, bo.getCollegeId());
lqw.like(StringUtils.isNotBlank(bo.getCollegeName()), XgDormViolation::getCollegeName, bo.getCollegeName());
lqw.eq(bo.getMajorId() != null, XgDormViolation::getMajorId, bo.getMajorId());
lqw.like(StringUtils.isNotBlank(bo.getMajorName()), XgDormViolation::getMajorName, bo.getMajorName());
lqw.eq(bo.getClassId() != null, XgDormViolation::getClassId, bo.getClassId());
lqw.like(StringUtils.isNotBlank(bo.getClassName()), XgDormViolation::getClassName, bo.getClassName());
lqw.eq(bo.getCampusId() != null, XgDormViolation::getCampusId, bo.getCampusId());
lqw.like(StringUtils.isNotBlank(bo.getCampusName()), XgDormViolation::getCampusName, bo.getCampusName());
lqw.eq(bo.getAreaId() != null, XgDormViolation::getAreaId, bo.getAreaId());
lqw.like(StringUtils.isNotBlank(bo.getAreaName()), XgDormViolation::getAreaName, bo.getAreaName());
lqw.eq(bo.getBuildingId() != null, XgDormViolation::getBuildingId, bo.getBuildingId());
lqw.like(StringUtils.isNotBlank(bo.getBuildingName()), XgDormViolation::getBuildingName, bo.getBuildingName());
lqw.eq(bo.getRoomId() != null, XgDormViolation::getRoomId, bo.getRoomId());
lqw.like(StringUtils.isNotBlank(bo.getRoomName()), XgDormViolation::getRoomName, bo.getRoomName());
lqw.eq(bo.getBedId() != null, XgDormViolation::getBedId, bo.getBedId());
lqw.like(StringUtils.isNotBlank(bo.getBedName()), XgDormViolation::getBedName, bo.getBedName());
lqw.eq(StringUtils.isNotBlank(bo.getViolationType()), XgDormViolation::getViolationType, bo.getViolationType());
lqw.eq(StringUtils.isNotBlank(bo.getViolationLevel()), XgDormViolation::getViolationLevel, bo.getViolationLevel());
lqw.eq(bo.getViolationTime() != null, XgDormViolation::getViolationTime, bo.getViolationTime());
lqw.like(StringUtils.isNotBlank(bo.getViolationDescription()), XgDormViolation::getViolationDescription, bo.getViolationDescription());
lqw.like(StringUtils.isNotBlank(bo.getInvolvedStudents()), XgDormViolation::getInvolvedStudents, bo.getInvolvedStudents());
lqw.like(StringUtils.isNotBlank(bo.getAttachmentOssIds()), XgDormViolation::getAttachmentOssIds, bo.getAttachmentOssIds());
lqw.eq(StringUtils.isNotBlank(bo.getDeleted()), XgDormViolation::getDeleted, bo.getDeleted());
return lqw;
}
/**
* 新增宿舍违纪记录
*
* @param bo 宿舍违纪记录
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XgDormViolationBo bo) {
XgDormViolation add = MapstructUtils.convert(bo, XgDormViolation.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改宿舍违纪记录
*
* @param bo 宿舍违纪记录
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XgDormViolationBo bo) {
XgDormViolation update = MapstructUtils.convert(bo, XgDormViolation.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XgDormViolation entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除宿舍违纪记录信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}
@@ -0,0 +1,7 @@
<?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.XgDormViolationMapper">
</mapper>
@@ -0,0 +1,65 @@
-- 宿舍违纪记录管理数据字典配置脚本(超简化版)
-- 来源:宿舍违纪记录数据模型设计
-- 用途:配置宿舍违纪记录模块所需的数据字典项(仅主表相关字典)
-- 维护人:数据库设计团队
-- 日期:2025-01-28
-- =============================================================================
-- 1. 违纪类型字典
-- =============================================================================
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark)
VALUES (NEXT VALUE FOR sys_dict_type_seq, '000000', '宿舍违纪类型', 'dorm_violation_type', 103, 1, NOW(), 1, NOW(), '宿舍违纪类型分类');
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark)
VALUES
-- 卫生违纪类
(NEXT VALUE FOR sys_dict_data_seq, '000000', 1, '垃圾乱扔', 'WS001001', 'dorm_violation_type', '', 'warning', 'N', 103, 1, NOW(), 1, NOW(), '在宿舍内外乱扔垃圾'),
(NEXT VALUE FOR sys_dict_data_seq, '000000', 2, '床铺不整', 'WS001002', 'dorm_violation_type', '', 'warning', 'N', 103, 1, NOW(), 1, NOW(), '床铺整理不规范'),
(NEXT VALUE FOR sys_dict_data_seq, '000000', 3, '物品摆放混乱', 'WS001003', 'dorm_violation_type', '', 'warning', 'N', 103, 1, NOW(), 1, NOW(), '个人物品摆放不规范'),
-- 纪律违纪类
(NEXT VALUE FOR sys_dict_data_seq, '000000', 11, '晚归违纪', 'JL001001', 'dorm_violation_type', '', 'info', 'N', 103, 1, NOW(), 1, NOW(), '超过规定时间归宿'),
(NEXT VALUE FOR sys_dict_data_seq, '000000', 12, '噪音扰民', 'JL001002', 'dorm_violation_type', '', 'info', 'N', 103, 1, NOW(), 1, NOW(), '在休息时间制造噪音'),
(NEXT VALUE FOR sys_dict_data_seq, '000000', 13, '夜不归宿', 'JL001003', 'dorm_violation_type', '', 'danger', 'N', 103, 1, NOW(), 1, NOW(), '整夜未在宿舍住宿'),
-- 安全违纪类
(NEXT VALUE FOR sys_dict_data_seq, '000000', 21, '违规用电', 'AQ001001', 'dorm_violation_type', '', 'danger', 'N', 103, 1, NOW(), 1, NOW(), '使用违规电器或私拉电线'),
(NEXT VALUE FOR sys_dict_data_seq, '000000', 22, '吸烟违纪', 'AQ001002', 'dorm_violation_type', '', 'danger', 'N', 103, 1, NOW(), 1, NOW(), '在宿舍内吸烟'),
(NEXT VALUE FOR sys_dict_data_seq, '000000', 23, '明火使用', 'AQ001003', 'dorm_violation_type', '', 'danger', 'N', 103, 1, NOW(), 1, NOW(), '在宿舍内使用明火'),
-- 物品违纪类
(NEXT VALUE FOR sys_dict_data_seq, '000000', 31, '损坏公物', 'WP001001', 'dorm_violation_type', '', 'primary', 'N', 103, 1, NOW(), 1, NOW(), '故意或过失损坏公共物品'),
(NEXT VALUE FOR sys_dict_data_seq, '000000', 32, '私改设施', 'WP001002', 'dorm_violation_type', '', 'primary', 'N', 103, 1, NOW(), 1, NOW(), '私自改动宿舍设施'),
(NEXT VALUE FOR sys_dict_data_seq, '000000', 33, '盗用他人物品', 'WP001003', 'dorm_violation_type', '', 'danger', 'N', 103, 1, NOW(), 1, NOW(), '盗用或损坏他人物品');
-- =============================================================================
-- 2. 违纪等级字典
-- =============================================================================
INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark)
VALUES (NEXT VALUE FOR sys_dict_type_seq, '000000', '违纪等级', 'dorm_violation_level', 103, 1, NOW(), 1, NOW(), '宿舍违纪等级分类');
INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark)
VALUES
(NEXT VALUE FOR sys_dict_data_seq, '000000', 1, '轻微', '1', 'dorm_violation_level', '', 'success', 'Y', 103, 1, NOW(), 1, NOW(), '轻微违纪'),
(NEXT VALUE FOR sys_dict_data_seq, '000000', 2, '一般', '2', 'dorm_violation_level', '', 'warning', 'N', 103, 1, NOW(), 1, NOW(), '一般违纪'),
(NEXT VALUE FOR sys_dict_data_seq, '000000', 3, '严重', '3', 'dorm_violation_level', '', 'danger', 'N', 103, 1, NOW(), 1, NOW(), '严重违纪'),
(NEXT VALUE FOR sys_dict_data_seq, '000000', 4, '特别严重', '4', 'dorm_violation_level', '', 'danger', 'N', 103, 1, NOW(), 1, NOW(), '特别严重违纪');
-- =============================================================================
-- 数据字典配置完成提示
-- =============================================================================
-- 宿舍违纪记录管理数据字典配置脚本执行完成(超简化版)
-- 包含字典类型:
-- 1. dorm_violation_type - 宿舍违纪类型(12个违纪类型)
-- 2. dorm_violation_level - 违纪等级(4个等级)
--
-- 功能特点:
-- 1. 超级简化设计,仅保留核心字典
-- 2. 违纪类型使用字典管理,无需单独表
-- 3. 附件使用OSS ID存储,无需附件类型字典
-- 4. 移除了处罚、审核、累计等复杂字典
--
-- 注意事项:
-- 1. 违纪类型编码采用分类前缀(WS卫生、JL纪律、AQ安全、WP物品)
-- 2. 所有字典数据采用项目统一规范
-- 3. 专注于记录功能,大幅简化了数据字典结构
@@ -0,0 +1,96 @@
-- 宿舍违纪记录管理数据库建表脚本(超简化版)
-- 来源:宿舍违纪记录数据模型设计
-- 用途:创建宿舍违纪记录管理所需的数据库表(仅主表)
-- 维护人:数据库设计团队
-- 日期:2025-01-28
-- =============================================================================
-- 1. 宿舍违纪记录表 (xg_dorm_violation) - 唯一核心表
-- =============================================================================
DROP TABLE IF EXISTS `xg_dorm_violation`;
CREATE TABLE `xg_dorm_violation` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '违纪记录ID(主键)',
-- 学生信息(冗余存储,提高查询性能)
`student_id` bigint(20) NOT NULL COMMENT '学生ID',
`student_name` varchar(100) NOT NULL COMMENT '学生姓名',
`student_no` varchar(50) NOT NULL COMMENT '学号',
`college_id` bigint(20) DEFAULT NULL COMMENT '学院ID',
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
`major_id` bigint(20) DEFAULT NULL COMMENT '专业ID',
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
`class_id` bigint(20) DEFAULT NULL COMMENT '班级ID',
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
-- 宿舍位置信息(复用现有宿舍管理结构)
`campus_id` bigint(20) DEFAULT NULL COMMENT '校区ID',
`campus_name` varchar(100) DEFAULT NULL COMMENT '校区名称',
`area_id` bigint(20) DEFAULT NULL COMMENT '宿舍区域ID',
`area_name` varchar(100) DEFAULT NULL COMMENT '宿舍区域名称',
`building_id` bigint(20) NOT NULL COMMENT '宿舍楼ID',
`building_name` varchar(100) NOT NULL COMMENT '宿舍楼名称',
`room_id` bigint(20) NOT NULL COMMENT '宿舍房间ID',
`room_name` varchar(50) NOT NULL COMMENT '房间名称',
`bed_id` bigint(20) DEFAULT NULL COMMENT '床位ID',
`bed_name` varchar(20) DEFAULT NULL COMMENT '床位名称',
-- 违纪基本信息
`violation_type` varchar(50) NOT NULL COMMENT '违纪类型',
`violation_level` char(1) NOT NULL COMMENT '违纪等级:1轻微 2一般 3严重 4特别严重',
`violation_time` datetime NOT NULL COMMENT '违纪发生时间',
`violation_description` text NOT NULL COMMENT '违纪行为描述',
-- 附加信息
`involved_students` text DEFAULT NULL COMMENT '涉及其他学生信息(JSON格式)',
-- 附件信息(OSS存储)
`attachment_oss_ids` text DEFAULT NULL COMMENT '附件OSS ID列表(逗号分隔)',
-- 系统字段
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`tenant_id` varchar(20) 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 '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_student_id` (`student_id`),
KEY `idx_student_no` (`student_no`),
KEY `idx_college_id` (`college_id`),
KEY `idx_building_id` (`building_id`),
KEY `idx_room_id` (`room_id`),
KEY `idx_violation_type` (`violation_type`),
KEY `idx_violation_time` (`violation_time`),
KEY `idx_violation_level` (`violation_level`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
-- 复合索引(统计查询优化)
KEY `idx_college_time` (`college_id`, `violation_time`),
KEY `idx_building_level` (`building_id`, `violation_level`),
KEY `idx_student_time` (`student_id`, `violation_time`),
KEY `idx_type_level` (`violation_type`, `violation_level`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='宿舍违纪记录表';
-- =============================================================================
-- 数据库建表脚本执行完成提示
-- =============================================================================
-- 宿舍违纪记录管理数据库建表脚本执行完成(超简化版)
--
-- 创建表:
-- 1. xg_dorm_violation - 宿舍违纪记录主表(包含所有核心功能)
--
-- 设计特点:
-- 1. 单表设计,降低复杂度
-- 2. 违纪类型使用字典管理
-- 3. 附件使用OSS ID存储
-- 4. 冗余存储关键信息,提高查询性能
-- 5. 完整的索引设计,支持高效查询和统计
--
-- 注意事项:
-- 1. 违纪类型使用sys_dict_data表管理
-- 2. 附件OSS ID使用逗号分隔存储
-- 3. 所有字段遵循项目统一规范
-- 4. 支持多租户和逻辑删除
@@ -0,0 +1,363 @@
# 宿舍违纪记录管理数据模型设计文档(超简化版)
## 📋 文档信息
| 项目 | 信息 |
|------|------|
| **项目名称** | 校园管理系统 - 宿舍违纪记录管理模块 |
| **数据库版本** | MySQL 8.0+ |
| **文档版本** | V2.0.0(超简化版) |
| **创建时间** | 2025-01-28 |
| **创建人员** | 数据库设计团队 |
| **审核状态** | 待审核 |
## 🎯 设计目标
### 核心目标
- 建立最简化的宿舍违纪记录管理系统
- 使用单表存储所有核心数据,降低系统复杂度
- 违纪类型通过字典管理,便于维护和扩展
- 附件通过OSS ID字符串存储,简化文件管理
### 设计原则
- **极简设计**:单表设计,减少表关联复杂度
- **字典驱动**:违纪类型使用系统字典管理
- **OSS存储**:附件使用阿里云OSS,表中仅存储ID
- **查询优化**:通过索引设计支持高效查询和统计
- **性能第一**:冗余存储关键信息,避免复杂JOIN
## 🗄️ 数据库表设计
### 唯一核心表
#### 宿舍违纪记录表 (xg_dorm_violation)
**表说明**:违纪记录管理的唯一核心表,包含所有功能
**核心字段组**:
##### 📊 学生信息(冗余存储)
- **student_id**, **student_name**, **student_no**:学生基本信息
- **college_id**, **college_name**:学院信息
- **class_id**, **class_name**:班级信息
##### 🏠 宿舍位置信息(充分复用现有结构)
- **campus_id**, **campus_name**:校区信息
- **area_id**, **area_name**:宿舍区域信息
- **building_id**, **building_name**:宿舍楼信息(必填)
- **room_id**, **room_no**:房间信息(必填)
- **bed_id**, **bed_no**:床位信息
##### 🚨 违纪基本信息
- **violation_type_dict**:违纪类型(字典值,如WS001001)
- **violation_level**:违纪等级(1轻微 2一般 3严重 4特别严重)
- **violation_time**:违纪发生时间
- **violation_description**:违纪行为描述
- **violation_location**:违纪具体位置
##### 🔍 发现信息
- **discoverer_type**:发现人类型(1宿管员 2学生 3巡查员 4其他)
- **discoverer_id**, **discoverer_name**:发现人信息
- **discovery_method**:发现方式(1日常检查 2举报 3巡查 4其他)
- **discovery_time**:发现时间
##### 📋 记录状态和评分
- **record_status**:记录状态(1已记录 2已确认 3已归档)
- **severity_score**:严重程度评分(0-100)
- **is_repeat**, **repeat_count**:重复违纪信息
##### 📎 附件信息(OSS存储)
- **attachment_oss_ids**:附件OSS ID列表(逗号分隔字符串)
- **attachment_count**:附件数量
**设计特点**:
- **单表设计**:所有功能集中在一张表,减少复杂度
- **冗余存储**:关键信息冗余存储,避免复杂JOIN查询
- **字典管理**:违纪类型使用系统字典,便于维护
- **OSS集成**:附件使用阿里云OSS存储,表中仅存ID
- **索引优化**:完整的索引设计,支持高效查询
### 🔗 与现有系统的关系
#### 宿舍管理系统集成
违纪记录管理充分复用现有宿舍管理数据结构:
```sql
-- 关联关系(查询时关联,表结构独立)
xg_dorm_violation.campus_id -> xg_dorm_campus.id
xg_dorm_violation.area_id -> xg_dorm_area.id
xg_dorm_violation.building_id -> xg_dorm_building.id
xg_dorm_violation.room_id -> xg_dorm_room.id
xg_dorm_violation.bed_id -> xg_dorm_bed.id
xg_dorm_violation.student_id -> xg_dorm_bed_student.student_id
```
#### 系统字典集成
违纪类型通过系统字典管理:
```sql
-- 字典关联
xg_dorm_violation.violation_type_dict -> sys_dict_data.dict_value
-- 其中 dict_type = 'dorm_violation_type'
```
#### 用户系统集成
发现人和处理人信息关联:
```sql
-- 关联关系
xg_dorm_violation.discoverer_id -> sys_user.user_id
xg_dorm_violation.handler_id -> sys_user.user_id
```
## 📊 索引设计
### 1. 基础查询索引
```sql
-- 核心查询索引
KEY `idx_student_id` (`student_id`) -- 按学生查询
KEY `idx_student_no` (`student_no`) -- 按学号查询
KEY `idx_college_id` (`college_id`) -- 按学院查询
KEY `idx_building_id` (`building_id`) -- 按宿舍楼查询
KEY `idx_room_id` (`room_id`) -- 按房间查询
KEY `idx_violation_type` (`violation_type_dict`) -- 按违纪类型查询
KEY `idx_violation_time` (`violation_time`) -- 按违纪时间查询
KEY `idx_record_status` (`record_status`) -- 按记录状态查询
KEY `idx_violation_level` (`violation_level`) -- 按违纪等级查询
KEY `idx_is_repeat` (`is_repeat`) -- 按重复违纪查询
```
### 2. 复合索引(统计优化)
```sql
-- 统计分析优化索引
KEY `idx_college_time` (`college_id`, `violation_time`)
KEY `idx_building_level` (`building_id`, `violation_level`)
KEY `idx_student_time` (`student_id`, `violation_time`)
KEY `idx_type_level` (`violation_type_dict`, `violation_level`)
KEY `idx_status_time` (`record_status`, `create_time`)
```
## 📈 业务逻辑设计
### 1. 违纪类型字典管理
```sql
-- 违纪类型编码规则
WS001001 - 垃圾乱扔(卫生类)
JL001001 - 晚归违纪(纪律类)
AQ001001 - 违规用电(安全类)
WP001001 - 损坏公物(物品类)
-- 编码格式:分类前缀 + 6位数字
-- WS: 卫生违纪, JL: 纪律违纪, AQ: 安全违纪, WP: 物品违纪
```
### 2. 附件OSS存储
```sql
-- 附件ID存储格式
attachment_oss_ids = "oss_id_1,oss_id_2,oss_id_3"
-- 解析方式
String[] ossIds = attachmentOssIds.split(",");
```
### 3. 违纪等级评分机制
```sql
-- 违纪等级与评分对应
'1' (轻微): 0-20分
'2' (一般): 21-40分
'3' (严重): 41-70分
'4' (特别严重): 71-100分
```
### 4. 记录状态流转
```sql
-- 简化状态流转
'1' (已记录) -> '2' (已确认) -> '3' (已归档)
```
### 5. 重复违纪检测
```sql
-- 检测逻辑
同一学生 + 相同违纪类型 + 时间窗口内 = 重复违纪
时间窗口: 当前学期或最近6个月
```
## 📋 数据字典
### 核心字典类型(5个)
| 字典类型 | 字典名称 | 说明 |
|---------|---------|------|
| dorm_violation_type | 宿舍违纪类型 | 12种违纪类型,按分类前缀编码 |
| dorm_violation_level | 违纪等级 | 轻微、一般、严重、特别严重 |
| dorm_discoverer_type | 发现人类型 | 宿管员、学生、巡查员、其他 |
| dorm_discovery_method | 发现方式 | 日常检查、举报、巡查、其他 |
| dorm_record_status | 违纪记录状态 | 已记录、已确认、已归档 |
### 违纪类型详细清单
#### 🧹 卫生违纪类(WS)
- **WS001001** - 垃圾乱扔:在宿舍内外乱扔垃圾
- **WS001002** - 床铺不整:床铺整理不规范
- **WS001003** - 物品摆放混乱:个人物品摆放不规范
#### ⏰ 纪律违纪类(JL)
- **JL001001** - 晚归违纪:超过规定时间归宿
- **JL001002** - 噪音扰民:在休息时间制造噪音
- **JL001003** - 夜不归宿:整夜未在宿舍住宿
#### ⚠️ 安全违纪类(AQ)
- **AQ001001** - 违规用电:使用违规电器或私拉电线
- **AQ001002** - 吸烟违纪:在宿舍内吸烟
- **AQ001003** - 明火使用:在宿舍内使用明火
#### 🛠️ 物品违纪类(WP)
- **WP001001** - 损坏公物:故意或过失损坏公共物品
- **WP001002** - 私改设施:私自改动宿舍设施
- **WP001003** - 盗用他人物品:盗用或损坏他人物品
## 🚀 性能优化
### 1. 查询优化策略
- **索引覆盖**:主要查询字段都有对应索引
- **复合索引**:统计查询使用复合索引优化
- **冗余字段**:避免复杂JOIN,直接查询单表
- **分页优化**:使用limit offset优化大数据量查询
### 2. 存储优化策略
- **OSS集成**:附件文件外部存储,减轻数据库压力
- **字符串存储**:附件ID使用逗号分隔,简化存储结构
- **数据压缩**:JSON格式存储复杂字段(如涉及其他学生信息)
### 3. 缓存策略
- **字典缓存**:违纪类型等字典数据Redis缓存
- **热点数据**:常用查询结果缓存
- **统计缓存**:定时更新统计数据缓存
## 📊 统计分析功能
### 1. 基础统计
- 按时间段的违纪记录统计
- 按学院、宿舍楼的违纪分布
- 按违纪类型的频次统计
- 违纪等级分布分析
### 2. 趋势分析
- 违纪记录的时间趋势
- 重复违纪学生识别
- 违纪热点区域分析
- 违纪类型变化趋势
### 3. 对比分析
- 不同学院违纪情况对比
- 不同宿舍楼违纪率对比
- 不同时间段违纪情况对比
## 🔒 数据安全设计
### 1. 敏感信息保护
- 学生身份信息的访问权限控制
- 违纪记录的查看权限分级
- OSS附件的安全访问控制
### 2. 审计追踪
- 完整的操作日志记录
- 数据变更的版本追踪
### 3. 数据备份
- 违纪记录的定期备份
- OSS附件的安全存储
- 历史数据的归档管理
## 📝 变更记录
| 版本 | 日期 | 变更内容 | 变更人 |
|------|------|----------|--------|
| V2.0.0 | 2025-01-28 | 超简化版设计:单表设计,违纪类型使用字典,附件使用OSS ID | 数据库设计团队 |
| V1.0.0 | 2025-01-28 | 简化版初始创建,专注违纪记录功能,移除处罚和审核模块 | 数据库设计团队 |
## 📄 相关文档
| 文档名称 | 文档路径 | 说明 |
|---------|---------|------|
| 建表脚本 | `宿舍违纪管理数据库建表脚本.sql` | 超简化版数据库建表SQL(仅1张表) |
| 数据字典 | `宿舍违纪管理数据字典配置.sql` | 超简化版字典配置(5个字典类型) |
| 宿舍管理设计 | `宿舍管理数据库设计.md` | 现有宿舍管理数据模型 |
| 数据库规范 | `../mysql-database-standard.md` | 项目数据库设计规范 |
## 🎯 功能特点
### 1. 超简化设计理念
- **单表设计**:所有功能集中在一张表,极大降低复杂度
- **字典驱动**:违纪类型通过系统字典管理,便于维护和扩展
- **OSS集成**:附件使用云存储,表中仅存储ID,简化文件管理
- **性能优先**:通过冗余存储避免复杂关联查询
### 2. 核心功能
- 违纪记录的增删改查
- 违纪类型的字典化管理
- 重复违纪的自动检测
- 附件文件的OSS存储管理
- 多维度的统计分析
### 3. 系统集成
- 充分复用现有宿舍管理数据结构
- 与用户管理系统无缝集成
- 与系统字典管理完美融合
- 遵循项目统一的数据库设计规范
## 🎯 技术优势
### 1. 开发效率
- **单表操作**:减少复杂的多表关联查询
- **字典管理**:违纪类型维护简单,无需修改表结构
- **OSS集成**:文件管理交给专业云服务,简化开发
### 2. 运维效率
- **部署简单**:只需创建一张表和几个字典
- **维护容易**:数据结构简单,问题排查快速
- **扩展灵活**:新增违纪类型只需添加字典项
### 3. 性能优势
- **查询高效**:单表查询,避免复杂JOIN
- **索引优化**:针对性的索引设计,支持高效统计
- **存储优化**:大文件外部存储,减轻数据库压力
## 🎯 后续扩展
### 1. 功能扩展方向
- 违纪预警和风险评估
- 违纪数据的智能分析
- 与学生综合评价系统的集成
- 移动端违纪上报功能
### 2. 性能扩展方向
- 大数据量的分表策略
- 实时统计和报表功能
- 违纪图片的AI识别功能
- 多校区数据的同步机制
### 3. 管理扩展方向
- 违纪数据的导出功能
- 与家长通知系统的对接(如需要)
- 违纪数据的开放API接口
- 历史数据的分析报告生成
## 💡 使用建议
### 1. 开发建议
- 使用单表DAO模式,简化数据访问层
- 违纪类型从字典缓存中获取,提高性能
- 附件上传直接到OSS,异步更新记录表
- 统计查询优先使用复合索引
### 2. 维护建议
- 定期清理OSS中的孤立文件
- 监控单表数据量,适时进行数据归档
- 定期更新字典缓存,保持数据一致性
- 建立完善的数据备份和恢复机制
### 3. 扩展建议
- 如需处罚功能,可单独增加处罚表关联违纪记录
- 如需工作流,可集成Warm-Flow框架
- 如需复杂统计,可考虑数据仓库方案
- 如需移动端,优先考虑API接口设计
@@ -0,0 +1,153 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import {
DormViolationVO,
DormViolationForm,
DormViolationQuery,
StudentOptionVO,
StudentOptionQuery,
CampusOptionVO,
AreaOptionVO,
BuildingOptionVO,
RoomOptionVO,
BedOptionVO
} from '@/api/xg/xgss/dormViolation/dormViolation/types';
/**
* 查询宿舍违纪记录列表
* @param query
* @returns {*}
*/
export const listDormViolation = (query?: DormViolationQuery): AxiosPromise<DormViolationVO[]> => {
return request({
url: '/dormViolation/dormViolation/list',
method: 'get',
params: query
});
};
/**
* 查询宿舍违纪记录详细
* @param id
*/
export const getDormViolation = (id: string | number): AxiosPromise<DormViolationVO> => {
return request({
url: '/dormViolation/dormViolation/' + id,
method: 'get'
});
};
/**
* 新增宿舍违纪记录
* @param data
*/
export const addDormViolation = (data: DormViolationForm) => {
return request({
url: '/dormViolation/dormViolation',
method: 'post',
data: data
});
};
/**
* 修改宿舍违纪记录
* @param data
*/
export const updateDormViolation = (data: DormViolationForm) => {
return request({
url: '/dormViolation/dormViolation',
method: 'put',
data: data
});
};
/**
* 删除宿舍违纪记录
* @param id
*/
export const delDormViolation = (id: string | number | Array<string | number>) => {
return request({
url: '/dormViolation/dormViolation/' + 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,483 @@
export interface DormViolationVO {
/**
* 违纪记录ID(主键)
*/
id: string | number;
/**
* 学生ID
*/
studentId: string | number;
/**
* 学生姓名
*/
studentName: string;
/**
* 学号
*/
studentNo: string;
/**
* 学院ID
*/
collegeId: string | number;
/**
* 学院名称
*/
collegeName: string;
/**
* 专业ID
*/
majorId: string | number;
/**
* 专业名称
*/
majorName: string;
/**
* 班级ID
*/
classId: string | number;
/**
* 班级名称
*/
className: string;
/**
* 校区ID
*/
campusId: string | number;
/**
* 校区名称
*/
campusName: string;
/**
* 宿舍区域ID
*/
areaId: string | number;
/**
* 宿舍区域名称
*/
areaName: string;
/**
* 宿舍楼ID
*/
buildingId: string | number;
/**
* 宿舍楼名称
*/
buildingName: string;
/**
* 宿舍房间ID
*/
roomId: string | number;
/**
* 房间名称
*/
roomName: string;
/**
* 床位ID
*/
bedId: string | number;
/**
* 床位名称
*/
bedName: string;
/**
* 违纪类型
*/
violationType: string;
/**
* 违纪等级:1轻微 2一般 3严重 4特别严重
*/
violationLevel: string;
/**
* 违纪发生时间
*/
violationTime: string;
/**
* 违纪行为描述
*/
violationDescription: string;
/**
* 涉及其他学生id(逗号分隔)
*/
involvedStudents: string;
/**
* 附件OSS ID列表(逗号分隔)
*/
attachmentOssIds: string | number;
/**
* 删除标志(0代表存在 1代表删除)
*/
deleted: string;
/**
* 备注
*/
remark: string;
}
export interface DormViolationForm extends BaseEntity {
/**
* 违纪记录ID(主键)
*/
id?: string | number;
/**
* 学生ID
*/
studentId?: string | number;
/**
* 学生姓名
*/
studentName?: string;
/**
* 学号
*/
studentNo?: string;
/**
* 学院ID
*/
collegeId?: string | number;
/**
* 学院名称
*/
collegeName?: string;
/**
* 专业ID
*/
majorId?: string | number;
/**
* 专业名称
*/
majorName?: string;
/**
* 班级ID
*/
classId?: string | number;
/**
* 班级名称
*/
className?: string;
/**
* 校区ID
*/
campusId?: string | number;
/**
* 校区名称
*/
campusName?: string;
/**
* 宿舍区域ID
*/
areaId?: string | number;
/**
* 宿舍区域名称
*/
areaName?: string;
/**
* 宿舍楼ID
*/
buildingId?: string | number;
/**
* 宿舍楼名称
*/
buildingName?: string;
/**
* 宿舍房间ID
*/
roomId?: string | number;
/**
* 房间名称
*/
roomName?: string;
/**
* 床位ID
*/
bedId?: string | number;
/**
* 床位名称
*/
bedName?: string;
/**
* 违纪类型
*/
violationType?: string;
/**
* 违纪等级:1轻微 2一般 3严重 4特别严重
*/
violationLevel?: string;
/**
* 违纪发生时间
*/
violationTime?: string;
/**
* 违纪行为描述
*/
violationDescription?: string;
/**
* 涉及其他学生id(逗号分隔)
*/
involvedStudents?: string;
/**
* 附件OSS ID列表(逗号分隔)
*/
attachmentOssIds?: string | number;
/**
* 删除标志(0代表存在 1代表删除)
*/
deleted?: string;
/**
* 备注
*/
remark?: string;
}
export interface DormViolationQuery extends PageQuery {
/**
* 学生ID
*/
studentId?: string | number;
/**
* 学生姓名
*/
studentName?: string;
/**
* 学号
*/
studentNo?: string;
/**
* 学院ID
*/
collegeId?: string | number;
/**
* 学院名称
*/
collegeName?: string;
/**
* 专业ID
*/
majorId?: string | number;
/**
* 专业名称
*/
majorName?: string;
/**
* 班级ID
*/
classId?: string | number;
/**
* 班级名称
*/
className?: string;
/**
* 校区ID
*/
campusId?: string | number;
/**
* 校区名称
*/
campusName?: string;
/**
* 宿舍区域ID
*/
areaId?: string | number;
/**
* 宿舍区域名称
*/
areaName?: string;
/**
* 宿舍楼ID
*/
buildingId?: string | number;
/**
* 宿舍楼名称
*/
buildingName?: string;
/**
* 宿舍房间ID
*/
roomId?: string | number;
/**
* 房间名称
*/
roomName?: string;
/**
* 床位ID
*/
bedId?: string | number;
/**
* 床位名称
*/
bedName?: string;
/**
* 违纪类型
*/
violationType?: string;
/**
* 违纪等级:1轻微 2一般 3严重 4特别严重
*/
violationLevel?: string;
/**
* 违纪发生时间
*/
violationTime?: string;
/**
* 违纪行为描述
*/
violationDescription?: string;
/**
* 涉及其他学生id(逗号分隔)
*/
involvedStudents?: string;
/**
* 附件OSS ID列表(逗号分隔)
*/
attachmentOssIds?: string | number;
/**
* 删除标志(0代表存在 1代表删除)
*/
deleted?: string;
/**
* 日期范围参数
*/
params?: any;
}
// 学生选择相关类型
export interface StudentOptionVO {
id: string | number;
name: string;
studentNo: string;
gender: string;
collegeId?: string | number;
collegeName?: string;
majorId?: string | number;
majorName?: string;
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 extends PageQuery {
keyword?: string;
}
// 宿舍级联选择相关类型
export interface CampusOptionVO {
id: string | number;
campusName: string;
}
export interface AreaOptionVO {
id: string | number;
areaName: string;
}
export interface BuildingOptionVO {
id: string | number;
buildingName: string;
}
export interface RoomOptionVO {
id: string | number;
roomName: string;
}
export interface BedOptionVO {
id: string | number;
bedName: string;
}
File diff suppressed because it is too large. Load diff