diff --git a/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod.yml b/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod.yml new file mode 100644 index 00000000..108a203e --- /dev/null +++ b/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application-prod.yml @@ -0,0 +1,48 @@ +server: + port: 9090 +spring: + application: + name: ruoyi-monitor-admin + profiles: + active: @profiles.active@ + +logging: + config: classpath:logback-plus.xml + +--- # 监控中心服务端配置 +spring: + security: + user: + name: @monitor.username@ + password: @monitor.password@ + boot: + admin: + ui: + title: RuoYi-Vue-Plus服务监控中心 + context-path: /admin + +--- # Actuator 监控端点的配置项 +management: + endpoints: + web: + exposure: + include: '*' + endpoint: + health: + show-details: ALWAYS + logfile: + external-file: ./logs/ruoyi-monitor-admin.log + +--- # 监控配置 +spring.boot.admin.client: + # 增加客户端开关 + enabled: true + # 设置 Spring Boot Admin Server 地址 + url: http://172.16.0.67:9090/admin + instance: + service-host-type: IP + metadata: + username: ${spring.boot.admin.client.username} + userpassword: ${spring.boot.admin.client.password} + username: @monitor.username@ + password: @monitor.password@ diff --git a/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application.yml b/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application.yml index 108a203e..86766d7a 100644 --- a/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application.yml +++ b/backend/ruoyi-extend/ruoyi-monitor-admin/src/main/resources/application.yml @@ -38,7 +38,7 @@ spring.boot.admin.client: # 增加客户端开关 enabled: true # 设置 Spring Boot Admin Server 地址 - url: http://172.16.0.67:9090/admin + url: http://127.0.0.1:9090/admin instance: service-host-type: IP metadata: diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgCollegeLeaderController.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgCollegeLeaderController.java new file mode 100644 index 00000000..a233ae10 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgCollegeLeaderController.java @@ -0,0 +1,123 @@ +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.XgCollegeLeaderVo; +import org.dromara.xg.domain.bo.XgCollegeLeaderBo; +import org.dromara.xg.service.IXgCollegeLeaderService; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; + +/** + * 二级学院分管领导配置 + * + * @author Cursor AI + * @date 2025-01-24 + */ +@Tag(name = "二级学院分管领导配置") +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/xg/ejxyfgld") +public class XgCollegeLeaderController extends BaseController { + + private final IXgCollegeLeaderService xgCollegeLeaderService; + + /** + * 查询二级学院分管领导配置列表 + */ + @Operation(summary = "查询二级学院分管领导配置列表") + @SaCheckPermission("xg:ejxyfgld:list") + @GetMapping("/list") + public TableDataInfo list(XgCollegeLeaderBo bo, PageQuery pageQuery) { + return xgCollegeLeaderService.queryPageList(bo, pageQuery); + } + + /** + * 根据学院ID查询分管领导列表 + */ + @Operation(summary = "根据学院ID查询分管领导列表") + @SaCheckPermission("xg:ejxyfgld:list") + @GetMapping("/listByCollege/{collegeId}") + public R> listByCollege(@PathVariable Long collegeId) { + List list = xgCollegeLeaderService.queryByCollegeId(collegeId); + return R.ok(list); + } + + /** + * 导出二级学院分管领导配置列表 + */ + @Operation(summary = "导出二级学院分管领导配置列表") + @SaCheckPermission("xg:ejxyfgld:export") + @Log(title = "二级学院分管领导配置", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XgCollegeLeaderBo bo, HttpServletResponse response) { + List list = xgCollegeLeaderService.queryList(bo); + ExcelUtil.exportExcel(list, "二级学院分管领导配置", XgCollegeLeaderVo.class, response); + } + + /** + * 获取二级学院分管领导配置详细信息 + * + * @param id 主键 + */ + @Operation(summary = "获取二级学院分管领导配置详细信息") + @SaCheckPermission("xg:ejxyfgld:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { + return R.ok(xgCollegeLeaderService.queryById(id)); + } + + /** + * 新增二级学院分管领导配置 + */ + @Operation(summary = "新增二级学院分管领导配置") + @SaCheckPermission("xg:ejxyfgld:add") + @Log(title = "二级学院分管领导配置", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XgCollegeLeaderBo bo) { + return toAjax(xgCollegeLeaderService.insertByBo(bo)); + } + + /** + * 修改二级学院分管领导配置 + */ + @Operation(summary = "修改二级学院分管领导配置") + @SaCheckPermission("xg:ejxyfgld:edit") + @Log(title = "二级学院分管领导配置", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XgCollegeLeaderBo bo) { + return toAjax(xgCollegeLeaderService.updateByBo(bo)); + } + + /** + * 删除二级学院分管领导配置 + * + * @param ids 主键串 + */ + @Operation(summary = "删除二级学院分管领导配置") + @SaCheckPermission("xg:ejxyfgld:remove") + @Log(title = "二级学院分管领导配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { + return toAjax(xgCollegeLeaderService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java index a41a700e..186c7943 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java @@ -823,6 +823,23 @@ public class XgStudentMsgController extends BaseController { return R.ok(approverUserIds); } + /** + * 根据学生ID获取二级学院分管领导ID列表 + * + * @param studentId 学生ID + * @return 分管领导ID列表 + */ + @SaCheckPermission("studentMsg:studentMsg:query") + @GetMapping("/getCollegeLeaders/{studentId}") + public R> getCollegeLeaders(@NotNull(message = "学生ID不能为空") @PathVariable Long studentId) { + log.info("根据学生ID获取二级学院分管领导ID列表 - 学生ID: {}", studentId); + List leaderIds = xgStudentMsgService.getCollegeLeadersByStudentId(studentId); + if (leaderIds.isEmpty()) { + return R.fail("未找到该学生所在学院的分管领导"); + } + return R.ok(leaderIds); + } + /** * 导入数据 * diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgSysUserController.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgSysUserController.java index ed10eac0..9997dd5f 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgSysUserController.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgSysUserController.java @@ -28,7 +28,7 @@ public class XgSysUserController extends BaseController { private final IXgSysUserService xgSysUserService; /** - * 查询有效用户列表 + * 查询有效用户列表(教职工account_type=1) */ @SaCheckPermission("xg:sysUser:list") @GetMapping("/activeList") diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgCollegeLeader.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgCollegeLeader.java new file mode 100644 index 00000000..08549ec2 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgCollegeLeader.java @@ -0,0 +1,61 @@ +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.io.Serial; + +/** + * 二级学院分管领导配置对象 xg_college_leader + * + * @author Cursor AI + * @date 2025-01-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xg_college_leader") +public class XgCollegeLeader extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID(雪花ID) + */ + @TableId(value = "id") + private Long id; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic(value = "0", delval = "1") + private Long deleted; + + /** + * 二级学院ID,关联sys_dept.dept_id + */ + private Long collegeId; + + /** + * 二级学院名称 + */ + private String collegeName; + + /** + * 分管领导ID,关联sys_user.user_id + */ + private Long leaderId; + + /** + * 分管领导姓名 + */ + private String leaderName; + + /** + * 备注信息 + */ + private String remark; + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgSysUser.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgSysUser.java index cd893516..d6528aff 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgSysUser.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgSysUser.java @@ -27,6 +27,11 @@ public class XgSysUser extends TenantEntity { @TableId(value = "user_id") private Long userId; + /** + * 用户账号 + */ + private String userName; + /** * 用户昵称 */ diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgCollegeLeaderBo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgCollegeLeaderBo.java new file mode 100644 index 00000000..e94dcaf6 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgCollegeLeaderBo.java @@ -0,0 +1,61 @@ +package org.dromara.xg.domain.bo; + +import org.dromara.xg.domain.XgCollegeLeader; +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.*; + +/** + * 二级学院分管领导配置业务对象 xg_college_leader + * + * @author Cursor AI + * @date 2025-01-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XgCollegeLeader.class, reverseConvertGenerate = false) +public class XgCollegeLeaderBo extends BaseEntity { + + /** + * 主键ID(雪花ID) + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 删除标志(0代表存在 1代表删除) + */ + private Long deleted; + + /** + * 二级学院ID,关联sys_dept.dept_id + */ + @NotNull(message = "二级学院不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long collegeId; + + /** + * 二级学院名称 + */ + private String collegeName; + + /** + * 分管领导ID,关联sys_user.user_id + */ + @NotNull(message = "分管领导不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long leaderId; + + /** + * 分管领导姓名 + */ + private String leaderName; + + /** + * 备注信息 + */ + private String remark; + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgCollegeLeaderVo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgCollegeLeaderVo.java new file mode 100644 index 00000000..71ad5900 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgCollegeLeaderVo.java @@ -0,0 +1,88 @@ +package org.dromara.xg.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.xg.domain.XgCollegeLeader; +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; + +/** + * 二级学院分管领导配置视图对象 xg_college_leader + * + * @author Cursor AI + * @date 2025-01-24 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XgCollegeLeader.class) +public class XgCollegeLeaderVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID(雪花ID) + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 二级学院ID,关联sys_dept.dept_id + */ + @ExcelProperty(value = "二级学院ID") + private Long collegeId; + + /** + * 二级学院名称 + */ + @ExcelProperty(value = "二级学院名称") + private String collegeName; + + /** + * 分管领导ID,关联sys_user.user_id + */ + @ExcelProperty(value = "分管领导ID") + private Long leaderId; + + /** + * 分管领导姓名 + */ + @ExcelProperty(value = "分管领导姓名") + private String leaderName; + + /** + * 备注信息 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建者 + */ + 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; + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgCollegeLeaderMapper.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgCollegeLeaderMapper.java new file mode 100644 index 00000000..b2ce068a --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgCollegeLeaderMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xg.mapper; + +import org.dromara.xg.domain.XgCollegeLeader; +import org.dromara.xg.domain.vo.XgCollegeLeaderVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 二级学院分管领导配置Mapper接口 + * + * @author Cursor AI + * @date 2025-01-24 + */ +public interface XgCollegeLeaderMapper extends BaseMapperPlus { + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentMsgMapper.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentMsgMapper.java index 5e3bfc8f..155ef255 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentMsgMapper.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentMsgMapper.java @@ -19,87 +19,95 @@ import java.util.Map; */ public interface XgStudentMsgMapper extends BaseMapperPlus { - /** - * 根据组织ID列表分页查询学生信息 用于导出 - * - * @param page 分页参数 - * @param queryWrapper 查询条件 - * @param deptIds 组织ID列表 - * @return 学生信息分页结果 - */ - List queryPageListExportByDeptId( - @Param("ew") LambdaQueryWrapper queryWrapper, - @Param("deptIds") List deptIds); + /** + * 根据组织ID列表分页查询学生信息 用于导出 + * + * @param page 分页参数 + * @param queryWrapper 查询条件 + * @param deptIds 组织ID列表 + * @return 学生信息分页结果 + */ + List queryPageListExportByDeptId( + @Param("ew") LambdaQueryWrapper queryWrapper, + @Param("deptIds") List deptIds); - /** - * 根据组织ID列表分页查询学生信息 - * - * @param page 分页参数 - * @param queryWrapper 查询条件 - * @param deptIds 组织ID列表 - * @return 学生信息分页结果 - */ - Page selectPageByDeptIds(@Param("page") Page page, - @Param("ew") LambdaQueryWrapper queryWrapper, - @Param("deptIds") List deptIds); + /** + * 根据组织ID列表分页查询学生信息 + * + * @param page 分页参数 + * @param queryWrapper 查询条件 + * @param deptIds 组织ID列表 + * @return 学生信息分页结果 + */ + Page selectPageByDeptIds(@Param("page") Page page, + @Param("ew") LambdaQueryWrapper queryWrapper, + @Param("deptIds") List deptIds); - /** - * 根据班级ID和姓名查询学生信息列表 - * - * @param classId 班级ID - * @param name 学生姓名(模糊查询) - * @return 学生信息列表 - */ - List selectStudentsByClassId(@Param("classId") String classId, @Param("name") String name); + /** + * 根据班级ID和姓名查询学生信息列表 + * + * @param classId 班级ID + * @param name 学生姓名(模糊查询) + * @return 学生信息列表 + */ + List selectStudentsByClassId(@Param("classId") String classId, @Param("name") String name); - /** - * 根据学生ID查询班主任ID - * - * @param studentId 学生ID - * @return 班主任ID - */ - Long selectClassTeacherIdByStudentId(@Param("studentId") Long studentId); + /** + * 根据学生ID查询班主任ID + * + * @param studentId 学生ID + * @return 班主任ID + */ + Long selectClassTeacherIdByStudentId(@Param("studentId") Long studentId); - /** - * 根据学生ID查询学院ID - * - * @param studentId 学生ID - * @return 学院ID - */ - Long selectCollegeIdByStudentId(@Param("studentId") Long studentId); + /** + * 根据学生ID查询学院ID + * + * @param studentId 学生ID + * @return 学院ID + */ + Long selectCollegeIdByStudentId(@Param("studentId") Long studentId); - /** - * 根据学院ID和角色Key查询具备该角色的用户列表 - * - * @param collegeId 学院ID - * @param roleKey 角色Key - * @return 用户ID列表 - */ - List selectUserIdsByCollegeIdAndRoleKey(@Param("collegeId") Long collegeId, - @Param("roleKey") String roleKey); + /** + * 根据学院ID和角色Key查询具备该角色的用户列表 + * + * @param collegeId 学院ID + * @param roleKey 角色Key + * @return 用户ID列表 + */ + List selectUserIdsByCollegeIdAndRoleKey(@Param("collegeId") Long collegeId, + @Param("roleKey") String roleKey); - /** - * 查询二级学院下的学院、专业、班级学生统计信息 - * - * @param secondaryCollegeId 二级学院ID - * @return 学生统计信息列表 - */ - List> getCollegeStudentStats(@Param("secondaryCollegeId") Long secondaryCollegeId); + /** + * 根据学院ID查询二级学院分管领导ID列表 + * + * @param collegeId 学院ID + * @return 分管领导ID列表 + */ + List selectCollegeLeaderIdsByCollegeId(@Param("collegeId") Long collegeId); - /** - * 查询二级学院下的学院、专业、班级学生统计信息(按床位分配统计) - * - * @param secondaryCollegeId 二级学院ID - * @return 学生统计信息列表 - */ - List> getCollegeStudentStatsByClass(@Param("secondaryCollegeId") Long secondaryCollegeId); + /** + * 查询二级学院下的学院、专业、班级学生统计信息 + * + * @param secondaryCollegeId 二级学院ID + * @return 学生统计信息列表 + */ + List> getCollegeStudentStats(@Param("secondaryCollegeId") Long secondaryCollegeId); - /** - * 查询二级学院下的学院床位分配统计信息(基于college_id统计) - * - * @param secondaryCollegeId 二级学院ID - * @return 学院床位分配统计信息列表 - */ - List> getCollegeBedAssignmentStats(@Param("secondaryCollegeId") Long secondaryCollegeId); + /** + * 查询二级学院下的学院、专业、班级学生统计信息(按床位分配统计) + * + * @param secondaryCollegeId 二级学院ID + * @return 学生统计信息列表 + */ + List> getCollegeStudentStatsByClass(@Param("secondaryCollegeId") Long secondaryCollegeId); + + /** + * 查询二级学院下的学院床位分配统计信息(基于college_id统计) + * + * @param secondaryCollegeId 二级学院ID + * @return 学院床位分配统计信息列表 + */ + List> getCollegeBedAssignmentStats(@Param("secondaryCollegeId") Long secondaryCollegeId); } diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgCollegeLeaderService.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgCollegeLeaderService.java new file mode 100644 index 00000000..915752ea --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgCollegeLeaderService.java @@ -0,0 +1,76 @@ +package org.dromara.xg.service; + +import org.dromara.xg.domain.vo.XgCollegeLeaderVo; +import org.dromara.xg.domain.bo.XgCollegeLeaderBo; +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 Cursor AI + * @date 2025-01-24 + */ +public interface IXgCollegeLeaderService { + + /** + * 查询二级学院分管领导配置 + * + * @param id 主键 + * @return 二级学院分管领导配置 + */ + XgCollegeLeaderVo queryById(Long id); + + /** + * 分页查询二级学院分管领导配置列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 二级学院分管领导配置分页列表 + */ + TableDataInfo queryPageList(XgCollegeLeaderBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的二级学院分管领导配置列表 + * + * @param bo 查询条件 + * @return 二级学院分管领导配置列表 + */ + List queryList(XgCollegeLeaderBo bo); + + /** + * 新增二级学院分管领导配置 + * + * @param bo 二级学院分管领导配置 + * @return 是否新增成功 + */ + Boolean insertByBo(XgCollegeLeaderBo bo); + + /** + * 修改二级学院分管领导配置 + * + * @param bo 二级学院分管领导配置 + * @return 是否修改成功 + */ + Boolean updateByBo(XgCollegeLeaderBo bo); + + /** + * 校验并批量删除二级学院分管领导配置信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 根据学院ID查询分管领导列表 + * + * @param collegeId 学院ID + * @return 分管领导列表 + */ + List queryByCollegeId(Long collegeId); +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentMsgService.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentMsgService.java index fe89c09c..030c9bd8 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentMsgService.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentMsgService.java @@ -140,6 +140,14 @@ public interface IXgStudentMsgService { */ List getCollegeLeaveApproversByStudentId(Long studentId); + /** + * 根据学生ID获取二级学院分管领导ID列表 + * + * @param studentId 学生ID + * @return 分管领导ID列表 + */ + List getCollegeLeadersByStudentId(Long studentId); + /** * 批量申请床位 * diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgCollegeLeaderServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgCollegeLeaderServiceImpl.java new file mode 100644 index 00000000..dac2b934 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgCollegeLeaderServiceImpl.java @@ -0,0 +1,163 @@ +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.springframework.transaction.annotation.Transactional; +import org.dromara.xg.domain.bo.XgCollegeLeaderBo; +import org.dromara.xg.domain.vo.XgCollegeLeaderVo; +import org.dromara.xg.domain.XgCollegeLeader; +import org.dromara.xg.mapper.XgCollegeLeaderMapper; +import org.dromara.xg.service.IXgCollegeLeaderService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 二级学院分管领导配置Service业务层处理 + * + * @author Cursor AI + * @date 2025-01-24 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class XgCollegeLeaderServiceImpl implements IXgCollegeLeaderService { + + private final XgCollegeLeaderMapper baseMapper; + + /** + * 查询二级学院分管领导配置 + * + * @param id 主键 + * @return 二级学院分管领导配置 + */ + @Override + public XgCollegeLeaderVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 分页查询二级学院分管领导配置列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 二级学院分管领导配置分页列表 + */ + @Override + public TableDataInfo queryPageList(XgCollegeLeaderBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的二级学院分管领导配置列表 + * + * @param bo 查询条件 + * @return 二级学院分管领导配置列表 + */ + @Override + public List queryList(XgCollegeLeaderBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + /** + * 根据学院ID查询分管领导列表 + * + * @param collegeId 学院ID + * @return 分管领导列表 + */ + @Override + public List queryByCollegeId(Long collegeId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(XgCollegeLeader::getCollegeId, collegeId); + lqw.orderByDesc(XgCollegeLeader::getCreateTime); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XgCollegeLeaderBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getCollegeId() != null, XgCollegeLeader::getCollegeId, bo.getCollegeId()); + lqw.like(StringUtils.isNotBlank(bo.getCollegeName()), XgCollegeLeader::getCollegeName, bo.getCollegeName()); + lqw.eq(bo.getLeaderId() != null, XgCollegeLeader::getLeaderId, bo.getLeaderId()); + lqw.like(StringUtils.isNotBlank(bo.getLeaderName()), XgCollegeLeader::getLeaderName, bo.getLeaderName()); + lqw.orderByDesc(XgCollegeLeader::getCreateTime); + return lqw; + } + + /** + * 新增二级学院分管领导配置 + * + * @param bo 二级学院分管领导配置 + * @return 是否新增成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertByBo(XgCollegeLeaderBo bo) { + XgCollegeLeader add = MapstructUtils.convert(bo, XgCollegeLeader.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改二级学院分管领导配置 + * + * @param bo 二级学院分管领导配置 + * @return 是否修改成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateByBo(XgCollegeLeaderBo bo) { + XgCollegeLeader update = MapstructUtils.convert(bo, XgCollegeLeader.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XgCollegeLeader entity) { + // 校验是否已存在相同的配置 + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(XgCollegeLeader::getCollegeId, entity.getCollegeId()); + lqw.eq(XgCollegeLeader::getLeaderId, entity.getLeaderId()); + if (entity.getId() != null) { + lqw.ne(XgCollegeLeader::getId, entity.getId()); + } + long count = baseMapper.selectCount(lqw); + if (count > 0) { + throw new RuntimeException("该学院已配置此分管领导,不能重复配置!"); + } + } + + /** + * 校验并批量删除二级学院分管领导配置信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + // 可以添加业务校验逻辑 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java index 654d757e..af3095f1 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java @@ -1095,6 +1095,32 @@ public class XgStudentMsgServiceImpl implements IXgStudentMsgService { return approverUserIds; } + /** + * 根据学生ID获取二级学院分管领导ID列表 + * + * @param studentId 学生ID + * @return 分管领导ID列表 + */ + @Override + public List getCollegeLeadersByStudentId(Long studentId) { + log.info("根据学生ID获取二级学院分管领导ID列表 - 学生ID: {}", studentId); + + // 1. 根据学生ID查询学院ID + Long collegeId = baseMapper.selectCollegeIdByStudentId(studentId); + if (collegeId == null) { + log.warn("未找到学生对应的学院信息 - 学生ID: {}", studentId); + return new ArrayList<>(); + } + + log.info("学生所在学院ID: {}", collegeId); + + // 2. 根据学院ID查询二级学院分管领导ID列表 + List leaderIds = baseMapper.selectCollegeLeaderIdsByCollegeId(collegeId); + + log.info("找到的二级学院分管领导数量: {}", leaderIds.size()); + return leaderIds; + } + /** * 批量申请床位 * diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/ejxyfgld/XgCollegeLeaderMapper.xml b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/ejxyfgld/XgCollegeLeaderMapper.xml new file mode 100644 index 00000000..91d2a198 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/ejxyfgld/XgCollegeLeaderMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentMsg/XgStudentMsgMapper.xml b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentMsg/XgStudentMsgMapper.xml index 1c7de23c..64ddfac8 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentMsg/XgStudentMsgMapper.xml +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentMsg/XgStudentMsgMapper.xml @@ -171,6 +171,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND (d.dept_id = #{collegeId} OR FIND_IN_SET(#{collegeId}, d.ancestors)) + + + - select user_id, nick_name, phonenumber + select user_id, user_name, nick_name, phonenumber, account_type from sys_user where status = '0' and del_flag = '0' order by create_time desc @@ -26,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"