Merge branch 'master' of http://47.99.164.66:3000/hzdyjs-xg/all-project
This commit is contained in:
commit
0c0bf72f46
208 files changed
+33841
-2031
No files matched your search
+8
-1
@@ -169,4 +169,11 @@ script/*
|
||||
stgl-api-test.js
|
||||
update/*
|
||||
本地临时文件目录/*
|
||||
docs/变更管理/
|
||||
docs/变更管理/
|
||||
学生考核模块的提示词.md
|
||||
学生考核模块的上下文信息临时存储.md
|
||||
学生违纪记录界面-移动端.md
|
||||
学生考核申请界面-移动端.md
|
||||
移动端附件组件规范.md
|
||||
移动端违纪记录模块开发规范.md
|
||||
.playwright-mcp/
|
||||
@@ -414,6 +414,7 @@
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- 社团管理模块 -->
|
||||
<!-- <dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
|
||||
@@ -112,6 +112,7 @@
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-xg</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 学工管理-学生信息管理模块 -->
|
||||
<!-- <dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
|
||||
+13
-1
@@ -324,7 +324,6 @@ public class JcbtWorkStudyApplicationController extends BaseController {
|
||||
* 获取当前用户学生信息
|
||||
*/
|
||||
@Operation(summary = "获取当前用户学生信息")
|
||||
@SaCheckPermission("jcbt:workStudyApplication:query")
|
||||
@GetMapping("/currentStudentInfo")
|
||||
public R<XgStudentMsgVo> getCurrentStudentInfo() {
|
||||
try {
|
||||
@@ -347,4 +346,17 @@ public class JcbtWorkStudyApplicationController extends BaseController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生已申请岗位列表
|
||||
*/
|
||||
@Operation(summary = "获取学生已申请岗位列表")
|
||||
@GetMapping("/student/applicationStatus")
|
||||
@SaCheckPermission("jcbt:workStudyApplication:query")
|
||||
public R<List<Map<String, Object>>> getStudentApplicationStatus() {
|
||||
|
||||
List<Map<String, Object>> statusList = workStudyApplicationService.getStudentApplicationStatus();
|
||||
return R.ok(statusList);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+57
-3
@@ -416,10 +416,64 @@ public class JcbtWorkStudyPositionController extends BaseController {
|
||||
|
||||
/**
|
||||
* 获取当前用户所在学院ID
|
||||
* TODO: 实现获取当前用户学院ID的逻辑
|
||||
* 通过查询学生信息或用户部门信息获取
|
||||
*/
|
||||
private Long getCurrentUserCollegeId() {
|
||||
// 临时返回固定值,实际应该从用户信息中获取
|
||||
return 1L;
|
||||
try {
|
||||
// 获取当前登录用户ID
|
||||
Long userId = LoginHelper.getUserId();
|
||||
if (userId == null) {
|
||||
log.warn("用户未登录");
|
||||
return null;
|
||||
}
|
||||
|
||||
// 首先尝试通过学生信息获取学院ID
|
||||
try {
|
||||
XgStudentMsgVo studentInfo = xgStudentMsgService.queryByUserId(userId);
|
||||
if (studentInfo != null && studentInfo.getCollegeId() != null) {
|
||||
log.debug("通过学生信息获取学院ID: {}", studentInfo.getCollegeId());
|
||||
return Long.parseLong(studentInfo.getCollegeId());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.debug("通过学生信息获取学院ID失败,可能用户不是学生: {}", e.getMessage());
|
||||
}
|
||||
|
||||
// 如果不是学生用户,通过用户部门信息获取学院ID
|
||||
try {
|
||||
Long deptId = LoginHelper.getDeptId();
|
||||
if (deptId != null) {
|
||||
log.debug("通过部门信息获取学院ID: {}", deptId);
|
||||
return deptId;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.debug("通过部门信息获取学院ID失败: {}", e.getMessage());
|
||||
}
|
||||
|
||||
// 尝试通过部门类别获取学院信息
|
||||
try {
|
||||
String deptCategory = LoginHelper.getDeptCategory();
|
||||
String deptName = LoginHelper.getDeptName();
|
||||
log.debug("用户部门信息 - 部门名称: {}, 部门类别: {}", deptName, deptCategory);
|
||||
|
||||
// 如果部门类别是学院类型,则使用部门ID作为学院ID
|
||||
if ("college".equals(deptCategory) || "学院".equals(deptCategory)) {
|
||||
Long deptId = LoginHelper.getDeptId();
|
||||
if (deptId != null) {
|
||||
log.info("根据部门类别确认为学院用户,学院ID: {}", deptId);
|
||||
return deptId;
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.debug("通过部门类别获取学院ID失败: {}", e.getMessage());
|
||||
}
|
||||
|
||||
log.warn("无法获取用户 {} 的学院信息,用户ID: {}, 部门ID: {}, 部门名称: {}",
|
||||
userId, userId, LoginHelper.getDeptId(), LoginHelper.getDeptName());
|
||||
return null;
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("获取当前用户学院ID失败", e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -25,6 +27,7 @@ public class JcbtScholarshipBatch extends BaseEntity {
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
@@ -101,6 +104,7 @@ public class JcbtScholarshipBatch extends BaseEntity {
|
||||
* 租户ID
|
||||
*/
|
||||
@TableField("tenant_id")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long tenantId;
|
||||
|
||||
/**
|
||||
|
||||
-6
@@ -48,12 +48,6 @@ public class JcbtWorkStudyPosition extends BaseEntity {
|
||||
*/
|
||||
private String workTime;
|
||||
|
||||
/**
|
||||
* 工作地点
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String workLocation;
|
||||
|
||||
/**
|
||||
* 岗位有效期开始
|
||||
*/
|
||||
|
||||
+4
@@ -8,6 +8,8 @@ import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -27,6 +29,7 @@ public class JcbtScholarshipBatchBo extends BaseEntity {
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
@@ -121,6 +124,7 @@ public class JcbtScholarshipBatchBo extends BaseEntity {
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long tenantId;
|
||||
|
||||
}
|
||||
-7
@@ -56,13 +56,6 @@ public class JcbtWorkStudyPositionBo extends BaseEntity {
|
||||
@Size(max = 200, message = "工作时间描述长度不能超过200个字符")
|
||||
private String workTime;
|
||||
|
||||
/**
|
||||
* 工作地点
|
||||
*/
|
||||
@NotBlank(message = "工作地点不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 200, message = "工作地点描述长度不能超过200个字符")
|
||||
private String workLocation;
|
||||
|
||||
/**
|
||||
* 岗位有效期开始
|
||||
*/
|
||||
|
||||
+6
@@ -8,6 +8,8 @@ import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
@@ -32,6 +34,7 @@ public class JcbtScholarshipBatchVo implements Serializable {
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
@@ -130,6 +133,7 @@ public class JcbtScholarshipBatchVo implements Serializable {
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
@@ -141,6 +145,7 @@ public class JcbtScholarshipBatchVo implements Serializable {
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
@@ -157,6 +162,7 @@ public class JcbtScholarshipBatchVo implements Serializable {
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long tenantId;
|
||||
|
||||
}
|
||||
+3
@@ -5,6 +5,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.jcbt.domain.JcbtWorkStudyApplication;
|
||||
import org.dromara.jcbt.domain.vo.JcbtWorkStudyApplicationVo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -24,4 +25,6 @@ public interface JcbtWorkStudyApplicationMapper extends BaseMapperPlus<JcbtWorkS
|
||||
*/
|
||||
Map<String, Object> selectApplicationStatus(@Param("positionId") Long positionId, @Param("userId") Long userId);
|
||||
|
||||
List<Map<String, Object>> selectApplicationStatusByStudentId(@Param("studentId") Long studentId);
|
||||
|
||||
}
|
||||
+6
@@ -164,4 +164,10 @@ public interface IJcbtWorkStudyApplicationService {
|
||||
*/
|
||||
Map<String, Object> getPositionApplicationStatistics(Long positionId);
|
||||
|
||||
/**
|
||||
* 获取学生已申请岗位列表
|
||||
*
|
||||
* @return 学生已申请岗位状态列表 (包含岗位ID和申请状态)
|
||||
*/
|
||||
List<Map<String, Object>> getStudentApplicationStatus();
|
||||
}
|
||||
+172
-4
@@ -3,9 +3,11 @@ package org.dromara.jcbt.service.impl;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
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.springframework.stereotype.Service;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
@@ -30,6 +32,7 @@ import java.util.List;
|
||||
* @author ruoyi
|
||||
* @date 2025-01-27
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class JcbtScholarshipBatchServiceImpl implements IJcbtScholarshipBatchService {
|
||||
@@ -112,9 +115,52 @@ public class JcbtScholarshipBatchServiceImpl implements IJcbtScholarshipBatchSer
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateByBo(JcbtScholarshipBatchBo bo) {
|
||||
// 添加调试日志 - 检查BO的ID
|
||||
log.info("=== 修改操作调试 ===");
|
||||
log.info("输入BO的ID: {}, 类型: {}", bo.getId(), bo.getId() != null ? bo.getId().getClass().getSimpleName() : "null");
|
||||
log.info("输入BO的批次编码: {}", bo.getBatchCode());
|
||||
|
||||
JcbtScholarshipBatch update = MapstructUtils.convert(bo, JcbtScholarshipBatch.class);
|
||||
|
||||
// 添加调试日志 - 检查转换后实体的ID
|
||||
log.info("转换后实体的ID: {}, 类型: {}", update.getId(), update.getId() != null ? update.getId().getClass().getSimpleName() : "null");
|
||||
log.info("转换后实体的批次编码: {}", update.getBatchCode());
|
||||
|
||||
validEntityBeforeSave(update);
|
||||
boolean flag = baseMapper.updateById(update) > 0;
|
||||
|
||||
// 添加详细调试 - 检查updateById前的状态
|
||||
log.info("=== updateById执行前检查 ===");
|
||||
log.info("实体ID是否为null: {}", update.getId() == null);
|
||||
log.info("实体ID值: {}", update.getId());
|
||||
log.info("实体批次编码: {}", update.getBatchCode());
|
||||
|
||||
// 先检查数据库中是否存在该记录
|
||||
JcbtScholarshipBatch existingRecord = baseMapper.selectById(update.getId());
|
||||
log.info("数据库中是否存在该记录: {}", existingRecord != null);
|
||||
if (existingRecord != null) {
|
||||
log.info("数据库中的记录: ID={}, 批次编码={}", existingRecord.getId(), existingRecord.getBatchCode());
|
||||
}
|
||||
|
||||
log.info("=== 开始执行updateById ===");
|
||||
|
||||
// 使用更安全的更新策略,避免唯一键约束冲突
|
||||
boolean flag;
|
||||
try {
|
||||
flag = baseMapper.updateById(update) > 0;
|
||||
log.info("updateById执行成功: {}", flag);
|
||||
} catch (Exception e) {
|
||||
log.error("updateById执行失败,错误信息: {}", e.getMessage());
|
||||
|
||||
// 如果是唯一键冲突,尝试使用自定义更新SQL
|
||||
if (e.getMessage().contains("Duplicate entry") || e.getMessage().contains("duplicate key")) {
|
||||
log.info("检测到唯一键冲突,尝试使用自定义更新策略");
|
||||
flag = updateByIdSafely(update);
|
||||
log.info("自定义更新策略执行结果: {}", flag);
|
||||
} else {
|
||||
// 其他异常直接抛出
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
if (flag) {
|
||||
// 更新批次类型关联关系
|
||||
@@ -129,8 +175,17 @@ public class JcbtScholarshipBatchServiceImpl implements IJcbtScholarshipBatchSer
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(JcbtScholarshipBatch entity){
|
||||
// 添加调试日志 - 检查校验时的ID
|
||||
log.info("=== 数据校验调试 ===");
|
||||
log.info("校验时实体的ID: {}, 类型: {}", entity.getId(), entity.getId() != null ? entity.getId().getClass().getSimpleName() : "null");
|
||||
log.info("校验时实体的批次编码: {}", entity.getBatchCode());
|
||||
|
||||
// 批次编码重复性校验
|
||||
if (!checkBatchCodeUnique(entity.getBatchCode(), entity.getId())) {
|
||||
boolean isUnique = checkBatchCodeUnique(entity.getBatchCode(), entity.getId());
|
||||
log.info("唯一性校验结果: {}", isUnique);
|
||||
|
||||
if (!isUnique) {
|
||||
log.error("批次编码唯一性校验失败 - 编码: {}, ID: {}", entity.getBatchCode(), entity.getId());
|
||||
throw new RuntimeException("批次编码已存在");
|
||||
}
|
||||
|
||||
@@ -208,12 +263,125 @@ public class JcbtScholarshipBatchServiceImpl implements IJcbtScholarshipBatchSer
|
||||
*/
|
||||
@Override
|
||||
public Boolean checkBatchCodeUnique(String batchCode, Long id) {
|
||||
boolean exist = baseMapper.exists(Wrappers.<JcbtScholarshipBatch>lambdaQuery()
|
||||
// 添加调试日志 - 检查唯一性校验逻辑
|
||||
log.info("=== 唯一性校验调试 ===");
|
||||
log.info("校验参数 - 批次编码: {}, ID: {}", batchCode, id);
|
||||
log.info("ID是否非空: {}", ObjectUtil.isNotNull(id));
|
||||
|
||||
// 获取当前租户ID
|
||||
String tenantId = LoginHelper.getTenantId();
|
||||
log.info("当前租户ID: {}", tenantId);
|
||||
|
||||
LambdaQueryWrapper<JcbtScholarshipBatch> queryWrapper = Wrappers.<JcbtScholarshipBatch>lambdaQuery()
|
||||
.eq(JcbtScholarshipBatch::getBatchCode, batchCode)
|
||||
.ne(ObjectUtil.isNotNull(id), JcbtScholarshipBatch::getId, id));
|
||||
.eq(JcbtScholarshipBatch::getDeleted, 0); // 关键修复:只检查未删除的记录
|
||||
|
||||
// 如果是修改操作(ID不为空),排除当前记录
|
||||
if (ObjectUtil.isNotNull(id)) {
|
||||
queryWrapper.ne(JcbtScholarshipBatch::getId, id);
|
||||
log.info("修改操作 - 排除当前记录ID: {}", id);
|
||||
} else {
|
||||
log.info("新增操作 - 不排除任何记录");
|
||||
}
|
||||
|
||||
// 查询数量而不是存在性,以便调试
|
||||
long count = baseMapper.selectCount(queryWrapper);
|
||||
boolean exist = count > 0;
|
||||
|
||||
log.info("数据库查询结果 - 相同编码的其他未删除记录数量: {}", count);
|
||||
log.info("数据库查询结果 - 存在相同编码的其他未删除记录: {}", exist);
|
||||
log.info("唯一性校验最终结果: {}", !exist);
|
||||
|
||||
// 详细分析重复记录情况
|
||||
if (count > 0) {
|
||||
log.error("=== 发现重复记录,详细查询 ===");
|
||||
List<JcbtScholarshipBatch> duplicateRecords = baseMapper.selectList(queryWrapper);
|
||||
for (JcbtScholarshipBatch record : duplicateRecords) {
|
||||
log.error("重复记录详情 - ID: {}, 批次编码: {}, 是否删除: {}",
|
||||
record.getId(), record.getBatchCode(), record.getDeleted());
|
||||
}
|
||||
|
||||
// 检查是否为ID不匹配问题
|
||||
if (ObjectUtil.isNotNull(id)) {
|
||||
boolean foundExactMatch = duplicateRecords.stream()
|
||||
.anyMatch(record -> record.getId().equals(id));
|
||||
if (!foundExactMatch) {
|
||||
log.error("=== ID不匹配问题 ===");
|
||||
log.error("请求修改的ID: {}", id);
|
||||
log.error("数据库中实际存在的ID: {}",
|
||||
duplicateRecords.stream().map(JcbtScholarshipBatch::getId).toList());
|
||||
throw new RuntimeException(String.format(
|
||||
"记录ID不匹配!请求ID: %s,数据库实际ID: %s。请刷新页面重新获取最新数据。",
|
||||
id, duplicateRecords.get(0).getId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return !exist;
|
||||
}
|
||||
|
||||
/**
|
||||
* 安全更新方法 - 避免唯一键约束冲突
|
||||
* 使用指定字段更新,绕过可能的唯一键约束问题
|
||||
*/
|
||||
private Boolean updateByIdSafely(JcbtScholarshipBatch update) {
|
||||
log.info("=== 执行安全更新策略 ===");
|
||||
|
||||
// 构建更新条件
|
||||
LambdaUpdateWrapper<JcbtScholarshipBatch> updateWrapper = Wrappers.lambdaUpdate();
|
||||
updateWrapper.eq(JcbtScholarshipBatch::getId, update.getId());
|
||||
|
||||
// 只更新非唯一键相关的字段,避免约束冲突
|
||||
if (update.getBatchName() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getBatchName, update.getBatchName());
|
||||
}
|
||||
if (update.getAcademicYear() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getAcademicYear, update.getAcademicYear());
|
||||
}
|
||||
if (update.getSemester() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getSemester, update.getSemester());
|
||||
}
|
||||
if (update.getBatchType() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getBatchType, update.getBatchType());
|
||||
}
|
||||
if (update.getStartTime() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getStartTime, update.getStartTime());
|
||||
}
|
||||
if (update.getEndTime() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getEndTime, update.getEndTime());
|
||||
}
|
||||
if (update.getApplyStartTime() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getApplyStartTime, update.getApplyStartTime());
|
||||
}
|
||||
if (update.getApplyEndTime() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getApplyEndTime, update.getApplyEndTime());
|
||||
}
|
||||
if (update.getReviewStartTime() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getReviewStartTime, update.getReviewStartTime());
|
||||
}
|
||||
if (update.getReviewEndTime() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getReviewEndTime, update.getReviewEndTime());
|
||||
}
|
||||
if (update.getStatus() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getStatus, update.getStatus());
|
||||
}
|
||||
if (update.getDescription() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getDescription, update.getDescription());
|
||||
}
|
||||
if (update.getNoticeContent() != null) {
|
||||
updateWrapper.set(JcbtScholarshipBatch::getNoticeContent, update.getNoticeContent());
|
||||
}
|
||||
|
||||
// 更新基础字段
|
||||
updateWrapper.set(JcbtScholarshipBatch::getUpdateBy, update.getUpdateBy());
|
||||
updateWrapper.set(JcbtScholarshipBatch::getUpdateTime, update.getUpdateTime());
|
||||
|
||||
int result = baseMapper.update(null, updateWrapper);
|
||||
log.info("安全更新策略影响行数: {}", result);
|
||||
|
||||
return result > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更改批次状态
|
||||
*/
|
||||
|
||||
+40
-10
@@ -45,33 +45,63 @@ public class JcbtScholarshipBatchTypeServiceImpl implements IJcbtScholarshipBatc
|
||||
return true; // 空列表视为成功
|
||||
}
|
||||
|
||||
// 先删除原有关联关系
|
||||
// 先逻辑删除原有关联关系
|
||||
deleteByBatchId(batchId);
|
||||
|
||||
// 批量插入新的关联关系
|
||||
List<JcbtScholarshipBatchType> batchTypes = new ArrayList<>();
|
||||
// 智能插入新的关联关系(处理逻辑删除冲突)
|
||||
int sortOrder = 1;
|
||||
for (Long typeId : scholarshipTypeIds) {
|
||||
insertOrRestoreBatchType(batchId, typeId, tenantId, sortOrder++);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 智能插入或恢复批次类型关联记录
|
||||
* 如果存在已逻辑删除的记录,则恢复;否则插入新记录
|
||||
*
|
||||
* 核心逻辑:
|
||||
* 1. 先查询是否存在已逻辑删除的记录(deleted=1)
|
||||
* 2. 如果存在,则更新该记录为未删除状态(deleted=0),避免唯一键冲突
|
||||
* 3. 如果不存在,则正常插入新记录
|
||||
*/
|
||||
private void insertOrRestoreBatchType(Long batchId, Long typeId, String tenantId, int sortOrder) {
|
||||
// 查询是否存在已逻辑删除的记录(关键:包含deleted=1的记录)
|
||||
LambdaQueryWrapper<JcbtScholarshipBatchType> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.eq(JcbtScholarshipBatchType::getBatchId, batchId);
|
||||
queryWrapper.eq(JcbtScholarshipBatchType::getScholarshipTypeId, typeId);
|
||||
queryWrapper.eq(JcbtScholarshipBatchType::getTenantId, tenantId);
|
||||
queryWrapper.eq(JcbtScholarshipBatchType::getDeleted, 1); // 仅查询已删除的记录
|
||||
queryWrapper.last("LIMIT 1"); // 提升性能,只取一条记录
|
||||
|
||||
JcbtScholarshipBatchType deletedRecord = baseMapper.selectOne(queryWrapper);
|
||||
|
||||
if (deletedRecord != null) {
|
||||
// 策略1:恢复已删除的记录,避免唯一键冲突
|
||||
deletedRecord.setIsActive(1);
|
||||
deletedRecord.setSortOrder(sortOrder);
|
||||
deletedRecord.setUpdateBy(LoginHelper.getUserId());
|
||||
deletedRecord.setUpdateTime(new Date());
|
||||
deletedRecord.setDeleted(0); // 关键:恢复为未删除状态
|
||||
|
||||
baseMapper.updateById(deletedRecord);
|
||||
} else {
|
||||
// 策略2:不存在已删除记录,正常插入新记录
|
||||
JcbtScholarshipBatchType batchType = new JcbtScholarshipBatchType();
|
||||
batchType.setBatchId(batchId);
|
||||
batchType.setScholarshipTypeId(typeId);
|
||||
batchType.setIsActive(1);
|
||||
batchType.setSortOrder(sortOrder++);
|
||||
batchType.setSortOrder(sortOrder);
|
||||
batchType.setTenantId(tenantId);
|
||||
batchType.setCreateBy(LoginHelper.getUserId());
|
||||
batchType.setCreateTime(new Date());
|
||||
batchType.setUpdateBy(LoginHelper.getUserId());
|
||||
batchType.setUpdateTime(new Date());
|
||||
batchType.setDeleted(0);
|
||||
batchTypes.add(batchType);
|
||||
}
|
||||
|
||||
// 批量插入
|
||||
for (JcbtScholarshipBatchType batchType : batchTypes) {
|
||||
baseMapper.insert(batchType);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+70
-7
@@ -28,6 +28,9 @@ import org.dromara.xg.domain.vo.XgStudentMsgVo;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -338,25 +341,35 @@ public class JcbtWorkStudyApplicationServiceImpl implements IJcbtWorkStudyApplic
|
||||
|
||||
// 更新总状态 - 关键修改:确保状态正确更新
|
||||
String oldStatus = application.getStatus();
|
||||
if ("APPROVED".equals(reviewBo.getReviewResult())) {
|
||||
|
||||
// 标准化审核结果参数,兼容前端传递的小写值
|
||||
String reviewResult = reviewBo.getReviewResult();
|
||||
if (reviewResult != null) {
|
||||
reviewResult = reviewResult.toUpperCase();
|
||||
}
|
||||
|
||||
if ("APPROVED".equals(reviewResult)) {
|
||||
application.setStatus(WorkStudyApplicationStatusEnum.COLLEGE_APPROVED.getCode());
|
||||
log.info("🔍 [学院审核] 审核通过,状态更新: {} -> {}", oldStatus, WorkStudyApplicationStatusEnum.COLLEGE_APPROVED.getCode());
|
||||
} else if ("REJECTED".equals(reviewBo.getReviewResult())) {
|
||||
} else if ("REJECTED".equals(reviewResult)) {
|
||||
application.setStatus(WorkStudyApplicationStatusEnum.COLLEGE_REJECTED.getCode());
|
||||
log.info("🔍 [学院审核] 审核拒绝,状态更新: {} -> {}", oldStatus, WorkStudyApplicationStatusEnum.COLLEGE_REJECTED.getCode());
|
||||
} else {
|
||||
throw new ServiceException("审核结果参数错误,只支持approved或rejected");
|
||||
}
|
||||
|
||||
// 使用updateById确保更新
|
||||
boolean result = baseMapper.updateById(application) > 0;
|
||||
log.info("🔍 [学院审核] 数据库更新结果: {}", result ? "成功" : "失败");
|
||||
|
||||
if (result) {
|
||||
if (result) {
|
||||
// 验证更新后的状态
|
||||
JcbtWorkStudyApplication updatedApplication = baseMapper.selectById(reviewBo.getApplicationId());
|
||||
log.info("🔍 [学院审核] 更新后验证状态: {}, 审核状态: {}", updatedApplication.getStatus(), updatedApplication.getCollegeReviewStatus());
|
||||
|
||||
// 确保状态更新成功
|
||||
if ("APPROVED".equals(reviewBo.getReviewResult()) && !WorkStudyApplicationStatusEnum.COLLEGE_APPROVED.getCode().equals(updatedApplication.getStatus())) {
|
||||
String normalizedResult = reviewBo.getReviewResult() != null ? reviewBo.getReviewResult().toUpperCase() : "";
|
||||
if ("APPROVED".equals(normalizedResult) && !WorkStudyApplicationStatusEnum.COLLEGE_APPROVED.getCode().equals(updatedApplication.getStatus())) {
|
||||
log.error("🔍 [学院审核] 状态更新失败!期望: {}, 实际: {}", WorkStudyApplicationStatusEnum.COLLEGE_APPROVED.getCode(), updatedApplication.getStatus());
|
||||
throw new ServiceException("状态更新失败,请重试");
|
||||
}
|
||||
@@ -388,8 +401,13 @@ public class JcbtWorkStudyApplicationServiceImpl implements IJcbtWorkStudyApplic
|
||||
application.setFinalReviewerName(currentUserName);
|
||||
application.setFinalReviewComment(reviewBo.getReviewComment());
|
||||
|
||||
// 更新总状态
|
||||
if ("APPROVED".equals(reviewBo.getReviewResult())) {
|
||||
// 更新总状态 - 标准化审核结果参数,兼容前端传递的小写值
|
||||
String reviewResult = reviewBo.getReviewResult();
|
||||
if (reviewResult != null) {
|
||||
reviewResult = reviewResult.toUpperCase();
|
||||
}
|
||||
|
||||
if ("APPROVED".equals(reviewResult)) {
|
||||
application.setStatus(WorkStudyApplicationStatusEnum.FINAL_APPROVED.getCode());
|
||||
|
||||
// 更新岗位当前申请通过人数
|
||||
@@ -402,8 +420,10 @@ public class JcbtWorkStudyApplicationServiceImpl implements IJcbtWorkStudyApplic
|
||||
}
|
||||
positionMapper.updateById(position);
|
||||
}
|
||||
} else if ("REJECTED".equals(reviewBo.getReviewResult())) {
|
||||
} else if ("REJECTED".equals(reviewResult)) {
|
||||
application.setStatus(WorkStudyApplicationStatusEnum.FINAL_REJECTED.getCode());
|
||||
} else {
|
||||
throw new ServiceException("审核结果参数错误,只支持approved或rejected");
|
||||
}
|
||||
|
||||
return baseMapper.updateById(application) > 0;
|
||||
@@ -529,4 +549,47 @@ public class JcbtWorkStudyApplicationServiceImpl implements IJcbtWorkStudyApplic
|
||||
return statistics;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生已申请岗位状态列表
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getStudentApplicationStatus() {
|
||||
Long studentId = LoginHelper.getUserId();
|
||||
List<Map<String, Object>> resultList = baseMapper.selectApplicationStatusByStudentId(studentId);
|
||||
|
||||
// 转换数据结构并进行状态值转换
|
||||
List<Map<String, Object>> statusList = new ArrayList<>();
|
||||
for (Map<String, Object> item : resultList) {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put("positionId", item.get("position_id"));
|
||||
result.put("status", convertStatusToFrontend((String) item.get("status")));
|
||||
statusList.add(result);
|
||||
}
|
||||
|
||||
return statusList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将后端状态转换为前端状态
|
||||
*/
|
||||
private String convertStatusToFrontend(String backendStatus) {
|
||||
if (backendStatus == null) {
|
||||
return "submitted";
|
||||
}
|
||||
switch (backendStatus) {
|
||||
case "SUBMITTED":
|
||||
return "submitted";
|
||||
case "COLLEGE_APPROVED":
|
||||
return "college_reviewing";
|
||||
case "FINAL_APPROVED":
|
||||
return "approved";
|
||||
case "COLLEGE_REJECTED":
|
||||
case "FINAL_REJECTED":
|
||||
return "rejected";
|
||||
case "CANCELLED":
|
||||
return "cancelled";
|
||||
default:
|
||||
return "submitted";
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
@@ -133,4 +133,10 @@
|
||||
AND deleted = 0
|
||||
</select>
|
||||
|
||||
<select id="selectApplicationStatusByStudentId" resultType="java.util.Map">
|
||||
SELECT position_id, status
|
||||
FROM jcbt_work_study_application
|
||||
WHERE student_id = #{studentId} AND deleted = 0
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
+7
-9
@@ -6,7 +6,6 @@ CREATE TABLE jcbt_work_study_position (
|
||||
position_scope VARCHAR(20) DEFAULT 'COLLEGE' COMMENT '岗位发布范围(COLLEGE-本学院,UNIVERSITY-全校)',
|
||||
required_count INT NOT NULL COMMENT '需求人数',
|
||||
work_time VARCHAR(200) NOT NULL COMMENT '工作时间',
|
||||
work_location VARCHAR(200) NOT NULL COMMENT '工作地点',
|
||||
start_date DATETIME NOT NULL COMMENT '岗位有效期开始',
|
||||
end_date DATETIME NOT NULL COMMENT '岗位有效期结束',
|
||||
position_requirements TEXT COMMENT '岗位要求',
|
||||
@@ -37,45 +36,44 @@ CREATE TABLE jcbt_work_study_position (
|
||||
|
||||
-- 插入测试数据
|
||||
INSERT INTO jcbt_work_study_position (
|
||||
position_name, position_scope, required_count, work_time, work_location,
|
||||
position_name, position_scope, required_count, work_time,
|
||||
start_date, end_date, position_requirements, salary_info,
|
||||
contact_teacher, contact_phone, college_id, college_name, status, current_count
|
||||
) VALUES
|
||||
(
|
||||
'图书馆助理', 'UNIVERSITY', 5, '周一至周五 14:00-17:00', '图书馆一楼服务台',
|
||||
'图书馆助理', 'UNIVERSITY', 5, '周一至周五 14:00-17:00',
|
||||
'2025-01-01 00:00:00', '2025-06-30 23:59:59',
|
||||
'1. 熟悉图书馆基本业务流程;2. 责任心强,工作认真细致;3. 具备良好的沟通能力',
|
||||
'15元/小时,按月发放',
|
||||
'张老师', '13800138001', 1, '信息工程学院', 'PUBLISHED', 2
|
||||
),
|
||||
(
|
||||
'实验室管理员', 'COLLEGE', 3, '周一、三、五 16:00-18:00', '信息楼A301实验室',
|
||||
'实验室管理员', 'COLLEGE', 3, '周一、三、五 16:00-18:00',
|
||||
'2025-01-01 00:00:00', '2025-06-30 23:59:59',
|
||||
'1. 计算机相关专业优先;2. 熟悉实验室设备操作;3. 有相关工作经验者优先',
|
||||
'18元/小时,按月发放',
|
||||
'李老师', '13800138002', 1, '信息工程学院', 'RECRUITING', 1
|
||||
),
|
||||
(
|
||||
'教学助理', 'UNIVERSITY', 8, '根据课程安排,灵活调整', '各教学楼教室',
|
||||
'教学助理', 'UNIVERSITY', 8, '根据课程安排,灵活调整',
|
||||
'2025-01-01 00:00:00', '2025-06-30 23:59:59',
|
||||
'1. 学习成绩优良;2. 有较强的组织协调能力;3. 能够辅助教师完成教学任务',
|
||||
'12元/小时,按月发放',
|
||||
'王老师', '13800138003', 2, '经济管理学院', 'PUBLISHED', 5
|
||||
),
|
||||
(
|
||||
'食堂服务员', 'UNIVERSITY', 10, '11:00-13:00, 17:00-19:00', '学生食堂各楼层',
|
||||
'食堂服务员', 'UNIVERSITY', 10, '11:00-13:00, 17:00-19:00',
|
||||
'2025-01-01 00:00:00', '2025-06-30 23:59:59',
|
||||
'1. 身体健康,无传染性疾病;2. 工作积极主动;3. 能够承受一定的工作强度',
|
||||
'14元/小时,按月发放',
|
||||
'刘老师', '13800138004', 3, '后勤服务处', 'RECRUITING', 7
|
||||
),
|
||||
(
|
||||
'宿舍管理助理', 'COLLEGE', 6, '18:00-22:00(工作日)', '学生宿舍各楼栋',
|
||||
'宿舍管理助理', 'COLLEGE', 6, '18:00-22:00(工作日)',
|
||||
'2025-01-01 00:00:00', '2025-06-30 23:59:59',
|
||||
'1. 住校学生优先;2. 有责任心,能够处理突发情况;3. 沟通能力强',
|
||||
'13元/小时,按月发放',
|
||||
'陈老师', '13800138005', 4, '学生工作处', 'PUBLISHED', 3
|
||||
);
|
||||
|
||||
-- 如果表已存在,添加工作地点字段的ALTER语句
|
||||
-- ALTER TABLE jcbt_work_study_position ADD COLUMN work_location VARCHAR(200) NOT NULL COMMENT '工作地点' AFTER work_time;
|
||||
-- 注意:工作地点字段已从表结构中移除,不再需要
|
||||
+154
@@ -0,0 +1,154 @@
|
||||
package org.dromara.xskh.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentApplicationApprovalVo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentApplicationApprovalBo;
|
||||
import org.dromara.xskh.service.IXskhAssessmentApplicationApprovalService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 学生考核申请、班主任审核
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/assessment/application")
|
||||
public class XskhAssessmentApplicationApprovalController extends BaseController {
|
||||
|
||||
private final IXskhAssessmentApplicationApprovalService xskhAssessmentApplicationApprovalService;
|
||||
|
||||
/**
|
||||
* 查询学生考核申请、班主任审核列表
|
||||
*/
|
||||
@SaCheckPermission("assessment:application:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XskhAssessmentApplicationApprovalVo> list(XskhAssessmentApplicationApprovalBo bo,
|
||||
PageQuery pageQuery) {
|
||||
return xskhAssessmentApplicationApprovalService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生考核申请、班主任审核详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("assessment:application:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XskhAssessmentApplicationApprovalVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(xskhAssessmentApplicationApprovalService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核申请、班主任审核
|
||||
*/
|
||||
@SaCheckPermission("assessment:application:add")
|
||||
@Log(title = "学生考核申请、班主任审核", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Long> add(@Validated(AddGroup.class) @RequestBody XskhAssessmentApplicationApprovalBo bo) {
|
||||
return R.ok(xskhAssessmentApplicationApprovalService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核申请、班主任审核
|
||||
*/
|
||||
@SaCheckPermission("assessment:application:edit")
|
||||
@Log(title = "学生考核申请、班主任审核", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XskhAssessmentApplicationApprovalBo bo) {
|
||||
return toAjax(xskhAssessmentApplicationApprovalService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除学生考核申请、班主任审核
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("assessment:application:remove")
|
||||
@Log(title = "学生考核申请、班主任审核", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(xskhAssessmentApplicationApprovalService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存考核申请(草稿状态)
|
||||
*/
|
||||
@SaCheckPermission("assessment:application:save")
|
||||
@Log(title = "保存考核申请", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/save")
|
||||
public R<Void> saveApplication(@Validated @RequestBody XskhAssessmentApplicationApprovalBo bo) {
|
||||
return toAjax(xskhAssessmentApplicationApprovalService.saveApplication(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交考核申请
|
||||
*/
|
||||
@SaCheckPermission("assessment:application:submit")
|
||||
@Log(title = "提交考核申请", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/submit/{id}")
|
||||
public R<Void> submitApplication(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return toAjax(xskhAssessmentApplicationApprovalService.submitApplication(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除考核申请
|
||||
*/
|
||||
@SaCheckPermission("assessment:application:delete")
|
||||
@Log(title = "删除考核申请", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/delete/{id}")
|
||||
public R<Void> deleteApplication(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return toAjax(xskhAssessmentApplicationApprovalService.deleteApplication(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取可申请的考核计划列表
|
||||
*/
|
||||
@SaCheckPermission("assessment:application:available")
|
||||
@GetMapping("/available")
|
||||
public R<List<XskhAssessmentApplicationApprovalVo>> getAvailableSchedules() {
|
||||
return R.ok(xskhAssessmentApplicationApprovalService.getAvailableSchedules());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据学生ID和考核计划ID查询申请
|
||||
*/
|
||||
@SaCheckPermission("assessment:application:query")
|
||||
@GetMapping("/student/{studentId}/schedule/{scheduleId}")
|
||||
public R<XskhAssessmentApplicationApprovalVo> getByStudentAndSchedule(
|
||||
@NotNull(message = "学生ID不能为空") @PathVariable Long studentId,
|
||||
@NotNull(message = "考核计划ID不能为空") @PathVariable Long scheduleId) {
|
||||
return R.ok(xskhAssessmentApplicationApprovalService.getByStudentAndSchedule(studentId, scheduleId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据考核计划ID获取关联的指标数据
|
||||
*/
|
||||
@SaCheckPermission("assessment:application:query")
|
||||
@GetMapping("/indicators/{scheduleId}")
|
||||
public R<List<Object>> getIndicatorsByScheduleId(
|
||||
@NotNull(message = "考核计划ID不能为空") @PathVariable Long scheduleId) {
|
||||
return R.ok(xskhAssessmentApplicationApprovalService.getIndicatorsByScheduleId(scheduleId));
|
||||
}
|
||||
|
||||
}
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
package org.dromara.xskh.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentApprovalVo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentApprovalBo;
|
||||
import org.dromara.xskh.service.IXskhAssessmentApprovalService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 学生考核审核
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/assessment/approval")
|
||||
public class XskhAssessmentApprovalController extends BaseController {
|
||||
|
||||
private final IXskhAssessmentApprovalService xskhAssessmentApprovalService;
|
||||
|
||||
/**
|
||||
* 查询学生考核审核列表
|
||||
*/
|
||||
@SaCheckPermission("assessment:approval:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XskhAssessmentApprovalVo> list(XskhAssessmentApprovalBo bo, PageQuery pageQuery) {
|
||||
return xskhAssessmentApprovalService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生考核审核详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("assessment:approval:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XskhAssessmentApprovalVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(xskhAssessmentApprovalService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核审核
|
||||
*/
|
||||
@SaCheckPermission("assessment:approval:add")
|
||||
@Log(title = "学生考核审核", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XskhAssessmentApprovalBo bo) {
|
||||
return toAjax(xskhAssessmentApprovalService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核审核
|
||||
*/
|
||||
@SaCheckPermission("assessment:approval:edit")
|
||||
@Log(title = "学生考核审核", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XskhAssessmentApprovalBo bo) {
|
||||
return toAjax(xskhAssessmentApprovalService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除学生考核审核
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("assessment:approval:remove")
|
||||
@Log(title = "学生考核审核", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(xskhAssessmentApprovalService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 审核考核申请
|
||||
*/
|
||||
@SaCheckPermission("assessment:approval:approve")
|
||||
@Log(title = "审核考核申请", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/approve")
|
||||
public R<Void> approveApplication(@Validated @RequestBody XskhAssessmentApprovalBo bo) {
|
||||
return toAjax(xskhAssessmentApprovalService.approveApplication(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任班级下的考核申请列表
|
||||
*
|
||||
* @param scheduleId 考核计划ID(可选)
|
||||
* @param studentNo 学号(可选,支持模糊查询)
|
||||
* @param studentName 学生姓名(可选,支持模糊查询)
|
||||
* @param status 申请状态(可选,2-已提交 3-班主任审核 6-已完成,不包含草稿状态)
|
||||
* @param pageQuery 分页参数
|
||||
* @return 班主任班级下的考核申请列表(仅包含已提交、班主任审核、已完成的申请)
|
||||
*/
|
||||
@SaCheckPermission("assessment:approval:teacherClass")
|
||||
@GetMapping("/teacherClass")
|
||||
public TableDataInfo<XskhAssessmentApprovalVo> getTeacherClassApplications(
|
||||
@RequestParam(required = false) Long scheduleId,
|
||||
@RequestParam(required = false) String studentNo,
|
||||
@RequestParam(required = false) String studentName,
|
||||
@RequestParam(required = false) String status,
|
||||
PageQuery pageQuery) {
|
||||
return xskhAssessmentApprovalService.getTeacherClassApplications(scheduleId, studentNo, studentName, status,
|
||||
pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取考核计划列表(进行中和已结束)
|
||||
*
|
||||
* @return 可用的考核计划列表,包含进行中和已结束的计划
|
||||
*/
|
||||
@SaCheckPermission("assessment:approval:available")
|
||||
@GetMapping("/available")
|
||||
public R<List<XskhAssessmentApprovalVo>> getAvailableSchedules() {
|
||||
return R.ok(xskhAssessmentApprovalService.getAvailableSchedules());
|
||||
}
|
||||
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
package org.dromara.xskh.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentIndicatorVo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentIndicatorBo;
|
||||
import org.dromara.xskh.service.IXskhAssessmentIndicatorService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/assessment/indicator")
|
||||
public class XskhAssessmentIndicatorController extends BaseController {
|
||||
|
||||
private final IXskhAssessmentIndicatorService xskhAssessmentIndicatorService;
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系列表
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicator:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XskhAssessmentIndicatorVo> list(XskhAssessmentIndicatorBo bo, PageQuery pageQuery) {
|
||||
return xskhAssessmentIndicatorService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生考核指标体系详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicator:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XskhAssessmentIndicatorVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(xskhAssessmentIndicatorService.getIndicatorWithRelations(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核指标体系
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicator:add")
|
||||
@Log(title = "学生考核指标体系", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XskhAssessmentIndicatorBo bo) {
|
||||
return toAjax(xskhAssessmentIndicatorService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核指标体系
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicator:edit")
|
||||
@Log(title = "学生考核指标体系", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XskhAssessmentIndicatorBo bo) {
|
||||
return toAjax(xskhAssessmentIndicatorService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除学生考核指标体系
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicator:remove")
|
||||
@Log(title = "学生考核指标体系", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(xskhAssessmentIndicatorService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取启用的指标列表(用于下拉选择)
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicator:list")
|
||||
@GetMapping("/enabled")
|
||||
public R<List<XskhAssessmentIndicatorVo>> getEnabledList() {
|
||||
XskhAssessmentIndicatorBo bo = new XskhAssessmentIndicatorBo();
|
||||
bo.setStatus("0"); // 只查询启用的
|
||||
return R.ok(xskhAssessmentIndicatorService.queryList(bo));
|
||||
}
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
package org.dromara.xskh.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentIndicatorTypeVo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentIndicatorTypeBo;
|
||||
import org.dromara.xskh.service.IXskhAssessmentIndicatorTypeService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系类型
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/assessment/indicatorType")
|
||||
public class XskhAssessmentIndicatorTypeController extends BaseController {
|
||||
|
||||
private final IXskhAssessmentIndicatorTypeService xskhAssessmentIndicatorTypeService;
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系类型列表
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicatorType:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XskhAssessmentIndicatorTypeVo> list(XskhAssessmentIndicatorTypeBo bo, PageQuery pageQuery) {
|
||||
return xskhAssessmentIndicatorTypeService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生考核指标体系类型详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicatorType:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XskhAssessmentIndicatorTypeVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(xskhAssessmentIndicatorTypeService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核指标体系类型
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicatorType:add")
|
||||
@Log(title = "学生考核指标体系类型", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XskhAssessmentIndicatorTypeBo bo) {
|
||||
return toAjax(xskhAssessmentIndicatorTypeService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核指标体系类型
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicatorType:edit")
|
||||
@Log(title = "学生考核指标体系类型", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XskhAssessmentIndicatorTypeBo bo) {
|
||||
return toAjax(xskhAssessmentIndicatorTypeService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除学生考核指标体系类型
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicatorType:remove")
|
||||
@Log(title = "学生考核指标体系类型", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(xskhAssessmentIndicatorTypeService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取启用的指标类型列表(用于下拉选择)
|
||||
*/
|
||||
@SaCheckPermission("assessment:indicatorType:list")
|
||||
@GetMapping("/enabled")
|
||||
public R<List<XskhAssessmentIndicatorTypeVo>> getEnabledList() {
|
||||
XskhAssessmentIndicatorTypeBo bo = new XskhAssessmentIndicatorTypeBo();
|
||||
bo.setStatus("0"); // 只查询启用的
|
||||
return R.ok(xskhAssessmentIndicatorTypeService.queryList(bo));
|
||||
}
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
package org.dromara.xskh.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentPlanVo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentPlanBo;
|
||||
import org.dromara.xskh.service.IXskhAssessmentPlanService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 学生考核方案
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/assessment/plan")
|
||||
public class XskhAssessmentPlanController extends BaseController {
|
||||
|
||||
private final IXskhAssessmentPlanService xskhAssessmentPlanService;
|
||||
|
||||
/**
|
||||
* 查询学生考核方案列表
|
||||
*/
|
||||
@SaCheckPermission("assessment:plan:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XskhAssessmentPlanVo> list(XskhAssessmentPlanBo bo, PageQuery pageQuery) {
|
||||
return xskhAssessmentPlanService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生考核方案详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("assessment:plan:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XskhAssessmentPlanVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(xskhAssessmentPlanService.getPlanWithRelations(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核方案
|
||||
*/
|
||||
@SaCheckPermission("assessment:plan:add")
|
||||
@Log(title = "学生考核方案", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XskhAssessmentPlanBo bo) {
|
||||
return toAjax(xskhAssessmentPlanService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核方案
|
||||
*/
|
||||
@SaCheckPermission("assessment:plan:edit")
|
||||
@Log(title = "学生考核方案", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XskhAssessmentPlanBo bo) {
|
||||
return toAjax(xskhAssessmentPlanService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除学生考核方案
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("assessment:plan:remove")
|
||||
@Log(title = "学生考核方案", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(xskhAssessmentPlanService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取启用的方案列表(用于下拉选择)
|
||||
*/
|
||||
@SaCheckPermission("assessment:plan:list")
|
||||
@GetMapping("/enabled")
|
||||
public R<List<XskhAssessmentPlanVo>> getEnabledList() {
|
||||
XskhAssessmentPlanBo bo = new XskhAssessmentPlanBo();
|
||||
bo.setStatus("0"); // 只查询启用的
|
||||
return R.ok(xskhAssessmentPlanService.queryList(bo));
|
||||
}
|
||||
}
|
||||
+132
@@ -0,0 +1,132 @@
|
||||
package org.dromara.xskh.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentScheduleVo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentScheduleBo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentScheduleQueryBo;
|
||||
import org.dromara.xskh.service.IXskhAssessmentScheduleService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 学生考核计划
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/assessment/schedule")
|
||||
public class XskhAssessmentScheduleController extends BaseController {
|
||||
|
||||
private final IXskhAssessmentScheduleService xskhAssessmentScheduleService;
|
||||
|
||||
/**
|
||||
* 查询学生考核计划列表
|
||||
*/
|
||||
@SaCheckPermission("assessment:schedule:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XskhAssessmentScheduleVo> list(XskhAssessmentScheduleBo bo, PageQuery pageQuery) {
|
||||
return xskhAssessmentScheduleService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据状态列表查询学生考核计划列表
|
||||
*/
|
||||
@SaCheckPermission("assessment:schedule:list")
|
||||
@GetMapping("/listByStatus")
|
||||
public TableDataInfo<XskhAssessmentScheduleVo> listByStatus(XskhAssessmentScheduleQueryBo bo, PageQuery pageQuery) {
|
||||
return xskhAssessmentScheduleService.queryPageListByStatusList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生考核计划详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("assessment:schedule:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XskhAssessmentScheduleVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(xskhAssessmentScheduleService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核计划
|
||||
*/
|
||||
@SaCheckPermission("assessment:schedule:add")
|
||||
@Log(title = "学生考核计划", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XskhAssessmentScheduleBo bo) {
|
||||
return toAjax(xskhAssessmentScheduleService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核计划
|
||||
*/
|
||||
@SaCheckPermission("assessment:schedule:edit")
|
||||
@Log(title = "学生考核计划", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XskhAssessmentScheduleBo bo) {
|
||||
return toAjax(xskhAssessmentScheduleService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除学生考核计划
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("assessment:schedule:remove")
|
||||
@Log(title = "学生考核计划", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(xskhAssessmentScheduleService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 上线考核计划
|
||||
*/
|
||||
@SaCheckPermission("assessment:schedule:online")
|
||||
@Log(title = "上线考核计划", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/online/{id}")
|
||||
public R<Void> online(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return toAjax(xskhAssessmentScheduleService.onlineSchedule(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 下线考核计划
|
||||
*/
|
||||
@SaCheckPermission("assessment:schedule:offline")
|
||||
@Log(title = "下线考核计划", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/offline/{id}")
|
||||
public R<Void> offline(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return toAjax(xskhAssessmentScheduleService.offlineSchedule(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 完成考核计划
|
||||
*/
|
||||
@SaCheckPermission("assessment:schedule:complete")
|
||||
@Log(title = "完成考核计划", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/complete/{id}")
|
||||
public R<Void> complete(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return toAjax(xskhAssessmentScheduleService.completeSchedule(id));
|
||||
}
|
||||
}
|
||||
+23
@@ -1,6 +1,7 @@
|
||||
package org.dromara.xskh.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
@@ -130,4 +131,26 @@ public class XskhDisciplineRecordController extends BaseController {
|
||||
PageQuery pageQuery) {
|
||||
return xskhDisciplineRecordService.queryClassTeacherPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指标关联的违纪处分类型和奖励类型
|
||||
*/
|
||||
@SaCheckPermission("disciplineRecord:disciplineRecord:query")
|
||||
@GetMapping("/getIndicatorTypes/{indicatorId}")
|
||||
public R<Map<String, String>> getIndicatorTypes(@NotNull(message = "指标ID不能为空") @PathVariable Long indicatorId) {
|
||||
return R.ok(xskhDisciplineRecordService.getIndicatorTypes(indicatorId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生在指定时间范围内的违纪处分记录
|
||||
*/
|
||||
@SaCheckPermission("disciplineRecord:disciplineRecord:query")
|
||||
@GetMapping("/getStudentDisciplineRecords")
|
||||
public R<List<XskhDisciplineRecordVo>> getStudentDisciplineRecords(
|
||||
@RequestParam Long studentId,
|
||||
@RequestParam String disciplineTypeIds,
|
||||
@RequestParam String startTime,
|
||||
@RequestParam String endTime) {
|
||||
return R.ok(xskhDisciplineRecordService.getStudentDisciplineRecords(studentId, disciplineTypeIds, startTime, endTime));
|
||||
}
|
||||
}
|
||||
+13
@@ -130,4 +130,17 @@ public class XskhRewardRecordController extends BaseController {
|
||||
PageQuery pageQuery) {
|
||||
return xskhRewardRecordService.queryClassTeacherPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生在指定时间范围内的奖励记录
|
||||
*/
|
||||
@SaCheckPermission("rewardRecord:rewardRecord:query")
|
||||
@GetMapping("/getStudentRewardRecords")
|
||||
public R<List<XskhRewardRecordVo>> getStudentRewardRecords(
|
||||
@RequestParam Long studentId,
|
||||
@RequestParam String rewardTypeIds,
|
||||
@RequestParam String startTime,
|
||||
@RequestParam String endTime) {
|
||||
return R.ok(xskhRewardRecordService.getStudentRewardRecords(studentId, rewardTypeIds, startTime, endTime));
|
||||
}
|
||||
}
|
||||
+134
@@ -0,0 +1,134 @@
|
||||
package org.dromara.xskh.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生考核申请、班主任审核对象 xskh_assessment_application_approval
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xskh_assessment_application_approval")
|
||||
public class XskhAssessmentApplicationApproval extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核计划ID
|
||||
*/
|
||||
private Long scheduleId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 学院ID
|
||||
*/
|
||||
private Long collegeId;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 专业ID
|
||||
*/
|
||||
private Long majorId;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 班级ID
|
||||
*/
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 总得分
|
||||
*/
|
||||
private BigDecimal totalScore;
|
||||
|
||||
/**
|
||||
* 自评得分
|
||||
*/
|
||||
private BigDecimal selfScore;
|
||||
|
||||
/**
|
||||
* 自评备注
|
||||
*/
|
||||
private String selfRemark;
|
||||
|
||||
/**
|
||||
* 班主任评分
|
||||
*/
|
||||
private BigDecimal teacherScore;
|
||||
|
||||
/**
|
||||
* 状态(1-草稿 2-已提交 3-班主任审核 6-已完成)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 提交时间
|
||||
*/
|
||||
private Date submitTime;
|
||||
|
||||
/**
|
||||
* 班主任审核人ID
|
||||
*/
|
||||
private Long teacherApprovalBy;
|
||||
|
||||
/**
|
||||
* 班主任审核时间
|
||||
*/
|
||||
private Date teacherApprovalTime;
|
||||
|
||||
/**
|
||||
* 班主任审核备注
|
||||
*/
|
||||
private String teacherApprovalRemark;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private Integer deleted;
|
||||
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package org.dromara.xskh.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生附加分申请、班主任审核得分对象 xskh_assessment_bonus_approval
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xskh_assessment_bonus_approval")
|
||||
public class XskhAssessmentBonusApproval extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核申请ID
|
||||
*/
|
||||
private Long applicationId;
|
||||
|
||||
/**
|
||||
* 附加分项目名称
|
||||
*/
|
||||
private String bonusName;
|
||||
|
||||
/**
|
||||
* 附加分内容
|
||||
*/
|
||||
private String bonusContent;
|
||||
|
||||
/**
|
||||
* 附加分值
|
||||
*/
|
||||
private BigDecimal bonusScore;
|
||||
|
||||
/**
|
||||
* 证明材料文件,ossIds,逗号分隔
|
||||
*/
|
||||
private String evidenceFile;
|
||||
|
||||
/**
|
||||
* 状态(1-待审核 2-审核通过 3-审核拒绝)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 审核得分
|
||||
*/
|
||||
private BigDecimal approvalScore;
|
||||
|
||||
/**
|
||||
* 审核人ID
|
||||
*/
|
||||
private Long approvalBy;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
private Date approvalTime;
|
||||
|
||||
/**
|
||||
* 审核备注
|
||||
*/
|
||||
private String approvalRemark;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private Integer deleted;
|
||||
|
||||
}
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
package org.dromara.xskh.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系对象 xskh_assessment_indicator
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xskh_assessment_indicator")
|
||||
public class XskhAssessmentIndicator extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 指标编码
|
||||
*/
|
||||
private String indicatorCode;
|
||||
|
||||
/**
|
||||
* 指标名称
|
||||
*/
|
||||
private String indicatorName;
|
||||
|
||||
/**
|
||||
* 指标类型ID
|
||||
*/
|
||||
private Long indicatorTypeId;
|
||||
|
||||
/**
|
||||
* 指标类型名称
|
||||
*/
|
||||
private String indicatorTypeName;
|
||||
|
||||
/**
|
||||
* 指标说明
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 最高分值
|
||||
*/
|
||||
private BigDecimal maxScore;
|
||||
|
||||
/**
|
||||
* 权重
|
||||
*/
|
||||
private BigDecimal weight;
|
||||
|
||||
/**
|
||||
* 状态(0-启用 1-禁用)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private Integer deleted;
|
||||
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
package org.dromara.xskh.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 考核指标关联违纪处分类型和奖励类型对象 xskh_assessment_indicator_discipline_type
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xskh_assessment_indicator_discipline_type")
|
||||
public class XskhAssessmentIndicatorDisciplineType extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 指标ID
|
||||
*/
|
||||
private Long indicatorId;
|
||||
|
||||
/**
|
||||
* 违纪处分类型ID,逗号分隔
|
||||
*/
|
||||
private String disciplineTypeIds;
|
||||
|
||||
/**
|
||||
* 奖励类型ID,逗号分隔
|
||||
*/
|
||||
private String rewardTypeIds;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private Integer deleted;
|
||||
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
package org.dromara.xskh.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系类型对象 xskh_assessment_indicator_type
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xskh_assessment_indicator_type")
|
||||
public class XskhAssessmentIndicatorType extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 类型编码
|
||||
*/
|
||||
private String typeCode;
|
||||
|
||||
/**
|
||||
* 类型名称
|
||||
*/
|
||||
private String typeName;
|
||||
|
||||
/**
|
||||
* 类型说明
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 状态(0-启用 1-禁用)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private Integer deleted;
|
||||
|
||||
}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
package org.dromara.xskh.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 学生考核方案对象 xskh_assessment_plan
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xskh_assessment_plan")
|
||||
public class XskhAssessmentPlan extends TenantEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 方案编号
|
||||
*/
|
||||
private String planCode;
|
||||
|
||||
/**
|
||||
* 方案名称
|
||||
*/
|
||||
private String planName;
|
||||
|
||||
/**
|
||||
* 方案说明
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 状态(0-启用 1-禁用)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private Integer deleted;
|
||||
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
package org.dromara.xskh.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 考核方案关联指标体系对象 xskh_assessment_plan_indicator
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xskh_assessment_plan_indicator")
|
||||
public class XskhAssessmentPlanIndicator extends TenantEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核方案ID
|
||||
*/
|
||||
private Long planId;
|
||||
|
||||
/**
|
||||
* 指标体系ID
|
||||
*/
|
||||
private Long indicatorId;
|
||||
|
||||
/**
|
||||
* 最高分值
|
||||
*/
|
||||
private BigDecimal maxScore;
|
||||
|
||||
/**
|
||||
* 权重
|
||||
*/
|
||||
private BigDecimal weight;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private Integer deleted;
|
||||
|
||||
}
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
package org.dromara.xskh.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生考核计划对象 xskh_assessment_schedule
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xskh_assessment_schedule")
|
||||
public class XskhAssessmentSchedule extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核计划名称
|
||||
*/
|
||||
private String scheduleName;
|
||||
|
||||
/**
|
||||
* 考核方案ID
|
||||
*/
|
||||
private Long planId;
|
||||
|
||||
/**
|
||||
* 考核方案名称
|
||||
*/
|
||||
private String planName;
|
||||
|
||||
/**
|
||||
* 学年
|
||||
*/
|
||||
private String academicYear;
|
||||
|
||||
/**
|
||||
* 学期(1-第一学期 2-第二学期)
|
||||
*/
|
||||
private String semester;
|
||||
|
||||
/**
|
||||
* 考核开始时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 考核结束时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 数据统计开始时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date dataStartTime;
|
||||
|
||||
/**
|
||||
* 数据统计结束时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date dataEndTime;
|
||||
|
||||
/**
|
||||
* 状态(1-未开始 2-进行中 3-已结束)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 考核说明
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 删除标志(0-未删除 1-已删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private Long deleted;
|
||||
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
package org.dromara.xskh.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 学生考核自评、班主任评分对象 xskh_assessment_self_score
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xskh_assessment_self_score")
|
||||
public class XskhAssessmentSelfScore extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核申请ID
|
||||
*/
|
||||
private Long applicationId;
|
||||
|
||||
/**
|
||||
* 指标ID
|
||||
*/
|
||||
private Long indicatorId;
|
||||
|
||||
/**
|
||||
* 指标名称
|
||||
*/
|
||||
private String indicatorName;
|
||||
|
||||
/**
|
||||
* 指标类型
|
||||
*/
|
||||
private String indicatorType;
|
||||
|
||||
/**
|
||||
* 最高分值
|
||||
*/
|
||||
private BigDecimal maxScore;
|
||||
|
||||
/**
|
||||
* 自评得分
|
||||
*/
|
||||
private BigDecimal selfScore;
|
||||
|
||||
/**
|
||||
* 自评备注
|
||||
*/
|
||||
private String selfRemark;
|
||||
|
||||
/**
|
||||
* 班主任评分
|
||||
*/
|
||||
private BigDecimal teacherScore;
|
||||
|
||||
/**
|
||||
* 班主任备注
|
||||
*/
|
||||
private String teacherRemark;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private Integer deleted;
|
||||
|
||||
}
|
||||
-1
@@ -58,5 +58,4 @@ public class XskhRewardType extends TenantEntity {
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private Long deleted;
|
||||
|
||||
|
||||
}
|
||||
+148
@@ -0,0 +1,148 @@
|
||||
package org.dromara.xskh.domain.bo;
|
||||
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.xskh.domain.XskhAssessmentApplicationApproval;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核申请、班主任审核业务对象 xskh_assessment_application_approval
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XskhAssessmentApplicationApproval.class)
|
||||
public class XskhAssessmentApplicationApprovalBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核计划ID
|
||||
*/
|
||||
@NotNull(message = "考核计划ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long scheduleId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
@NotNull(message = "学生ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@NotBlank(message = "学号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
@NotBlank(message = "学生姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 学院ID
|
||||
*/
|
||||
@NotNull(message = "学院ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long collegeId;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
@NotBlank(message = "学院名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 专业ID
|
||||
*/
|
||||
@NotNull(message = "专业ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long majorId;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
@NotBlank(message = "专业名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 班级ID
|
||||
*/
|
||||
@NotNull(message = "班级ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
@NotBlank(message = "班级名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 总得分
|
||||
*/
|
||||
private BigDecimal totalScore;
|
||||
|
||||
/**
|
||||
* 自评得分
|
||||
*/
|
||||
private BigDecimal selfScore;
|
||||
|
||||
/**
|
||||
* 自评备注
|
||||
*/
|
||||
private String selfRemark;
|
||||
|
||||
/**
|
||||
* 班主任评分
|
||||
*/
|
||||
private BigDecimal teacherScore;
|
||||
|
||||
/**
|
||||
* 状态(1-草稿 2-已提交 3-班主任审核 6-已完成)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 提交时间
|
||||
*/
|
||||
private Date submitTime;
|
||||
|
||||
/**
|
||||
* 班主任审核人ID
|
||||
*/
|
||||
private Long teacherApprovalBy;
|
||||
|
||||
/**
|
||||
* 班主任审核时间
|
||||
*/
|
||||
private Date teacherApprovalTime;
|
||||
|
||||
/**
|
||||
* 班主任审核备注
|
||||
*/
|
||||
private String teacherApprovalRemark;
|
||||
|
||||
/**
|
||||
* 自评得分列表
|
||||
*/
|
||||
private List<XskhAssessmentSelfScoreBo> selfScoreList;
|
||||
|
||||
/**
|
||||
* 附加分申请列表
|
||||
*/
|
||||
private List<XskhAssessmentBonusApprovalBo> bonusApprovalList;
|
||||
|
||||
}
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
package org.dromara.xskh.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.xskh.domain.XskhAssessmentApplicationApproval;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核审核业务对象 xskh_assessment_application_approval
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class XskhAssessmentApprovalBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核计划ID
|
||||
*/
|
||||
private Long scheduleId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 学院ID
|
||||
*/
|
||||
private Long collegeId;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 专业ID
|
||||
*/
|
||||
private Long majorId;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 班级ID
|
||||
*/
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 总得分
|
||||
*/
|
||||
private BigDecimal totalScore;
|
||||
|
||||
/**
|
||||
* 自评得分
|
||||
*/
|
||||
private BigDecimal selfScore;
|
||||
|
||||
/**
|
||||
* 班主任评分
|
||||
*/
|
||||
private BigDecimal teacherScore;
|
||||
|
||||
/**
|
||||
* 状态(1-草稿 2-已提交 3-班主任审核 6-已完成)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 提交时间
|
||||
*/
|
||||
private Date submitTime;
|
||||
|
||||
/**
|
||||
* 班主任审核人
|
||||
*/
|
||||
private Long teacherApprovalBy;
|
||||
|
||||
/**
|
||||
* 班主任审核时间
|
||||
*/
|
||||
private Date teacherApprovalTime;
|
||||
|
||||
/**
|
||||
* 班主任审核备注
|
||||
*/
|
||||
private String teacherApprovalRemark;
|
||||
|
||||
/**
|
||||
* 自评得分列表
|
||||
*/
|
||||
private List<XskhAssessmentSelfScoreBo> selfScoreList;
|
||||
|
||||
/**
|
||||
* 附加分申请列表
|
||||
*/
|
||||
private List<XskhAssessmentBonusApprovalBo> bonusList;
|
||||
|
||||
/**
|
||||
* 附加分审核列表(前端传递的字段名)
|
||||
*/
|
||||
private List<XskhAssessmentBonusApprovalBo> bonusApprovalList;
|
||||
|
||||
/**
|
||||
* 删除标志(0-未删除 1-已删除)
|
||||
*/
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 租户编号
|
||||
*/
|
||||
private String tenantId;
|
||||
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package org.dromara.xskh.domain.bo;
|
||||
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.xskh.domain.XskhAssessmentBonusApproval;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生附加分申请、班主任审核得分业务对象 xskh_assessment_bonus_approval
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@AutoMapper(target = XskhAssessmentBonusApproval.class)
|
||||
public class XskhAssessmentBonusApprovalBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核申请ID
|
||||
*/
|
||||
@NotNull(message = "考核申请ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long applicationId;
|
||||
|
||||
/**
|
||||
* 附加分项目名称
|
||||
*/
|
||||
@NotBlank(message = "附加分项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String bonusName;
|
||||
|
||||
/**
|
||||
* 附加分内容
|
||||
*/
|
||||
@NotBlank(message = "附加分内容不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String bonusContent;
|
||||
|
||||
/**
|
||||
* 附加分值
|
||||
*/
|
||||
@NotNull(message = "附加分值不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private BigDecimal bonusScore;
|
||||
|
||||
/**
|
||||
* 证明材料文件,ossIds,逗号分隔
|
||||
*/
|
||||
private String evidenceFile;
|
||||
|
||||
/**
|
||||
* 状态(1-待审核 2-审核通过 3-审核拒绝)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 审核得分
|
||||
*/
|
||||
private BigDecimal approvalScore;
|
||||
|
||||
/**
|
||||
* 审核人ID
|
||||
*/
|
||||
private Long approvalBy;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
private Date approvalTime;
|
||||
|
||||
/**
|
||||
* 审核备注
|
||||
*/
|
||||
private String approvalRemark;
|
||||
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
package org.dromara.xskh.domain.bo;
|
||||
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.core.validate.QueryGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.xskh.domain.XskhAssessmentIndicator;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系业务对象 xskh_assessment_indicator
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XskhAssessmentIndicator.class)
|
||||
public class XskhAssessmentIndicatorBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 指标编码
|
||||
*/
|
||||
@NotBlank(message = "指标编码不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 50, message = "指标编码长度不能超过50个字符")
|
||||
private String indicatorCode;
|
||||
|
||||
/**
|
||||
* 指标名称
|
||||
*/
|
||||
@NotBlank(message = "指标名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 100, message = "指标名称长度不能超过100个字符")
|
||||
private String indicatorName;
|
||||
|
||||
/**
|
||||
* 指标类型ID
|
||||
*/
|
||||
@NotNull(message = "指标类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long indicatorTypeId;
|
||||
|
||||
/**
|
||||
* 指标类型名称
|
||||
*/
|
||||
private String indicatorTypeName;
|
||||
|
||||
/**
|
||||
* 指标说明
|
||||
*/
|
||||
@Size(max = 500, message = "指标说明长度不能超过500个字符")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 最高分值
|
||||
*/
|
||||
@NotNull(message = "最高分值不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@DecimalMin(value = "0.01", message = "最高分值必须大于0", groups = { AddGroup.class, EditGroup.class })
|
||||
@DecimalMax(value = "100.00", message = "最高分值不能超过100", groups = { AddGroup.class, EditGroup.class })
|
||||
private BigDecimal maxScore;
|
||||
|
||||
/**
|
||||
* 权重
|
||||
*/
|
||||
@DecimalMin(value = "0.01", message = "权重必须大于0", groups = { AddGroup.class, EditGroup.class })
|
||||
@DecimalMax(value = "10.00", message = "权重不能超过10", groups = { AddGroup.class, EditGroup.class })
|
||||
private BigDecimal weight;
|
||||
|
||||
/**
|
||||
* 状态(0-启用 1-禁用)
|
||||
*/
|
||||
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Pattern(regexp = "^[01]$", message = "状态只能是0或1")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@Min(value = 0, message = "排序号不能小于0")
|
||||
@Max(value = 9999, message = "排序号不能大于9999")
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 关联的违纪处分类型ID列表
|
||||
*/
|
||||
private List<Long> disciplineTypeIds;
|
||||
|
||||
/**
|
||||
* 关联的奖励类型ID列表
|
||||
*/
|
||||
private List<Long> rewardTypeIds;
|
||||
|
||||
}
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
package org.dromara.xskh.domain.bo;
|
||||
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.core.validate.QueryGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.xskh.domain.XskhAssessmentIndicatorType;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系类型业务对象 xskh_assessment_indicator_type
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XskhAssessmentIndicatorType.class)
|
||||
public class XskhAssessmentIndicatorTypeBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 类型编码
|
||||
*/
|
||||
@NotBlank(message = "类型编码不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 50, message = "类型编码长度不能超过50个字符")
|
||||
private String typeCode;
|
||||
|
||||
/**
|
||||
* 类型名称
|
||||
*/
|
||||
@NotBlank(message = "类型名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 100, message = "类型名称长度不能超过100个字符")
|
||||
private String typeName;
|
||||
|
||||
/**
|
||||
* 类型说明
|
||||
*/
|
||||
@Size(max = 500, message = "类型说明长度不能超过500个字符")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 状态(0-启用 1-禁用)
|
||||
*/
|
||||
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Pattern(regexp = "^[01]$", message = "状态只能是0或1")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@Min(value = 0, message = "排序号不能小于0")
|
||||
@Max(value = 9999, message = "排序号不能大于9999")
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 创建部门
|
||||
*/
|
||||
private Long createDept;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package org.dromara.xskh.domain.bo;
|
||||
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.xskh.domain.XskhAssessmentPlan;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentPlanIndicatorVo;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核方案业务对象 xskh_assessment_plan
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XskhAssessmentPlan.class)
|
||||
public class XskhAssessmentPlanBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 方案编号
|
||||
*/
|
||||
@NotBlank(message = "方案编号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String planCode;
|
||||
|
||||
/**
|
||||
* 方案名称
|
||||
*/
|
||||
@NotBlank(message = "方案名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String planName;
|
||||
|
||||
/**
|
||||
* 方案说明
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 状态(0-启用 1-禁用)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 关联的指标ID列表
|
||||
*/
|
||||
private List<Long> indicatorIds;
|
||||
|
||||
/**
|
||||
* 关联的指标列表(前端传递的完整数据)
|
||||
*/
|
||||
private List<XskhAssessmentPlanIndicatorVo> indicatorList;
|
||||
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
package org.dromara.xskh.domain.bo;
|
||||
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.xskh.domain.XskhAssessmentSchedule;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生考核计划业务对象 xskh_assessment_schedule
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XskhAssessmentSchedule.class)
|
||||
public class XskhAssessmentScheduleBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核计划名称
|
||||
*/
|
||||
@NotBlank(message = "考核计划名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String scheduleName;
|
||||
|
||||
/**
|
||||
* 考核方案ID
|
||||
*/
|
||||
@NotNull(message = "考核方案ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long planId;
|
||||
|
||||
/**
|
||||
* 考核方案名称
|
||||
*/
|
||||
private String planName;
|
||||
|
||||
/**
|
||||
* 学年
|
||||
*/
|
||||
@NotBlank(message = "学年不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String academicYear;
|
||||
|
||||
/**
|
||||
* 学期(1-第一学期 2-第二学期)
|
||||
*/
|
||||
@NotBlank(message = "学期不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String semester;
|
||||
|
||||
/**
|
||||
* 考核开始时间
|
||||
*/
|
||||
@NotNull(message = "考核开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 考核结束时间
|
||||
*/
|
||||
@NotNull(message = "考核结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 数据统计开始时间
|
||||
*/
|
||||
@NotNull(message = "数据统计开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date dataStartTime;
|
||||
|
||||
/**
|
||||
* 数据统计结束时间
|
||||
*/
|
||||
@NotNull(message = "数据统计结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date dataEndTime;
|
||||
|
||||
/**
|
||||
* 状态(1-未开始 2-进行中 3-已结束)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 考核说明
|
||||
*/
|
||||
private String description;
|
||||
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
package org.dromara.xskh.domain.bo;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核计划查询业务对象
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class XskhAssessmentScheduleQueryBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 考核计划名称
|
||||
*/
|
||||
private String scheduleName;
|
||||
|
||||
/**
|
||||
* 考核方案ID
|
||||
*/
|
||||
private Long planId;
|
||||
|
||||
/**
|
||||
* 考核方案名称
|
||||
*/
|
||||
private String planName;
|
||||
|
||||
/**
|
||||
* 学年
|
||||
*/
|
||||
private String academicYear;
|
||||
|
||||
/**
|
||||
* 学期(1-第一学期 2-第二学期)
|
||||
*/
|
||||
private String semester;
|
||||
|
||||
/**
|
||||
* 状态列表(1-未开始 2-进行中 3-已结束)
|
||||
*/
|
||||
private List<String> statusList;
|
||||
|
||||
/**
|
||||
* 考核说明
|
||||
*/
|
||||
private String description;
|
||||
|
||||
}
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
package org.dromara.xskh.domain.bo;
|
||||
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.xskh.domain.XskhAssessmentSelfScore;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 学生考核自评、班主任评分业务对象 xskh_assessment_self_score
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XskhAssessmentSelfScore.class)
|
||||
public class XskhAssessmentSelfScoreBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核申请ID
|
||||
*/
|
||||
@NotNull(message = "考核申请ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long applicationId;
|
||||
|
||||
/**
|
||||
* 指标ID
|
||||
*/
|
||||
@NotNull(message = "指标ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long indicatorId;
|
||||
|
||||
/**
|
||||
* 指标名称
|
||||
*/
|
||||
@NotBlank(message = "指标名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String indicatorName;
|
||||
|
||||
/**
|
||||
* 指标类型
|
||||
*/
|
||||
@NotBlank(message = "指标类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String indicatorType;
|
||||
|
||||
/**
|
||||
* 最高分值
|
||||
*/
|
||||
@NotNull(message = "最高分值不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private BigDecimal maxScore;
|
||||
|
||||
/**
|
||||
* 自评得分
|
||||
*/
|
||||
private BigDecimal selfScore;
|
||||
|
||||
/**
|
||||
* 自评备注
|
||||
*/
|
||||
private String selfRemark;
|
||||
|
||||
/**
|
||||
* 班主任评分
|
||||
*/
|
||||
private BigDecimal teacherScore;
|
||||
|
||||
/**
|
||||
* 班主任备注
|
||||
*/
|
||||
private String teacherRemark;
|
||||
|
||||
}
|
||||
+1
-1
@@ -22,7 +22,7 @@ import java.util.Date;
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XskhDisciplineRecord.class, reverseConvertGenerate = false)
|
||||
@AutoMapper(target = XskhDisciplineRecord.class)
|
||||
public class XskhDisciplineRecordBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ import java.util.Date;
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XskhDisciplineRevoke.class, reverseConvertGenerate = false)
|
||||
@AutoMapper(target = XskhDisciplineRevoke.class)
|
||||
public class XskhDisciplineRevokeBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ import jakarta.validation.constraints.*;
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XskhDisciplineType.class, reverseConvertGenerate = false)
|
||||
@AutoMapper(target = XskhDisciplineType.class)
|
||||
public class XskhDisciplineTypeBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ import java.util.Date;
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XskhRewardRecord.class, reverseConvertGenerate = false)
|
||||
@AutoMapper(target = XskhRewardRecord.class)
|
||||
public class XskhRewardRecordBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
|
||||
+1
-2
@@ -17,7 +17,7 @@ import jakarta.validation.constraints.*;
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XskhRewardType.class, reverseConvertGenerate = false)
|
||||
@AutoMapper(target = XskhRewardType.class)
|
||||
public class XskhRewardTypeBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
@@ -58,5 +58,4 @@ public class XskhRewardTypeBo extends BaseEntity {
|
||||
*/
|
||||
private Long deleted;
|
||||
|
||||
|
||||
}
|
||||
+200
@@ -0,0 +1,200 @@
|
||||
package org.dromara.xskh.domain.vo;
|
||||
|
||||
import org.dromara.xskh.domain.XskhAssessmentApplicationApproval;
|
||||
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.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核申请、班主任审核视图对象 xskh_assessment_application_approval
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@AutoMapper(target = XskhAssessmentApplicationApproval.class)
|
||||
public class XskhAssessmentApplicationApprovalVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核计划ID
|
||||
*/
|
||||
private Long scheduleId;
|
||||
|
||||
/**
|
||||
* 考核计划名称
|
||||
*/
|
||||
private String scheduleName;
|
||||
|
||||
/**
|
||||
* 考核开始时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 考核结束时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 数据统计开始时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date dataStartTime;
|
||||
|
||||
/**
|
||||
* 数据统计结束时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date dataEndTime;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 学院ID
|
||||
*/
|
||||
private Long collegeId;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 专业ID
|
||||
*/
|
||||
private Long majorId;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 班级ID
|
||||
*/
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 总得分
|
||||
*/
|
||||
private BigDecimal totalScore;
|
||||
|
||||
/**
|
||||
* 自评得分
|
||||
*/
|
||||
private BigDecimal selfScore;
|
||||
|
||||
/**
|
||||
* 自评备注
|
||||
*/
|
||||
private String selfRemark;
|
||||
|
||||
/**
|
||||
* 班主任评分
|
||||
*/
|
||||
private BigDecimal teacherScore;
|
||||
|
||||
/**
|
||||
* 状态(1-草稿 2-已提交 3-班主任审核 6-已完成)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 状态名称
|
||||
*/
|
||||
private String statusName;
|
||||
|
||||
/**
|
||||
* 提交时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date submitTime;
|
||||
|
||||
/**
|
||||
* 班主任审核人ID
|
||||
*/
|
||||
private Long teacherApprovalBy;
|
||||
|
||||
/**
|
||||
* 班主任审核人姓名
|
||||
*/
|
||||
private String teacherApprovalByName;
|
||||
|
||||
/**
|
||||
* 班主任审核时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date teacherApprovalTime;
|
||||
|
||||
/**
|
||||
* 班主任审核备注
|
||||
*/
|
||||
private String teacherApprovalRemark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
|
||||
/**
|
||||
* 自评得分列表
|
||||
*/
|
||||
private List<XskhAssessmentSelfScoreVo> selfScoreList;
|
||||
|
||||
/**
|
||||
* 附加分申请列表
|
||||
*/
|
||||
private List<XskhAssessmentBonusApprovalVo> bonusApprovalList;
|
||||
|
||||
}
|
||||
+235
@@ -0,0 +1,235 @@
|
||||
package org.dromara.xskh.domain.vo;
|
||||
|
||||
import org.dromara.xskh.domain.XskhAssessmentApplicationApproval;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
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;
|
||||
|
||||
/**
|
||||
* 学生考核审核视图对象 xskh_assessment_application_approval
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XskhAssessmentApplicationApproval.class)
|
||||
public class XskhAssessmentApprovalVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@ExcelProperty(value = "主键")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核计划ID
|
||||
*/
|
||||
@ExcelProperty(value = "考核计划ID")
|
||||
private Long scheduleId;
|
||||
|
||||
/**
|
||||
* 考核计划名称
|
||||
*/
|
||||
@ExcelProperty(value = "考核计划名称")
|
||||
private String scheduleName;
|
||||
|
||||
/**
|
||||
* 考核计划开始时间
|
||||
*/
|
||||
@ExcelProperty(value = "考核计划开始时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 考核计划结束时间
|
||||
*/
|
||||
@ExcelProperty(value = "考核计划结束时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 数据统计开始时间
|
||||
*/
|
||||
@ExcelProperty(value = "数据统计开始时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date dataStartTime;
|
||||
|
||||
/**
|
||||
* 数据统计结束时间
|
||||
*/
|
||||
@ExcelProperty(value = "数据统计结束时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date dataEndTime;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
@ExcelProperty(value = "学生ID")
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@ExcelProperty(value = "学号")
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
@ExcelProperty(value = "学生姓名")
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 学院ID
|
||||
*/
|
||||
@ExcelProperty(value = "学院ID")
|
||||
private Long collegeId;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
@ExcelProperty(value = "学院名称")
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 专业ID
|
||||
*/
|
||||
@ExcelProperty(value = "专业ID")
|
||||
private Long majorId;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
@ExcelProperty(value = "专业名称")
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 班级ID
|
||||
*/
|
||||
@ExcelProperty(value = "班级ID")
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
@ExcelProperty(value = "班级名称")
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 总得分
|
||||
*/
|
||||
@ExcelProperty(value = "总得分")
|
||||
private BigDecimal totalScore;
|
||||
|
||||
/**
|
||||
* 自评得分
|
||||
*/
|
||||
@ExcelProperty(value = "自评得分")
|
||||
private BigDecimal selfScore;
|
||||
|
||||
/**
|
||||
* 班主任评分
|
||||
*/
|
||||
@ExcelProperty(value = "班主任评分")
|
||||
private BigDecimal teacherScore;
|
||||
|
||||
/**
|
||||
* 状态(1-草稿 2-已提交 3-班主任审核 6-已完成)
|
||||
*/
|
||||
@ExcelProperty(value = "状态")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 状态名称
|
||||
*/
|
||||
@ExcelProperty(value = "状态名称")
|
||||
private String statusName;
|
||||
|
||||
/**
|
||||
* 提交时间
|
||||
*/
|
||||
@ExcelProperty(value = "提交时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date submitTime;
|
||||
|
||||
/**
|
||||
* 班主任审核人
|
||||
*/
|
||||
@ExcelProperty(value = "班主任审核人")
|
||||
private Long teacherApprovalBy;
|
||||
|
||||
/**
|
||||
* 班主任审核人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "班主任审核人姓名")
|
||||
private String teacherApprovalByName;
|
||||
|
||||
/**
|
||||
* 班主任审核时间
|
||||
*/
|
||||
@ExcelProperty(value = "班主任审核时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date teacherApprovalTime;
|
||||
|
||||
/**
|
||||
* 班主任审核备注
|
||||
*/
|
||||
@ExcelProperty(value = "班主任审核备注")
|
||||
private String teacherApprovalRemark;
|
||||
|
||||
/**
|
||||
* 自评备注
|
||||
*/
|
||||
@ExcelProperty(value = "自评备注")
|
||||
private String selfRemark;
|
||||
|
||||
/**
|
||||
* 自评得分列表
|
||||
*/
|
||||
private List<XskhAssessmentSelfScoreVo> selfScoreList;
|
||||
|
||||
/**
|
||||
* 附加分申请列表
|
||||
*/
|
||||
private List<XskhAssessmentBonusApprovalVo> bonusList;
|
||||
|
||||
/**
|
||||
* 附加分审核列表(兼容前端字段名)
|
||||
*/
|
||||
private List<XskhAssessmentBonusApprovalVo> bonusApprovalList;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
|
||||
}
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
package org.dromara.xskh.domain.vo;
|
||||
|
||||
import org.dromara.xskh.domain.XskhAssessmentBonusApproval;
|
||||
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.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生考核申请、班主任审核视图对象 xskh_assessment_bonus_approval
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@AutoMapper(target = XskhAssessmentBonusApproval.class)
|
||||
public class XskhAssessmentBonusApprovalVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核申请ID
|
||||
*/
|
||||
private Long applicationId;
|
||||
|
||||
/**
|
||||
* 附加分项目名称
|
||||
*/
|
||||
private String bonusName;
|
||||
|
||||
/**
|
||||
* 附加分内容
|
||||
*/
|
||||
private String bonusContent;
|
||||
|
||||
/**
|
||||
* 附加分值
|
||||
*/
|
||||
private BigDecimal bonusScore;
|
||||
|
||||
/**
|
||||
* 证明材料文件,ossIds,逗号分隔
|
||||
*/
|
||||
private String evidenceFile;
|
||||
|
||||
/**
|
||||
* 状态(1-待审核 2-审核通过 3-审核拒绝)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 状态名称
|
||||
*/
|
||||
private String statusName;
|
||||
|
||||
/**
|
||||
* 审核得分
|
||||
*/
|
||||
private BigDecimal approvalScore;
|
||||
|
||||
/**
|
||||
* 审核人ID
|
||||
*/
|
||||
private Long approvalBy;
|
||||
|
||||
/**
|
||||
* 审核人姓名
|
||||
*/
|
||||
private String approvalByName;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date approvalTime;
|
||||
|
||||
/**
|
||||
* 审核备注
|
||||
*/
|
||||
private String approvalRemark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package org.dromara.xskh.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.xskh.domain.XskhAssessmentIndicatorDisciplineType;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 考核指标关联违纪处分类型和奖励类型视图对象 xskh_assessment_indicator_discipline_type
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XskhAssessmentIndicatorDisciplineType.class)
|
||||
public class XskhAssessmentIndicatorDisciplineTypeVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 指标ID
|
||||
*/
|
||||
@ExcelProperty(value = "指标ID")
|
||||
private Long indicatorId;
|
||||
|
||||
/**
|
||||
* 违纪处分类型ID,逗号分隔
|
||||
*/
|
||||
@ExcelProperty(value = "违纪处分类型ID")
|
||||
private String disciplineTypeIds;
|
||||
|
||||
/**
|
||||
* 奖励类型ID,逗号分隔
|
||||
*/
|
||||
@ExcelProperty(value = "奖励类型ID")
|
||||
private String rewardTypeIds;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
|
||||
}
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
package org.dromara.xskh.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.xskh.domain.XskhAssessmentIndicatorType;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系类型视图对象 xskh_assessment_indicator_type
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XskhAssessmentIndicatorType.class)
|
||||
public class XskhAssessmentIndicatorTypeVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 类型编码
|
||||
*/
|
||||
@ExcelProperty(value = "类型编码")
|
||||
private String typeCode;
|
||||
|
||||
/**
|
||||
* 类型名称
|
||||
*/
|
||||
@ExcelProperty(value = "类型名称")
|
||||
private String typeName;
|
||||
|
||||
/**
|
||||
* 类型说明
|
||||
*/
|
||||
@ExcelProperty(value = "类型说明")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 状态(0-启用 1-禁用)
|
||||
*/
|
||||
@ExcelProperty(value = "状态")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@ExcelProperty(value = "排序号")
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 创建部门
|
||||
*/
|
||||
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;
|
||||
|
||||
}
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
package org.dromara.xskh.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.xskh.domain.XskhAssessmentIndicator;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系视图对象 xskh_assessment_indicator
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XskhAssessmentIndicator.class)
|
||||
public class XskhAssessmentIndicatorVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 指标编码
|
||||
*/
|
||||
@ExcelProperty(value = "指标编码")
|
||||
private String indicatorCode;
|
||||
|
||||
/**
|
||||
* 指标名称
|
||||
*/
|
||||
@ExcelProperty(value = "指标名称")
|
||||
private String indicatorName;
|
||||
|
||||
/**
|
||||
* 指标类型ID
|
||||
*/
|
||||
@ExcelProperty(value = "指标类型ID")
|
||||
private Long indicatorTypeId;
|
||||
|
||||
/**
|
||||
* 指标类型名称
|
||||
*/
|
||||
@ExcelProperty(value = "指标类型名称")
|
||||
private String indicatorTypeName;
|
||||
|
||||
/**
|
||||
* 指标说明
|
||||
*/
|
||||
@ExcelProperty(value = "指标说明")
|
||||
private String description;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 最高分值
|
||||
*/
|
||||
@ExcelProperty(value = "最高分值")
|
||||
private BigDecimal maxScore;
|
||||
|
||||
/**
|
||||
* 权重
|
||||
*/
|
||||
@ExcelProperty(value = "权重")
|
||||
private BigDecimal weight;
|
||||
|
||||
/**
|
||||
* 状态(0-启用 1-禁用)
|
||||
*/
|
||||
@ExcelProperty(value = "状态")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@ExcelProperty(value = "排序号")
|
||||
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;
|
||||
|
||||
/**
|
||||
* 关联的违纪处分类型ID列表
|
||||
*/
|
||||
private List<Long> disciplineTypeIds;
|
||||
|
||||
/**
|
||||
* 关联的奖励类型ID列表
|
||||
*/
|
||||
private List<Long> rewardTypeIds;
|
||||
|
||||
}
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
package org.dromara.xskh.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.xskh.domain.XskhAssessmentPlanIndicator;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 考核方案关联指标体系视图对象 xskh_assessment_plan_indicator
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XskhAssessmentPlanIndicator.class)
|
||||
public class XskhAssessmentPlanIndicatorVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核方案ID
|
||||
*/
|
||||
@ExcelProperty(value = "考核方案ID")
|
||||
private Long planId;
|
||||
|
||||
/**
|
||||
* 指标体系ID
|
||||
*/
|
||||
@ExcelProperty(value = "指标体系ID")
|
||||
private Long indicatorId;
|
||||
|
||||
/**
|
||||
* 最高分值
|
||||
*/
|
||||
@ExcelProperty(value = "最高分值")
|
||||
private BigDecimal maxScore;
|
||||
|
||||
/**
|
||||
* 权重
|
||||
*/
|
||||
@ExcelProperty(value = "权重")
|
||||
private BigDecimal weight;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@ExcelProperty(value = "排序号")
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 指标名称
|
||||
*/
|
||||
@ExcelProperty(value = "指标名称")
|
||||
private String indicatorName;
|
||||
|
||||
/**
|
||||
* 指标编码
|
||||
*/
|
||||
@ExcelProperty(value = "指标编码")
|
||||
private String indicatorCode;
|
||||
|
||||
/**
|
||||
* 指标说明
|
||||
*/
|
||||
@ExcelProperty(value = "指标说明")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 指标最高分值
|
||||
*/
|
||||
@ExcelProperty(value = "指标最高分值")
|
||||
private BigDecimal indicatorMaxScore;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package org.dromara.xskh.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.xskh.domain.XskhAssessmentPlan;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核方案视图对象 xskh_assessment_plan
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XskhAssessmentPlan.class)
|
||||
public class XskhAssessmentPlanVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 方案编号
|
||||
*/
|
||||
@ExcelProperty(value = "方案编号")
|
||||
private String planCode;
|
||||
|
||||
/**
|
||||
* 方案名称
|
||||
*/
|
||||
@ExcelProperty(value = "方案名称")
|
||||
private String planName;
|
||||
|
||||
/**
|
||||
* 方案说明
|
||||
*/
|
||||
@ExcelProperty(value = "方案说明")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 状态(0-启用 1-禁用)
|
||||
*/
|
||||
@ExcelProperty(value = "状态")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
|
||||
/**
|
||||
* 关联的指标列表
|
||||
*/
|
||||
private List<XskhAssessmentPlanIndicatorVo> indicatorList;
|
||||
|
||||
}
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
package org.dromara.xskh.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.xskh.domain.XskhAssessmentSchedule;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生考核计划视图对象 xskh_assessment_schedule
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@AutoMapper(target = XskhAssessmentSchedule.class)
|
||||
public class XskhAssessmentScheduleVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核计划名称
|
||||
*/
|
||||
private String scheduleName;
|
||||
|
||||
/**
|
||||
* 考核方案ID
|
||||
*/
|
||||
private Long planId;
|
||||
|
||||
/**
|
||||
* 考核方案名称
|
||||
*/
|
||||
private String planName;
|
||||
|
||||
/**
|
||||
* 学年
|
||||
*/
|
||||
private String academicYear;
|
||||
|
||||
/**
|
||||
* 学期(1-第一学期 2-第二学期)
|
||||
*/
|
||||
private String semester;
|
||||
|
||||
/**
|
||||
* 学期名称
|
||||
*/
|
||||
private String semesterName;
|
||||
|
||||
/**
|
||||
* 考核开始时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 考核结束时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 数据统计开始时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date dataStartTime;
|
||||
|
||||
/**
|
||||
* 数据统计结束时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date dataEndTime;
|
||||
|
||||
/**
|
||||
* 状态(1-未开始 2-进行中 3-已结束)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 状态名称
|
||||
*/
|
||||
private String statusName;
|
||||
|
||||
/**
|
||||
* 考核说明
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
|
||||
}
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
package org.dromara.xskh.domain.vo;
|
||||
|
||||
import org.dromara.xskh.domain.XskhAssessmentSelfScore;
|
||||
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.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生考核自评、班主任评分视图对象 xskh_assessment_self_score
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Data
|
||||
@AutoMapper(target = XskhAssessmentSelfScore.class)
|
||||
public class XskhAssessmentSelfScoreVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 考核申请ID
|
||||
*/
|
||||
private Long applicationId;
|
||||
|
||||
/**
|
||||
* 指标ID
|
||||
*/
|
||||
private Long indicatorId;
|
||||
|
||||
/**
|
||||
* 指标名称
|
||||
*/
|
||||
private String indicatorName;
|
||||
|
||||
/**
|
||||
* 指标编码
|
||||
*/
|
||||
private String indicatorCode;
|
||||
|
||||
/**
|
||||
* 指标说明
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 指标类型
|
||||
*/
|
||||
private String indicatorType;
|
||||
|
||||
/**
|
||||
* 最高分值
|
||||
*/
|
||||
private BigDecimal maxScore;
|
||||
|
||||
/**
|
||||
* 自评得分
|
||||
*/
|
||||
private BigDecimal selfScore;
|
||||
|
||||
/**
|
||||
* 自评备注
|
||||
*/
|
||||
private String selfRemark;
|
||||
|
||||
/**
|
||||
* 班主任评分
|
||||
*/
|
||||
private BigDecimal teacherScore;
|
||||
|
||||
/**
|
||||
* 班主任备注
|
||||
*/
|
||||
private String teacherRemark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
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;
|
||||
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package org.dromara.xskh.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xskh.domain.XskhAssessmentApplicationApproval;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentApplicationApprovalVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核申请、班主任审核Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface XskhAssessmentApplicationApprovalMapper
|
||||
extends BaseMapperPlus<XskhAssessmentApplicationApproval, XskhAssessmentApplicationApprovalVo> {
|
||||
|
||||
/**
|
||||
* 根据考核方案ID查询关联的指标数据
|
||||
*/
|
||||
List<Object> selectIndicatorsByPlanId(Long planId);
|
||||
|
||||
/**
|
||||
* 根据申请ID查询完整的自评得分信息(包含指标表关联数据)
|
||||
*/
|
||||
List<org.dromara.xskh.domain.vo.XskhAssessmentSelfScoreVo> selectSelfScoresWithIndicatorInfo(
|
||||
Long applicationId);
|
||||
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package org.dromara.xskh.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xskh.domain.XskhAssessmentApplicationApproval;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentApprovalVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核审核Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface XskhAssessmentApprovalMapper
|
||||
extends BaseMapperPlus<XskhAssessmentApplicationApproval, XskhAssessmentApprovalVo> {
|
||||
|
||||
/**
|
||||
* 查询班主任班级下的考核申请列表
|
||||
*
|
||||
* @param teacherId 班主任ID
|
||||
* @param scheduleId 考核计划ID
|
||||
* @param studentNo 学号
|
||||
* @param studentName 学生姓名
|
||||
* @param status 状态
|
||||
* @return 考核申请列表
|
||||
*/
|
||||
List<XskhAssessmentApprovalVo> selectTeacherClassApplications(@Param("teacherId") Long teacherId,
|
||||
@Param("scheduleId") Long scheduleId,
|
||||
@Param("studentNo") String studentNo,
|
||||
@Param("studentName") String studentName,
|
||||
@Param("status") String status);
|
||||
|
||||
/**
|
||||
* 根据ID查询考核申请详细信息(包含考核计划信息)
|
||||
*
|
||||
* @param id 考核申请ID
|
||||
* @return 考核申请详细信息
|
||||
*/
|
||||
XskhAssessmentApprovalVo selectApprovalDetailById(@Param("id") Long id);
|
||||
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package org.dromara.xskh.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xskh.domain.XskhAssessmentBonusApproval;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentBonusApprovalVo;
|
||||
|
||||
/**
|
||||
* 学生附加分申请、班主任审核得分Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface XskhAssessmentBonusApprovalMapper extends BaseMapperPlus<XskhAssessmentBonusApproval, XskhAssessmentBonusApprovalVo> {
|
||||
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package org.dromara.xskh.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xskh.domain.XskhAssessmentIndicatorDisciplineType;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentIndicatorDisciplineTypeVo;
|
||||
|
||||
/**
|
||||
* 考核指标关联违纪处分类型和奖励类型Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface XskhAssessmentIndicatorDisciplineTypeMapper
|
||||
extends BaseMapperPlus<XskhAssessmentIndicatorDisciplineType, XskhAssessmentIndicatorDisciplineTypeVo> {
|
||||
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package org.dromara.xskh.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xskh.domain.XskhAssessmentIndicator;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentIndicatorVo;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface XskhAssessmentIndicatorMapper
|
||||
extends BaseMapperPlus<XskhAssessmentIndicator, XskhAssessmentIndicatorVo> {
|
||||
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package org.dromara.xskh.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xskh.domain.XskhAssessmentIndicatorType;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentIndicatorTypeVo;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系类型Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface XskhAssessmentIndicatorTypeMapper
|
||||
extends BaseMapperPlus<XskhAssessmentIndicatorType, XskhAssessmentIndicatorTypeVo> {
|
||||
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package org.dromara.xskh.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xskh.domain.XskhAssessmentPlanIndicator;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentPlanIndicatorVo;
|
||||
|
||||
/**
|
||||
* 考核方案关联指标体系Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface XskhAssessmentPlanIndicatorMapper
|
||||
extends BaseMapperPlus<XskhAssessmentPlanIndicator, XskhAssessmentPlanIndicatorVo> {
|
||||
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package org.dromara.xskh.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xskh.domain.XskhAssessmentPlan;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentPlanVo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentPlanIndicatorVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核方案Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface XskhAssessmentPlanMapper extends BaseMapperPlus<XskhAssessmentPlan, XskhAssessmentPlanVo> {
|
||||
|
||||
/**
|
||||
* 查询方案关联的指标详细信息
|
||||
*
|
||||
* @param planId 方案ID
|
||||
* @return 指标详细信息列表
|
||||
*/
|
||||
List<XskhAssessmentPlanIndicatorVo> selectPlanIndicatorsWithDetail(Long planId);
|
||||
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package org.dromara.xskh.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xskh.domain.XskhAssessmentSchedule;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentScheduleVo;
|
||||
|
||||
/**
|
||||
* 学生考核计划Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface XskhAssessmentScheduleMapper extends BaseMapperPlus<XskhAssessmentSchedule, XskhAssessmentScheduleVo> {
|
||||
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package org.dromara.xskh.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xskh.domain.XskhAssessmentSelfScore;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentSelfScoreVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核自评、班主任评分Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface XskhAssessmentSelfScoreMapper
|
||||
extends BaseMapperPlus<XskhAssessmentSelfScore, XskhAssessmentSelfScoreVo> {
|
||||
|
||||
/**
|
||||
* 查询自评得分列表(包含指标详细信息)
|
||||
*
|
||||
* @param applicationId 考核申请ID
|
||||
* @return 自评得分列表
|
||||
*/
|
||||
List<XskhAssessmentSelfScoreVo> selectSelfScoreWithIndicatorDetail(@Param("applicationId") Long applicationId);
|
||||
|
||||
}
|
||||
+23
@@ -9,6 +9,7 @@ import org.dromara.xskh.domain.vo.XskhDisciplineRecordVo;
|
||||
import org.dromara.xskh.domain.vo.XskhStudentOptionVo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 学生违纪处分记录Mapper接口
|
||||
@@ -38,4 +39,26 @@ public interface XskhDisciplineRecordMapper extends BaseMapperPlus<XskhDisciplin
|
||||
@Param("bo") XskhDisciplineRecordBo bo,
|
||||
@Param("classTeacherId") Long classTeacherId);
|
||||
|
||||
/**
|
||||
* 获取指标关联的违纪处分类型和奖励类型
|
||||
*
|
||||
* @param indicatorId 指标ID
|
||||
* @return 包含disciplineTypeIds和rewardTypeIds的Map
|
||||
*/
|
||||
Map<String, String> selectIndicatorTypes(@Param("indicatorId") Long indicatorId);
|
||||
|
||||
/**
|
||||
* 获取学生在指定时间范围内的违纪处分记录
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param disciplineTypeIds 违纪处分类型ID列表
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @return 违纪处分记录列表
|
||||
*/
|
||||
List<XskhDisciplineRecordVo> selectStudentDisciplineRecords(@Param("studentId") Long studentId,
|
||||
@Param("disciplineTypeIds") List<Long> disciplineTypeIds,
|
||||
@Param("startTime") String startTime,
|
||||
@Param("endTime") String endTime);
|
||||
|
||||
}
|
||||
+14
@@ -37,4 +37,18 @@ public interface XskhRewardRecordMapper extends BaseMapperPlus<XskhRewardRecord,
|
||||
Page<XskhRewardRecordVo> selectClassTeacherVoPage(@Param("page") Page<XskhRewardRecordVo> page,
|
||||
@Param("bo") XskhRewardRecordBo bo,
|
||||
@Param("classTeacherId") Long classTeacherId);
|
||||
|
||||
/**
|
||||
* 获取学生在指定时间范围内的奖励记录
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param rewardTypeIds 奖励类型ID列表
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @return 奖励记录列表
|
||||
*/
|
||||
List<XskhRewardRecordVo> selectStudentRewardRecords(@Param("studentId") Long studentId,
|
||||
@Param("rewardTypeIds") List<Long> rewardTypeIds,
|
||||
@Param("startTime") String startTime,
|
||||
@Param("endTime") String endTime);
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
package org.dromara.xskh.service;
|
||||
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentApplicationApprovalBo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentApplicationApprovalVo;
|
||||
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-03
|
||||
*/
|
||||
public interface IXskhAssessmentApplicationApprovalService {
|
||||
|
||||
/**
|
||||
* 查询学生考核申请、班主任审核
|
||||
*/
|
||||
XskhAssessmentApplicationApprovalVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询学生考核申请、班主任审核列表
|
||||
*/
|
||||
TableDataInfo<XskhAssessmentApplicationApprovalVo> queryPageList(XskhAssessmentApplicationApprovalBo bo,
|
||||
PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询学生考核申请、班主任审核列表
|
||||
*/
|
||||
List<XskhAssessmentApplicationApprovalVo> queryList(XskhAssessmentApplicationApprovalBo bo);
|
||||
|
||||
/**
|
||||
* 新增学生考核申请、班主任审核
|
||||
*/
|
||||
Long insertByBo(XskhAssessmentApplicationApprovalBo bo);
|
||||
|
||||
/**
|
||||
* 修改学生考核申请、班主任审核
|
||||
*/
|
||||
Boolean updateByBo(XskhAssessmentApplicationApprovalBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除学生考核申请、班主任审核信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 保存考核申请(草稿状态)
|
||||
*/
|
||||
Boolean saveApplication(XskhAssessmentApplicationApprovalBo bo);
|
||||
|
||||
/**
|
||||
* 提交考核申请
|
||||
*/
|
||||
Boolean submitApplication(Long id);
|
||||
|
||||
/**
|
||||
* 删除考核申请
|
||||
*/
|
||||
Boolean deleteApplication(Long id);
|
||||
|
||||
/**
|
||||
* 获取可申请的考核计划列表
|
||||
*/
|
||||
List<XskhAssessmentApplicationApprovalVo> getAvailableSchedules();
|
||||
|
||||
/**
|
||||
* 根据学生ID和考核计划ID查询申请
|
||||
*/
|
||||
XskhAssessmentApplicationApprovalVo getByStudentAndSchedule(Long studentId, Long scheduleId);
|
||||
|
||||
/**
|
||||
* 根据考核计划ID获取关联的指标数据
|
||||
*/
|
||||
List<Object> getIndicatorsByScheduleId(Long scheduleId);
|
||||
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
package org.dromara.xskh.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentApprovalBo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentApprovalVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核审核Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
public interface IXskhAssessmentApprovalService {
|
||||
|
||||
/**
|
||||
* 查询学生考核审核
|
||||
*/
|
||||
XskhAssessmentApprovalVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询学生考核审核列表
|
||||
*/
|
||||
TableDataInfo<XskhAssessmentApprovalVo> queryPageList(XskhAssessmentApprovalBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询学生考核审核列表
|
||||
*/
|
||||
List<XskhAssessmentApprovalVo> queryList(XskhAssessmentApprovalBo bo);
|
||||
|
||||
/**
|
||||
* 新增学生考核审核
|
||||
*/
|
||||
Boolean insertByBo(XskhAssessmentApprovalBo bo);
|
||||
|
||||
/**
|
||||
* 修改学生考核审核
|
||||
*/
|
||||
Boolean updateByBo(XskhAssessmentApprovalBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除学生考核审核信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 审核考核申请
|
||||
*/
|
||||
Boolean approveApplication(XskhAssessmentApprovalBo bo);
|
||||
|
||||
/**
|
||||
* 获取班主任班级下的考核申请列表
|
||||
*/
|
||||
TableDataInfo<XskhAssessmentApprovalVo> getTeacherClassApplications(Long scheduleId, String studentNo,
|
||||
String studentName, String status, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 获取考核计划列表(进行中和已结束)
|
||||
*/
|
||||
List<XskhAssessmentApprovalVo> getAvailableSchedules();
|
||||
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
package org.dromara.xskh.service;
|
||||
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentIndicatorVo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentIndicatorBo;
|
||||
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-03
|
||||
*/
|
||||
public interface IXskhAssessmentIndicatorService {
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系
|
||||
*/
|
||||
XskhAssessmentIndicatorVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系列表
|
||||
*/
|
||||
TableDataInfo<XskhAssessmentIndicatorVo> queryPageList(XskhAssessmentIndicatorBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系列表
|
||||
*/
|
||||
List<XskhAssessmentIndicatorVo> queryList(XskhAssessmentIndicatorBo bo);
|
||||
|
||||
/**
|
||||
* 新增学生考核指标体系
|
||||
*/
|
||||
Boolean insertByBo(XskhAssessmentIndicatorBo bo);
|
||||
|
||||
/**
|
||||
* 修改学生考核指标体系
|
||||
*/
|
||||
Boolean updateByBo(XskhAssessmentIndicatorBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除学生考核指标体系信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 检查指标是否被考核方案使用
|
||||
*/
|
||||
Boolean checkUsedByPlan(Long indicatorId);
|
||||
|
||||
/**
|
||||
* 保存指标关联的违纪处分类型和奖励类型
|
||||
*/
|
||||
Boolean saveIndicatorRelations(Long indicatorId, List<Long> disciplineTypeIds, List<Long> rewardTypeIds);
|
||||
|
||||
/**
|
||||
* 获取指标关联的违纪处分类型和奖励类型
|
||||
*/
|
||||
XskhAssessmentIndicatorVo getIndicatorWithRelations(Long indicatorId);
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package org.dromara.xskh.service;
|
||||
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentIndicatorTypeVo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentIndicatorTypeBo;
|
||||
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-03
|
||||
*/
|
||||
public interface IXskhAssessmentIndicatorTypeService {
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系类型
|
||||
*/
|
||||
XskhAssessmentIndicatorTypeVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系类型列表
|
||||
*/
|
||||
TableDataInfo<XskhAssessmentIndicatorTypeVo> queryPageList(XskhAssessmentIndicatorTypeBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系类型列表
|
||||
*/
|
||||
List<XskhAssessmentIndicatorTypeVo> queryList(XskhAssessmentIndicatorTypeBo bo);
|
||||
|
||||
/**
|
||||
* 新增学生考核指标体系类型
|
||||
*/
|
||||
Boolean insertByBo(XskhAssessmentIndicatorTypeBo bo);
|
||||
|
||||
/**
|
||||
* 修改学生考核指标体系类型
|
||||
*/
|
||||
Boolean updateByBo(XskhAssessmentIndicatorTypeBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除学生考核指标体系类型信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 检查指标类型是否被指标体系使用
|
||||
*/
|
||||
Boolean checkUsedByIndicator(Long typeId);
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package org.dromara.xskh.service;
|
||||
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentPlanBo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentPlanVo;
|
||||
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-03
|
||||
*/
|
||||
public interface IXskhAssessmentPlanService {
|
||||
|
||||
/**
|
||||
* 查询学生考核方案
|
||||
*/
|
||||
XskhAssessmentPlanVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询学生考核方案列表
|
||||
*/
|
||||
TableDataInfo<XskhAssessmentPlanVo> queryPageList(XskhAssessmentPlanBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询学生考核方案列表
|
||||
*/
|
||||
List<XskhAssessmentPlanVo> queryList(XskhAssessmentPlanBo bo);
|
||||
|
||||
/**
|
||||
* 新增学生考核方案
|
||||
*/
|
||||
Boolean insertByBo(XskhAssessmentPlanBo bo);
|
||||
|
||||
/**
|
||||
* 修改学生考核方案
|
||||
*/
|
||||
Boolean updateByBo(XskhAssessmentPlanBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除学生考核方案信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 获取方案详情(包含关联的指标信息)
|
||||
*/
|
||||
XskhAssessmentPlanVo getPlanWithRelations(Long id);
|
||||
}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
package org.dromara.xskh.service;
|
||||
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentScheduleBo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentScheduleQueryBo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentScheduleVo;
|
||||
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-03
|
||||
*/
|
||||
public interface IXskhAssessmentScheduleService {
|
||||
|
||||
/**
|
||||
* 查询学生考核计划
|
||||
*/
|
||||
XskhAssessmentScheduleVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询学生考核计划列表
|
||||
*/
|
||||
TableDataInfo<XskhAssessmentScheduleVo> queryPageList(XskhAssessmentScheduleBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 根据状态列表查询学生考核计划列表
|
||||
*/
|
||||
TableDataInfo<XskhAssessmentScheduleVo> queryPageListByStatusList(XskhAssessmentScheduleQueryBo bo,
|
||||
PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询学生考核计划列表
|
||||
*/
|
||||
List<XskhAssessmentScheduleVo> queryList(XskhAssessmentScheduleBo bo);
|
||||
|
||||
/**
|
||||
* 新增学生考核计划
|
||||
*/
|
||||
Boolean insertByBo(XskhAssessmentScheduleBo bo);
|
||||
|
||||
/**
|
||||
* 修改学生考核计划
|
||||
*/
|
||||
Boolean updateByBo(XskhAssessmentScheduleBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除学生考核计划信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 上线考核计划
|
||||
*/
|
||||
Boolean onlineSchedule(Long id);
|
||||
|
||||
/**
|
||||
* 下线考核计划
|
||||
*/
|
||||
Boolean offlineSchedule(Long id);
|
||||
|
||||
/**
|
||||
* 完成考核计划
|
||||
*/
|
||||
Boolean completeSchedule(Long id);
|
||||
|
||||
}
|
||||
+21
@@ -8,6 +8,7 @@ import org.dromara.xskh.domain.vo.XskhStudentOptionVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 学生违纪处分记录Service接口
|
||||
@@ -70,4 +71,24 @@ public interface IXskhDisciplineRecordService {
|
||||
* @return 更新结果
|
||||
*/
|
||||
Boolean updateDisciplineRecordStatus(Long id, String status);
|
||||
|
||||
/**
|
||||
* 获取指标关联的违纪处分类型和奖励类型
|
||||
*
|
||||
* @param indicatorId 指标ID
|
||||
* @return 包含disciplineTypeIds和rewardTypeIds的Map
|
||||
*/
|
||||
Map<String, String> getIndicatorTypes(Long indicatorId);
|
||||
|
||||
/**
|
||||
* 获取学生在指定时间范围内的违纪处分记录
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param disciplineTypeIds 违纪处分类型ID,逗号分隔
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @return 违纪处分记录列表
|
||||
*/
|
||||
List<XskhDisciplineRecordVo> getStudentDisciplineRecords(Long studentId, String disciplineTypeIds, String startTime,
|
||||
String endTime);
|
||||
}
|
||||
+14
-2
@@ -78,7 +78,7 @@ public interface IXskhRewardRecordService {
|
||||
/**
|
||||
* 查询当前登录学生的奖励记录列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 分页结果
|
||||
*/
|
||||
@@ -87,9 +87,21 @@ public interface IXskhRewardRecordService {
|
||||
/**
|
||||
* 查询班主任班级的奖励记录列表(班主任专用)
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 分页结果
|
||||
*/
|
||||
TableDataInfo<XskhRewardRecordVo> queryClassTeacherPageList(XskhRewardRecordBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 获取学生在指定时间范围内的奖励记录
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param rewardTypeIds 奖励类型ID,逗号分隔
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @return 奖励记录列表
|
||||
*/
|
||||
List<XskhRewardRecordVo> getStudentRewardRecords(Long studentId, String rewardTypeIds, String startTime,
|
||||
String endTime);
|
||||
}
|
||||
+387
@@ -0,0 +1,387 @@
|
||||
package org.dromara.xskh.service.impl;
|
||||
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentApplicationApprovalBo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentSelfScoreBo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentBonusApprovalBo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentScheduleBo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentApplicationApprovalVo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentSelfScoreVo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentBonusApprovalVo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentScheduleVo;
|
||||
import org.dromara.xskh.domain.XskhAssessmentApplicationApproval;
|
||||
import org.dromara.xskh.domain.XskhAssessmentSelfScore;
|
||||
import org.dromara.xskh.domain.XskhAssessmentBonusApproval;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentApplicationApprovalMapper;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentSelfScoreMapper;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentBonusApprovalMapper;
|
||||
import org.dromara.xskh.service.IXskhAssessmentApplicationApprovalService;
|
||||
import org.dromara.xskh.service.IXskhAssessmentScheduleService;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 学生考核申请、班主任审核Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XskhAssessmentApplicationApprovalServiceImpl implements IXskhAssessmentApplicationApprovalService {
|
||||
|
||||
private final XskhAssessmentApplicationApprovalMapper baseMapper;
|
||||
private final XskhAssessmentSelfScoreMapper selfScoreMapper;
|
||||
private final XskhAssessmentBonusApprovalMapper bonusApprovalMapper;
|
||||
private final IXskhAssessmentScheduleService assessmentScheduleService;
|
||||
|
||||
/**
|
||||
* 查询学生考核申请、班主任审核
|
||||
*/
|
||||
@Override
|
||||
public XskhAssessmentApplicationApprovalVo queryById(Long id) {
|
||||
XskhAssessmentApplicationApprovalVo vo = baseMapper.selectVoById(id);
|
||||
if (vo != null) {
|
||||
// 查询完整的自评得分列表(包含指标表关联数据)
|
||||
List<XskhAssessmentSelfScoreVo> selfScoreVos = baseMapper.selectSelfScoresWithIndicatorInfo(id);
|
||||
vo.setSelfScoreList(selfScoreVos);
|
||||
|
||||
// 查询附加分申请列表
|
||||
LambdaQueryWrapper<XskhAssessmentBonusApproval> bonusWrapper = Wrappers.lambdaQuery();
|
||||
bonusWrapper.eq(XskhAssessmentBonusApproval::getApplicationId, id);
|
||||
List<XskhAssessmentBonusApproval> bonusApprovals = bonusApprovalMapper.selectList(bonusWrapper);
|
||||
vo.setBonusApprovalList(MapstructUtils.convert(bonusApprovals, XskhAssessmentBonusApprovalVo.class));
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核申请、班主任审核列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XskhAssessmentApplicationApprovalVo> queryPageList(XskhAssessmentApplicationApprovalBo bo,
|
||||
PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XskhAssessmentApplicationApproval> lqw = buildQueryWrapper(bo);
|
||||
Page<XskhAssessmentApplicationApprovalVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核申请、班主任审核列表
|
||||
*/
|
||||
@Override
|
||||
public List<XskhAssessmentApplicationApprovalVo> queryList(XskhAssessmentApplicationApprovalBo bo) {
|
||||
LambdaQueryWrapper<XskhAssessmentApplicationApproval> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XskhAssessmentApplicationApproval> buildQueryWrapper(
|
||||
XskhAssessmentApplicationApprovalBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XskhAssessmentApplicationApproval> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(bo.getScheduleId() != null, XskhAssessmentApplicationApproval::getScheduleId, bo.getScheduleId());
|
||||
lqw.eq(bo.getStudentId() != null, XskhAssessmentApplicationApproval::getStudentId, bo.getStudentId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getStudentName()), XskhAssessmentApplicationApproval::getStudentName,
|
||||
bo.getStudentName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getStudentNo()), XskhAssessmentApplicationApproval::getStudentNo,
|
||||
bo.getStudentNo());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XskhAssessmentApplicationApproval::getStatus, bo.getStatus());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核申请、班主任审核
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long insertByBo(XskhAssessmentApplicationApprovalBo bo) {
|
||||
XskhAssessmentApplicationApproval add = MapstructUtils.convert(bo, XskhAssessmentApplicationApproval.class);
|
||||
validEntityBeforeSave(add);
|
||||
// 新增时默认状态为草稿
|
||||
add.setStatus("1");
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
// 保存自评得分数据
|
||||
saveSelfScores(add.getId(), bo.getSelfScoreList());
|
||||
// 保存附加分申请数据
|
||||
saveBonusApprovals(add.getId(), bo.getBonusApprovalList());
|
||||
return add.getId();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核申请、班主任审核
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateByBo(XskhAssessmentApplicationApprovalBo bo) {
|
||||
XskhAssessmentApplicationApproval update = MapstructUtils.convert(bo, XskhAssessmentApplicationApproval.class);
|
||||
validEntityBeforeSave(update);
|
||||
boolean flag = baseMapper.updateById(update) > 0;
|
||||
if (flag) {
|
||||
// 更新自评得分数据
|
||||
updateSelfScores(update.getId(), bo.getSelfScoreList());
|
||||
// 更新附加分申请数据
|
||||
updateBonusApprovals(update.getId(), bo.getBonusApprovalList());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前校验数据
|
||||
*/
|
||||
private void validEntityBeforeSave(XskhAssessmentApplicationApproval entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除学生考核申请、班主任审核
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// 校验是否可以删除:只有草稿状态的申请可以删除
|
||||
for (Long id : ids) {
|
||||
XskhAssessmentApplicationApproval application = baseMapper.selectById(id);
|
||||
if (application != null && !"1".equals(application.getStatus())) {
|
||||
throw new RuntimeException("只有草稿状态的考核申请可以删除");
|
||||
}
|
||||
}
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存考核申请(草稿状态)
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean saveApplication(XskhAssessmentApplicationApprovalBo bo) {
|
||||
if (bo.getId() == null) {
|
||||
// 新增
|
||||
return insertByBo(bo) != null;
|
||||
} else {
|
||||
// 修改
|
||||
XskhAssessmentApplicationApproval existing = baseMapper.selectById(bo.getId());
|
||||
if (existing == null) {
|
||||
throw new RuntimeException("考核申请不存在");
|
||||
}
|
||||
if (!"1".equals(existing.getStatus()) && !"2".equals(existing.getStatus())
|
||||
&& !"3".equals(existing.getStatus())) {
|
||||
throw new RuntimeException("只有草稿、已提交、班主任审核状态的考核申请可以保存");
|
||||
}
|
||||
// 保存时状态改为草稿
|
||||
bo.setStatus("1");
|
||||
return updateByBo(bo);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交考核申请
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean submitApplication(Long id) {
|
||||
XskhAssessmentApplicationApproval application = baseMapper.selectById(id);
|
||||
if (application == null) {
|
||||
throw new RuntimeException("考核申请不存在");
|
||||
}
|
||||
if (!"1".equals(application.getStatus()) && !"2".equals(application.getStatus())
|
||||
&& !"3".equals(application.getStatus())) {
|
||||
throw new RuntimeException("只有草稿、已提交、班主任审核状态的考核申请可以提交");
|
||||
}
|
||||
|
||||
application.setStatus("2"); // 设置为已提交
|
||||
application.setSubmitTime(new Date());
|
||||
return baseMapper.updateById(application) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除考核申请
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteApplication(Long id) {
|
||||
XskhAssessmentApplicationApproval application = baseMapper.selectById(id);
|
||||
if (application == null) {
|
||||
throw new RuntimeException("考核申请不存在");
|
||||
}
|
||||
if (!"1".equals(application.getStatus())) {
|
||||
throw new RuntimeException("只有草稿状态的考核申请可以删除");
|
||||
}
|
||||
|
||||
// 删除自评得分数据
|
||||
LambdaQueryWrapper<XskhAssessmentSelfScore> selfScoreWrapper = Wrappers.lambdaQuery();
|
||||
selfScoreWrapper.eq(XskhAssessmentSelfScore::getApplicationId, id);
|
||||
selfScoreMapper.delete(selfScoreWrapper);
|
||||
|
||||
// 删除附加分申请数据
|
||||
LambdaQueryWrapper<XskhAssessmentBonusApproval> bonusWrapper = Wrappers.lambdaQuery();
|
||||
bonusWrapper.eq(XskhAssessmentBonusApproval::getApplicationId, id);
|
||||
bonusApprovalMapper.delete(bonusWrapper);
|
||||
|
||||
// 删除主表数据
|
||||
return baseMapper.deleteById(id) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取可申请的考核计划列表
|
||||
*/
|
||||
@Override
|
||||
public List<XskhAssessmentApplicationApprovalVo> getAvailableSchedules() {
|
||||
// 查询状态为2(进行中)和3(已结束)的考核计划
|
||||
XskhAssessmentScheduleBo bo = new XskhAssessmentScheduleBo();
|
||||
List<XskhAssessmentScheduleVo> scheduleList = assessmentScheduleService.queryList(bo);
|
||||
|
||||
// 过滤出状态为2和3的计划
|
||||
List<XskhAssessmentScheduleVo> availableSchedules = scheduleList.stream()
|
||||
.filter(schedule -> "2".equals(schedule.getStatus()) || "3".equals(schedule.getStatus()))
|
||||
.toList();
|
||||
|
||||
// 转换为申请VO对象,包含考核计划的详细信息
|
||||
List<XskhAssessmentApplicationApprovalVo> result = new ArrayList<>();
|
||||
for (XskhAssessmentScheduleVo schedule : availableSchedules) {
|
||||
XskhAssessmentApplicationApprovalVo vo = new XskhAssessmentApplicationApprovalVo();
|
||||
vo.setScheduleId(schedule.getId());
|
||||
vo.setScheduleName(schedule.getScheduleName());
|
||||
// 设置考核计划的状态信息
|
||||
vo.setStatus(schedule.getStatus());
|
||||
// 设置考核计划的时间信息
|
||||
vo.setStartTime(schedule.getStartTime());
|
||||
vo.setEndTime(schedule.getEndTime());
|
||||
// 设置数据统计时间范围(用于指标数据查询)
|
||||
vo.setDataStartTime(schedule.getDataStartTime());
|
||||
vo.setDataEndTime(schedule.getDataEndTime());
|
||||
result.add(vo);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据学生ID和考核计划ID查询申请
|
||||
*/
|
||||
@Override
|
||||
public XskhAssessmentApplicationApprovalVo getByStudentAndSchedule(Long studentId, Long scheduleId) {
|
||||
LambdaQueryWrapper<XskhAssessmentApplicationApproval> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(XskhAssessmentApplicationApproval::getStudentId, studentId);
|
||||
wrapper.eq(XskhAssessmentApplicationApproval::getScheduleId, scheduleId);
|
||||
XskhAssessmentApplicationApproval application = baseMapper.selectOne(wrapper);
|
||||
if (application != null) {
|
||||
return queryById(application.getId());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存自评得分数据
|
||||
*/
|
||||
private void saveSelfScores(Long applicationId, List<XskhAssessmentSelfScoreBo> selfScoreList) {
|
||||
if (selfScoreList != null && !selfScoreList.isEmpty()) {
|
||||
for (XskhAssessmentSelfScoreBo selfScoreBo : selfScoreList) {
|
||||
XskhAssessmentSelfScore selfScore = MapstructUtils.convert(selfScoreBo, XskhAssessmentSelfScore.class);
|
||||
selfScore.setApplicationId(applicationId);
|
||||
selfScoreMapper.insert(selfScore);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新自评得分数据
|
||||
*/
|
||||
private void updateSelfScores(Long applicationId, List<XskhAssessmentSelfScoreBo> selfScoreList) {
|
||||
if (selfScoreList != null && !selfScoreList.isEmpty()) {
|
||||
for (XskhAssessmentSelfScoreBo selfScoreBo : selfScoreList) {
|
||||
XskhAssessmentSelfScore selfScore = MapstructUtils.convert(selfScoreBo, XskhAssessmentSelfScore.class);
|
||||
selfScore.setApplicationId(applicationId);
|
||||
|
||||
// 如果ID存在,则更新;否则新增
|
||||
if (selfScore.getId() != null) {
|
||||
// 更新现有记录
|
||||
selfScoreMapper.updateById(selfScore);
|
||||
} else {
|
||||
// 新增记录
|
||||
selfScoreMapper.insert(selfScore);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存附加分申请数据
|
||||
*/
|
||||
private void saveBonusApprovals(Long applicationId, List<XskhAssessmentBonusApprovalBo> bonusApprovalList) {
|
||||
if (bonusApprovalList != null && !bonusApprovalList.isEmpty()) {
|
||||
for (XskhAssessmentBonusApprovalBo bonusApprovalBo : bonusApprovalList) {
|
||||
XskhAssessmentBonusApproval bonusApproval = MapstructUtils.convert(bonusApprovalBo,
|
||||
XskhAssessmentBonusApproval.class);
|
||||
bonusApproval.setApplicationId(applicationId);
|
||||
bonusApproval.setStatus("1"); // 默认待审核状态
|
||||
bonusApprovalMapper.insert(bonusApproval);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新附加分申请数据
|
||||
*/
|
||||
private void updateBonusApprovals(Long applicationId, List<XskhAssessmentBonusApprovalBo> bonusApprovalList) {
|
||||
if (bonusApprovalList != null && !bonusApprovalList.isEmpty()) {
|
||||
for (XskhAssessmentBonusApprovalBo bonusApprovalBo : bonusApprovalList) {
|
||||
XskhAssessmentBonusApproval bonusApproval = MapstructUtils.convert(bonusApprovalBo,
|
||||
XskhAssessmentBonusApproval.class);
|
||||
bonusApproval.setApplicationId(applicationId);
|
||||
|
||||
// 如果ID存在,则更新;否则新增
|
||||
if (bonusApproval.getId() != null) {
|
||||
// 更新现有记录
|
||||
bonusApprovalMapper.updateById(bonusApproval);
|
||||
} else {
|
||||
// 新增记录,设置默认状态
|
||||
bonusApproval.setStatus("1"); // 默认待审核状态
|
||||
bonusApprovalMapper.insert(bonusApproval);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据考核计划ID获取关联的指标数据
|
||||
*/
|
||||
@Override
|
||||
public List<Object> getIndicatorsByScheduleId(Long scheduleId) {
|
||||
// 1. 根据考核计划ID获取考核方案ID
|
||||
XskhAssessmentScheduleVo schedule = assessmentScheduleService.queryById(scheduleId);
|
||||
if (schedule == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
Long planId = schedule.getPlanId();
|
||||
if (planId == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// 2. 根据考核方案ID查询关联的指标数据
|
||||
// 这里需要调用考核方案指标关联的Mapper
|
||||
// 由于没有直接的Mapper注入,我们需要通过SQL查询
|
||||
List<Object> indicators = baseMapper.selectIndicatorsByPlanId(planId);
|
||||
|
||||
return indicators;
|
||||
}
|
||||
|
||||
}
|
||||
+341
@@ -0,0 +1,341 @@
|
||||
package org.dromara.xskh.service.impl;
|
||||
|
||||
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.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.xskh.domain.XskhAssessmentApplicationApproval;
|
||||
import org.dromara.xskh.domain.XskhAssessmentBonusApproval;
|
||||
import org.dromara.xskh.domain.XskhAssessmentSelfScore;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentApprovalBo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentSelfScoreBo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentBonusApprovalBo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentApprovalVo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentSelfScoreVo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentBonusApprovalVo;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentApprovalMapper;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentBonusApprovalMapper;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentSelfScoreMapper;
|
||||
import org.dromara.xskh.service.IXskhAssessmentApprovalService;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生考核审核Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XskhAssessmentApprovalServiceImpl implements IXskhAssessmentApprovalService {
|
||||
|
||||
private final XskhAssessmentApprovalMapper baseMapper;
|
||||
private final XskhAssessmentSelfScoreMapper selfScoreMapper;
|
||||
private final XskhAssessmentBonusApprovalMapper bonusApprovalMapper;
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
|
||||
/**
|
||||
* 查询学生考核审核
|
||||
*/
|
||||
@Override
|
||||
public XskhAssessmentApprovalVo queryById(Long id) {
|
||||
// 使用自定义SQL查询获取完整的考核申请信息
|
||||
XskhAssessmentApprovalVo vo = baseMapper.selectApprovalDetailById(id);
|
||||
|
||||
if (vo != null) {
|
||||
// 查询自评得分列表(包含指标详细信息)
|
||||
List<XskhAssessmentSelfScoreVo> selfScoreList = selfScoreMapper.selectSelfScoreWithIndicatorDetail(id);
|
||||
vo.setSelfScoreList(selfScoreList);
|
||||
|
||||
// 查询附加分申请列表
|
||||
LambdaQueryWrapper<XskhAssessmentBonusApproval> bonusWrapper = Wrappers.lambdaQuery();
|
||||
bonusWrapper.eq(XskhAssessmentBonusApproval::getApplicationId, id);
|
||||
List<XskhAssessmentBonusApproval> bonusList = bonusApprovalMapper.selectList(bonusWrapper);
|
||||
List<XskhAssessmentBonusApprovalVo> bonusVoList = MapstructUtils.convert(bonusList,
|
||||
XskhAssessmentBonusApprovalVo.class);
|
||||
|
||||
// 设置附加分列表(前端期望的字段名)
|
||||
vo.setBonusList(bonusVoList);
|
||||
// 同时设置bonusApprovalList字段以兼容前端
|
||||
vo.setBonusApprovalList(bonusVoList);
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核审核列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XskhAssessmentApprovalVo> queryPageList(XskhAssessmentApprovalBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XskhAssessmentApplicationApproval> lqw = buildQueryWrapper(bo);
|
||||
Page<XskhAssessmentApprovalVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核审核列表
|
||||
*/
|
||||
@Override
|
||||
public List<XskhAssessmentApprovalVo> queryList(XskhAssessmentApprovalBo bo) {
|
||||
LambdaQueryWrapper<XskhAssessmentApplicationApproval> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XskhAssessmentApplicationApproval> buildQueryWrapper(XskhAssessmentApprovalBo bo) {
|
||||
LambdaQueryWrapper<XskhAssessmentApplicationApproval> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(bo.getScheduleId() != null, XskhAssessmentApplicationApproval::getScheduleId, bo.getScheduleId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStudentNo()), XskhAssessmentApplicationApproval::getStudentNo,
|
||||
bo.getStudentNo());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getStudentName()), XskhAssessmentApplicationApproval::getStudentName,
|
||||
bo.getStudentName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XskhAssessmentApplicationApproval::getStatus, bo.getStatus());
|
||||
lqw.orderByDesc(XskhAssessmentApplicationApproval::getCreateTime);
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核审核
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XskhAssessmentApprovalBo bo) {
|
||||
XskhAssessmentApplicationApproval add = MapstructUtils.convert(bo, XskhAssessmentApplicationApproval.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核审核
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XskhAssessmentApprovalBo bo) {
|
||||
XskhAssessmentApplicationApproval update = MapstructUtils.convert(bo, XskhAssessmentApplicationApproval.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XskhAssessmentApplicationApproval entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除学生考核审核
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 审核考核申请
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean approveApplication(XskhAssessmentApprovalBo bo) {
|
||||
// 1. 更新考核申请主表
|
||||
XskhAssessmentApplicationApproval application = baseMapper.selectById(bo.getId());
|
||||
if (application == null) {
|
||||
throw new RuntimeException("考核申请不存在");
|
||||
}
|
||||
|
||||
// 校验状态
|
||||
if (!"2".equals(application.getStatus()) && !"3".equals(application.getStatus())) {
|
||||
throw new RuntimeException("只有已提交或班主任审核状态的申请可以审核");
|
||||
}
|
||||
|
||||
// 更新申请状态为已完成
|
||||
application.setStatus("6");
|
||||
application.setTeacherApprovalBy(LoginHelper.getUserId());
|
||||
application.setTeacherApprovalTime(new Date());
|
||||
application.setTeacherApprovalRemark(bo.getTeacherApprovalRemark());
|
||||
application.setUpdateBy(LoginHelper.getUserId());
|
||||
application.setUpdateTime(new Date());
|
||||
|
||||
// 2. 更新自评得分表中的班主任评分
|
||||
if (bo.getSelfScoreList() != null && !bo.getSelfScoreList().isEmpty()) {
|
||||
for (XskhAssessmentSelfScoreBo selfScoreBo : bo.getSelfScoreList()) {
|
||||
XskhAssessmentSelfScore selfScore = selfScoreMapper.selectById(selfScoreBo.getId());
|
||||
if (selfScore != null) {
|
||||
selfScore.setTeacherScore(selfScoreBo.getTeacherScore());
|
||||
selfScore.setTeacherRemark(selfScoreBo.getTeacherRemark());
|
||||
selfScore.setUpdateBy(LoginHelper.getUserId());
|
||||
selfScore.setUpdateTime(new Date());
|
||||
selfScoreMapper.updateById(selfScore);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 更新附加分申请表中的审核得分
|
||||
// 优先使用bonusApprovalList,如果没有则使用bonusList
|
||||
List<XskhAssessmentBonusApprovalBo> bonusApprovalList = bo.getBonusApprovalList();
|
||||
if (bonusApprovalList == null || bonusApprovalList.isEmpty()) {
|
||||
bonusApprovalList = bo.getBonusList();
|
||||
}
|
||||
|
||||
log.info("审核附加分数据 - bonusApprovalList: {}, bonusList: {}",
|
||||
bo.getBonusApprovalList() != null ? bo.getBonusApprovalList().size() : 0,
|
||||
bo.getBonusList() != null ? bo.getBonusList().size() : 0);
|
||||
|
||||
if (bonusApprovalList != null && !bonusApprovalList.isEmpty()) {
|
||||
log.info("开始处理 {} 个附加分项目", bonusApprovalList.size());
|
||||
for (XskhAssessmentBonusApprovalBo bonusBo : bonusApprovalList) {
|
||||
log.info("处理附加分项目 - ID: {}, 审核得分: {}, 审核备注: {}",
|
||||
bonusBo.getId(), bonusBo.getApprovalScore(), bonusBo.getApprovalRemark());
|
||||
|
||||
XskhAssessmentBonusApproval bonus = bonusApprovalMapper.selectById(bonusBo.getId());
|
||||
if (bonus != null) {
|
||||
bonus.setApprovalScore(bonusBo.getApprovalScore());
|
||||
bonus.setApprovalBy(LoginHelper.getUserId());
|
||||
bonus.setApprovalTime(new Date());
|
||||
bonus.setApprovalRemark(bonusBo.getApprovalRemark());
|
||||
|
||||
// 根据审核得分判断状态:大于0为审核通过,否则为审核拒绝
|
||||
if (bonusBo.getApprovalScore() != null
|
||||
&& bonusBo.getApprovalScore().compareTo(BigDecimal.ZERO) > 0) {
|
||||
bonus.setStatus("2"); // 审核通过
|
||||
log.info("附加分项目 {} 审核通过", bonusBo.getId());
|
||||
} else {
|
||||
bonus.setStatus("3"); // 审核拒绝
|
||||
log.info("附加分项目 {} 审核拒绝", bonusBo.getId());
|
||||
}
|
||||
|
||||
bonus.setUpdateBy(LoginHelper.getUserId());
|
||||
bonus.setUpdateTime(new Date());
|
||||
int updateResult = bonusApprovalMapper.updateById(bonus);
|
||||
log.info("更新附加分项目 {} 结果: {}", bonusBo.getId(), updateResult);
|
||||
} else {
|
||||
log.warn("未找到附加分项目,ID: {}", bonusBo.getId());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
log.info("没有附加分数据需要处理");
|
||||
}
|
||||
|
||||
// 4. 计算总得分
|
||||
BigDecimal totalTeacherScore = BigDecimal.ZERO;
|
||||
|
||||
// 计算自评得分中的班主任评分总和
|
||||
LambdaQueryWrapper<XskhAssessmentSelfScore> selfScoreWrapper = Wrappers.lambdaQuery();
|
||||
selfScoreWrapper.eq(XskhAssessmentSelfScore::getApplicationId, bo.getId());
|
||||
List<XskhAssessmentSelfScore> selfScoreList = selfScoreMapper.selectList(selfScoreWrapper);
|
||||
for (XskhAssessmentSelfScore selfScore : selfScoreList) {
|
||||
if (selfScore.getTeacherScore() != null) {
|
||||
totalTeacherScore = totalTeacherScore.add(selfScore.getTeacherScore());
|
||||
}
|
||||
}
|
||||
|
||||
// 计算附加分申请中的审核得分总和
|
||||
LambdaQueryWrapper<XskhAssessmentBonusApproval> bonusWrapper = Wrappers.lambdaQuery();
|
||||
bonusWrapper.eq(XskhAssessmentBonusApproval::getApplicationId, bo.getId());
|
||||
List<XskhAssessmentBonusApproval> bonusList = bonusApprovalMapper.selectList(bonusWrapper);
|
||||
for (XskhAssessmentBonusApproval bonus : bonusList) {
|
||||
if (bonus.getApprovalScore() != null) {
|
||||
totalTeacherScore = totalTeacherScore.add(bonus.getApprovalScore());
|
||||
}
|
||||
}
|
||||
|
||||
// 更新总得分
|
||||
application.setTeacherScore(totalTeacherScore);
|
||||
application.setTotalScore(totalTeacherScore);
|
||||
|
||||
return baseMapper.updateById(application) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任班级下的考核申请列表
|
||||
* 注意:班主任只能查看已提交、班主任审核、已完成状态的申请,不包含草稿状态
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XskhAssessmentApprovalVo> getTeacherClassApplications(Long scheduleId, String studentNo,
|
||||
String studentName, String status, PageQuery pageQuery) {
|
||||
// 获取当前登录用户的ID
|
||||
Long currentUserId = LoginHelper.getUserId();
|
||||
|
||||
// 查询班主任班级下的考核申请列表
|
||||
List<XskhAssessmentApprovalVo> list = baseMapper.selectTeacherClassApplications(
|
||||
currentUserId, scheduleId, studentNo, studentName, status);
|
||||
|
||||
// 手动分页处理
|
||||
Page<XskhAssessmentApprovalVo> page = pageQuery.build();
|
||||
int total = list.size();
|
||||
int start = (int) ((page.getCurrent() - 1) * page.getSize());
|
||||
int end = Math.min(start + (int) page.getSize(), total);
|
||||
|
||||
List<XskhAssessmentApprovalVo> pageList = list.subList(start, end);
|
||||
|
||||
page.setRecords(pageList);
|
||||
page.setTotal(total);
|
||||
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取考核计划列表(进行中和已结束)
|
||||
*/
|
||||
@Override
|
||||
public List<XskhAssessmentApprovalVo> getAvailableSchedules() {
|
||||
// 查询考核计划表,获取状态为进行中和已结束的计划
|
||||
String sql = """
|
||||
SELECT
|
||||
id as schedule_id,
|
||||
schedule_name,
|
||||
academic_year,
|
||||
semester,
|
||||
start_time,
|
||||
end_time,
|
||||
status,
|
||||
CASE status
|
||||
WHEN '1' THEN '未开始'
|
||||
WHEN '2' THEN '进行中'
|
||||
WHEN '3' THEN '已结束'
|
||||
ELSE '未知'
|
||||
END as status_name
|
||||
FROM xskh_assessment_schedule
|
||||
WHERE deleted = 0
|
||||
AND status IN ('2', '3')
|
||||
ORDER BY start_time DESC
|
||||
""";
|
||||
|
||||
try {
|
||||
// 使用JdbcTemplate执行查询
|
||||
return jdbcTemplate.query(sql, (rs, rowNum) -> {
|
||||
XskhAssessmentApprovalVo vo = new XskhAssessmentApprovalVo();
|
||||
vo.setScheduleId(rs.getLong("schedule_id"));
|
||||
vo.setScheduleName(rs.getString("schedule_name"));
|
||||
vo.setStatus(rs.getString("status"));
|
||||
vo.setStatusName(rs.getString("status_name"));
|
||||
return vo;
|
||||
});
|
||||
} catch (Exception e) {
|
||||
log.error("查询考核计划列表失败", e);
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+228
@@ -0,0 +1,228 @@
|
||||
package org.dromara.xskh.service.impl;
|
||||
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
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.xskh.domain.bo.XskhAssessmentIndicatorBo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentIndicatorVo;
|
||||
import org.dromara.xskh.domain.XskhAssessmentIndicator;
|
||||
import org.dromara.xskh.domain.XskhAssessmentIndicatorDisciplineType;
|
||||
import org.dromara.xskh.domain.XskhAssessmentIndicatorType;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentIndicatorMapper;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentIndicatorDisciplineTypeMapper;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentIndicatorTypeMapper;
|
||||
import org.dromara.xskh.service.IXskhAssessmentIndicatorService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XskhAssessmentIndicatorServiceImpl implements IXskhAssessmentIndicatorService {
|
||||
|
||||
private final XskhAssessmentIndicatorMapper baseMapper;
|
||||
private final XskhAssessmentIndicatorDisciplineTypeMapper relationMapper;
|
||||
private final XskhAssessmentIndicatorTypeMapper indicatorTypeMapper;
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系
|
||||
*/
|
||||
@Override
|
||||
public XskhAssessmentIndicatorVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XskhAssessmentIndicatorVo> queryPageList(XskhAssessmentIndicatorBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XskhAssessmentIndicator> lqw = buildQueryWrapper(bo);
|
||||
Page<XskhAssessmentIndicatorVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系列表
|
||||
*/
|
||||
@Override
|
||||
public List<XskhAssessmentIndicatorVo> queryList(XskhAssessmentIndicatorBo bo) {
|
||||
LambdaQueryWrapper<XskhAssessmentIndicator> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XskhAssessmentIndicator> buildQueryWrapper(XskhAssessmentIndicatorBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XskhAssessmentIndicator> lqw = Wrappers.lambdaQuery();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getIndicatorCode()), XskhAssessmentIndicator::getIndicatorCode,
|
||||
bo.getIndicatorCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getIndicatorName()), XskhAssessmentIndicator::getIndicatorName,
|
||||
bo.getIndicatorName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XskhAssessmentIndicator::getStatus, bo.getStatus());
|
||||
lqw.eq(bo.getIndicatorTypeId() != null, XskhAssessmentIndicator::getIndicatorTypeId, bo.getIndicatorTypeId());
|
||||
lqw.orderByDesc(XskhAssessmentIndicator::getCreateTime);
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核指标体系
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(XskhAssessmentIndicatorBo bo) {
|
||||
XskhAssessmentIndicator add = MapstructUtils.convert(bo, XskhAssessmentIndicator.class);
|
||||
|
||||
// 根据指标类型ID设置指标类型名称
|
||||
if (add.getIndicatorTypeId() != null) {
|
||||
XskhAssessmentIndicatorType indicatorType = indicatorTypeMapper.selectById(add.getIndicatorTypeId());
|
||||
if (indicatorType != null) {
|
||||
add.setIndicatorTypeName(indicatorType.getTypeName());
|
||||
}
|
||||
}
|
||||
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
// 保存关联关系
|
||||
saveIndicatorRelations(add.getId(), bo.getDisciplineTypeIds(), bo.getRewardTypeIds());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核指标体系
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateByBo(XskhAssessmentIndicatorBo bo) {
|
||||
XskhAssessmentIndicator update = MapstructUtils.convert(bo, XskhAssessmentIndicator.class);
|
||||
|
||||
// 根据指标类型ID设置指标类型名称
|
||||
if (update.getIndicatorTypeId() != null) {
|
||||
XskhAssessmentIndicatorType indicatorType = indicatorTypeMapper.selectById(update.getIndicatorTypeId());
|
||||
if (indicatorType != null) {
|
||||
update.setIndicatorTypeName(indicatorType.getTypeName());
|
||||
}
|
||||
}
|
||||
|
||||
validEntityBeforeSave(update);
|
||||
boolean flag = baseMapper.updateById(update) > 0;
|
||||
if (flag) {
|
||||
// 更新关联关系
|
||||
saveIndicatorRelations(update.getId(), bo.getDisciplineTypeIds(), bo.getRewardTypeIds());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XskhAssessmentIndicator entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除学生考核指标体系
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查指标是否被考核方案使用
|
||||
*/
|
||||
@Override
|
||||
public Boolean checkUsedByPlan(Long indicatorId) {
|
||||
// 这里需要查询考核方案表,检查是否有使用该指标
|
||||
// 由于考核方案表还未创建,暂时返回false
|
||||
// TODO: 当考核方案表创建后,需要实现此逻辑
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存指标关联的违纪处分类型和奖励类型
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean saveIndicatorRelations(Long indicatorId, List<Long> disciplineTypeIds, List<Long> rewardTypeIds) {
|
||||
// 先删除原有关联关系
|
||||
LambdaQueryWrapper<XskhAssessmentIndicatorDisciplineType> deleteWrapper = Wrappers.lambdaQuery();
|
||||
deleteWrapper.eq(XskhAssessmentIndicatorDisciplineType::getIndicatorId, indicatorId);
|
||||
relationMapper.delete(deleteWrapper);
|
||||
|
||||
// 如果有新的关联关系,则插入
|
||||
if ((disciplineTypeIds != null && !disciplineTypeIds.isEmpty()) ||
|
||||
(rewardTypeIds != null && !rewardTypeIds.isEmpty())) {
|
||||
XskhAssessmentIndicatorDisciplineType relation = new XskhAssessmentIndicatorDisciplineType();
|
||||
relation.setIndicatorId(indicatorId);
|
||||
|
||||
if (disciplineTypeIds != null && !disciplineTypeIds.isEmpty()) {
|
||||
relation.setDisciplineTypeIds(
|
||||
String.join(",", disciplineTypeIds.stream().map(String::valueOf).collect(Collectors.toList())));
|
||||
} else {
|
||||
relation.setDisciplineTypeIds("");
|
||||
}
|
||||
|
||||
if (rewardTypeIds != null && !rewardTypeIds.isEmpty()) {
|
||||
relation.setRewardTypeIds(
|
||||
String.join(",", rewardTypeIds.stream().map(String::valueOf).collect(Collectors.toList())));
|
||||
} else {
|
||||
relation.setRewardTypeIds("");
|
||||
}
|
||||
|
||||
return relationMapper.insert(relation) > 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指标关联的违纪处分类型和奖励类型
|
||||
*/
|
||||
@Override
|
||||
public XskhAssessmentIndicatorVo getIndicatorWithRelations(Long indicatorId) {
|
||||
XskhAssessmentIndicatorVo vo = baseMapper.selectVoById(indicatorId);
|
||||
if (vo != null) {
|
||||
// 查询关联关系
|
||||
LambdaQueryWrapper<XskhAssessmentIndicatorDisciplineType> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.eq(XskhAssessmentIndicatorDisciplineType::getIndicatorId, indicatorId);
|
||||
XskhAssessmentIndicatorDisciplineType relation = relationMapper.selectOne(queryWrapper);
|
||||
|
||||
if (relation != null) {
|
||||
// 解析违纪处分类型ID列表
|
||||
if (StringUtils.isNotBlank(relation.getDisciplineTypeIds())) {
|
||||
List<Long> disciplineTypeIds = StringUtils.splitTo(relation.getDisciplineTypeIds(),
|
||||
Convert::toLong);
|
||||
vo.setDisciplineTypeIds(disciplineTypeIds);
|
||||
}
|
||||
|
||||
// 解析奖励类型ID列表
|
||||
if (StringUtils.isNotBlank(relation.getRewardTypeIds())) {
|
||||
List<Long> rewardTypeIds = StringUtils.splitTo(relation.getRewardTypeIds(), Convert::toLong);
|
||||
vo.setRewardTypeIds(rewardTypeIds);
|
||||
}
|
||||
}
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
}
|
||||
+146
@@ -0,0 +1,146 @@
|
||||
package org.dromara.xskh.service.impl;
|
||||
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentIndicatorTypeBo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentIndicatorTypeVo;
|
||||
import org.dromara.xskh.domain.XskhAssessmentIndicatorType;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentIndicatorTypeMapper;
|
||||
import org.dromara.xskh.service.IXskhAssessmentIndicatorTypeService;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 学生考核指标体系类型Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XskhAssessmentIndicatorTypeServiceImpl implements IXskhAssessmentIndicatorTypeService {
|
||||
|
||||
private final XskhAssessmentIndicatorTypeMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系类型
|
||||
*/
|
||||
@Override
|
||||
public XskhAssessmentIndicatorTypeVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系类型列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XskhAssessmentIndicatorTypeVo> queryPageList(XskhAssessmentIndicatorTypeBo bo,
|
||||
PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XskhAssessmentIndicatorType> lqw = buildQueryWrapper(bo);
|
||||
Page<XskhAssessmentIndicatorTypeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核指标体系类型列表
|
||||
*/
|
||||
@Override
|
||||
public List<XskhAssessmentIndicatorTypeVo> queryList(XskhAssessmentIndicatorTypeBo bo) {
|
||||
LambdaQueryWrapper<XskhAssessmentIndicatorType> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XskhAssessmentIndicatorType> buildQueryWrapper(XskhAssessmentIndicatorTypeBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XskhAssessmentIndicatorType> lqw = Wrappers.lambdaQuery();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getTypeCode()), XskhAssessmentIndicatorType::getTypeCode, bo.getTypeCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getTypeName()), XskhAssessmentIndicatorType::getTypeName, bo.getTypeName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XskhAssessmentIndicatorType::getStatus, bo.getStatus());
|
||||
lqw.orderByDesc(XskhAssessmentIndicatorType::getCreateTime);
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核指标体系类型
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XskhAssessmentIndicatorTypeBo bo) {
|
||||
XskhAssessmentIndicatorType add = MapstructUtils.convert(bo, XskhAssessmentIndicatorType.class);
|
||||
|
||||
// 调试日志:检查当前登录用户信息
|
||||
// try {
|
||||
// Long userId = LoginHelper.getUserId();
|
||||
// Long deptId = LoginHelper.getDeptId();
|
||||
// log.info("🔍 调试信息 - 当前登录用户ID: {}, 部门ID: {}", userId, deptId);
|
||||
|
||||
// // 手动设置createDept字段,确保有值
|
||||
// if (add.getCreateDept() == null && deptId != null) {
|
||||
// add.setCreateDept(deptId);
|
||||
// log.info("✅ 手动设置createDept字段: {}", deptId);
|
||||
// } else {
|
||||
// log.info("⚠️ createDept字段状态: {}", add.getCreateDept());
|
||||
// }
|
||||
// } catch (Exception e) {
|
||||
// log.warn("⚠️ 获取登录用户信息失败: {}", e.getMessage());
|
||||
// }
|
||||
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
log.info("✅ 新增成功,ID: {}, createDept: {}", add.getId(), add.getCreateDept());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核指标体系类型
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XskhAssessmentIndicatorTypeBo bo) {
|
||||
XskhAssessmentIndicatorType update = MapstructUtils.convert(bo, XskhAssessmentIndicatorType.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XskhAssessmentIndicatorType entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除学生考核指标体系类型
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查指标类型是否被指标体系使用
|
||||
*/
|
||||
@Override
|
||||
public Boolean checkUsedByIndicator(Long typeId) {
|
||||
// 这里需要查询指标体系表,检查是否有使用该类型
|
||||
// 由于指标体系表还未创建,暂时返回false
|
||||
// TODO: 当指标体系表创建后,需要实现此逻辑
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+181
@@ -0,0 +1,181 @@
|
||||
package org.dromara.xskh.service.impl;
|
||||
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentPlanBo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentPlanVo;
|
||||
import org.dromara.xskh.domain.XskhAssessmentPlan;
|
||||
import org.dromara.xskh.domain.XskhAssessmentPlanIndicator;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentPlanMapper;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentPlanIndicatorMapper;
|
||||
import org.dromara.xskh.service.IXskhAssessmentPlanService;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentPlanIndicatorVo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 学生考核方案Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XskhAssessmentPlanServiceImpl implements IXskhAssessmentPlanService {
|
||||
|
||||
private final XskhAssessmentPlanMapper baseMapper;
|
||||
private final XskhAssessmentPlanIndicatorMapper planIndicatorMapper;
|
||||
|
||||
/**
|
||||
* 查询学生考核方案
|
||||
*/
|
||||
@Override
|
||||
public XskhAssessmentPlanVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核方案列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XskhAssessmentPlanVo> queryPageList(XskhAssessmentPlanBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XskhAssessmentPlan> lqw = buildQueryWrapper(bo);
|
||||
Page<XskhAssessmentPlanVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核方案列表
|
||||
*/
|
||||
@Override
|
||||
public List<XskhAssessmentPlanVo> queryList(XskhAssessmentPlanBo bo) {
|
||||
LambdaQueryWrapper<XskhAssessmentPlan> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XskhAssessmentPlan> buildQueryWrapper(XskhAssessmentPlanBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XskhAssessmentPlan> lqw = Wrappers.lambdaQuery();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getPlanCode()), XskhAssessmentPlan::getPlanCode, bo.getPlanCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getPlanName()), XskhAssessmentPlan::getPlanName, bo.getPlanName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XskhAssessmentPlan::getStatus, bo.getStatus());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核方案
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(XskhAssessmentPlanBo bo) {
|
||||
XskhAssessmentPlan add = MapstructUtils.convert(bo, XskhAssessmentPlan.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
// 保存关联的指标信息
|
||||
savePlanIndicators(bo);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核方案
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateByBo(XskhAssessmentPlanBo bo) {
|
||||
XskhAssessmentPlan update = MapstructUtils.convert(bo, XskhAssessmentPlan.class);
|
||||
validEntityBeforeSave(update);
|
||||
boolean flag = baseMapper.updateById(update) > 0;
|
||||
if (flag) {
|
||||
// 更新关联的指标信息(先删除再插入)
|
||||
updatePlanIndicators(bo);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前校验数据
|
||||
*/
|
||||
private void validEntityBeforeSave(XskhAssessmentPlan entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除学生考核方案
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取方案详情(包含关联的指标信息)
|
||||
*/
|
||||
@Override
|
||||
public XskhAssessmentPlanVo getPlanWithRelations(Long id) {
|
||||
XskhAssessmentPlanVo planVo = baseMapper.selectVoById(id);
|
||||
if (planVo != null) {
|
||||
// 查询关联的指标详细信息
|
||||
List<XskhAssessmentPlanIndicatorVo> indicatorList = baseMapper.selectPlanIndicatorsWithDetail(id);
|
||||
planVo.setIndicatorList(indicatorList);
|
||||
}
|
||||
return planVo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存方案关联的指标信息
|
||||
*/
|
||||
private void savePlanIndicators(XskhAssessmentPlanBo bo) {
|
||||
// 优先使用indicatorList,如果没有则使用indicatorIds
|
||||
if (bo.getIndicatorList() != null && !bo.getIndicatorList().isEmpty()) {
|
||||
for (XskhAssessmentPlanIndicatorVo indicatorVo : bo.getIndicatorList()) {
|
||||
XskhAssessmentPlanIndicator planIndicator = new XskhAssessmentPlanIndicator();
|
||||
planIndicator.setPlanId(bo.getId());
|
||||
planIndicator.setIndicatorId(indicatorVo.getIndicatorId());
|
||||
planIndicator
|
||||
.setMaxScore(indicatorVo.getMaxScore() != null ? indicatorVo.getMaxScore() : BigDecimal.ZERO);
|
||||
planIndicator.setSortOrder(indicatorVo.getSortOrder() != null ? indicatorVo.getSortOrder() : 1);
|
||||
planIndicatorMapper.insert(planIndicator);
|
||||
}
|
||||
} else if (bo.getIndicatorIds() != null && !bo.getIndicatorIds().isEmpty()) {
|
||||
// 兼容原有的indicatorIds方式
|
||||
for (int i = 0; i < bo.getIndicatorIds().size(); i++) {
|
||||
Long indicatorId = bo.getIndicatorIds().get(i);
|
||||
XskhAssessmentPlanIndicator planIndicator = new XskhAssessmentPlanIndicator();
|
||||
planIndicator.setPlanId(bo.getId());
|
||||
planIndicator.setIndicatorId(indicatorId);
|
||||
planIndicator.setSortOrder(i + 1);
|
||||
planIndicatorMapper.insert(planIndicator);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新方案关联的指标信息
|
||||
*/
|
||||
private void updatePlanIndicators(XskhAssessmentPlanBo bo) {
|
||||
// 先删除原有的关联关系
|
||||
LambdaQueryWrapper<XskhAssessmentPlanIndicator> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(XskhAssessmentPlanIndicator::getPlanId, bo.getId());
|
||||
planIndicatorMapper.delete(lqw);
|
||||
|
||||
// 重新插入新的关联关系
|
||||
savePlanIndicators(bo);
|
||||
}
|
||||
}
|
||||
+225
@@ -0,0 +1,225 @@
|
||||
package org.dromara.xskh.service.impl;
|
||||
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentScheduleBo;
|
||||
import org.dromara.xskh.domain.bo.XskhAssessmentScheduleQueryBo;
|
||||
import org.dromara.xskh.domain.vo.XskhAssessmentScheduleVo;
|
||||
import org.dromara.xskh.domain.XskhAssessmentSchedule;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentScheduleMapper;
|
||||
import org.dromara.xskh.service.IXskhAssessmentScheduleService;
|
||||
import org.dromara.xskh.domain.XskhAssessmentPlan;
|
||||
import org.dromara.xskh.mapper.XskhAssessmentPlanMapper;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 学生考核计划Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-03
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XskhAssessmentScheduleServiceImpl implements IXskhAssessmentScheduleService {
|
||||
|
||||
private final XskhAssessmentScheduleMapper baseMapper;
|
||||
private final XskhAssessmentPlanMapper assessmentPlanMapper;
|
||||
|
||||
/**
|
||||
* 查询学生考核计划
|
||||
*/
|
||||
@Override
|
||||
public XskhAssessmentScheduleVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核计划列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XskhAssessmentScheduleVo> queryPageList(XskhAssessmentScheduleBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XskhAssessmentSchedule> lqw = buildQueryWrapper(bo);
|
||||
Page<XskhAssessmentScheduleVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据状态列表查询学生考核计划列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XskhAssessmentScheduleVo> queryPageListByStatusList(XskhAssessmentScheduleQueryBo bo,
|
||||
PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XskhAssessmentSchedule> lqw = buildQueryWrapperByStatusList(bo);
|
||||
Page<XskhAssessmentScheduleVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生考核计划列表
|
||||
*/
|
||||
@Override
|
||||
public List<XskhAssessmentScheduleVo> queryList(XskhAssessmentScheduleBo bo) {
|
||||
LambdaQueryWrapper<XskhAssessmentSchedule> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XskhAssessmentSchedule> buildQueryWrapper(XskhAssessmentScheduleBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XskhAssessmentSchedule> lqw = Wrappers.lambdaQuery();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getScheduleName()), XskhAssessmentSchedule::getScheduleName,
|
||||
bo.getScheduleName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getAcademicYear()), XskhAssessmentSchedule::getAcademicYear,
|
||||
bo.getAcademicYear());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSemester()), XskhAssessmentSchedule::getSemester, bo.getSemester());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XskhAssessmentSchedule::getStatus, bo.getStatus());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XskhAssessmentSchedule> buildQueryWrapperByStatusList(XskhAssessmentScheduleQueryBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XskhAssessmentSchedule> lqw = Wrappers.lambdaQuery();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getScheduleName()), XskhAssessmentSchedule::getScheduleName,
|
||||
bo.getScheduleName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getAcademicYear()), XskhAssessmentSchedule::getAcademicYear,
|
||||
bo.getAcademicYear());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSemester()), XskhAssessmentSchedule::getSemester, bo.getSemester());
|
||||
// 支持状态列表查询
|
||||
if (bo.getStatusList() != null && !bo.getStatusList().isEmpty()) {
|
||||
lqw.in(XskhAssessmentSchedule::getStatus, bo.getStatusList());
|
||||
}
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生考核计划
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(XskhAssessmentScheduleBo bo) {
|
||||
XskhAssessmentSchedule add = MapstructUtils.convert(bo, XskhAssessmentSchedule.class);
|
||||
validEntityBeforeSave(add);
|
||||
|
||||
// 如果planName为空,根据planId自动查询并填充
|
||||
if (StringUtils.isBlank(add.getPlanName()) && add.getPlanId() != null) {
|
||||
XskhAssessmentPlan plan = assessmentPlanMapper.selectById(add.getPlanId());
|
||||
if (plan != null) {
|
||||
add.setPlanName(plan.getPlanName());
|
||||
}
|
||||
}
|
||||
|
||||
// 新增时默认状态为未开始
|
||||
add.setStatus("1");
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生考核计划
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateByBo(XskhAssessmentScheduleBo bo) {
|
||||
XskhAssessmentSchedule update = MapstructUtils.convert(bo, XskhAssessmentSchedule.class);
|
||||
validEntityBeforeSave(update);
|
||||
|
||||
// 如果planName为空,根据planId自动查询并填充
|
||||
if (StringUtils.isBlank(update.getPlanName()) && update.getPlanId() != null) {
|
||||
XskhAssessmentPlan plan = assessmentPlanMapper.selectById(update.getPlanId());
|
||||
if (plan != null) {
|
||||
update.setPlanName(plan.getPlanName());
|
||||
}
|
||||
}
|
||||
|
||||
boolean flag = baseMapper.updateById(update) > 0;
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前校验数据
|
||||
*/
|
||||
private void validEntityBeforeSave(XskhAssessmentSchedule entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除学生考核计划
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// 校验是否可以删除:只有未开始状态的计划可以删除
|
||||
for (Long id : ids) {
|
||||
XskhAssessmentSchedule schedule = baseMapper.selectById(id);
|
||||
if (schedule != null && !"1".equals(schedule.getStatus())) {
|
||||
throw new RuntimeException("只有未开始状态的考核计划可以删除");
|
||||
}
|
||||
}
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上线考核计划
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean onlineSchedule(Long id) {
|
||||
XskhAssessmentSchedule schedule = baseMapper.selectById(id);
|
||||
if (schedule == null) {
|
||||
throw new RuntimeException("考核计划不存在");
|
||||
}
|
||||
if (!"1".equals(schedule.getStatus())) {
|
||||
throw new RuntimeException("只有未开始状态的考核计划可以上线");
|
||||
}
|
||||
|
||||
schedule.setStatus("2"); // 设置为进行中
|
||||
return baseMapper.updateById(schedule) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 下线考核计划
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean offlineSchedule(Long id) {
|
||||
XskhAssessmentSchedule schedule = baseMapper.selectById(id);
|
||||
if (schedule == null) {
|
||||
throw new RuntimeException("考核计划不存在");
|
||||
}
|
||||
if (!"2".equals(schedule.getStatus())) {
|
||||
throw new RuntimeException("只有进行中状态的考核计划可以下线");
|
||||
}
|
||||
|
||||
schedule.setStatus("1"); // 设置为未开始
|
||||
return baseMapper.updateById(schedule) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 完成考核计划
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean completeSchedule(Long id) {
|
||||
XskhAssessmentSchedule schedule = baseMapper.selectById(id);
|
||||
if (schedule == null) {
|
||||
throw new RuntimeException("考核计划不存在");
|
||||
}
|
||||
if ("3".equals(schedule.getStatus())) {
|
||||
throw new RuntimeException("考核计划已经是已结束状态");
|
||||
}
|
||||
|
||||
schedule.setStatus("3"); // 设置为已结束
|
||||
return baseMapper.updateById(schedule) > 0;
|
||||
}
|
||||
}
|
||||
+34
@@ -21,6 +21,8 @@ import org.springframework.stereotype.Service;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 学生违纪处分记录Service业务层处理
|
||||
@@ -212,4 +214,36 @@ public class XskhDisciplineRecordServiceImpl implements IXskhDisciplineRecordSer
|
||||
record.setStatus(status);
|
||||
return baseMapper.updateById(record) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指标关联的违纪处分类型和奖励类型
|
||||
*/
|
||||
@Override
|
||||
public Map<String, String> getIndicatorTypes(Long indicatorId) {
|
||||
return baseMapper.selectIndicatorTypes(indicatorId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生在指定时间范围内的违纪处分记录
|
||||
*/
|
||||
@Override
|
||||
public List<XskhDisciplineRecordVo> getStudentDisciplineRecords(Long studentId, String disciplineTypeIds,
|
||||
String startTime, String endTime) {
|
||||
if (StringUtils.isBlank(disciplineTypeIds)) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
// 将逗号分隔的字符串转换为List<Long>
|
||||
List<Long> typeIds = Arrays.stream(disciplineTypeIds.split(","))
|
||||
.map(String::trim)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.map(Long::valueOf)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (typeIds.isEmpty()) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
return baseMapper.selectStudentDisciplineRecords(studentId, typeIds, startTime, endTime);
|
||||
}
|
||||
}
|
||||
+26
@@ -21,6 +21,8 @@ import org.dromara.xskh.service.IXskhRewardRecordService;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -223,4 +225,28 @@ public class XskhRewardRecordServiceImpl implements IXskhRewardRecordService {
|
||||
Page<XskhRewardRecordVo> result = baseMapper.selectClassTeacherVoPage(pageQuery.build(), bo, currentUserId);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生在指定时间范围内的奖励记录
|
||||
*/
|
||||
@Override
|
||||
public List<XskhRewardRecordVo> getStudentRewardRecords(Long studentId, String rewardTypeIds, String startTime,
|
||||
String endTime) {
|
||||
if (StringUtils.isBlank(rewardTypeIds)) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
// 将逗号分隔的字符串转换为List<Long>
|
||||
List<Long> typeIds = Arrays.stream(rewardTypeIds.split(","))
|
||||
.map(String::trim)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.map(Long::valueOf)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (typeIds.isEmpty()) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
return baseMapper.selectStudentRewardRecords(studentId, typeIds, startTime, endTime);
|
||||
}
|
||||
}
|
||||
+33
-7
@@ -22,10 +22,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="disciplineContent" column="discipline_content" />
|
||||
<result property="scoreDeduction" column="score_deduction" />
|
||||
<result property="status" column="status" />
|
||||
<result property="approvalStatus" column="approval_status" />
|
||||
<result property="approvalBy" column="approval_by" />
|
||||
<result property="approvalTime" column="approval_time" />
|
||||
<result property="approvalRemark" column="approval_remark" />
|
||||
<result property="attachmentOssIds" column="attachment_oss_ids" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
@@ -49,7 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectXskhDisciplineRecordVo">
|
||||
select id, student_id, student_no, student_name, college_id, college_name, major_id, major_name, class_id, class_name, discipline_type_id, discipline_type_name, discipline_date, discipline_reason, discipline_content, score_deduction, status, approval_status, approval_by, approval_time, approval_remark, attachment_oss_ids, create_by, create_time, create_dept, update_by, update_time, deleted, tenant_id from xskh_discipline_record
|
||||
select id, student_id, student_no, student_name, college_id, college_name, major_id, major_name, class_id, class_name, discipline_type_id, discipline_type_name, discipline_date, discipline_reason, discipline_content, score_deduction, status, attachment_oss_ids, create_by, create_time, create_dept, update_by, update_time, deleted, tenant_id from xskh_discipline_record
|
||||
</sql>
|
||||
|
||||
<select id="selectStudentOptions" parameterType="String" resultMap="StudentOptionResult">
|
||||
@@ -71,8 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
select dr.id, dr.student_id, dr.student_no, dr.student_name, dr.college_id, dr.college_name,
|
||||
dr.major_id, dr.major_name, dr.class_id, dr.class_name, dr.discipline_type_id,
|
||||
dr.discipline_type_name, dr.discipline_date, dr.discipline_reason, dr.discipline_content,
|
||||
dr.score_deduction, dr.status, dr.approval_status, dr.approval_by, dr.approval_time,
|
||||
dr.approval_remark, dr.attachment_oss_ids, dr.create_by, dr.create_time, dr.create_dept,
|
||||
dr.score_deduction, dr.status, dr.attachment_oss_ids, dr.create_by, dr.create_time, dr.create_dept,
|
||||
dr.update_by, dr.update_time, dr.deleted, dr.tenant_id
|
||||
from xskh_discipline_record dr
|
||||
where dr.deleted = 0
|
||||
@@ -98,4 +93,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
order by dr.create_time desc
|
||||
</select>
|
||||
|
||||
<!-- 获取指标关联的违纪处分类型和奖励类型 -->
|
||||
<select id="selectIndicatorTypes" parameterType="Long" resultType="java.util.Map">
|
||||
select
|
||||
discipline_type_ids,
|
||||
reward_type_ids
|
||||
from xskh_assessment_indicator_discipline_type
|
||||
where indicator_id = #{indicatorId}
|
||||
and deleted = 0
|
||||
limit 1
|
||||
</select>
|
||||
|
||||
<!-- 获取学生在指定时间范围内的违纪处分记录 -->
|
||||
<select id="selectStudentDisciplineRecords" resultType="XskhDisciplineRecordVo">
|
||||
select
|
||||
id, student_id, student_no, student_name, college_id, college_name,
|
||||
major_id, major_name, class_id, class_name, discipline_type_id,
|
||||
discipline_type_name, discipline_date, discipline_reason, discipline_content,
|
||||
score_deduction, status, attachment_oss_ids, create_by, create_time, create_dept,
|
||||
update_by, update_time, deleted, tenant_id
|
||||
from xskh_discipline_record
|
||||
where deleted = 0
|
||||
and status = '1'
|
||||
and student_id = #{studentId}
|
||||
and discipline_type_id in
|
||||
<foreach collection="disciplineTypeIds" item="typeId" open="(" separator="," close=")">
|
||||
#{typeId}
|
||||
</foreach>
|
||||
and discipline_date between #{startTime} and #{endTime}
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
+132
@@ -0,0 +1,132 @@
|
||||
<?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.xskh.mapper.XskhAssessmentApplicationApprovalMapper">
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.XskhAssessmentApplicationApproval" id="XskhAssessmentApplicationApprovalResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="scheduleId" column="schedule_id"/>
|
||||
<result property="studentId" column="student_id"/>
|
||||
<result property="studentNo" column="student_no"/>
|
||||
<result property="studentName" column="student_name"/>
|
||||
<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="classId" column="class_id"/>
|
||||
<result property="className" column="class_name"/>
|
||||
<result property="totalScore" column="total_score"/>
|
||||
<result property="selfScore" column="self_score"/>
|
||||
<result property="selfRemark" column="self_remark"/>
|
||||
<result property="teacherScore" column="teacher_score"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="submitTime" column="submit_time"/>
|
||||
<result property="teacherApprovalBy" column="teacher_approval_by"/>
|
||||
<result property="teacherApprovalTime" column="teacher_approval_time"/>
|
||||
<result property="teacherApprovalRemark" column="teacher_approval_remark"/>
|
||||
<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"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.vo.XskhAssessmentApplicationApprovalVo" id="XskhAssessmentApplicationApprovalResultVo">
|
||||
<result property="id" column="id"/>
|
||||
<result property="scheduleId" column="schedule_id"/>
|
||||
<result property="scheduleName" column="schedule_name"/>
|
||||
<result property="studentId" column="student_id"/>
|
||||
<result property="studentNo" column="student_no"/>
|
||||
<result property="studentName" column="student_name"/>
|
||||
<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="classId" column="class_id"/>
|
||||
<result property="className" column="class_name"/>
|
||||
<result property="totalScore" column="total_score"/>
|
||||
<result property="selfScore" column="self_score"/>
|
||||
<result property="selfRemark" column="self_remark"/>
|
||||
<result property="teacherScore" column="teacher_score"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="statusName" column="status_name"/>
|
||||
<result property="submitTime" column="submit_time"/>
|
||||
<result property="teacherApprovalBy" column="teacher_approval_by"/>
|
||||
<result property="teacherApprovalByName" column="teacher_approval_by_name"/>
|
||||
<result property="teacherApprovalTime" column="teacher_approval_time"/>
|
||||
<result property="teacherApprovalRemark" column="teacher_approval_remark"/>
|
||||
<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>
|
||||
|
||||
<!-- 根据考核方案ID查询关联的指标数据 -->
|
||||
<select id="selectIndicatorsByPlanId" parameterType="Long" resultType="java.util.Map">
|
||||
SELECT
|
||||
i.id as indicatorId,
|
||||
i.indicator_code as indicatorCode,
|
||||
i.indicator_name as indicatorName,
|
||||
i.description,
|
||||
i.indicator_type_name as indicatorTypeName,
|
||||
'1' as indicatorType,
|
||||
pi.max_score as maxScore,
|
||||
pi.weight,
|
||||
pi.sort_order as sortOrder
|
||||
FROM xskh_assessment_plan_indicator pi
|
||||
INNER JOIN xskh_assessment_indicator i ON pi.indicator_id = i.id
|
||||
WHERE pi.plan_id = #{planId}
|
||||
AND pi.deleted = 0
|
||||
AND i.deleted = 0
|
||||
ORDER BY pi.sort_order ASC, i.sort_order ASC
|
||||
</select>
|
||||
|
||||
<!-- 根据申请ID查询完整的自评得分信息(包含指标表关联数据) -->
|
||||
<select id="selectSelfScoresWithIndicatorInfo" parameterType="Long" resultMap="XskhAssessmentSelfScoreWithIndicatorResult">
|
||||
SELECT
|
||||
ss.id,
|
||||
ss.application_id as applicationId,
|
||||
ss.indicator_id as indicatorId,
|
||||
ss.indicator_name as indicatorName,
|
||||
i.indicator_code as indicatorCode,
|
||||
i.description,
|
||||
ss.indicator_type as indicatorType,
|
||||
ss.max_score as maxScore,
|
||||
ss.self_score as selfScore,
|
||||
ss.self_remark as selfRemark,
|
||||
ss.teacher_score as teacherScore,
|
||||
ss.teacher_remark as teacherRemark,
|
||||
ss.create_by as createBy,
|
||||
ss.create_time as createTime,
|
||||
ss.update_by as updateBy,
|
||||
ss.update_time as updateTime
|
||||
FROM xskh_assessment_self_score ss
|
||||
LEFT JOIN xskh_assessment_indicator i ON ss.indicator_id = i.id
|
||||
WHERE ss.application_id = #{applicationId}
|
||||
AND ss.deleted = 0
|
||||
ORDER BY ss.id ASC
|
||||
</select>
|
||||
|
||||
<!-- 自评得分与指标信息关联的ResultMap -->
|
||||
<resultMap id="XskhAssessmentSelfScoreWithIndicatorResult" type="org.dromara.xskh.domain.vo.XskhAssessmentSelfScoreVo">
|
||||
<result property="id" column="id"/>
|
||||
<result property="applicationId" column="applicationId"/>
|
||||
<result property="indicatorId" column="indicatorId"/>
|
||||
<result property="indicatorName" column="indicatorName"/>
|
||||
<result property="indicatorCode" column="indicatorCode"/>
|
||||
<result property="description" column="description"/>
|
||||
<result property="indicatorType" column="indicatorType"/>
|
||||
<result property="maxScore" column="maxScore"/>
|
||||
<result property="selfScore" column="selfScore"/>
|
||||
<result property="selfRemark" column="selfRemark"/>
|
||||
<result property="teacherScore" column="teacherScore"/>
|
||||
<result property="teacherRemark" column="teacherRemark"/>
|
||||
<result property="createBy" column="createBy"/>
|
||||
<result property="createTime" column="createTime"/>
|
||||
<result property="updateBy" column="updateBy"/>
|
||||
<result property="updateTime" column="updateTime"/>
|
||||
</resultMap>
|
||||
|
||||
</mapper>
|
||||
+183
@@ -0,0 +1,183 @@
|
||||
<?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.xskh.mapper.XskhAssessmentApprovalMapper">
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.XskhAssessmentApplicationApproval" id="XskhAssessmentApplicationApprovalResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="scheduleId" column="schedule_id"/>
|
||||
<result property="studentId" column="student_id"/>
|
||||
<result property="studentNo" column="student_no"/>
|
||||
<result property="studentName" column="student_name"/>
|
||||
<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="classId" column="class_id"/>
|
||||
<result property="className" column="class_name"/>
|
||||
<result property="totalScore" column="total_score"/>
|
||||
<result property="selfScore" column="self_score"/>
|
||||
<result property="teacherScore" column="teacher_score"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="submitTime" column="submit_time"/>
|
||||
<result property="teacherApprovalBy" column="teacher_approval_by"/>
|
||||
<result property="teacherApprovalTime" column="teacher_approval_time"/>
|
||||
<result property="teacherApprovalRemark" column="teacher_approval_remark"/>
|
||||
<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"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.vo.XskhAssessmentApprovalVo" id="XskhAssessmentApprovalResultVo">
|
||||
<result property="id" column="id"/>
|
||||
<result property="scheduleId" column="schedule_id"/>
|
||||
<result property="scheduleName" column="schedule_name"/>
|
||||
<result property="startTime" column="start_time"/>
|
||||
<result property="endTime" column="end_time"/>
|
||||
<result property="dataStartTime" column="data_start_time"/>
|
||||
<result property="dataEndTime" column="data_end_time"/>
|
||||
<result property="studentId" column="student_id"/>
|
||||
<result property="studentNo" column="student_no"/>
|
||||
<result property="studentName" column="student_name"/>
|
||||
<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="classId" column="class_id"/>
|
||||
<result property="className" column="class_name"/>
|
||||
<result property="totalScore" column="total_score"/>
|
||||
<result property="selfScore" column="self_score"/>
|
||||
<result property="teacherScore" column="teacher_score"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="statusName" column="status_name"/>
|
||||
<result property="submitTime" column="submit_time"/>
|
||||
<result property="teacherApprovalBy" column="teacher_approval_by"/>
|
||||
<result property="teacherApprovalByName" column="teacher_approval_by_name"/>
|
||||
<result property="teacherApprovalTime" column="teacher_approval_time"/>
|
||||
<result property="teacherApprovalRemark" column="teacher_approval_remark"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<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="selectTeacherClassApplications" resultMap="XskhAssessmentApprovalResultVo">
|
||||
SELECT
|
||||
a.id,
|
||||
a.schedule_id,
|
||||
s.schedule_name,
|
||||
s.start_time,
|
||||
s.end_time,
|
||||
s.data_start_time,
|
||||
s.data_end_time,
|
||||
a.student_id,
|
||||
a.student_no,
|
||||
a.student_name,
|
||||
a.college_id,
|
||||
a.college_name,
|
||||
a.major_id,
|
||||
a.major_name,
|
||||
a.class_id,
|
||||
a.class_name,
|
||||
a.total_score,
|
||||
a.self_score,
|
||||
a.teacher_score,
|
||||
a.status,
|
||||
CASE a.status
|
||||
WHEN '1' THEN '草稿'
|
||||
WHEN '2' THEN '已提交'
|
||||
WHEN '3' THEN '班主任审核'
|
||||
WHEN '6' THEN '已完成'
|
||||
ELSE '未知'
|
||||
END as status_name,
|
||||
a.submit_time,
|
||||
a.teacher_approval_by,
|
||||
u.nick_name as teacher_approval_by_name,
|
||||
a.teacher_approval_time,
|
||||
a.teacher_approval_remark,
|
||||
a.create_by,
|
||||
a.create_time,
|
||||
a.update_by,
|
||||
a.update_time
|
||||
FROM xskh_assessment_application_approval a
|
||||
LEFT JOIN xskh_assessment_schedule s ON a.schedule_id = s.id
|
||||
LEFT JOIN sys_user u ON a.teacher_approval_by = u.user_id
|
||||
WHERE a.deleted = 0
|
||||
AND a.class_id IN (
|
||||
SELECT id
|
||||
FROM xg_class_msg
|
||||
WHERE class_teacher_id = #{teacherId}
|
||||
AND deleted = 0
|
||||
AND class_status = '1'
|
||||
)
|
||||
<if test="scheduleId != null">
|
||||
AND a.schedule_id = #{scheduleId}
|
||||
</if>
|
||||
<if test="studentNo != null and studentNo != ''">
|
||||
AND a.student_no LIKE CONCAT('%', #{studentNo}, '%')
|
||||
</if>
|
||||
<if test="studentName != null and studentName != ''">
|
||||
AND a.student_name LIKE CONCAT('%', #{studentName}, '%')
|
||||
</if>
|
||||
<if test="status != null and status != ''">
|
||||
AND a.status = #{status}
|
||||
</if>
|
||||
AND a.status IN ('2', '3', '6')
|
||||
ORDER BY a.create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 根据ID查询考核申请详细信息(包含考核计划信息) -->
|
||||
<select id="selectApprovalDetailById" resultMap="XskhAssessmentApprovalResultVo">
|
||||
SELECT
|
||||
a.id,
|
||||
a.schedule_id,
|
||||
s.schedule_name,
|
||||
s.start_time,
|
||||
s.end_time,
|
||||
s.data_start_time,
|
||||
s.data_end_time,
|
||||
a.student_id,
|
||||
a.student_no,
|
||||
a.student_name,
|
||||
a.college_id,
|
||||
a.college_name,
|
||||
a.major_id,
|
||||
a.major_name,
|
||||
a.class_id,
|
||||
a.class_name,
|
||||
a.total_score,
|
||||
a.self_score,
|
||||
a.teacher_score,
|
||||
a.status,
|
||||
CASE a.status
|
||||
WHEN '1' THEN '草稿'
|
||||
WHEN '2' THEN '已提交'
|
||||
WHEN '3' THEN '班主任审核'
|
||||
WHEN '6' THEN '已完成'
|
||||
ELSE '未知'
|
||||
END as status_name,
|
||||
a.submit_time,
|
||||
a.teacher_approval_by,
|
||||
u.nick_name as teacher_approval_by_name,
|
||||
a.teacher_approval_time,
|
||||
a.teacher_approval_remark,
|
||||
a.self_remark as selfRemark,
|
||||
a.create_by,
|
||||
a.create_time,
|
||||
a.update_by,
|
||||
a.update_time
|
||||
FROM xskh_assessment_application_approval a
|
||||
LEFT JOIN xskh_assessment_schedule s ON a.schedule_id = s.id AND s.tenant_id = '000000'
|
||||
LEFT JOIN sys_user u ON a.teacher_approval_by = u.user_id AND u.tenant_id = '000000'
|
||||
WHERE a.id = #{id}
|
||||
AND a.deleted = 0
|
||||
AND a.tenant_id = '000000'
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
<?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.xskh.mapper.XskhAssessmentBonusApprovalMapper">
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.XskhAssessmentBonusApproval" id="XskhAssessmentBonusApprovalResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="applicationId" column="application_id"/>
|
||||
<result property="bonusName" column="bonus_name"/>
|
||||
<result property="bonusContent" column="bonus_content"/>
|
||||
<result property="bonusScore" column="bonus_score"/>
|
||||
<result property="evidenceFile" column="evidence_file"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="approvalScore" column="approval_score"/>
|
||||
<result property="approvalBy" column="approval_by"/>
|
||||
<result property="approvalTime" column="approval_time"/>
|
||||
<result property="approvalRemark" column="approval_remark"/>
|
||||
<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"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.vo.XskhAssessmentBonusApprovalVo" id="XskhAssessmentBonusApprovalResultVo">
|
||||
<result property="id" column="id"/>
|
||||
<result property="applicationId" column="application_id"/>
|
||||
<result property="bonusName" column="bonus_name"/>
|
||||
<result property="bonusContent" column="bonus_content"/>
|
||||
<result property="bonusScore" column="bonus_score"/>
|
||||
<result property="evidenceFile" column="evidence_file"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="statusName" column="status_name"/>
|
||||
<result property="approvalScore" column="approval_score"/>
|
||||
<result property="approvalBy" column="approval_by"/>
|
||||
<result property="approvalByName" column="approval_by_name"/>
|
||||
<result property="approvalTime" column="approval_time"/>
|
||||
<result property="approvalRemark" column="approval_remark"/>
|
||||
<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>
|
||||
|
||||
</mapper>
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
<?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.xskh.mapper.XskhAssessmentIndicatorDisciplineTypeMapper">
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.XskhAssessmentIndicatorDisciplineType" id="XskhAssessmentIndicatorDisciplineTypeResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="indicatorId" column="indicator_id"/>
|
||||
<result property="disciplineTypeIds" column="discipline_type_ids"/>
|
||||
<result property="rewardTypeIds" column="reward_type_ids"/>
|
||||
<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"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.vo.XskhAssessmentIndicatorDisciplineTypeVo" id="XskhAssessmentIndicatorDisciplineTypeResultVo">
|
||||
<result property="id" column="id"/>
|
||||
<result property="indicatorId" column="indicator_id"/>
|
||||
<result property="disciplineTypeIds" column="discipline_type_ids"/>
|
||||
<result property="rewardTypeIds" column="reward_type_ids"/>
|
||||
<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>
|
||||
|
||||
</mapper>
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
<?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.xskh.mapper.XskhAssessmentIndicatorMapper">
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.XskhAssessmentIndicator" id="XskhAssessmentIndicatorResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="indicatorCode" column="indicator_code"/>
|
||||
<result property="indicatorName" column="indicator_name"/>
|
||||
<result property="indicatorTypeId" column="indicator_type_id"/>
|
||||
<result property="indicatorTypeName" column="indicator_type_name"/>
|
||||
<result property="description" column="description"/>
|
||||
<result property="maxScore" column="max_score"/>
|
||||
<result property="weight" column="weight"/>
|
||||
<result property="status" column="status"/>
|
||||
<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"/>
|
||||
<!-- <result property="createDept" column="create_dept"/> -->
|
||||
<result property="deleted" column="deleted"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.vo.XskhAssessmentIndicatorVo" id="XskhAssessmentIndicatorResultVo">
|
||||
<result property="id" column="id"/>
|
||||
<result property="indicatorCode" column="indicator_code"/>
|
||||
<result property="indicatorName" column="indicator_name"/>
|
||||
<result property="indicatorTypeId" column="indicator_type_id"/>
|
||||
<result property="indicatorTypeName" column="indicator_type_name"/>
|
||||
<result property="description" column="description"/>
|
||||
<result property="maxScore" column="max_score"/>
|
||||
<result property="weight" column="weight"/>
|
||||
<result property="status" column="status"/>
|
||||
<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"/>
|
||||
<!-- <result property="createDept" column="create_dept"/> -->
|
||||
</resultMap>
|
||||
|
||||
</mapper>
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
<?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.xskh.mapper.XskhAssessmentIndicatorTypeMapper">
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.XskhAssessmentIndicatorType" id="XskhAssessmentIndicatorTypeResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="typeCode" column="type_code"/>
|
||||
<result property="typeName" column="type_name"/>
|
||||
<result property="description" column="description"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="sortOrder" column="sort_order"/>
|
||||
<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"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.vo.XskhAssessmentIndicatorTypeVo" id="XskhAssessmentIndicatorTypeResultVo">
|
||||
<result property="id" column="id"/>
|
||||
<result property="typeCode" column="type_code"/>
|
||||
<result property="typeName" column="type_name"/>
|
||||
<result property="description" column="description"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="sortOrder" column="sort_order"/>
|
||||
<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"/>
|
||||
</resultMap>
|
||||
|
||||
</mapper>
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
<?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.xskh.mapper.XskhAssessmentPlanIndicatorMapper">
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.XskhAssessmentPlanIndicator" id="XskhAssessmentPlanIndicatorResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="planId" column="plan_id"/>
|
||||
<result property="indicatorId" column="indicator_id"/>
|
||||
<result property="maxScore" column="max_score"/>
|
||||
<result property="weight" column="weight"/>
|
||||
<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"/>
|
||||
<result property="deleted" column="deleted"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.vo.XskhAssessmentPlanIndicatorVo" id="XskhAssessmentPlanIndicatorResultVo">
|
||||
<result property="id" column="id"/>
|
||||
<result property="planId" column="plan_id"/>
|
||||
<result property="indicatorId" column="indicator_id"/>
|
||||
<result property="maxScore" column="max_score"/>
|
||||
<result property="weight" column="weight"/>
|
||||
<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>
|
||||
|
||||
</mapper>
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
<?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.xskh.mapper.XskhAssessmentPlanMapper">
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.XskhAssessmentPlan" id="XskhAssessmentPlanResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="planCode" column="plan_code"/>
|
||||
<result property="planName" column="plan_name"/>
|
||||
<result property="description" column="description"/>
|
||||
<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"/>
|
||||
<result property="deleted" column="deleted"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.vo.XskhAssessmentPlanVo" id="XskhAssessmentPlanResultVo">
|
||||
<result property="id" column="id"/>
|
||||
<result property="planCode" column="plan_code"/>
|
||||
<result property="planName" column="plan_name"/>
|
||||
<result property="description" column="description"/>
|
||||
<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>
|
||||
|
||||
<!-- 查询方案关联的指标详细信息 -->
|
||||
<select id="selectPlanIndicatorsWithDetail" parameterType="Long" resultType="org.dromara.xskh.domain.vo.XskhAssessmentPlanIndicatorVo">
|
||||
SELECT
|
||||
pi.id,
|
||||
pi.plan_id as planId,
|
||||
pi.indicator_id as indicatorId,
|
||||
pi.max_score as maxScore,
|
||||
pi.weight,
|
||||
pi.sort_order as sortOrder,
|
||||
pi.create_by as createBy,
|
||||
pi.create_time as createTime,
|
||||
pi.update_by as updateBy,
|
||||
pi.update_time as updateTime,
|
||||
i.indicator_name as indicatorName,
|
||||
i.indicator_code as indicatorCode,
|
||||
i.description as description,
|
||||
i.max_score as indicatorMaxScore
|
||||
FROM xskh_assessment_plan_indicator pi
|
||||
LEFT JOIN xskh_assessment_indicator i ON pi.indicator_id = i.id
|
||||
WHERE pi.plan_id = #{planId}
|
||||
AND pi.deleted = 0
|
||||
ORDER BY pi.sort_order ASC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
<?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.xskh.mapper.XskhAssessmentScheduleMapper">
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.XskhAssessmentSchedule" id="XskhAssessmentScheduleResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="scheduleName" column="schedule_name"/>
|
||||
<result property="planId" column="plan_id"/>
|
||||
<result property="planName" column="plan_name"/>
|
||||
<result property="academicYear" column="academic_year"/>
|
||||
<result property="semester" column="semester"/>
|
||||
<result property="startTime" column="start_time"/>
|
||||
<result property="endTime" column="end_time"/>
|
||||
<result property="dataStartTime" column="data_start_time"/>
|
||||
<result property="dataEndTime" column="data_end_time"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="description" column="description"/>
|
||||
<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"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.vo.XskhAssessmentScheduleVo" id="XskhAssessmentScheduleResultVo">
|
||||
<result property="id" column="id"/>
|
||||
<result property="scheduleName" column="schedule_name"/>
|
||||
<result property="planId" column="plan_id"/>
|
||||
<result property="planName" column="plan_name"/>
|
||||
<result property="academicYear" column="academic_year"/>
|
||||
<result property="semester" column="semester"/>
|
||||
<result property="semesterName" column="semester_name"/>
|
||||
<result property="startTime" column="start_time"/>
|
||||
<result property="endTime" column="end_time"/>
|
||||
<result property="dataStartTime" column="data_start_time"/>
|
||||
<result property="dataEndTime" column="data_end_time"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="statusName" column="status_name"/>
|
||||
<result property="description" column="description"/>
|
||||
<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>
|
||||
|
||||
</mapper>
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
<?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.xskh.mapper.XskhAssessmentSelfScoreMapper">
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.XskhAssessmentSelfScore" id="XskhAssessmentSelfScoreResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="applicationId" column="application_id"/>
|
||||
<result property="indicatorId" column="indicator_id"/>
|
||||
<result property="indicatorName" column="indicator_name"/>
|
||||
<result property="indicatorType" column="indicator_type"/>
|
||||
<result property="maxScore" column="max_score"/>
|
||||
<result property="selfScore" column="self_score"/>
|
||||
<result property="selfRemark" column="self_remark"/>
|
||||
<result property="teacherScore" column="teacher_score"/>
|
||||
<result property="teacherRemark" column="teacher_remark"/>
|
||||
<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"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="org.dromara.xskh.domain.vo.XskhAssessmentSelfScoreVo" id="XskhAssessmentSelfScoreResultVo">
|
||||
<result property="id" column="id"/>
|
||||
<result property="applicationId" column="application_id"/>
|
||||
<result property="indicatorId" column="indicator_id"/>
|
||||
<result property="indicatorName" column="indicator_name"/>
|
||||
<result property="indicatorCode" column="indicator_code"/>
|
||||
<result property="description" column="description"/>
|
||||
<result property="indicatorType" column="indicator_type"/>
|
||||
<result property="maxScore" column="max_score"/>
|
||||
<result property="selfScore" column="self_score"/>
|
||||
<result property="selfRemark" column="self_remark"/>
|
||||
<result property="teacherScore" column="teacher_score"/>
|
||||
<result property="teacherRemark" column="teacher_remark"/>
|
||||
<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="selectSelfScoreWithIndicatorDetail" resultMap="XskhAssessmentSelfScoreResultVo">
|
||||
SELECT
|
||||
s.id,
|
||||
s.application_id,
|
||||
s.indicator_id,
|
||||
s.indicator_name,
|
||||
i.indicator_code,
|
||||
i.description,
|
||||
s.indicator_type,
|
||||
s.max_score,
|
||||
s.self_score,
|
||||
s.self_remark,
|
||||
s.teacher_score,
|
||||
s.teacher_remark,
|
||||
s.create_by,
|
||||
s.create_time,
|
||||
s.update_by,
|
||||
s.update_time
|
||||
FROM xskh_assessment_self_score s
|
||||
LEFT JOIN xskh_assessment_indicator i ON s.indicator_id = i.id AND i.tenant_id = '000000'
|
||||
WHERE s.application_id = #{applicationId}
|
||||
AND s.deleted = 0
|
||||
AND s.tenant_id = '000000'
|
||||
ORDER BY s.create_time ASC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
+20
@@ -131,4 +131,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
order by rr.create_time desc
|
||||
</select>
|
||||
|
||||
<!-- 获取学生在指定时间范围内的奖励记录 -->
|
||||
<select id="selectStudentRewardRecords" resultType="XskhRewardRecordVo">
|
||||
select
|
||||
id, student_id, student_no, student_name, college_id, college_name,
|
||||
major_id, major_name, class_id, class_name, reward_type_id,
|
||||
reward_type_name, reward_date, reward_content, score_addition,
|
||||
attachment_oss_ids, status, create_by, create_time, create_dept,
|
||||
update_by, update_time, deleted, tenant_id
|
||||
from xskh_reward_record
|
||||
where deleted = 0
|
||||
and status = '1'
|
||||
and student_id = #{studentId}
|
||||
and reward_type_id in
|
||||
<foreach collection="rewardTypeIds" item="typeId" open="(" separator="," close=")">
|
||||
#{typeId}
|
||||
</foreach>
|
||||
and reward_date between #{startTime} and #{endTime}
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
+10
@@ -144,16 +144,19 @@ public class ZsjyGraduateInfoBo extends BaseEntity {
|
||||
/**
|
||||
* 邮箱地址
|
||||
*/
|
||||
@Size(max = 100, message = "邮箱地址长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String email;
|
||||
|
||||
/**
|
||||
* QQ号码
|
||||
*/
|
||||
@Size(max = 20, message = "QQ号码长度不能超过20个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String qqNumber;
|
||||
|
||||
/**
|
||||
* 微信号码
|
||||
*/
|
||||
@Size(max = 30, message = "微信号码长度不能超过30个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String wechatNumber;
|
||||
|
||||
/**
|
||||
@@ -174,11 +177,14 @@ public class ZsjyGraduateInfoBo extends BaseEntity {
|
||||
/**
|
||||
* 详细地址
|
||||
*/
|
||||
@Size(max = 200, message = "详细地址长度不能超过200个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String detailAddress;
|
||||
|
||||
/**
|
||||
* 邮政编码
|
||||
*/
|
||||
@Size(max = 10, message = "邮政编码长度不能超过10个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
@Pattern(regexp = "^\\d{6}$", message = "邮政编码格式不正确,应为6位数字", groups = { AddGroup.class, EditGroup.class })
|
||||
private String postalCode;
|
||||
|
||||
/**
|
||||
@@ -190,6 +196,7 @@ public class ZsjyGraduateInfoBo extends BaseEntity {
|
||||
/**
|
||||
* 就业单位名称
|
||||
*/
|
||||
@Size(max = 100, message = "就业单位名称长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String employmentCompany;
|
||||
|
||||
/**
|
||||
@@ -200,6 +207,7 @@ public class ZsjyGraduateInfoBo extends BaseEntity {
|
||||
/**
|
||||
* 工作职位
|
||||
*/
|
||||
@Size(max = 50, message = "工作职位长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String jobPosition;
|
||||
|
||||
/**
|
||||
@@ -220,11 +228,13 @@ public class ZsjyGraduateInfoBo extends BaseEntity {
|
||||
/**
|
||||
* 升学院校
|
||||
*/
|
||||
@Size(max = 100, message = "升学院校长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String furtherSchool;
|
||||
|
||||
/**
|
||||
* 升学专业
|
||||
*/
|
||||
@Size(max = 50, message = "升学专业长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String furtherMajor;
|
||||
|
||||
/**
|
||||
|
||||
Loaded 100 of 208 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user