From cefc07d47118b8affa0fb872bbfbacbcea033527 Mon Sep 17 00:00:00 2001 From: weizhong Date: Tue, 19 Aug 2025 15:27:06 +0800 Subject: [PATCH] =?UTF-8?q?=E2=80=9C=E7=8F=AD=E4=B8=BB=E4=BB=BB=E8=80=83?= =?UTF-8?q?=E6=A0=B8=E6=95=B0=E6=8D=AE=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/ruoyi-admin/pom.xml | 7 + backend/ruoyi-modules/pom.xml | 1 + backend/ruoyi-modules/ruoyi-bzrkh/pom.xml | 109 ++++ .../BmzrAssessmentIndicatorController.java | 115 ++++ ...BmzrAssessmentIndicatorTypeController.java | 115 ++++ .../BmzrAssessmentPlanController.java | 120 ++++ .../BmzrAssessmentSchemeController.java | 103 ++++ ...zrAssessmentSchemeIndicatorController.java | 130 +++++ .../TeacherAssessmentController.java | 110 ++++ .../bzrkh/domain/BmzrAssessmentIndicator.java | 91 +++ .../domain/BmzrAssessmentIndicatorType.java | 56 ++ .../bzrkh/domain/BmzrAssessmentPlan.java | 95 ++++ .../bzrkh/domain/BmzrAssessmentScheme.java | 82 +++ .../domain/BmzrAssessmentSchemeIndicator.java | 71 +++ .../domain/bo/BmzrAssessmentIndicatorBo.java | 106 ++++ .../bo/BmzrAssessmentIndicatorTypeBo.java | 59 ++ .../bzrkh/domain/bo/BmzrAssessmentPlanBo.java | 109 ++++ .../domain/bo/BmzrAssessmentSchemeBo.java | 89 +++ .../bo/BmzrAssessmentSchemeIndicatorBo.java | 77 +++ .../domain/bo/TeacherAssessmentQueryBo.java | 46 ++ .../vo/BmzrAssessmentIndicatorTypeVo.java | 90 +++ .../domain/vo/BmzrAssessmentIndicatorVo.java | 157 +++++ .../bzrkh/domain/vo/BmzrAssessmentPlanVo.java | 153 +++++ .../vo/BmzrAssessmentSchemeIndicatorVo.java | 126 +++++ .../domain/vo/BmzrAssessmentSchemeVo.java | 131 +++++ .../bzrkh/domain/vo/TeacherClassVo.java | 117 ++++ .../mapper/BmzrAssessmentIndicatorMapper.java | 15 + .../BmzrAssessmentIndicatorTypeMapper.java | 15 + .../mapper/BmzrAssessmentPlanMapper.java | 30 + .../BmzrAssessmentSchemeIndicatorMapper.java | 27 + .../mapper/BmzrAssessmentSchemeMapper.java | 15 + .../bzrkh/mapper/TeacherAssessmentMapper.java | 34 ++ .../IBmzrAssessmentIndicatorService.java | 53 ++ .../IBmzrAssessmentIndicatorTypeService.java | 76 +++ .../service/IBmzrAssessmentPlanService.java | 58 ++ ...IBmzrAssessmentSchemeIndicatorService.java | 85 +++ .../service/IBmzrAssessmentSchemeService.java | 48 ++ .../service/ITeacherAssessmentService.java | 55 ++ .../BmzrAssessmentIndicatorServiceImpl.java | 180 ++++++ ...mzrAssessmentIndicatorTypeServiceImpl.java | 168 ++++++ .../impl/BmzrAssessmentPlanServiceImpl.java | 147 +++++ ...rAssessmentSchemeIndicatorServiceImpl.java | 187 ++++++ .../impl/BmzrAssessmentSchemeServiceImpl.java | 141 +++++ .../impl/TeacherAssessmentServiceImpl.java | 99 ++++ .../bzrkh/BmzrAssessmentIndicatorMapper.xml | 30 + .../mapper/bzrkh/BmzrAssessmentPlanMapper.xml | 146 +++++ .../BmzrAssessmentSchemeIndicatorMapper.xml | 67 +++ .../mapper/bzrkh/TeacherAssessmentMapper.xml | 112 ++++ .../ruoyi-bzrkh/班主任考核指标体系开发文档.md | 226 ++++++++ .../班主任考核指标体系管理权限配置.sql | 49 ++ .../班主任考核指标类型管理权限配置.md | 62 ++ .../ruoyi-bzrkh/班主任考核方案权限配置.sql | 43 ++ .../ruoyi-bzrkh/班主任考核管理权限配置.sql | 45 ++ .../ruoyi-bzrkh/班主任考核管理部署说明.md | 157 +++++ .../班主任考核计划管理权限配置.sql | 37 ++ .../ruoyi-bzrkh/班主任考核计划管理部署说明.md | 184 ++++++ backend/ruoyi-modules/ruoyi-bzrkh/部署说明.md | 141 +++++ docs/开发文档/API/班主任考核方案管理API.md | 312 ++++++++++ docs/开发文档/API/班主任考核计划管理API.md | 380 +++++++++++++ .../database/班主任考核管理/README.md | 288 ++++++++++ .../班主任考核管理/bmzr_assessment_tables.sql | 203 +++++++ .../班主任考核管理/bmzr_dict_data_mysql.sql | 54 ++ .../api/bzrkh/assessmentIndicator/index.ts | 87 +++ .../api/bzrkh/assessmentIndicator/types.ts | 237 ++++++++ .../bzrkh/assessmentIndicatorType/index.ts | 75 +++ .../bzrkh/assessmentIndicatorType/types.ts | 110 ++++ web/src/api/bzrkh/assessmentPlan/index.ts | 100 ++++ web/src/api/bzrkh/assessmentPlan/types.ts | 240 ++++++++ web/src/api/bzrkh/assessmentScheme/index.ts | 74 +++ web/src/api/bzrkh/assessmentScheme/types.ts | 185 ++++++ .../bzrkh/assessmentSchemeIndicator/index.ts | 91 +++ .../bzrkh/assessmentSchemeIndicator/types.ts | 150 +++++ web/src/api/bzrkh/teacherAssessment/index.ts | 61 ++ web/src/api/bzrkh/teacherAssessment/types.ts | 207 +++++++ .../views/bzrkh/assessmentIndicator/index.vue | 403 +++++++++++++ .../bzrkh/assessmentIndicatorType/index.vue | 303 ++++++++++ web/src/views/bzrkh/assessmentPlan/index.vue | 535 ++++++++++++++++++ .../assessmentScheme/IndicatorManagement.vue | 478 ++++++++++++++++ .../views/bzrkh/assessmentScheme/index.vue | 516 +++++++++++++++++ .../views/bzrkh/teacherAssessment/index.vue | 308 ++++++++++ 80 files changed, 10594 insertions(+) create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/pom.xml create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentIndicatorController.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentIndicatorTypeController.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentPlanController.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentSchemeController.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentSchemeIndicatorController.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/TeacherAssessmentController.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentIndicator.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentIndicatorType.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentPlan.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentScheme.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentSchemeIndicator.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentIndicatorBo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentIndicatorTypeBo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentPlanBo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentSchemeBo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentSchemeIndicatorBo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/TeacherAssessmentQueryBo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentIndicatorTypeVo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentIndicatorVo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentPlanVo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentSchemeIndicatorVo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentSchemeVo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/TeacherClassVo.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentIndicatorMapper.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentIndicatorTypeMapper.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentPlanMapper.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentSchemeIndicatorMapper.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentSchemeMapper.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/TeacherAssessmentMapper.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentIndicatorService.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentIndicatorTypeService.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentPlanService.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentSchemeIndicatorService.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentSchemeService.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/ITeacherAssessmentService.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentIndicatorServiceImpl.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentIndicatorTypeServiceImpl.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentPlanServiceImpl.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentSchemeIndicatorServiceImpl.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentSchemeServiceImpl.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/TeacherAssessmentServiceImpl.java create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentIndicatorMapper.xml create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentPlanMapper.xml create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentSchemeIndicatorMapper.xml create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/TeacherAssessmentMapper.xml create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标体系开发文档.md create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标体系管理权限配置.sql create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标类型管理权限配置.md create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/班主任考核方案权限配置.sql create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/班主任考核管理权限配置.sql create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/班主任考核管理部署说明.md create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/班主任考核计划管理权限配置.sql create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/班主任考核计划管理部署说明.md create mode 100644 backend/ruoyi-modules/ruoyi-bzrkh/部署说明.md create mode 100644 docs/开发文档/API/班主任考核方案管理API.md create mode 100644 docs/开发文档/API/班主任考核计划管理API.md create mode 100644 docs/设计文档/database/班主任考核管理/README.md create mode 100644 docs/设计文档/database/班主任考核管理/bmzr_assessment_tables.sql create mode 100644 docs/设计文档/database/班主任考核管理/bmzr_dict_data_mysql.sql create mode 100644 web/src/api/bzrkh/assessmentIndicator/index.ts create mode 100644 web/src/api/bzrkh/assessmentIndicator/types.ts create mode 100644 web/src/api/bzrkh/assessmentIndicatorType/index.ts create mode 100644 web/src/api/bzrkh/assessmentIndicatorType/types.ts create mode 100644 web/src/api/bzrkh/assessmentPlan/index.ts create mode 100644 web/src/api/bzrkh/assessmentPlan/types.ts create mode 100644 web/src/api/bzrkh/assessmentScheme/index.ts create mode 100644 web/src/api/bzrkh/assessmentScheme/types.ts create mode 100644 web/src/api/bzrkh/assessmentSchemeIndicator/index.ts create mode 100644 web/src/api/bzrkh/assessmentSchemeIndicator/types.ts create mode 100644 web/src/api/bzrkh/teacherAssessment/index.ts create mode 100644 web/src/api/bzrkh/teacherAssessment/types.ts create mode 100644 web/src/views/bzrkh/assessmentIndicator/index.vue create mode 100644 web/src/views/bzrkh/assessmentIndicatorType/index.vue create mode 100644 web/src/views/bzrkh/assessmentPlan/index.vue create mode 100644 web/src/views/bzrkh/assessmentScheme/IndicatorManagement.vue create mode 100644 web/src/views/bzrkh/assessmentScheme/index.vue create mode 100644 web/src/views/bzrkh/teacherAssessment/index.vue diff --git a/backend/ruoyi-admin/pom.xml b/backend/ruoyi-admin/pom.xml index 3817f9f5..16c39fc8 100644 --- a/backend/ruoyi-admin/pom.xml +++ b/backend/ruoyi-admin/pom.xml @@ -148,6 +148,13 @@ ${revision} + + + org.dromara + ruoyi-bzrkh + ${revision} + + diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/pom.xml b/backend/ruoyi-modules/ruoyi-bzrkh/pom.xml new file mode 100644 index 00000000..e903bcff --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/pom.xml @@ -0,0 +1,109 @@ + + + + ruoyi-modules + org.dromara + ${revision} + + 4.0.0 + + ruoyi-bzrkh + + 班主任考核管理模块 + + + + + + + org.dromara + ruoyi-common-core + + + + org.dromara + ruoyi-common-doc + + + + org.dromara + ruoyi-common-mybatis + + + + org.dromara + ruoyi-common-log + + + + org.dromara + ruoyi-common-security + + + + org.dromara + ruoyi-common-web + + + + org.dromara + ruoyi-common-excel + + + + org.dromara + ruoyi-common-idempotent + + + + org.dromara + ruoyi-common-tenant + + + + org.dromara + ruoyi-common-social + + + + org.dromara + ruoyi-common-ratelimiter + + + + org.dromara + ruoyi-common-mail + + + + org.dromara + ruoyi-system + + + + org.dromara + ruoyi-job + + + + + org.dromara + ruoyi-generator + + + + + org.dromara + ruoyi-demo + + + + + org.dromara + ruoyi-workflow + + + + + \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentIndicatorController.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentIndicatorController.java new file mode 100644 index 00000000..9883062b --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentIndicatorController.java @@ -0,0 +1,115 @@ +package org.dromara.bzrkh.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.bzrkh.domain.vo.BmzrAssessmentIndicatorVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentIndicatorBo; +import org.dromara.bzrkh.service.IBmzrAssessmentIndicatorService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 班主任考核指标体系 + * + * @author ruoyi + * @date 2025-01-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/bzrkh/assessmentIndicator") +public class BmzrAssessmentIndicatorController extends BaseController { + + private final IBmzrAssessmentIndicatorService bmzrAssessmentIndicatorService; + + /** + * 查询班主任考核指标体系列表 + */ + @SaCheckPermission("bzrkh:assessmentIndicator:list") + @GetMapping("/list") + public TableDataInfo list(BmzrAssessmentIndicatorBo bo, PageQuery pageQuery) { + return bmzrAssessmentIndicatorService.queryPageList(bo, pageQuery); + } + + /** + * 查询班主任考核指标体系树形结构(用于父级选择) + */ + @SaCheckPermission("bzrkh:assessmentIndicator:list") + @GetMapping("/treeselect") + public R> treeselect(BmzrAssessmentIndicatorBo bo) { + List list = bmzrAssessmentIndicatorService.queryTreeList(bo); + return R.ok(list); + } + + /** + * 导出班主任考核指标体系列表 + */ + @SaCheckPermission("bzrkh:assessmentIndicator:export") + @Log(title = "班主任考核指标体系", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BmzrAssessmentIndicatorBo bo, HttpServletResponse response) { + List list = bmzrAssessmentIndicatorService.queryList(bo); + ExcelUtil.exportExcel(list, "班主任考核指标体系", BmzrAssessmentIndicatorVo.class, response); + } + + /** + * 获取班主任考核指标体系详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("bzrkh:assessmentIndicator:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(bmzrAssessmentIndicatorService.queryById(id)); + } + + /** + * 新增班主任考核指标体系 + */ + @SaCheckPermission("bzrkh:assessmentIndicator:add") + @Log(title = "班主任考核指标体系", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BmzrAssessmentIndicatorBo bo) { + return toAjax(bmzrAssessmentIndicatorService.insertByBo(bo)); + } + + /** + * 修改班主任考核指标体系 + */ + @SaCheckPermission("bzrkh:assessmentIndicator:edit") + @Log(title = "班主任考核指标体系", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BmzrAssessmentIndicatorBo bo) { + return toAjax(bmzrAssessmentIndicatorService.updateByBo(bo)); + } + + /** + * 删除班主任考核指标体系 + * + * @param ids 主键串 + */ + @SaCheckPermission("bzrkh:assessmentIndicator:remove") + @Log(title = "班主任考核指标体系", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(bmzrAssessmentIndicatorService.deleteWithValidByIds(List.of(ids), true)); + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentIndicatorTypeController.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentIndicatorTypeController.java new file mode 100644 index 00000000..6f69f107 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentIndicatorTypeController.java @@ -0,0 +1,115 @@ +package org.dromara.bzrkh.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.bzrkh.domain.vo.BmzrAssessmentIndicatorTypeVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentIndicatorTypeBo; +import org.dromara.bzrkh.service.IBmzrAssessmentIndicatorTypeService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 班主任考核指标类型 + * + * @author ruoyi + * @date 2025-01-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/bzrkh/assessmentIndicatorType") +public class BmzrAssessmentIndicatorTypeController extends BaseController { + + private final IBmzrAssessmentIndicatorTypeService bmzrAssessmentIndicatorTypeService; + + /** + * 查询班主任考核指标类型列表 + */ + @SaCheckPermission("bzrkh:assessmentIndicatorType:list") + @GetMapping("/list") + public TableDataInfo list(BmzrAssessmentIndicatorTypeBo bo, PageQuery pageQuery) { + return bmzrAssessmentIndicatorTypeService.queryPageList(bo, pageQuery); + } + + /** + * 查询所有班主任考核指标类型列表(包括已逻辑删除的) + */ + @SaCheckPermission("bzrkh:assessmentIndicatorType:list") + @GetMapping("/listAllIncludeDeleted") + public R> listAllIncludeDeleted(BmzrAssessmentIndicatorTypeBo bo) { + List list = bmzrAssessmentIndicatorTypeService.queryListWithDeleted(bo); + return R.ok(list); + } + + /** + * 导出班主任考核指标类型列表 + */ + @SaCheckPermission("bzrkh:assessmentIndicatorType:export") + @Log(title = "班主任考核指标类型", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BmzrAssessmentIndicatorTypeBo bo, HttpServletResponse response) { + List list = bmzrAssessmentIndicatorTypeService.queryList(bo); + ExcelUtil.exportExcel(list, "班主任考核指标类型", BmzrAssessmentIndicatorTypeVo.class, response); + } + + /** + * 获取班主任考核指标类型详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("bzrkh:assessmentIndicatorType:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(bmzrAssessmentIndicatorTypeService.queryById(id)); + } + + /** + * 新增班主任考核指标类型 + */ + @SaCheckPermission("bzrkh:assessmentIndicatorType:add") + @Log(title = "班主任考核指标类型", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BmzrAssessmentIndicatorTypeBo bo) { + return toAjax(bmzrAssessmentIndicatorTypeService.insertByBo(bo)); + } + + /** + * 修改班主任考核指标类型 + */ + @SaCheckPermission("bzrkh:assessmentIndicatorType:edit") + @Log(title = "班主任考核指标类型", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BmzrAssessmentIndicatorTypeBo bo) { + return toAjax(bmzrAssessmentIndicatorTypeService.updateByBo(bo)); + } + + /** + * 删除班主任考核指标类型 + * + * @param ids 主键串 + */ + @SaCheckPermission("bzrkh:assessmentIndicatorType:remove") + @Log(title = "班主任考核指标类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(bmzrAssessmentIndicatorTypeService.deleteWithValidByIds(List.of(ids), true)); + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentPlanController.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentPlanController.java new file mode 100644 index 00000000..8ab381b8 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentPlanController.java @@ -0,0 +1,120 @@ +package org.dromara.bzrkh.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.bzrkh.domain.vo.BmzrAssessmentPlanVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentPlanBo; +import org.dromara.bzrkh.service.IBmzrAssessmentPlanService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 班主任考核计划Controller + * + * @author ruoyi + * @date 2025-01-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/bzrkh/assessmentPlan") +public class BmzrAssessmentPlanController extends BaseController { + + private final IBmzrAssessmentPlanService bmzrAssessmentPlanService; + + /** + * 查询班主任考核计划列表 + */ + @SaCheckPermission("bzrkh:assessmentPlan:list") + @GetMapping("/list") + public TableDataInfo list(BmzrAssessmentPlanBo bo, PageQuery pageQuery) { + return bmzrAssessmentPlanService.queryPageList(bo, pageQuery); + } + + /** + * 导出班主任考核计划列表 + */ + @SaCheckPermission("bzrkh:assessmentPlan:export") + @Log(title = "班主任考核计划", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BmzrAssessmentPlanBo bo, HttpServletResponse response) { + List list = bmzrAssessmentPlanService.queryList(bo); + ExcelUtil.exportExcel(list, "班主任考核计划", BmzrAssessmentPlanVo.class, response); + } + + /** + * 获取班主任考核计划详细信息 + */ + @SaCheckPermission("bzrkh:assessmentPlan:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(bmzrAssessmentPlanService.queryById(id)); + } + + /** + * 新增班主任考核计划 + */ + @SaCheckPermission("bzrkh:assessmentPlan:add") + @Log(title = "班主任考核计划", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BmzrAssessmentPlanBo bo) { + return toAjax(bmzrAssessmentPlanService.insertByBo(bo)); + } + + /** + * 修改班主任考核计划 + */ + @SaCheckPermission("bzrkh:assessmentPlan:edit") + @Log(title = "班主任考核计划", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BmzrAssessmentPlanBo bo) { + return toAjax(bmzrAssessmentPlanService.updateByBo(bo)); + } + + /** + * 删除班主任考核计划 + */ + @SaCheckPermission("bzrkh:assessmentPlan:remove") + @Log(title = "班主任考核计划", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(bmzrAssessmentPlanService.deleteWithValidByIds(List.of(ids), true)); + } + + /** + * 修改考核计划状态 + */ + @SaCheckPermission("bzrkh:assessmentPlan:edit") + @Log(title = "班主任考核计划", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public R changeStatus(@RequestBody BmzrAssessmentPlanBo bo) { + return toAjax(bmzrAssessmentPlanService.updatePlanStatus(bo.getId(), bo.getPlanStatus())); + } + + /** + * 获取可用的考核方案选项 + */ + @SaCheckPermission("bzrkh:assessmentPlan:list") + @GetMapping("/schemes/options") + public R> getAvailableSchemes() { + return R.ok(bmzrAssessmentPlanService.getAvailableSchemes()); + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentSchemeController.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentSchemeController.java new file mode 100644 index 00000000..966adf39 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentSchemeController.java @@ -0,0 +1,103 @@ +package org.dromara.bzrkh.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +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.bzrkh.domain.vo.BmzrAssessmentSchemeVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentSchemeBo; +import org.dromara.bzrkh.service.IBmzrAssessmentSchemeService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 班主任考核方案 + * + * @author system + * @date 2025-01-08 + */ +@Slf4j +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/bzrkh/assessmentScheme") +public class BmzrAssessmentSchemeController extends BaseController { + + private final IBmzrAssessmentSchemeService bmzrAssessmentSchemeService; + + /** + * 查询班主任考核方案列表 + */ + @SaCheckPermission("bzrkh:assessmentScheme:list") + @GetMapping("/list") + public TableDataInfo list(BmzrAssessmentSchemeBo bo, PageQuery pageQuery) { + return bmzrAssessmentSchemeService.queryPageList(bo, pageQuery); + } + + /** + * 导出班主任考核方案列表 + */ + @SaCheckPermission("bzrkh:assessmentScheme:export") + @Log(title = "班主任考核方案", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BmzrAssessmentSchemeBo bo, HttpServletResponse response) { + List list = bmzrAssessmentSchemeService.queryList(bo); + ExcelUtil.exportExcel(list, "班主任考核方案", BmzrAssessmentSchemeVo.class, response); + } + + /** + * 获取班主任考核方案详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("bzrkh:assessmentScheme:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { + return R.ok(bmzrAssessmentSchemeService.queryById(id)); + } + + /** + * 新增班主任考核方案 + */ + @SaCheckPermission("bzrkh:assessmentScheme:add") + @Log(title = "班主任考核方案", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping + public R add(@Validated(AddGroup.class) @RequestBody BmzrAssessmentSchemeBo bo) { + return toAjax(bmzrAssessmentSchemeService.insertByBo(bo)); + } + + /** + * 修改班主任考核方案 + */ + @SaCheckPermission("bzrkh:assessmentScheme:edit") + @Log(title = "班主任考核方案", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping + public R edit(@Validated(EditGroup.class) @RequestBody BmzrAssessmentSchemeBo bo) { + return toAjax(bmzrAssessmentSchemeService.updateByBo(bo)); + } + + /** + * 删除班主任考核方案 + */ + @SaCheckPermission("bzrkh:assessmentScheme:remove") + @Log(title = "班主任考核方案", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { + return toAjax(bmzrAssessmentSchemeService.deleteWithValidByIds(List.of(ids), true)); + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentSchemeIndicatorController.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentSchemeIndicatorController.java new file mode 100644 index 00000000..f78ab0e3 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentSchemeIndicatorController.java @@ -0,0 +1,130 @@ +package org.dromara.bzrkh.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.bzrkh.domain.vo.BmzrAssessmentSchemeIndicatorVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentSchemeIndicatorBo; +import org.dromara.bzrkh.service.IBmzrAssessmentSchemeIndicatorService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 班主任考核方案指标关联 + * + * @author ruoyi + * @date 2025-01-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/bzrkh/assessmentSchemeIndicator") +public class BmzrAssessmentSchemeIndicatorController extends BaseController { + + private final IBmzrAssessmentSchemeIndicatorService bmzrAssessmentSchemeIndicatorService; + + /** + * 查询班主任考核方案指标关联列表 + */ + @SaCheckPermission("bzrkh:assessmentSchemeIndicator:list") + @GetMapping("/list") + public TableDataInfo list(BmzrAssessmentSchemeIndicatorBo bo, PageQuery pageQuery) { + return bmzrAssessmentSchemeIndicatorService.queryPageList(bo, pageQuery); + } + + /** + * 根据方案ID查询指标关联列表(无分页) + */ + @SaCheckPermission("bzrkh:assessmentSchemeIndicator:list") + @GetMapping("/listBySchemeId/{schemeId}") + public R> listBySchemeId(@PathVariable Long schemeId) { + List list = bmzrAssessmentSchemeIndicatorService.queryBySchemeId(schemeId); + return R.ok(list); + } + + /** + * 导出班主任考核方案指标关联列表 + */ + @SaCheckPermission("bzrkh:assessmentSchemeIndicator:export") + @Log(title = "班主任考核方案指标关联", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BmzrAssessmentSchemeIndicatorBo bo, HttpServletResponse response) { + List list = bmzrAssessmentSchemeIndicatorService.queryList(bo); + ExcelUtil.exportExcel(list, "班主任考核方案指标关联", BmzrAssessmentSchemeIndicatorVo.class, response); + } + + /** + * 获取班主任考核方案指标关联详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("bzrkh:assessmentSchemeIndicator:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(bmzrAssessmentSchemeIndicatorService.queryById(id)); + } + + /** + * 新增班主任考核方案指标关联 + */ + @SaCheckPermission("bzrkh:assessmentSchemeIndicator:add") + @Log(title = "班主任考核方案指标关联", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BmzrAssessmentSchemeIndicatorBo bo) { + return toAjax(bmzrAssessmentSchemeIndicatorService.insertByBo(bo)); + } + + /** + * 修改班主任考核方案指标关联 + */ + @SaCheckPermission("bzrkh:assessmentSchemeIndicator:edit") + @Log(title = "班主任考核方案指标关联", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BmzrAssessmentSchemeIndicatorBo bo) { + return toAjax(bmzrAssessmentSchemeIndicatorService.updateByBo(bo)); + } + + /** + * 删除班主任考核方案指标关联 + * + * @param ids 主键串 + */ + @SaCheckPermission("bzrkh:assessmentSchemeIndicator:remove") + @Log(title = "班主任考核方案指标关联", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(bmzrAssessmentSchemeIndicatorService.deleteWithValidByIds(List.of(ids), true)); + } + + /** + * 批量保存方案指标关联 + * + * @param schemeId 方案ID + * @param indicatorList 指标列表 + */ + @SaCheckPermission("bzrkh:assessmentSchemeIndicator:edit") + @Log(title = "批量保存方案指标关联", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping("/batchSave/{schemeId}") + public R batchSave(@PathVariable Long schemeId, + @RequestBody List indicatorList) { + return toAjax(bmzrAssessmentSchemeIndicatorService.batchSaveSchemeIndicators(schemeId, indicatorList)); + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/TeacherAssessmentController.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/TeacherAssessmentController.java new file mode 100644 index 00000000..67c6b3a3 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/TeacherAssessmentController.java @@ -0,0 +1,110 @@ +package org.dromara.bzrkh.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +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.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.log.enums.BusinessType; +import org.dromara.bzrkh.domain.vo.TeacherClassVo; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo; +import org.dromara.bzrkh.domain.bo.TeacherAssessmentQueryBo; +import org.dromara.bzrkh.service.ITeacherAssessmentService; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; + +/** + * 班主任考核管理Controller + * + * @author ruoyi + * @date 2025-01-27 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/bzrkh/teacherAssessment") +public class TeacherAssessmentController extends BaseController { + + private final ITeacherAssessmentService teacherAssessmentService; + + /** + * 查询班主任管理的班级列表 + */ + @SaCheckPermission("bzrkh:teacherAssessment:list") + @GetMapping("/classes") + public R> getTeacherClasses(@RequestParam(required = false) Long teacherId) { + // 如果没有传入teacherId,则使用当前登录用户ID + Long currentTeacherId = teacherId != null ? teacherId : LoginHelper.getUserId(); + List list = teacherAssessmentService.queryTeacherClassList(currentTeacherId); + return R.ok(list); + } + + /** + * 查询班主任考核计划列表 + */ + @SaCheckPermission("bzrkh:teacherAssessment:list") + @GetMapping("/plans") + public TableDataInfo getTeacherAssessmentPlans(TeacherAssessmentQueryBo bo, PageQuery pageQuery) { + // 如果没有传入teacherId,则使用当前登录用户ID + if (bo.getTeacherId() == null) { + bo.setTeacherId(LoginHelper.getUserId()); + } + return teacherAssessmentService.queryTeacherAssessmentPlanPageList(bo, pageQuery); + } + + /** + * 提交考核 + */ + @SaCheckPermission("bzrkh:teacherAssessment:submit") + @Log(title = "班主任考核管理", businessType = BusinessType.UPDATE) + @PostMapping("/submit") + public R submitAssessment(@RequestBody TeacherAssessmentSubmitRequest request) { + Long teacherId = LoginHelper.getUserId(); + boolean result = teacherAssessmentService.submitAssessment(request.getPlanId(), request.getClassId(), teacherId); + return toAjax(result); + } + + /** + * 查看考核详情 + */ + @SaCheckPermission("bzrkh:teacherAssessment:detail") + @GetMapping("/detail") + public R getAssessmentDetail(@RequestParam Long planId, @RequestParam Long classId) { + Long teacherId = LoginHelper.getUserId(); + Object detail = teacherAssessmentService.getAssessmentDetail(planId, classId, teacherId); + return R.ok(detail); + } + + /** + * 提交考核请求对象 + */ + public static class TeacherAssessmentSubmitRequest { + @NotNull(message = "计划ID不能为空") + private Long planId; + + @NotNull(message = "班级ID不能为空") + private Long classId; + + public Long getPlanId() { + return planId; + } + + public void setPlanId(Long planId) { + this.planId = planId; + } + + public Long getClassId() { + return classId; + } + + public void setClassId(Long classId) { + this.classId = classId; + } + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentIndicator.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentIndicator.java new file mode 100644 index 00000000..ac9cc1f9 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentIndicator.java @@ -0,0 +1,91 @@ +package org.dromara.bzrkh.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.math.BigDecimal; + +/** + * 班主任考核指标体系对象 bmzr_assessment_indicator + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("bmzr_assessment_indicator") +public class BmzrAssessmentIndicator extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 指标名称 + */ + private String indicatorName; + + /** + * 指标编码 + */ + private String indicatorCode; + + /** + * 指标类型 + */ + private String indicatorType; + + /** + * 父级指标ID + */ + private Long parentId; + + /** + * 排序 + */ + private Integer sortOrder; + + /** + * 权重比例(0-1之间) + */ + private BigDecimal weightRatio; + + /** + * 最高分值 + */ + private BigDecimal maxScore; + + /** + * 分值 + */ + private BigDecimal score; + + /** + * 允许自评(0=否 1=是) + */ + private String allowSelfEvaluation; + + /** + * 允许上级评(0=否 1=是) + */ + private String allowSuperiorEvaluation; + + /** + * 状态(0正常 1停用) + */ + private String status; + + /** + * 备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentIndicatorType.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentIndicatorType.java new file mode 100644 index 00000000..cefc32c3 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentIndicatorType.java @@ -0,0 +1,56 @@ +package org.dromara.bzrkh.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 班主任考核指标类型对象 bmzr_assessment_indicator_type + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("bmzr_assessment_indicator_type") +public class BmzrAssessmentIndicatorType extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic(value = "0", delval = "1") + private Integer deleted; + + /** + * 指标类型名称 + */ + private String indicatorTypeName; + + /** + * 指标类型编码 + */ + private String indicatorTypeCode; + + /** + * 状态(0正常 1停用) + */ + private String status; + + /** + * 备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentPlan.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentPlan.java new file mode 100644 index 00000000..c64a98ef --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentPlan.java @@ -0,0 +1,95 @@ +package org.dromara.bzrkh.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 班主任考核计划对象 bmzr_assessment_plan + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("bmzr_assessment_plan") +public class BmzrAssessmentPlan extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 计划名称 + */ + private String planName; + + /** + * 计划编码 + */ + private String planCode; + + /** + * 考核方案ID + */ + private Long schemeId; + + /** + * 学年 + */ + private String academicYear; + + /** + * 学期(1=上学期 2=下学期) + */ + private String semester; + + /** + * 计划开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date planStartTime; + + /** + * 计划结束时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date planEndTime; + + /** + * 数据提取开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date dataExtractStartTime; + + /** + * 数据提取结束时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date dataExtractEndTime; + + /** + * 计划状态(0=禁用 1=启用) + */ + private String planStatus; + + /** + * 计划描述 + */ + private String description; + + /** + * 备注 + */ + private String remark; +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentScheme.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentScheme.java new file mode 100644 index 00000000..2484096b --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentScheme.java @@ -0,0 +1,82 @@ +package org.dromara.bzrkh.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 班主任考核方案对象 bmzr_assessment_scheme + * + * @author system + * @date 2025-01-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("bmzr_assessment_scheme") +public class BmzrAssessmentScheme extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 删除标志 + */ + @TableLogic(value = "0", delval = "1") + private Long deleted; + + /** + * 方案名称 + */ + private String schemeName; + + /** + * 方案编码 + */ + private String schemeCode; + + /** + * 学年 + */ + private String academicYear; + + /** + * 学期 + */ + private String semester; + + /** + * 方案描述 + */ + private String schemeDescription; + + /** + * 是否需要自评 + */ + private String selfEvaluationRequired; + + /** + * 是否需要上级评 + */ + private String superiorEvaluationRequired; + + /** + * 状态 + */ + private String status; + + /** + * 备注 + */ + private String remark; +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentSchemeIndicator.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentSchemeIndicator.java new file mode 100644 index 00000000..26097146 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentSchemeIndicator.java @@ -0,0 +1,71 @@ +package org.dromara.bzrkh.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.math.BigDecimal; + +/** + * 班主任考核方案指标关联对象 bmzr_assessment_scheme_indicator + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("bmzr_assessment_scheme_indicator") +public class BmzrAssessmentSchemeIndicator extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 考核方案ID + */ + private Long schemeId; + + /** + * 考核指标ID + */ + private Long indicatorId; + + /** + * 在方案中的权重比例 + */ + private BigDecimal weightRatio; + + /** + * 自定义最高分值 + */ + private BigDecimal customMaxScore; + + /** + * 排序 + */ + private Integer sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private Integer deleted; +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentIndicatorBo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentIndicatorBo.java new file mode 100644 index 00000000..b5504e13 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentIndicatorBo.java @@ -0,0 +1,106 @@ +package org.dromara.bzrkh.domain.bo; + +import org.dromara.bzrkh.domain.BmzrAssessmentIndicator; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 班主任考核指标体系业务对象 bmzr_assessment_indicator + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BmzrAssessmentIndicator.class, reverseConvertGenerate = false) +public class BmzrAssessmentIndicatorBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 指标名称 + */ + @NotBlank(message = "指标名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String indicatorName; + + /** + * 指标编码 + */ + @NotBlank(message = "指标编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String indicatorCode; + + /** + * 指标类型 + */ + @NotBlank(message = "指标类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String indicatorType; + + /** + * 父级指标ID + */ + private Long parentId; + + /** + * 排序 + */ + @NotNull(message = "排序不能为空", groups = { AddGroup.class, EditGroup.class }) + @Min(value = 1, message = "排序必须大于等于1") + private Integer sortOrder; + + /** + * 权重比例(0-1之间) + */ + @NotNull(message = "权重比例不能为空", groups = { AddGroup.class, EditGroup.class }) + @DecimalMin(value = "0", message = "权重比例必须大于等于0") + @DecimalMax(value = "1", message = "权重比例必须小于等于1") + private BigDecimal weightRatio; + + /** + * 最高分值 + */ + @NotNull(message = "最高分值不能为空", groups = { AddGroup.class, EditGroup.class }) + @DecimalMin(value = "0", message = "最高分值必须大于等于0") + private BigDecimal maxScore; + + /** + * 分值 + */ + @NotNull(message = "分值不能为空", groups = { AddGroup.class, EditGroup.class }) + @DecimalMin(value = "0", message = "分值必须大于等于0") + private BigDecimal score; + + /** + * 允许自评(0=否 1=是) + */ + @NotBlank(message = "允许自评不能为空", groups = { AddGroup.class, EditGroup.class }) + private String allowSelfEvaluation; + + /** + * 允许上级评(0=否 1=是) + */ + @NotBlank(message = "允许上级评不能为空", groups = { AddGroup.class, EditGroup.class }) + private String allowSuperiorEvaluation; + + /** + * 状态(0正常 1停用) + */ + @NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class }) + private String status; + + /** + * 备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentIndicatorTypeBo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentIndicatorTypeBo.java new file mode 100644 index 00000000..f6f23217 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentIndicatorTypeBo.java @@ -0,0 +1,59 @@ +package org.dromara.bzrkh.domain.bo; + +import org.dromara.bzrkh.domain.BmzrAssessmentIndicatorType; +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.*; + +/** + * 班主任考核指标类型业务对象 bmzr_assessment_indicator_type + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BmzrAssessmentIndicatorType.class, reverseConvertGenerate = false) +public class BmzrAssessmentIndicatorTypeBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 删除标志 + */ + private Integer deleted; + + /** + * 指标类型名称 + */ + @NotBlank(message = "指标类型名称不能为空", groups = { AddGroup.class, EditGroup.class }) + @Size(max = 100, message = "指标类型名称长度不能超过100个字符") + private String indicatorTypeName; + + /** + * 指标类型编码 + */ + @NotBlank(message = "指标类型编码不能为空", groups = { AddGroup.class, EditGroup.class }) + @Size(max = 50, message = "指标类型编码长度不能超过50个字符") + private String indicatorTypeCode; + + /** + * 状态 + */ + private String status; + + /** + * 备注 + */ + @Size(max = 500, message = "备注长度不能超过500个字符") + private String remark; + +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentPlanBo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentPlanBo.java new file mode 100644 index 00000000..6fba62c2 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentPlanBo.java @@ -0,0 +1,109 @@ +package org.dromara.bzrkh.domain.bo; + +import org.dromara.bzrkh.domain.BmzrAssessmentPlan; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +import java.util.Date; + +/** + * 班主任考核计划业务对象 bmzr_assessment_plan + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BmzrAssessmentPlan.class, reverseConvertGenerate = false) +public class BmzrAssessmentPlanBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 计划名称 + */ + @NotBlank(message = "计划名称不能为空", groups = { AddGroup.class, EditGroup.class }) + @Size(max = 100, message = "计划名称长度不能超过100个字符") + private String planName; + + /** + * 计划编码 + */ + @NotBlank(message = "计划编码不能为空", groups = { AddGroup.class, EditGroup.class }) + @Size(max = 50, message = "计划编码长度不能超过50个字符") + private String planCode; + + /** + * 考核方案ID + */ + @NotNull(message = "考核方案ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long schemeId; + + /** + * 学年 + */ + @NotBlank(message = "学年不能为空", groups = { AddGroup.class, EditGroup.class }) + @Size(max = 10, message = "学年长度不能超过10个字符") + private String academicYear; + + /** + * 学期(1=上学期 2=下学期) + */ + @NotBlank(message = "学期不能为空", groups = { AddGroup.class, EditGroup.class }) + @Pattern(regexp = "^[12]$", message = "学期只能是1或2") + private String semester; + + /** + * 计划开始时间 + */ + @NotNull(message = "计划开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date planStartTime; + + /** + * 计划结束时间 + */ + @NotNull(message = "计划结束时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date planEndTime; + + /** + * 数据提取开始时间 + */ + private Date dataExtractStartTime; + + /** + * 数据提取结束时间 + */ + private Date dataExtractEndTime; + + /** + * 计划状态(0=禁用 1=启用) + */ + @Pattern(regexp = "^[01]$", message = "计划状态只能是0或1") + private String planStatus; + + /** + * 计划描述 + */ + @Size(max = 500, message = "计划描述长度不能超过500个字符") + private String description; + + /** + * 备注 + */ + @Size(max = 500, message = "备注长度不能超过500个字符") + private String remark; +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentSchemeBo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentSchemeBo.java new file mode 100644 index 00000000..62a7d1c8 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentSchemeBo.java @@ -0,0 +1,89 @@ +package org.dromara.bzrkh.domain.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +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.bzrkh.domain.BmzrAssessmentScheme; + +import java.util.Date; + +/** + * 班主任考核方案业务对象 bmzr_assessment_scheme + * + * @author system + * @date 2025-01-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BmzrAssessmentScheme.class, reverseConvertGenerate = false) +public class BmzrAssessmentSchemeBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 删除标志 + */ + private Long deleted; + + /** + * 方案名称 + */ + @NotBlank(message = "方案名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String schemeName; + + /** + * 方案编码 + */ + @NotBlank(message = "方案编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String schemeCode; + + /** + * 学年 + */ + @NotBlank(message = "学年不能为空", groups = { AddGroup.class, EditGroup.class }) + private String academicYear; + + /** + * 学期 + */ + @NotBlank(message = "学期不能为空", groups = { AddGroup.class, EditGroup.class }) + private String semester; + + /** + * 方案描述 + */ + private String schemeDescription; + + /** + * 是否需要自评 + */ + @NotBlank(message = "是否需要自评不能为空", groups = { AddGroup.class, EditGroup.class }) + private String selfEvaluationRequired; + + /** + * 是否需要上级评 + */ + @NotBlank(message = "是否需要上级评不能为空", groups = { AddGroup.class, EditGroup.class }) + private String superiorEvaluationRequired; + + /** + * 状态 + */ + @NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class }) + private String status; + + /** + * 备注 + */ + private String remark; +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentSchemeIndicatorBo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentSchemeIndicatorBo.java new file mode 100644 index 00000000..74aa49b8 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentSchemeIndicatorBo.java @@ -0,0 +1,77 @@ +package org.dromara.bzrkh.domain.bo; + +import org.dromara.bzrkh.domain.BmzrAssessmentSchemeIndicator; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 班主任考核方案指标关联业务对象 bmzr_assessment_scheme_indicator + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BmzrAssessmentSchemeIndicator.class, reverseConvertGenerate = false) +public class BmzrAssessmentSchemeIndicatorBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 考核方案ID + */ + @NotNull(message = "考核方案ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long schemeId; + + /** + * 考核指标ID + */ + @NotNull(message = "考核指标ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long indicatorId; + + /** + * 在方案中的权重比例 + */ + @DecimalMin(value = "0", message = "权重比例必须大于等于0") + @DecimalMax(value = "1", message = "权重比例必须小于等于1") + private BigDecimal weightRatio; + + /** + * 自定义最高分值 + */ + @DecimalMin(value = "0", message = "自定义最高分值必须大于等于0") + private BigDecimal customMaxScore; + + /** + * 指标分值(用于前端传递,保存时映射到customMaxScore) + */ + @DecimalMin(value = "0", message = "指标分值必须大于等于0") + private BigDecimal score; + + /** + * 排序 + */ + @Min(value = 1, message = "排序必须大于等于1") + private Integer sortOrder; + + /** + * 备注 + */ + private String remark; + + /** + * 指标名称(用于查询条件) + */ + private String indicatorName; +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/TeacherAssessmentQueryBo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/TeacherAssessmentQueryBo.java new file mode 100644 index 00000000..588513cb --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/TeacherAssessmentQueryBo.java @@ -0,0 +1,46 @@ +package org.dromara.bzrkh.domain.bo; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 班主任考核查询业务对象 + * + * @author ruoyi + * @date 2025-01-27 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class TeacherAssessmentQueryBo extends BaseEntity { + + /** + * 计划名称 + */ + private String planName; + + /** + * 班级ID + */ + private Long classId; + + /** + * 班主任ID + */ + private Long teacherId; + + /** + * 学年 + */ + private String academicYear; + + /** + * 学期(1=上学期 2=下学期) + */ + private String semester; + + /** + * 计划状态(0=禁用 1=启用) + */ + private String planStatus; +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentIndicatorTypeVo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentIndicatorTypeVo.java new file mode 100644 index 00000000..be98b8c1 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentIndicatorTypeVo.java @@ -0,0 +1,90 @@ +package org.dromara.bzrkh.domain.vo; + +import org.dromara.bzrkh.domain.BmzrAssessmentIndicatorType; +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 java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 班主任考核指标类型视图对象 bmzr_assessment_indicator_type + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BmzrAssessmentIndicatorType.class) +public class BmzrAssessmentIndicatorTypeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 删除标志 + */ + @ExcelProperty(value = "删除标志", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_item_delete") + private Integer deleted; + + /** + * 指标类型名称 + */ + @ExcelProperty(value = "指标类型名称") + private String indicatorTypeName; + + /** + * 指标类型编码 + */ + @ExcelProperty(value = "指标类型编码") + private String indicatorTypeCode; + + /** + * 状态 + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_item_enable") + private String status; + + /** + * 备注 + */ + @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; + +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentIndicatorVo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentIndicatorVo.java new file mode 100644 index 00000000..c26fcedb --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentIndicatorVo.java @@ -0,0 +1,157 @@ +package org.dromara.bzrkh.domain.vo; + +import org.dromara.bzrkh.domain.BmzrAssessmentIndicator; +import org.dromara.bzrkh.domain.BmzrAssessmentIndicatorType; +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 java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; +import java.util.List; + +/** + * 班主任考核指标体系视图对象 bmzr_assessment_indicator + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BmzrAssessmentIndicator.class) +public class BmzrAssessmentIndicatorVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 租户编号 + */ + @ExcelProperty(value = "租户编号") + private String tenantId; + + /** + * 指标名称 + */ + @ExcelProperty(value = "指标名称") + private String indicatorName; + + /** + * 指标编码 + */ + @ExcelProperty(value = "指标编码") + private String indicatorCode; + + /** + * 指标类型 + */ + @ExcelProperty(value = "指标类型") + private String indicatorType; + + /** + * 父级指标ID + */ + @ExcelProperty(value = "父级指标ID") + private Long parentId; + + /** + * 排序 + */ + @ExcelProperty(value = "排序") + private Integer sortOrder; + + /** + * 权重比例(0-1之间) + */ + @ExcelProperty(value = "权重比例") + private BigDecimal weightRatio; + + /** + * 最高分值 + */ + @ExcelProperty(value = "最高分值") + private BigDecimal maxScore; + + /** + * 分值 + */ + @ExcelProperty(value = "分值") + private BigDecimal score; + + /** + * 允许自评(0=否 1=是) + */ + @ExcelProperty(value = "允许自评", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_yes_no") + private String allowSelfEvaluation; + + /** + * 允许上级评(0=否 1=是) + */ + @ExcelProperty(value = "允许上级评", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_yes_no") + private String allowSuperiorEvaluation; + + /** + * 状态(0正常 1停用) + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_item_enable") + private String status; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建部门 + */ + private Long createDept; + + /** + * 创建者 + */ + 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; + + /** + * 删除标志(0代表存在 1代表删除) + */ + private Integer deleted; + + /** + * 子节点列表(用于树形结构) + */ + private List children; + +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentPlanVo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentPlanVo.java new file mode 100644 index 00000000..e17cf556 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentPlanVo.java @@ -0,0 +1,153 @@ +package org.dromara.bzrkh.domain.vo; + +import org.dromara.bzrkh.domain.BmzrAssessmentPlan; +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; + +/** + * 班主任考核计划视图对象 bmzr_assessment_plan + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BmzrAssessmentPlan.class) +public class BmzrAssessmentPlanVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 租户编号 + */ + @ExcelProperty(value = "租户编号") + private String tenantId; + + /** + * 计划名称 + */ + @ExcelProperty(value = "计划名称") + private String planName; + + /** + * 计划编码 + */ + @ExcelProperty(value = "计划编码") + private String planCode; + + /** + * 考核方案ID + */ + @ExcelProperty(value = "考核方案ID") + private Long schemeId; + + /** + * 考核方案名称 + */ + @ExcelProperty(value = "考核方案名称") + private String schemeName; + + /** + * 学年 + */ + @ExcelProperty(value = "学年") + private String academicYear; + + /** + * 学期(1=上学期 2=下学期) + */ + @ExcelProperty(value = "学期", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_semester") + private String semester; + + /** + * 计划开始时间 + */ + @ExcelProperty(value = "计划开始时间") + private Date planStartTime; + + /** + * 计划结束时间 + */ + @ExcelProperty(value = "计划结束时间") + private Date planEndTime; + + /** + * 数据提取开始时间 + */ + @ExcelProperty(value = "数据提取开始时间") + private Date dataExtractStartTime; + + /** + * 数据提取结束时间 + */ + @ExcelProperty(value = "数据提取结束时间") + private Date dataExtractEndTime; + + /** + * 计划状态(0=禁用 1=启用) + */ + @ExcelProperty(value = "计划状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_normal_disable") + private String planStatus; + + /** + * 计划描述 + */ + @ExcelProperty(value = "计划描述") + private String description; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建部门 + */ + @ExcelProperty(value = "创建部门") + private Long createDept; + + /** + * 创建者 + */ + private Long createBy; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新者 + */ + private Long updateBy; + + /** + * 更新时间 + */ + @ExcelProperty(value = "更新时间") + private Date updateTime; + + /** + * 删除标志(0代表存在 1代表删除) + */ + private String deleted; +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentSchemeIndicatorVo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentSchemeIndicatorVo.java new file mode 100644 index 00000000..4b23ca9c --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentSchemeIndicatorVo.java @@ -0,0 +1,126 @@ +package org.dromara.bzrkh.domain.vo; + +import org.dromara.bzrkh.domain.BmzrAssessmentSchemeIndicator; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +/** + * 班主任考核方案指标关联视图对象 bmzr_assessment_scheme_indicator + * + * @author ruoyi + * @date 2025-01-08 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BmzrAssessmentSchemeIndicator.class) +public class BmzrAssessmentSchemeIndicatorVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 租户编号 + */ + @ExcelProperty(value = "租户编号") + private String tenantId; + + /** + * 考核方案ID + */ + @ExcelProperty(value = "考核方案ID") + private Long schemeId; + + /** + * 考核指标ID + */ + @ExcelProperty(value = "考核指标ID") + private Long indicatorId; + + /** + * 指标名称 + */ + @ExcelProperty(value = "指标名称") + private String indicatorName; + + /** + * 指标编码 + */ + @ExcelProperty(value = "指标编码") + private String indicatorCode; + + /** + * 在方案中的权重比例 + */ + @ExcelProperty(value = "权重比例") + private BigDecimal weightRatio; + + /** + * 自定义最高分值 + */ + @ExcelProperty(value = "自定义最高分值") + private BigDecimal customMaxScore; + + /** + * 分值 + */ + @ExcelProperty(value = "分值") + private BigDecimal score; + + /** + * 排序 + */ + @ExcelProperty(value = "排序") + private Integer sortOrder; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建部门 + */ + private Long createDept; + + /** + * 创建者 + */ + 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; + + /** + * 删除标志(0代表存在 1代表删除) + */ + private Integer deleted; +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentSchemeVo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentSchemeVo.java new file mode 100644 index 00000000..da0e131a --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentSchemeVo.java @@ -0,0 +1,131 @@ +package org.dromara.bzrkh.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.bzrkh.domain.BmzrAssessmentScheme; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 班主任考核方案视图对象 bmzr_assessment_scheme + * + * @author system + * @date 2025-01-08 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BmzrAssessmentScheme.class) +public class BmzrAssessmentSchemeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 租户编号 + */ + @ExcelProperty(value = "租户编号") + private String tenantId; + + /** + * 删除标志 + */ + @ExcelProperty(value = "删除标志") + private Long deleted; + + /** + * 方案名称 + */ + @ExcelProperty(value = "方案名称") + private String schemeName; + + /** + * 方案编码 + */ + @ExcelProperty(value = "方案编码") + private String schemeCode; + + /** + * 学年 + */ + @ExcelProperty(value = "学年") + private String academicYear; + + /** + * 学期 + */ + @ExcelProperty(value = "学期") + private String semester; + + /** + * 方案描述 + */ + @ExcelProperty(value = "方案描述") + private String schemeDescription; + + /** + * 是否需要自评 + */ + @ExcelProperty(value = "是否需要自评") + private String selfEvaluationRequired; + + /** + * 是否需要上级评 + */ + @ExcelProperty(value = "是否需要上级评") + private String superiorEvaluationRequired; + + /** + * 状态 + */ + @ExcelProperty(value = "状态") + private String status; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建部门 + */ + @ExcelProperty(value = "创建部门") + private Long createDept; + + /** + * 创建者 + */ + @ExcelProperty(value = "创建者") + private Long createBy; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新者 + */ + @ExcelProperty(value = "更新者") + private Long updateBy; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ExcelProperty(value = "更新时间") + private Date updateTime; +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/TeacherClassVo.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/TeacherClassVo.java new file mode 100644 index 00000000..87986cdb --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/TeacherClassVo.java @@ -0,0 +1,117 @@ +package org.dromara.bzrkh.domain.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 班主任班级信息视图对象 + * + * @author ruoyi + * @date 2025-01-27 + */ +@Data +@ExcelIgnoreUnannotated +public class TeacherClassVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 班级ID + */ + @ExcelProperty(value = "班级ID") + private Long id; + + /** + * 班级代码 + */ + @ExcelProperty(value = "班级代码") + private String classCode; + + /** + * 班级名称 + */ + @ExcelProperty(value = "班级名称") + private String className; + + /** + * 班主任ID + */ + @ExcelProperty(value = "班主任ID") + private Long classTeacherId; + + /** + * 班主任姓名 + */ + @ExcelProperty(value = "班主任姓名") + private String classTeacherName; + + /** + * 年级 + */ + @ExcelProperty(value = "年级") + private String grade; + + /** + * 学院ID + */ + @ExcelProperty(value = "学院ID") + private Long collegeId; + + /** + * 学院名称 + */ + @ExcelProperty(value = "学院名称") + private String collegeName; + + /** + * 专业ID + */ + @ExcelProperty(value = "专业ID") + private Long majorId; + + /** + * 专业名称 + */ + @ExcelProperty(value = "专业名称") + private String majorName; + + /** + * 班级状态:1-正常,2-暂停,3-毕业,4-解散 + */ + @ExcelProperty(value = "班级状态") + private String classStatus; + + /** + * 当前学生人数 + */ + @ExcelProperty(value = "当前学生人数") + private Integer currentStudentCount; + + /** + * 创建者 + */ + private Long createBy; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date createTime; + + /** + * 更新者 + */ + private Long updateBy; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date updateTime; +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentIndicatorMapper.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentIndicatorMapper.java new file mode 100644 index 00000000..0c36e805 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentIndicatorMapper.java @@ -0,0 +1,15 @@ +package org.dromara.bzrkh.mapper; + +import org.dromara.bzrkh.domain.BmzrAssessmentIndicator; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentIndicatorVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 班主任考核指标体系Mapper接口 + * + * @author ruoyi + * @date 2025-01-08 + */ +public interface BmzrAssessmentIndicatorMapper extends BaseMapperPlus { + +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentIndicatorTypeMapper.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentIndicatorTypeMapper.java new file mode 100644 index 00000000..393d570f --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentIndicatorTypeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.bzrkh.mapper; + +import org.dromara.bzrkh.domain.BmzrAssessmentIndicatorType; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentIndicatorTypeVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 班主任考核指标类型Mapper接口 + * + * @author ruoyi + * @date 2025-01-08 + */ +public interface BmzrAssessmentIndicatorTypeMapper extends BaseMapperPlus { + +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentPlanMapper.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentPlanMapper.java new file mode 100644 index 00000000..50be25e3 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentPlanMapper.java @@ -0,0 +1,30 @@ +package org.dromara.bzrkh.mapper; + +import org.dromara.bzrkh.domain.BmzrAssessmentPlan; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentPlanBo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; + +/** + * 班主任考核计划Mapper接口 + * + * @author ruoyi + * @date 2025-01-08 + */ +public interface BmzrAssessmentPlanMapper extends BaseMapperPlus { + + /** + * 查询班主任考核计划列表(包含方案名称) + */ + List selectAssessmentPlanListWithScheme(BmzrAssessmentPlanBo bo); + + /** + * 分页查询班主任考核计划列表(包含方案名称) + */ + IPage selectAssessmentPlanPageWithScheme(Page page, BmzrAssessmentPlanBo bo); + +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentSchemeIndicatorMapper.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentSchemeIndicatorMapper.java new file mode 100644 index 00000000..17cbb264 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentSchemeIndicatorMapper.java @@ -0,0 +1,27 @@ +package org.dromara.bzrkh.mapper; + +import org.dromara.bzrkh.domain.BmzrAssessmentSchemeIndicator; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentSchemeIndicatorVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentSchemeIndicatorBo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 班主任考核方案指标关联Mapper接口 + * + * @author ruoyi + * @date 2025-01-08 + */ +public interface BmzrAssessmentSchemeIndicatorMapper extends BaseMapperPlus { + + /** + * 查询班主任考核方案指标关联列表(使用自定义SQL,包含score字段映射) + * + * @param bo 查询条件 + * @return 班主任考核方案指标关联列表 + */ + List queryList(@Param("bo") BmzrAssessmentSchemeIndicatorBo bo); + +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentSchemeMapper.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentSchemeMapper.java new file mode 100644 index 00000000..bd928eea --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentSchemeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.bzrkh.mapper; + +import org.dromara.bzrkh.domain.BmzrAssessmentScheme; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentSchemeVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 班主任考核方案Mapper接口 + * + * @author system + * @date 2025-01-08 + */ +public interface BmzrAssessmentSchemeMapper extends BaseMapperPlus { + +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/TeacherAssessmentMapper.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/TeacherAssessmentMapper.java new file mode 100644 index 00000000..b7657afd --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/TeacherAssessmentMapper.java @@ -0,0 +1,34 @@ +package org.dromara.bzrkh.mapper; + +import org.dromara.bzrkh.domain.vo.TeacherClassVo; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo; +import org.dromara.bzrkh.domain.bo.TeacherAssessmentQueryBo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 班主任考核管理Mapper接口 + * + * @author ruoyi + * @date 2025-01-27 + */ +public interface TeacherAssessmentMapper extends BaseMapperPlus { + + /** + * 查询班主任管理的班级列表 + * + * @param teacherId 班主任ID + * @return 班级列表 + */ + List selectTeacherClassList(@Param("teacherId") Long teacherId); + + /** + * 查询班主任考核计划列表 + * + * @param bo 查询条件 + * @return 考核计划列表 + */ + List selectTeacherAssessmentPlanList(TeacherAssessmentQueryBo bo); +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentIndicatorService.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentIndicatorService.java new file mode 100644 index 00000000..39bb3be4 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentIndicatorService.java @@ -0,0 +1,53 @@ +package org.dromara.bzrkh.service; + +import org.dromara.bzrkh.domain.vo.BmzrAssessmentIndicatorVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentIndicatorBo; +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 ruoyi + * @date 2025-01-08 + */ +public interface IBmzrAssessmentIndicatorService { + + /** + * 查询班主任考核指标体系 + */ + BmzrAssessmentIndicatorVo queryById(Long id); + + /** + * 查询班主任考核指标体系列表 + */ + TableDataInfo queryPageList(BmzrAssessmentIndicatorBo bo, PageQuery pageQuery); + + /** + * 查询班主任考核指标体系列表 + */ + List queryList(BmzrAssessmentIndicatorBo bo); + + /** + * 查询班主任考核指标体系树形列表 + */ + List queryTreeList(BmzrAssessmentIndicatorBo bo); + + /** + * 新增班主任考核指标体系 + */ + Boolean insertByBo(BmzrAssessmentIndicatorBo bo); + + /** + * 修改班主任考核指标体系 + */ + Boolean updateByBo(BmzrAssessmentIndicatorBo bo); + + /** + * 校验并批量删除班主任考核指标体系信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentIndicatorTypeService.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentIndicatorTypeService.java new file mode 100644 index 00000000..d600413a --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentIndicatorTypeService.java @@ -0,0 +1,76 @@ +package org.dromara.bzrkh.service; + +import org.dromara.bzrkh.domain.vo.BmzrAssessmentIndicatorTypeVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentIndicatorTypeBo; +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 ruoyi + * @date 2025-01-08 + */ +public interface IBmzrAssessmentIndicatorTypeService { + + /** + * 查询班主任考核指标类型 + * + * @param id 主键 + * @return 班主任考核指标类型 + */ + BmzrAssessmentIndicatorTypeVo queryById(Long id); + + /** + * 分页查询班主任考核指标类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 班主任考核指标类型分页列表 + */ + TableDataInfo queryPageList(BmzrAssessmentIndicatorTypeBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的班主任考核指标类型列表 + * + * @param bo 查询条件 + * @return 班主任考核指标类型列表 + */ + List queryList(BmzrAssessmentIndicatorTypeBo bo); + + /** + * 查询所有班主任考核指标类型列表,包括已逻辑删除的 + * + * @param bo 查询条件 + * @return 包含已删除记录的班主任考核指标类型列表 + */ + List queryListWithDeleted(BmzrAssessmentIndicatorTypeBo bo); + + /** + * 新增班主任考核指标类型 + * + * @param bo 班主任考核指标类型 + * @return 是否新增成功 + */ + Boolean insertByBo(BmzrAssessmentIndicatorTypeBo bo); + + /** + * 修改班主任考核指标类型 + * + * @param bo 班主任考核指标类型 + * @return 是否修改成功 + */ + Boolean updateByBo(BmzrAssessmentIndicatorTypeBo bo); + + /** + * 校验并批量删除班主任考核指标类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentPlanService.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentPlanService.java new file mode 100644 index 00000000..31327570 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentPlanService.java @@ -0,0 +1,58 @@ +package org.dromara.bzrkh.service; + +import org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentPlanBo; +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 ruoyi + * @date 2025-01-08 + */ +public interface IBmzrAssessmentPlanService { + + /** + * 查询班主任考核计划 + */ + BmzrAssessmentPlanVo queryById(Long id); + + /** + * 查询班主任考核计划列表 + */ + TableDataInfo queryPageList(BmzrAssessmentPlanBo bo, PageQuery pageQuery); + + /** + * 查询班主任考核计划列表 + */ + List queryList(BmzrAssessmentPlanBo bo); + + /** + * 新增班主任考核计划 + */ + Boolean insertByBo(BmzrAssessmentPlanBo bo); + + /** + * 修改班主任考核计划 + */ + Boolean updateByBo(BmzrAssessmentPlanBo bo); + + /** + * 校验并批量删除班主任考核计划信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 修改考核计划状态 + */ + Boolean updatePlanStatus(Long id, String planStatus); + + /** + * 获取可用的考核方案选项 + */ + List getAvailableSchemes(); +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentSchemeIndicatorService.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentSchemeIndicatorService.java new file mode 100644 index 00000000..c68ae137 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentSchemeIndicatorService.java @@ -0,0 +1,85 @@ +package org.dromara.bzrkh.service; + +import org.dromara.bzrkh.domain.vo.BmzrAssessmentSchemeIndicatorVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentSchemeIndicatorBo; +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 ruoyi + * @date 2025-01-08 + */ +public interface IBmzrAssessmentSchemeIndicatorService { + + /** + * 查询班主任考核方案指标关联 + * + * @param id 主键 + * @return 班主任考核方案指标关联 + */ + BmzrAssessmentSchemeIndicatorVo queryById(Long id); + + /** + * 查询班主任考核方案指标关联列表 + * + * @param bo 查询条件 + * @return 班主任考核方案指标关联集合 + */ + List queryList(BmzrAssessmentSchemeIndicatorBo bo); + + /** + * 分页查询班主任考核方案指标关联列表 + * + * @param bo 查询条件 + * @param pageQuery 分页查询条件 + * @return 班主任考核方案指标关联分页列表 + */ + TableDataInfo queryPageList(BmzrAssessmentSchemeIndicatorBo bo, PageQuery pageQuery); + + /** + * 新增班主任考核方案指标关联 + * + * @param bo 班主任考核方案指标关联 + * @return 新增结果 + */ + Boolean insertByBo(BmzrAssessmentSchemeIndicatorBo bo); + + /** + * 修改班主任考核方案指标关联 + * + * @param bo 班主任考核方案指标关联 + * @return 修改结果 + */ + Boolean updateByBo(BmzrAssessmentSchemeIndicatorBo bo); + + /** + * 校验并批量删除班主任考核方案指标关联信息 + * + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return 删除结果 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 根据方案ID查询指标关联列表 + * + * @param schemeId 方案ID + * @return 指标关联列表 + */ + List queryBySchemeId(Long schemeId); + + /** + * 批量保存方案指标关联 + * + * @param schemeId 方案ID + * @param indicatorList 指标列表 + * @return 保存结果 + */ + Boolean batchSaveSchemeIndicators(Long schemeId, List indicatorList); +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentSchemeService.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentSchemeService.java new file mode 100644 index 00000000..f8dbc072 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentSchemeService.java @@ -0,0 +1,48 @@ +package org.dromara.bzrkh.service; + +import org.dromara.bzrkh.domain.vo.BmzrAssessmentSchemeVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentSchemeBo; +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 system + * @date 2025-01-08 + */ +public interface IBmzrAssessmentSchemeService { + + /** + * 查询班主任考核方案 + */ + BmzrAssessmentSchemeVo queryById(Long id); + + /** + * 查询班主任考核方案列表 + */ + TableDataInfo queryPageList(BmzrAssessmentSchemeBo bo, PageQuery pageQuery); + + /** + * 查询班主任考核方案列表 + */ + List queryList(BmzrAssessmentSchemeBo bo); + + /** + * 新增班主任考核方案 + */ + Boolean insertByBo(BmzrAssessmentSchemeBo bo); + + /** + * 修改班主任考核方案 + */ + Boolean updateByBo(BmzrAssessmentSchemeBo bo); + + /** + * 校验并批量删除班主任考核方案信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/ITeacherAssessmentService.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/ITeacherAssessmentService.java new file mode 100644 index 00000000..8d37fd2d --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/ITeacherAssessmentService.java @@ -0,0 +1,55 @@ +package org.dromara.bzrkh.service; + +import org.dromara.bzrkh.domain.vo.TeacherClassVo; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo; +import org.dromara.bzrkh.domain.bo.TeacherAssessmentQueryBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.List; + +/** + * 班主任考核管理Service接口 + * + * @author ruoyi + * @date 2025-01-27 + */ +public interface ITeacherAssessmentService { + + /** + * 查询班主任管理的班级列表 + * + * @param teacherId 班主任ID + * @return 班级列表 + */ + List queryTeacherClassList(Long teacherId); + + /** + * 查询班主任考核计划列表(分页) + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 考核计划列表 + */ + TableDataInfo queryTeacherAssessmentPlanPageList(TeacherAssessmentQueryBo bo, PageQuery pageQuery); + + /** + * 提交考核 + * + * @param planId 计划ID + * @param classId 班级ID + * @param teacherId 班主任ID + * @return 是否成功 + */ + boolean submitAssessment(Long planId, Long classId, Long teacherId); + + /** + * 查看考核详情 + * + * @param planId 计划ID + * @param classId 班级ID + * @param teacherId 班主任ID + * @return 考核详情 + */ + Object getAssessmentDetail(Long planId, Long classId, Long teacherId); +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentIndicatorServiceImpl.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentIndicatorServiceImpl.java new file mode 100644 index 00000000..d450dc3e --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentIndicatorServiceImpl.java @@ -0,0 +1,180 @@ +package org.dromara.bzrkh.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 org.springframework.stereotype.Service; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentIndicatorBo; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentIndicatorVo; +import org.dromara.bzrkh.domain.BmzrAssessmentIndicator; +import org.dromara.bzrkh.mapper.BmzrAssessmentIndicatorMapper; +import org.dromara.bzrkh.service.IBmzrAssessmentIndicatorService; + +import java.util.List; +import java.util.Collection; +import java.util.ArrayList; +import java.util.stream.Collectors; + +/** + * 班主任考核指标体系Service业务层处理 + * + * @author ruoyi + * @date 2025-01-08 + */ +@RequiredArgsConstructor +@Service +public class BmzrAssessmentIndicatorServiceImpl implements IBmzrAssessmentIndicatorService { + + private final BmzrAssessmentIndicatorMapper baseMapper; + + /** + * 查询班主任考核指标体系 + */ + @Override + public BmzrAssessmentIndicatorVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询班主任考核指标体系列表 + */ + @Override + public TableDataInfo queryPageList(BmzrAssessmentIndicatorBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询班主任考核指标体系列表 + */ + @Override + public List queryList(BmzrAssessmentIndicatorBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + /** + * 查询班主任考核指标体系树形列表 + */ + @Override + public List queryTreeList(BmzrAssessmentIndicatorBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + lqw.orderByAsc(BmzrAssessmentIndicator::getSortOrder); + List list = baseMapper.selectVoList(lqw); + return buildTree(list); + } + + private LambdaQueryWrapper buildQueryWrapper(BmzrAssessmentIndicatorBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getIndicatorName()), BmzrAssessmentIndicator::getIndicatorName, bo.getIndicatorName()); + lqw.eq(StringUtils.isNotBlank(bo.getIndicatorCode()), BmzrAssessmentIndicator::getIndicatorCode, bo.getIndicatorCode()); + lqw.eq(StringUtils.isNotBlank(bo.getIndicatorType()), BmzrAssessmentIndicator::getIndicatorType, bo.getIndicatorType()); + lqw.eq(bo.getParentId() != null, BmzrAssessmentIndicator::getParentId, bo.getParentId()); + lqw.eq(StringUtils.isNotBlank(bo.getAllowSelfEvaluation()), BmzrAssessmentIndicator::getAllowSelfEvaluation, bo.getAllowSelfEvaluation()); + lqw.eq(StringUtils.isNotBlank(bo.getAllowSuperiorEvaluation()), BmzrAssessmentIndicator::getAllowSuperiorEvaluation, bo.getAllowSuperiorEvaluation()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BmzrAssessmentIndicator::getStatus, bo.getStatus()); + lqw.orderByAsc(BmzrAssessmentIndicator::getSortOrder); + return lqw; + } + + /** + * 构建树形结构 + */ + private List buildTree(List list) { + List tree = new ArrayList<>(); + List tempList = list.stream().map(BmzrAssessmentIndicatorVo::getId).collect(Collectors.toList()); + for (BmzrAssessmentIndicatorVo vo : list) { + // 如果是顶级节点,遍历该父节点的所有子节点 + if (vo.getParentId() == null || vo.getParentId() == 0 || !tempList.contains(vo.getParentId())) { + recursionFn(list, vo); + tree.add(vo); + } + } + if (tree.isEmpty()) { + tree = list; + } + return tree; + } + + /** + * 递归列表 + */ + private void recursionFn(List list, BmzrAssessmentIndicatorVo vo) { + // 得到子节点列表 + List childList = getChildList(list, vo); + vo.setChildren(childList); + for (BmzrAssessmentIndicatorVo tChild : childList) { + if (hasChild(list, tChild)) { + recursionFn(list, tChild); + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList(List list, BmzrAssessmentIndicatorVo vo) { + List tlist = new ArrayList<>(); + for (BmzrAssessmentIndicatorVo n : list) { + if (n.getParentId() != null && n.getParentId().longValue() == vo.getId().longValue()) { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, BmzrAssessmentIndicatorVo vo) { + return getChildList(list, vo).size() > 0; + } + + /** + * 新增班主任考核指标体系 + */ + @Override + public Boolean insertByBo(BmzrAssessmentIndicatorBo bo) { + BmzrAssessmentIndicator add = MapstructUtils.convert(bo, BmzrAssessmentIndicator.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改班主任考核指标体系 + */ + @Override + public Boolean updateByBo(BmzrAssessmentIndicatorBo bo) { + BmzrAssessmentIndicator update = MapstructUtils.convert(bo, BmzrAssessmentIndicator.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BmzrAssessmentIndicator entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除班主任考核指标体系 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentIndicatorTypeServiceImpl.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentIndicatorTypeServiceImpl.java new file mode 100644 index 00000000..5e9ea970 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentIndicatorTypeServiceImpl.java @@ -0,0 +1,168 @@ +package org.dromara.bzrkh.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.bzrkh.domain.bo.BmzrAssessmentIndicatorTypeBo; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentIndicatorTypeVo; +import org.dromara.bzrkh.domain.BmzrAssessmentIndicatorType; +import org.dromara.bzrkh.mapper.BmzrAssessmentIndicatorTypeMapper; +import org.dromara.bzrkh.service.IBmzrAssessmentIndicatorTypeService; + +import java.util.List; +import java.util.Collection; + +/** + * 班主任考核指标类型Service业务层处理 + * + * @author ruoyi + * @date 2025-01-08 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class BmzrAssessmentIndicatorTypeServiceImpl implements IBmzrAssessmentIndicatorTypeService { + + private final BmzrAssessmentIndicatorTypeMapper baseMapper; + + /** + * 查询班主任考核指标类型 + * + * @param id 主键 + * @return 班主任考核指标类型 + */ + @Override + public BmzrAssessmentIndicatorTypeVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 分页查询班主任考核指标类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 班主任考核指标类型分页列表 + */ + @Override + public TableDataInfo queryPageList(BmzrAssessmentIndicatorTypeBo 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(BmzrAssessmentIndicatorTypeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + /** + * 查询所有班主任考核指标类型列表,包括已逻辑删除的 + * + * @param bo 查询条件 + * @return 包含已删除记录的班主任考核指标类型列表 + */ + @Override + public List queryListWithDeleted(BmzrAssessmentIndicatorTypeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapperWithDeleted(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(BmzrAssessmentIndicatorTypeBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getDeleted() != null, BmzrAssessmentIndicatorType::getDeleted, bo.getDeleted()); + lqw.like(StringUtils.isNotBlank(bo.getIndicatorTypeName()), BmzrAssessmentIndicatorType::getIndicatorTypeName, bo.getIndicatorTypeName()); + lqw.eq(StringUtils.isNotBlank(bo.getIndicatorTypeCode()), BmzrAssessmentIndicatorType::getIndicatorTypeCode, bo.getIndicatorTypeCode()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BmzrAssessmentIndicatorType::getStatus, bo.getStatus()); + lqw.orderByAsc(BmzrAssessmentIndicatorType::getCreateTime); + return lqw; + } + + private LambdaQueryWrapper buildQueryWrapperWithDeleted(BmzrAssessmentIndicatorTypeBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + // 禁用逻辑删除过滤器,查询包含已删除的记录 + lqw.in(BmzrAssessmentIndicatorType::getDeleted, 0, 1); + lqw.like(StringUtils.isNotBlank(bo.getIndicatorTypeName()), BmzrAssessmentIndicatorType::getIndicatorTypeName, bo.getIndicatorTypeName()); + lqw.eq(StringUtils.isNotBlank(bo.getIndicatorTypeCode()), BmzrAssessmentIndicatorType::getIndicatorTypeCode, bo.getIndicatorTypeCode()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BmzrAssessmentIndicatorType::getStatus, bo.getStatus()); + lqw.orderByAsc(BmzrAssessmentIndicatorType::getCreateTime); + return lqw; + } + + /** + * 新增班主任考核指标类型 + * + * @param bo 班主任考核指标类型 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(BmzrAssessmentIndicatorTypeBo bo) { + BmzrAssessmentIndicatorType add = MapstructUtils.convert(bo, BmzrAssessmentIndicatorType.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改班主任考核指标类型 + * + * @param bo 班主任考核指标类型 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BmzrAssessmentIndicatorTypeBo bo) { + BmzrAssessmentIndicatorType update = MapstructUtils.convert(bo, BmzrAssessmentIndicatorType.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + * + * @param entity 实体类数据 + */ + private void validEntityBeforeSave(BmzrAssessmentIndicatorType entity) { + // TODO 做一些数据校验,如唯一约束 + // 检查指标类型编码是否重复 + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(BmzrAssessmentIndicatorType::getIndicatorTypeCode, entity.getIndicatorTypeCode()); + if (entity.getId() != null) { + lqw.ne(BmzrAssessmentIndicatorType::getId, entity.getId()); + } + boolean exists = baseMapper.exists(lqw); + if (exists) { + throw new RuntimeException("指标类型编码已存在,请修改后重试"); + } + } + + /** + * 批量删除班主任考核指标类型 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + // TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentPlanServiceImpl.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentPlanServiceImpl.java new file mode 100644 index 00000000..296a9266 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentPlanServiceImpl.java @@ -0,0 +1,147 @@ +package org.dromara.bzrkh.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.metadata.IPage; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentPlanBo; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo; +import org.dromara.bzrkh.domain.BmzrAssessmentPlan; +import org.dromara.bzrkh.mapper.BmzrAssessmentPlanMapper; +import org.dromara.bzrkh.service.IBmzrAssessmentPlanService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 班主任考核计划Service业务层处理 + * + * @author ruoyi + * @date 2025-01-08 + */ +@RequiredArgsConstructor +@Service +public class BmzrAssessmentPlanServiceImpl implements IBmzrAssessmentPlanService { + + private final BmzrAssessmentPlanMapper baseMapper; + + /** + * 查询班主任考核计划 + */ + @Override + public BmzrAssessmentPlanVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询班主任考核计划列表 + */ + @Override + public TableDataInfo queryPageList(BmzrAssessmentPlanBo bo, PageQuery pageQuery) { + IPage page = baseMapper.selectAssessmentPlanPageWithScheme(pageQuery.build(), bo); + return TableDataInfo.build(page); + } + + /** + * 查询班主任考核计划列表 + */ + @Override + public List queryList(BmzrAssessmentPlanBo bo) { + return baseMapper.selectAssessmentPlanListWithScheme(bo); + } + + private LambdaQueryWrapper buildQueryWrapper(BmzrAssessmentPlanBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getPlanName()), BmzrAssessmentPlan::getPlanName, bo.getPlanName()); + lqw.eq(StringUtils.isNotBlank(bo.getPlanCode()), BmzrAssessmentPlan::getPlanCode, bo.getPlanCode()); + lqw.eq(bo.getSchemeId() != null, BmzrAssessmentPlan::getSchemeId, bo.getSchemeId()); + lqw.like(StringUtils.isNotBlank(bo.getAcademicYear()), BmzrAssessmentPlan::getAcademicYear, bo.getAcademicYear()); + lqw.eq(StringUtils.isNotBlank(bo.getSemester()), BmzrAssessmentPlan::getSemester, bo.getSemester()); + lqw.eq(StringUtils.isNotBlank(bo.getPlanStatus()), BmzrAssessmentPlan::getPlanStatus, bo.getPlanStatus()); + lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null, + BmzrAssessmentPlan::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime")); + lqw.orderByDesc(BmzrAssessmentPlan::getCreateTime); + return lqw; + } + + /** + * 新增班主任考核计划 + */ + @Override + public Boolean insertByBo(BmzrAssessmentPlanBo bo) { + BmzrAssessmentPlan add = MapstructUtils.convert(bo, BmzrAssessmentPlan.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改班主任考核计划 + */ + @Override + public Boolean updateByBo(BmzrAssessmentPlanBo bo) { + BmzrAssessmentPlan update = MapstructUtils.convert(bo, BmzrAssessmentPlan.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BmzrAssessmentPlan entity){ + // 计划编码唯一性校验 + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(BmzrAssessmentPlan::getPlanCode, entity.getPlanCode()); + if (entity.getId() != null) { + lqw.ne(BmzrAssessmentPlan::getId, entity.getId()); + } + long count = baseMapper.selectCount(lqw); + if (count > 0) { + throw new RuntimeException("计划编码已存在"); + } + } + + /** + * 批量删除班主任考核计划 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + // 删除前校验 + // 这里可以添加删除前的业务校验逻辑 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + /** + * 修改考核计划状态 + */ + @Override + public Boolean updatePlanStatus(Long id, String planStatus) { + BmzrAssessmentPlan plan = new BmzrAssessmentPlan(); + plan.setId(id); + plan.setPlanStatus(planStatus); + return baseMapper.updateById(plan) > 0; + } + + /** + * 获取可用的考核方案选项 + */ + @Override + public List getAvailableSchemes() { + // 这里应该查询考核方案表,暂时返回空列表 + // 需要根据实际的考核方案表来实现 + return List.of(); + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentSchemeIndicatorServiceImpl.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentSchemeIndicatorServiceImpl.java new file mode 100644 index 00000000..f78b0dad --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentSchemeIndicatorServiceImpl.java @@ -0,0 +1,187 @@ +package org.dromara.bzrkh.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 org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.dromara.bzrkh.domain.BmzrAssessmentSchemeIndicator; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentSchemeIndicatorVo; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentSchemeIndicatorBo; +import org.dromara.bzrkh.mapper.BmzrAssessmentSchemeIndicatorMapper; +import org.dromara.bzrkh.service.IBmzrAssessmentSchemeIndicatorService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * 班主任考核方案指标关联Service业务层处理 + * + * @author ruoyi + * @date 2025-01-08 + */ +@RequiredArgsConstructor +@Service +public class BmzrAssessmentSchemeIndicatorServiceImpl implements IBmzrAssessmentSchemeIndicatorService { + + private final BmzrAssessmentSchemeIndicatorMapper baseMapper; + + /** + * 查询班主任考核方案指标关联 + * + * @param id 主键 + * @return 班主任考核方案指标关联 + */ + @Override + public BmzrAssessmentSchemeIndicatorVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 查询班主任考核方案指标关联列表 + * + * @param bo 查询条件 + * @return 班主任考核方案指标关联 + */ + @Override + public List queryList(BmzrAssessmentSchemeIndicatorBo bo) { + // 使用自定义SQL查询,确保score字段正确映射 + return baseMapper.queryList(bo); + } + + private LambdaQueryWrapper buildQueryWrapper(BmzrAssessmentSchemeIndicatorBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getSchemeId() != null, BmzrAssessmentSchemeIndicator::getSchemeId, bo.getSchemeId()); + lqw.eq(bo.getIndicatorId() != null, BmzrAssessmentSchemeIndicator::getIndicatorId, bo.getIndicatorId()); + lqw.eq(bo.getSortOrder() != null, BmzrAssessmentSchemeIndicator::getSortOrder, bo.getSortOrder()); + lqw.like(StringUtils.isNotBlank(bo.getRemark()), BmzrAssessmentSchemeIndicator::getRemark, bo.getRemark()); + lqw.orderByAsc(BmzrAssessmentSchemeIndicator::getSortOrder); + return lqw; + } + + /** + * 分页查询班主任考核方案指标关联列表 + * + * @param bo 查询条件 + * @param pageQuery 分页查询条件 + * @return 班主任考核方案指标关联分页列表 + */ + @Override + public TableDataInfo queryPageList(BmzrAssessmentSchemeIndicatorBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 新增班主任考核方案指标关联 + * + * @param bo 班主任考核方案指标关联 + * @return 新增结果 + */ + @Override + public Boolean insertByBo(BmzrAssessmentSchemeIndicatorBo bo) { + BmzrAssessmentSchemeIndicator add = MapstructUtils.convert(bo, BmzrAssessmentSchemeIndicator.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改班主任考核方案指标关联 + * + * @param bo 班主任考核方案指标关联 + * @return 修改结果 + */ + @Override + public Boolean updateByBo(BmzrAssessmentSchemeIndicatorBo bo) { + BmzrAssessmentSchemeIndicator update = MapstructUtils.convert(bo, BmzrAssessmentSchemeIndicator.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + * + * @param entity 实体类数据 + */ + private void validEntityBeforeSave(BmzrAssessmentSchemeIndicator entity) { + // TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除班主任考核方案指标关联信息 + * + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return 删除结果 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + // TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + /** + * 根据方案ID查询指标关联列表 + * + * @param schemeId 方案ID + * @return 指标关联列表 + */ + @Override + public List queryBySchemeId(Long schemeId) { + BmzrAssessmentSchemeIndicatorBo bo = new BmzrAssessmentSchemeIndicatorBo(); + bo.setSchemeId(schemeId); + return queryList(bo); + } + + /** + * 批量保存方案指标关联 + * + * @param schemeId 方案ID + * @param indicatorList 指标列表 + * @return 保存结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchSaveSchemeIndicators(Long schemeId, List indicatorList) { + // 先删除原有关联 + LambdaQueryWrapper deleteWrapper = Wrappers.lambdaQuery(); + deleteWrapper.eq(BmzrAssessmentSchemeIndicator::getSchemeId, schemeId); + baseMapper.delete(deleteWrapper); + + // 批量新增 + if (indicatorList != null && !indicatorList.isEmpty()) { + AtomicInteger sortOrder = new AtomicInteger(1); + for (BmzrAssessmentSchemeIndicatorBo bo : indicatorList) { + // 清空ID字段,避免主键冲突 + bo.setId(null); + bo.setSchemeId(schemeId); + bo.setSortOrder(sortOrder.getAndIncrement()); + + // 关键修复:将score字段的值映射到customMaxScore字段 + if (bo.getScore() != null) { + bo.setCustomMaxScore(bo.getScore()); + } + + BmzrAssessmentSchemeIndicator entity = MapstructUtils.convert(bo, BmzrAssessmentSchemeIndicator.class); + baseMapper.insert(entity); + } + } + + return true; + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentSchemeServiceImpl.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentSchemeServiceImpl.java new file mode 100644 index 00000000..28dd910b --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentSchemeServiceImpl.java @@ -0,0 +1,141 @@ +package org.dromara.bzrkh.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 cn.hutool.core.collection.CollUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.dromara.bzrkh.domain.bo.BmzrAssessmentSchemeBo; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentSchemeVo; +import org.dromara.bzrkh.domain.BmzrAssessmentScheme; +import org.dromara.bzrkh.mapper.BmzrAssessmentSchemeMapper; +import org.dromara.bzrkh.service.IBmzrAssessmentSchemeService; + +import java.util.List; +import java.util.Collection; +import java.util.Map; + +/** + * 班主任考核方案Service业务层处理 + * + * @author system + * @date 2025-01-08 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class BmzrAssessmentSchemeServiceImpl implements IBmzrAssessmentSchemeService { + + private final BmzrAssessmentSchemeMapper baseMapper; + + /** + * 查询班主任考核方案 + * + * @param id 主键 + * @return 班主任考核方案 + */ + @Override + public BmzrAssessmentSchemeVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 查询班主任考核方案列表 + * + * @param bo 查询条件 + * @param pageQuery 分页查询条件 + * @return 班主任考核方案分页列表 + */ + @Override + public TableDataInfo queryPageList(BmzrAssessmentSchemeBo 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(BmzrAssessmentSchemeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(BmzrAssessmentSchemeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getSchemeName()), BmzrAssessmentScheme::getSchemeName, bo.getSchemeName()); + lqw.eq(StringUtils.isNotBlank(bo.getSchemeCode()), BmzrAssessmentScheme::getSchemeCode, bo.getSchemeCode()); + lqw.eq(StringUtils.isNotBlank(bo.getAcademicYear()), BmzrAssessmentScheme::getAcademicYear, bo.getAcademicYear()); + lqw.eq(StringUtils.isNotBlank(bo.getSemester()), BmzrAssessmentScheme::getSemester, bo.getSemester()); + lqw.eq(StringUtils.isNotBlank(bo.getSelfEvaluationRequired()), BmzrAssessmentScheme::getSelfEvaluationRequired, bo.getSelfEvaluationRequired()); + lqw.eq(StringUtils.isNotBlank(bo.getSuperiorEvaluationRequired()), BmzrAssessmentScheme::getSuperiorEvaluationRequired, bo.getSuperiorEvaluationRequired()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BmzrAssessmentScheme::getStatus, bo.getStatus()); + lqw.orderByDesc(BmzrAssessmentScheme::getCreateTime); + return lqw; + } + + /** + * 新增班主任考核方案 + * + * @param bo 班主任考核方案 + * @return 结果 + */ + @Override + public Boolean insertByBo(BmzrAssessmentSchemeBo bo) { + BmzrAssessmentScheme add = MapstructUtils.convert(bo, BmzrAssessmentScheme.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改班主任考核方案 + * + * @param bo 班主任考核方案 + * @return 结果 + */ + @Override + public Boolean updateByBo(BmzrAssessmentSchemeBo bo) { + BmzrAssessmentScheme update = MapstructUtils.convert(bo, BmzrAssessmentScheme.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + * + * @param entity 实体类数据 + */ + private void validEntityBeforeSave(BmzrAssessmentScheme entity) { + // TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除班主任考核方案 + * + * @param ids 需要删除的班主任考核方案主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return 结果 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + // TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/TeacherAssessmentServiceImpl.java b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/TeacherAssessmentServiceImpl.java new file mode 100644 index 00000000..a88e3d62 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/TeacherAssessmentServiceImpl.java @@ -0,0 +1,99 @@ +package org.dromara.bzrkh.service.impl; + +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 lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.bzrkh.domain.vo.TeacherClassVo; +import org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo; +import org.dromara.bzrkh.domain.bo.TeacherAssessmentQueryBo; +import org.dromara.bzrkh.mapper.TeacherAssessmentMapper; +import org.dromara.bzrkh.service.ITeacherAssessmentService; + +import java.util.List; + +/** + * 班主任考核管理Service业务层处理 + * + * @author ruoyi + * @date 2025-01-27 + */ +@RequiredArgsConstructor +@Service +public class TeacherAssessmentServiceImpl implements ITeacherAssessmentService { + + private final TeacherAssessmentMapper teacherAssessmentMapper; + + /** + * 查询班主任管理的班级列表 + * + * @param teacherId 班主任ID + * @return 班级列表 + */ + @Override + public List queryTeacherClassList(Long teacherId) { + return teacherAssessmentMapper.selectTeacherClassList(teacherId); + } + + /** + * 查询班主任考核计划列表(分页) + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 考核计划列表 + */ + @Override + public TableDataInfo queryTeacherAssessmentPlanPageList(TeacherAssessmentQueryBo bo, PageQuery pageQuery) { + Page page = pageQuery.build(); + List list = teacherAssessmentMapper.selectTeacherAssessmentPlanList(bo); + + // 手动分页处理 + int total = list.size(); + int start = (int) ((page.getCurrent() - 1) * page.getSize()); + int end = Math.min(start + (int) page.getSize(), total); + + List pageList = list.subList(start, end); + + page.setRecords(pageList); + page.setTotal(total); + + return TableDataInfo.build(page); + } + + /** + * 提交考核 + * + * @param planId 计划ID + * @param classId 班级ID + * @param teacherId 班主任ID + * @return 是否成功 + */ + @Override + public boolean submitAssessment(Long planId, Long classId, Long teacherId) { + // TODO: 实现提交考核逻辑 + // 1. 验证班主任是否有权限提交该班级的考核 + // 2. 验证考核计划是否有效 + // 3. 创建或更新考核记录 + // 4. 更新考核状态 + return true; + } + + /** + * 查看考核详情 + * + * @param planId 计划ID + * @param classId 班级ID + * @param teacherId 班主任ID + * @return 考核详情 + */ + @Override + public Object getAssessmentDetail(Long planId, Long classId, Long teacherId) { + // TODO: 实现查看考核详情逻辑 + // 1. 验证班主任是否有权限查看该班级的考核 + // 2. 获取考核计划详情 + // 3. 获取考核指标详情 + // 4. 获取考核记录和评分 + return null; + } +} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentIndicatorMapper.xml b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentIndicatorMapper.xml new file mode 100644 index 00000000..c386c58d --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentIndicatorMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentPlanMapper.xml b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentPlanMapper.xml new file mode 100644 index 00000000..880ac6ca --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentPlanMapper.xml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentSchemeIndicatorMapper.xml b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentSchemeIndicatorMapper.xml new file mode 100644 index 00000000..52cbb2ef --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/BmzrAssessmentSchemeIndicatorMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select + si.id, + si.tenant_id, + si.scheme_id, + si.indicator_id, + ai.indicator_name, + ai.indicator_code, + si.weight_ratio, + si.custom_max_score, + IFNULL(si.custom_max_score, ai.score) as score, + si.sort_order, + si.remark, + si.create_dept, + si.create_by, + si.create_time, + si.update_by, + si.update_time, + si.deleted + from bmzr_assessment_scheme_indicator si + left join bmzr_assessment_indicator ai on si.indicator_id = ai.id + + + + + \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/TeacherAssessmentMapper.xml b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/TeacherAssessmentMapper.xml new file mode 100644 index 00000000..de6046c1 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/TeacherAssessmentMapper.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标体系开发文档.md b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标体系开发文档.md new file mode 100644 index 00000000..bdd64764 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标体系开发文档.md @@ -0,0 +1,226 @@ +# 班主任考核指标体系管理模块开发文档 + +## 📋 模块概述 + +**功能名称**: 班主任考核指标体系管理 +**模块路径**: `/bzrkh/assessmentIndicator` +**开发时间**: 2025-01-08 +**技术架构**: 前后端分离 (Vue 3 + Spring Boot 3.4.6) + +## 🎯 功能说明 + +该模块用于管理班主任考核的指标体系,支持树形结构的指标管理,包括指标类型、权重配置、评价设置等功能。 + +### 主要功能 +- ✅ 指标体系列表查询(支持分页) +- ✅ 指标体系新增/修改/删除 +- ✅ 指标类型关联(下拉选择) +- ✅ 父级指标选择(树形选择器) +- ✅ 权重比例配置(0-1之间) +- ✅ 评价权限设置(自评/上级评) +- ✅ 数据导出功能 +- ✅ 树形结构展示 + +## 📂 文件结构 + +### 前端文件 (web/) +``` +web/src/ +├── api/bzrkh/assessmentIndicator/ +│ ├── index.ts # API接口定义 +│ └── types.ts # TypeScript类型定义 +└── views/bzrkh/assessmentIndicator/ + └── index.vue # 主界面组件 +``` + +### 后端文件 (backend/ruoyi-modules/ruoyi-bzrkh/) +``` +src/main/java/org/dromara/bzrkh/ +├── controller/ +│ └── BmzrAssessmentIndicatorController.java # 控制器 +├── service/ +│ ├── IBmzrAssessmentIndicatorService.java # 服务接口 +│ └── impl/ +│ └── BmzrAssessmentIndicatorServiceImpl.java # 服务实现 +├── mapper/ +│ └── BmzrAssessmentIndicatorMapper.java # 数据访问层 +├── domain/ +│ ├── BmzrAssessmentIndicator.java # 实体类 +│ ├── bo/ +│ │ └── BmzrAssessmentIndicatorBo.java # 业务对象 +│ └── vo/ +│ └── BmzrAssessmentIndicatorVo.java # 视图对象 +└── resources/mapper/bzrkh/ + └── BmzrAssessmentIndicatorMapper.xml # MyBatis映射文件 +``` + +### 配置文件 +``` +backend/ruoyi-modules/ruoyi-bzrkh/ +├── 班主任考核指标体系管理权限配置.sql # 权限配置SQL +└── 班主任考核指标体系开发文档.md # 本文档 +``` + +## 🔐 权限配置 + +### API权限字符 +| 功能 | 权限字符 | 说明 | +|------|----------|------| +| 列表查询 | `bzrkh:assessmentIndicator:list` | 查询指标体系列表权限 | +| 详情查询 | `bzrkh:assessmentIndicator:query` | 查询指标体系详情权限 | +| 新增 | `bzrkh:assessmentIndicator:add` | 新增指标体系权限 | +| 修改 | `bzrkh:assessmentIndicator:edit` | 修改指标体系权限 | +| 删除 | `bzrkh:assessmentIndicator:remove` | 删除指标体系权限 | +| 导出 | `bzrkh:assessmentIndicator:export` | 导出指标体系权限 | + +### 菜单配置 +- **主菜单**: 班主任考核指标体系 +- **路由路径**: `assessmentIndicator` +- **组件路径**: `bzrkh/assessmentIndicator/index` +- **图标**: `tree` + +## 🌐 API接口 + +### 前端API方法 +| 方法名 | 请求方式 | 路径 | 说明 | +|--------|----------|------|------| +| `listAssessmentIndicator` | GET | `/bzrkh/assessmentIndicator/list` | 查询列表 | +| `getAssessmentIndicator` | GET | `/bzrkh/assessmentIndicator/{id}` | 查询详情 | +| `addAssessmentIndicator` | POST | `/bzrkh/assessmentIndicator` | 新增 | +| `updateAssessmentIndicator` | PUT | `/bzrkh/assessmentIndicator` | 修改 | +| `delAssessmentIndicator` | DELETE | `/bzrkh/assessmentIndicator/{id}` | 删除 | +| `getIndicatorTypeOptions` | GET | `/bzrkh/assessmentIndicatorType/listAllIncludeDeleted` | 指标类型选项 | +| `getParentIndicatorOptions` | GET | `/bzrkh/assessmentIndicator/treeselect` | 父级指标选项 | + +### 后端Controller方法 +| 方法名 | 注解 | 说明 | +|--------|------|------| +| `list` | `@GetMapping("/list")` | 分页查询列表 | +| `treeselect` | `@GetMapping("/treeselect")` | 树形结构查询 | +| `getInfo` | `@GetMapping("/{id}")` | 详情查询 | +| `add` | `@PostMapping()` | 新增 | +| `edit` | `@PutMapping()` | 修改 | +| `remove` | `@DeleteMapping("/{ids}")` | 删除 | +| `export` | `@PostMapping("/export")` | 导出 | + +## 📊 数据模型 + +### 核心字段 +| 字段名 | 类型 | 说明 | 验证规则 | +|--------|------|------|----------| +| `indicatorName` | String | 指标名称 | 必填 | +| `indicatorCode` | String | 指标编码 | 必填,唯一 | +| `indicatorType` | String | 指标类型 | 必填,关联指标类型表 | +| `parentId` | Long | 父级指标ID | 可选,支持树形结构 | +| `weightRatio` | BigDecimal | 权重比例 | 必填,0-1之间 | +| `maxScore` | BigDecimal | 最高分值 | 必填,>=0 | +| `score` | BigDecimal | 分值 | 必填,>=0 | +| `allowSelfEvaluation` | String | 允许自评 | 必填,0=否 1=是 | +| `allowSuperiorEvaluation` | String | 允许上级评 | 必填,0=否 1=是 | +| `sortOrder` | Integer | 排序 | 必填,>=1 | +| `status` | String | 状态 | 必填,0=正常 1=停用 | + +## 🎨 界面特性 + +### 查询条件 +- 指标名称(模糊查询) +- 指标编码(精确查询) +- 指标类型(下拉选择) +- 允许自评(是/否) +- 允许上级评(是/否) +- 状态(正常/停用) + +### 表格展示 +- 指标编码 +- 指标名称 +- 指标类型(显示类型名称) +- 权重比例(百分比格式) +- 最高分值 +- 分值 +- 排序 +- 允许自评(字典显示) +- 允许上级评(字典显示) +- 状态(字典显示) +- 备注 + +### 表单字段 +- 基本信息:指标编码、指标名称 +- 分类信息:指标类型、父级指标 +- 分值配置:权重比例、最高分值、分值、排序 +- 权限设置:允许自评、允许上级评、状态 +- 备注信息 + +## 🔧 技术要点 + +### 前端技术 +- **Vue 3 + TypeScript**: 组件开发 +- **Element Plus**: UI组件库 +- **树形选择器**: 父级指标选择 +- **数字输入框**: 精确的数值输入 +- **字典转换**: 状态和评价权限显示 + +### 后端技术 +- **Spring Boot 3.4.6**: 框架 +- **MyBatis-Plus**: ORM框架 +- **Sa-Token**: 权限控制 +- **Bean Validation**: 参数校验 +- **树形结构**: 递归查询和构建 + +### 数据特性 +- **多租户支持**: TenantEntity继承 +- **逻辑删除**: 软删除机制 +- **审计字段**: 创建时间、更新时间等 +- **树形结构**: 支持层级关系 + +## 📋 部署说明 + +### 1. 数据库 +执行以下SQL文件: +- `docs/设计文档/database/班主任考核管理/bmzr_assessment_tables.sql` +- `docs/设计文档/database/班主任考核管理/bmzr_dict_data_mysql.sql` +- `backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标体系管理权限配置.sql` + +### 2. 后端 +- 确保 `ruoyi-bzrkh` 模块已添加到主项目依赖 +- 重启后端服务 + +### 3. 前端 +- 前端文件已放置在正确位置 +- 重新编译前端项目 + +### 4. 权限分配 +- 管理员登录系统 +- 进入权限管理,为相关角色分配权限 +- 菜单路径:系统管理 → 权限管理 → 角色管理 + +## ✅ 测试要点 + +### 功能测试 +- [ ] 指标体系列表查询 +- [ ] 指标体系新增(各种场景) +- [ ] 指标体系修改 +- [ ] 指标体系删除(单个/批量) +- [ ] 指标类型下拉加载 +- [ ] 父级指标树形选择 +- [ ] 数据导出 +- [ ] 权限控制 + +### 数据验证 +- [ ] 权重比例范围验证(0-1) +- [ ] 分值非负验证 +- [ ] 必填字段验证 +- [ ] 唯一性验证(指标编码) + +## 📝 注意事项 + +1. **指标类型依赖**: 需要先配置指标类型数据 +2. **权重配置**: 权重比例为0-1之间的小数 +3. **树形结构**: 支持多级父子关系 +4. **逻辑删除**: 删除操作为逻辑删除,可恢复 +5. **权限控制**: 严格按照权限字符控制功能访问 + +--- + +**开发完成时间**: 2025-01-08 +**版本**: V1.0.0 +**状态**: ✅ 开发完成 \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标体系管理权限配置.sql b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标体系管理权限配置.sql new file mode 100644 index 00000000..c692f1ec --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标体系管理权限配置.sql @@ -0,0 +1,49 @@ +-- ========================================== +-- 班主任考核指标体系管理权限配置 +-- 版本:V1.0.0 +-- 功能:班主任考核指标体系管理相关权限 +-- 作者:系统设计 +-- 时间:2025-01-08 +-- 模块:学工管理-班主任考核指标体系管理权限 +-- ========================================== + +-- 删除已存在的权限数据 +DELETE FROM sys_menu WHERE menu_name = '班主任考核指标体系' OR parent_id IN (SELECT id FROM (SELECT id FROM sys_menu WHERE menu_name = '班主任考核指标体系') temp); + +-- 1. 班主任考核指标体系管理主菜单 +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) +VALUES ('班主任考核指标体系', 2000, 3, 'assessmentIndicator', 'bzrkh/assessmentIndicator/index', '', 1, 0, 'C', '0', '0', 'bzrkh:assessmentIndicator:list', 'tree', 103, 1, NOW(), 1, NOW(), '班主任考核指标体系管理菜单', '000000'); + +-- 获取刚插入的主菜单ID +SET @menu_id = LAST_INSERT_ID(); + +-- 2. 班主任考核指标体系查询按钮 +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) +VALUES ('班主任考核指标体系查询', @menu_id, 1, '#', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentIndicator:query', '#', 103, 1, NOW(), 1, NOW(), '', '000000'); + +-- 3. 班主任考核指标体系新增按钮 +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) +VALUES ('班主任考核指标体系新增', @menu_id, 2, '#', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentIndicator:add', '#', 103, 1, NOW(), 1, NOW(), '', '000000'); + +-- 4. 班主任考核指标体系修改按钮 +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) +VALUES ('班主任考核指标体系修改', @menu_id, 3, '#', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentIndicator:edit', '#', 103, 1, NOW(), 1, NOW(), '', '000000'); + +-- 5. 班主任考核指标体系删除按钮 +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) +VALUES ('班主任考核指标体系删除', @menu_id, 4, '#', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentIndicator:remove', '#', 103, 1, NOW(), 1, NOW(), '', '000000'); + +-- 6. 班主任考核指标体系导出按钮 +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) +VALUES ('班主任考核指标体系导出', @menu_id, 5, '#', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentIndicator:export', '#', 103, 1, NOW(), 1, NOW(), '', '000000'); + +-- ========================================== +-- 权限字符说明 +-- ========================================== +-- bzrkh:assessmentIndicator:list - 班主任考核指标体系查询权限 +-- bzrkh:assessmentIndicator:query - 班主任考核指标体系详情查询权限 +-- bzrkh:assessmentIndicator:add - 班主任考核指标体系新增权限 +-- bzrkh:assessmentIndicator:edit - 班主任考核指标体系修改权限 +-- bzrkh:assessmentIndicator:remove - 班主任考核指标体系删除权限 +-- bzrkh:assessmentIndicator:export - 班主任考核指标体系导出权限 +-- ========================================== \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标类型管理权限配置.md b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标类型管理权限配置.md new file mode 100644 index 00000000..8d9626c1 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核指标类型管理权限配置.md @@ -0,0 +1,62 @@ +# 班主任考核指标类型管理权限配置 + +## API权限字符配置 + +以下是班主任考核指标类型管理模块需要配置的权限字符: + +### 权限字符列表 + +1. **查询权限** + - 权限字符:`bzrkh:assessmentIndicatorType:list` + - 权限说明:查询班主任考核指标类型列表权限 + +2. **详情权限** + - 权限字符:`bzrkh:assessmentIndicatorType:query` + - 权限说明:查询班主任考核指标类型详细信息权限 + +3. **新增权限** + - 权限字符:`bzrkh:assessmentIndicatorType:add` + - 权限说明:新增班主任考核指标类型权限 + +4. **修改权限** + - 权限字符:`bzrkh:assessmentIndicatorType:edit` + - 权限说明:修改班主任考核指标类型权限 + +5. **删除权限** + - 权限字符:`bzrkh:assessmentIndicatorType:remove` + - 权限说明:删除班主任考核指标类型权限 + +6. **导出权限** + - 权限字符:`bzrkh:assessmentIndicatorType:export` + - 权限说明:导出班主任考核指标类型权限 + +## 菜单配置SQL + +```sql +-- 班主任考核指标类型管理菜单 +INSERT INTO sys_menu (tenant_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES +('000000', '指标类型管理', [班主任考核管理父菜单ID], 1, 'assessmentIndicatorType', 'bzrkh/assessmentIndicatorType/index', '', 1, 0, 'C', '0', '0', 'bzrkh:assessmentIndicatorType:list', 'list', 103, 1, NOW(), 1, NOW(), '班主任考核指标类型管理菜单'); + +-- 获取刚插入的菜单ID,用于下面的按钮权限配置 +SET @menu_id = LAST_INSERT_ID(); + +-- 班主任考核指标类型管理按钮权限 +INSERT INTO sys_menu (tenant_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES +('000000', '班主任考核指标类型查询', @menu_id, 1, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentIndicatorType:query', '#', 103, 1, NOW(), 1, NOW(), ''), +('000000', '班主任考核指标类型新增', @menu_id, 2, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentIndicatorType:add', '#', 103, 1, NOW(), 1, NOW(), ''), +('000000', '班主任考核指标类型修改', @menu_id, 3, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentIndicatorType:edit', '#', 103, 1, NOW(), 1, NOW(), ''), +('000000', '班主任考核指标类型删除', @menu_id, 4, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentIndicatorType:remove', '#', 103, 1, NOW(), 1, NOW(), ''), +('000000', '班主任考核指标类型导出', @menu_id, 5, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentIndicatorType:export', '#', 103, 1, NOW(), 1, NOW(), ''); +``` + +## 使用说明 + +1. **权限配置位置**:在若依管理系统的菜单管理中配置上述权限 +2. **角色分配**:将相应权限分配给需要使用该功能的角色 +3. **用户权限**:用户通过角色获得相应的功能权限 + +## 注意事项 + +1. 请根据实际的父菜单ID替换SQL中的`[班主任考核管理父菜单ID]` +2. 权限字符必须与Controller中的`@SaCheckPermission`注解中的值保持一致 +3. 建议按照业务需求控制权限的精细度 \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核方案权限配置.sql b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核方案权限配置.sql new file mode 100644 index 00000000..a390bfe3 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核方案权限配置.sql @@ -0,0 +1,43 @@ +-- ========================================== +-- 班主任考核方案管理权限配置 +-- 版本:V1.0.0 +-- 功能:班主任考核方案管理菜单及权限配置 +-- 作者:系统设计 +-- 时间:2025-01-08 +-- 模块:学工管理-班主任考核方案管理 +-- ========================================== + +-- 父菜单:班主任考核管理(如果不存在则创建) +INSERT INTO sys_menu (tenant_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +SELECT '000000', '班主任考核管理', 0, 4, 'bzrkh', NULL, NULL, 1, 0, 'M', '0', '0', NULL, 'user-tie', 103, 1, NOW(), NULL, NULL, '班主任考核管理目录' +WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE tenant_id = '000000' AND menu_name = '班主任考核管理' AND parent_id = 0); + +-- 获取班主任考核管理菜单ID +SET @parent_menu_id = (SELECT menu_id FROM sys_menu WHERE tenant_id = '000000' AND menu_name = '班主任考核管理' AND parent_id = 0 LIMIT 1); + +-- 班主任考核方案管理菜单 +INSERT INTO sys_menu (tenant_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES +('000000', '考核方案管理', @parent_menu_id, 1, 'assessmentScheme', 'bzrkh/assessmentScheme/index', NULL, 1, 0, 'C', '0', '0', 'bzrkh:assessmentScheme:list', 'clipboard', 103, 1, NOW(), NULL, NULL, '班主任考核方案管理菜单'); + +-- 获取考核方案管理菜单ID +SET @scheme_menu_id = (SELECT menu_id FROM sys_menu WHERE tenant_id = '000000' AND menu_name = '考核方案管理' AND parent_id = @parent_menu_id LIMIT 1); + +-- 班主任考核方案管理按钮权限 +INSERT INTO sys_menu (tenant_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES +('000000', '考核方案查询', @scheme_menu_id, 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'bzrkh:assessmentScheme:query', '#', 103, 1, NOW(), NULL, NULL, ''), +('000000', '考核方案新增', @scheme_menu_id, 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'bzrkh:assessmentScheme:add', '#', 103, 1, NOW(), NULL, NULL, ''), +('000000', '考核方案修改', @scheme_menu_id, 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'bzrkh:assessmentScheme:edit', '#', 103, 1, NOW(), NULL, NULL, ''), +('000000', '考核方案删除', @scheme_menu_id, 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'bzrkh:assessmentScheme:remove', '#', 103, 1, NOW(), NULL, NULL, ''), +('000000', '考核方案导出', @scheme_menu_id, 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'bzrkh:assessmentScheme:export', '#', 103, 1, NOW(), NULL, NULL, ''); + +-- ========================================== +-- 权限字符说明 +-- ========================================== +-- 主要权限字符: +-- 1. bzrkh:assessmentScheme:list - 考核方案列表查询权限 +-- 2. bzrkh:assessmentScheme:query - 考核方案详情查询权限 +-- 3. bzrkh:assessmentScheme:add - 考核方案新增权限 +-- 4. bzrkh:assessmentScheme:edit - 考核方案修改权限 +-- 5. bzrkh:assessmentScheme:remove - 考核方案删除权限 +-- 6. bzrkh:assessmentScheme:export - 考核方案导出权限 +-- ========================================== \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核管理权限配置.sql b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核管理权限配置.sql new file mode 100644 index 00000000..e09dbd44 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核管理权限配置.sql @@ -0,0 +1,45 @@ +-- ========================================== +-- 班主任考核管理权限配置SQL +-- 版本:V1.0.0 +-- 功能:班主任考核管理相关权限配置 +-- 作者:系统设计 +-- 时间:2025-01-27 +-- 模块:学工管理-班主任考核管理权限配置 +-- ========================================== + +-- 1. 菜单配置 +-- 班主任考核管理菜单 +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES +('班主任考核管理', (SELECT menu_id FROM sys_menu WHERE menu_name = '班主任考核系统' LIMIT 1), 5, 'teacherAssessment', 'bzrkh/teacherAssessment/index', '', '', 1, 0, 'C', '0', '0', 'bzrkh:teacherAssessment:list', 'user', 103, 1, now(), 1, now(), '班主任考核管理菜单'); + +-- 2. 按钮权限配置 +-- 获取刚插入的菜单ID +SET @teacher_assessment_menu_id = LAST_INSERT_ID(); + +-- 班主任考核管理按钮权限 +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES +('班主任考核查询', @teacher_assessment_menu_id, 1, '', '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:teacherAssessment:list', '#', 103, 1, now(), 1, now(), ''), +('班主任考核详情', @teacher_assessment_menu_id, 2, '', '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:teacherAssessment:detail', '#', 103, 1, now(), 1, now(), ''), +('班主任考核提交', @teacher_assessment_menu_id, 3, '', '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:teacherAssessment:submit', '#', 103, 1, now(), 1, now(), ''); + +-- ========================================== +-- 权限字符说明 +-- ========================================== +/* +权限字符列表: +1. bzrkh:teacherAssessment:list - 班主任考核查询权限(查看班级列表、考核计划列表) +2. bzrkh:teacherAssessment:detail - 班主任考核详情权限(查看考核详情) +3. bzrkh:teacherAssessment:submit - 班主任考核提交权限(提交考核) + +使用的API接口及对应权限: +- GET /bzrkh/teacherAssessment/classes - bzrkh:teacherAssessment:list +- GET /bzrkh/teacherAssessment/plans - bzrkh:teacherAssessment:list +- GET /bzrkh/teacherAssessment/detail - bzrkh:teacherAssessment:detail +- POST /bzrkh/teacherAssessment/submit - bzrkh:teacherAssessment:submit + +说明: +- 班主任只能查看和管理自己担任班主任的班级的考核计划 +- 系统会自动根据当前登录用户ID获取其担任班主任的班级 +- 只展示计划状态为启用(0)的考核计划 +- 只展示班级状态为正常(1)的班级 +*/ \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核管理部署说明.md b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核管理部署说明.md new file mode 100644 index 00000000..1a2d429e --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核管理部署说明.md @@ -0,0 +1,157 @@ +# 班主任考核管理部署说明 + +## 📋 功能概述 + +班主任考核管理功能允许班主任查看和管理自己担任班主任的班级的考核指标得分。该功能包含以下特性: + +- 根据当前登录班主任自动显示其管理的班级标签页 +- 每个班级标签页独立显示该班级的考核计划列表 +- 只显示计划状态为启用的考核计划 +- 提供考核提交和查看功能(功能框架已实现,业务逻辑待完善) + +## 🚀 部署步骤 + +### 1. 后端部署 + +#### 1.1 新增文件清单 + +**Controller层** +- `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/TeacherAssessmentController.java` + +**Service层** +- `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/ITeacherAssessmentService.java` +- `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/TeacherAssessmentServiceImpl.java` + +**Mapper层** +- `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/TeacherAssessmentMapper.java` +- `backend/ruoyi-modules/ruoyi-bzrkh/src/main/resources/mapper/bzrkh/TeacherAssessmentMapper.xml` + +**Domain层** +- `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/TeacherClassVo.java` +- `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/TeacherAssessmentQueryBo.java` + +#### 1.2 权限配置 + +执行权限配置SQL文件: +```sql +-- 执行以下SQL文件 +backend/ruoyi-modules/ruoyi-bzrkh/班主任考核管理权限配置.sql +``` + +#### 1.3 重新编译启动 + +```bash +# 编译项目(在后端根目录执行) +mvn clean compile + +# 重启应用服务 +# 根据实际部署方式重启 +``` + +### 2. 前端部署 + +#### 2.1 新增文件清单 + +**API层** +- `web/src/api/bzrkh/teacherAssessment/types.ts` +- `web/src/api/bzrkh/teacherAssessment/index.ts` + +**视图层** +- `web/src/views/bzrkh/teacherAssessment/index.vue` + +#### 2.2 重新编译部署 + +```bash +# 安装依赖(如果需要) +npm install + +# 编译前端项目 +npm run build:prod + +# 部署到nginx +# 根据实际部署方式进行部署 +``` + +## 🔐 权限配置 + +### 权限字符列表 + +| 权限字符 | 权限说明 | 对应功能 | +|---------|----------|----------| +| `bzrkh:teacherAssessment:list` | 班主任考核查询权限 | 查看班级列表、考核计划列表 | +| `bzrkh:teacherAssessment:detail` | 班主任考核详情权限 | 查看考核详情 | +| `bzrkh:teacherAssessment:submit` | 班主任考核提交权限 | 提交考核 | + +### API接口权限映射 + +| HTTP方法 | 接口路径 | 权限字符 | 功能说明 | +|---------|----------|----------|----------| +| GET | `/bzrkh/teacherAssessment/classes` | `bzrkh:teacherAssessment:list` | 获取班主任管理的班级列表 | +| GET | `/bzrkh/teacherAssessment/plans` | `bzrkh:teacherAssessment:list` | 获取班主任考核计划列表 | +| GET | `/bzrkh/teacherAssessment/detail` | `bzrkh:teacherAssessment:detail` | 查看考核详情 | +| POST | `/bzrkh/teacherAssessment/submit` | `bzrkh:teacherAssessment:submit` | 提交考核 | + +## 📊 数据依赖 + +### 数据表依赖 + +- **主要数据表**: + - `bmzr_assessment_plan` - 班主任考核计划表 + - `bmzr_assessment_scheme` - 班主任考核方案表 + - `xg_class_msg` - 班级信息表 + +- **查询条件**: + - 班级状态必须为 '1'(正常) + - 考核计划状态必须为 '0'(启用) + - 班主任ID通过当前登录用户自动获取 + +### 业务规则 + +1. **权限控制**:班主任只能查看和管理自己担任班主任的班级 +2. **数据过滤**:只展示状态正常的班级和启用的考核计划 +3. **自动关联**:系统根据登录用户ID自动获取其担任班主任的班级 + +## 🔄 后续开发 + +### 待完善功能 + +1. **提交考核逻辑**(`TeacherAssessmentServiceImpl.submitAssessment`) + - 验证班主任权限 + - 验证考核计划有效性 + - 创建或更新考核记录 + - 更新考核状态 + +2. **查看考核详情**(`TeacherAssessmentServiceImpl.getAssessmentDetail`) + - 获取考核计划详情 + - 获取考核指标详情 + - 获取考核记录和评分 + - 返回完整的考核详情数据 + +### 扩展建议 + +1. **考核评分页面**:为提交考核和查看考核功能创建专门的页面 +2. **考核统计**:添加班级考核统计和对比功能 +3. **考核报告**:生成班级考核报告导出功能 +4. **消息通知**:考核提交后的消息通知机制 + +## ⚠️ 注意事项 + +1. **数据库依赖**:确保 `xg_class_msg` 表存在且包含班主任相关字段 +2. **权限验证**:所有接口都有权限验证,请确保用户具有相应权限 +3. **登录状态**:功能依赖当前登录用户信息,确保用户已正常登录 +4. **前端兼容**:使用了 Element Plus 和 Vue 3 相关特性,确保前端环境兼容 + +## 📞 技术支持 + +如有部署问题,请检查: + +1. **后端日志**:查看应用启动日志和接口调用日志 +2. **数据库连接**:确保数据库连接正常且表结构正确 +3. **权限配置**:确保菜单和按钮权限配置正确 +4. **前端控制台**:查看浏览器控制台错误信息 + +--- + +**文档版本**: V1.0.0 +**创建时间**: 2025-01-27 +**最后更新**: 2025-01-27 \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核计划管理权限配置.sql b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核计划管理权限配置.sql new file mode 100644 index 00000000..7b5779bc --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核计划管理权限配置.sql @@ -0,0 +1,37 @@ +-- ========================================== +-- 班主任考核计划管理权限配置 +-- 创建时间:2025-01-08 +-- 功能描述:为班主任考核计划管理模块配置菜单和权限 +-- ========================================== + +-- 删除已存在的菜单 +DELETE FROM sys_menu WHERE menu_name = '班主任考核计划管理' AND parent_id IN ( + SELECT id FROM (SELECT * FROM sys_menu) t WHERE t.menu_name = '班主任考核管理' +); + +-- 插入班主任考核计划管理菜单 +INSERT INTO sys_menu (tenant_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark) +VALUES ('000000', '班主任考核计划管理', + (SELECT id FROM (SELECT * FROM sys_menu) t WHERE t.menu_name = '班主任考核管理' LIMIT 1), + 3, 'assessmentPlan', 'bzrkh/assessmentPlan/index', '', 1, 0, 'C', '0', '0', 'bzrkh:assessmentPlan:list', 'fa fa-calendar-check-o', 103, 1, NOW(), '班主任考核计划管理菜单'); + +-- 获取刚插入的菜单ID +SET @menu_id = LAST_INSERT_ID(); + +-- 插入按钮权限 +INSERT INTO sys_menu (tenant_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark) VALUES +('000000', '班主任考核计划查询', @menu_id, 1, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentPlan:query', '#', 103, 1, NOW(), ''), +('000000', '班主任考核计划新增', @menu_id, 2, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentPlan:add', '#', 103, 1, NOW(), ''), +('000000', '班主任考核计划修改', @menu_id, 3, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentPlan:edit', '#', 103, 1, NOW(), ''), +('000000', '班主任考核计划删除', @menu_id, 4, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentPlan:remove', '#', 103, 1, NOW(), ''), +('000000', '班主任考核计划导出', @menu_id, 5, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentPlan:export', '#', 103, 1, NOW(), ''); + +-- ========================================== +-- 权限字符说明: +-- bzrkh:assessmentPlan:list - 考核计划列表查询权限 +-- bzrkh:assessmentPlan:query - 考核计划详情查询权限 +-- bzrkh:assessmentPlan:add - 考核计划新增权限 +-- bzrkh:assessmentPlan:edit - 考核计划修改权限 +-- bzrkh:assessmentPlan:remove - 考核计划删除权限 +-- bzrkh:assessmentPlan:export - 考核计划导出权限 +-- ========================================== \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核计划管理部署说明.md b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核计划管理部署说明.md new file mode 100644 index 00000000..50c5f543 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/班主任考核计划管理部署说明.md @@ -0,0 +1,184 @@ +# 班主任考核计划管理模块部署说明 + +## 模块概述 + +班主任考核计划管理模块是班主任考核管理系统的重要组成部分,用于管理考核计划的生命周期,包括计划的创建、修改、删除、查询以及状态管理等功能。 + +## 技术架构 + +### 后端技术栈 +- **框架**: Spring Boot 3.4.6 +- **ORM**: MyBatis-Plus +- **数据库**: MySQL 8.0+ +- **权限管理**: Sa-Token +- **数据验证**: Bean Validation + +### 前端技术栈 +- **框架**: Vue 3.5.13 +- **UI组件**: Element Plus +- **类型检查**: TypeScript 5.8.3 +- **构建工具**: Vite + +## 文件结构 + +### 后端文件 +``` +backend/ruoyi-modules/ruoyi-bzrkh/ +├── src/main/java/org/dromara/bzrkh/ +│ ├── domain/ +│ │ ├── BmzrAssessmentPlan.java # 实体类 +│ │ ├── bo/BmzrAssessmentPlanBo.java # 业务对象 +│ │ └── vo/BmzrAssessmentPlanVo.java # 视图对象 +│ ├── mapper/ +│ │ └── BmzrAssessmentPlanMapper.java # 数据访问层 +│ ├── service/ +│ │ ├── IBmzrAssessmentPlanService.java # 服务接口 +│ │ └── impl/BmzrAssessmentPlanServiceImpl.java # 服务实现 +│ └── controller/ +│ └── BmzrAssessmentPlanController.java # 控制器 +├── 班主任考核计划管理权限配置.sql # 权限配置SQL +└── 班主任考核计划管理部署说明.md # 部署说明 +``` + +### 前端文件 +``` +web/src/ +├── api/bzrkh/assessmentPlan/ +│ ├── types.ts # 类型定义 +│ └── index.ts # API接口 +└── views/bzrkh/assessmentPlan/ + └── index.vue # Vue组件 +``` + +### 文档文件 +``` +docs/开发文档/API/ +└── 班主任考核计划管理API.md # API文档 +``` + +## 部署步骤 + +### 1. 数据库初始化 + +**创建数据表**: +执行 `docs/设计文档/database/班主任考核管理/bmzr_assessment_tables.sql` 中的 `bmzr_assessment_plan` 表创建语句。 + +**配置字典数据**: +执行 `docs/设计文档/database/班主任考核管理/bmzr_dict_data_mysql.sql` 中的相关字典配置。 + +### 2. 权限配置 + +执行 `backend/ruoyi-modules/ruoyi-bzrkh/班主任考核计划管理权限配置.sql` 文件,创建菜单和权限配置。 + +### 3. 后端代码部署 + +1. 确保 `ruoyi-bzrkh` 模块已在主工程的 `pom.xml` 中引入 +2. 确保所有Java文件已正确放置在对应目录 +3. 重启后端服务 + +### 4. 前端代码部署 + +1. 将前端Vue组件文件放置在正确目录 +2. 确保API类型定义和接口文件正确配置 +3. 重新构建前端项目 + +### 5. 功能验证 + +1. 登录系统,验证菜单显示正常 +2. 测试各项功能:新增、修改、删除、查询、导出 +3. 验证权限控制正常工作 + +## 权限配置详情 + +### 菜单权限 +- **主菜单**: 班主任考核计划管理 +- **路径**: `/bzrkh/assessmentPlan` +- **组件**: `bzrkh/assessmentPlan/index` +- **图标**: `fa fa-calendar-check-o` + +### 功能权限 +| 权限字符 | 权限名称 | 说明 | +|---------|---------|------| +| `bzrkh:assessmentPlan:list` | 考核计划列表 | 查询考核计划列表的权限 | +| `bzrkh:assessmentPlan:query` | 考核计划查询 | 查询单个考核计划详情的权限 | +| `bzrkh:assessmentPlan:add` | 考核计划新增 | 新增考核计划的权限 | +| `bzrkh:assessmentPlan:edit` | 考核计划修改 | 修改考核计划信息的权限 | +| `bzrkh:assessmentPlan:remove` | 考核计划删除 | 删除考核计划的权限 | +| `bzrkh:assessmentPlan:export` | 考核计划导出 | 导出考核计划数据的权限 | + +## API接口列表 + +### RESTful接口 +| 方法 | 路径 | 说明 | 权限 | +|------|------|------|------| +| GET | `/bzrkh/assessmentPlan/list` | 查询计划列表 | `bzrkh:assessmentPlan:list` | +| GET | `/bzrkh/assessmentPlan/{id}` | 获取计划详情 | `bzrkh:assessmentPlan:query` | +| POST | `/bzrkh/assessmentPlan` | 新增计划 | `bzrkh:assessmentPlan:add` | +| PUT | `/bzrkh/assessmentPlan` | 修改计划 | `bzrkh:assessmentPlan:edit` | +| DELETE | `/bzrkh/assessmentPlan/{ids}` | 删除计划 | `bzrkh:assessmentPlan:remove` | +| POST | `/bzrkh/assessmentPlan/export` | 导出计划 | `bzrkh:assessmentPlan:export` | +| PUT | `/bzrkh/assessmentPlan/changeStatus` | 修改状态 | `bzrkh:assessmentPlan:edit` | +| GET | `/bzrkh/assessmentPlan/schemes/options` | 获取方案选项 | `bzrkh:assessmentPlan:list` | + +## 核心功能特性 + +### 1. 计划管理 +- 支持考核计划的完整生命周期管理 +- 计划编码唯一性校验 +- 时间范围合理性验证 + +### 2. 状态控制 +- 支持计划启用/禁用状态切换 +- 状态变更权限控制 + +### 3. 数据导出 +- 支持Excel格式数据导出 +- 可根据查询条件导出指定数据 + +### 4. 权限控制 +- 完整的菜单和功能权限控制 +- 基于Sa-Token的细粒度权限管理 + +## 注意事项 + +### 开发要求 +1. 所有API接口必须包含权限注解 +2. 参数验证使用Bean Validation +3. 错误处理要规范统一 +4. 代码注释要完整清晰 + +### 业务规则 +1. 计划编码在租户内必须唯一 +2. 计划的开始时间不能大于结束时间 +3. 数据提取时间不能超出计划时间范围 +4. 删除计划前需要检查关联数据 + +### 性能优化 +1. 查询接口支持分页 +2. 列表查询支持多条件组合查询 +3. 大数据量导出采用流式处理 + +## 故障排查 + +### 常见问题 +1. **权限问题**: 检查菜单权限配置是否正确 +2. **接口404**: 检查后端路由配置 +3. **前端报错**: 检查API接口定义是否匹配 +4. **数据库错误**: 检查表结构和字段是否正确 + +### 日志查看 +- 后端日志位置: `logs/ruoyi-admin.log` +- 前端控制台: 浏览器开发者工具 + +## 联系方式 + +如有问题,请联系开发团队或查看相关文档: +- API文档: `docs/开发文档/API/班主任考核计划管理API.md` +- 数据库文档: `docs/设计文档/database/班主任考核管理/` + +## 版本信息 + +- **版本**: v1.0.0 +- **创建时间**: 2025-01-08 +- **最后更新**: 2025-01-08 +- **开发者**: 系统开发团队 \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-bzrkh/部署说明.md b/backend/ruoyi-modules/ruoyi-bzrkh/部署说明.md new file mode 100644 index 00000000..cd75dc64 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-bzrkh/部署说明.md @@ -0,0 +1,141 @@ +# 班主任考核指标类型管理模块部署说明 + +## 1. 数据库准备 + +### 1.1 执行表结构创建脚本 +```sql +-- 执行表结构创建脚本 +source docs/设计文档/database/班主任考核管理/bmzr_assessment_tables.sql +``` + +### 1.2 执行字典数据脚本 +```sql +-- 执行字典数据脚本 +source docs/设计文档/database/班主任考核管理/bmzr_dict_data_mysql.sql +``` + +## 2. 后端代码部署 + +### 2.1 已创建的后端文件列表 + +1. **Domain实体类** + - `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/BmzrAssessmentIndicatorType.java` + +2. **VO类** + - `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/BmzrAssessmentIndicatorTypeVo.java` + +3. **BO类** + - `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/BmzrAssessmentIndicatorTypeBo.java` + +4. **Mapper接口** + - `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/mapper/BmzrAssessmentIndicatorTypeMapper.java` + +5. **Service接口** + - `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/IBmzrAssessmentIndicatorTypeService.java` + +6. **Service实现类** + - `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/service/impl/BmzrAssessmentIndicatorTypeServiceImpl.java` + +7. **Controller** + - `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/BmzrAssessmentIndicatorTypeController.java` + +### 2.2 后端配置说明 + +确保 `ruoyi-bzrkh` 模块已正确配置并加载: + +1. 检查 `backend/ruoyi-modules/pom.xml` 中是否包含 `ruoyi-bzrkh` 模块 +2. 确保 Spring Boot 能够扫描到 `org.dromara.bzrkh` 包下的组件 + +## 3. 前端代码部署 + +### 3.1 已创建的前端文件列表 + +1. **API类型定义** + - `web/src/api/bzrkh/assessmentIndicatorType/types.ts` + +2. **API调用文件** + - `web/src/api/bzrkh/assessmentIndicatorType/index.ts` + +3. **Vue页面** + - `web/src/views/bzrkh/assessmentIndicatorType/index.vue` + +### 3.2 前端配置说明 + +1. 确保路由配置正确,能够访问到创建的Vue页面 +2. 检查API请求路径是否正确配置 + +## 4. 权限配置 + +### 4.1 权限字符列表 + +- `bzrkh:assessmentIndicatorType:list` - 查询权限 +- `bzrkh:assessmentIndicatorType:query` - 详情权限 +- `bzrkh:assessmentIndicatorType:add` - 新增权限 +- `bzrkh:assessmentIndicatorType:edit` - 修改权限 +- `bzrkh:assessmentIndicatorType:remove` - 删除权限 +- `bzrkh:assessmentIndicatorType:export` - 导出权限 + +### 4.2 菜单配置 + +请参考 `班主任考核指标类型管理权限配置.md` 文件中的SQL脚本进行菜单和权限配置。 + +## 5. 字典配置说明 + +该模块使用以下字典: + +1. **sys_item_enable** - 状态字典(启用/停用) +2. **bmzr_indicator_type** - 指标类型字典(已通过脚本创建) + +## 6. 功能特性 + +### 6.1 实现的功能 + +- ✅ 指标类型列表查询(支持分页、条件筛选) +- ✅ 指标类型详情查看 +- ✅ 新增指标类型 +- ✅ 修改指标类型 +- ✅ 删除指标类型(逻辑删除) +- ✅ 批量删除 +- ✅ 数据导出 +- ✅ 权限控制 + +### 6.2 数据校验 + +- 指标类型编码唯一性校验 +- 必填字段验证 +- 字段长度限制 + +### 6.3 界面特性 + +- 响应式设计 +- 搜索条件折叠/展开 +- 友好的删除确认提示 +- 完整的CRUD操作界面 + +## 7. 注意事项 + +1. **权限配置**:请确保在系统菜单管理中正确配置权限 +2. **字典数据**:确保相关字典数据已正确导入 +3. **表结构**:确保数据库表结构与代码实体类保持一致 +4. **多租户**:该模块支持多租户,请注意租户隔离 +5. **逻辑删除**:删除操作为逻辑删除,数据不会物理删除 + +## 8. 测试建议 + +1. 测试CRUD基本功能 +2. 测试权限控制是否生效 +3. 测试数据校验规则 +4. 测试批量操作 +5. 测试搜索和分页功能 +6. 测试导出功能 + +## 9. 扩展说明 + +该模块为班主任考核管理系统的基础模块,后续可基于此模块扩展: + +- 考核指标管理 +- 考核方案管理 +- 考核计划管理 +- 考核评分管理 + +所有扩展模块都可以引用指标类型进行关联设计。 \ No newline at end of file diff --git a/docs/开发文档/API/班主任考核方案管理API.md b/docs/开发文档/API/班主任考核方案管理API.md new file mode 100644 index 00000000..fa9efb87 --- /dev/null +++ b/docs/开发文档/API/班主任考核方案管理API.md @@ -0,0 +1,312 @@ +# 班主任考核方案管理API文档 + +## 📋 基本信息 + +- **模块名称**: 班主任考核方案管理 +- **模块编码**: bzrkh-assessment-scheme +- **API前缀**: `/bzrkh/assessmentScheme` +- **创建时间**: 2025-01-08 +- **文档版本**: V1.0.0 + +## 🔐 权限配置 + +### 权限字符列表 +| 权限字符 | 权限名称 | 说明 | +|---------|---------|------| +| `bzrkh:assessmentScheme:list` | 考核方案列表查询权限 | 查看考核方案列表 | +| `bzrkh:assessmentScheme:query` | 考核方案详情查询权限 | 查看考核方案详情 | +| `bzrkh:assessmentScheme:add` | 考核方案新增权限 | 创建新的考核方案 | +| `bzrkh:assessmentScheme:edit` | 考核方案修改权限 | 编辑考核方案信息 | +| `bzrkh:assessmentScheme:remove` | 考核方案删除权限 | 删除考核方案 | +| `bzrkh:assessmentScheme:export` | 考核方案导出权限 | 导出考核方案数据 | + +### 菜单配置 +- **父级菜单**: 班主任考核管理 +- **菜单路径**: `/bzrkh/assessmentScheme` +- **组件路径**: `bzrkh/assessmentScheme/index` +- **菜单图标**: `clipboard` + +## 📊 数据字典 + +### 学期字典 +| 字典值 | 字典标签 | 说明 | +|-------|---------|------| +| `1` | 上学期 | 学年上学期 | +| `2` | 下学期 | 学年下学期 | + +### 是否字典 (sys_yes_no) +| 字典值 | 字典标签 | 说明 | +|-------|---------|------| +| `0` | 否 | 不需要 | +| `1` | 是 | 需要 | + +### 状态字典 (sys_normal_disable) +| 字典值 | 字典标签 | 说明 | +|-------|---------|------| +| `0` | 正常 | 启用状态 | +| `1` | 停用 | 禁用状态 | + +## 🗄️ 数据模型 + +### 考核方案实体 (BmzrAssessmentScheme) + +| 字段名 | 类型 | 长度 | 必填 | 说明 | +|-------|------|------|------|------| +| id | bigint | 20 | ✅ | 主键ID | +| tenant_id | varchar | 20 | ✅ | 租户编号 | +| scheme_name | varchar | 100 | ✅ | 方案名称 | +| scheme_code | varchar | 50 | ✅ | 方案编码 | +| academic_year | varchar | 10 | ✅ | 学年 | +| semester | char | 1 | ✅ | 学期(1=上学期 2=下学期) | +| scheme_description | text | - | ❌ | 方案描述 | +| self_evaluation_required | char | 1 | ✅ | 是否需要自评(0=否 1=是) | +| superior_evaluation_required | char | 1 | ✅ | 是否需要上级评(0=否 1=是) | +| status | char | 1 | ✅ | 状态(0正常 1停用) | +| remark | varchar | 500 | ❌ | 备注 | +| create_dept | bigint | 20 | ❌ | 创建部门 | +| create_by | bigint | 20 | ❌ | 创建者 | +| create_time | datetime | - | ❌ | 创建时间 | +| update_by | bigint | 20 | ❌ | 更新者 | +| update_time | datetime | - | ❌ | 更新时间 | +| deleted | int | 1 | ✅ | 删除标志(0代表存在 1代表删除) | + +## 🔌 API接口列表 + +### 1. 查询考核方案列表 + +**接口地址**: `GET /bzrkh/assessmentScheme/list` + +**权限要求**: `bzrkh:assessmentScheme:list` + +**请求参数**: +```typescript +interface BmzrAssessmentSchemeQuery extends PageQuery { + schemeName?: string; // 方案名称(模糊查询) + schemeCode?: string; // 方案编码(精确查询) + academicYear?: string; // 学年(精确查询) + semester?: string; // 学期(精确查询) + status?: string; // 状态(精确查询) + selfEvaluationRequired?: string; // 是否需要自评 + superiorEvaluationRequired?: string; // 是否需要上级评 +} +``` + +**响应数据**: +```json +{ + "code": 200, + "msg": "查询成功", + "rows": [ + { + "id": 1744234567890123456, + "tenantId": "000000", + "schemeName": "2024-2025学年上学期班主任考核方案", + "schemeCode": "BMZR_2024_1", + "academicYear": "2024-2025", + "semester": "1", + "schemeDescription": "2024-2025学年上学期班主任考核方案", + "selfEvaluationRequired": "1", + "superiorEvaluationRequired": "1", + "status": "0", + "remark": "", + "createTime": "2025-01-08 10:00:00", + "updateTime": "2025-01-08 10:00:00" + } + ], + "total": 1 +} +``` + +### 2. 查询考核方案详情 + +**接口地址**: `GET /bzrkh/assessmentScheme/{id}` + +**权限要求**: `bzrkh:assessmentScheme:query` + +**路径参数**: +- `id`: 考核方案ID (必填) + +**响应数据**: +```json +{ + "code": 200, + "msg": "查询成功", + "data": { + "id": 1744234567890123456, + "tenantId": "000000", + "schemeName": "2024-2025学年上学期班主任考核方案", + "schemeCode": "BMZR_2024_1", + "academicYear": "2024-2025", + "semester": "1", + "schemeDescription": "2024-2025学年上学期班主任考核方案", + "selfEvaluationRequired": "1", + "superiorEvaluationRequired": "1", + "status": "0", + "remark": "", + "createTime": "2025-01-08 10:00:00", + "updateTime": "2025-01-08 10:00:00" + } +} +``` + +### 3. 新增考核方案 + +**接口地址**: `POST /bzrkh/assessmentScheme` + +**权限要求**: `bzrkh:assessmentScheme:add` + +**请求体**: +```json +{ + "schemeName": "2024-2025学年上学期班主任考核方案", + "schemeCode": "BMZR_2024_1", + "academicYear": "2024-2025", + "semester": "1", + "schemeDescription": "2024-2025学年上学期班主任考核方案详细描述", + "selfEvaluationRequired": "1", + "superiorEvaluationRequired": "1", + "status": "0", + "remark": "备注信息" +} +``` + +**校验规则**: +- `schemeName`: 必填,方案名称不能为空 +- `schemeCode`: 必填,方案编码不能为空,且在同租户下唯一 +- `academicYear`: 必填,学年不能为空 +- `semester`: 必填,学期不能为空,值为 1 或 2 +- `selfEvaluationRequired`: 必填,是否需要自评,值为 0 或 1 +- `superiorEvaluationRequired`: 必填,是否需要上级评,值为 0 或 1 +- `status`: 必填,状态不能为空,值为 0 或 1 + +**响应数据**: +```json +{ + "code": 200, + "msg": "操作成功" +} +``` + +### 4. 修改考核方案 + +**接口地址**: `PUT /bzrkh/assessmentScheme` + +**权限要求**: `bzrkh:assessmentScheme:edit` + +**请求体**: +```json +{ + "id": 1744234567890123456, + "schemeName": "2024-2025学年上学期班主任考核方案(修改)", + "schemeCode": "BMZR_2024_1", + "academicYear": "2024-2025", + "semester": "1", + "schemeDescription": "修改后的方案描述", + "selfEvaluationRequired": "1", + "superiorEvaluationRequired": "1", + "status": "0", + "remark": "修改备注" +} +``` + +**校验规则**: 与新增接口相同,额外需要 `id` 字段 + +**响应数据**: +```json +{ + "code": 200, + "msg": "操作成功" +} +``` + +### 5. 删除考核方案 + +**接口地址**: `DELETE /bzrkh/assessmentScheme/{ids}` + +**权限要求**: `bzrkh:assessmentScheme:remove` + +**路径参数**: +- `ids`: 考核方案ID数组,多个ID用逗号分隔 + +**响应数据**: +```json +{ + "code": 200, + "msg": "操作成功" +} +``` + +### 6. 导出考核方案 + +**接口地址**: `POST /bzrkh/assessmentScheme/export` + +**权限要求**: `bzrkh:assessmentScheme:export` + +**请求体**: 与查询列表接口参数相同 + +**响应**: Excel文件下载 + +## 🎯 业务规则 + +### 数据唯一性约束 +1. 同一租户下,`schemeCode`(方案编码)必须唯一 +2. 建议同一租户、学年、学期下只有一个启用的考核方案 + +### 状态管理 +1. 新建方案默认状态为"正常"(0) +2. 停用的方案不影响已关联的考核计划 +3. 删除方案时需要检查是否被考核计划引用 + +### 权限控制 +1. 普通用户只能查看考核方案 +2. 管理员可以进行增删改操作 +3. 超级管理员拥有所有权限 + +## 🔧 技术实现 + +### 后端技术栈 +- **框架**: Spring Boot 3.4.6 +- **数据库**: MySQL 8.0+ +- **ORM**: MyBatis-Plus +- **权限**: Sa-Token + +### 前端技术栈 +- **框架**: Vue 3.5.13 + TypeScript 5.8.3 +- **UI组件**: Element Plus +- **HTTP客户端**: Axios + +### 数据库表 +- **主表**: `bmzr_assessment_scheme` (班主任考核方案表) + +## 🧪 测试用例 + +### 功能测试 +1. ✅ 考核方案列表查询(支持分页、筛选) +2. ✅ 考核方案详情查询 +3. ✅ 考核方案新增(包含表单验证) +4. ✅ 考核方案修改(包含表单验证) +5. ✅ 考核方案删除(支持批量删除) +6. ✅ 考核方案导出(Excel格式) + +### 权限测试 +1. ✅ 无权限用户访问受限 +2. ✅ 不同角色权限差异化控制 + +### 数据验证测试 +1. ✅ 必填字段验证 +2. ✅ 数据格式验证 +3. ✅ 唯一性约束验证 + +## 📝 更新日志 + +### V1.0.0 (2025-01-08) +- ✅ 基础CRUD功能实现 +- ✅ 权限配置完成 +- ✅ 前后端代码生成 +- ✅ API文档编写 + +## 🔗 相关文档 + +- **数据库设计**: `docs/设计文档/database/班主任考核管理/bmzr_assessment_tables.sql` +- **字典配置**: `docs/设计文档/database/班主任考核管理/bmzr_dict_data_mysql.sql` +- **权限配置**: `backend/ruoyi-modules/ruoyi-bzrkh/班主任考核方案权限配置.sql` \ No newline at end of file diff --git a/docs/开发文档/API/班主任考核计划管理API.md b/docs/开发文档/API/班主任考核计划管理API.md new file mode 100644 index 00000000..8f9d08da --- /dev/null +++ b/docs/开发文档/API/班主任考核计划管理API.md @@ -0,0 +1,380 @@ +# 班主任考核计划管理API文档 + +## 概述 + +班主任考核计划管理模块用于管理班主任考核的各类计划,包括计划的创建、修改、删除、查询以及状态管理等功能。 + +## 基本信息 + +- **模块名称**: 班主任考核计划管理 +- **模块编码**: bzrkh +- **API前缀**: `/bzrkh/assessmentPlan` +- **创建时间**: 2025-01-08 +- **版本**: v1.0.0 + +## 权限配置 + +### 菜单权限配置 + +以下是班主任考核计划管理模块所需的权限配置SQL: + +```sql +-- ========================================== +-- 班主任考核计划管理权限配置 +-- ========================================== + +-- 删除已存在的菜单 +DELETE FROM sys_menu WHERE menu_name = '班主任考核计划管理' AND parent_id IN ( + SELECT id FROM (SELECT * FROM sys_menu) t WHERE t.menu_name = '班主任考核管理' +); + +-- 插入班主任考核计划管理菜单 +INSERT INTO sys_menu (tenant_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark) +VALUES ('000000', '班主任考核计划管理', + (SELECT id FROM (SELECT * FROM sys_menu) t WHERE t.menu_name = '班主任考核管理' LIMIT 1), + 3, 'assessmentPlan', 'bzrkh/assessmentPlan/index', '', 1, 0, 'C', '0', '0', 'bzrkh:assessmentPlan:list', 'fa fa-calendar-check-o', 103, 1, NOW(), '班主任考核计划管理菜单'); + +-- 获取刚插入的菜单ID +SET @menu_id = LAST_INSERT_ID(); + +-- 插入按钮权限 +INSERT INTO sys_menu (tenant_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, remark) VALUES +('000000', '班主任考核计划查询', @menu_id, 1, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentPlan:query', '#', 103, 1, NOW(), ''), +('000000', '班主任考核计划新增', @menu_id, 2, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentPlan:add', '#', 103, 1, NOW(), ''), +('000000', '班主任考核计划修改', @menu_id, 3, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentPlan:edit', '#', 103, 1, NOW(), ''), +('000000', '班主任考核计划删除', @menu_id, 4, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentPlan:remove', '#', 103, 1, NOW(), ''), +('000000', '班主任考核计划导出', @menu_id, 5, '', '', '', 1, 0, 'F', '0', '0', 'bzrkh:assessmentPlan:export', '#', 103, 1, NOW(), ''); +``` + +### 权限字符说明 + +| 权限字符 | 权限名称 | 说明 | +|---------|---------|------| +| `bzrkh:assessmentPlan:list` | 考核计划列表 | 查询考核计划列表的权限 | +| `bzrkh:assessmentPlan:query` | 考核计划查询 | 查询单个考核计划详情的权限 | +| `bzrkh:assessmentPlan:add` | 考核计划新增 | 新增考核计划的权限 | +| `bzrkh:assessmentPlan:edit` | 考核计划修改 | 修改考核计划信息的权限 | +| `bzrkh:assessmentPlan:remove` | 考核计划删除 | 删除考核计划的权限 | +| `bzrkh:assessmentPlan:export` | 考核计划导出 | 导出考核计划数据的权限 | + +## API接口列表 + +### 1. 查询考核计划列表 + +**接口地址**: `GET /bzrkh/assessmentPlan/list` + +**接口描述**: 分页查询班主任考核计划列表 + +**权限要求**: `bzrkh:assessmentPlan:list` + +**请求参数**: + +| 参数名 | 类型 | 必填 | 说明 | +|--------|------|------|------| +| pageNum | integer | 否 | 页码,默认1 | +| pageSize | integer | 否 | 每页数量,默认10 | +| planName | string | 否 | 计划名称(模糊查询) | +| planCode | string | 否 | 计划编码(精确查询) | +| schemeId | integer | 否 | 考核方案ID | +| academicYear | string | 否 | 学年(模糊查询) | +| semester | string | 否 | 学期(1=上学期 2=下学期) | +| planStatus | string | 否 | 计划状态(0=禁用 1=启用) | +| beginCreateTime | string | 否 | 创建开始时间 | +| endCreateTime | string | 否 | 创建结束时间 | + +**响应示例**: +```json +{ + "code": 200, + "msg": "操作成功", + "rows": [ + { + "id": 1, + "tenantId": "000000", + "planName": "2024年上学期班主任考核计划", + "planCode": "PLAN202401", + "schemeId": 1, + "schemeName": "标准考核方案", + "academicYear": "2023-2024", + "semester": "1", + "planStartTime": "2024-01-01 00:00:00", + "planEndTime": "2024-06-30 23:59:59", + "dataExtractStartTime": "2024-01-01 00:00:00", + "dataExtractEndTime": "2024-06-30 23:59:59", + "planStatus": "1", + "description": "2024年上学期班主任考核计划", + "remark": "测试计划", + "createTime": "2025-01-08 10:00:00" + } + ], + "total": 1 +} +``` + +### 2. 获取考核计划详情 + +**接口地址**: `GET /bzrkh/assessmentPlan/{id}` + +**接口描述**: 根据ID获取班主任考核计划详细信息 + +**权限要求**: `bzrkh:assessmentPlan:query` + +**路径参数**: + +| 参数名 | 类型 | 必填 | 说明 | +|--------|------|------|------| +| id | integer | 是 | 考核计划ID | + +**响应示例**: +```json +{ + "code": 200, + "msg": "操作成功", + "data": { + "id": 1, + "tenantId": "000000", + "planName": "2024年上学期班主任考核计划", + "planCode": "PLAN202401", + "schemeId": 1, + "academicYear": "2023-2024", + "semester": "1", + "planStartTime": "2024-01-01 00:00:00", + "planEndTime": "2024-06-30 23:59:59", + "dataExtractStartTime": "2024-01-01 00:00:00", + "dataExtractEndTime": "2024-06-30 23:59:59", + "planStatus": "1", + "description": "2024年上学期班主任考核计划", + "remark": "测试计划", + "createTime": "2025-01-08 10:00:00" + } +} +``` + +### 3. 新增考核计划 + +**接口地址**: `POST /bzrkh/assessmentPlan` + +**接口描述**: 新增班主任考核计划 + +**权限要求**: `bzrkh:assessmentPlan:add` + +**请求体**: +```json +{ + "planName": "2024年下学期班主任考核计划", + "planCode": "PLAN202402", + "schemeId": 1, + "academicYear": "2023-2024", + "semester": "2", + "planStartTime": "2024-07-01 00:00:00", + "planEndTime": "2024-12-31 23:59:59", + "dataExtractStartTime": "2024-07-01 00:00:00", + "dataExtractEndTime": "2024-12-31 23:59:59", + "planStatus": "1", + "description": "2024年下学期班主任考核计划", + "remark": "新学期计划" +} +``` + +**字段验证规则**: + +| 字段名 | 验证规则 | 说明 | +|--------|----------|------| +| planName | 必填,长度不超过100 | 计划名称 | +| planCode | 必填,长度不超过50 | 计划编码,系统内唯一 | +| schemeId | 必填 | 考核方案ID | +| academicYear | 必填,长度不超过10 | 学年 | +| semester | 必填,只能是1或2 | 学期 | +| planStartTime | 必填 | 计划开始时间 | +| planEndTime | 必填 | 计划结束时间 | +| planStatus | 只能是0或1 | 计划状态 | +| description | 长度不超过500 | 计划描述 | +| remark | 长度不超过500 | 备注 | + +**响应示例**: +```json +{ + "code": 200, + "msg": "操作成功" +} +``` + +### 4. 修改考核计划 + +**接口地址**: `PUT /bzrkh/assessmentPlan` + +**接口描述**: 修改班主任考核计划 + +**权限要求**: `bzrkh:assessmentPlan:edit` + +**请求体**: +```json +{ + "id": 1, + "planName": "2024年上学期班主任考核计划(修改)", + "planCode": "PLAN202401", + "schemeId": 1, + "academicYear": "2023-2024", + "semester": "1", + "planStartTime": "2024-01-01 00:00:00", + "planEndTime": "2024-06-30 23:59:59", + "dataExtractStartTime": "2024-01-01 00:00:00", + "dataExtractEndTime": "2024-06-30 23:59:59", + "planStatus": "1", + "description": "修改后的计划描述", + "remark": "修改后的备注" +} +``` + +**响应示例**: +```json +{ + "code": 200, + "msg": "操作成功" +} +``` + +### 5. 删除考核计划 + +**接口地址**: `DELETE /bzrkh/assessmentPlan/{ids}` + +**接口描述**: 批量删除班主任考核计划 + +**权限要求**: `bzrkh:assessmentPlan:remove` + +**路径参数**: + +| 参数名 | 类型 | 必填 | 说明 | +|--------|------|------|------| +| ids | string | 是 | 考核计划ID数组,多个用逗号分隔 | + +**响应示例**: +```json +{ + "code": 200, + "msg": "操作成功" +} +``` + +### 6. 修改考核计划状态 + +**接口地址**: `PUT /bzrkh/assessmentPlan/changeStatus` + +**接口描述**: 修改班主任考核计划的启用/禁用状态 + +**权限要求**: `bzrkh:assessmentPlan:edit` + +**请求体**: +```json +{ + "id": 1, + "planStatus": "0" +} +``` + +**响应示例**: +```json +{ + "code": 200, + "msg": "操作成功" +} +``` + +### 7. 导出考核计划 + +**接口地址**: `POST /bzrkh/assessmentPlan/export` + +**接口描述**: 导出班主任考核计划数据 + +**权限要求**: `bzrkh:assessmentPlan:export` + +**请求体**: 与查询列表接口相同的查询条件 + +**响应**: Excel文件下载 + +### 8. 获取可用考核方案选项 + +**接口地址**: `GET /bzrkh/assessmentPlan/schemes/options` + +**接口描述**: 获取可用的考核方案选项列表 + +**权限要求**: `bzrkh:assessmentPlan:list` + +**响应示例**: +```json +{ + "code": 200, + "msg": "操作成功", + "data": [ + { + "id": 1, + "schemeName": "标准考核方案", + "schemeCode": "SCHEME001", + "academicYear": "2023-2024", + "semester": "1", + "status": "0" + } + ] +} +``` + +## 错误码说明 + +| 错误码 | 错误信息 | 说明 | +|--------|----------|------| +| 400 | 计划编码已存在 | 计划编码在系统中已存在 | +| 400 | 计划名称不能为空 | 必填字段校验失败 | +| 400 | 学期只能是1或2 | 学期字段值不合法 | +| 403 | 无访问权限 | 用户没有对应的操作权限 | +| 404 | 数据不存在 | 指定的考核计划不存在 | + +## 数据字典 + +### 学期字典 (sys_semester) + +| 字典值 | 字典标签 | 说明 | +|--------|----------|------| +| 1 | 上学期 | 第一学期 | +| 2 | 下学期 | 第二学期 | + +### 计划状态字典 (plan_status) + +| 字典值 | 字典标签 | 说明 | +|--------|----------|------| +| 0 | 禁用 | 禁用状态 | +| 1 | 启用 | 启用状态 | + +**注意**: 此模块使用自定义状态字典,与系统默认的 `sys_normal_disable` 字典定义相反,严格按照数据库字段设计:`plan_status` char(1) NOT NULL DEFAULT '1' COMMENT '计划状态(0=禁用 1=启用 )' + +## 测试用例 + +### 1. 正常流程测试 + +1. 新增考核计划 +2. 查询考核计划列表 +3. 查看考核计划详情 +4. 修改考核计划信息 +5. 修改考核计划状态 +6. 导出考核计划数据 +7. 删除考核计划 + +### 2. 异常场景测试 + +1. 使用重复的计划编码新增计划 +2. 使用无效的学期值 +3. 删除不存在的计划 +4. 无权限用户访问接口 + +## 注意事项 + +1. 计划编码在租户内必须唯一 +2. 计划的开始时间不能大于结束时间 +3. 数据提取时间不能超出计划时间范围 +4. 删除计划前需要检查是否有关联的考核数据 +5. 状态为禁用的计划不能执行考核操作 + +## 版本更新记录 + +| 版本 | 更新时间 | 更新内容 | +|------|----------|----------| +| v1.0.0 | 2025-01-08 | 初始版本,实现基本的CRUD功能 | \ No newline at end of file diff --git a/docs/设计文档/database/班主任考核管理/README.md b/docs/设计文档/database/班主任考核管理/README.md new file mode 100644 index 00000000..2af9661e --- /dev/null +++ b/docs/设计文档/database/班主任考核管理/README.md @@ -0,0 +1,288 @@ +# 班主任考核管理数据库设计说明 + +## 📋 文档说明 + +**版本**: v1.0.0 +**制定时间**: 2025-01-08 +**模块**: 学工管理-班主任考核管理 (bmzr_) +**数据库**: MySQL 5.7.36+ + +--- + +## 🎯 设计概述 + +班主任考核管理系统支持多维度、多层级的班主任工作考核评价,实现了考核方案管理、指标体系设计、多角色评价、问卷调查、审批流程等完整功能,为学校班主任管理提供数据化支撑。 + +### 核心功能 +- **考核方案管理**: 支持多类型考核方案设计和版本管理 +- **指标体系管理**: 多级指标体系构建,支持权重配置和授权评价 +- **多角色评价**: 自评、同行评、学生评、上级评四个维度 +- **问卷调查**: 学生对班主任工作满意度调查 +- **自动计算**: 系统根据权重自动计算综合得分 +- **审批流程**: 支持自评提交和最终结果的审批管理 +- **统计分析**: 多维度数据统计和图表展示 +- **移动端支持**: 全面支持移动端评价和查询 + +--- + +## 📊 表结构设计 + +### 1. 核心配置模块 (3张表) + +#### 1.1 bmzr_assessment_scheme - 班主任考核方案表 +**功能**: 管理考核方案的基本信息和配置规则 +**关键字段**: +- `scheme_type`: 方案类型(annual=年度 semester=学期 monthly=月度 special=专项) +- `*_evaluation_required`: 各类评价是否必需(自评、同行评、学生评、上级评) +- `auto_calculation`: 是否自动计算得分 +- `publish_results`: 是否公布考核结果 + +#### 1.2 bmzr_assessment_indicator - 班主任考核指标体系表 +**功能**: 定义多级指标体系和评价标准 +**关键字段**: +- `indicator_type`: 指标类型(班级管理、学生教育、学业指导等) +- `parent_id`: 父级指标ID,支持多级树形结构 +- `weight_ratio`: 权重比例配置 +- `authorized_evaluators`: 授权评价人群(JSON格式) +- `allow_*_evaluation`: 各类评价权限控制 +- `evaluation_criteria`: 评价标准和方法 + +#### 1.3 bmzr_assessment_scheme_indicator - 班主任考核方案指标关联表 +**功能**: 关联考核方案和指标体系,支持个性化权重 +**关键字段**: +- `scheme_id`: 考核方案ID +- `indicator_id`: 考核指标ID +- `weight_ratio`: 在方案中的权重比例 +- `custom_max_score`/`custom_min_score`: 自定义分值范围 + +### 2. 执行管理模块 (1张表) + +#### 2.1 bmzr_assessment_plan - 班主任考核计划表 +**功能**: 管理具体的考核计划执行和时间安排 +**关键字段**: +- `target_scope`: 考核范围(JSON格式存储年级、学院、班级等) +- `participants`: 参与人员信息(JSON格式) +- `*_assess_*_time`: 各阶段评价时间窗口(自评、同行评、学生评、上级评) +- `completion_rate`: 完成率统计 +- `plan_status`: 计划状态(1=待开始 2=进行中 3=已结束 4=已暂停) +- `auto_start`/`auto_end`: 自动开始/结束控制 + +### 3. 评价数据模块 (4张表) + +#### 3.1 bmzr_assessment_score - 班主任考核得分表 +**功能**: 存储各维度评分数据和最终得分计算 +**关键字段**: +- `evaluated_user_id`: 被评价班主任ID +- `self_*`: 自评数据(分数、意见、附件、提交时间) +- `peer_*`: 同行评数据(分数、意见、评价人数、提交时间) +- `student_*`: 学生评数据(分数、意见、评价人数、提交时间) +- `superior_*`: 上级评数据(分数、意见、评价人ID、提交时间) +- `final_score`/`weight_score`: 最终得分和加权得分 +- `score_calculation`: 得分计算过程(JSON格式) +- `score_status`: 评分状态流转 + +#### 3.2 bmzr_assessment_survey - 班主任考核问卷调查表 +**功能**: 管理学生对班主任的问卷调查数据 +**关键字段**: +- `evaluated_user_id`: 被评价班主任ID +- `evaluator_user_id`: 评价学生ID +- `evaluator_class_*`: 评价学生班级信息 +- `survey_data`: 问卷数据(JSON格式存储完整答案) +- `satisfaction_level`: 满意度等级 +- `suggestions`: 意见建议 +- `anonymous`: 是否匿名评价 + +#### 3.3 bmzr_assessment_evaluation - 班主任考核评价记录表 +**功能**: 记录每一次具体的评价操作和数据 +**关键字段**: +- `evaluator_type`: 评价人类型(self/peer/student/superior) +- `evaluation_score`: 评价分数 +- `evaluation_comment`: 评价意见 +- `evaluation_level`: 评价等级 +- `weight_ratio`/`weight_score`: 权重比例和加权得分 +- `device_type`: 设备类型(支持移动端统计) + +#### 3.4 bmzr_assessment_approval - 班主任考核审批表 +**功能**: 管理考核过程中的审批流程 +**关键字段**: +- `approval_type`: 审批类型(self_submit=自评提交 final_result=最终结果) +- `current_step`/`total_steps`: 当前步骤和总步骤 +- `approval_status`: 审批状态(1=待审批 2=审批中 3=审批通过 4=审批驳回) +- `approval_flow`: 审批流程(JSON格式存储完整流程) +- `timeout_hours`: 超时控制 +- `reminder_count`: 提醒次数统计 + +--- + +## 🔑 关键特性 + +### 数据库规范遵循 +- ✅ **雪花ID主键**: 所有表使用`bigint(20)`主键 +- ✅ **多租户支持**: `tenant_id`字段实现数据隔离 +- ✅ **逻辑删除**: `deleted`字段,禁止物理删除 +- ✅ **审计追踪**: 完整的创建和更新信息记录 +- ✅ **MySQL优化**: 合理的索引设计和数据类型选择 + +### 业务特性 +- 🌳 **多级指标体系**: 支持无限级指标树形结构 +- 🎯 **权重配置**: 灵活的权重分配和自定义分值 +- 👥 **多角色评价**: 自评、同行评、学生评、上级评四个维度 +- 📊 **自动计算**: 系统根据权重自动计算综合得分 +- 🔄 **状态流转**: 完整的评分状态和审批状态管理 +- 📱 **移动端支持**: 全面支持移动端评价和查询 +- 🔍 **授权控制**: 指标级别的评价授权管理 +- 📈 **统计分析**: 支持多维度数据统计和图表展示 + +--- + +## 🔗 关联关系 + +### 主要外键关联 +``` +bmzr_assessment_scheme_indicator +├── scheme_id → bmzr_assessment_scheme.id +└── indicator_id → bmzr_assessment_indicator.id + +bmzr_assessment_plan +└── scheme_id → bmzr_assessment_scheme.id + +bmzr_assessment_score +├── plan_id → bmzr_assessment_plan.id +├── scheme_id → bmzr_assessment_scheme.id +└── indicator_id → bmzr_assessment_indicator.id + +bmzr_assessment_survey +└── plan_id → bmzr_assessment_plan.id + +bmzr_assessment_evaluation +├── plan_id → bmzr_assessment_plan.id +├── scheme_id → bmzr_assessment_scheme.id +└── indicator_id → bmzr_assessment_indicator.id + +bmzr_assessment_approval +└── plan_id → bmzr_assessment_plan.id +``` + +### 业务关联逻辑 +``` +考核方案 → 指标体系关联 → 考核计划 → 多维度评价 → 得分汇总 → 审批确认 + ↓ ↓ ↓ ↓ ↓ ↓ +方案配置 → 权重设置 → 执行计划 → 评价记录 → 自动计算 → 结果发布 +``` + +--- + +## 🎯 业务流程 + +### 1. 考核方案设计流程 +``` +1. 创建考核方案 → 设置基本信息和适用范围 +2. 设计指标体系 → 构建多级指标树形结构 +3. 关联方案指标 → 设置权重比例和评价权限 +4. 方案审核发布 → 生效并可创建考核计划 +``` + +### 2. 考核计划执行流程 +``` +1. 创建考核计划 → 选择方案和参与人员 +2. 设置时间安排 → 配置各阶段评价时间窗口 +3. 启动考核计划 → 自动或手动开始考核 +4. 多维度评价 → 按时间顺序进行各类评价 +5. 自动计算得分 → 系统根据权重计算最终得分 +6. 审批确认 → 审批最终结果并发布 +``` + +### 3. 评价操作流程 +``` +班主任自评 → 同行评价 → 学生问卷调查 → 上级评价 → 系统汇总计算 + ↓ ↓ ↓ ↓ ↓ +提交自评 → 互相评价 → 匿名问卷 → 领导评价 → 最终得分 +``` + +--- + +## 📊 字典数据说明 + +### 主要字典类型 +- `bmzr_scheme_type`: 考核方案类型(年度/学期/月度/专项) +- `bmzr_indicator_type`: 指标类型(班级管理/学生教育/学业指导等) +- `bmzr_evaluator_type`: 评价人类型(自评/同行评/学生评/上级评) +- `bmzr_approval_status`: 审批状态(待审批/审批中/审批通过/审批驳回) +- `bmzr_plan_status`: 计划状态(待开始/进行中/已结束/已暂停) +- `bmzr_score_status`: 评分状态(待自评/待同行评/待学生评/待上级评/已完成) +- `bmzr_evaluation_level`: 评价等级(优秀/良好/合格/基本合格/不合格) +- `bmzr_satisfaction_level`: 满意度等级(非常满意/比较满意/一般/不太满意/非常不满意) +- `bmzr_semester`: 学期(上学期/下学期) +- `bmzr_device_type`: 设备类型(PC/Mobile/Tablet/WeChat) + +--- + +## 📁 文件清单 + +### SQL文件 +``` +docs/设计文档/database/班主任考核管理/ +├── bmzr_assessment_tables.sql # 表结构定义(8张表) +├── bmzr_dict_data_mysql.sql # 字典数据(MySQL版) +└── README.md # 本说明文档 +``` + +### 执行顺序 +1. **表结构创建**: 先执行`bmzr_assessment_tables.sql` +2. **字典数据导入**: 再执行`bmzr_dict_data_mysql.sql` + +--- + +## 🚀 使用指南 + +### 1. 数据库初始化 +```sql +-- 1. 创建表结构 +SOURCE bmzr_assessment_tables.sql; + +-- 2. 导入字典数据 +SOURCE bmzr_dict_data_mysql.sql; +``` + +### 2. 基本数据准备 +1. **设计指标体系**: 在`bmzr_assessment_indicator`表中创建多级指标结构 +2. **创建考核方案**: 在`bmzr_assessment_scheme`表中定义方案基本信息 +3. **关联方案指标**: 在`bmzr_assessment_scheme_indicator`表中建立关联并设置权重 +4. **配置评价权限**: 在指标表中设置`authorized_evaluators`字段 + +### 3. 考核流程操作 +1. **创建考核计划**: 选择方案、设置时间、确定参与人员 +2. **启动考核**: 手动或自动开始考核计划 +3. **多维度评价**: 按时间顺序完成各类评价 +4. **系统计算**: 自动计算加权得分和等级 +5. **审批发布**: 审批确认后发布最终结果 + +### 4. 移动端支持 +- 支持班主任移动端自评和查询历史结果 +- 支持学生移动端问卷调查和满意度评价 +- 支持同行和上级移动端评价操作 +- 所有操作都会记录设备类型便于统计分析 + +### 5. 数据统计分析 +- 支持按时间、部门、班级等维度进行统计 +- 支持评价结果的明细查询和汇总统计 +- 支持图形化展示和数据导出 +- 支持评价过程的进度跟踪和完成率统计 + +### 6. 注意事项 +- 指标体系支持多级结构,建议不超过4级 +- 权重设置需确保同级指标权重之和为1 +- 时间窗口设置需合理,避免时间冲突 +- 问卷数据以JSON格式存储,便于灵活扩展 +- 审批流程支持多步骤,可根据需要配置 + +--- + +## 📞 技术支持 + +如有问题请参考: +- 数据库设计规范: `docs/设计文档/database/mysql-database-standard.md` +- 后端开发规范: `.cursor/cursorrules-backend.md` +- API开发规范: `docs/开发文档/API/` + +**最后更新**: 2025-01-08 \ No newline at end of file diff --git a/docs/设计文档/database/班主任考核管理/bmzr_assessment_tables.sql b/docs/设计文档/database/班主任考核管理/bmzr_assessment_tables.sql new file mode 100644 index 00000000..9a2dc002 --- /dev/null +++ b/docs/设计文档/database/班主任考核管理/bmzr_assessment_tables.sql @@ -0,0 +1,203 @@ +-- ========================================== +-- 班主任考核管理系统表结构(MySQL版) +-- 版本:V1.0.0 +-- 功能:班主任考核管理相关表结构 +-- 作者:系统设计 +-- 时间:2025-01-08 +-- 模块:学工管理-班主任考核管理表结构 +-- ========================================== +-- 创建指标类型表 +DROP TABLE IF EXISTS `bmzr_assessment_indicator_type`; +CREATE TABLE `bmzr_assessment_indicator_type` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `indicator_type_name` varchar(100) NOT NULL COMMENT '指标类型名称', + `indicator_type_code` varchar(50) NOT NULL COMMENT '指标类型编码', + `status` char(1) NOT NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', + `remark` varchar(500) COMMENT '备注', + `create_dept` bigint(20) COMMENT '创建部门', + `create_by` bigint(20) COMMENT '创建者', + `create_time` datetime COMMENT '创建时间', + `update_by` bigint(20) COMMENT '更新者', + `update_time` datetime COMMENT '更新时间', + `deleted` int(1) NOT NULL DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_tenant_indicator_type_code` (`tenant_id`, `indicator_type_code`), + KEY `idx_create_time` (`create_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班主任考核指标类型表'; + +-- ========================================== +-- 2. 班主任考核指标体系表 +-- ========================================== +DROP TABLE IF EXISTS `bmzr_assessment_indicator`; +CREATE TABLE `bmzr_assessment_indicator` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `indicator_name` varchar(100) NOT NULL COMMENT '指标名称', + `indicator_code` varchar(50) NOT NULL COMMENT '指标编码', + `indicator_type` varchar(20) NOT NULL COMMENT '指标类型', + `parent_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '父级指标ID', + `sort_order` int(4) NOT NULL DEFAULT 1 COMMENT '排序', + `weight_ratio` decimal(5,4) NOT NULL DEFAULT 0.0000 COMMENT '权重比例(0-1之间)', + `max_score` decimal(5,2) NOT NULL DEFAULT 100.00 COMMENT '最高分值', + `score` decimal(5,2) NOT NULL DEFAULT 0.00 COMMENT '分值', + `allow_self_evaluation` char(1) NOT NULL DEFAULT '1' COMMENT '允许自评(0=否 1=是)', + `allow_superior_evaluation` char(1) NOT NULL DEFAULT '1' COMMENT '允许上级评(0=否 1=是)', + `status` char(1) NOT NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', + `remark` varchar(500) COMMENT '备注', + `create_dept` bigint(20) COMMENT '创建部门', + `create_by` bigint(20) COMMENT '创建者', + `create_time` datetime COMMENT '创建时间', + `update_by` bigint(20) COMMENT '更新者', + `update_time` datetime COMMENT '更新时间', + `deleted` int(1) NOT NULL DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_tenant_indicator_code` (`tenant_id`, `indicator_code`), + KEY `idx_parent_id` (`parent_id`), + KEY `idx_indicator_type` (`indicator_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班主任考核指标体系表'; +-- ========================================== +-- 1. 班主任考核方案表 +-- ========================================== +DROP TABLE IF EXISTS `bmzr_assessment_scheme`; +CREATE TABLE `bmzr_assessment_scheme` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `scheme_name` varchar(100) NOT NULL COMMENT '方案名称', + `scheme_code` varchar(50) NOT NULL COMMENT '方案编码', + `academic_year` varchar(10) NOT NULL COMMENT '学年', + `semester` char(1) NOT NULL COMMENT '学期(1=上学期 2=下学期)', + `scheme_description` text COMMENT '方案描述', + `self_evaluation_required` char(1) NOT NULL DEFAULT '1' COMMENT '是否需要自评(0=否 1=是)', + `superior_evaluation_required` char(1) NOT NULL DEFAULT '1' COMMENT '是否需要上级评(0=否 1=是)', + `status` char(1) NOT NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', + `remark` varchar(500) COMMENT '备注', + `create_dept` bigint(20) COMMENT '创建部门', + `create_by` bigint(20) COMMENT '创建者', + `create_time` datetime COMMENT '创建时间', + `update_by` bigint(20) COMMENT '更新者', + `update_time` datetime COMMENT '更新时间', + `deleted` int(1) NOT NULL DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_tenant_scheme_code` (`tenant_id`, `scheme_code`), + KEY `idx_academic_year_semester` (`academic_year`, `semester`), + KEY `idx_create_time` (`create_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班主任考核方案表'; + + +-- ========================================== +-- 3. 班主任考核方案指标关联表 +-- ========================================== +DROP TABLE IF EXISTS `bmzr_assessment_scheme_indicator`; +CREATE TABLE `bmzr_assessment_scheme_indicator` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `scheme_id` bigint(20) NOT NULL COMMENT '考核方案ID', + `indicator_id` bigint(20) NOT NULL COMMENT '考核指标ID', + `weight_ratio` decimal(5,4) NOT NULL DEFAULT 0.0000 COMMENT '在方案中的权重比例', + `custom_max_score` decimal(5,2) COMMENT '自定义最高分值', + `sort_order` int(4) NOT NULL DEFAULT 1 COMMENT '排序', + `remark` varchar(500) COMMENT '备注', + `create_dept` bigint(20) COMMENT '创建部门', + `create_by` bigint(20) COMMENT '创建者', + `create_time` datetime COMMENT '创建时间', + `update_by` bigint(20) COMMENT '更新者', + `update_time` datetime COMMENT '更新时间', + `deleted` int(1) NOT NULL DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)', + PRIMARY KEY (`id`), + KEY `uk_scheme_indicator` (`scheme_id`, `indicator_id`), + KEY `idx_scheme_id` (`scheme_id`), + KEY `idx_indicator_id` (`indicator_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班主任考核方案指标关联表'; + +-- ========================================== +-- 4. 班主任考核计划表 +-- ========================================== +DROP TABLE IF EXISTS `bmzr_assessment_plan`; +CREATE TABLE `bmzr_assessment_plan` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `plan_name` varchar(100) NOT NULL COMMENT '计划名称', + `plan_code` varchar(50) NOT NULL COMMENT '计划编码', + `scheme_id` bigint(20) NOT NULL COMMENT '考核方案ID', + `academic_year` varchar(10) NOT NULL COMMENT '学年', + `semester` char(1) NOT NULL COMMENT '学期(1=上学期 2=下学期)', + `plan_start_time` datetime NOT NULL COMMENT '计划开始时间', + `plan_end_time` datetime NOT NULL COMMENT '计划结束时间', + `data_extract_start_time` datetime COMMENT '数据提取开始时间', + `data_extract_end_time` datetime COMMENT '数据提取结束时间', + `plan_status` char(1) NOT NULL DEFAULT '1' COMMENT '计划状态(0=禁用 1=启用 )', + `description` text COMMENT '计划描述', + `remark` varchar(500) COMMENT '备注', + `create_dept` bigint(20) COMMENT '创建部门', + `create_by` bigint(20) COMMENT '创建者', + `create_time` datetime COMMENT '创建时间', + `update_by` bigint(20) COMMENT '更新者', + `update_time` datetime COMMENT '更新时间', + `deleted` int(1) NOT NULL DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_tenant_plan_code` (`tenant_id`, `plan_code`), + KEY `idx_scheme_id` (`scheme_id`), + KEY `idx_academic_year_semester` (`academic_year`, `semester`), + KEY `idx_plan_status` (`plan_status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班主任考核计划表'; + +-- ========================================== +-- 5. 班主任考核得分表 +-- ========================================== +DROP TABLE IF EXISTS `bmzr_assessment_score`; +CREATE TABLE `bmzr_assessment_score` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `plan_id` bigint(20) NOT NULL COMMENT '考核计划ID', + `scheme_id` bigint(20) NOT NULL COMMENT '考核方案ID', + `indicator_id` bigint(20) NOT NULL COMMENT '考核指标ID', + `evaluated_user_id` bigint(20) NOT NULL COMMENT '被评价用户ID', + `evaluated_user_name` varchar(50) NOT NULL COMMENT '被评价用户姓名', + `evaluated_dept_id` bigint(20) COMMENT '被评价用户部门ID', + `self_score` decimal(5,2) COMMENT '自评分数', + `self_comment` text COMMENT '自评意见', + `self_submit_time` datetime COMMENT '自评提交时间', + `superior_score` decimal(5,2) COMMENT '上级评分数', + `superior_comment` text COMMENT '上级评意见', + `superior_evaluator_id` bigint(20) COMMENT '上级评价人ID', + `superior_submit_time` datetime COMMENT '上级评提交时间', + `evaluation_level` varchar(20) COMMENT '评价等级 dict_type = bmzr_evaluation_level', + `audit_status` char(1) NOT NULL DEFAULT '0' COMMENT '审核状态(0=待审核 1=审核通过 2=审核不通过)', + `final_score` decimal(5,2) COMMENT '最终得分', + `submit_time` datetime COMMENT '提交时间', + `remark` varchar(500) COMMENT '备注', + `create_dept` bigint(20) COMMENT '创建部门', + `create_by` bigint(20) COMMENT '创建者', + `create_time` datetime COMMENT '创建时间', + `update_by` bigint(20) COMMENT '更新者', + `update_time` datetime COMMENT '更新时间', + `deleted` int(1) NOT NULL DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_plan_indicator_user` (`plan_id`, `indicator_id`, `evaluated_user_id`), + KEY `idx_plan_id` (`plan_id`), + KEY `idx_scheme_id` (`scheme_id`), + KEY `idx_indicator_id` (`indicator_id`), + KEY `idx_evaluated_user_id` (`evaluated_user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班主任考核得分表'; + +-- ========================================== +-- 6. 班主任考核指标与违纪处分奖励关联关系表 +-- ========================================== +DROP TABLE IF EXISTS `bmzr_assessment_indicator_discipline_reward`; +CREATE TABLE `bmzr_assessment_indicator_discipline_reward` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号', + `indicator_id` bigint(20) NOT NULL COMMENT '考核指标ID', + `discipline_type_ids` varchar(500) NOT NULL COMMENT '违纪处分类型ID,逗号分隔', + `reward_type_ids` varchar(500) NOT NULL COMMENT '奖励类型ID,逗号分隔', + `remark` varchar(500) COMMENT '备注', + `create_dept` bigint(20) COMMENT '创建部门', + `create_by` bigint(20) COMMENT '创建者', + `create_time` datetime COMMENT '创建时间', + `update_by` bigint(20) COMMENT '更新者', + `update_time` datetime COMMENT '更新时间', + `deleted` int(1) NOT NULL DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)', + PRIMARY KEY (`id`), + KEY `idx_indicator_id` (`indicator_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班主任考核指标与违纪处分奖励关联关系表'; \ No newline at end of file diff --git a/docs/设计文档/database/班主任考核管理/bmzr_dict_data_mysql.sql b/docs/设计文档/database/班主任考核管理/bmzr_dict_data_mysql.sql new file mode 100644 index 00000000..49b0bc9e --- /dev/null +++ b/docs/设计文档/database/班主任考核管理/bmzr_dict_data_mysql.sql @@ -0,0 +1,54 @@ +-- ========================================== +-- 班主任考核管理系统字典数据(MySQL版) +-- 版本:V1.0.0 +-- 功能:班主任考核管理相关字典数据 +-- 作者:系统设计 +-- 时间:2025-01-08 +-- 模块:学工管理-班主任考核管理字典数据 +-- ========================================== + +-- ========================================== +-- ========================================== +-- 2. 指标类型字典 +-- ========================================== +-- 删除已存在的字典类型 +DELETE FROM sys_dict_type WHERE dict_type = 'bmzr_indicator_type'; +-- 插入字典类型 +INSERT INTO sys_dict_type (tenant_id, dict_name, dict_type, status, create_dept, create_by, create_time, remark) +VALUES ('000000', '考核指标类型', 'bmzr_indicator_type', '0', 103, 1, NOW(), '班主任考核-指标类型'); + +-- 删除已存在的字典数据 +DELETE FROM sys_dict_data WHERE dict_type = 'bmzr_indicator_type'; +-- 插入字典数据 +INSERT INTO sys_dict_data (tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_dept, create_by, create_time, remark) VALUES +('000000', 1, '班级管理', '班级管理', 'bmzr_indicator_type', '', 'primary', 'Y', '0', 103, 1, NOW(), '班级日常管理工作'), +('000000', 2, '学生教育', '学生教育', 'bmzr_indicator_type', '', 'success', 'N', '0', 103, 1, NOW(), '学生思想教育工作'), +('000000', 3, '学业指导', '学业指导', 'bmzr_indicator_type', '', 'info', 'N', '0', 103, 1, NOW(), '学生学业指导工作'), +('000000', 4, '心理健康', '心理健康', 'bmzr_indicator_type', '', 'warning', 'N', '0', 103, 1, NOW(), '学生心理健康工作'), +('000000', 5, '安全管理', '安全管理', 'bmzr_indicator_type', '', 'danger', 'N', '0', 103, 1, NOW(), '班级安全管理工作'), +('000000', 6, '家校沟通', '家校沟通', 'bmzr_indicator_type', '', 'primary', 'N', '0', 103, 1, NOW(), '家校联系沟通工作'), +('000000', 7, '活动组织', '活动组织', 'bmzr_indicator_type', '', 'info', 'N', '0', 103, 1, NOW(), '班级活动组织工作'), +('000000', 8, '班级建设', '班级建设', 'bmzr_indicator_type', '', 'success', 'N', '0', 103, 1, NOW(), '班级文化建设工作'); + + +-- ========================================== +-- 7. 评价等级字典 +-- ========================================== +-- 删除已存在的字典类型 +DELETE FROM sys_dict_type WHERE dict_type = 'bmzr_evaluation_level'; +-- 插入字典类型 +INSERT INTO sys_dict_type (tenant_id, dict_name, dict_type, status, create_dept, create_by, create_time, remark) +VALUES ('000000', '评价等级', 'bmzr_evaluation_level', '0', 103, 1, NOW(), '班主任考核-评价等级'); + +-- 删除已存在的字典数据 +DELETE FROM sys_dict_data WHERE dict_type = 'bmzr_evaluation_level'; +-- 插入字典数据 +INSERT INTO sys_dict_data (tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_dept, create_by, create_time, remark) VALUES +('000000', 1, '优秀', 'excellent', 'bmzr_evaluation_level', '', 'success', 'Y', '0', 103, 1, NOW(), '优秀等级(90-100分)'), +('000000', 2, '良好', 'good', 'bmzr_evaluation_level', '', 'primary', 'N', '0', 103, 1, NOW(), '良好等级(80-89分)'), +('000000', 3, '合格', 'qualified', 'bmzr_evaluation_level', '', 'info', 'N', '0', 103, 1, NOW(), '合格等级(70-79分)'), +('000000', 4, '基本合格', 'basic', 'bmzr_evaluation_level', '', 'warning', 'N', '0', 103, 1, NOW(), '基本合格等级(60-69分)'), +('000000', 5, '不合格', 'unqualified', 'bmzr_evaluation_level', '', 'danger', 'N', '0', 103, 1, NOW(), '不合格等级(60分以下)'); + + +-- ========================================== \ No newline at end of file diff --git a/web/src/api/bzrkh/assessmentIndicator/index.ts b/web/src/api/bzrkh/assessmentIndicator/index.ts new file mode 100644 index 00000000..b8ef568e --- /dev/null +++ b/web/src/api/bzrkh/assessmentIndicator/index.ts @@ -0,0 +1,87 @@ +import request from '@/utils/request'; +import { AssessmentIndicatorVO, AssessmentIndicatorQuery, AssessmentIndicatorForm } from './types'; + +/** + * 查询班主任考核指标体系列表 + * @param query 查询条件 + * @returns + */ +export function listBmzrAssessmentIndicator(query?: AssessmentIndicatorQuery) { + return request({ + url: '/bzrkh/assessmentIndicator/list', + method: 'get', + params: query + }); +} + +/** + * 查询班主任考核指标体系详细 + * @param id 主键 + * @returns + */ +export function getBmzrAssessmentIndicator(id: string | number) { + return request({ + url: `/bzrkh/assessmentIndicator/${id}`, + method: 'get' + }); +} + +/** + * 新增班主任考核指标体系 + * @param data 表单数据 + * @returns + */ +export function addBmzrAssessmentIndicator(data: AssessmentIndicatorForm) { + return request({ + url: '/bzrkh/assessmentIndicator', + method: 'post', + data: data + }); +} + +/** + * 修改班主任考核指标体系 + * @param data 表单数据 + * @returns + */ +export function updateBmzrAssessmentIndicator(data: AssessmentIndicatorForm) { + return request({ + url: '/bzrkh/assessmentIndicator', + method: 'put', + data: data + }); +} + +/** + * 删除班主任考核指标体系 + * @param ids 主键串 + * @returns + */ +export function delBmzrAssessmentIndicator(ids: string | number | Array) { + return request({ + url: `/bzrkh/assessmentIndicator/${ids}`, + method: 'delete' + }); +} + +/** + * 获取指标类型选项 + * @returns + */ +export function getIndicatorTypeOptions() { + return request({ + url: '/bzrkh/assessmentIndicator/indicatorTypes/options', + method: 'get' + }); +} + +/** + * 获取父级指标选项 + * @returns + */ +export function getParentIndicatorOptions() { + return request({ + url: '/bzrkh/assessmentIndicator/parentIndicators/options', + method: 'get' + }); +} \ No newline at end of file diff --git a/web/src/api/bzrkh/assessmentIndicator/types.ts b/web/src/api/bzrkh/assessmentIndicator/types.ts new file mode 100644 index 00000000..0a8d7380 --- /dev/null +++ b/web/src/api/bzrkh/assessmentIndicator/types.ts @@ -0,0 +1,237 @@ +export interface AssessmentIndicatorVO { + /** + * 主键ID + */ + id: string | number; + + /** + * 租户编号 + */ + tenantId?: string; + + /** + * 指标名称 + */ + indicatorName?: string; + + /** + * 指标编码 + */ + indicatorCode?: string; + + /** + * 指标类型 + */ + indicatorType?: string; + + /** + * 父级指标ID + */ + parentId?: string | number; + + /** + * 排序 + */ + sortOrder?: number; + + /** + * 权重比例(0-1之间) + */ + weightRatio?: number; + + /** + * 最高分值 + */ + maxScore?: number; + + /** + * 分值 + */ + score?: number; + + /** + * 允许自评(0=否 1=是) + */ + allowSelfEvaluation?: string; + + /** + * 允许上级评(0=否 1=是) + */ + allowSuperiorEvaluation?: string; + + /** + * 状态(0正常 1停用) + */ + status?: string; + + /** + * 备注 + */ + remark?: string; + + /** + * 创建部门 + */ + createDept?: string | number; + + /** + * 创建者 + */ + createBy?: string | number; + + /** + * 创建时间 + */ + createTime?: string; + + /** + * 更新者 + */ + updateBy?: string | number; + + /** + * 更新时间 + */ + updateTime?: string; + + /** + * 删除标志(0代表存在 1代表删除) + */ + deleted?: number; +} + +export interface AssessmentIndicatorForm { + /** + * 主键ID + */ + id?: string | number; + + /** + * 租户编号 + */ + tenantId?: string; + + /** + * 指标名称 + */ + indicatorName?: string; + + /** + * 指标编码 + */ + indicatorCode?: string; + + /** + * 指标类型 + */ + indicatorType?: string; + + /** + * 父级指标ID + */ + parentId?: string | number; + + /** + * 排序 + */ + sortOrder?: number; + + /** + * 权重比例(0-1之间) + */ + weightRatio?: number; + + /** + * 最高分值 + */ + maxScore?: number; + + /** + * 分值 + */ + score?: number; + + /** + * 允许自评(0=否 1=是) + */ + allowSelfEvaluation?: string; + + /** + * 允许上级评(0=否 1=是) + */ + allowSuperiorEvaluation?: string; + + /** + * 状态(0正常 1停用) + */ + status?: string; + + /** + * 备注 + */ + remark?: string; +} + +export interface AssessmentIndicatorQuery extends PageQuery { + /** + * 指标名称 + */ + indicatorName?: string; + + /** + * 指标编码 + */ + indicatorCode?: string; + + /** + * 指标类型 + */ + indicatorType?: string; + + /** + * 父级指标ID + */ + parentId?: string | number; + + /** + * 允许自评(0=否 1=是) + */ + allowSelfEvaluation?: string; + + /** + * 允许上级评(0=否 1=是) + */ + allowSuperiorEvaluation?: string; + + /** + * 状态(0正常 1停用) + */ + status?: string; + + /** + * 日期范围参数 + */ + params?: any; +} + +export interface AssessmentIndicatorTypeOption { + /** + * 主键ID + */ + id: string | number; + + /** + * 指标类型名称 + */ + indicatorTypeName: string; + + /** + * 指标类型编码 + */ + indicatorTypeCode: string; + + /** + * 状态(0正常 1停用) + */ + status?: string; +} \ No newline at end of file diff --git a/web/src/api/bzrkh/assessmentIndicatorType/index.ts b/web/src/api/bzrkh/assessmentIndicatorType/index.ts new file mode 100644 index 00000000..68ecc706 --- /dev/null +++ b/web/src/api/bzrkh/assessmentIndicatorType/index.ts @@ -0,0 +1,75 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { AssessmentIndicatorTypeVO, AssessmentIndicatorTypeForm, AssessmentIndicatorTypeQuery } from '@/api/bzrkh/assessmentIndicatorType/types'; + +/** + * 查询班主任考核指标类型列表 + * @param query + * @returns {*} + */ +export const listAssessmentIndicatorType = (query?: AssessmentIndicatorTypeQuery): AxiosPromise => { + return request({ + url: '/bzrkh/assessmentIndicatorType/list', + method: 'get', + params: query + }); +}; + +/** + * 查询所有班主任考核指标类型列表(包括已逻辑删除的) + * @param query + * @returns {*} + */ +export const listAllAssessmentIndicatorType = (query?: AssessmentIndicatorTypeQuery): AxiosPromise => { + return request({ + url: '/bzrkh/assessmentIndicatorType/listAllIncludeDeleted', + method: 'get', + params: query + }); +}; + +/** + * 查询班主任考核指标类型详细 + * @param id + */ +export const getAssessmentIndicatorType = (id: string | number): AxiosPromise => { + return request({ + url: '/bzrkh/assessmentIndicatorType/' + id, + method: 'get' + }); +}; + +/** + * 新增班主任考核指标类型 + * @param data + */ +export const addAssessmentIndicatorType = (data: AssessmentIndicatorTypeForm) => { + return request({ + url: '/bzrkh/assessmentIndicatorType', + method: 'post', + data: data + }); +}; + +/** + * 修改班主任考核指标类型 + * @param data + */ +export const updateAssessmentIndicatorType = (data: AssessmentIndicatorTypeForm) => { + return request({ + url: '/bzrkh/assessmentIndicatorType', + method: 'put', + data: data + }); +}; + +/** + * 删除班主任考核指标类型 + * @param id + */ +export const delAssessmentIndicatorType = (id: string | number | Array) => { + return request({ + url: '/bzrkh/assessmentIndicatorType/' + id, + method: 'delete' + }); +}; \ No newline at end of file diff --git a/web/src/api/bzrkh/assessmentIndicatorType/types.ts b/web/src/api/bzrkh/assessmentIndicatorType/types.ts new file mode 100644 index 00000000..11016e1b --- /dev/null +++ b/web/src/api/bzrkh/assessmentIndicatorType/types.ts @@ -0,0 +1,110 @@ +export interface AssessmentIndicatorTypeVO { + /** + * 主键ID + */ + id: string | number; + + /** + * 删除标志 + */ + deleted: number; + + /** + * 指标类型名称 + */ + indicatorTypeName: string; + + /** + * 指标类型编码 + */ + indicatorTypeCode: string; + + /** + * 状态 + */ + status: string; + + /** + * 备注 + */ + remark: string; + + /** + * 创建者 + */ + createBy: number; + + /** + * 创建时间 + */ + createTime: string; + + /** + * 更新者 + */ + updateBy: number; + + /** + * 更新时间 + */ + updateTime: string; +} + +export interface AssessmentIndicatorTypeForm extends BaseEntity { + /** + * 主键ID + */ + id?: string | number; + + /** + * 删除标志 + */ + deleted?: number; + + /** + * 指标类型名称 + */ + indicatorTypeName?: string; + + /** + * 指标类型编码 + */ + indicatorTypeCode?: string; + + /** + * 状态 + */ + status?: string; + + /** + * 备注 + */ + remark?: string; +} + +export interface AssessmentIndicatorTypeQuery extends PageQuery { + /** + * 删除标志 + */ + deleted?: number; + + /** + * 指标类型名称 + */ + indicatorTypeName?: string; + + /** + * 指标类型编码 + */ + indicatorTypeCode?: string; + + /** + * 状态 + */ + status?: string; + + /** + * 日期范围参数 + */ + params?: any; +} \ No newline at end of file diff --git a/web/src/api/bzrkh/assessmentPlan/index.ts b/web/src/api/bzrkh/assessmentPlan/index.ts new file mode 100644 index 00000000..0cd725ed --- /dev/null +++ b/web/src/api/bzrkh/assessmentPlan/index.ts @@ -0,0 +1,100 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { AssessmentPlanVO, AssessmentPlanForm, AssessmentPlanQuery, AssessmentSchemeOption } from './types'; + +/** + * 查询班主任考核计划列表 + * @param query + * @returns {*} + */ +export const listAssessmentPlan = (query?: AssessmentPlanQuery): AxiosPromise => { + return request({ + url: '/bzrkh/assessmentPlan/list', + method: 'get', + params: query + }); +}; + +/** + * 查询班主任考核计划详细 + * @param id + */ +export const getAssessmentPlan = (id: string | number): AxiosPromise => { + return request({ + url: '/bzrkh/assessmentPlan/' + id, + method: 'get' + }); +}; + +/** + * 新增班主任考核计划 + * @param data + */ +export const addAssessmentPlan = (data: AssessmentPlanForm) => { + return request({ + url: '/bzrkh/assessmentPlan', + method: 'post', + data: data + }); +}; + +/** + * 修改班主任考核计划 + * @param data + */ +export const updateAssessmentPlan = (data: AssessmentPlanForm) => { + return request({ + url: '/bzrkh/assessmentPlan', + method: 'put', + data: data + }); +}; + +/** + * 删除班主任考核计划 + * @param id + */ +export const delAssessmentPlan = (id: string | number | Array) => { + return request({ + url: '/bzrkh/assessmentPlan/' + id, + method: 'delete' + }); +}; + +/** + * 导出班主任考核计划 + * @param query + */ +export const exportAssessmentPlan = (query?: AssessmentPlanQuery) => { + return request({ + url: '/bzrkh/assessmentPlan/export', + method: 'post', + data: query + }); +}; + +/** + * 获取可用的考核方案选项 + */ +export const getAvailableSchemes = (): AxiosPromise => { + return request({ + url: '/bzrkh/assessmentPlan/schemes/options', + method: 'get' + }); +}; + +/** + * 启用/禁用考核计划 + * @param id + * @param status + */ +export const changeAssessmentPlanStatus = (id: string | number, status: string) => { + return request({ + url: '/bzrkh/assessmentPlan/changeStatus', + method: 'put', + data: { + id, + planStatus: status + } + }); +}; \ No newline at end of file diff --git a/web/src/api/bzrkh/assessmentPlan/types.ts b/web/src/api/bzrkh/assessmentPlan/types.ts new file mode 100644 index 00000000..fab8e6df --- /dev/null +++ b/web/src/api/bzrkh/assessmentPlan/types.ts @@ -0,0 +1,240 @@ +export interface AssessmentPlanVO { + /** + * 主键ID + */ + id?: string | number; + + /** + * 租户编号 + */ + tenantId?: string; + + /** + * 计划名称 + */ + planName?: string; + + /** + * 计划编码 + */ + planCode?: string; + + /** + * 考核方案ID + */ + schemeId?: string | number; + + /** + * 考核方案名称 + */ + schemeName?: string; + + /** + * 学年 + */ + academicYear?: string; + + /** + * 学期(1=上学期 2=下学期) + */ + semester?: string; + + /** + * 计划开始时间 + */ + planStartTime?: string; + + /** + * 计划结束时间 + */ + planEndTime?: string; + + /** + * 数据提取开始时间 + */ + dataExtractStartTime?: string; + + /** + * 数据提取结束时间 + */ + dataExtractEndTime?: string; + + /** + * 计划状态(0=禁用 1=启用) + */ + planStatus?: string; + + /** + * 计划描述 + */ + description?: string; + + /** + * 备注 + */ + remark?: string; + + /** + * 创建部门 + */ + createDept?: string | number; + + /** + * 创建者 + */ + createBy?: string | number; + + /** + * 创建时间 + */ + createTime?: string; + + /** + * 更新者 + */ + updateBy?: string | number; + + /** + * 更新时间 + */ + updateTime?: string; +} + +export interface AssessmentPlanForm { + /** + * 主键ID + */ + id?: string | number; + + /** + * 计划名称 + */ + planName?: string; + + /** + * 计划编码 + */ + planCode?: string; + + /** + * 考核方案ID + */ + schemeId?: string | number; + + /** + * 学年 + */ + academicYear?: string; + + /** + * 学期(1=上学期 2=下学期) + */ + semester?: string; + + /** + * 计划开始时间 + */ + planStartTime?: string; + + /** + * 计划结束时间 + */ + planEndTime?: string; + + /** + * 数据提取开始时间 + */ + dataExtractStartTime?: string; + + /** + * 数据提取结束时间 + */ + dataExtractEndTime?: string; + + /** + * 计划状态(0=禁用 1=启用) + */ + planStatus?: string; + + /** + * 计划描述 + */ + description?: string; + + /** + * 备注 + */ + remark?: string; +} + +export interface AssessmentPlanQuery extends PageQuery { + /** + * 计划名称 + */ + planName?: string; + + /** + * 计划编码 + */ + planCode?: string; + + /** + * 考核方案ID + */ + schemeId?: string | number; + + /** + * 学年 + */ + academicYear?: string; + + /** + * 学期(1=上学期 2=下学期) + */ + semester?: string; + + /** + * 计划状态(0=禁用 1=启用) + */ + planStatus?: string; + + /** + * 创建时间范围 + */ + params?: { + 'beginCreateTime'?: string; + 'endCreateTime'?: string; + }; +} + +export interface AssessmentSchemeOption { + /** + * 方案ID + */ + id?: string | number; + + /** + * 方案名称 + */ + schemeName?: string; + + /** + * 方案编码 + */ + schemeCode?: string; + + /** + * 学年 + */ + academicYear?: string; + + /** + * 学期 + */ + semester?: string; + + /** + * 状态 + */ + status?: string; +} \ No newline at end of file diff --git a/web/src/api/bzrkh/assessmentScheme/index.ts b/web/src/api/bzrkh/assessmentScheme/index.ts new file mode 100644 index 00000000..ac2d529f --- /dev/null +++ b/web/src/api/bzrkh/assessmentScheme/index.ts @@ -0,0 +1,74 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { BmzrAssessmentSchemeVO, BmzrAssessmentSchemeForm, BmzrAssessmentSchemeQuery } from '@/api/bzrkh/assessmentScheme/types'; + +/** + * 查询班主任考核方案列表 + * @param query + * @returns {*} + */ +export const listBmzrAssessmentScheme = (query?: BmzrAssessmentSchemeQuery) => { + return request({ + url: '/bzrkh/assessmentScheme/list', + method: 'get', + params: query + }); +}; + +/** + * 查询班主任考核方案详细 + * @param id + */ +export const getBmzrAssessmentScheme = (id: string | number): AxiosPromise => { + return request({ + url: '/bzrkh/assessmentScheme/' + id, + method: 'get' + }); +}; + +/** + * 新增班主任考核方案 + * @param data + */ +export const addBmzrAssessmentScheme = (data: BmzrAssessmentSchemeForm) => { + return request({ + url: '/bzrkh/assessmentScheme', + method: 'post', + data: data + }); +}; + +/** + * 修改班主任考核方案 + * @param data + */ +export const updateBmzrAssessmentScheme = (data: BmzrAssessmentSchemeForm) => { + return request({ + url: '/bzrkh/assessmentScheme', + method: 'put', + data: data + }); +}; + +/** + * 删除班主任考核方案 + * @param id + */ +export const delBmzrAssessmentScheme = (id: string | number | Array) => { + return request({ + url: '/bzrkh/assessmentScheme/' + id, + method: 'delete' + }); +}; + +/** + * 导出班主任考核方案 + * @param query + */ +export const exportBmzrAssessmentScheme = (query?: BmzrAssessmentSchemeQuery): AxiosPromise => { + return request({ + url: '/bzrkh/assessmentScheme/export', + method: 'post', + data: query + }); +}; \ No newline at end of file diff --git a/web/src/api/bzrkh/assessmentScheme/types.ts b/web/src/api/bzrkh/assessmentScheme/types.ts new file mode 100644 index 00000000..71b45da2 --- /dev/null +++ b/web/src/api/bzrkh/assessmentScheme/types.ts @@ -0,0 +1,185 @@ +export interface BmzrAssessmentSchemeVO { + /** + * 主键ID + */ + id: string | number; + + /** + * 租户编号 + */ + tenantId: string; + + /** + * 方案名称 + */ + schemeName: string; + + /** + * 方案编码 + */ + schemeCode: string; + + /** + * 学年 + */ + academicYear: string; + + /** + * 学期 + */ + semester: string; + + /** + * 方案描述 + */ + schemeDescription: string; + + /** + * 是否需要自评 + */ + selfEvaluationRequired: string; + + /** + * 是否需要上级评 + */ + superiorEvaluationRequired: string; + + /** + * 状态 + */ + status: string; + + /** + * 备注 + */ + remark: string; + + /** + * 创建部门 + */ + createDept: number; + + /** + * 创建者 + */ + createBy: number; + + /** + * 创建时间 + */ + createTime: string; + + /** + * 更新者 + */ + updateBy: number; + + /** + * 更新时间 + */ + updateTime: string; + + /** + * 删除标志 + */ + deleted: number; +} + +export interface BmzrAssessmentSchemeForm { + /** + * 主键ID + */ + id?: string | number; + + /** + * 租户编号 + */ + tenantId?: string; + + /** + * 方案名称 + */ + schemeName?: string; + + /** + * 方案编码 + */ + schemeCode?: string; + + /** + * 学年 + */ + academicYear?: string; + + /** + * 学期 + */ + semester?: string; + + /** + * 方案描述 + */ + schemeDescription?: string; + + /** + * 是否需要自评 + */ + selfEvaluationRequired?: string; + + /** + * 是否需要上级评 + */ + superiorEvaluationRequired?: string; + + /** + * 状态 + */ + status?: string; + + /** + * 备注 + */ + remark?: string; +} + +export interface BmzrAssessmentSchemeQuery extends PageQuery { + /** + * 方案名称 + */ + schemeName?: string; + + /** + * 方案编码 + */ + schemeCode?: string; + + /** + * 学年 + */ + academicYear?: string; + + /** + * 学期 + */ + semester?: string; + + /** + * 状态 + */ + status?: string; + + /** + * 是否需要自评 + */ + selfEvaluationRequired?: string; + + /** + * 是否需要上级评 + */ + superiorEvaluationRequired?: string; + + /** + * 参数 + */ + params?: any; +} \ No newline at end of file diff --git a/web/src/api/bzrkh/assessmentSchemeIndicator/index.ts b/web/src/api/bzrkh/assessmentSchemeIndicator/index.ts new file mode 100644 index 00000000..0d951924 --- /dev/null +++ b/web/src/api/bzrkh/assessmentSchemeIndicator/index.ts @@ -0,0 +1,91 @@ +import request from '@/utils/request'; +import { BmzrAssessmentSchemeIndicatorVO, BmzrAssessmentSchemeIndicatorQuery, BmzrAssessmentSchemeIndicatorForm } from './types'; + +/** + * 查询班主任考核方案指标关联列表 + * @param query 查询条件 + * @returns + */ +export function listBmzrAssessmentSchemeIndicator(query?: BmzrAssessmentSchemeIndicatorQuery) { + return request({ + url: '/bzrkh/assessmentSchemeIndicator/list', + method: 'get', + params: query + }); +} + +/** + * 根据方案ID查询指标关联列表 + * @param schemeId 方案ID + * @returns + */ +export function listBySchemeId(schemeId: string | number) { + return request({ + url: `/bzrkh/assessmentSchemeIndicator/listBySchemeId/${schemeId}`, + method: 'get' + }); +} + +/** + * 查询班主任考核方案指标关联详细 + * @param id 主键 + * @returns + */ +export function getBmzrAssessmentSchemeIndicator(id: string | number) { + return request({ + url: `/bzrkh/assessmentSchemeIndicator/${id}`, + method: 'get' + }); +} + +/** + * 新增班主任考核方案指标关联 + * @param data 表单数据 + * @returns + */ +export function addBmzrAssessmentSchemeIndicator(data: BmzrAssessmentSchemeIndicatorForm) { + return request({ + url: '/bzrkh/assessmentSchemeIndicator', + method: 'post', + data: data + }); +} + +/** + * 修改班主任考核方案指标关联 + * @param data 表单数据 + * @returns + */ +export function updateBmzrAssessmentSchemeIndicator(data: BmzrAssessmentSchemeIndicatorForm) { + return request({ + url: '/bzrkh/assessmentSchemeIndicator', + method: 'put', + data: data + }); +} + +/** + * 删除班主任考核方案指标关联 + * @param ids 主键串 + * @returns + */ +export function delBmzrAssessmentSchemeIndicator(ids: string | number | Array) { + return request({ + url: `/bzrkh/assessmentSchemeIndicator/${ids}`, + method: 'delete' + }); +} + +/** + * 批量保存方案指标关联 + * @param schemeId 方案ID + * @param indicatorList 指标列表 + * @returns + */ +export function batchSaveSchemeIndicators(schemeId: string | number, indicatorList: BmzrAssessmentSchemeIndicatorForm[]) { + return request({ + url: `/bzrkh/assessmentSchemeIndicator/batchSave/${schemeId}`, + method: 'post', + data: indicatorList + }); +} \ No newline at end of file diff --git a/web/src/api/bzrkh/assessmentSchemeIndicator/types.ts b/web/src/api/bzrkh/assessmentSchemeIndicator/types.ts new file mode 100644 index 00000000..38847dee --- /dev/null +++ b/web/src/api/bzrkh/assessmentSchemeIndicator/types.ts @@ -0,0 +1,150 @@ +export interface BmzrAssessmentSchemeIndicatorVO { + /** + * 主键ID + */ + id: string | number; + + /** + * 租户编号 + */ + tenantId: string; + + /** + * 考核方案ID + */ + schemeId: string | number; + + /** + * 考核指标ID + */ + indicatorId: string | number; + + /** + * 指标名称 + */ + indicatorName: string; + + /** + * 指标编码 + */ + indicatorCode: string; + + /** + * 在方案中的权重比例 + */ + weightRatio: number; + + /** + * 自定义最高分值 + */ + customMaxScore: number; + + /** + * 分值 + */ + score: number; + + /** + * 排序 + */ + sortOrder: number; + + /** + * 备注 + */ + remark: string; + + /** + * 创建者 + */ + createBy: number; + + /** + * 创建时间 + */ + createTime: string; + + /** + * 更新者 + */ + updateBy: number; + + /** + * 更新时间 + */ + updateTime: string; + + /** + * 删除标志 + */ + deleted: number; +} + +export interface BmzrAssessmentSchemeIndicatorForm { + /** + * 主键ID + */ + id?: string | number; + + /** + * 考核方案ID + */ + schemeId?: string | number; + + /** + * 考核指标ID + */ + indicatorId?: string | number; + + /** + * 在方案中的权重比例 + */ + weightRatio?: number; + + /** + * 自定义最高分值 + */ + customMaxScore?: number; + + /** + * 分值 + */ + score?: number; + + /** + * 排序 + */ + sortOrder?: number; + + /** + * 备注 + */ + remark?: string; +} + +export interface BmzrAssessmentSchemeIndicatorQuery extends PageQuery { + /** + * 考核方案ID + */ + schemeId?: string | number; + + /** + * 考核指标ID + */ + indicatorId?: string | number; + + /** + * 指标名称 + */ + indicatorName?: string; + + /** + * 排序 + */ + sortOrder?: number; + + /** + * 参数 + */ + params?: any; +} \ No newline at end of file diff --git a/web/src/api/bzrkh/teacherAssessment/index.ts b/web/src/api/bzrkh/teacherAssessment/index.ts new file mode 100644 index 00000000..96a9c3ff --- /dev/null +++ b/web/src/api/bzrkh/teacherAssessment/index.ts @@ -0,0 +1,61 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { TeacherClassVO, TeacherAssessmentPlanVO, TeacherAssessmentPlanQuery, TeacherClassQuery } from './types'; + +/** + * 查询班主任管理的班级列表 + * @param query + * @returns {*} + */ +export const listTeacherClasses = (query?: TeacherClassQuery): AxiosPromise => { + return request({ + url: '/bzrkh/teacherAssessment/classes', + method: 'get', + params: query + }); +}; + +/** + * 查询班主任考核计划列表(按班级) + * @param query + * @returns {*} + */ +export const listTeacherAssessmentPlans = (query?: TeacherAssessmentPlanQuery): AxiosPromise => { + return request({ + url: '/bzrkh/assessmentPlan/list', + method: 'get', + params: query + }); +}; + +/** + * 提交考核 + * @param planId 计划ID + * @param classId 班级ID + */ +export const submitAssessment = (planId: string | number, classId: string | number): AxiosPromise => { + return request({ + url: '/bzrkh/teacherAssessment/submit', + method: 'post', + data: { + planId, + classId + } + }); +}; + +/** + * 查看考核详情 + * @param planId 计划ID + * @param classId 班级ID + */ +export const getAssessmentDetail = (planId: string | number, classId: string | number): AxiosPromise => { + return request({ + url: '/bzrkh/teacherAssessment/detail', + method: 'get', + params: { + planId, + classId + } + }); +}; \ No newline at end of file diff --git a/web/src/api/bzrkh/teacherAssessment/types.ts b/web/src/api/bzrkh/teacherAssessment/types.ts new file mode 100644 index 00000000..fb46e450 --- /dev/null +++ b/web/src/api/bzrkh/teacherAssessment/types.ts @@ -0,0 +1,207 @@ +export interface TeacherClassVO { + /** + * 班级ID + */ + id?: string | number; + + /** + * 班级代码 + */ + classCode?: string; + + /** + * 班级名称 + */ + className?: string; + + /** + * 班主任ID + */ + classTeacherId?: string | number; + + /** + * 班主任姓名 + */ + classTeacherName?: string; + + /** + * 年级 + */ + grade?: string; + + /** + * 学院ID + */ + collegeId?: string | number; + + /** + * 学院名称 + */ + collegeName?: string; + + /** + * 专业ID + */ + majorId?: string | number; + + /** + * 专业名称 + */ + majorName?: string; + + /** + * 班级状态:1-正常,2-暂停,3-毕业,4-解散 + */ + classStatus?: string; + + /** + * 当前学生人数 + */ + currentStudentCount?: number; +} + +export interface TeacherAssessmentPlanVO { + /** + * 主键ID + */ + id?: string | number; + + /** + * 计划名称 + */ + planName?: string; + + /** + * 计划编码 + */ + planCode?: string; + + /** + * 考核方案ID + */ + schemeId?: string | number; + + /** + * 考核方案名称 + */ + schemeName?: string; + + /** + * 学年 + */ + academicYear?: string; + + /** + * 学期(1=上学期 2=下学期) + */ + semester?: string; + + /** + * 计划开始时间 + */ + planStartTime?: string; + + /** + * 计划结束时间 + */ + planEndTime?: string; + + /** + * 数据提取开始时间 + */ + dataExtractStartTime?: string; + + /** + * 数据提取结束时间 + */ + dataExtractEndTime?: string; + + /** + * 计划状态(0=禁用 1=启用) + */ + planStatus?: string; + + /** + * 计划描述 + */ + description?: string; + + /** + * 创建时间 + */ + createTime?: string; + + /** + * 备注 + */ + remark?: string; +} + +export interface TeacherAssessmentPlanQuery { + /** + * 计划名称 + */ + planName?: string; + + /** + * 班级ID + */ + classId?: string | number; + + /** + * 班主任ID + */ + teacherId?: string | number; + + /** + * 学年 + */ + academicYear?: string; + + /** + * 学期(1=上学期 2=下学期) + */ + semester?: string; + + /** + * 计划状态(0=禁用 1=启用) + */ + planStatus?: string; + + /** + * 页码 + */ + pageNum?: number; + + /** + * 每页大小 + */ + pageSize?: number; + + /** + * 排序字段 + */ + orderByColumn?: string; + + /** + * 排序方向 + */ + isAsc?: string; + + /** + * 其他参数 + */ + params?: Record; +} + +export interface TeacherClassQuery { + /** + * 班主任ID + */ + teacherId?: string | number; + + /** + * 班级状态:1-正常,2-暂停,3-毕业,4-解散 + */ + classStatus?: string; +} \ No newline at end of file diff --git a/web/src/views/bzrkh/assessmentIndicator/index.vue b/web/src/views/bzrkh/assessmentIndicator/index.vue new file mode 100644 index 00000000..78a20a65 --- /dev/null +++ b/web/src/views/bzrkh/assessmentIndicator/index.vue @@ -0,0 +1,403 @@ + + + + + \ No newline at end of file diff --git a/web/src/views/bzrkh/assessmentIndicatorType/index.vue b/web/src/views/bzrkh/assessmentIndicatorType/index.vue new file mode 100644 index 00000000..6cde7e32 --- /dev/null +++ b/web/src/views/bzrkh/assessmentIndicatorType/index.vue @@ -0,0 +1,303 @@ + + + + + \ No newline at end of file diff --git a/web/src/views/bzrkh/assessmentPlan/index.vue b/web/src/views/bzrkh/assessmentPlan/index.vue new file mode 100644 index 00000000..4720c6b3 --- /dev/null +++ b/web/src/views/bzrkh/assessmentPlan/index.vue @@ -0,0 +1,535 @@ + + + + + \ No newline at end of file diff --git a/web/src/views/bzrkh/assessmentScheme/IndicatorManagement.vue b/web/src/views/bzrkh/assessmentScheme/IndicatorManagement.vue new file mode 100644 index 00000000..fbb1f3b4 --- /dev/null +++ b/web/src/views/bzrkh/assessmentScheme/IndicatorManagement.vue @@ -0,0 +1,478 @@ + + + + + \ No newline at end of file diff --git a/web/src/views/bzrkh/assessmentScheme/index.vue b/web/src/views/bzrkh/assessmentScheme/index.vue new file mode 100644 index 00000000..099264aa --- /dev/null +++ b/web/src/views/bzrkh/assessmentScheme/index.vue @@ -0,0 +1,516 @@ + + + + + \ No newline at end of file diff --git a/web/src/views/bzrkh/teacherAssessment/index.vue b/web/src/views/bzrkh/teacherAssessment/index.vue new file mode 100644 index 00000000..96011607 --- /dev/null +++ b/web/src/views/bzrkh/teacherAssessment/index.vue @@ -0,0 +1,308 @@ + + + + + \ No newline at end of file