From a884f695eac16ad63e57392e94a67d5b1aede3c5 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Sat, 16 Aug 2025 06:57:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/XgDormViolationController.java | 28 +- .../xg/mapper/XgDormViolationMapper.java | 21 + .../xg/service/IXgDormViolationService.java | 19 + .../impl/XgDormViolationServiceImpl.java | 48 +- .../dormViolation/XgDormViolationMapper.xml | 114 +++ .../xgss/dormViolation/dormViolation/index.ts | 18 +- .../xgss/dormViolation/dormViolation/types.ts | 4 +- .../dormViolation/dormViolation/index.vue | 702 +++++++++++++++--- 8 files changed, 847 insertions(+), 107 deletions(-) diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgDormViolationController.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgDormViolationController.java index c2d72c69..9f2eee68 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgDormViolationController.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgDormViolationController.java @@ -19,6 +19,8 @@ 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.domain.vo.StudentOptionVo; +import org.dromara.xg.domain.bo.StudentOptionBo; import org.dromara.xg.service.IXgDormViolationService; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -63,8 +65,7 @@ public class XgDormViolationController extends BaseController { */ @SaCheckPermission("dormViolation:dormViolation:query") @GetMapping("/{id}") - public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable Long id) { + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { return R.ok(xgDormViolationService.queryById(id)); } @@ -98,8 +99,27 @@ public class XgDormViolationController extends BaseController { @SaCheckPermission("dormViolation:dormViolation:remove") @Log(title = "宿舍违纪记录", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long[] ids) { + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { return toAjax(xgDormViolationService.deleteWithValidByIds(List.of(ids), true)); } + + /** + * 获取学生选择器选项列表(支持按学号、姓名检索) + */ + @SaCheckPermission("dormViolation:dormViolation:list") + @GetMapping("/studentOptions") + public TableDataInfo getStudentOptions(StudentOptionBo bo, PageQuery pageQuery) { + return xgDormViolationService.getStudentOptions(bo, pageQuery); + } + + /** + * 根据学生ID获取学生详细信息 + * + * @param studentId 学生ID + */ + @SaCheckPermission("dormViolation:dormViolation:list") + @GetMapping("/student/{studentId}") + public R getStudentById(@NotNull(message = "学生ID不能为空") @PathVariable Long studentId) { + return R.ok(xgDormViolationService.getStudentById(studentId)); + } } diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgDormViolationMapper.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgDormViolationMapper.java index 0ceceed4..5725073c 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgDormViolationMapper.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgDormViolationMapper.java @@ -2,7 +2,12 @@ package org.dromara.xg.mapper; import org.dromara.xg.domain.XgDormViolation; import org.dromara.xg.domain.vo.XgDormViolationVo; +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接口 @@ -12,4 +17,20 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface XgDormViolationMapper extends BaseMapperPlus { + /** + * 查询学生选择器选项列表(支持按学号、姓名检索) + * + * @param page 分页参数 + * @param bo 查询条件 + * @return 学生选项列表 + */ + Page selectStudentOptions(IPage page, @Param("bo") StudentOptionBo bo); + + /** + * 根据学生ID获取学生详细信息 + * + * @param studentId 学生ID + * @return 学生详细信息 + */ + StudentOptionVo selectStudentById(@Param("studentId") Long studentId); } diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgDormViolationService.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgDormViolationService.java index 3a2f9d52..87671bcc 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgDormViolationService.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgDormViolationService.java @@ -2,6 +2,8 @@ package org.dromara.xg.service; import org.dromara.xg.domain.vo.XgDormViolationVo; import org.dromara.xg.domain.bo.XgDormViolationBo; +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; @@ -65,4 +67,21 @@ public interface IXgDormViolationService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 获取学生选择器选项列表(支持按学号、姓名检索) + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 学生选项分页列表 + */ + TableDataInfo getStudentOptions(StudentOptionBo bo, PageQuery pageQuery); + + /** + * 根据学生ID获取学生详细信息 + * + * @param studentId 学生ID + * @return 学生详细信息 + */ + StudentOptionVo getStudentById(Long studentId); } diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormViolationServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormViolationServiceImpl.java index dd4d3d09..d897c39e 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormViolationServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormViolationServiceImpl.java @@ -12,6 +12,8 @@ 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.bo.StudentOptionBo; +import org.dromara.xg.domain.vo.StudentOptionVo; import org.dromara.xg.domain.XgDormViolation; import org.dromara.xg.mapper.XgDormViolationMapper; import org.dromara.xg.service.IXgDormViolationService; @@ -40,7 +42,7 @@ public class XgDormViolationServiceImpl implements IXgDormViolationService { * @return 宿舍违纪记录 */ @Override - public XgDormViolationVo queryById(Long id){ + public XgDormViolationVo queryById(Long id) { return baseMapper.selectVoById(id); } @@ -94,11 +96,15 @@ public class XgDormViolationServiceImpl implements IXgDormViolationService { 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(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.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; } @@ -136,8 +142,8 @@ public class XgDormViolationServiceImpl implements IXgDormViolationService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(XgDormViolation entity){ - //TODO 做一些数据校验,如唯一约束 + private void validEntityBeforeSave(XgDormViolation entity) { + // TODO 做一些数据校验,如唯一约束 } /** @@ -149,9 +155,33 @@ public class XgDormViolationServiceImpl implements IXgDormViolationService { */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 + if (isValid) { + // TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 获取学生选择器选项列表(支持按学号、姓名检索) + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 学生选项分页列表 + */ + @Override + public TableDataInfo getStudentOptions(StudentOptionBo bo, PageQuery pageQuery) { + Page result = baseMapper.selectStudentOptions(pageQuery.build(), bo); + return TableDataInfo.build(result); + } + + /** + * 根据学生ID获取学生详细信息 + * + * @param studentId 学生ID + * @return 学生详细信息 + */ + @Override + public StudentOptionVo getStudentById(Long studentId) { + return baseMapper.selectStudentById(studentId); + } } diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/dormViolation/XgDormViolationMapper.xml b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/dormViolation/XgDormViolationMapper.xml index 48e937cb..46ec6588 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/dormViolation/XgDormViolationMapper.xml +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/dormViolation/XgDormViolationMapper.xml @@ -4,4 +4,118 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/api/xg/xgss/dormViolation/dormViolation/index.ts b/web/src/api/xg/xgss/dormViolation/dormViolation/index.ts index f7ed5e2a..7c90349c 100644 --- a/web/src/api/xg/xgss/dormViolation/dormViolation/index.ts +++ b/web/src/api/xg/xgss/dormViolation/dormViolation/index.ts @@ -78,12 +78,14 @@ export const delDormViolation = (id: string | number | Array) = * @param query 查询参数 * @returns 学生选项列表 */ -export const getStudentOptions = (query?: StudentOptionQuery): AxiosPromise<{ +export const getStudentOptions = ( + query?: StudentOptionQuery +): AxiosPromise<{ total: number; rows: StudentOptionVO[]; }> => { return request({ - url: '/holidayStay/holidayStay/studentOptions', + url: '/dormViolation/dormViolation/studentOptions', method: 'get', params: query }); @@ -151,3 +153,15 @@ export const getBedOptions = (roomId?: string | number): AxiosPromise => params: roomId ? { roomId } : undefined }); }; + +/** + * 根据学生ID获取学生详细信息 + * @param studentId 学生ID + * @returns 学生详细信息 + */ +export const getStudentById = (studentId: string | number): AxiosPromise => { + return request({ + url: `/dormViolation/dormViolation/student/${studentId}`, + method: 'get' + }); +}; diff --git a/web/src/api/xg/xgss/dormViolation/dormViolation/types.ts b/web/src/api/xg/xgss/dormViolation/dormViolation/types.ts index 6d4452f7..aa8ba67b 100644 --- a/web/src/api/xg/xgss/dormViolation/dormViolation/types.ts +++ b/web/src/api/xg/xgss/dormViolation/dormViolation/types.ts @@ -263,9 +263,9 @@ export interface DormViolationForm extends BaseEntity { violationDescription?: string; /** - * 涉及其他学生id(逗号分隔) + * 涉及其他学生id(逗号分隔)或数组 */ - involvedStudents?: string; + involvedStudents?: string | (string | number)[]; /** * 附件OSS ID列表(逗号分隔) diff --git a/web/src/views/xg/xgss/dormViolation/dormViolation/index.vue b/web/src/views/xg/xgss/dormViolation/dormViolation/index.vue index 9756eb8b..8a651e7c 100644 --- a/web/src/views/xg/xgss/dormViolation/dormViolation/index.vue +++ b/web/src/views/xg/xgss/dormViolation/dormViolation/index.vue @@ -106,7 +106,7 @@ >修改 - + 导出 @@ -126,47 +126,47 @@ - - + - + - + - + - + - + - + - + - + - + - - - + + + - +