Merge branch 'master' of http://47.99.164.66:3000/hzdyjs-xg/all-project
This commit is contained in:
commit
b7122b6b67
112 files changed
+16924
-39
No files matched your search
@@ -148,6 +148,13 @@
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 班主任考核管理模块 -->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-bzrkh</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 社团管理模块 -->
|
||||
<!-- <dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
<module>ruoyi-rs</module>
|
||||
<module>ruoyi-xljk</module>
|
||||
<module>ruoyi-jcbt</module>
|
||||
<module>ruoyi-bzrkh</module>
|
||||
<module>ruoyi-xskh</module>
|
||||
<!-- <module>ruoyi-stgl</module> -->
|
||||
</modules>
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ruoyi-modules</artifactId>
|
||||
<groupId>org.dromara</groupId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ruoyi-bzrkh</artifactId>
|
||||
<description>
|
||||
班主任考核管理模块
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- 通用工具 -->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-doc</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-mybatis</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-log</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-security</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-excel</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-idempotent</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-tenant</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-social</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-ratelimiter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-mail</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-system</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-job</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 代码生成-->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-generator</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- demo模块 -->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-demo</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 工作流模块 -->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-workflow</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
+115
@@ -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<BmzrAssessmentIndicatorVo> list(BmzrAssessmentIndicatorBo bo, PageQuery pageQuery) {
|
||||
return bmzrAssessmentIndicatorService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班主任考核指标体系树形结构(用于父级选择)
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:assessmentIndicator:list")
|
||||
@GetMapping("/treeselect")
|
||||
public R<List<BmzrAssessmentIndicatorVo>> treeselect(BmzrAssessmentIndicatorBo bo) {
|
||||
List<BmzrAssessmentIndicatorVo> 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<BmzrAssessmentIndicatorVo> list = bmzrAssessmentIndicatorService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "班主任考核指标体系", BmzrAssessmentIndicatorVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任考核指标体系详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:assessmentIndicator:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<BmzrAssessmentIndicatorVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(bmzrAssessmentIndicatorService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
+115
@@ -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<BmzrAssessmentIndicatorTypeVo> list(BmzrAssessmentIndicatorTypeBo bo, PageQuery pageQuery) {
|
||||
return bmzrAssessmentIndicatorTypeService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有班主任考核指标类型列表(包括已逻辑删除的)
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:assessmentIndicatorType:list")
|
||||
@GetMapping("/listAllIncludeDeleted")
|
||||
public R<List<BmzrAssessmentIndicatorTypeVo>> listAllIncludeDeleted(BmzrAssessmentIndicatorTypeBo bo) {
|
||||
List<BmzrAssessmentIndicatorTypeVo> 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<BmzrAssessmentIndicatorTypeVo> list = bmzrAssessmentIndicatorTypeService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "班主任考核指标类型", BmzrAssessmentIndicatorTypeVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任考核指标类型详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:assessmentIndicatorType:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<BmzrAssessmentIndicatorTypeVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(bmzrAssessmentIndicatorTypeService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
+120
@@ -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<BmzrAssessmentPlanVo> 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<BmzrAssessmentPlanVo> list = bmzrAssessmentPlanService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "班主任考核计划", BmzrAssessmentPlanVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任考核计划详细信息
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:assessmentPlan:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<BmzrAssessmentPlanVo> 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<Void> 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<Void> 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<Void> 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<Void> changeStatus(@RequestBody BmzrAssessmentPlanBo bo) {
|
||||
return toAjax(bmzrAssessmentPlanService.updatePlanStatus(bo.getId(), bo.getPlanStatus()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取可用的考核方案选项
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:assessmentPlan:list")
|
||||
@GetMapping("/schemes/options")
|
||||
public R<List<BmzrAssessmentPlanVo>> getAvailableSchemes() {
|
||||
return R.ok(bmzrAssessmentPlanService.getAvailableSchemes());
|
||||
}
|
||||
}
|
||||
+103
@@ -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<BmzrAssessmentSchemeVo> 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<BmzrAssessmentSchemeVo> list = bmzrAssessmentSchemeService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "班主任考核方案", BmzrAssessmentSchemeVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任考核方案详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:assessmentScheme:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<BmzrAssessmentSchemeVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(bmzrAssessmentSchemeService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
+130
@@ -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<BmzrAssessmentSchemeIndicatorVo> list(BmzrAssessmentSchemeIndicatorBo bo, PageQuery pageQuery) {
|
||||
return bmzrAssessmentSchemeIndicatorService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据方案ID查询指标关联列表(无分页)
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:assessmentSchemeIndicator:list")
|
||||
@GetMapping("/listBySchemeId/{schemeId}")
|
||||
public R<List<BmzrAssessmentSchemeIndicatorVo>> listBySchemeId(@PathVariable Long schemeId) {
|
||||
List<BmzrAssessmentSchemeIndicatorVo> 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<BmzrAssessmentSchemeIndicatorVo> list = bmzrAssessmentSchemeIndicatorService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "班主任考核方案指标关联", BmzrAssessmentSchemeIndicatorVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任考核方案指标关联详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:assessmentSchemeIndicator:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<BmzrAssessmentSchemeIndicatorVo> 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<Void> 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<Void> 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<Void> 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<Void> batchSave(@PathVariable Long schemeId,
|
||||
@RequestBody List<BmzrAssessmentSchemeIndicatorBo> indicatorList) {
|
||||
return toAjax(bmzrAssessmentSchemeIndicatorService.batchSaveSchemeIndicators(schemeId, indicatorList));
|
||||
}
|
||||
}
|
||||
+146
@@ -0,0 +1,146 @@
|
||||
package org.dromara.bzrkh.controller;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
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.vo.AssessmentDetailVo;
|
||||
import org.dromara.bzrkh.domain.bo.TeacherAssessmentQueryBo;
|
||||
import org.dromara.bzrkh.domain.bo.AssessmentSubmitBo;
|
||||
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<List<TeacherClassVo>> getTeacherClasses(@RequestParam(required = false) Long teacherId) {
|
||||
// 如果没有传入teacherId,则使用当前登录用户ID
|
||||
Long currentTeacherId = teacherId != null ? teacherId : LoginHelper.getUserId();
|
||||
List<TeacherClassVo> list = teacherAssessmentService.queryTeacherClassList(currentTeacherId);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班主任考核计划列表
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:teacherAssessment:list")
|
||||
@GetMapping("/plans")
|
||||
public TableDataInfo<BmzrAssessmentPlanVo> 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<Void> 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<Object> getAssessmentDetail(@RequestParam Long planId, @RequestParam Long classId) {
|
||||
Long teacherId = LoginHelper.getUserId();
|
||||
Object detail = teacherAssessmentService.getAssessmentDetail(planId, classId, teacherId);
|
||||
return R.ok(detail);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取考核提交详情数据
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:teacherAssessment:detail")
|
||||
@GetMapping("/submitDetail")
|
||||
public R<AssessmentDetailVo> getAssessmentSubmitDetail(@RequestParam Long planId, @RequestParam Long classId) {
|
||||
Long teacherId = LoginHelper.getUserId();
|
||||
AssessmentDetailVo detail = teacherAssessmentService.getAssessmentSubmitDetail(planId, classId, teacherId);
|
||||
return R.ok(detail);
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交考核评分数据
|
||||
*/
|
||||
@SaCheckPermission("bzrkh:teacherAssessment:submit")
|
||||
@Log(title = "班主任考核管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/submitScore")
|
||||
public R<Void> submitAssessmentScore(@RequestBody AssessmentSubmitBo bo) {
|
||||
Long teacherId = LoginHelper.getUserId();
|
||||
boolean result = teacherAssessmentService.submitAssessmentScore(bo, teacherId);
|
||||
return toAjax(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试人数系数计算(临时调试接口)
|
||||
* 用于验证特定人数的系数计算是否正确
|
||||
*/
|
||||
@GetMapping("/testCoefficient")
|
||||
public R<Object> testStudentCountCoefficient(@RequestParam int studentCount) {
|
||||
BigDecimal coefficient = teacherAssessmentService.testStudentCountCoefficient(studentCount);
|
||||
return R.ok("学生人数: " + studentCount + ", 计算系数: " + coefficient);
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交考核请求对象
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
+91
@@ -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;
|
||||
|
||||
}
|
||||
+56
@@ -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;
|
||||
|
||||
}
|
||||
+95
@@ -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;
|
||||
}
|
||||
+82
@@ -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;
|
||||
}
|
||||
+71
@@ -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;
|
||||
}
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
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.math.BigDecimal;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 班主任考核得分对象 bmzr_assessment_score
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("bmzr_assessment_score")
|
||||
public class BmzrAssessmentScore extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核计划ID
|
||||
*/
|
||||
private Long planId;
|
||||
|
||||
/**
|
||||
* 考核方案ID
|
||||
*/
|
||||
private Long schemeId;
|
||||
|
||||
/**
|
||||
* 考核指标ID
|
||||
*/
|
||||
private Long indicatorId;
|
||||
|
||||
/**
|
||||
* 被评价用户ID
|
||||
*/
|
||||
private Long evaluatedUserId;
|
||||
|
||||
/**
|
||||
* 被评价用户姓名
|
||||
*/
|
||||
private String evaluatedUserName;
|
||||
|
||||
/**
|
||||
* 被评价用户部门ID
|
||||
*/
|
||||
private Long evaluatedDeptId;
|
||||
|
||||
/**
|
||||
* 自评分数
|
||||
*/
|
||||
private BigDecimal selfScore;
|
||||
|
||||
/**
|
||||
* 自评意见
|
||||
*/
|
||||
private String selfComment;
|
||||
|
||||
/**
|
||||
* 自评提交时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date selfSubmitTime;
|
||||
|
||||
/**
|
||||
* 上级评分数
|
||||
*/
|
||||
private BigDecimal superiorScore;
|
||||
|
||||
/**
|
||||
* 上级评意见
|
||||
*/
|
||||
private String superiorComment;
|
||||
|
||||
/**
|
||||
* 上级评价人ID
|
||||
*/
|
||||
private Long superiorEvaluatorId;
|
||||
|
||||
/**
|
||||
* 上级评提交时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date superiorSubmitTime;
|
||||
|
||||
/**
|
||||
* 评价等级 dict_type = bmzr_evaluation_level
|
||||
*/
|
||||
private String evaluationLevel;
|
||||
|
||||
/**
|
||||
* 审核状态(0=待审核 1=审核通过 2=审核不通过)
|
||||
*/
|
||||
private String auditStatus;
|
||||
|
||||
/**
|
||||
* 最终得分
|
||||
*/
|
||||
private BigDecimal finalScore;
|
||||
|
||||
/**
|
||||
* 提交时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date submitTime;
|
||||
|
||||
/**
|
||||
* 班级ID
|
||||
*/
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 自我总体评价
|
||||
*/
|
||||
private String selfOverallComment;
|
||||
|
||||
/**
|
||||
* 上级总体评价
|
||||
*/
|
||||
private String superiorOverallComment;
|
||||
|
||||
}
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
package org.dromara.bzrkh.domain.bo;
|
||||
|
||||
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.vo.AssessmentIndicatorScoreVo;
|
||||
import org.dromara.bzrkh.domain.vo.SpecialWorkIndicatorVo;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 考核提交业务对象
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class AssessmentSubmitBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 考核计划ID
|
||||
*/
|
||||
@NotNull(message = "考核计划ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long planId;
|
||||
|
||||
/**
|
||||
* 班级ID
|
||||
*/
|
||||
@NotNull(message = "班级ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 班主任常规工作指标评分
|
||||
*/
|
||||
private List<AssessmentIndicatorScoreVo> routineWorkScores;
|
||||
|
||||
/**
|
||||
* 班级扣分
|
||||
*/
|
||||
private BigDecimal classDeduction;
|
||||
|
||||
/**
|
||||
* 班级扣分意见
|
||||
*/
|
||||
private String classDeductionComment;
|
||||
|
||||
/**
|
||||
* 特色工作指标评分
|
||||
*/
|
||||
private List<SpecialWorkIndicatorVo> specialWorkScores;
|
||||
|
||||
/**
|
||||
* 总体评价
|
||||
*/
|
||||
private String overallComment;
|
||||
}
|
||||
+106
@@ -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;
|
||||
|
||||
}
|
||||
+59
@@ -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;
|
||||
|
||||
}
|
||||
+109
@@ -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;
|
||||
}
|
||||
+89
@@ -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;
|
||||
}
|
||||
+77
@@ -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;
|
||||
}
|
||||
+46
@@ -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;
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
package org.dromara.bzrkh.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 考核详情视图对象
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Data
|
||||
public class AssessmentDetailVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 班级详细信息
|
||||
*/
|
||||
private ClassDetailVo classDetail;
|
||||
|
||||
/**
|
||||
* 系数信息
|
||||
*/
|
||||
private CoefficientVo coefficient;
|
||||
|
||||
/**
|
||||
* 班主任常规工作指标列表
|
||||
*/
|
||||
private List<AssessmentIndicatorScoreVo> routineWorkIndicators;
|
||||
|
||||
/**
|
||||
* 班级扣分指标
|
||||
*/
|
||||
private AssessmentIndicatorScoreVo classDeductionIndicator;
|
||||
|
||||
/**
|
||||
* 特色工作指标列表
|
||||
*/
|
||||
private List<SpecialWorkIndicatorVo> specialWorkIndicators;
|
||||
|
||||
/**
|
||||
* 月考核得分
|
||||
*/
|
||||
private BigDecimal monthlyScore;
|
||||
|
||||
/**
|
||||
* 总体评价
|
||||
*/
|
||||
private String overallComment;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package org.dromara.bzrkh.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 考核指标评分视图对象
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Data
|
||||
public class AssessmentIndicatorScoreVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 指标ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 指标名称
|
||||
*/
|
||||
private String indicatorName;
|
||||
|
||||
/**
|
||||
* 指标编码
|
||||
*/
|
||||
private String indicatorCode;
|
||||
|
||||
/**
|
||||
* 指标描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 指标分值
|
||||
*/
|
||||
private BigDecimal score;
|
||||
|
||||
/**
|
||||
* 自评分数
|
||||
*/
|
||||
private BigDecimal selfScore;
|
||||
|
||||
/**
|
||||
* 自评意见
|
||||
*/
|
||||
private String selfComment;
|
||||
|
||||
/**
|
||||
* 自我总体评价
|
||||
*/
|
||||
private String selfOverallComment;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
}
|
||||
+90
@@ -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;
|
||||
|
||||
}
|
||||
+157
@@ -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<BmzrAssessmentIndicatorVo> children;
|
||||
|
||||
}
|
||||
+153
@@ -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;
|
||||
}
|
||||
+126
@@ -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;
|
||||
}
|
||||
+131
@@ -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;
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
package org.dromara.bzrkh.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 班级详细信息视图对象
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Data
|
||||
public class ClassDetailVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 班级ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 班级层次:1-中级工 2-高级工 3-预备技师 4-技师 5-中高职一体
|
||||
*/
|
||||
private String classType;
|
||||
|
||||
/**
|
||||
* 班级总人数
|
||||
*/
|
||||
private Integer totalStudentCount;
|
||||
|
||||
/**
|
||||
* 住校生人数
|
||||
*/
|
||||
private Integer boardingStudentCount;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package org.dromara.bzrkh.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 系数信息视图对象
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Data
|
||||
public class CoefficientVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 人数系数(K2)
|
||||
*/
|
||||
private BigDecimal studentCountCoefficient;
|
||||
|
||||
/**
|
||||
* 住校生系数(K3)
|
||||
*/
|
||||
private BigDecimal boardingCoefficient;
|
||||
|
||||
/**
|
||||
* 层次系数(K1)
|
||||
*/
|
||||
private BigDecimal levelCoefficient;
|
||||
|
||||
/**
|
||||
* 总系数(K = K1 * (K2 + K3))
|
||||
*/
|
||||
private BigDecimal totalCoefficient;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package org.dromara.bzrkh.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 特色工作指标视图对象
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Data
|
||||
public class SpecialWorkIndicatorVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 指标编码
|
||||
*/
|
||||
private String indicatorCode;
|
||||
|
||||
/**
|
||||
* 指标名称
|
||||
*/
|
||||
private String indicatorName;
|
||||
|
||||
/**
|
||||
* 分值
|
||||
*/
|
||||
private BigDecimal score;
|
||||
|
||||
/**
|
||||
* 自评意见
|
||||
*/
|
||||
private String selfComment;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
}
|
||||
+117
@@ -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;
|
||||
}
|
||||
+15
@@ -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<BmzrAssessmentIndicator, BmzrAssessmentIndicatorVo> {
|
||||
|
||||
}
|
||||
+15
@@ -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<BmzrAssessmentIndicatorType, BmzrAssessmentIndicatorTypeVo> {
|
||||
|
||||
}
|
||||
+30
@@ -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<BmzrAssessmentPlan, BmzrAssessmentPlanVo> {
|
||||
|
||||
/**
|
||||
* 查询班主任考核计划列表(包含方案名称)
|
||||
*/
|
||||
List<BmzrAssessmentPlanVo> selectAssessmentPlanListWithScheme(BmzrAssessmentPlanBo bo);
|
||||
|
||||
/**
|
||||
* 分页查询班主任考核计划列表(包含方案名称)
|
||||
*/
|
||||
IPage<BmzrAssessmentPlanVo> selectAssessmentPlanPageWithScheme(Page<BmzrAssessmentPlanVo> page, BmzrAssessmentPlanBo bo);
|
||||
|
||||
}
|
||||
+27
@@ -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<BmzrAssessmentSchemeIndicator, BmzrAssessmentSchemeIndicatorVo> {
|
||||
|
||||
/**
|
||||
* 查询班主任考核方案指标关联列表(使用自定义SQL,包含score字段映射)
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 班主任考核方案指标关联列表
|
||||
*/
|
||||
List<BmzrAssessmentSchemeIndicatorVo> queryList(@Param("bo") BmzrAssessmentSchemeIndicatorBo bo);
|
||||
|
||||
}
|
||||
+15
@@ -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<BmzrAssessmentScheme, BmzrAssessmentSchemeVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.bzrkh.mapper;
|
||||
|
||||
import org.dromara.bzrkh.domain.BmzrAssessmentScore;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 班主任考核得分Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
public interface BmzrAssessmentScoreMapper extends BaseMapperPlus<BmzrAssessmentScore, BmzrAssessmentScore> {
|
||||
|
||||
}
|
||||
+116
@@ -0,0 +1,116 @@
|
||||
package org.dromara.bzrkh.mapper;
|
||||
|
||||
import org.dromara.bzrkh.domain.vo.TeacherClassVo;
|
||||
import org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo;
|
||||
import org.dromara.bzrkh.domain.vo.ClassDetailVo;
|
||||
import org.dromara.bzrkh.domain.vo.AssessmentIndicatorScoreVo;
|
||||
import org.dromara.bzrkh.domain.vo.SpecialWorkIndicatorVo;
|
||||
import org.dromara.bzrkh.domain.bo.TeacherAssessmentQueryBo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 班主任考核管理Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
public interface TeacherAssessmentMapper extends BaseMapperPlus<Object, Object> {
|
||||
|
||||
/**
|
||||
* 查询班主任管理的班级列表
|
||||
*
|
||||
* @param teacherId 班主任ID
|
||||
* @return 班级列表
|
||||
*/
|
||||
List<TeacherClassVo> selectTeacherClassList(@Param("teacherId") Long teacherId);
|
||||
|
||||
/**
|
||||
* 查询班主任考核计划列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 考核计划列表
|
||||
*/
|
||||
List<BmzrAssessmentPlanVo> selectTeacherAssessmentPlanList(TeacherAssessmentQueryBo bo);
|
||||
|
||||
/**
|
||||
* 查询班级详细信息
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @return 班级详细信息
|
||||
*/
|
||||
ClassDetailVo selectClassDetail(@Param("classId") Long classId);
|
||||
|
||||
/**
|
||||
* 查询班主任常规工作指标列表
|
||||
*
|
||||
* @param planId 计划ID
|
||||
* @return 指标列表
|
||||
*/
|
||||
List<AssessmentIndicatorScoreVo> selectRoutineWorkIndicators(@Param("planId") Long planId);
|
||||
|
||||
/**
|
||||
* 查询班级扣分指标
|
||||
*
|
||||
* @return 班级扣分指标
|
||||
*/
|
||||
AssessmentIndicatorScoreVo selectClassDeductionIndicator();
|
||||
|
||||
/**
|
||||
* 查询特色工作指标列表
|
||||
*
|
||||
* @return 特色工作指标列表
|
||||
*/
|
||||
List<SpecialWorkIndicatorVo> selectSpecialWorkIndicators();
|
||||
|
||||
/**
|
||||
* 查询已保存的评分数据
|
||||
*
|
||||
* @param planId 计划ID
|
||||
* @param teacherId 班主任ID
|
||||
* @return 评分数据列表
|
||||
*/
|
||||
List<AssessmentIndicatorScoreVo> selectSavedAssessmentScores(@Param("planId") Long planId, @Param("teacherId") Long teacherId);
|
||||
|
||||
/**
|
||||
* 根据计划ID查询方案ID
|
||||
*
|
||||
* @param planId 计划ID
|
||||
* @return 方案ID
|
||||
*/
|
||||
Long selectSchemeIdByPlanId(@Param("planId") Long planId);
|
||||
|
||||
/**
|
||||
* 根据指标编码查询指标ID
|
||||
*
|
||||
* @param indicatorCode 指标编码
|
||||
* @return 指标ID
|
||||
*/
|
||||
Long selectIndicatorIdByCode(@Param("indicatorCode") String indicatorCode);
|
||||
|
||||
/**
|
||||
* 逻辑删除指定计划和教师的评分数据
|
||||
*
|
||||
* @param planId 计划ID
|
||||
* @param teacherId 教师ID
|
||||
*/
|
||||
void deleteAssessmentScoresByPlanAndTeacher(@Param("planId") Long planId, @Param("teacherId") Long teacherId);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 更新评分数据的备注
|
||||
*
|
||||
* @param planId 计划ID
|
||||
* @param indicatorId 指标ID
|
||||
* @param teacherId 教师ID
|
||||
* @param remark 备注
|
||||
*/
|
||||
void updateAssessmentScoreRemark(@Param("planId") Long planId,
|
||||
@Param("indicatorId") Long indicatorId,
|
||||
@Param("teacherId") Long teacherId,
|
||||
@Param("remark") String remark);
|
||||
}
|
||||
+53
@@ -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<BmzrAssessmentIndicatorVo> queryPageList(BmzrAssessmentIndicatorBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询班主任考核指标体系列表
|
||||
*/
|
||||
List<BmzrAssessmentIndicatorVo> queryList(BmzrAssessmentIndicatorBo bo);
|
||||
|
||||
/**
|
||||
* 查询班主任考核指标体系树形列表
|
||||
*/
|
||||
List<BmzrAssessmentIndicatorVo> queryTreeList(BmzrAssessmentIndicatorBo bo);
|
||||
|
||||
/**
|
||||
* 新增班主任考核指标体系
|
||||
*/
|
||||
Boolean insertByBo(BmzrAssessmentIndicatorBo bo);
|
||||
|
||||
/**
|
||||
* 修改班主任考核指标体系
|
||||
*/
|
||||
Boolean updateByBo(BmzrAssessmentIndicatorBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除班主任考核指标体系信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
+76
@@ -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<BmzrAssessmentIndicatorTypeVo> queryPageList(BmzrAssessmentIndicatorTypeBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的班主任考核指标类型列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 班主任考核指标类型列表
|
||||
*/
|
||||
List<BmzrAssessmentIndicatorTypeVo> queryList(BmzrAssessmentIndicatorTypeBo bo);
|
||||
|
||||
/**
|
||||
* 查询所有班主任考核指标类型列表,包括已逻辑删除的
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 包含已删除记录的班主任考核指标类型列表
|
||||
*/
|
||||
List<BmzrAssessmentIndicatorTypeVo> 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<Long> ids, Boolean isValid);
|
||||
}
|
||||
+58
@@ -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<BmzrAssessmentPlanVo> queryPageList(BmzrAssessmentPlanBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询班主任考核计划列表
|
||||
*/
|
||||
List<BmzrAssessmentPlanVo> queryList(BmzrAssessmentPlanBo bo);
|
||||
|
||||
/**
|
||||
* 新增班主任考核计划
|
||||
*/
|
||||
Boolean insertByBo(BmzrAssessmentPlanBo bo);
|
||||
|
||||
/**
|
||||
* 修改班主任考核计划
|
||||
*/
|
||||
Boolean updateByBo(BmzrAssessmentPlanBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除班主任考核计划信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 修改考核计划状态
|
||||
*/
|
||||
Boolean updatePlanStatus(Long id, String planStatus);
|
||||
|
||||
/**
|
||||
* 获取可用的考核方案选项
|
||||
*/
|
||||
List<BmzrAssessmentPlanVo> getAvailableSchemes();
|
||||
}
|
||||
+85
@@ -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<BmzrAssessmentSchemeIndicatorVo> queryList(BmzrAssessmentSchemeIndicatorBo bo);
|
||||
|
||||
/**
|
||||
* 分页查询班主任考核方案指标关联列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 班主任考核方案指标关联分页列表
|
||||
*/
|
||||
TableDataInfo<BmzrAssessmentSchemeIndicatorVo> 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<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据方案ID查询指标关联列表
|
||||
*
|
||||
* @param schemeId 方案ID
|
||||
* @return 指标关联列表
|
||||
*/
|
||||
List<BmzrAssessmentSchemeIndicatorVo> queryBySchemeId(Long schemeId);
|
||||
|
||||
/**
|
||||
* 批量保存方案指标关联
|
||||
*
|
||||
* @param schemeId 方案ID
|
||||
* @param indicatorList 指标列表
|
||||
* @return 保存结果
|
||||
*/
|
||||
Boolean batchSaveSchemeIndicators(Long schemeId, List<BmzrAssessmentSchemeIndicatorBo> indicatorList);
|
||||
}
|
||||
+48
@@ -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<BmzrAssessmentSchemeVo> queryPageList(BmzrAssessmentSchemeBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询班主任考核方案列表
|
||||
*/
|
||||
List<BmzrAssessmentSchemeVo> queryList(BmzrAssessmentSchemeBo bo);
|
||||
|
||||
/**
|
||||
* 新增班主任考核方案
|
||||
*/
|
||||
Boolean insertByBo(BmzrAssessmentSchemeBo bo);
|
||||
|
||||
/**
|
||||
* 修改班主任考核方案
|
||||
*/
|
||||
Boolean updateByBo(BmzrAssessmentSchemeBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除班主任考核方案信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package org.dromara.bzrkh.service;
|
||||
|
||||
import org.dromara.bzrkh.domain.vo.TeacherClassVo;
|
||||
import org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo;
|
||||
import org.dromara.bzrkh.domain.vo.AssessmentDetailVo;
|
||||
import org.dromara.bzrkh.domain.bo.TeacherAssessmentQueryBo;
|
||||
import org.dromara.bzrkh.domain.bo.AssessmentSubmitBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 班主任考核管理Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
public interface ITeacherAssessmentService {
|
||||
|
||||
/**
|
||||
* 查询班主任管理的班级列表
|
||||
*
|
||||
* @param teacherId 班主任ID
|
||||
* @return 班级列表
|
||||
*/
|
||||
List<TeacherClassVo> queryTeacherClassList(Long teacherId);
|
||||
|
||||
/**
|
||||
* 查询班主任考核计划列表(分页)
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 考核计划列表
|
||||
*/
|
||||
TableDataInfo<BmzrAssessmentPlanVo> 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);
|
||||
|
||||
/**
|
||||
* 获取考核提交详情数据
|
||||
*
|
||||
* @param planId 计划ID
|
||||
* @param classId 班级ID
|
||||
* @param teacherId 班主任ID
|
||||
* @return 考核提交详情
|
||||
*/
|
||||
AssessmentDetailVo getAssessmentSubmitDetail(Long planId, Long classId, Long teacherId);
|
||||
|
||||
/**
|
||||
* 提交考核评分数据
|
||||
*
|
||||
* @param bo 考核提交数据
|
||||
* @param teacherId 班主任ID
|
||||
* @return 是否成功
|
||||
*/
|
||||
boolean submitAssessmentScore(AssessmentSubmitBo bo, Long teacherId);
|
||||
|
||||
/**
|
||||
* 测试人数系数计算(临时调试方法)
|
||||
* 用于验证特定人数的系数计算是否正确
|
||||
*
|
||||
* @param studentCount 学生人数
|
||||
* @return 计算出的系数
|
||||
*/
|
||||
BigDecimal testStudentCountCoefficient(int studentCount);
|
||||
}
|
||||
+180
@@ -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<BmzrAssessmentIndicatorVo> queryPageList(BmzrAssessmentIndicatorBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<BmzrAssessmentIndicator> lqw = buildQueryWrapper(bo);
|
||||
Page<BmzrAssessmentIndicatorVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班主任考核指标体系列表
|
||||
*/
|
||||
@Override
|
||||
public List<BmzrAssessmentIndicatorVo> queryList(BmzrAssessmentIndicatorBo bo) {
|
||||
LambdaQueryWrapper<BmzrAssessmentIndicator> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班主任考核指标体系树形列表
|
||||
*/
|
||||
@Override
|
||||
public List<BmzrAssessmentIndicatorVo> queryTreeList(BmzrAssessmentIndicatorBo bo) {
|
||||
LambdaQueryWrapper<BmzrAssessmentIndicator> lqw = buildQueryWrapper(bo);
|
||||
lqw.orderByAsc(BmzrAssessmentIndicator::getSortOrder);
|
||||
List<BmzrAssessmentIndicatorVo> list = baseMapper.selectVoList(lqw);
|
||||
return buildTree(list);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<BmzrAssessmentIndicator> buildQueryWrapper(BmzrAssessmentIndicatorBo bo) {
|
||||
LambdaQueryWrapper<BmzrAssessmentIndicator> 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<BmzrAssessmentIndicatorVo> buildTree(List<BmzrAssessmentIndicatorVo> list) {
|
||||
List<BmzrAssessmentIndicatorVo> tree = new ArrayList<>();
|
||||
List<Long> 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<BmzrAssessmentIndicatorVo> list, BmzrAssessmentIndicatorVo vo) {
|
||||
// 得到子节点列表
|
||||
List<BmzrAssessmentIndicatorVo> childList = getChildList(list, vo);
|
||||
vo.setChildren(childList);
|
||||
for (BmzrAssessmentIndicatorVo tChild : childList) {
|
||||
if (hasChild(list, tChild)) {
|
||||
recursionFn(list, tChild);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 得到子节点列表
|
||||
*/
|
||||
private List<BmzrAssessmentIndicatorVo> getChildList(List<BmzrAssessmentIndicatorVo> list, BmzrAssessmentIndicatorVo vo) {
|
||||
List<BmzrAssessmentIndicatorVo> 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<BmzrAssessmentIndicatorVo> 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<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
+168
@@ -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<BmzrAssessmentIndicatorTypeVo> queryPageList(BmzrAssessmentIndicatorTypeBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<BmzrAssessmentIndicatorType> lqw = buildQueryWrapper(bo);
|
||||
Page<BmzrAssessmentIndicatorTypeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的班主任考核指标类型列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 班主任考核指标类型列表
|
||||
*/
|
||||
@Override
|
||||
public List<BmzrAssessmentIndicatorTypeVo> queryList(BmzrAssessmentIndicatorTypeBo bo) {
|
||||
LambdaQueryWrapper<BmzrAssessmentIndicatorType> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有班主任考核指标类型列表,包括已逻辑删除的
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 包含已删除记录的班主任考核指标类型列表
|
||||
*/
|
||||
@Override
|
||||
public List<BmzrAssessmentIndicatorTypeVo> queryListWithDeleted(BmzrAssessmentIndicatorTypeBo bo) {
|
||||
LambdaQueryWrapper<BmzrAssessmentIndicatorType> lqw = buildQueryWrapperWithDeleted(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<BmzrAssessmentIndicatorType> buildQueryWrapper(BmzrAssessmentIndicatorTypeBo bo) {
|
||||
LambdaQueryWrapper<BmzrAssessmentIndicatorType> 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<BmzrAssessmentIndicatorType> buildQueryWrapperWithDeleted(BmzrAssessmentIndicatorTypeBo bo) {
|
||||
LambdaQueryWrapper<BmzrAssessmentIndicatorType> 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<BmzrAssessmentIndicatorType> 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<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
+147
@@ -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<BmzrAssessmentPlanVo> queryPageList(BmzrAssessmentPlanBo bo, PageQuery pageQuery) {
|
||||
IPage<BmzrAssessmentPlanVo> page = baseMapper.selectAssessmentPlanPageWithScheme(pageQuery.build(), bo);
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班主任考核计划列表
|
||||
*/
|
||||
@Override
|
||||
public List<BmzrAssessmentPlanVo> queryList(BmzrAssessmentPlanBo bo) {
|
||||
return baseMapper.selectAssessmentPlanListWithScheme(bo);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<BmzrAssessmentPlan> buildQueryWrapper(BmzrAssessmentPlanBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<BmzrAssessmentPlan> 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<BmzrAssessmentPlan> 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<Long> 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<BmzrAssessmentPlanVo> getAvailableSchemes() {
|
||||
// 这里应该查询考核方案表,暂时返回空列表
|
||||
// 需要根据实际的考核方案表来实现
|
||||
return List.of();
|
||||
}
|
||||
}
|
||||
+187
@@ -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<BmzrAssessmentSchemeIndicatorVo> queryList(BmzrAssessmentSchemeIndicatorBo bo) {
|
||||
// 使用自定义SQL查询,确保score字段正确映射
|
||||
return baseMapper.queryList(bo);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<BmzrAssessmentSchemeIndicator> buildQueryWrapper(BmzrAssessmentSchemeIndicatorBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<BmzrAssessmentSchemeIndicator> 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<BmzrAssessmentSchemeIndicatorVo> queryPageList(BmzrAssessmentSchemeIndicatorBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<BmzrAssessmentSchemeIndicator> lqw = buildQueryWrapper(bo);
|
||||
Page<BmzrAssessmentSchemeIndicatorVo> 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<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据方案ID查询指标关联列表
|
||||
*
|
||||
* @param schemeId 方案ID
|
||||
* @return 指标关联列表
|
||||
*/
|
||||
@Override
|
||||
public List<BmzrAssessmentSchemeIndicatorVo> 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<BmzrAssessmentSchemeIndicatorBo> indicatorList) {
|
||||
// 先删除原有关联
|
||||
LambdaQueryWrapper<BmzrAssessmentSchemeIndicator> 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;
|
||||
}
|
||||
}
|
||||
+141
@@ -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<BmzrAssessmentSchemeVo> queryPageList(BmzrAssessmentSchemeBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<BmzrAssessmentScheme> lqw = buildQueryWrapper(bo);
|
||||
Page<BmzrAssessmentSchemeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班主任考核方案列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 班主任考核方案列表
|
||||
*/
|
||||
@Override
|
||||
public List<BmzrAssessmentSchemeVo> queryList(BmzrAssessmentSchemeBo bo) {
|
||||
LambdaQueryWrapper<BmzrAssessmentScheme> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<BmzrAssessmentScheme> buildQueryWrapper(BmzrAssessmentSchemeBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<BmzrAssessmentScheme> 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<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
+469
@@ -0,0 +1,469 @@
|
||||
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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.bzrkh.domain.vo.TeacherClassVo;
|
||||
import org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo;
|
||||
import org.dromara.bzrkh.domain.vo.AssessmentDetailVo;
|
||||
import org.dromara.bzrkh.domain.vo.ClassDetailVo;
|
||||
import org.dromara.bzrkh.domain.vo.CoefficientVo;
|
||||
import org.dromara.bzrkh.domain.vo.AssessmentIndicatorScoreVo;
|
||||
import org.dromara.bzrkh.domain.vo.SpecialWorkIndicatorVo;
|
||||
import org.dromara.bzrkh.domain.bo.TeacherAssessmentQueryBo;
|
||||
import org.dromara.bzrkh.domain.bo.AssessmentSubmitBo;
|
||||
import org.dromara.bzrkh.mapper.TeacherAssessmentMapper;
|
||||
import org.dromara.bzrkh.mapper.BmzrAssessmentScoreMapper;
|
||||
import org.dromara.bzrkh.service.ITeacherAssessmentService;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.bzrkh.domain.BmzrAssessmentScore;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 班主任考核管理Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class TeacherAssessmentServiceImpl implements ITeacherAssessmentService {
|
||||
|
||||
private final TeacherAssessmentMapper teacherAssessmentMapper;
|
||||
private final BmzrAssessmentScoreMapper assessmentScoreMapper;
|
||||
|
||||
/**
|
||||
* 查询班主任管理的班级列表
|
||||
*
|
||||
* @param teacherId 班主任ID
|
||||
* @return 班级列表
|
||||
*/
|
||||
@Override
|
||||
public List<TeacherClassVo> queryTeacherClassList(Long teacherId) {
|
||||
return teacherAssessmentMapper.selectTeacherClassList(teacherId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班主任考核计划列表(分页)
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 考核计划列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<BmzrAssessmentPlanVo> queryTeacherAssessmentPlanPageList(TeacherAssessmentQueryBo bo, PageQuery pageQuery) {
|
||||
Page<BmzrAssessmentPlanVo> page = pageQuery.build();
|
||||
List<BmzrAssessmentPlanVo> 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<BmzrAssessmentPlanVo> 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取考核提交详情数据
|
||||
*
|
||||
* @param planId 计划ID
|
||||
* @param classId 班级ID
|
||||
* @param teacherId 班主任ID
|
||||
* @return 考核提交详情
|
||||
*/
|
||||
@Override
|
||||
public AssessmentDetailVo getAssessmentSubmitDetail(Long planId, Long classId, Long teacherId) {
|
||||
AssessmentDetailVo detailVo = new AssessmentDetailVo();
|
||||
|
||||
// 1. 获取班级详细信息
|
||||
ClassDetailVo classDetail = teacherAssessmentMapper.selectClassDetail(classId);
|
||||
detailVo.setClassDetail(classDetail);
|
||||
|
||||
// 2. 计算系数信息
|
||||
CoefficientVo coefficient = calculateCoefficient(classDetail);
|
||||
detailVo.setCoefficient(coefficient);
|
||||
|
||||
// 3. 获取班主任常规工作指标
|
||||
List<AssessmentIndicatorScoreVo> routineWorkIndicators = teacherAssessmentMapper.selectRoutineWorkIndicators(planId);
|
||||
detailVo.setRoutineWorkIndicators(routineWorkIndicators);
|
||||
|
||||
// 4. 获取班级扣分指标
|
||||
AssessmentIndicatorScoreVo classDeductionIndicator = teacherAssessmentMapper.selectClassDeductionIndicator();
|
||||
detailVo.setClassDeductionIndicator(classDeductionIndicator);
|
||||
|
||||
// 5. 获取特色工作指标
|
||||
List<SpecialWorkIndicatorVo> specialWorkIndicators = teacherAssessmentMapper.selectSpecialWorkIndicators();
|
||||
detailVo.setSpecialWorkIndicators(specialWorkIndicators);
|
||||
|
||||
// 6. 获取已保存的评分数据(如果有)
|
||||
List<AssessmentIndicatorScoreVo> savedScores = teacherAssessmentMapper.selectSavedAssessmentScores(planId, teacherId);
|
||||
if (savedScores != null && !savedScores.isEmpty()) {
|
||||
// 将已保存的评分数据合并到指标中
|
||||
mergeAssessmentScores(detailVo, savedScores);
|
||||
|
||||
// 获取总体评价(从任意一条记录中获取,因为都是同样的总体评价)
|
||||
savedScores.stream()
|
||||
.findFirst()
|
||||
.ifPresent(saved -> detailVo.setOverallComment(saved.getSelfOverallComment()));
|
||||
}
|
||||
|
||||
return detailVo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交考核评分数据
|
||||
*
|
||||
* @param bo 考核提交数据
|
||||
* @param teacherId 班主任ID
|
||||
* @return 是否成功
|
||||
*/
|
||||
@Override
|
||||
public boolean submitAssessmentScore(AssessmentSubmitBo bo, Long teacherId) {
|
||||
try {
|
||||
// 1. 先逻辑删除该计划下该教师的历史评分数据
|
||||
teacherAssessmentMapper.deleteAssessmentScoresByPlanAndTeacher(bo.getPlanId(), teacherId);
|
||||
|
||||
Long schemeId = teacherAssessmentMapper.selectSchemeIdByPlanId(bo.getPlanId());
|
||||
String currentUserName = LoginHelper.getUsername();
|
||||
Long currentDeptId = LoginHelper.getDeptId();
|
||||
Date now = new Date();
|
||||
|
||||
// 2. 插入班主任常规工作指标评分
|
||||
if (bo.getRoutineWorkScores() != null && !bo.getRoutineWorkScores().isEmpty()) {
|
||||
for (AssessmentIndicatorScoreVo score : bo.getRoutineWorkScores()) {
|
||||
BmzrAssessmentScore assessmentScore = new BmzrAssessmentScore();
|
||||
assessmentScore.setPlanId(bo.getPlanId());
|
||||
assessmentScore.setSchemeId(schemeId);
|
||||
assessmentScore.setIndicatorId(score.getId());
|
||||
assessmentScore.setEvaluatedUserId(teacherId);
|
||||
assessmentScore.setEvaluatedUserName(currentUserName);
|
||||
assessmentScore.setEvaluatedDeptId(currentDeptId);
|
||||
assessmentScore.setSelfScore(score.getSelfScore());
|
||||
assessmentScore.setSelfComment(score.getSelfComment());
|
||||
assessmentScore.setSelfSubmitTime(now);
|
||||
assessmentScore.setSubmitTime(now);
|
||||
assessmentScore.setAuditStatus("0");
|
||||
// 设置班级ID和自我总体评价
|
||||
assessmentScore.setClassId(bo.getClassId());
|
||||
assessmentScore.setSelfOverallComment(bo.getOverallComment());
|
||||
|
||||
assessmentScoreMapper.insert(assessmentScore);
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 插入班级扣分指标评分
|
||||
Long classDeductionIndicatorId = teacherAssessmentMapper.selectIndicatorIdByCode("bzrwjkf001");
|
||||
if (classDeductionIndicatorId != null) {
|
||||
BmzrAssessmentScore assessmentScore = new BmzrAssessmentScore();
|
||||
assessmentScore.setPlanId(bo.getPlanId());
|
||||
assessmentScore.setSchemeId(schemeId);
|
||||
assessmentScore.setIndicatorId(classDeductionIndicatorId);
|
||||
assessmentScore.setEvaluatedUserId(teacherId);
|
||||
assessmentScore.setEvaluatedUserName(currentUserName);
|
||||
assessmentScore.setEvaluatedDeptId(currentDeptId);
|
||||
assessmentScore.setSelfScore(bo.getClassDeduction());
|
||||
assessmentScore.setSelfComment(bo.getClassDeductionComment());
|
||||
assessmentScore.setSelfSubmitTime(now);
|
||||
assessmentScore.setSubmitTime(now);
|
||||
assessmentScore.setAuditStatus("0");
|
||||
// 设置班级ID和自我总体评价
|
||||
assessmentScore.setClassId(bo.getClassId());
|
||||
assessmentScore.setSelfOverallComment(bo.getOverallComment());
|
||||
|
||||
assessmentScoreMapper.insert(assessmentScore);
|
||||
}
|
||||
|
||||
// 4. 插入特色工作指标评分
|
||||
if (bo.getSpecialWorkScores() != null && !bo.getSpecialWorkScores().isEmpty()) {
|
||||
for (SpecialWorkIndicatorVo score : bo.getSpecialWorkScores()) {
|
||||
Long indicatorId = teacherAssessmentMapper.selectIndicatorIdByCode(score.getIndicatorCode());
|
||||
if (indicatorId != null) {
|
||||
BmzrAssessmentScore assessmentScore = new BmzrAssessmentScore();
|
||||
assessmentScore.setPlanId(bo.getPlanId());
|
||||
assessmentScore.setSchemeId(schemeId);
|
||||
assessmentScore.setIndicatorId(indicatorId);
|
||||
assessmentScore.setEvaluatedUserId(teacherId);
|
||||
assessmentScore.setEvaluatedUserName(currentUserName);
|
||||
assessmentScore.setEvaluatedDeptId(currentDeptId);
|
||||
assessmentScore.setSelfScore(score.getScore());
|
||||
assessmentScore.setSelfComment(score.getSelfComment());
|
||||
assessmentScore.setSelfSubmitTime(now);
|
||||
assessmentScore.setSubmitTime(now);
|
||||
assessmentScore.setAuditStatus("0");
|
||||
// 设置班级ID和自我总体评价
|
||||
assessmentScore.setClassId(bo.getClassId());
|
||||
assessmentScore.setSelfOverallComment(bo.getOverallComment());
|
||||
|
||||
assessmentScoreMapper.insert(assessmentScore);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 5. 总体评价已经通过上述步骤存储到每条记录的 self_overall_comment 字段中
|
||||
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算系数信息
|
||||
*
|
||||
* @param classDetail 班级详细信息
|
||||
* @return 系数信息
|
||||
*/
|
||||
private CoefficientVo calculateCoefficient(ClassDetailVo classDetail) {
|
||||
CoefficientVo coefficient = new CoefficientVo();
|
||||
|
||||
// 计算人数系数(K2)
|
||||
int totalStudents = classDetail.getTotalStudentCount() != null ? classDetail.getTotalStudentCount() : 0;
|
||||
log.info("计算人数系数 - 班级ID: {}, 班级名称: {}, 学生总人数: {}",
|
||||
classDetail.getId(), classDetail.getClassName(), totalStudents);
|
||||
|
||||
// 数据验证:如果学生人数为0但前端显示有人数,可能是数据同步问题
|
||||
if (totalStudents == 0) {
|
||||
log.warn("警告:班级{}学生人数为0,请检查xg_student_msg表数据", classDetail.getClassName());
|
||||
}
|
||||
|
||||
BigDecimal studentCountCoefficient = calculateStudentCountCoefficient(totalStudents);
|
||||
log.info("计算人数系数结果: {}", studentCountCoefficient);
|
||||
|
||||
// 关键修复:确保人数系数不为0
|
||||
if (studentCountCoefficient == null || studentCountCoefficient.compareTo(BigDecimal.ZERO) == 0) {
|
||||
log.error("人数系数计算异常,学生人数: {},计算结果: {},进行修复", totalStudents, studentCountCoefficient);
|
||||
// 直接重新计算并设置最低值
|
||||
if (totalStudents > 0) {
|
||||
// 手动计算25人的系数:1 - (36-25)*0.02 = 1 - 0.22 = 0.78
|
||||
if (totalStudents < 36) {
|
||||
int missingStudents = 36 - totalStudents;
|
||||
BigDecimal deduction = BigDecimal.valueOf(missingStudents).multiply(BigDecimal.valueOf(0.02));
|
||||
studentCountCoefficient = BigDecimal.ONE.subtract(deduction);
|
||||
if (studentCountCoefficient.compareTo(BigDecimal.valueOf(0.7)) < 0) {
|
||||
studentCountCoefficient = BigDecimal.valueOf(0.7);
|
||||
}
|
||||
studentCountCoefficient = studentCountCoefficient.setScale(4, RoundingMode.HALF_UP);
|
||||
log.info("修复后的人数系数: {}", studentCountCoefficient);
|
||||
} else {
|
||||
studentCountCoefficient = BigDecimal.valueOf(0.7).setScale(4, RoundingMode.HALF_UP);
|
||||
}
|
||||
} else {
|
||||
studentCountCoefficient = BigDecimal.valueOf(0.7).setScale(4, RoundingMode.HALF_UP);
|
||||
}
|
||||
}
|
||||
|
||||
coefficient.setStudentCountCoefficient(studentCountCoefficient);
|
||||
|
||||
// 验证系数设置是否成功
|
||||
if (coefficient.getStudentCountCoefficient() == null ||
|
||||
coefficient.getStudentCountCoefficient().compareTo(BigDecimal.ZERO) == 0) {
|
||||
log.error("错误:人数系数设置仍然失败,当前值: {}", coefficient.getStudentCountCoefficient());
|
||||
}
|
||||
|
||||
// 计算住校生系数(K3)
|
||||
int boardingStudents = classDetail.getBoardingStudentCount() != null ? classDetail.getBoardingStudentCount() : 0;
|
||||
BigDecimal boardingCoefficient = calculateBoardingCoefficient(boardingStudents);
|
||||
coefficient.setBoardingCoefficient(boardingCoefficient);
|
||||
|
||||
// 计算层次系数(K1)
|
||||
BigDecimal levelCoefficient = calculateLevelCoefficient(classDetail.getClassType());
|
||||
coefficient.setLevelCoefficient(levelCoefficient);
|
||||
|
||||
// 计算总系数(K = K1 * (K2 + K3))
|
||||
BigDecimal totalCoefficient = levelCoefficient.multiply(studentCountCoefficient.add(boardingCoefficient));
|
||||
coefficient.setTotalCoefficient(totalCoefficient);
|
||||
|
||||
return coefficient;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算人数系数(K2)
|
||||
* 班级人数36~40人(含36人),系数为1;
|
||||
* 超过40人,每增加1名学生,系数增加0.02;
|
||||
* 少于36人,每减少1名学生,系数减少0.02;
|
||||
* 本项系数最低0.7
|
||||
*/
|
||||
private BigDecimal calculateStudentCountCoefficient(int studentCount) {
|
||||
log.info("开始计算人数系数 - 输入学生人数: {}", studentCount);
|
||||
|
||||
// 数据验证:如果学生人数异常,使用保护性默认值
|
||||
if (studentCount < 0) {
|
||||
log.warn("学生人数为负数({}),使用默认值0", studentCount);
|
||||
studentCount = 0;
|
||||
}
|
||||
|
||||
BigDecimal coefficient;
|
||||
if (studentCount >= 36 && studentCount <= 40) {
|
||||
coefficient = BigDecimal.ONE;
|
||||
log.info("人数在36-40人范围内,系数为1.0");
|
||||
} else if (studentCount > 40) {
|
||||
int extraStudents = studentCount - 40;
|
||||
coefficient = BigDecimal.ONE.add(BigDecimal.valueOf(extraStudents * 0.02));
|
||||
log.info("人数超过40人,额外{}人,系数为{}", extraStudents, coefficient);
|
||||
} else {
|
||||
// 少于36人的情况
|
||||
int missingStudents = 36 - studentCount;
|
||||
// 使用更精确的BigDecimal计算,避免精度问题
|
||||
BigDecimal deduction = BigDecimal.valueOf(missingStudents).multiply(BigDecimal.valueOf(0.02));
|
||||
coefficient = BigDecimal.ONE.subtract(deduction);
|
||||
log.info("人数少于36人,缺少{}人,扣减{},计算系数为{}", missingStudents, deduction, coefficient);
|
||||
|
||||
// 最低0.7
|
||||
BigDecimal minCoefficient = BigDecimal.valueOf(0.7);
|
||||
if (coefficient.compareTo(minCoefficient) < 0) {
|
||||
log.info("系数{}低于最低值0.7,调整为0.7", coefficient);
|
||||
coefficient = minCoefficient;
|
||||
}
|
||||
}
|
||||
|
||||
BigDecimal result = coefficient.setScale(4, RoundingMode.HALF_UP);
|
||||
log.info("最终人数系数: {}", result);
|
||||
|
||||
// 额外验证:确保结果不为0
|
||||
if (result.compareTo(BigDecimal.ZERO) == 0) {
|
||||
log.error("严重错误:人数系数计算结果为0,学生人数: {},强制设置为最低值0.7", studentCount);
|
||||
result = BigDecimal.valueOf(0.7).setScale(4, RoundingMode.HALF_UP);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试人数系数计算(临时调试方法)
|
||||
* 可以通过调用这个方法来验证具体人数的系数计算
|
||||
*/
|
||||
public BigDecimal testStudentCountCoefficient(int studentCount) {
|
||||
log.info("=== 测试人数系数计算 ===");
|
||||
log.info("输入学生人数: {}", studentCount);
|
||||
BigDecimal result = calculateStudentCountCoefficient(studentCount);
|
||||
log.info("计算结果: {}", result);
|
||||
log.info("=== 测试结束 ===");
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算住校生系数(K3)
|
||||
* 根据住校生人数,按人均0.005计算
|
||||
*/
|
||||
private BigDecimal calculateBoardingCoefficient(int boardingCount) {
|
||||
return BigDecimal.valueOf(boardingCount * 0.005).setScale(4, RoundingMode.HALF_UP);
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算层次系数(K1)
|
||||
* 技师班(K1=0.95),高级工班(K1=1),中级工班(K1=1.05)
|
||||
*/
|
||||
private BigDecimal calculateLevelCoefficient(String classType) {
|
||||
if (classType == null) {
|
||||
return BigDecimal.ONE;
|
||||
}
|
||||
|
||||
switch (classType) {
|
||||
case "1": // 中级工
|
||||
return BigDecimal.valueOf(1.05);
|
||||
case "2": // 高级工
|
||||
return BigDecimal.ONE;
|
||||
case "3": // 预备技师
|
||||
return BigDecimal.valueOf(0.95);
|
||||
case "4": // 技师
|
||||
return BigDecimal.valueOf(0.95);
|
||||
case "5": // 中高职一体
|
||||
return BigDecimal.ONE;
|
||||
default:
|
||||
return BigDecimal.ONE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 合并已保存的评分数据
|
||||
*/
|
||||
private void mergeAssessmentScores(AssessmentDetailVo detailVo, List<AssessmentIndicatorScoreVo> savedScores) {
|
||||
// 合并班主任常规工作指标评分
|
||||
if (detailVo.getRoutineWorkIndicators() != null) {
|
||||
for (AssessmentIndicatorScoreVo indicator : detailVo.getRoutineWorkIndicators()) {
|
||||
savedScores.stream()
|
||||
.filter(saved -> saved.getId().equals(indicator.getId()))
|
||||
.findFirst()
|
||||
.ifPresent(saved -> {
|
||||
indicator.setSelfScore(saved.getSelfScore());
|
||||
indicator.setSelfComment(saved.getSelfComment());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 合并班级扣分指标评分
|
||||
if (detailVo.getClassDeductionIndicator() != null) {
|
||||
savedScores.stream()
|
||||
.filter(saved -> "bzrwjkf001".equals(saved.getIndicatorCode()))
|
||||
.findFirst()
|
||||
.ifPresent(saved -> {
|
||||
detailVo.getClassDeductionIndicator().setSelfScore(saved.getSelfScore());
|
||||
detailVo.getClassDeductionIndicator().setSelfComment(saved.getSelfComment());
|
||||
});
|
||||
}
|
||||
|
||||
// 合并特色工作指标评分
|
||||
if (detailVo.getSpecialWorkIndicators() != null) {
|
||||
for (SpecialWorkIndicatorVo indicator : detailVo.getSpecialWorkIndicators()) {
|
||||
savedScores.stream()
|
||||
.filter(saved -> indicator.getIndicatorCode().equals(saved.getIndicatorCode()))
|
||||
.findFirst()
|
||||
.ifPresent(saved -> {
|
||||
indicator.setScore(saved.getSelfScore());
|
||||
indicator.setSelfComment(saved.getSelfComment());
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.bzrkh.mapper.BmzrAssessmentIndicatorMapper">
|
||||
|
||||
<resultMap type="org.dromara.bzrkh.domain.BmzrAssessmentIndicator" id="BmzrAssessmentIndicatorResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="tenantId" column="tenant_id" />
|
||||
<result property="indicatorName" column="indicator_name" />
|
||||
<result property="indicatorCode" column="indicator_code" />
|
||||
<result property="indicatorType" column="indicator_type" />
|
||||
<result property="parentId" column="parent_id" />
|
||||
<result property="sortOrder" column="sort_order" />
|
||||
<result property="weightRatio" column="weight_ratio" />
|
||||
<result property="maxScore" column="max_score" />
|
||||
<result property="score" column="score" />
|
||||
<result property="allowSelfEvaluation" column="allow_self_evaluation" />
|
||||
<result property="allowSuperiorEvaluation" column="allow_superior_evaluation" />
|
||||
<result property="status" column="status" />
|
||||
<result property="remark" column="remark" />
|
||||
<result property="createDept" column="create_dept" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="deleted" column="deleted" />
|
||||
</resultMap>
|
||||
|
||||
</mapper>
|
||||
+146
@@ -0,0 +1,146 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.bzrkh.mapper.BmzrAssessmentPlanMapper">
|
||||
|
||||
<!-- 班主任考核计划结果映射(包含方案名称) -->
|
||||
<resultMap type="org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo" id="BmzrAssessmentPlanVoResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
<result property="planName" column="plan_name"/>
|
||||
<result property="planCode" column="plan_code"/>
|
||||
<result property="schemeId" column="scheme_id"/>
|
||||
<result property="schemeName" column="scheme_name"/>
|
||||
<result property="academicYear" column="academic_year"/>
|
||||
<result property="semester" column="semester"/>
|
||||
<result property="planStartTime" column="plan_start_time"/>
|
||||
<result property="planEndTime" column="plan_end_time"/>
|
||||
<result property="dataExtractStartTime" column="data_extract_start_time"/>
|
||||
<result property="dataExtractEndTime" column="data_extract_end_time"/>
|
||||
<result property="planStatus" column="plan_status"/>
|
||||
<result property="description" column="description"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="createDept" column="create_dept"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="deleted" column="deleted"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 查询班主任考核计划列表(包含方案名称) -->
|
||||
<select id="selectAssessmentPlanListWithScheme" parameterType="org.dromara.bzrkh.domain.bo.BmzrAssessmentPlanBo" resultMap="BmzrAssessmentPlanVoResult">
|
||||
SELECT
|
||||
p.id,
|
||||
p.tenant_id,
|
||||
p.plan_name,
|
||||
p.plan_code,
|
||||
p.scheme_id,
|
||||
s.scheme_name,
|
||||
p.academic_year,
|
||||
p.semester,
|
||||
p.plan_start_time,
|
||||
p.plan_end_time,
|
||||
p.data_extract_start_time,
|
||||
p.data_extract_end_time,
|
||||
p.plan_status,
|
||||
p.description,
|
||||
p.remark,
|
||||
p.create_dept,
|
||||
p.create_by,
|
||||
p.create_time,
|
||||
p.update_by,
|
||||
p.update_time,
|
||||
p.deleted
|
||||
FROM bmzr_assessment_plan p
|
||||
LEFT JOIN bmzr_assessment_scheme s ON p.scheme_id = s.id AND s.deleted = 0
|
||||
WHERE p.deleted = 0
|
||||
<if test="planName != null and planName != ''">
|
||||
AND p.plan_name LIKE CONCAT('%', #{planName}, '%')
|
||||
</if>
|
||||
<if test="planCode != null and planCode != ''">
|
||||
AND p.plan_code LIKE CONCAT('%', #{planCode}, '%')
|
||||
</if>
|
||||
<if test="schemeId != null">
|
||||
AND p.scheme_id = #{schemeId}
|
||||
</if>
|
||||
<if test="academicYear != null and academicYear != ''">
|
||||
AND p.academic_year = #{academicYear}
|
||||
</if>
|
||||
<if test="semester != null and semester != ''">
|
||||
AND p.semester = #{semester}
|
||||
</if>
|
||||
<if test="planStatus != null and planStatus != ''">
|
||||
AND p.plan_status = #{planStatus}
|
||||
</if>
|
||||
<if test="planStartTime != null">
|
||||
AND p.plan_start_time >= #{planStartTime}
|
||||
</if>
|
||||
<if test="planEndTime != null">
|
||||
AND p.plan_end_time <= #{planEndTime}
|
||||
</if>
|
||||
<if test="params.beginCreateTime != null and params.endCreateTime != null">
|
||||
AND p.create_time BETWEEN #{params.beginCreateTime} AND #{params.endCreateTime}
|
||||
</if>
|
||||
ORDER BY p.create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 分页查询班主任考核计划列表(包含方案名称) -->
|
||||
<select id="selectAssessmentPlanPageWithScheme" parameterType="org.dromara.bzrkh.domain.bo.BmzrAssessmentPlanBo" resultMap="BmzrAssessmentPlanVoResult">
|
||||
SELECT
|
||||
p.id,
|
||||
p.tenant_id,
|
||||
p.plan_name,
|
||||
p.plan_code,
|
||||
p.scheme_id,
|
||||
s.scheme_name,
|
||||
p.academic_year,
|
||||
p.semester,
|
||||
p.plan_start_time,
|
||||
p.plan_end_time,
|
||||
p.data_extract_start_time,
|
||||
p.data_extract_end_time,
|
||||
p.plan_status,
|
||||
p.description,
|
||||
p.remark,
|
||||
p.create_dept,
|
||||
p.create_by,
|
||||
p.create_time,
|
||||
p.update_by,
|
||||
p.update_time,
|
||||
p.deleted
|
||||
FROM bmzr_assessment_plan p
|
||||
LEFT JOIN bmzr_assessment_scheme s ON p.scheme_id = s.id AND s.deleted = 0
|
||||
WHERE p.deleted = 0
|
||||
<if test="bo.planName != null and bo.planName != ''">
|
||||
AND p.plan_name LIKE CONCAT('%', #{bo.planName}, '%')
|
||||
</if>
|
||||
<if test="bo.planCode != null and bo.planCode != ''">
|
||||
AND p.plan_code LIKE CONCAT('%', #{bo.planCode}, '%')
|
||||
</if>
|
||||
<if test="bo.schemeId != null">
|
||||
AND p.scheme_id = #{bo.schemeId}
|
||||
</if>
|
||||
<if test="bo.academicYear != null and bo.academicYear != ''">
|
||||
AND p.academic_year = #{bo.academicYear}
|
||||
</if>
|
||||
<if test="bo.semester != null and bo.semester != ''">
|
||||
AND p.semester = #{bo.semester}
|
||||
</if>
|
||||
<if test="bo.planStatus != null and bo.planStatus != ''">
|
||||
AND p.plan_status = #{bo.planStatus}
|
||||
</if>
|
||||
<if test="bo.planStartTime != null">
|
||||
AND p.plan_start_time >= #{bo.planStartTime}
|
||||
</if>
|
||||
<if test="bo.planEndTime != null">
|
||||
AND p.plan_end_time <= #{bo.planEndTime}
|
||||
</if>
|
||||
<if test="bo.params.beginCreateTime != null and bo.params.endCreateTime != null">
|
||||
AND p.create_time BETWEEN #{bo.params.beginCreateTime} AND #{bo.params.endCreateTime}
|
||||
</if>
|
||||
ORDER BY p.create_time DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.bzrkh.mapper.BmzrAssessmentSchemeIndicatorMapper">
|
||||
|
||||
<resultMap type="org.dromara.bzrkh.domain.vo.BmzrAssessmentSchemeIndicatorVo" id="BmzrAssessmentSchemeIndicatorResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="tenantId" column="tenant_id" />
|
||||
<result property="schemeId" column="scheme_id" />
|
||||
<result property="indicatorId" column="indicator_id" />
|
||||
<result property="indicatorName" column="indicator_name" />
|
||||
<result property="indicatorCode" column="indicator_code" />
|
||||
<result property="weightRatio" column="weight_ratio" />
|
||||
<result property="customMaxScore" column="custom_max_score" />
|
||||
<result property="score" column="score" />
|
||||
<result property="sortOrder" column="sort_order" />
|
||||
<result property="remark" column="remark" />
|
||||
<result property="createDept" column="create_dept" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="deleted" column="deleted" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectBmzrAssessmentSchemeIndicatorVo">
|
||||
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
|
||||
</sql>
|
||||
|
||||
<select id="queryList" parameterType="org.dromara.bzrkh.domain.bo.BmzrAssessmentSchemeIndicatorBo" resultMap="BmzrAssessmentSchemeIndicatorResult">
|
||||
<include refid="selectBmzrAssessmentSchemeIndicatorVo"/>
|
||||
<where>
|
||||
si.deleted = 0
|
||||
<if test="bo.schemeId != null">
|
||||
and si.scheme_id = #{bo.schemeId}
|
||||
</if>
|
||||
<if test="bo.indicatorId != null">
|
||||
and si.indicator_id = #{bo.indicatorId}
|
||||
</if>
|
||||
<if test="bo.indicatorName != null and bo.indicatorName != ''">
|
||||
and ai.indicator_name like concat('%', #{bo.indicatorName}, '%')
|
||||
</if>
|
||||
</where>
|
||||
order by si.sort_order asc, si.create_time asc
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
+311
@@ -0,0 +1,311 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.bzrkh.mapper.TeacherAssessmentMapper">
|
||||
|
||||
<!-- 班级信息结果映射 -->
|
||||
<resultMap type="org.dromara.bzrkh.domain.vo.TeacherClassVo" id="TeacherClassVoResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="classCode" column="class_code"/>
|
||||
<result property="className" column="class_name"/>
|
||||
<result property="classTeacherId" column="class_teacher_id"/>
|
||||
<result property="classTeacherName" column="class_teacher_name"/>
|
||||
<result property="grade" column="grade"/>
|
||||
<result property="collegeId" column="college_id"/>
|
||||
<result property="collegeName" column="college_name"/>
|
||||
<result property="majorId" column="major_id"/>
|
||||
<result property="majorName" column="major_name"/>
|
||||
<result property="classStatus" column="class_status"/>
|
||||
<result property="currentStudentCount" column="current_student_count"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 考核计划结果映射 -->
|
||||
<resultMap type="org.dromara.bzrkh.domain.vo.BmzrAssessmentPlanVo" id="BmzrAssessmentPlanVoResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
<result property="planName" column="plan_name"/>
|
||||
<result property="planCode" column="plan_code"/>
|
||||
<result property="schemeId" column="scheme_id"/>
|
||||
<result property="schemeName" column="scheme_name"/>
|
||||
<result property="academicYear" column="academic_year"/>
|
||||
<result property="semester" column="semester"/>
|
||||
<result property="planStartTime" column="plan_start_time"/>
|
||||
<result property="planEndTime" column="plan_end_time"/>
|
||||
<result property="dataExtractStartTime" column="data_extract_start_time"/>
|
||||
<result property="dataExtractEndTime" column="data_extract_end_time"/>
|
||||
<result property="planStatus" column="plan_status"/>
|
||||
<result property="description" column="description"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="createDept" column="create_dept"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="deleted" column="deleted"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 班级详细信息结果映射 -->
|
||||
<resultMap type="org.dromara.bzrkh.domain.vo.ClassDetailVo" id="ClassDetailVoResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="collegeName" column="college_name"/>
|
||||
<result property="majorName" column="major_name"/>
|
||||
<result property="className" column="class_name"/>
|
||||
<result property="classType" column="class_type"/>
|
||||
<result property="totalStudentCount" column="total_student_count"/>
|
||||
<result property="boardingStudentCount" column="boarding_student_count"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 考核指标评分结果映射 -->
|
||||
<resultMap type="org.dromara.bzrkh.domain.vo.AssessmentIndicatorScoreVo" id="AssessmentIndicatorScoreVoResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="indicatorName" column="indicator_name"/>
|
||||
<result property="indicatorCode" column="indicator_code"/>
|
||||
<result property="description" column="description"/>
|
||||
<result property="score" column="score"/>
|
||||
<result property="selfScore" column="self_score"/>
|
||||
<result property="selfComment" column="self_comment"/>
|
||||
<result property="selfOverallComment" column="self_overall_comment"/>
|
||||
<result property="sortOrder" column="sort_order"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 特色工作指标结果映射 -->
|
||||
<resultMap type="org.dromara.bzrkh.domain.vo.SpecialWorkIndicatorVo" id="SpecialWorkIndicatorVoResult">
|
||||
<result property="indicatorCode" column="indicator_code"/>
|
||||
<result property="indicatorName" column="indicator_name"/>
|
||||
<result property="score" column="score"/>
|
||||
<result property="selfComment" column="self_comment"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 查询班主任管理的班级列表 -->
|
||||
<select id="selectTeacherClassList" parameterType="Long" resultMap="TeacherClassVoResult">
|
||||
SELECT
|
||||
id,
|
||||
class_code,
|
||||
class_name,
|
||||
class_teacher_id,
|
||||
class_teacher_name,
|
||||
grade,
|
||||
college_id,
|
||||
college_name,
|
||||
major_id,
|
||||
major_name,
|
||||
class_status,
|
||||
current_student_count
|
||||
FROM xg_class_msg
|
||||
WHERE class_teacher_id = #{teacherId}
|
||||
AND class_status = '1'
|
||||
AND deleted = 0
|
||||
ORDER BY grade DESC, class_name ASC
|
||||
</select>
|
||||
|
||||
<!-- 查询班主任考核计划列表 -->
|
||||
<select id="selectTeacherAssessmentPlanList" parameterType="org.dromara.bzrkh.domain.bo.TeacherAssessmentQueryBo" resultMap="BmzrAssessmentPlanVoResult">
|
||||
SELECT
|
||||
p.id,
|
||||
p.tenant_id,
|
||||
p.plan_name,
|
||||
p.plan_code,
|
||||
p.scheme_id,
|
||||
s.scheme_name,
|
||||
p.academic_year,
|
||||
p.semester,
|
||||
p.plan_start_time,
|
||||
p.plan_end_time,
|
||||
p.data_extract_start_time,
|
||||
p.data_extract_end_time,
|
||||
p.plan_status,
|
||||
p.description,
|
||||
p.remark,
|
||||
p.create_dept,
|
||||
p.create_by,
|
||||
p.create_time,
|
||||
p.update_by,
|
||||
p.update_time,
|
||||
p.deleted
|
||||
FROM bmzr_assessment_plan p
|
||||
LEFT JOIN bmzr_assessment_scheme s ON p.scheme_id = s.id AND s.deleted = 0
|
||||
WHERE p.deleted = 0
|
||||
<if test="planStatus != null and planStatus != ''">
|
||||
AND p.plan_status = #{planStatus}
|
||||
</if>
|
||||
<if test="planName != null and planName != ''">
|
||||
AND p.plan_name LIKE CONCAT('%', #{planName}, '%')
|
||||
</if>
|
||||
<if test="academicYear != null and academicYear != ''">
|
||||
AND p.academic_year = #{academicYear}
|
||||
</if>
|
||||
<if test="semester != null and semester != ''">
|
||||
AND p.semester = #{semester}
|
||||
</if>
|
||||
ORDER BY p.create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 查询班级详细信息 -->
|
||||
<select id="selectClassDetail" parameterType="Long" resultMap="ClassDetailVoResult">
|
||||
SELECT
|
||||
c.id,
|
||||
c.college_name,
|
||||
c.major_name,
|
||||
c.class_name,
|
||||
c.class_type,
|
||||
(SELECT COUNT(1)
|
||||
FROM xg_student_msg s
|
||||
WHERE s.class_id = c.id
|
||||
AND s.student_status = '1'
|
||||
AND s.deleted = 0) as total_student_count,
|
||||
(SELECT COUNT(1)
|
||||
FROM xg_student_msg s
|
||||
WHERE s.class_id = c.id
|
||||
AND s.student_status = '1'
|
||||
AND s.dormitory_room IS NOT NULL
|
||||
AND s.dormitory_room != ''
|
||||
AND s.deleted = 0) as boarding_student_count,
|
||||
c.create_by,
|
||||
c.create_time,
|
||||
c.update_by,
|
||||
c.update_time
|
||||
FROM xg_class_msg c
|
||||
WHERE c.id = #{classId}
|
||||
AND c.deleted = 0
|
||||
</select>
|
||||
|
||||
<!-- 查询班主任常规工作指标列表 -->
|
||||
<select id="selectRoutineWorkIndicators" parameterType="Long" resultMap="AssessmentIndicatorScoreVoResult">
|
||||
SELECT
|
||||
i.id,
|
||||
i.indicator_name,
|
||||
i.indicator_code,
|
||||
i.remark as description,
|
||||
i.score,
|
||||
i.sort_order,
|
||||
NULL as self_score,
|
||||
NULL as self_comment,
|
||||
i.create_by,
|
||||
i.create_time,
|
||||
i.update_by,
|
||||
i.update_time
|
||||
FROM bmzr_assessment_plan p
|
||||
JOIN bmzr_assessment_scheme_indicator si ON p.scheme_id = si.scheme_id AND si.deleted = 0
|
||||
JOIN bmzr_assessment_indicator i ON si.indicator_id = i.id AND i.deleted = 0
|
||||
WHERE p.id = #{planId}
|
||||
AND p.deleted = 0
|
||||
AND i.indicator_code NOT IN ('bzrwjkf001', 'bzrtsgz001', 'bzrtsgz002', 'bzrtsgz003', 'bzrtsgz004')
|
||||
ORDER BY i.sort_order ASC
|
||||
</select>
|
||||
|
||||
<!-- 查询班级扣分指标 -->
|
||||
<select id="selectClassDeductionIndicator" resultMap="AssessmentIndicatorScoreVoResult">
|
||||
SELECT
|
||||
i.id,
|
||||
i.indicator_name,
|
||||
i.indicator_code,
|
||||
i.remark as description,
|
||||
i.score,
|
||||
i.sort_order,
|
||||
NULL as self_score,
|
||||
NULL as self_comment,
|
||||
i.create_by,
|
||||
i.create_time,
|
||||
i.update_by,
|
||||
i.update_time
|
||||
FROM bmzr_assessment_indicator i
|
||||
WHERE i.indicator_code = 'bzrwjkf001'
|
||||
AND i.deleted = 0
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 查询特色工作指标列表 -->
|
||||
<select id="selectSpecialWorkIndicators" resultMap="SpecialWorkIndicatorVoResult">
|
||||
SELECT
|
||||
i.indicator_code,
|
||||
i.indicator_name,
|
||||
0.00 as score,
|
||||
NULL as self_comment,
|
||||
i.create_by,
|
||||
i.create_time,
|
||||
i.update_by,
|
||||
i.update_time
|
||||
FROM bmzr_assessment_indicator i
|
||||
WHERE i.indicator_code IN ('bzrtsgz001', 'bzrtsgz002', 'bzrtsgz003', 'bzrtsgz004')
|
||||
AND i.deleted = 0
|
||||
ORDER BY i.indicator_code ASC
|
||||
</select>
|
||||
|
||||
<!-- 查询已保存的评分数据 -->
|
||||
<select id="selectSavedAssessmentScores" resultMap="AssessmentIndicatorScoreVoResult">
|
||||
SELECT
|
||||
i.id,
|
||||
i.indicator_name,
|
||||
i.indicator_code,
|
||||
i.remark as description,
|
||||
i.score,
|
||||
s.self_score,
|
||||
s.self_comment,
|
||||
s.self_overall_comment,
|
||||
i.sort_order,
|
||||
s.create_by,
|
||||
s.create_time,
|
||||
s.update_by,
|
||||
s.update_time
|
||||
FROM bmzr_assessment_score s
|
||||
JOIN bmzr_assessment_indicator i ON s.indicator_id = i.id AND i.deleted = 0
|
||||
WHERE s.plan_id = #{planId}
|
||||
AND s.evaluated_user_id = #{teacherId}
|
||||
AND s.deleted = 0
|
||||
</select>
|
||||
|
||||
<!-- 根据计划ID查询方案ID -->
|
||||
<select id="selectSchemeIdByPlanId" parameterType="Long" resultType="Long">
|
||||
SELECT scheme_id
|
||||
FROM bmzr_assessment_plan
|
||||
WHERE id = #{planId}
|
||||
AND deleted = 0
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 根据指标编码查询指标ID -->
|
||||
<select id="selectIndicatorIdByCode" parameterType="String" resultType="Long">
|
||||
SELECT id
|
||||
FROM bmzr_assessment_indicator
|
||||
WHERE indicator_code = #{indicatorCode}
|
||||
AND deleted = 0
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 逻辑删除指定计划和教师的评分数据 -->
|
||||
<update id="deleteAssessmentScoresByPlanAndTeacher">
|
||||
UPDATE bmzr_assessment_score
|
||||
SET deleted = 1,
|
||||
update_time = NOW()
|
||||
WHERE plan_id = #{planId}
|
||||
AND evaluated_user_id = #{teacherId}
|
||||
AND deleted = 0
|
||||
</update>
|
||||
|
||||
|
||||
|
||||
<!-- 更新评分数据的备注 -->
|
||||
<update id="updateAssessmentScoreRemark">
|
||||
UPDATE bmzr_assessment_score
|
||||
SET remark = #{remark},
|
||||
update_time = NOW()
|
||||
WHERE plan_id = #{planId}
|
||||
AND indicator_id = #{indicatorId}
|
||||
AND evaluated_user_id = #{teacherId}
|
||||
AND deleted = 0
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
@@ -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
|
||||
**状态**: ✅ 开发完成
|
||||
@@ -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 - 班主任考核指标体系导出权限
|
||||
-- ==========================================
|
||||
@@ -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. 建议按照业务需求控制权限的精细度
|
||||
@@ -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, 4, 'assessmentIndicatorType', 'bzrkh/assessmentIndicatorType/index', '', 1, 0, 'C', '0', '0', 'bzrkh:assessmentIndicatorType:list', 'list', 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:assessmentIndicatorType: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:assessmentIndicatorType: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:assessmentIndicatorType: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:assessmentIndicatorType: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:assessmentIndicatorType:export', '#', 103, 1, NOW(), 1, NOW(), '', '000000');
|
||||
|
||||
-- ==========================================
|
||||
-- 权限字符说明
|
||||
-- ==========================================
|
||||
-- bzrkh:assessmentIndicatorType:list - 班主任考核指标类型查询权限
|
||||
-- bzrkh:assessmentIndicatorType:query - 班主任考核指标类型详情查询权限
|
||||
-- bzrkh:assessmentIndicatorType:add - 班主任考核指标类型新增权限
|
||||
-- bzrkh:assessmentIndicatorType:edit - 班主任考核指标类型修改权限
|
||||
-- bzrkh:assessmentIndicatorType:remove - 班主任考核指标类型删除权限
|
||||
-- bzrkh:assessmentIndicatorType:export - 班主任考核指标类型导出权限
|
||||
-- ==========================================
|
||||
@@ -0,0 +1,247 @@
|
||||
# 班主任考核提交功能开发说明
|
||||
|
||||
## 功能概述
|
||||
|
||||
完善了班主任考核管理界面中的"提交考核"按钮功能,实现了完整的考核评分提交流程。
|
||||
|
||||
## 开发内容
|
||||
|
||||
### 前端部分(Vue 3 + TypeScript + Element Plus)
|
||||
|
||||
#### 1. API类型定义扩展
|
||||
**文件位置**: `web/src/api/bzrkh/teacherAssessment/types.ts`
|
||||
|
||||
**新增类型定义**:
|
||||
- `ClassDetailVO` - 班级详细信息
|
||||
- `CoefficientVO` - 系数信息
|
||||
- `AssessmentIndicatorVO` - 考核指标信息
|
||||
- `SpecialWorkIndicatorVO` - 特色工作指标
|
||||
- `AssessmentSubmitVO` - 考核提交数据
|
||||
- `AssessmentDetailVO` - 考核详情数据
|
||||
|
||||
#### 2. API接口扩展
|
||||
**文件位置**: `web/src/api/bzrkh/teacherAssessment/index.ts`
|
||||
|
||||
**新增接口**:
|
||||
- `getAssessmentSubmitDetail()` - 获取考核提交详情数据
|
||||
- `submitAssessmentScore()` - 提交考核评分数据
|
||||
|
||||
#### 3. 提交弹窗组件
|
||||
**文件位置**: `web/src/views/bzrkh/teacherAssessment/submitDialog.vue`
|
||||
|
||||
**功能特性**:
|
||||
- 9张卡片式布局:班级信息、人数系数、住校生系数、层次系数、总系数、班主任常规工作、班级管理实效、特色工作、月考核得分
|
||||
- 自动系数计算:根据班级人数、住校生人数、班级层次自动计算各项系数
|
||||
- 动态评分:支持自评分数输入和自评意见填写
|
||||
- 实时计算:月考核得分根据公式自动计算
|
||||
- 数据验证:表单验证确保数据完整性
|
||||
|
||||
#### 4. 主界面集成
|
||||
**文件位置**: `web/src/views/bzrkh/teacherAssessment/index.vue`
|
||||
|
||||
**集成内容**:
|
||||
- 引入提交弹窗组件
|
||||
- 修改提交考核按钮逻辑
|
||||
- 添加成功回调处理
|
||||
|
||||
### 后端部分(Spring Boot 3.4.6 + MyBatis-Plus)
|
||||
|
||||
#### 1. VO类创建
|
||||
**文件位置**: `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/vo/`
|
||||
|
||||
**新增VO类**:
|
||||
- `ClassDetailVo.java` - 班级详细信息视图对象
|
||||
- `CoefficientVo.java` - 系数信息视图对象
|
||||
- `AssessmentIndicatorScoreVo.java` - 考核指标评分视图对象
|
||||
- `SpecialWorkIndicatorVo.java` - 特色工作指标视图对象
|
||||
- `AssessmentDetailVo.java` - 考核详情视图对象
|
||||
|
||||
#### 2. BO类创建
|
||||
**文件位置**: `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/domain/bo/`
|
||||
|
||||
**新增BO类**:
|
||||
- `AssessmentSubmitBo.java` - 考核提交业务对象
|
||||
|
||||
#### 3. Controller扩展
|
||||
**文件位置**: `backend/ruoyi-modules/ruoyi-bzrkh/src/main/java/org/dromara/bzrkh/controller/TeacherAssessmentController.java`
|
||||
|
||||
**新增接口**:
|
||||
- `getAssessmentSubmitDetail()` - 获取考核提交详情数据
|
||||
- `submitAssessmentScore()` - 提交考核评分数据
|
||||
|
||||
#### 4. 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`
|
||||
|
||||
**新增方法**:
|
||||
- `getAssessmentSubmitDetail()` - 获取考核提交详情数据
|
||||
- `submitAssessmentScore()` - 提交考核评分数据
|
||||
- `calculateCoefficient()` - 计算系数信息(私有方法)
|
||||
- `calculateStudentCountCoefficient()` - 计算人数系数(私有方法)
|
||||
- `calculateBoardingCoefficient()` - 计算住校生系数(私有方法)
|
||||
- `calculateLevelCoefficient()` - 计算层次系数(私有方法)
|
||||
- `mergeAssessmentScores()` - 合并已保存的评分数据(私有方法)
|
||||
|
||||
#### 5. Mapper接口和XML扩展
|
||||
**文件位置**:
|
||||
- `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`
|
||||
|
||||
**新增方法**:
|
||||
- `selectClassDetail()` - 查询班级详细信息
|
||||
- `selectRoutineWorkIndicators()` - 查询班主任常规工作指标列表
|
||||
- `selectClassDeductionIndicator()` - 查询班级扣分指标
|
||||
- `selectSpecialWorkIndicators()` - 查询特色工作指标列表
|
||||
- `selectSavedAssessmentScores()` - 查询已保存的评分数据
|
||||
- `selectSchemeIdByPlanId()` - 根据计划ID查询方案ID
|
||||
- `selectIndicatorIdByCode()` - 根据指标编码查询指标ID
|
||||
- `deleteAssessmentScoresByPlanAndTeacher()` - 逻辑删除评分数据
|
||||
- `insertAssessmentScore()` - 插入评分数据
|
||||
- `updateAssessmentScoreRemark()` - 更新评分数据备注
|
||||
|
||||
## 核心业务逻辑
|
||||
|
||||
### 1. 系数计算规则
|
||||
|
||||
#### 人数系数(K2)
|
||||
- 班级人数36~40人(含36人),系数为1
|
||||
- 超过40人,每增加1名学生,系数增加0.02
|
||||
- 少于36人,每减少1名学生,系数减少0.02
|
||||
- 本项系数最低0.7
|
||||
|
||||
#### 住校生系数(K3)
|
||||
- 根据住校生人数,按人均0.005计算
|
||||
|
||||
#### 层次系数(K1)
|
||||
- 技师班(K1=0.95)
|
||||
- 高级工班(K1=1)
|
||||
- 中级工班(K1=1.05)
|
||||
- 预备技师班(K1=0.95)
|
||||
- 中高职一体(K1=1)
|
||||
|
||||
#### 总系数(K)
|
||||
- 计算公式:K = K1 * (K2 + K3)
|
||||
|
||||
### 2. 月考核得分计算
|
||||
- 计算公式:总系数(K)* (班主任常规工作自评分之和 - 按班级扣分50%计的分值 + 特色工作总分值)
|
||||
|
||||
### 3. 数据存储逻辑
|
||||
1. 先逻辑删除该计划下该教师的历史评分数据
|
||||
2. 插入班主任常规工作指标评分
|
||||
3. 插入班级扣分指标评分
|
||||
4. 插入特色工作指标评分(4个固定指标)
|
||||
5. 将总体评价存储到备注字段
|
||||
|
||||
## 权限配置
|
||||
|
||||
### API接口权限
|
||||
- `bzrkh:teacherAssessment:list` - 查看班级和考核计划列表
|
||||
- `bzrkh:teacherAssessment:detail` - 查看考核详情
|
||||
- `bzrkh:teacherAssessment:submit` - 提交考核
|
||||
|
||||
详细权限配置请参考:`班主任考核提交功能权限配置.md`
|
||||
|
||||
## 数据准备
|
||||
|
||||
### 必要的指标数据
|
||||
系统需要以下5个考核指标才能正常运行:
|
||||
|
||||
1. `bzrwjkf001` - 班级扣分
|
||||
2. `bzrtsgz001` - 及时并妥善处理好学生违纪事件
|
||||
3. `bzrtsgz002` - 班级活动获奖情况
|
||||
4. `bzrtsgz003` - 班级宣传工作有特色
|
||||
5. `bzrtsgz004` - 其他
|
||||
|
||||
数据插入脚本:`班主任考核提交功能必要数据.sql`
|
||||
|
||||
## 部署说明
|
||||
|
||||
### 1. 数据库脚本执行
|
||||
```sql
|
||||
-- 执行必要数据插入脚本
|
||||
source 班主任考核提交功能必要数据.sql;
|
||||
```
|
||||
|
||||
### 2. 后端编译重启
|
||||
```bash
|
||||
# 编译ruoyi-bzrkh模块
|
||||
mvn clean compile -pl ruoyi-modules/ruoyi-bzrkh
|
||||
|
||||
# 重启应用服务
|
||||
# (请根据实际部署方式重启服务)
|
||||
```
|
||||
|
||||
### 3. 前端构建
|
||||
```bash
|
||||
# 前端无需重新构建,代码已支持热更新
|
||||
# 如需构建:
|
||||
npm run build:prod
|
||||
```
|
||||
|
||||
### 4. 权限配置
|
||||
1. 登录系统管理后台
|
||||
2. 进入系统管理-菜单管理
|
||||
3. 为班主任考核相关菜单配置权限
|
||||
4. 为相关角色分配权限
|
||||
|
||||
## 测试验证
|
||||
|
||||
### 1. 基础功能测试
|
||||
- [ ] 班主任登录系统
|
||||
- [ ] 查看考核计划列表
|
||||
- [ ] 点击"提交考核"按钮
|
||||
- [ ] 弹窗正常显示9张卡片
|
||||
- [ ] 系数自动计算正确
|
||||
|
||||
### 2. 评分功能测试
|
||||
- [ ] 班主任常规工作指标可正常输入评分
|
||||
- [ ] 班级扣分可正常输入,50%计算正确
|
||||
- [ ] 特色工作4个指标可正常输入评分
|
||||
- [ ] 月考核得分自动计算正确
|
||||
|
||||
### 3. 数据保存测试
|
||||
- [ ] 提交评分数据成功
|
||||
- [ ] 数据正确保存到数据库
|
||||
- [ ] 再次打开弹窗数据正确回显
|
||||
|
||||
## 技术亮点
|
||||
|
||||
1. **响应式系数计算**:前端实时计算各项系数,提供直观的数据展示
|
||||
2. **组件化设计**:弹窗组件独立封装,便于维护和复用
|
||||
3. **数据一致性**:采用逻辑删除+重新插入的方式确保数据一致性
|
||||
4. **权限控制**:完整的权限控制体系,确保数据安全
|
||||
5. **用户体验**:直观的卡片式布局,清晰的数据展示
|
||||
6. **实时人数统计**:班级总人数从xg_student_msg表实时统计,确保数据准确性
|
||||
|
||||
## 班级人数统计规则(2025-01-27更新)
|
||||
|
||||
### 班级总人数统计
|
||||
- **数据来源**: `xg_student_msg`表
|
||||
- **统计条件**:
|
||||
- `class_id` = 班级ID
|
||||
- `student_status` = '1'(正常状态)
|
||||
- `deleted` = 0(未逻辑删除)
|
||||
- **统计方式**: COUNT(1)
|
||||
|
||||
### 住校生人数统计
|
||||
- **数据来源**: `xg_student_msg`表
|
||||
- **统计条件**:
|
||||
- `class_id` = 班级ID
|
||||
- `student_status` = '1'(正常状态)
|
||||
- `dormitory_room` IS NOT NULL AND `dormitory_room` != ''(有宿舍信息)
|
||||
- `deleted` = 0(未逻辑删除)
|
||||
- **统计方式**: COUNT(1)
|
||||
|
||||
## 待扩展功能
|
||||
|
||||
1. 学生违规处分信息查看功能
|
||||
2. 考核结果审核功能
|
||||
3. 考核数据统计分析功能
|
||||
4. 考核历史记录查询功能
|
||||
|
||||
---
|
||||
|
||||
**开发完成时间**: 2025-01-27
|
||||
**开发版本**: V1.0.0
|
||||
**测试状态**: 待测试验证
|
||||
@@ -0,0 +1,87 @@
|
||||
-- ==========================================
|
||||
-- 班主任考核提交功能必要数据
|
||||
-- 功能:插入班主任考核提交功能所需的考核指标数据
|
||||
-- 作者:系统开发
|
||||
-- 时间:2025-01-27
|
||||
-- ==========================================
|
||||
|
||||
-- 插入必要的考核指标数据
|
||||
-- 注意:这些指标是班主任考核提交功能必需的,请确保在数据库中存在
|
||||
|
||||
-- 1. 班级扣分指标
|
||||
INSERT INTO `bmzr_assessment_indicator` (
|
||||
`id`, `tenant_id`, `indicator_name`, `indicator_code`, `indicator_type`,
|
||||
`parent_id`, `sort_order`, `weight_ratio`, `max_score`, `score`,
|
||||
`allow_self_evaluation`, `allow_superior_evaluation`, `status`, `remark`,
|
||||
`create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`
|
||||
) VALUES (
|
||||
1882452817132150786, '000000', '班级扣分', 'bzrwjkf001', 'routine',
|
||||
0, 1, 1.0000, 50.00, 50.00,
|
||||
'1', '1', '0', '班级管理实效评分指标',
|
||||
103, 1, NOW(), 1, NOW(), 0
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
indicator_name = VALUES(indicator_name),
|
||||
update_time = NOW();
|
||||
|
||||
-- 2. 及时并妥善处理好学生违纪事件
|
||||
INSERT INTO `bmzr_assessment_indicator` (
|
||||
`id`, `tenant_id`, `indicator_name`, `indicator_code`, `indicator_type`,
|
||||
`parent_id`, `sort_order`, `weight_ratio`, `max_score`, `score`,
|
||||
`allow_self_evaluation`, `allow_superior_evaluation`, `status`, `remark`,
|
||||
`create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`
|
||||
) VALUES (
|
||||
1882452817132150787, '000000', '及时并妥善处理好学生违纪事件', 'bzrtsgz001', 'special',
|
||||
0, 1, 1.0000, 20.00, 20.00,
|
||||
'1', '1', '0', '特色工作评分指标',
|
||||
103, 1, NOW(), 1, NOW(), 0
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
indicator_name = VALUES(indicator_name),
|
||||
update_time = NOW();
|
||||
|
||||
-- 3. 班级活动获奖情况
|
||||
INSERT INTO `bmzr_assessment_indicator` (
|
||||
`id`, `tenant_id`, `indicator_name`, `indicator_code`, `indicator_type`,
|
||||
`parent_id`, `sort_order`, `weight_ratio`, `max_score`, `score`,
|
||||
`allow_self_evaluation`, `allow_superior_evaluation`, `status`, `remark`,
|
||||
`create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`
|
||||
) VALUES (
|
||||
1882452817132150788, '000000', '班级活动获奖情况', 'bzrtsgz002', 'special',
|
||||
0, 2, 1.0000, 20.00, 20.00,
|
||||
'1', '1', '0', '特色工作评分指标',
|
||||
103, 1, NOW(), 1, NOW(), 0
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
indicator_name = VALUES(indicator_name),
|
||||
update_time = NOW();
|
||||
|
||||
-- 4. 班级宣传工作有特色
|
||||
INSERT INTO `bmzr_assessment_indicator` (
|
||||
`id`, `tenant_id`, `indicator_name`, `indicator_code`, `indicator_type`,
|
||||
`parent_id`, `sort_order`, `weight_ratio`, `max_score`, `score`,
|
||||
`allow_self_evaluation`, `allow_superior_evaluation`, `status`, `remark`,
|
||||
`create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`
|
||||
) VALUES (
|
||||
1882452817132150789, '000000', '班级宣传工作有特色', 'bzrtsgz003', 'special',
|
||||
0, 3, 1.0000, 20.00, 20.00,
|
||||
'1', '1', '0', '特色工作评分指标',
|
||||
103, 1, NOW(), 1, NOW(), 0
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
indicator_name = VALUES(indicator_name),
|
||||
update_time = NOW();
|
||||
|
||||
-- 5. 其他特色工作
|
||||
INSERT INTO `bmzr_assessment_indicator` (
|
||||
`id`, `tenant_id`, `indicator_name`, `indicator_code`, `indicator_type`,
|
||||
`parent_id`, `sort_order`, `weight_ratio`, `max_score`, `score`,
|
||||
`allow_self_evaluation`, `allow_superior_evaluation`, `status`, `remark`,
|
||||
`create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `deleted`
|
||||
) VALUES (
|
||||
1882452817132150790, '000000', '其他', 'bzrtsgz004', 'special',
|
||||
0, 4, 1.0000, 20.00, 20.00,
|
||||
'1', '1', '0', '特色工作评分指标',
|
||||
103, 1, NOW(), 1, NOW(), 0
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
indicator_name = VALUES(indicator_name),
|
||||
update_time = NOW();
|
||||
|
||||
-- 创建完成提示
|
||||
SELECT '班主任考核提交功能必要数据插入完成!' AS result;
|
||||
@@ -0,0 +1,86 @@
|
||||
# 班主任考核提交功能权限配置
|
||||
|
||||
## API接口权限字符
|
||||
|
||||
### 新增的API接口权限
|
||||
以下是新增的班主任考核提交功能相关的API接口权限字符,需要在系统菜单权限中进行配置:
|
||||
|
||||
1. **获取考核提交详情数据**
|
||||
- 权限字符:`bzrkh:teacherAssessment:detail`
|
||||
- 接口路径:`GET /bzrkh/teacherAssessment/submitDetail`
|
||||
- 功能描述:获取考核提交弹窗的详情数据
|
||||
|
||||
2. **提交考核评分数据**
|
||||
- 权限字符:`bzrkh:teacherAssessment:submit`
|
||||
- 接口路径:`POST /bzrkh/teacherAssessment/submitScore`
|
||||
- 功能描述:提交班主任考核评分数据
|
||||
|
||||
### 现有的API接口权限
|
||||
以下是现有的相关API接口权限:
|
||||
|
||||
1. **查询班主任管理的班级列表**
|
||||
- 权限字符:`bzrkh:teacherAssessment:list`
|
||||
- 接口路径:`GET /bzrkh/teacherAssessment/classes`
|
||||
|
||||
2. **查询班主任考核计划列表**
|
||||
- 权限字符:`bzrkh:teacherAssessment:list`
|
||||
- 接口路径:`GET /bzrkh/teacherAssessment/plans`
|
||||
|
||||
3. **提交考核(原有)**
|
||||
- 权限字符:`bzrkh:teacherAssessment:submit`
|
||||
- 接口路径:`POST /bzrkh/teacherAssessment/submit`
|
||||
|
||||
4. **查看考核详情(原有)**
|
||||
- 权限字符:`bzrkh:teacherAssessment:detail`
|
||||
- 接口路径:`GET /bzrkh/teacherAssessment/detail`
|
||||
|
||||
## 菜单权限配置建议
|
||||
|
||||
### 菜单配置
|
||||
建议在系统管理-菜单管理中配置以下菜单项:
|
||||
|
||||
```
|
||||
父菜单:班主任考核管理
|
||||
├── 考核计划管理(已有)
|
||||
└── 班主任考核提交(新增)
|
||||
├── 权限字符:bzrkh:teacherAssessment:list
|
||||
├── 权限字符:bzrkh:teacherAssessment:detail
|
||||
└── 权限字符:bzrkh:teacherAssessment:submit
|
||||
```
|
||||
|
||||
### 角色权限分配
|
||||
建议为以下角色分配相应权限:
|
||||
|
||||
1. **班主任角色**
|
||||
- `bzrkh:teacherAssessment:list` - 查看班级和考核计划列表
|
||||
- `bzrkh:teacherAssessment:detail` - 查看考核详情
|
||||
- `bzrkh:teacherAssessment:submit` - 提交考核
|
||||
|
||||
2. **学工管理员角色**
|
||||
- 全部权限(包括考核计划管理权限)
|
||||
|
||||
3. **系统管理员角色**
|
||||
- 全部权限
|
||||
|
||||
## 数据库表说明
|
||||
|
||||
### 涉及的主要表
|
||||
1. `bmzr_assessment_score` - 班主任考核得分表(核心业务表)
|
||||
2. `bmzr_assessment_plan` - 考核计划表
|
||||
3. `bmzr_assessment_scheme` - 考核方案表
|
||||
4. `bmzr_assessment_indicator` - 考核指标表
|
||||
5. `xg_class_msg` - 班级信息表
|
||||
6. `xg_student_msg` - 学生信息表
|
||||
|
||||
### 关键业务逻辑
|
||||
1. **系数计算**:根据班级人数、住校生人数、班级层次自动计算系数
|
||||
2. **指标管理**:支持常规工作指标、班级扣分指标、特色工作指标
|
||||
3. **数据存储**:评分数据统一存储在`bmzr_assessment_score`表中
|
||||
4. **数据更新**:采用逻辑删除+重新插入的方式确保数据一致性
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 权限配置完成后需要重新登录系统生效
|
||||
2. 确保相关角色用户已分配对应的菜单权限
|
||||
3. 建议先在测试环境验证权限配置正确性
|
||||
4. 需要确保数据库中存在相关的考核指标数据(特别是5个特定编码的指标)
|
||||
@@ -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 - 考核方案导出权限
|
||||
-- ==========================================
|
||||
@@ -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)的班级
|
||||
*/
|
||||
@@ -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
|
||||
@@ -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 - 考核计划导出权限
|
||||
-- ==========================================
|
||||
@@ -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
|
||||
- **开发者**: 系统开发团队
|
||||
@@ -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. 扩展说明
|
||||
|
||||
该模块为班主任考核管理系统的基础模块,后续可基于此模块扩展:
|
||||
|
||||
- 考核指标管理
|
||||
- 考核方案管理
|
||||
- 考核计划管理
|
||||
- 考核评分管理
|
||||
|
||||
所有扩展模块都可以引用指标类型进行关联设计。
|
||||
+37
-2
@@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@@ -22,6 +23,8 @@ import org.dromara.zsjy.domain.vo.ZsjyEnrollmentInfoVo;
|
||||
import org.dromara.zsjy.domain.bo.ZsjyEnrollmentInfoBo;
|
||||
import org.dromara.zsjy.service.IZsjyEnrollmentInfoService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xg.service.IXgSysDeptService;
|
||||
import org.dromara.xg.domain.vo.XgSysDeptVo;
|
||||
|
||||
/**
|
||||
* 招生报名信息Controller
|
||||
@@ -36,6 +39,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
public class ZsjyEnrollmentInfoController extends BaseController {
|
||||
|
||||
private final IZsjyEnrollmentInfoService enrollmentInfoService;
|
||||
private final IXgSysDeptService xgSysDeptService;
|
||||
|
||||
/**
|
||||
* 查询招生报名信息列表
|
||||
@@ -101,6 +105,7 @@ public class ZsjyEnrollmentInfoController extends BaseController {
|
||||
/**
|
||||
* 根据身份证号和准考证号查询报名信息
|
||||
*/
|
||||
@SaIgnore
|
||||
@GetMapping("/query")
|
||||
public R<ZsjyEnrollmentInfoVo> queryByIdCardAndExamNumber(
|
||||
@RequestParam(required = false) String idCard,
|
||||
@@ -112,7 +117,7 @@ public class ZsjyEnrollmentInfoController extends BaseController {
|
||||
/**
|
||||
* 提交报名信息(供学生端使用)
|
||||
*/
|
||||
@SaCheckPermission("zsjy:mobile:enrollment:apply")
|
||||
@SaIgnore
|
||||
@Log(title = "学生报名", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/submit")
|
||||
@@ -123,7 +128,7 @@ public class ZsjyEnrollmentInfoController extends BaseController {
|
||||
/**
|
||||
* 查询我的报名状态(供学生端使用)
|
||||
*/
|
||||
@SaCheckPermission("zsjy:mobile:enrollment:status")
|
||||
@SaIgnore
|
||||
@GetMapping("/myStatus")
|
||||
public R<ZsjyEnrollmentInfoVo> getMyEnrollmentStatus(
|
||||
@RequestParam String idCard,
|
||||
@@ -153,6 +158,36 @@ public class ZsjyEnrollmentInfoController extends BaseController {
|
||||
return R.fail("请提供要更新的报名信息ID");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学院列表(供移动端公开访问)
|
||||
*/
|
||||
@SaIgnore
|
||||
@GetMapping("/colleges")
|
||||
public R<List<XgSysDeptVo>> getColleges() {
|
||||
try {
|
||||
// 调用学院部门服务获取学院列表
|
||||
List<XgSysDeptVo> colleges = xgSysDeptService.selectCollegeList();
|
||||
return R.ok(colleges);
|
||||
} catch (Exception e) {
|
||||
return R.fail("获取学院列表异常: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据学院ID获取专业列表(供移动端公开访问)
|
||||
*/
|
||||
@SaIgnore
|
||||
@GetMapping("/majors/{collegeId}")
|
||||
public R<List<XgSysDeptVo>> getMajorsByCollegeId(@PathVariable Long collegeId) {
|
||||
try {
|
||||
// 调用学院部门服务获取专业列表
|
||||
List<XgSysDeptVo> majors = xgSysDeptService.selectMajorListByCollegeId(collegeId);
|
||||
return R.ok(majors);
|
||||
} catch (Exception e) {
|
||||
return R.fail("获取专业列表异常: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+161
@@ -0,0 +1,161 @@
|
||||
package org.dromara.zsjy.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.zsjy.domain.bo.ZsjyQrCodeBo;
|
||||
import org.dromara.zsjy.domain.vo.ZsjyQrCodeVo;
|
||||
import org.dromara.zsjy.service.IZsjyQrCodeService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 二维码管理Controller
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Slf4j
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/zsjy/qrcode")
|
||||
@Tag(name = "二维码管理", description = "招生二维码管理功能")
|
||||
public class ZsjyQrCodeController extends BaseController {
|
||||
|
||||
private final IZsjyQrCodeService qrCodeService;
|
||||
|
||||
/**
|
||||
* 查询二维码信息列表
|
||||
*/
|
||||
@Operation(summary = "查询二维码列表", description = "分页查询二维码信息列表")
|
||||
@SaCheckPermission("zsjy:qrcode:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<ZsjyQrCodeVo> list(@Validated ZsjyQrCodeBo bo, PageQuery pageQuery) {
|
||||
return qrCodeService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出二维码信息列表
|
||||
*/
|
||||
@Operation(summary = "导出二维码列表", description = "导出二维码信息到Excel")
|
||||
@SaCheckPermission("zsjy:qrcode:export")
|
||||
@Log(title = "二维码管理", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(@Validated ZsjyQrCodeBo bo, HttpServletResponse response) {
|
||||
List<ZsjyQrCodeVo> list = qrCodeService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "二维码信息", ZsjyQrCodeVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取二维码信息详细信息
|
||||
*/
|
||||
@Operation(summary = "获取二维码详情", description = "根据ID获取二维码详细信息")
|
||||
@SaCheckPermission("zsjy:qrcode:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<ZsjyQrCodeVo> getInfo(
|
||||
@Parameter(description = "二维码ID", required = true)
|
||||
@PathVariable @NotNull(message = "主键不能为空") Long id) {
|
||||
return R.ok(qrCodeService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增二维码信息
|
||||
*/
|
||||
@Operation(summary = "新增二维码", description = "创建新的二维码")
|
||||
@SaCheckPermission("zsjy:qrcode:add")
|
||||
@Log(title = "二维码管理", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody ZsjyQrCodeBo bo) {
|
||||
return toAjax(qrCodeService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改二维码信息
|
||||
*/
|
||||
@Operation(summary = "修改二维码", description = "修改二维码信息")
|
||||
@SaCheckPermission("zsjy:qrcode:edit")
|
||||
@Log(title = "二维码管理", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ZsjyQrCodeBo bo) {
|
||||
return toAjax(qrCodeService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除二维码信息
|
||||
*/
|
||||
@Operation(summary = "删除二维码", description = "批量删除二维码信息")
|
||||
@SaCheckPermission("zsjy:qrcode:remove")
|
||||
@Log(title = "二维码管理", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(
|
||||
@Parameter(description = "二维码ID数组", required = true)
|
||||
@PathVariable @NotEmpty(message = "主键不能为空") Long[] ids) {
|
||||
return toAjax(qrCodeService.deleteWithValidByIds(Arrays.asList(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证二维码Token有效性
|
||||
*/
|
||||
@Operation(summary = "验证Token", description = "验证二维码访问令牌是否有效")
|
||||
@GetMapping("/validate/{token}")
|
||||
public R<Boolean> validateToken(
|
||||
@Parameter(description = "访问令牌", required = true)
|
||||
@PathVariable String token) {
|
||||
return R.ok(qrCodeService.validateToken(token));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据Token获取二维码信息
|
||||
*/
|
||||
@Operation(summary = "根据Token获取二维码", description = "通过访问令牌获取二维码信息")
|
||||
@GetMapping("/token/{token}")
|
||||
public R<ZsjyQrCodeVo> getByToken(
|
||||
@Parameter(description = "访问令牌", required = true)
|
||||
@PathVariable String token) {
|
||||
return R.ok(qrCodeService.queryByAccessToken(token));
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加二维码使用次数
|
||||
*/
|
||||
@Operation(summary = "增加使用次数", description = "增加二维码使用次数")
|
||||
@PostMapping("/increment/{id}")
|
||||
public R<Void> incrementUsage(
|
||||
@Parameter(description = "二维码ID", required = true)
|
||||
@PathVariable @NotNull(message = "主键不能为空") Long id) {
|
||||
return toAjax(qrCodeService.incrementUsage(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成新的访问令牌
|
||||
*/
|
||||
@Operation(summary = "生成Token", description = "生成新的访问令牌")
|
||||
@SaCheckPermission("zsjy:qrcode:token")
|
||||
@PostMapping("/generate-token")
|
||||
public R<String> generateToken() {
|
||||
return R.ok(qrCodeService.generateAccessToken());
|
||||
}
|
||||
|
||||
}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
package org.dromara.zsjy.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 二维码管理对象 zsjy_qr_code
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("zsjy_qr_code")
|
||||
public class ZsjyQrCode extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 二维码名称
|
||||
*/
|
||||
private String codeName;
|
||||
|
||||
/**
|
||||
* 二维码类型(1-招生报名)
|
||||
*/
|
||||
private Integer codeType;
|
||||
|
||||
/**
|
||||
* 二维码内容(URL)
|
||||
*/
|
||||
private String qrContent;
|
||||
|
||||
/**
|
||||
* 访问令牌
|
||||
*/
|
||||
private String accessToken;
|
||||
|
||||
/**
|
||||
* 过期时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date expireTime;
|
||||
|
||||
/**
|
||||
* 最大使用次数(0-无限制)
|
||||
*/
|
||||
private Integer maxUsage;
|
||||
|
||||
/**
|
||||
* 当前使用次数
|
||||
*/
|
||||
private Integer currentUsage;
|
||||
|
||||
/**
|
||||
* 状态(0-禁用 1-启用)
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
package org.dromara.zsjy.domain.bo;
|
||||
|
||||
import org.dromara.zsjy.domain.ZsjyQrCode;
|
||||
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;
|
||||
|
||||
/**
|
||||
* 二维码管理业务对象 zsjy_qr_code
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = ZsjyQrCode.class, reverseConvertGenerate = false)
|
||||
public class ZsjyQrCodeBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 二维码名称
|
||||
*/
|
||||
@NotBlank(message = "二维码名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 100, message = "二维码名称长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String codeName;
|
||||
|
||||
/**
|
||||
* 二维码类型(1-招生报名)
|
||||
*/
|
||||
@NotNull(message = "二维码类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer codeType;
|
||||
|
||||
/**
|
||||
* 二维码内容(URL)
|
||||
*/
|
||||
@NotBlank(message = "二维码内容不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String qrContent;
|
||||
|
||||
/**
|
||||
* 访问令牌
|
||||
*/
|
||||
@NotBlank(message = "访问令牌不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 255, message = "访问令牌长度不能超过255个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String accessToken;
|
||||
|
||||
/**
|
||||
* 过期时间
|
||||
*/
|
||||
private Date expireTime;
|
||||
|
||||
/**
|
||||
* 最大使用次数(0-无限制)
|
||||
*/
|
||||
@NotNull(message = "最大使用次数不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Min(value = 0, message = "最大使用次数不能小于0", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer maxUsage;
|
||||
|
||||
/**
|
||||
* 当前使用次数
|
||||
*/
|
||||
private Integer currentUsage;
|
||||
|
||||
/**
|
||||
* 状态(0-禁用 1-启用)
|
||||
*/
|
||||
@NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer status;
|
||||
|
||||
// VO类基础字段(强制性规范)
|
||||
private Long createBy;
|
||||
private Date createTime;
|
||||
private Long updateBy;
|
||||
private Date updateTime;
|
||||
|
||||
}
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
package org.dromara.zsjy.domain.vo;
|
||||
|
||||
import org.dromara.zsjy.domain.ZsjyQrCode;
|
||||
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 java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 二维码管理视图对象 zsjy_qr_code
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = ZsjyQrCode.class)
|
||||
public class ZsjyQrCodeVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 二维码名称
|
||||
*/
|
||||
@ExcelProperty(value = "二维码名称")
|
||||
private String codeName;
|
||||
|
||||
/**
|
||||
* 二维码类型(1-招生报名)
|
||||
*/
|
||||
@ExcelProperty(value = "二维码类型")
|
||||
private Integer codeType;
|
||||
|
||||
/**
|
||||
* 二维码内容(URL)
|
||||
*/
|
||||
@ExcelProperty(value = "二维码内容")
|
||||
private String qrContent;
|
||||
|
||||
/**
|
||||
* 访问令牌
|
||||
*/
|
||||
@ExcelProperty(value = "访问令牌")
|
||||
private String accessToken;
|
||||
|
||||
/**
|
||||
* 过期时间
|
||||
*/
|
||||
@ExcelProperty(value = "过期时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date expireTime;
|
||||
|
||||
/**
|
||||
* 最大使用次数(0-无限制)
|
||||
*/
|
||||
@ExcelProperty(value = "最大使用次数")
|
||||
private Integer maxUsage;
|
||||
|
||||
/**
|
||||
* 当前使用次数
|
||||
*/
|
||||
@ExcelProperty(value = "当前使用次数")
|
||||
private Integer currentUsage;
|
||||
|
||||
/**
|
||||
* 状态(0-禁用 1-启用)
|
||||
*/
|
||||
@ExcelProperty(value = "状态")
|
||||
private Integer status;
|
||||
|
||||
// VO类基础字段(强制性规范)
|
||||
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;
|
||||
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
package org.dromara.zsjy.mapper;
|
||||
|
||||
import org.dromara.zsjy.domain.ZsjyQrCode;
|
||||
import org.dromara.zsjy.domain.vo.ZsjyQrCodeVo;
|
||||
import org.dromara.zsjy.domain.bo.ZsjyQrCodeBo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 二维码管理 Mapper 接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
public interface ZsjyQrCodeMapper extends BaseMapperPlus<ZsjyQrCode, ZsjyQrCodeVo> {
|
||||
|
||||
/**
|
||||
* 分页查询二维码列表
|
||||
*
|
||||
* @param page 分页参数
|
||||
* @param bo 查询条件
|
||||
* @return 二维码列表
|
||||
*/
|
||||
IPage<ZsjyQrCodeVo> selectQrCodePageList(@Param("page") Page<?> page, @Param("bo") ZsjyQrCodeBo bo);
|
||||
|
||||
/**
|
||||
* 查询二维码列表(非分页)
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 二维码列表
|
||||
*/
|
||||
List<ZsjyQrCodeVo> selectQrCodeVoList(ZsjyQrCodeBo bo);
|
||||
|
||||
/**
|
||||
* 根据访问令牌查询二维码信息
|
||||
*
|
||||
* @param accessToken 访问令牌
|
||||
* @return 二维码信息
|
||||
*/
|
||||
ZsjyQrCodeVo selectByAccessToken(String accessToken);
|
||||
|
||||
/**
|
||||
* 更新二维码使用次数
|
||||
*
|
||||
* @param id 二维码ID
|
||||
* @return 更新结果
|
||||
*/
|
||||
int updateUsageCount(@Param("id") Long id);
|
||||
|
||||
}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
package org.dromara.zsjy.service;
|
||||
|
||||
import org.dromara.zsjy.domain.bo.ZsjyQrCodeBo;
|
||||
import org.dromara.zsjy.domain.vo.ZsjyQrCodeVo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 二维码管理Service接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
public interface IZsjyQrCodeService {
|
||||
|
||||
/**
|
||||
* 查询二维码信息
|
||||
*
|
||||
* @param id 二维码信息主键
|
||||
* @return 二维码信息
|
||||
*/
|
||||
ZsjyQrCodeVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询二维码信息列表
|
||||
*
|
||||
* @param bo 二维码信息
|
||||
* @param pageQuery 分页参数
|
||||
* @return 二维码信息集合
|
||||
*/
|
||||
TableDataInfo<ZsjyQrCodeVo> queryPageList(ZsjyQrCodeBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询二维码信息列表
|
||||
*
|
||||
* @param bo 二维码信息
|
||||
* @return 二维码信息集合
|
||||
*/
|
||||
List<ZsjyQrCodeVo> queryList(ZsjyQrCodeBo bo);
|
||||
|
||||
/**
|
||||
* 新增二维码信息
|
||||
*
|
||||
* @param bo 二维码信息
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean insertByBo(ZsjyQrCodeBo bo);
|
||||
|
||||
/**
|
||||
* 修改二维码信息
|
||||
*
|
||||
* @param bo 二维码信息
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean updateByBo(ZsjyQrCodeBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除二维码信息
|
||||
*
|
||||
* @param ids 需要删除的二维码信息主键集合
|
||||
* @param isValid 是否校验,true-删除前校验,false-不校验
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据访问令牌查询二维码信息
|
||||
*
|
||||
* @param accessToken 访问令牌
|
||||
* @return 二维码信息
|
||||
*/
|
||||
ZsjyQrCodeVo queryByAccessToken(String accessToken);
|
||||
|
||||
/**
|
||||
* 验证二维码Token有效性
|
||||
*
|
||||
* @param accessToken 访问令牌
|
||||
* @return 是否有效
|
||||
*/
|
||||
Boolean validateToken(String accessToken);
|
||||
|
||||
/**
|
||||
* 增加二维码使用次数
|
||||
*
|
||||
* @param id 二维码ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean incrementUsage(Long id);
|
||||
|
||||
/**
|
||||
* 生成唯一的访问令牌
|
||||
*
|
||||
* @return 访问令牌
|
||||
*/
|
||||
String generateAccessToken();
|
||||
|
||||
}
|
||||
+242
@@ -0,0 +1,242 @@
|
||||
package org.dromara.zsjy.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.zsjy.domain.ZsjyQrCode;
|
||||
import org.dromara.zsjy.domain.bo.ZsjyQrCodeBo;
|
||||
import org.dromara.zsjy.domain.vo.ZsjyQrCodeVo;
|
||||
import org.dromara.zsjy.mapper.ZsjyQrCodeMapper;
|
||||
import org.dromara.zsjy.service.IZsjyQrCodeService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 二维码管理Service业务层处理
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class ZsjyQrCodeServiceImpl implements IZsjyQrCodeService {
|
||||
|
||||
private final ZsjyQrCodeMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询二维码信息
|
||||
*/
|
||||
@Override
|
||||
public ZsjyQrCodeVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询二维码信息列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<ZsjyQrCodeVo> queryPageList(ZsjyQrCodeBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<ZsjyQrCode> lqw = buildQueryWrapper(bo);
|
||||
Page<ZsjyQrCodeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询二维码信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<ZsjyQrCodeVo> queryList(ZsjyQrCodeBo bo) {
|
||||
LambdaQueryWrapper<ZsjyQrCode> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<ZsjyQrCode> buildQueryWrapper(ZsjyQrCodeBo bo) {
|
||||
LambdaQueryWrapper<ZsjyQrCode> lqw = Wrappers.lambdaQuery();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCodeName()), ZsjyQrCode::getCodeName, bo.getCodeName());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getCodeType()), ZsjyQrCode::getCodeType, bo.getCodeType());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getQrContent()), ZsjyQrCode::getQrContent, bo.getQrContent());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAccessToken()), ZsjyQrCode::getAccessToken, bo.getAccessToken());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getExpireTime()), ZsjyQrCode::getExpireTime, bo.getExpireTime());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getMaxUsage()), ZsjyQrCode::getMaxUsage, bo.getMaxUsage());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getCurrentUsage()), ZsjyQrCode::getCurrentUsage, bo.getCurrentUsage());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getStatus()), ZsjyQrCode::getStatus, bo.getStatus());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增二维码信息
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(ZsjyQrCodeBo bo) {
|
||||
ZsjyQrCode add = BeanUtil.toBean(bo, ZsjyQrCode.class);
|
||||
validEntityBeforeSave(add);
|
||||
|
||||
// 如果没有提供访问令牌,则自动生成
|
||||
if (StrUtil.isBlank(add.getAccessToken())) {
|
||||
add.setAccessToken(generateAccessToken());
|
||||
}
|
||||
|
||||
// 初始化当前使用次数
|
||||
if (add.getCurrentUsage() == null) {
|
||||
add.setCurrentUsage(0);
|
||||
}
|
||||
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改二维码信息
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateByBo(ZsjyQrCodeBo bo) {
|
||||
ZsjyQrCode update = BeanUtil.toBean(bo, ZsjyQrCode.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(ZsjyQrCode entity) {
|
||||
// 校验二维码名称唯一性
|
||||
if (StringUtils.isNotBlank(entity.getCodeName())) {
|
||||
LambdaQueryWrapper<ZsjyQrCode> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(ZsjyQrCode::getCodeName, entity.getCodeName());
|
||||
if (entity.getId() != null) {
|
||||
lqw.ne(ZsjyQrCode::getId, entity.getId());
|
||||
}
|
||||
boolean exists = baseMapper.exists(lqw);
|
||||
if (exists) {
|
||||
throw new RuntimeException("二维码名称已存在");
|
||||
}
|
||||
}
|
||||
|
||||
// 校验访问令牌唯一性
|
||||
if (StringUtils.isNotBlank(entity.getAccessToken())) {
|
||||
LambdaQueryWrapper<ZsjyQrCode> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(ZsjyQrCode::getAccessToken, entity.getAccessToken());
|
||||
if (entity.getId() != null) {
|
||||
lqw.ne(ZsjyQrCode::getId, entity.getId());
|
||||
}
|
||||
boolean exists = baseMapper.exists(lqw);
|
||||
if (exists) {
|
||||
throw new RuntimeException("访问令牌已存在");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除二维码信息
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// 删除前校验逻辑(如果需要的话)
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据访问令牌查询二维码信息
|
||||
*/
|
||||
@Override
|
||||
public ZsjyQrCodeVo queryByAccessToken(String accessToken) {
|
||||
if (StrUtil.isBlank(accessToken)) {
|
||||
return null;
|
||||
}
|
||||
LambdaQueryWrapper<ZsjyQrCode> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(ZsjyQrCode::getAccessToken, accessToken);
|
||||
return baseMapper.selectVoOne(lqw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证二维码Token有效性
|
||||
*/
|
||||
@Override
|
||||
public Boolean validateToken(String accessToken) {
|
||||
ZsjyQrCodeVo qrCode = queryByAccessToken(accessToken);
|
||||
if (qrCode == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查状态
|
||||
if (qrCode.getStatus() == null || qrCode.getStatus() != 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查过期时间
|
||||
if (qrCode.getExpireTime() != null && qrCode.getExpireTime().before(new Date())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查使用次数限制
|
||||
if (qrCode.getMaxUsage() != null && qrCode.getMaxUsage() > 0) {
|
||||
if (qrCode.getCurrentUsage() != null && qrCode.getCurrentUsage() >= qrCode.getMaxUsage()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加二维码使用次数
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean incrementUsage(Long id) {
|
||||
return baseMapper.updateUsageCount(id) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成唯一的访问令牌
|
||||
*/
|
||||
@Override
|
||||
public String generateAccessToken() {
|
||||
String token;
|
||||
int maxAttempts = 10;
|
||||
int attempts = 0;
|
||||
|
||||
do {
|
||||
token = "qr_" + IdUtil.fastSimpleUUID();
|
||||
attempts++;
|
||||
|
||||
// 检查令牌是否已存在
|
||||
LambdaQueryWrapper<ZsjyQrCode> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(ZsjyQrCode::getAccessToken, token);
|
||||
boolean exists = baseMapper.exists(lqw);
|
||||
|
||||
if (!exists) {
|
||||
return token;
|
||||
}
|
||||
|
||||
} while (attempts < maxAttempts);
|
||||
|
||||
throw new RuntimeException("生成访问令牌失败,请重试");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.zsjy.mapper.ZsjyQrCodeMapper">
|
||||
|
||||
<resultMap type="org.dromara.zsjy.domain.vo.ZsjyQrCodeVo" id="ZsjyQrCodeVoResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="codeName" column="code_name"/>
|
||||
<result property="codeType" column="code_type"/>
|
||||
<result property="qrContent" column="qr_content"/>
|
||||
<result property="accessToken" column="access_token"/>
|
||||
<result property="expireTime" column="expire_time"/>
|
||||
<result property="maxUsage" column="max_usage"/>
|
||||
<result property="currentUsage" column="current_usage"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectZsjyQrCodeVo">
|
||||
select id, code_name, code_type, qr_content, access_token, expire_time,
|
||||
max_usage, current_usage, status, create_by, create_time,
|
||||
update_by, update_time
|
||||
from zsjy_qr_code
|
||||
</sql>
|
||||
|
||||
<!-- 分页查询二维码列表 -->
|
||||
<select id="selectQrCodePageList" parameterType="org.dromara.zsjy.domain.bo.ZsjyQrCodeBo" resultMap="ZsjyQrCodeVoResult">
|
||||
<include refid="selectZsjyQrCodeVo"/>
|
||||
<where>
|
||||
deleted = 0
|
||||
<if test="bo.codeName != null and bo.codeName != ''">
|
||||
AND code_name like concat('%', #{bo.codeName}, '%')
|
||||
</if>
|
||||
<if test="bo.codeType != null">
|
||||
AND code_type = #{bo.codeType}
|
||||
</if>
|
||||
<if test="bo.qrContent != null and bo.qrContent != ''">
|
||||
AND qr_content like concat('%', #{bo.qrContent}, '%')
|
||||
</if>
|
||||
<if test="bo.accessToken != null and bo.accessToken != ''">
|
||||
AND access_token = #{bo.accessToken}
|
||||
</if>
|
||||
<if test="bo.expireTime != null">
|
||||
AND expire_time = #{bo.expireTime}
|
||||
</if>
|
||||
<if test="bo.maxUsage != null">
|
||||
AND max_usage = #{bo.maxUsage}
|
||||
</if>
|
||||
<if test="bo.currentUsage != null">
|
||||
AND current_usage = #{bo.currentUsage}
|
||||
</if>
|
||||
<if test="bo.status != null">
|
||||
AND status = #{bo.status}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 查询二维码列表(非分页) -->
|
||||
<select id="selectQrCodeVoList" parameterType="org.dromara.zsjy.domain.bo.ZsjyQrCodeBo" resultMap="ZsjyQrCodeVoResult">
|
||||
<include refid="selectZsjyQrCodeVo"/>
|
||||
<where>
|
||||
deleted = 0
|
||||
<if test="codeName != null and codeName != ''">
|
||||
AND code_name like concat('%', #{codeName}, '%')
|
||||
</if>
|
||||
<if test="codeType != null">
|
||||
AND code_type = #{codeType}
|
||||
</if>
|
||||
<if test="qrContent != null and qrContent != ''">
|
||||
AND qr_content like concat('%', #{qrContent}, '%')
|
||||
</if>
|
||||
<if test="accessToken != null and accessToken != ''">
|
||||
AND access_token = #{accessToken}
|
||||
</if>
|
||||
<if test="expireTime != null">
|
||||
AND expire_time = #{expireTime}
|
||||
</if>
|
||||
<if test="maxUsage != null">
|
||||
AND max_usage = #{maxUsage}
|
||||
</if>
|
||||
<if test="currentUsage != null">
|
||||
AND current_usage = #{currentUsage}
|
||||
</if>
|
||||
<if test="status != null">
|
||||
AND status = #{status}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 根据访问令牌查询二维码信息 -->
|
||||
<select id="selectByAccessToken" parameterType="String" resultMap="ZsjyQrCodeVoResult">
|
||||
<include refid="selectZsjyQrCodeVo"/>
|
||||
WHERE access_token = #{accessToken} AND deleted = 0
|
||||
</select>
|
||||
|
||||
<!-- 更新二维码使用次数 -->
|
||||
<update id="updateUsageCount" parameterType="Long">
|
||||
UPDATE zsjy_qr_code
|
||||
SET current_usage = IFNULL(current_usage, 0) + 1,
|
||||
update_time = NOW()
|
||||
WHERE id = #{id} AND deleted = 0
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
@@ -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`
|
||||
@@ -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功能 |
|
||||
@@ -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
|
||||
@@ -0,0 +1,206 @@
|
||||
-- ==========================================
|
||||
-- 班主任考核管理系统表结构(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',
|
||||
`class_id` bigint(20) COMMENT '班级ID',
|
||||
`self_score` decimal(5,2) COMMENT '自评分数',
|
||||
`self_comment` text COMMENT '自评意见',
|
||||
`self_overall_comment` text COMMENT '自我总体评价',
|
||||
`self_submit_time` datetime COMMENT '自评提交时间',
|
||||
`superior_score` decimal(5,2) COMMENT '上级评分数',
|
||||
`superior_comment` text COMMENT '上级评意见',
|
||||
`superior_overall_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`),
|
||||
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='班主任考核指标与违纪处分奖励关联关系表';
|
||||
@@ -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分以下)');
|
||||
|
||||
|
||||
-- ==========================================
|
||||
@@ -0,0 +1,125 @@
|
||||
// 移动端新生报名相关API接口
|
||||
import { request } from '@/common/request.js'
|
||||
|
||||
/**
|
||||
* 新生报名相关API
|
||||
*/
|
||||
export const enrollmentApi = {
|
||||
/**
|
||||
* 提交报名信息(供学生端使用)
|
||||
* @param {Object} data 报名表单数据
|
||||
*/
|
||||
submitApplication: (data) => {
|
||||
return request({
|
||||
url: '/zsjy/enrollment/info/submit',
|
||||
method: 'POST',
|
||||
data: data,
|
||||
header: {
|
||||
isToken: false // 不需要登录token,支持对外公开访问
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 查询我的报名状态(供学生端使用)
|
||||
* @param {Object} params 查询参数 { idCard?, examNumber? }
|
||||
*/
|
||||
queryMyStatus: (params) => {
|
||||
return request({
|
||||
url: '/zsjy/enrollment/info/myStatus',
|
||||
method: 'GET',
|
||||
params: params,
|
||||
header: {
|
||||
isToken: false // 不需要登录token,支持对外公开访问
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 根据身份证号和准考证号查询报名信息
|
||||
* @param {string} idCard 身份证号
|
||||
* @param {string} examNumber 准考证号
|
||||
*/
|
||||
queryByInfo: (idCard, examNumber) => {
|
||||
return request({
|
||||
url: '/zsjy/enrollment/info/query',
|
||||
method: 'GET',
|
||||
params: {
|
||||
idCard,
|
||||
examNumber
|
||||
},
|
||||
header: {
|
||||
isToken: false // 不需要登录token
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取学院列表
|
||||
*/
|
||||
getCollegeList: () => {
|
||||
return request({
|
||||
url: '/zsjy/enrollment/info/colleges',
|
||||
method: 'GET',
|
||||
header: {
|
||||
isToken: false // 不需要登录token,支持对外公开访问
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 根据学院ID获取专业列表
|
||||
* @param {string|number} collegeId 学院ID
|
||||
*/
|
||||
getMajorsByCollegeId: (collegeId) => {
|
||||
return request({
|
||||
url: `/zsjy/enrollment/info/majors/${collegeId}`,
|
||||
method: 'GET',
|
||||
header: {
|
||||
isToken: false // 不需要登录token,支持对外公开访问
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 便捷方法 - 提交报名申请
|
||||
* @param {Object} formData 报名表单数据
|
||||
*/
|
||||
export const submitEnrollmentApplication = (formData) => {
|
||||
return enrollmentApi.submitApplication(formData)
|
||||
}
|
||||
|
||||
/**
|
||||
* 便捷方法 - 查询报名状态
|
||||
* @param {Object} params 查询参数
|
||||
*/
|
||||
export const queryMyEnrollmentStatus = (params) => {
|
||||
return enrollmentApi.queryMyStatus(params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 便捷方法 - 根据证件信息查询
|
||||
* @param {string} idCard 身份证号
|
||||
* @param {string} examNumber 准考证号
|
||||
*/
|
||||
export const queryEnrollmentByInfo = (idCard, examNumber) => {
|
||||
return enrollmentApi.queryByInfo(idCard, examNumber)
|
||||
}
|
||||
|
||||
/**
|
||||
* 便捷方法 - 获取学院列表
|
||||
*/
|
||||
export const getCollegeList = () => {
|
||||
return enrollmentApi.getCollegeList()
|
||||
}
|
||||
|
||||
/**
|
||||
* 便捷方法 - 根据学院ID获取专业列表
|
||||
* @param {string|number} collegeId 学院ID
|
||||
*/
|
||||
export const getMajorsByCollegeId = (collegeId) => {
|
||||
return enrollmentApi.getMajorsByCollegeId(collegeId)
|
||||
}
|
||||
|
||||
export default enrollmentApi
|
||||
@@ -1,5 +1,5 @@
|
||||
// 移动端字典数据获取公共方法 - 适配Vue 2.6.14 + uni-app 2.x
|
||||
import { get } from './request.js';
|
||||
import { request } from './request.js';
|
||||
|
||||
/**
|
||||
* 字典数据缓存管理
|
||||
@@ -76,8 +76,12 @@ const dictCache = {
|
||||
* @returns {Promise} 字典数据Promise
|
||||
*/
|
||||
export const getDicts = (dictType) => {
|
||||
return get(`/system/dict/data/type/${dictType}`, null, {
|
||||
isToken: false, // 字典数据不需要token认证
|
||||
return request({
|
||||
url: `/system/dict/data/type/${dictType}`,
|
||||
method: 'GET',
|
||||
header: {
|
||||
isToken: false // 字典数据不需要token认证
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -34,6 +34,17 @@ function getToken() {
|
||||
function handleUnauthorized(message = '登录已失效,请重新登录') {
|
||||
console.log('🔒 处理401未授权响应:', message);
|
||||
|
||||
// 获取当前页面路径
|
||||
const pages = getCurrentPages();
|
||||
const currentPage = pages[pages.length - 1];
|
||||
const currentPath = '/' + currentPage.route;
|
||||
|
||||
// 如果是新生报名页面,不跳转到登录页,只是静默处理
|
||||
if (currentPath === '/pages/enrollment/index') {
|
||||
console.log('📋 新生报名页面401错误,使用兜底数据,不跳转登录页');
|
||||
return;
|
||||
}
|
||||
|
||||
// 清除登录信息
|
||||
try {
|
||||
uni.removeStorageSync('access_token');
|
||||
@@ -53,11 +64,6 @@ function handleUnauthorized(message = '登录已失效,请重新登录') {
|
||||
|
||||
// 延迟跳转,确保Toast显示
|
||||
setTimeout(() => {
|
||||
// 获取当前页面路径
|
||||
const pages = getCurrentPages();
|
||||
const currentPage = pages[pages.length - 1];
|
||||
const currentPath = '/' + currentPage.route;
|
||||
|
||||
// 如果当前不是登录页,则跳转到登录页
|
||||
if (currentPath !== '/pages/login/index') {
|
||||
console.log('🔄 从', currentPath, '跳转到登录页');
|
||||
|
||||
@@ -215,6 +215,13 @@
|
||||
"navigationBarBackgroundColor": "#0051d9",
|
||||
"navigationBarTextStyle": "white"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/enrollment/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "新生报名登记",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -27,6 +27,7 @@
|
||||
"@fullcalendar/timegrid": "^6.1.18",
|
||||
"@fullcalendar/vue3": "^6.1.18",
|
||||
"@highlightjs/vue-plugin": "2.1.0",
|
||||
"@types/qrcode": "^1.5.5",
|
||||
"@vueup/vue-quill": "1.2.0",
|
||||
"@vueuse/core": "13.1.0",
|
||||
"animate.css": "4.1.1",
|
||||
@@ -45,6 +46,7 @@
|
||||
"jspdf-font": "^1.0.7",
|
||||
"nprogress": "0.2.0",
|
||||
"pinia": "3.0.2",
|
||||
"qrcode": "^1.5.4",
|
||||
"screenfull": "6.0.2",
|
||||
"vue": "3.5.13",
|
||||
"vue-cropper": "1.1.1",
|
||||
|
||||
@@ -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<string | number>) {
|
||||
return request({
|
||||
url: `/bzrkh/assessmentIndicator/${ids}`,
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指标类型选项
|
||||
* @returns
|
||||
*/
|
||||
export function getIndicatorTypeOptions() {
|
||||
return request({
|
||||
url: '/bzrkh/assessmentIndicatorType/listAllIncludeDeleted',
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取父级指标选项
|
||||
* @returns
|
||||
*/
|
||||
export function getParentIndicatorOptions() {
|
||||
return request({
|
||||
url: '/bzrkh/assessmentIndicator/treeselect',
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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<AssessmentIndicatorTypeVO[]> => {
|
||||
return request({
|
||||
url: '/bzrkh/assessmentIndicatorType/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询所有班主任考核指标类型列表(包括已逻辑删除的)
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
export const listAllAssessmentIndicatorType = (query?: AssessmentIndicatorTypeQuery): AxiosPromise<AssessmentIndicatorTypeVO[]> => {
|
||||
return request({
|
||||
url: '/bzrkh/assessmentIndicatorType/listAllIncludeDeleted',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询班主任考核指标类型详细
|
||||
* @param id
|
||||
*/
|
||||
export const getAssessmentIndicatorType = (id: string | number): AxiosPromise<AssessmentIndicatorTypeVO> => {
|
||||
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<string | number>) => {
|
||||
return request({
|
||||
url: '/bzrkh/assessmentIndicatorType/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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<AssessmentPlanVO[]> => {
|
||||
return request({
|
||||
url: '/bzrkh/assessmentPlan/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询班主任考核计划详细
|
||||
* @param id
|
||||
*/
|
||||
export const getAssessmentPlan = (id: string | number): AxiosPromise<AssessmentPlanVO> => {
|
||||
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<string | number>) => {
|
||||
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<AssessmentSchemeOption[]> => {
|
||||
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
|
||||
}
|
||||
});
|
||||
};
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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<BmzrAssessmentSchemeVO> => {
|
||||
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<string | number>) => {
|
||||
return request({
|
||||
url: '/bzrkh/assessmentScheme/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 导出班主任考核方案
|
||||
* @param query
|
||||
*/
|
||||
export const exportBmzrAssessmentScheme = (query?: BmzrAssessmentSchemeQuery): AxiosPromise<any> => {
|
||||
return request({
|
||||
url: '/bzrkh/assessmentScheme/export',
|
||||
method: 'post',
|
||||
data: query
|
||||
});
|
||||
};
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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<string | number>) {
|
||||
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
|
||||
});
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import {
|
||||
TeacherClassVO,
|
||||
TeacherAssessmentPlanVO,
|
||||
TeacherAssessmentPlanQuery,
|
||||
TeacherClassQuery,
|
||||
AssessmentDetailVO,
|
||||
AssessmentSubmitVO
|
||||
} from './types';
|
||||
|
||||
/**
|
||||
* 查询班主任管理的班级列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
export const listTeacherClasses = (query?: TeacherClassQuery): AxiosPromise<TeacherClassVO[]> => {
|
||||
return request({
|
||||
url: '/bzrkh/teacherAssessment/classes',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询班主任考核计划列表(按班级)
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
export const listTeacherAssessmentPlans = (query?: TeacherAssessmentPlanQuery): AxiosPromise<TeacherAssessmentPlanVO[]> => {
|
||||
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<void> => {
|
||||
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<any> => {
|
||||
return request({
|
||||
url: '/bzrkh/teacherAssessment/detail',
|
||||
method: 'get',
|
||||
params: {
|
||||
planId,
|
||||
classId
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取考核提交详情数据(用于提交弹窗)
|
||||
* @param planId 计划ID
|
||||
* @param classId 班级ID
|
||||
*/
|
||||
export const getAssessmentSubmitDetail = (planId: string | number, classId: string | number): AxiosPromise<AssessmentDetailVO> => {
|
||||
return request({
|
||||
url: '/bzrkh/teacherAssessment/submitDetail',
|
||||
method: 'get',
|
||||
params: {
|
||||
planId,
|
||||
classId
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 提交考核评分数据
|
||||
* @param data 考核提交数据
|
||||
*/
|
||||
export const submitAssessmentScore = (data: AssessmentSubmitVO): AxiosPromise<void> => {
|
||||
return request({
|
||||
url: '/bzrkh/teacherAssessment/submitScore',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
};
|
||||
Loaded 100 of 112 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user