From 826f6101f707fd8c2ec04543c5045e939460b86d Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Mon, 18 Aug 2025 22:05:52 +0800 Subject: [PATCH 1/5] =?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 --- backend/ruoyi-admin/pom.xml | 4 +- backend/ruoyi-modules/pom.xml | 1 + .../XskhDisciplineTypeController.java | 105 ++++++ .../controller/XskhRewardTypeController.java | 105 ++++++ .../xskh/domain/XskhDisciplineType.java | 67 ++++ .../dromara/xskh/domain/XskhRewardType.java | 62 ++++ .../xskh/domain/bo/XskhDisciplineTypeBo.java | 68 ++++ .../xskh/domain/bo/XskhRewardTypeBo.java | 62 ++++ .../xskh/domain/vo/XskhDisciplineTypeVo.java | 82 +++++ .../xskh/domain/vo/XskhRewardTypeVo.java | 75 ++++ .../xskh/mapper/XskhDisciplineTypeMapper.java | 15 + .../xskh/mapper/XskhRewardTypeMapper.java | 15 + .../service/IXskhDisciplineTypeService.java | 68 ++++ .../xskh/service/IXskhRewardTypeService.java | 68 ++++ .../impl/XskhDisciplineTypeServiceImpl.java | 137 +++++++ .../impl/XskhRewardTypeServiceImpl.java | 137 +++++++ .../XskhDisciplineTypeMapper.xml | 7 + .../rewardType/XskhRewardTypeMapper.xml | 7 + .../学生考核管理/学生考核管理字典数据.sql | 22 +- .../disciplineType/disciplineType/index.ts | 63 ++++ .../disciplineType/disciplineType/types.ts | 126 +++++++ .../api/xskh/rewardType/rewardType/index.ts | 63 ++++ .../api/xskh/rewardType/rewardType/types.ts | 116 ++++++ web/src/views/xskh/disciplineType/index.vue | 343 ++++++++++++++++++ web/src/views/xskh/rewardType/index.vue | 272 ++++++++++++++ 25 files changed, 2070 insertions(+), 20 deletions(-) create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhDisciplineTypeController.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhRewardTypeController.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhDisciplineType.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhRewardType.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhDisciplineTypeBo.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhRewardTypeBo.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhDisciplineTypeVo.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhRewardTypeVo.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhDisciplineTypeMapper.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhRewardTypeMapper.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhDisciplineTypeService.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhRewardTypeService.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhDisciplineTypeServiceImpl.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhRewardTypeServiceImpl.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/disciplineType/XskhDisciplineTypeMapper.xml create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/rewardType/XskhRewardTypeMapper.xml create mode 100644 web/src/api/xskh/disciplineType/disciplineType/index.ts create mode 100644 web/src/api/xskh/disciplineType/disciplineType/types.ts create mode 100644 web/src/api/xskh/rewardType/rewardType/index.ts create mode 100644 web/src/api/xskh/rewardType/rewardType/types.ts create mode 100644 web/src/views/xskh/disciplineType/index.vue create mode 100644 web/src/views/xskh/rewardType/index.vue diff --git a/backend/ruoyi-admin/pom.xml b/backend/ruoyi-admin/pom.xml index 3817f9f5..982b4ac9 100644 --- a/backend/ruoyi-admin/pom.xml +++ b/backend/ruoyi-admin/pom.xml @@ -136,11 +136,11 @@ - + org.dromara diff --git a/backend/ruoyi-modules/pom.xml b/backend/ruoyi-modules/pom.xml index 2983d764..f403571a 100644 --- a/backend/ruoyi-modules/pom.xml +++ b/backend/ruoyi-modules/pom.xml @@ -23,6 +23,7 @@ ruoyi-rs ruoyi-xljk ruoyi-jcbt + ruoyi-xskh diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhDisciplineTypeController.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhDisciplineTypeController.java new file mode 100644 index 00000000..4a345895 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhDisciplineTypeController.java @@ -0,0 +1,105 @@ +package org.dromara.xskh.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.xskh.domain.vo.XskhDisciplineTypeVo; +import org.dromara.xskh.domain.bo.XskhDisciplineTypeBo; +import org.dromara.xskh.service.IXskhDisciplineTypeService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 学生违纪处分类型 + * + * @author zlwu + * @date 2025-08-18 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/disciplineType/disciplineType") +public class XskhDisciplineTypeController extends BaseController { + + private final IXskhDisciplineTypeService xskhDisciplineTypeService; + + /** + * 查询学生违纪处分类型列表 + */ + @SaCheckPermission("disciplineType:disciplineType:list") + @GetMapping("/list") + public TableDataInfo list(XskhDisciplineTypeBo bo, PageQuery pageQuery) { + return xskhDisciplineTypeService.queryPageList(bo, pageQuery); + } + + /** + * 导出学生违纪处分类型列表 + */ + @SaCheckPermission("disciplineType:disciplineType:export") + @Log(title = "学生违纪处分类型", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XskhDisciplineTypeBo bo, HttpServletResponse response) { + List list = xskhDisciplineTypeService.queryList(bo); + ExcelUtil.exportExcel(list, "学生违纪处分类型", XskhDisciplineTypeVo.class, response); + } + + /** + * 获取学生违纪处分类型详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("disciplineType:disciplineType:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xskhDisciplineTypeService.queryById(id)); + } + + /** + * 新增学生违纪处分类型 + */ + @SaCheckPermission("disciplineType:disciplineType:add") + @Log(title = "学生违纪处分类型", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XskhDisciplineTypeBo bo) { + return toAjax(xskhDisciplineTypeService.insertByBo(bo)); + } + + /** + * 修改学生违纪处分类型 + */ + @SaCheckPermission("disciplineType:disciplineType:edit") + @Log(title = "学生违纪处分类型", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XskhDisciplineTypeBo bo) { + return toAjax(xskhDisciplineTypeService.updateByBo(bo)); + } + + /** + * 删除学生违纪处分类型 + * + * @param ids 主键串 + */ + @SaCheckPermission("disciplineType:disciplineType:remove") + @Log(title = "学生违纪处分类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xskhDisciplineTypeService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhRewardTypeController.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhRewardTypeController.java new file mode 100644 index 00000000..0a74a6a1 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhRewardTypeController.java @@ -0,0 +1,105 @@ +package org.dromara.xskh.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.xskh.domain.vo.XskhRewardTypeVo; +import org.dromara.xskh.domain.bo.XskhRewardTypeBo; +import org.dromara.xskh.service.IXskhRewardTypeService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 学生奖励类型 + * + * @author Lion Li + * @date 2025-08-18 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/rewardType/rewardType") +public class XskhRewardTypeController extends BaseController { + + private final IXskhRewardTypeService xskhRewardTypeService; + + /** + * 查询学生奖励类型列表 + */ + @SaCheckPermission("rewardType:rewardType:list") + @GetMapping("/list") + public TableDataInfo list(XskhRewardTypeBo bo, PageQuery pageQuery) { + return xskhRewardTypeService.queryPageList(bo, pageQuery); + } + + /** + * 导出学生奖励类型列表 + */ + @SaCheckPermission("rewardType:rewardType:export") + @Log(title = "学生奖励类型", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XskhRewardTypeBo bo, HttpServletResponse response) { + List list = xskhRewardTypeService.queryList(bo); + ExcelUtil.exportExcel(list, "学生奖励类型", XskhRewardTypeVo.class, response); + } + + /** + * 获取学生奖励类型详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("rewardType:rewardType:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xskhRewardTypeService.queryById(id)); + } + + /** + * 新增学生奖励类型 + */ + @SaCheckPermission("rewardType:rewardType:add") + @Log(title = "学生奖励类型", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XskhRewardTypeBo bo) { + return toAjax(xskhRewardTypeService.insertByBo(bo)); + } + + /** + * 修改学生奖励类型 + */ + @SaCheckPermission("rewardType:rewardType:edit") + @Log(title = "学生奖励类型", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XskhRewardTypeBo bo) { + return toAjax(xskhRewardTypeService.updateByBo(bo)); + } + + /** + * 删除学生奖励类型 + * + * @param ids 主键串 + */ + @SaCheckPermission("rewardType:rewardType:remove") + @Log(title = "学生奖励类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xskhRewardTypeService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhDisciplineType.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhDisciplineType.java new file mode 100644 index 00000000..62342129 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhDisciplineType.java @@ -0,0 +1,67 @@ +package org.dromara.xskh.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 学生违纪处分类型对象 xskh_discipline_type + * + * @author zlwu + * @date 2025-08-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xskh_discipline_type") +public class XskhDisciplineType extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 类型编码 + */ + private String typeCode; + + /** + * 类型名称 + */ + private String typeName; + + /** + * 类型分类(1-违纪类型 2-处分类型) + */ + private String typeCategory; + + /** + * 类型说明 + */ + private String remark; + + /** + * 状态(0-正常 1-停用) + */ + private String status; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 删除标志(0-未删除 1-已删除) + */ + @TableLogic(value = "0", delval = "1") + private Long deleted; + + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhRewardType.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhRewardType.java new file mode 100644 index 00000000..b9086710 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhRewardType.java @@ -0,0 +1,62 @@ +package org.dromara.xskh.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 学生奖励类型对象 xskh_reward_type + * + * @author Lion Li + * @date 2025-08-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xskh_reward_type") +public class XskhRewardType extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 类型编码 + */ + private String typeCode; + + /** + * 类型名称 + */ + private String typeName; + + /** + * 类型说明 + */ + private String description; + + /** + * 状态(0-正常 1-停用) + */ + private String status; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 删除标志(0-未删除 1-已删除) + */ + @TableLogic(value = "0", delval = "1") + private Long deleted; + + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhDisciplineTypeBo.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhDisciplineTypeBo.java new file mode 100644 index 00000000..5071a839 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhDisciplineTypeBo.java @@ -0,0 +1,68 @@ +package org.dromara.xskh.domain.bo; + +import org.dromara.xskh.domain.XskhDisciplineType; +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.*; + +/** + * 学生违纪处分类型业务对象 xskh_discipline_type + * + * @author zlwu + * @date 2025-08-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XskhDisciplineType.class, reverseConvertGenerate = false) +public class XskhDisciplineTypeBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 类型编码 + */ + @NotBlank(message = "类型编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String typeCode; + + /** + * 类型名称 + */ + @NotBlank(message = "类型名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String typeName; + + /** + * 类型分类(1-违纪类型 2-处分类型) + */ + @NotBlank(message = "类型分类(1-违纪类型 2-处分类型)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String typeCategory; + + /** + * 类型说明 + */ + private String remark; + + /** + * 状态(0-正常 1-停用) + */ + private String status; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 删除标志(0-未删除 1-已删除) + */ + private Long deleted; + + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhRewardTypeBo.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhRewardTypeBo.java new file mode 100644 index 00000000..e4c557e3 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhRewardTypeBo.java @@ -0,0 +1,62 @@ +package org.dromara.xskh.domain.bo; + +import org.dromara.xskh.domain.XskhRewardType; +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.*; + +/** + * 学生奖励类型业务对象 xskh_reward_type + * + * @author Lion Li + * @date 2025-08-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XskhRewardType.class, reverseConvertGenerate = false) +public class XskhRewardTypeBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 类型编码 + */ + @NotBlank(message = "类型编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String typeCode; + + /** + * 类型名称 + */ + @NotBlank(message = "类型名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String typeName; + + /** + * 类型说明 + */ + private String description; + + /** + * 状态(0-正常 1-停用) + */ + private String status; + + /** + * 排序号 + */ + private Long sortOrder; + + /** + * 删除标志(0-未删除 1-已删除) + */ + private Long deleted; + + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhDisciplineTypeVo.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhDisciplineTypeVo.java new file mode 100644 index 00000000..426425f9 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhDisciplineTypeVo.java @@ -0,0 +1,82 @@ +package org.dromara.xskh.domain.vo; + +import org.dromara.xskh.domain.XskhDisciplineType; +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; + + + +/** + * 学生违纪处分类型视图对象 xskh_discipline_type + * + * @author zlwu + * @date 2025-08-18 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XskhDisciplineType.class) +public class XskhDisciplineTypeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 类型编码 + */ + @ExcelProperty(value = "类型编码") + private String typeCode; + + /** + * 类型名称 + */ + @ExcelProperty(value = "类型名称") + private String typeName; + + /** + * 类型分类(1-违纪类型 2-处分类型) + */ + @ExcelProperty(value = "类型分类(1-违纪类型 2-处分类型)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "student_discipline_category") + private String typeCategory; + + /** + * 类型说明 + */ + @ExcelProperty(value = "类型说明") + private String remark; + + /** + * 状态(0-正常 1-停用) + */ + @ExcelProperty(value = "状态(0-正常 1-停用)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_msg_status") + private String status; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 删除标志(0-未删除 1-已删除) + */ + @ExcelProperty(value = "删除标志(0-未删除 1-已删除)") + private Long deleted; + + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhRewardTypeVo.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhRewardTypeVo.java new file mode 100644 index 00000000..fd17fdbd --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhRewardTypeVo.java @@ -0,0 +1,75 @@ +package org.dromara.xskh.domain.vo; + +import org.dromara.xskh.domain.XskhRewardType; +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; + + + +/** + * 学生奖励类型视图对象 xskh_reward_type + * + * @author Lion Li + * @date 2025-08-18 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XskhRewardType.class) +public class XskhRewardTypeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 类型编码 + */ + @ExcelProperty(value = "类型编码") + private String typeCode; + + /** + * 类型名称 + */ + @ExcelProperty(value = "类型名称") + private String typeName; + + /** + * 类型说明 + */ + @ExcelProperty(value = "类型说明") + private String description; + + /** + * 状态(0-正常 1-停用) + */ + @ExcelProperty(value = "状态(0-正常 1-停用)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_msg_status") + private String status; + + /** + * 排序号 + */ + @ExcelProperty(value = "排序号") + private Long sortOrder; + + /** + * 删除标志(0-未删除 1-已删除) + */ + @ExcelProperty(value = "删除标志(0-未删除 1-已删除)") + private Long deleted; + + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhDisciplineTypeMapper.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhDisciplineTypeMapper.java new file mode 100644 index 00000000..c3d3893f --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhDisciplineTypeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xskh.mapper; + +import org.dromara.xskh.domain.XskhDisciplineType; +import org.dromara.xskh.domain.vo.XskhDisciplineTypeVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 学生违纪处分类型Mapper接口 + * + * @author zlwu + * @date 2025-08-18 + */ +public interface XskhDisciplineTypeMapper extends BaseMapperPlus { + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhRewardTypeMapper.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhRewardTypeMapper.java new file mode 100644 index 00000000..7b264901 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhRewardTypeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xskh.mapper; + +import org.dromara.xskh.domain.XskhRewardType; +import org.dromara.xskh.domain.vo.XskhRewardTypeVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 学生奖励类型Mapper接口 + * + * @author Lion Li + * @date 2025-08-18 + */ +public interface XskhRewardTypeMapper extends BaseMapperPlus { + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhDisciplineTypeService.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhDisciplineTypeService.java new file mode 100644 index 00000000..c3f5af26 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhDisciplineTypeService.java @@ -0,0 +1,68 @@ +package org.dromara.xskh.service; + +import org.dromara.xskh.domain.vo.XskhDisciplineTypeVo; +import org.dromara.xskh.domain.bo.XskhDisciplineTypeBo; +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-18 + */ +public interface IXskhDisciplineTypeService { + + /** + * 查询学生违纪处分类型 + * + * @param id 主键 + * @return 学生违纪处分类型 + */ + XskhDisciplineTypeVo queryById(Long id); + + /** + * 分页查询学生违纪处分类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 学生违纪处分类型分页列表 + */ + TableDataInfo queryPageList(XskhDisciplineTypeBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的学生违纪处分类型列表 + * + * @param bo 查询条件 + * @return 学生违纪处分类型列表 + */ + List queryList(XskhDisciplineTypeBo bo); + + /** + * 新增学生违纪处分类型 + * + * @param bo 学生违纪处分类型 + * @return 是否新增成功 + */ + Boolean insertByBo(XskhDisciplineTypeBo bo); + + /** + * 修改学生违纪处分类型 + * + * @param bo 学生违纪处分类型 + * @return 是否修改成功 + */ + Boolean updateByBo(XskhDisciplineTypeBo bo); + + /** + * 校验并批量删除学生违纪处分类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhRewardTypeService.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhRewardTypeService.java new file mode 100644 index 00000000..917eaf11 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhRewardTypeService.java @@ -0,0 +1,68 @@ +package org.dromara.xskh.service; + +import org.dromara.xskh.domain.vo.XskhRewardTypeVo; +import org.dromara.xskh.domain.bo.XskhRewardTypeBo; +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 Lion Li + * @date 2025-08-18 + */ +public interface IXskhRewardTypeService { + + /** + * 查询学生奖励类型 + * + * @param id 主键 + * @return 学生奖励类型 + */ + XskhRewardTypeVo queryById(Long id); + + /** + * 分页查询学生奖励类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 学生奖励类型分页列表 + */ + TableDataInfo queryPageList(XskhRewardTypeBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的学生奖励类型列表 + * + * @param bo 查询条件 + * @return 学生奖励类型列表 + */ + List queryList(XskhRewardTypeBo bo); + + /** + * 新增学生奖励类型 + * + * @param bo 学生奖励类型 + * @return 是否新增成功 + */ + Boolean insertByBo(XskhRewardTypeBo bo); + + /** + * 修改学生奖励类型 + * + * @param bo 学生奖励类型 + * @return 是否修改成功 + */ + Boolean updateByBo(XskhRewardTypeBo bo); + + /** + * 校验并批量删除学生奖励类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhDisciplineTypeServiceImpl.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhDisciplineTypeServiceImpl.java new file mode 100644 index 00000000..fa2bf457 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhDisciplineTypeServiceImpl.java @@ -0,0 +1,137 @@ +package org.dromara.xskh.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.xskh.domain.bo.XskhDisciplineTypeBo; +import org.dromara.xskh.domain.vo.XskhDisciplineTypeVo; +import org.dromara.xskh.domain.XskhDisciplineType; +import org.dromara.xskh.mapper.XskhDisciplineTypeMapper; +import org.dromara.xskh.service.IXskhDisciplineTypeService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 学生违纪处分类型Service业务层处理 + * + * @author zlwu + * @date 2025-08-18 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class XskhDisciplineTypeServiceImpl implements IXskhDisciplineTypeService { + + private final XskhDisciplineTypeMapper baseMapper; + + /** + * 查询学生违纪处分类型 + * + * @param id 主键 + * @return 学生违纪处分类型 + */ + @Override + public XskhDisciplineTypeVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询学生违纪处分类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 学生违纪处分类型分页列表 + */ + @Override + public TableDataInfo queryPageList(XskhDisciplineTypeBo 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(XskhDisciplineTypeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XskhDisciplineTypeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(XskhDisciplineType::getId); + lqw.eq(StringUtils.isNotBlank(bo.getTypeCode()), XskhDisciplineType::getTypeCode, bo.getTypeCode()); + lqw.like(StringUtils.isNotBlank(bo.getTypeName()), XskhDisciplineType::getTypeName, bo.getTypeName()); + lqw.eq(StringUtils.isNotBlank(bo.getTypeCategory()), XskhDisciplineType::getTypeCategory, bo.getTypeCategory()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XskhDisciplineType::getStatus, bo.getStatus()); + lqw.eq(bo.getSortOrder() != null, XskhDisciplineType::getSortOrder, bo.getSortOrder()); + lqw.eq(bo.getDeleted() != null, XskhDisciplineType::getDeleted, bo.getDeleted()); + return lqw; + } + + /** + * 新增学生违纪处分类型 + * + * @param bo 学生违纪处分类型 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XskhDisciplineTypeBo bo) { + XskhDisciplineType add = MapstructUtils.convert(bo, XskhDisciplineType.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改学生违纪处分类型 + * + * @param bo 学生违纪处分类型 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XskhDisciplineTypeBo bo) { + XskhDisciplineType update = MapstructUtils.convert(bo, XskhDisciplineType.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XskhDisciplineType entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除学生违纪处分类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhRewardTypeServiceImpl.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhRewardTypeServiceImpl.java new file mode 100644 index 00000000..cb0ea0eb --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhRewardTypeServiceImpl.java @@ -0,0 +1,137 @@ +package org.dromara.xskh.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.xskh.domain.bo.XskhRewardTypeBo; +import org.dromara.xskh.domain.vo.XskhRewardTypeVo; +import org.dromara.xskh.domain.XskhRewardType; +import org.dromara.xskh.mapper.XskhRewardTypeMapper; +import org.dromara.xskh.service.IXskhRewardTypeService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 学生奖励类型Service业务层处理 + * + * @author Lion Li + * @date 2025-08-18 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class XskhRewardTypeServiceImpl implements IXskhRewardTypeService { + + private final XskhRewardTypeMapper baseMapper; + + /** + * 查询学生奖励类型 + * + * @param id 主键 + * @return 学生奖励类型 + */ + @Override + public XskhRewardTypeVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询学生奖励类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 学生奖励类型分页列表 + */ + @Override + public TableDataInfo queryPageList(XskhRewardTypeBo 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(XskhRewardTypeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XskhRewardTypeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(XskhRewardType::getId); + lqw.eq(StringUtils.isNotBlank(bo.getTypeCode()), XskhRewardType::getTypeCode, bo.getTypeCode()); + lqw.like(StringUtils.isNotBlank(bo.getTypeName()), XskhRewardType::getTypeName, bo.getTypeName()); + lqw.like(StringUtils.isNotBlank(bo.getDescription()), XskhRewardType::getDescription, bo.getDescription()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XskhRewardType::getStatus, bo.getStatus()); + lqw.eq(bo.getSortOrder() != null, XskhRewardType::getSortOrder, bo.getSortOrder()); + lqw.eq(bo.getDeleted() != null, XskhRewardType::getDeleted, bo.getDeleted()); + return lqw; + } + + /** + * 新增学生奖励类型 + * + * @param bo 学生奖励类型 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XskhRewardTypeBo bo) { + XskhRewardType add = MapstructUtils.convert(bo, XskhRewardType.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改学生奖励类型 + * + * @param bo 学生奖励类型 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XskhRewardTypeBo bo) { + XskhRewardType update = MapstructUtils.convert(bo, XskhRewardType.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XskhRewardType entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除学生奖励类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/disciplineType/XskhDisciplineTypeMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/disciplineType/XskhDisciplineTypeMapper.xml new file mode 100644 index 00000000..e0155dd7 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/disciplineType/XskhDisciplineTypeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/rewardType/XskhRewardTypeMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/rewardType/XskhRewardTypeMapper.xml new file mode 100644 index 00000000..e3747ed3 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/rewardType/XskhRewardTypeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/docs/设计文档/database/学生考核管理/学生考核管理字典数据.sql b/docs/设计文档/database/学生考核管理/学生考核管理字典数据.sql index abe7b352..6a26b7fc 100644 --- a/docs/设计文档/database/学生考核管理/学生考核管理字典数据.sql +++ b/docs/设计文档/database/学生考核管理/学生考核管理字典数据.sql @@ -18,8 +18,7 @@ INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `status`, `create_b INSERT INTO `sys_dict_data` (`id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (10003, 1, '生效', '1', 'student_discipline_status', '', 'success', 'Y', '0', 1, NOW(), NULL, NULL, '违纪处分记录生效'), -(10004, 2, '撤销申请中', '2', 'student_discipline_status', '', 'warning', 'N', '0', 1, NOW(), NULL, NULL, '撤销申请审核中'), -(10005, 3, '已撤销', '3', 'student_discipline_status', '', 'info', 'N', '0', 1, NOW(), NULL, NULL, '违纪处分记录已撤销'); +(10005, 2, '已撤销', '2', 'student_discipline_status', '', 'info', 'N', '0', 1, NOW(), NULL, NULL, '违纪处分记录已撤销'); -- 3. 撤销申请状态字典 INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES @@ -30,17 +29,6 @@ INSERT INTO `sys_dict_data` (`id`, `dict_sort`, `dict_label`, `dict_value`, `dic (10007, 2, '审核通过', '2', 'student_revoke_status', '', 'success', 'N', '0', 1, NOW(), NULL, NULL, '撤销申请审核通过'), (10008, 3, '审核拒绝', '3', 'student_revoke_status', '', 'danger', 'N', '0', 1, NOW(), NULL, NULL, '撤销申请审核拒绝'); --- 4. 考核指标类型字典 -INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES -(1004, '考核指标类型', 'student_indicator_type', '0', 1, NOW(), NULL, NULL, '学生考核指标类型'); - -INSERT INTO `sys_dict_data` (`id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES -(10009, 1, '德育', '1', 'student_indicator_type', '', 'primary', 'Y', '0', 1, NOW(), NULL, NULL, '德育指标'), -(10010, 2, '智育', '2', 'student_indicator_type', '', 'success', 'N', '0', 1, NOW(), NULL, NULL, '智育指标'), -(10011, 3, '体育', '3', 'student_indicator_type', '', 'warning', 'N', '0', 1, NOW(), NULL, NULL, '体育指标'), -(10012, 4, '美育', '4', 'student_indicator_type', '', 'info', 'N', '0', 1, NOW(), NULL, NULL, '美育指标'), -(10013, 5, '劳动', '5', 'student_indicator_type', '', 'danger', 'N', '0', 1, NOW(), NULL, NULL, '劳动指标'); - -- 5. 考核计划状态字典 INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1005, '考核计划状态', 'student_schedule_status', '0', 1, NOW(), NULL, NULL, '学生考核计划状态'); @@ -58,8 +46,6 @@ INSERT INTO `sys_dict_data` (`id`, `dict_sort`, `dict_label`, `dict_value`, `dic (10017, 1, '草稿', '1', 'student_assessment_status', '', 'info', 'Y', '0', 1, NOW(), NULL, NULL, '考核申请草稿'), (10018, 2, '已提交', '2', 'student_assessment_status', '', 'primary', 'N', '0', 1, NOW(), NULL, NULL, '考核申请已提交'), (10019, 3, '班主任审核', '3', 'student_assessment_status', '', 'warning', 'N', '0', 1, NOW(), NULL, NULL, '班主任审核中'), -(10020, 4, '学院审核', '4', 'student_assessment_status', '', 'warning', 'N', '0', 1, NOW(), NULL, NULL, '学院审核中'), -(10021, 5, '学校审核', '5', 'student_assessment_status', '', 'warning', 'N', '0', 1, NOW(), NULL, NULL, '学校审核中'), (10022, 6, '已完成', '6', 'student_assessment_status', '', 'success', 'N', '0', 1, NOW(), NULL, NULL, '考核申请已完成'); -- 7. 附加分审核状态字典 @@ -81,8 +67,8 @@ INSERT INTO `sys_dict_data` (`id`, `dict_sort`, `dict_label`, `dict_value`, `dic -- 9. 通用状态字典(启用/禁用) INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES -(1009, '通用状态', 'common_status', '0', 1, NOW(), NULL, NULL, '通用启用禁用状态'); +(1009, '通用状态', 'sys_msg_status', '0', 1, NOW(), NULL, NULL, '通用启用禁用状态'); INSERT INTO `sys_dict_data` (`id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES -(10028, 1, '启用', '0', 'common_status', '', 'success', 'Y', '0', 1, NOW(), NULL, NULL, '启用状态'), -(10029, 2, '禁用', '1', 'common_status', '', 'danger', 'N', '0', 1, NOW(), NULL, NULL, '禁用状态'); \ No newline at end of file +(10028, 1, '启用', '0', 'sys_msg_status', '', 'success', 'Y', '0', 1, NOW(), NULL, NULL, '启用状态'), +(10029, 2, '禁用', '1', 'sys_msg_status', '', 'danger', 'N', '0', 1, NOW(), NULL, NULL, '禁用状态'); \ No newline at end of file diff --git a/web/src/api/xskh/disciplineType/disciplineType/index.ts b/web/src/api/xskh/disciplineType/disciplineType/index.ts new file mode 100644 index 00000000..33c1cbaa --- /dev/null +++ b/web/src/api/xskh/disciplineType/disciplineType/index.ts @@ -0,0 +1,63 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { DisciplineTypeVO, DisciplineTypeForm, DisciplineTypeQuery } from '@/api/xskh/disciplineType/disciplineType/types'; + +/** + * 查询学生违纪处分类型列表 + * @param query + * @returns {*} + */ + +export const listDisciplineType = (query?: DisciplineTypeQuery): AxiosPromise => { + return request({ + url: '/disciplineType/disciplineType/list', + method: 'get', + params: query + }); +}; + +/** + * 查询学生违纪处分类型详细 + * @param id + */ +export const getDisciplineType = (id: string | number): AxiosPromise => { + return request({ + url: '/disciplineType/disciplineType/' + id, + method: 'get' + }); +}; + +/** + * 新增学生违纪处分类型 + * @param data + */ +export const addDisciplineType = (data: DisciplineTypeForm) => { + return request({ + url: '/disciplineType/disciplineType', + method: 'post', + data: data + }); +}; + +/** + * 修改学生违纪处分类型 + * @param data + */ +export const updateDisciplineType = (data: DisciplineTypeForm) => { + return request({ + url: '/disciplineType/disciplineType', + method: 'put', + data: data + }); +}; + +/** + * 删除学生违纪处分类型 + * @param id + */ +export const delDisciplineType = (id: string | number | Array) => { + return request({ + url: '/disciplineType/disciplineType/' + id, + method: 'delete' + }); +}; diff --git a/web/src/api/xskh/disciplineType/disciplineType/types.ts b/web/src/api/xskh/disciplineType/disciplineType/types.ts new file mode 100644 index 00000000..802b922b --- /dev/null +++ b/web/src/api/xskh/disciplineType/disciplineType/types.ts @@ -0,0 +1,126 @@ +export interface DisciplineTypeVO { + /** + * 主键ID + */ + id: string | number; + + /** + * 类型编码 + */ + typeCode: string; + + /** + * 类型名称 + */ + typeName: string; + + /** + * 类型分类(1-违纪类型 2-处分类型) + */ + typeCategory: string; + + /** + * 类型说明 + */ + remark: string; + + /** + * 状态(0-正常 1-停用) + */ + status: string; + + /** + * 排序号 + */ + sortOrder: number; + + /** + * 删除标志(0-未删除 1-已删除) + */ + deleted: number; + +} + +export interface DisciplineTypeForm extends BaseEntity { + /** + * 主键ID + */ + id?: string | number; + + /** + * 类型编码 + */ + typeCode?: string; + + /** + * 类型名称 + */ + typeName?: string; + + /** + * 类型分类(1-违纪类型 2-处分类型) + */ + typeCategory?: string; + + /** + * 类型说明 + */ + remark?: string; + + /** + * 状态(0-正常 1-停用) + */ + status?: string; + + /** + * 排序号 + */ + sortOrder?: number; + + /** + * 删除标志(0-未删除 1-已删除) + */ + deleted?: number; + +} + +export interface DisciplineTypeQuery extends PageQuery { + + /** + * 类型编码 + */ + typeCode?: string; + + /** + * 类型名称 + */ + typeName?: string; + + /** + * 类型分类(1-违纪类型 2-处分类型) + */ + typeCategory?: string; + + /** + * 状态(0-正常 1-停用) + */ + status?: string; + + /** + * 排序号 + */ + sortOrder?: number; + + /** + * 删除标志(0-未删除 1-已删除) + */ + deleted?: number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/web/src/api/xskh/rewardType/rewardType/index.ts b/web/src/api/xskh/rewardType/rewardType/index.ts new file mode 100644 index 00000000..cb281476 --- /dev/null +++ b/web/src/api/xskh/rewardType/rewardType/index.ts @@ -0,0 +1,63 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { RewardTypeVO, RewardTypeForm, RewardTypeQuery } from '@/api/xskh/rewardType/rewardType/types'; + +/** + * 查询学生奖励类型列表 + * @param query + * @returns {*} + */ + +export const listRewardType = (query?: RewardTypeQuery): AxiosPromise => { + return request({ + url: '/rewardType/rewardType/list', + method: 'get', + params: query + }); +}; + +/** + * 查询学生奖励类型详细 + * @param id + */ +export const getRewardType = (id: string | number): AxiosPromise => { + return request({ + url: '/rewardType/rewardType/' + id, + method: 'get' + }); +}; + +/** + * 新增学生奖励类型 + * @param data + */ +export const addRewardType = (data: RewardTypeForm) => { + return request({ + url: '/rewardType/rewardType', + method: 'post', + data: data + }); +}; + +/** + * 修改学生奖励类型 + * @param data + */ +export const updateRewardType = (data: RewardTypeForm) => { + return request({ + url: '/rewardType/rewardType', + method: 'put', + data: data + }); +}; + +/** + * 删除学生奖励类型 + * @param id + */ +export const delRewardType = (id: string | number | Array) => { + return request({ + url: '/rewardType/rewardType/' + id, + method: 'delete' + }); +}; diff --git a/web/src/api/xskh/rewardType/rewardType/types.ts b/web/src/api/xskh/rewardType/rewardType/types.ts new file mode 100644 index 00000000..1fdff1d8 --- /dev/null +++ b/web/src/api/xskh/rewardType/rewardType/types.ts @@ -0,0 +1,116 @@ +export interface RewardTypeVO { + /** + * 主键ID + */ + id: string | number; + + /** + * 类型编码 + */ + typeCode: string; + + /** + * 类型名称 + */ + typeName: string; + + /** + * 类型说明 + */ + description: string; + + /** + * 状态(0-正常 1-停用) + */ + status: string; + + /** + * 排序号 + */ + sortOrder: number; + + /** + * 删除标志(0-未删除 1-已删除) + */ + deleted: number; + +} + +export interface RewardTypeForm extends BaseEntity { + /** + * 主键ID + */ + id?: string | number; + + /** + * 类型编码 + */ + typeCode?: string; + + /** + * 类型名称 + */ + typeName?: string; + + /** + * 类型说明 + */ + description?: string; + + /** + * 状态(0-正常 1-停用) + */ + status?: string; + + /** + * 排序号 + */ + sortOrder?: number; + + /** + * 删除标志(0-未删除 1-已删除) + */ + deleted?: number; + +} + +export interface RewardTypeQuery extends PageQuery { + + /** + * 类型编码 + */ + typeCode?: string; + + /** + * 类型名称 + */ + typeName?: string; + + /** + * 类型说明 + */ + description?: string; + + /** + * 状态(0-正常 1-停用) + */ + status?: string; + + /** + * 排序号 + */ + sortOrder?: number; + + /** + * 删除标志(0-未删除 1-已删除) + */ + deleted?: number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/web/src/views/xskh/disciplineType/index.vue b/web/src/views/xskh/disciplineType/index.vue new file mode 100644 index 00000000..214d48fe --- /dev/null +++ b/web/src/views/xskh/disciplineType/index.vue @@ -0,0 +1,343 @@ + + + + diff --git a/web/src/views/xskh/rewardType/index.vue b/web/src/views/xskh/rewardType/index.vue new file mode 100644 index 00000000..01c01fff --- /dev/null +++ b/web/src/views/xskh/rewardType/index.vue @@ -0,0 +1,272 @@ + + + From 29e8981cc6d9eeb57fb7300baee599c1078dd302 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Tue, 19 Aug 2025 00:21:23 +0800 Subject: [PATCH 2/5] =?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 --- .../XskhDisciplineRecordController.java | 113 ++ .../xskh/domain/XskhDisciplineRecord.java | 118 +++ .../domain/bo/XskhDisciplineRecordBo.java | 136 +++ .../domain/vo/XskhDisciplineRecordVo.java | 163 +++ .../xskh/domain/vo/XskhStudentOptionVo.java | 65 ++ .../mapper/XskhDisciplineRecordMapper.java | 26 + .../service/IXskhDisciplineRecordService.java | 54 + .../impl/XskhDisciplineRecordServiceImpl.java | 146 +++ .../mapper/XskhDisciplineRecordMapper.xml | 70 ++ .../学生考核管理/学生考核管理数据库模型.sql | 7 +- .../xskh/disciplineRecord/disciplineRecord.ts | 75 ++ .../disciplineRecord/types.ts | 403 +++++++ .../disciplineRecord/DisciplineRecordForm.vue | 988 ++++++++++++++++++ web/src/views/xskh/disciplineRecord/index.vue | 321 ++++++ 14 files changed, 2680 insertions(+), 5 deletions(-) create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhDisciplineRecordController.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhDisciplineRecord.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhDisciplineRecordBo.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhDisciplineRecordVo.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhStudentOptionVo.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhDisciplineRecordMapper.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhDisciplineRecordService.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhDisciplineRecordServiceImpl.java create mode 100644 backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/XskhDisciplineRecordMapper.xml create mode 100644 web/src/api/xskh/disciplineRecord/disciplineRecord.ts create mode 100644 web/src/api/xskh/disciplineRecord/disciplineRecord/types.ts create mode 100644 web/src/views/xskh/disciplineRecord/DisciplineRecordForm.vue create mode 100644 web/src/views/xskh/disciplineRecord/index.vue diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhDisciplineRecordController.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhDisciplineRecordController.java new file mode 100644 index 00000000..73faed9a --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/controller/XskhDisciplineRecordController.java @@ -0,0 +1,113 @@ +package org.dromara.xskh.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.xskh.domain.vo.XskhDisciplineRecordVo; +import org.dromara.xskh.domain.bo.XskhDisciplineRecordBo; +import org.dromara.xskh.domain.vo.XskhStudentOptionVo; +import org.dromara.xskh.service.IXskhDisciplineRecordService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 学生违纪处分记录 + * + * @author ruoyi + * @date 2025-01-03 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/disciplineRecord/disciplineRecord") +public class XskhDisciplineRecordController extends BaseController { + + private final IXskhDisciplineRecordService xskhDisciplineRecordService; + + /** + * 查询学生违纪处分记录列表 + */ + @SaCheckPermission("disciplineRecord:disciplineRecord:list") + @GetMapping("/list") + public TableDataInfo list(XskhDisciplineRecordBo bo, PageQuery pageQuery) { + return xskhDisciplineRecordService.queryPageList(bo, pageQuery); + } + + /** + * 导出学生违纪处分记录列表 + */ + @SaCheckPermission("disciplineRecord:disciplineRecord:export") + @Log(title = "学生违纪处分记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XskhDisciplineRecordBo bo, HttpServletResponse response) { + List list = xskhDisciplineRecordService.queryList(bo); + ExcelUtil.exportExcel(list, "学生违纪处分记录", XskhDisciplineRecordVo.class, response); + } + + /** + * 获取学生违纪处分记录详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("disciplineRecord:disciplineRecord:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { + return R.ok(xskhDisciplineRecordService.queryById(id)); + } + + /** + * 新增学生违纪处分记录 + */ + @SaCheckPermission("disciplineRecord:disciplineRecord:add") + @Log(title = "学生违纪处分记录", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XskhDisciplineRecordBo bo) { + return toAjax(xskhDisciplineRecordService.insertByBo(bo)); + } + + /** + * 修改学生违纪处分记录 + */ + @SaCheckPermission("disciplineRecord:disciplineRecord:edit") + @Log(title = "学生违纪处分记录", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XskhDisciplineRecordBo bo) { + return toAjax(xskhDisciplineRecordService.updateByBo(bo)); + } + + /** + * 删除学生违纪处分记录 + * + * @param ids 主键串 + */ + @SaCheckPermission("disciplineRecord:disciplineRecord:remove") + @Log(title = "学生违纪处分记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { + return toAjax(xskhDisciplineRecordService.deleteWithValidByIds(List.of(ids), true)); + } + + /** + * 查询学生选项列表(用于下拉框) + */ + @SaCheckPermission("disciplineRecord:disciplineRecord:query") + @GetMapping("/studentOptions") + public R> getStudentOptions(@RequestParam(required = false) String keyword) { + return R.ok(xskhDisciplineRecordService.getStudentOptions(keyword)); + } +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhDisciplineRecord.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhDisciplineRecord.java new file mode 100644 index 00000000..d2dc4f91 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/XskhDisciplineRecord.java @@ -0,0 +1,118 @@ +package org.dromara.xskh.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Date; + +/** + * 学生违纪处分记录对象 xskh_discipline_record + * + * @author ruoyi + * @date 2025-01-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xskh_discipline_record") +public class XskhDisciplineRecord extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 学生ID + */ + private Long studentId; + + /** + * 学号 + */ + private String studentNo; + + /** + * 学生姓名 + */ + private String studentName; + + /** + * 学院ID + */ + private Long collegeId; + + /** + * 学院名称 + */ + private String collegeName; + + /** + * 专业ID + */ + private Long majorId; + + /** + * 专业名称 + */ + private String majorName; + + /** + * 班级ID + */ + private Long classId; + + /** + * 班级名称 + */ + private String className; + + /** + * 违纪处分类型ID + */ + private Long disciplineTypeId; + + /** + * 违纪处分类型名称 + */ + private String disciplineTypeName; + + /** + * 违纪处分日期 + */ + private LocalDate disciplineDate; + + /** + * 违纪处分原因 + */ + private String disciplineReason; + + /** + * 违纪处分内容 + */ + private String disciplineContent; + + /** + * 扣分分值 + */ + private BigDecimal scoreDeduction; + + /** + * 状态(1-生效 2-已撤销) + */ + private String status; + + /** + * 附件OSS ID列表,逗号分隔 + */ + private String attachmentOssIds; + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhDisciplineRecordBo.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhDisciplineRecordBo.java new file mode 100644 index 00000000..0defcbfe --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/bo/XskhDisciplineRecordBo.java @@ -0,0 +1,136 @@ +package org.dromara.xskh.domain.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.xskh.domain.XskhDisciplineRecord; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Date; + +/** + * 学生违纪处分记录业务对象 xskh_discipline_record + * + * @author ruoyi + * @date 2025-01-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XskhDisciplineRecord.class, reverseConvertGenerate = false) +public class XskhDisciplineRecordBo 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 studentNo; + + /** + * 学生姓名 + */ + @NotBlank(message = "学生姓名不能为空", groups = { AddGroup.class, EditGroup.class }) + private String studentName; + + /** + * 学院ID + */ + @NotNull(message = "学院ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long collegeId; + + /** + * 学院名称 + */ + @NotBlank(message = "学院名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String collegeName; + + /** + * 专业ID + */ + @NotNull(message = "专业ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long majorId; + + /** + * 专业名称 + */ + @NotBlank(message = "专业名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String majorName; + + /** + * 班级ID + */ + @NotNull(message = "班级ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long classId; + + /** + * 班级名称 + */ + @NotBlank(message = "班级名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String className; + + /** + * 违纪处分类型ID + */ + @NotNull(message = "违纪处分类型ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long disciplineTypeId; + + /** + * 违纪处分类型名称 + */ + @NotBlank(message = "违纪处分类型名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String disciplineTypeName; + + /** + * 违纪处分日期 + */ + @NotNull(message = "违纪处分日期不能为空", groups = { AddGroup.class, EditGroup.class }) + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate disciplineDate; + + /** + * 违纪处分原因 + */ + @NotBlank(message = "违纪处分原因不能为空", groups = { AddGroup.class, EditGroup.class }) + private String disciplineReason; + + /** + * 违纪处分内容 + */ + private String disciplineContent; + + /** + * 扣分分值 + */ + @DecimalMin(value = "0.00", message = "扣分分值不能为负数", groups = { AddGroup.class, EditGroup.class }) + @Digits(integer = 3, fraction = 2, message = "扣分分值格式不正确,最多支持3位整数和2位小数", groups = { AddGroup.class, + EditGroup.class }) + private BigDecimal scoreDeduction; + + /** + * 状态(1-生效 2-已撤销) + */ + private String status; + + /** + * 附件OSS ID列表,逗号分隔 + */ + private String attachmentOssIds; + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhDisciplineRecordVo.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhDisciplineRecordVo.java new file mode 100644 index 00000000..6020b84e --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhDisciplineRecordVo.java @@ -0,0 +1,163 @@ +package org.dromara.xskh.domain.vo; + +import org.dromara.xskh.domain.XskhDisciplineType; +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 com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.xskh.domain.XskhDisciplineRecord; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Date; + +/** + * 学生违纪处分记录视图对象 xskh_discipline_record + * + * @author ruoyi + * @date 2025-01-03 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XskhDisciplineRecord.class) +public class XskhDisciplineRecordVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 学生ID + */ + @ExcelProperty(value = "学生ID") + private Long studentId; + + /** + * 学号 + */ + @ExcelProperty(value = "学号") + private String studentNo; + + /** + * 学生姓名 + */ + @ExcelProperty(value = "学生姓名") + private String studentName; + + /** + * 学院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 disciplineTypeId; + + /** + * 违纪处分类型名称 + */ + @ExcelProperty(value = "违纪处分类型名称") + private String disciplineTypeName; + + /** + * 违纪处分日期 + */ + @ExcelProperty(value = "违纪处分日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate disciplineDate; + + /** + * 违纪处分原因 + */ + @ExcelProperty(value = "违纪处分原因") + private String disciplineReason; + + /** + * 违纪处分内容 + */ + @ExcelProperty(value = "违纪处分内容") + private String disciplineContent; + + /** + * 扣分分值 + */ + @ExcelProperty(value = "扣分分值") + private BigDecimal scoreDeduction; + + /** + * 状态(1-生效 2-已撤销) + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "student_discipline_status") + private String status; + /** + * 附件OSS ID列表,逗号分隔 + */ + private String attachmentOssIds; + + /** + * 创建者 + */ + 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-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhStudentOptionVo.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhStudentOptionVo.java new file mode 100644 index 00000000..ac60c7f2 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/domain/vo/XskhStudentOptionVo.java @@ -0,0 +1,65 @@ +package org.dromara.xskh.domain.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 学生考核-学生选项视图对象,用于下拉框选择 + * + * @author ruoyi + * @date 2025-01-03 + */ +@Data +public class XskhStudentOptionVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 学生ID + */ + private Long id; + + /** + * 学号 + */ + private String studentNo; + + /** + * 学生姓名 + */ + private String name; + + /** + * 学院ID + */ + private Long collegeId; + + /** + * 学院名称 + */ + private String collegeName; + + /** + * 专业ID + */ + private Long majorId; + + /** + * 专业名称 + */ + private String majorName; + + /** + * 班级ID + */ + private Long classId; + + /** + * 班级名称 + */ + private String className; + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhDisciplineRecordMapper.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhDisciplineRecordMapper.java new file mode 100644 index 00000000..76f93aed --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/mapper/XskhDisciplineRecordMapper.java @@ -0,0 +1,26 @@ +package org.dromara.xskh.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.xskh.domain.XskhDisciplineRecord; +import org.dromara.xskh.domain.vo.XskhDisciplineRecordVo; +import org.dromara.xskh.domain.vo.XskhStudentOptionVo; + +import java.util.List; + +/** + * 学生违纪处分记录Mapper接口 + * + * @author ruoyi + * @date 2025-01-03 + */ +public interface XskhDisciplineRecordMapper extends BaseMapperPlus { + + /** + * 查询学生选项列表(用于下拉框) + * + * @param keyword 搜索关键词(学号或姓名) + * @return 学生选项列表 + */ + List selectStudentOptions(String keyword); + +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhDisciplineRecordService.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhDisciplineRecordService.java new file mode 100644 index 00000000..41ee1a3c --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/IXskhDisciplineRecordService.java @@ -0,0 +1,54 @@ +package org.dromara.xskh.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.xskh.domain.bo.XskhDisciplineRecordBo; +import org.dromara.xskh.domain.vo.XskhDisciplineRecordVo; +import org.dromara.xskh.domain.vo.XskhStudentOptionVo; + +import java.util.Collection; +import java.util.List; + +/** + * 学生违纪处分记录Service接口 + * + * @author ruoyi + * @date 2025-01-03 + */ +public interface IXskhDisciplineRecordService { + + /** + * 查询学生违纪处分记录 + */ + XskhDisciplineRecordVo queryById(Long id); + + /** + * 查询学生违纪处分记录列表 + */ + TableDataInfo queryPageList(XskhDisciplineRecordBo bo, PageQuery pageQuery); + + /** + * 查询学生违纪处分记录列表 + */ + List queryList(XskhDisciplineRecordBo bo); + + /** + * 新增学生违纪处分记录 + */ + Boolean insertByBo(XskhDisciplineRecordBo bo); + + /** + * 修改学生违纪处分记录 + */ + Boolean updateByBo(XskhDisciplineRecordBo bo); + + /** + * 校验并批量删除学生违纪处分记录信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 查询学生选项列表(用于下拉框) + */ + List getStudentOptions(String keyword); +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhDisciplineRecordServiceImpl.java b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhDisciplineRecordServiceImpl.java new file mode 100644 index 00000000..7d20bf76 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/java/org/dromara/xskh/service/impl/XskhDisciplineRecordServiceImpl.java @@ -0,0 +1,146 @@ +package org.dromara.xskh.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.xskh.domain.XskhDisciplineRecord; +import org.dromara.xskh.domain.bo.XskhDisciplineRecordBo; +import org.dromara.xskh.domain.vo.XskhDisciplineRecordVo; +import org.dromara.xskh.domain.vo.XskhStudentOptionVo; +import org.dromara.xskh.mapper.XskhDisciplineRecordMapper; +import org.dromara.xskh.service.IXskhDisciplineRecordService; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 学生违纪处分记录Service业务层处理 + * + * @author ruoyi + * @date 2025-01-03 + */ +@RequiredArgsConstructor +@Service +public class XskhDisciplineRecordServiceImpl implements IXskhDisciplineRecordService { + + private final XskhDisciplineRecordMapper baseMapper; + + /** + * 查询学生违纪处分记录 + */ + @Override + public XskhDisciplineRecordVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 查询学生违纪处分记录列表 + */ + @Override + public TableDataInfo queryPageList(XskhDisciplineRecordBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询学生违纪处分记录列表 + */ + @Override + public List queryList(XskhDisciplineRecordBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XskhDisciplineRecordBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getStudentId() != null, XskhDisciplineRecord::getStudentId, bo.getStudentId()); + lqw.like(StringUtils.isNotBlank(bo.getStudentNo()), XskhDisciplineRecord::getStudentNo, bo.getStudentNo()); + lqw.like(StringUtils.isNotBlank(bo.getStudentName()), XskhDisciplineRecord::getStudentName, + bo.getStudentName()); + lqw.eq(bo.getCollegeId() != null, XskhDisciplineRecord::getCollegeId, bo.getCollegeId()); + lqw.like(StringUtils.isNotBlank(bo.getCollegeName()), XskhDisciplineRecord::getCollegeName, + bo.getCollegeName()); + lqw.eq(bo.getMajorId() != null, XskhDisciplineRecord::getMajorId, bo.getMajorId()); + lqw.like(StringUtils.isNotBlank(bo.getMajorName()), XskhDisciplineRecord::getMajorName, bo.getMajorName()); + lqw.eq(bo.getClassId() != null, XskhDisciplineRecord::getClassId, bo.getClassId()); + lqw.like(StringUtils.isNotBlank(bo.getClassName()), XskhDisciplineRecord::getClassName, bo.getClassName()); + lqw.eq(bo.getDisciplineTypeId() != null, XskhDisciplineRecord::getDisciplineTypeId, bo.getDisciplineTypeId()); + lqw.like(StringUtils.isNotBlank(bo.getDisciplineTypeName()), XskhDisciplineRecord::getDisciplineTypeName, + bo.getDisciplineTypeName()); + lqw.eq(bo.getDisciplineDate() != null, XskhDisciplineRecord::getDisciplineDate, bo.getDisciplineDate()); + lqw.like(StringUtils.isNotBlank(bo.getDisciplineReason()), XskhDisciplineRecord::getDisciplineReason, + bo.getDisciplineReason()); + lqw.like(StringUtils.isNotBlank(bo.getDisciplineContent()), XskhDisciplineRecord::getDisciplineContent, + bo.getDisciplineContent()); + lqw.eq(bo.getScoreDeduction() != null, XskhDisciplineRecord::getScoreDeduction, bo.getScoreDeduction()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XskhDisciplineRecord::getStatus, bo.getStatus()); + lqw.orderByDesc(XskhDisciplineRecord::getCreateTime); + return lqw; + } + + /** + * 新增学生违纪处分记录 + */ + @Override + public Boolean insertByBo(XskhDisciplineRecordBo bo) { + XskhDisciplineRecord add = MapstructUtils.convert(bo, XskhDisciplineRecord.class); + validEntityBeforeSave(add); + + // 设置默认值 + if (StringUtils.isBlank(add.getStatus())) { + add.setStatus("1"); // 默认生效 + } + + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改学生违纪处分记录 + */ + @Override + public Boolean updateByBo(XskhDisciplineRecordBo bo) { + XskhDisciplineRecord update = MapstructUtils.convert(bo, XskhDisciplineRecord.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XskhDisciplineRecord entity) { + // TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除学生违纪处分记录 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + // TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + /** + * 查询学生选项列表(用于下拉框) + */ + @Override + public List getStudentOptions(String keyword) { + return baseMapper.selectStudentOptions(keyword); + } +} diff --git a/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/XskhDisciplineRecordMapper.xml b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/XskhDisciplineRecordMapper.xml new file mode 100644 index 00000000..b555aec9 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xskh/src/main/resources/mapper/XskhDisciplineRecordMapper.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, student_id, student_no, student_name, college_id, college_name, major_id, major_name, class_id, class_name, discipline_type_id, discipline_type_name, discipline_date, discipline_reason, discipline_content, score_deduction, status, approval_status, approval_by, approval_time, approval_remark, attachment_oss_ids, create_by, create_time, create_dept, update_by, update_time, deleted, tenant_id from xskh_discipline_record + + + + + diff --git a/docs/设计文档/database/学生考核管理/学生考核管理数据库模型.sql b/docs/设计文档/database/学生考核管理/学生考核管理数据库模型.sql index 61c44751..f648e8ec 100644 --- a/docs/设计文档/database/学生考核管理/学生考核管理数据库模型.sql +++ b/docs/设计文档/database/学生考核管理/学生考核管理数据库模型.sql @@ -42,15 +42,12 @@ CREATE TABLE `xskh_discipline_record` ( `class_name` varchar(100) NOT NULL COMMENT '班级名称', `discipline_type_id` bigint(20) NOT NULL COMMENT '违纪处分类型ID', `discipline_type_name` varchar(100) NOT NULL COMMENT '违纪处分类型名称', - `discipline_date` date NOT NULL COMMENT '违纪处分日期', + `discipline_date` DATETIME NOT NULL COMMENT '违纪处分日期', `discipline_reason` varchar(500) NOT NULL COMMENT '违纪处分原因', `discipline_content` varchar(500) DEFAULT NULL COMMENT '违纪处分内容', `score_deduction` decimal(5,2) DEFAULT 0.00 COMMENT '扣分分值', `status` char(1) DEFAULT '1' COMMENT '状态(1-生效 2-已撤销)', - `approval_status` char(1) DEFAULT '1' COMMENT '审批状态(1-已审批 2-审批中)', - `approval_by` bigint(20) DEFAULT NULL COMMENT '审批人ID', - `approval_time` datetime DEFAULT NULL COMMENT '审批时间', - `approval_remark` varchar(500) DEFAULT NULL COMMENT '审批备注', + `attachment_oss_ids` varchar(1000) DEFAULT NULL COMMENT '附件OSS文件ID,多个用逗号分隔(申请材料、证明文件等)', `create_by` bigint(20) DEFAULT NULL COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门', diff --git a/web/src/api/xskh/disciplineRecord/disciplineRecord.ts b/web/src/api/xskh/disciplineRecord/disciplineRecord.ts new file mode 100644 index 00000000..6d5c2332 --- /dev/null +++ b/web/src/api/xskh/disciplineRecord/disciplineRecord.ts @@ -0,0 +1,75 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { DisciplineRecordVO, DisciplineRecordForm, DisciplineRecordQuery, XskhStudentOptionVO } from './disciplineRecord/types'; + +/** + * 查询学生违纪处分记录列表 + * @param query + * @returns {*} + */ + +export const listDisciplineRecord = (query?: DisciplineRecordQuery): AxiosPromise => { + return request({ + url: '/disciplineRecord/disciplineRecord/list', + method: 'get', + params: query + }); +}; + +/** + * 查询学生违纪处分记录详细 + * @param id + */ +export const getDisciplineRecord = (id: string | number): AxiosPromise => { + return request({ + url: '/disciplineRecord/disciplineRecord/' + id, + method: 'get' + }); +}; + +/** + * 新增学生违纪处分记录 + * @param data + */ +export const addDisciplineRecord = (data: DisciplineRecordForm) => { + return request({ + url: '/disciplineRecord/disciplineRecord', + method: 'post', + data: data + }); +}; + +/** + * 修改学生违纪处分记录 + * @param data + */ +export const updateDisciplineRecord = (data: DisciplineRecordForm) => { + return request({ + url: '/disciplineRecord/disciplineRecord', + method: 'put', + data: data + }); +}; + +/** + * 删除学生违纪处分记录 + * @param id + */ +export const delDisciplineRecord = (id: string | number | Array) => { + return request({ + url: '/disciplineRecord/disciplineRecord/' + id, + method: 'delete' + }); +}; + +/** + * 查询学生选项列表(用于下拉框) + * @param keyword + */ +export const getStudentOptions = (keyword?: string): AxiosPromise => { + return request({ + url: '/disciplineRecord/disciplineRecord/studentOptions', + method: 'get', + params: { keyword } + }); +}; diff --git a/web/src/api/xskh/disciplineRecord/disciplineRecord/types.ts b/web/src/api/xskh/disciplineRecord/disciplineRecord/types.ts new file mode 100644 index 00000000..adbbb05f --- /dev/null +++ b/web/src/api/xskh/disciplineRecord/disciplineRecord/types.ts @@ -0,0 +1,403 @@ +import { PageQuery } from '@/types/base'; + +export interface DisciplineRecordVO { + /** + * 主键ID + */ + id: string | number; + + /** + * 学生ID + */ + studentId: string | number; + + /** + * 学号 + */ + studentNo: string; + + /** + * 学生姓名 + */ + studentName: string; + + /** + * 学院ID + */ + collegeId: string | number; + + /** + * 学院名称 + */ + collegeName: string; + + /** + * 专业ID + */ + majorId: string | number; + + /** + * 专业名称 + */ + majorName: string; + + /** + * 班级ID + */ + classId: string | number; + + /** + * 班级名称 + */ + className: string; + + /** + * 违纪处分类型ID + */ + disciplineTypeId: string | number; + + /** + * 违纪处分类型名称 + */ + disciplineTypeName: string; + + /** + * 违纪处分日期 + */ + disciplineDate: string; + + /** + * 违纪处分原因 + */ + disciplineReason: string; + + /** + * 违纪处分内容 + */ + disciplineContent: string; + + /** + * 扣分分值 + */ + scoreDeduction: number; + + /** + * 状态(1-生效 2-已撤销) + */ + status: string; + + /** + * 审批状态(1-已审批 2-审批中) + */ + approvalStatus: string; + + /** + * 审批人ID + */ + approvalBy: string | number; + + /** + * 审批时间 + */ + approvalTime: string; + + /** + * 审批备注 + */ + approvalRemark: string; + + /** + * 附件OSS ID列表,逗号分隔 + */ + attachmentOssIds: string; + + /** + * 创建者 + */ + createBy: string | number; + + /** + * 创建时间 + */ + createTime: string; + + /** + * 更新者 + */ + updateBy: string | number; + + /** + * 更新时间 + */ + updateTime: string; +} + +export interface DisciplineRecordForm { + /** + * 主键ID + */ + id?: string | number; + + /** + * 学生ID + */ + studentId?: string | number; + + /** + * 学号 + */ + studentNo?: string; + + /** + * 学生姓名 + */ + studentName?: string; + + /** + * 学院ID + */ + collegeId?: string | number; + + /** + * 学院名称 + */ + collegeName?: string; + + /** + * 专业ID + */ + majorId?: string | number; + + /** + * 专业名称 + */ + majorName?: string; + + /** + * 班级ID + */ + classId?: string | number; + + /** + * 班级名称 + */ + className?: string; + + /** + * 违纪处分类型ID + */ + disciplineTypeId?: string | number; + + /** + * 违纪处分类型名称 + */ + disciplineTypeName?: string; + + /** + * 违纪处分日期 + */ + disciplineDate?: string; + + /** + * 违纪处分原因 + */ + disciplineReason?: string; + + /** + * 违纪处分内容 + */ + disciplineContent?: string; + + /** + * 扣分分值 + */ + scoreDeduction?: number; + + /** + * 状态(1-生效 2-已撤销) + */ + status?: string; + + /** + * 审批状态(1-已审批 2-审批中) + */ + approvalStatus?: string; + + /** + * 审批人ID + */ + approvalBy?: string | number; + + /** + * 审批时间 + */ + approvalTime?: string; + + /** + * 审批备注 + */ + approvalRemark?: string; + + /** + * 附件OSS ID列表,逗号分隔 + */ + attachmentOssIds?: string; +} + +export interface DisciplineRecordQuery extends PageQuery { + + /** + * 学生ID + */ + studentId?: string | number; + + /** + * 学号 + */ + studentNo?: string; + + /** + * 学生姓名 + */ + studentName?: string; + + /** + * 学院ID + */ + collegeId?: string | number; + + /** + * 学院名称 + */ + collegeName?: string; + + /** + * 专业ID + */ + majorId?: string | number; + + /** + * 专业名称 + */ + majorName?: string; + + /** + * 班级ID + */ + classId?: string | number; + + /** + * 班级名称 + */ + className?: string; + + /** + * 违纪处分类型ID + */ + disciplineTypeId?: string | number; + + /** + * 违纪处分类型名称 + */ + disciplineTypeName?: string; + + /** + * 违纪处分日期 + */ + disciplineDate?: string; + + /** + * 违纪处分原因 + */ + disciplineReason?: string; + + /** + * 违纪处分内容 + */ + disciplineContent?: string; + + /** + * 扣分分值 + */ + scoreDeduction?: number; + + /** + * 状态(1-生效 2-已撤销) + */ + status?: string; + + /** + * 审批状态(1-已审批 2-审批中) + */ + approvalStatus?: string; + + /** + * 审批人ID + */ + approvalBy?: string | number; + + /** + * 审批时间 + */ + approvalTime?: string; + + /** + * 审批备注 + */ + approvalRemark?: string; + + /** + * 日期范围参数 + */ + params?: any; +} + +/** + * 学生考核-学生选项 + */ +export interface XskhStudentOptionVO { + /** + * 学生ID + */ + id: string | number; + + /** + * 学号 + */ + studentNo: string; + + /** + * 学生姓名 + */ + name: string; + + /** + * 学院ID + */ + collegeId: string | number; + + /** + * 学院名称 + */ + collegeName: string; + + /** + * 专业ID + */ + majorId: string | number; + + /** + * 专业名称 + */ + majorName: string; + + /** + * 班级ID + */ + classId: string | number; + + /** + * 班级名称 + */ + className: string; +} diff --git a/web/src/views/xskh/disciplineRecord/DisciplineRecordForm.vue b/web/src/views/xskh/disciplineRecord/DisciplineRecordForm.vue new file mode 100644 index 00000000..a5301830 --- /dev/null +++ b/web/src/views/xskh/disciplineRecord/DisciplineRecordForm.vue @@ -0,0 +1,988 @@ + + + + + diff --git a/web/src/views/xskh/disciplineRecord/index.vue b/web/src/views/xskh/disciplineRecord/index.vue new file mode 100644 index 00000000..50d07461 --- /dev/null +++ b/web/src/views/xskh/disciplineRecord/index.vue @@ -0,0 +1,321 @@ + + + + + From 6d3ffdb0f661b1b91efb1a7d5d4c7229b80f740b Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Tue, 19 Aug 2025 00:31:06 +0800 Subject: [PATCH 3/5] =?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 --- .../disciplineRecord/DisciplineRecordForm.vue | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/web/src/views/xskh/disciplineRecord/DisciplineRecordForm.vue b/web/src/views/xskh/disciplineRecord/DisciplineRecordForm.vue index a5301830..5008a38f 100644 --- a/web/src/views/xskh/disciplineRecord/DisciplineRecordForm.vue +++ b/web/src/views/xskh/disciplineRecord/DisciplineRecordForm.vue @@ -1,6 +1,6 @@ - + @@ -130,18 +101,26 @@ + + + + + +