chore: 代码及文档变更自动提交
This commit is contained in:
1 parent
4ef657d234
commit
cbae932faa
127 files changed
+90
-21551
No files matched your search
+6
-1
@@ -394,7 +394,12 @@
|
||||
<artifactId>ruoyi-aqbw</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 学工管理模块 - 学生信息 -->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-xg-xx</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
@@ -104,12 +104,6 @@
|
||||
<artifactId>ruoyi-workflow</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 学工管理-学生信息管理模块 -->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-xg-xx</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
+3
@@ -767,6 +767,9 @@ public class HqPmRepairOrderServiceImpl implements IHqPmRepairOrderService {
|
||||
map.put("issuesEncountered", progress.getIssuesEncountered());
|
||||
map.put("materialsNeeded", progress.getMaterialsNeeded());
|
||||
map.put("remark", progress.getRemark());
|
||||
// 新增:补充工单的使用材料和后续建议
|
||||
map.put("usedMaterials", order.getUsedMaterials());
|
||||
map.put("followSuggestions", order.getFollowSuggestions());
|
||||
result.add(map);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ruoyi-xg-xx</artifactId>
|
||||
<version>${revision}</version>
|
||||
<description>
|
||||
学工管理-学生信息管理模块
|
||||
</description>
|
||||
|
||||
-147
@@ -1,147 +0,0 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.xg.domain.bo.XgAcademicYearBo;
|
||||
import org.dromara.xg.domain.vo.XgAcademicYearVo;
|
||||
import org.dromara.xg.service.IXgAcademicYearService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学年管理Controller
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xg/academicYear")
|
||||
public class XgAcademicYearController extends BaseController {
|
||||
|
||||
private final IXgAcademicYearService academicYearService;
|
||||
|
||||
/**
|
||||
* 查询学年管理列表
|
||||
*/
|
||||
@SaCheckPermission("xg:academicYear:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgAcademicYearVo> list(XgAcademicYearBo bo, PageQuery pageQuery) {
|
||||
return academicYearService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出学年管理列表
|
||||
*/
|
||||
@SaCheckPermission("xg:academicYear:export")
|
||||
@Log(title = "学年管理", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgAcademicYearBo bo, HttpServletResponse response) {
|
||||
List<XgAcademicYearVo> list = academicYearService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "学年管理", XgAcademicYearVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学年管理详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("xg:academicYear:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgAcademicYearVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(academicYearService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学年管理
|
||||
*/
|
||||
@SaCheckPermission("xg:academicYear:add")
|
||||
@Log(title = "学年管理", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgAcademicYearBo bo) {
|
||||
return toAjax(academicYearService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学年管理
|
||||
*/
|
||||
@SaCheckPermission("xg:academicYear:edit")
|
||||
@Log(title = "学年管理", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgAcademicYearBo bo) {
|
||||
return toAjax(academicYearService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除学年管理
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("xg:academicYear:remove")
|
||||
@Log(title = "学年管理", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(academicYearService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前学年
|
||||
*/
|
||||
@SaCheckPermission("xg:academicYear:query")
|
||||
@GetMapping("/current")
|
||||
public R<XgAcademicYearVo> getCurrentYear() {
|
||||
return R.ok(academicYearService.queryCurrentYear());
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前学年
|
||||
*
|
||||
* @param id 学年ID
|
||||
*/
|
||||
@SaCheckPermission("xg:academicYear:edit")
|
||||
@Log(title = "设置当前学年", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/setCurrent/{id}")
|
||||
public R<Void> setCurrentYear(@NotNull(message = "学年ID不能为空") @PathVariable Long id) {
|
||||
return toAjax(academicYearService.setCurrentYear(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据学年编码查询学年信息
|
||||
*
|
||||
* @param yearCode 学年编码
|
||||
*/
|
||||
@SaCheckPermission("xg:academicYear:query")
|
||||
@GetMapping("/getByCode/{yearCode}")
|
||||
public R<XgAcademicYearVo> getByYearCode(@PathVariable String yearCode) {
|
||||
return R.ok(academicYearService.queryByYearCode(yearCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查学年编码是否存在
|
||||
*
|
||||
* @param yearCode 学年编码
|
||||
* @param id 学年ID(修改时使用)
|
||||
*/
|
||||
@GetMapping("/checkYearCode")
|
||||
public R<Boolean> checkYearCode(@RequestParam String yearCode, @RequestParam(required = false) Long id) {
|
||||
return R.ok(academicYearService.checkYearCodeExists(yearCode, id));
|
||||
}
|
||||
}
|
||||
-1
@@ -1 +0,0 @@
|
||||
|
||||
-359
@@ -1,359 +0,0 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
|
||||
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.common.excel.core.ExcelResult;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.xg.domain.vo.XgClassCadreVo;
|
||||
import org.dromara.xg.domain.bo.XgClassCadreBo;
|
||||
import org.dromara.xg.service.IXgClassCadreService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
* 班级干部信息管理Controller
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-09
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xg/classCadre")
|
||||
public class XgClassCadreController extends BaseController {
|
||||
|
||||
private final IXgClassCadreService xgClassCadreService;
|
||||
|
||||
/**
|
||||
* 查询班级干部信息列表
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgClassCadreVo> list(XgClassCadreBo bo, PageQuery pageQuery) {
|
||||
return xgClassCadreService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出班级干部信息列表
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:export")
|
||||
@Log(title = "班级干部信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgClassCadreBo bo, HttpServletResponse response) {
|
||||
List<XgClassCadreVo> list = xgClassCadreService.exportCadreList(bo);
|
||||
ExcelUtil.exportExcel(list, "班级干部信息", XgClassCadreVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级干部信息详细信息
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgClassCadreVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(xgClassCadreService.queryCadreWithDetails(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增班级干部信息
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:add")
|
||||
@Log(title = "班级干部信息", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgClassCadreBo bo) {
|
||||
return toAjax(xgClassCadreService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改班级干部信息
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:edit")
|
||||
@Log(title = "班级干部信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgClassCadreBo bo) {
|
||||
return toAjax(xgClassCadreService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除班级干部信息
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:remove")
|
||||
@Log(title = "班级干部信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(xgClassCadreService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
// ==================== 业务功能接口 ====================
|
||||
|
||||
/**
|
||||
* 根据班级ID查询班干部列表
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/class/{classId}")
|
||||
public R<List<XgClassCadreVo>> getCadresByClass(@NotNull(message = "班级ID不能为空") @PathVariable Long classId) {
|
||||
return R.ok(xgClassCadreService.queryCadresByClassId(classId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据学生ID查询班干部信息
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/student/{studentId}")
|
||||
public R<List<XgClassCadreVo>> getCadresByStudent(@NotNull(message = "学生ID不能为空") @PathVariable Long studentId) {
|
||||
return R.ok(xgClassCadreService.queryCadresByStudentId(studentId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前在任班干部列表
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/current")
|
||||
public R<List<XgClassCadreVo>> getCurrentCadres(@RequestParam(required = false) Long classId) {
|
||||
return R.ok(xgClassCadreService.queryCurrentCadres(classId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据职务查询班干部
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/position")
|
||||
public R<XgClassCadreVo> getCadreByPosition(
|
||||
@NotNull(message = "班级ID不能为空") @RequestParam Long classId,
|
||||
@NotBlank(message = "职务编码不能为空") @RequestParam String positionCode) {
|
||||
return R.ok(xgClassCadreService.queryCadreByPosition(classId, positionCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 任命班干部
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:appoint")
|
||||
@Log(title = "任命班干部", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/appoint")
|
||||
public R<Void> appointCadre(@Validated(AddGroup.class) @RequestBody XgClassCadreBo bo) {
|
||||
return toAjax(xgClassCadreService.appointCadre(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 免职班干部
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:dismiss")
|
||||
@Log(title = "免职班干部", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/dismiss/{cadreId}")
|
||||
public R<Void> dismissCadre(
|
||||
@NotNull(message = "班干部ID不能为空") @PathVariable Long cadreId,
|
||||
@NotBlank(message = "免职原因不能为空") @RequestParam String dismissalReason,
|
||||
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date dismissalDate) {
|
||||
return toAjax(xgClassCadreService.dismissCadre(cadreId, dismissalReason, dismissalDate));
|
||||
}
|
||||
|
||||
/**
|
||||
* 调任班干部
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:transfer")
|
||||
@Log(title = "调任班干部", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/transfer/{cadreId}")
|
||||
public R<Void> transferCadre(
|
||||
@NotNull(message = "班干部ID不能为空") @PathVariable Long cadreId,
|
||||
@NotBlank(message = "新职务编码不能为空") @RequestParam String newPositionCode,
|
||||
@NotBlank(message = "新职务名称不能为空") @RequestParam String newPositionName,
|
||||
@NotBlank(message = "调任原因不能为空") @RequestParam String transferReason,
|
||||
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date effectiveDate) {
|
||||
return toAjax(xgClassCadreService.transferCadre(cadreId, newPositionCode, newPositionName, transferReason, effectiveDate));
|
||||
}
|
||||
|
||||
/**
|
||||
* 续任班干部
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:renew")
|
||||
@Log(title = "续任班干部", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/renew/{cadreId}")
|
||||
public R<Void> renewCadre(
|
||||
@NotNull(message = "班干部ID不能为空") @PathVariable Long cadreId,
|
||||
@NotNull(message = "新任期时长不能为空") @Min(value = 1, message = "新任期时长最少1个月") @Max(value = 48, message = "新任期时长最多48个月") @RequestParam Integer newTermDuration,
|
||||
@NotBlank(message = "续任原因不能为空") @RequestParam String renewalReason) {
|
||||
return toAjax(xgClassCadreService.renewCadre(cadreId, newTermDuration, renewalReason));
|
||||
}
|
||||
|
||||
/**
|
||||
* 班干部辞职
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:resign")
|
||||
@Log(title = "班干部辞职", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/resign/{cadreId}")
|
||||
public R<Void> resignCadre(
|
||||
@NotNull(message = "班干部ID不能为空") @PathVariable Long cadreId,
|
||||
@NotBlank(message = "辞职原因不能为空") @RequestParam String resignationReason,
|
||||
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date resignationDate) {
|
||||
return toAjax(xgClassCadreService.resignCadre(cadreId, resignationReason, resignationDate));
|
||||
}
|
||||
|
||||
// ==================== 统计查询接口 ====================
|
||||
|
||||
/**
|
||||
* 查询即将到期的班干部列表
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/expiring")
|
||||
public R<List<XgClassCadreVo>> getExpiringCadres(@RequestParam(defaultValue = "30") Integer days) {
|
||||
return R.ok(xgClassCadreService.queryExpiringCadres(days));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询已到期的班干部列表
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/expired")
|
||||
public R<List<XgClassCadreVo>> getExpiredCadres() {
|
||||
return R.ok(xgClassCadreService.queryExpiredCadres());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据学院查询班干部统计
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/college/{collegeName}")
|
||||
public R<List<XgClassCadreVo>> getCadresByCollege(@NotBlank(message = "学院名称不能为空") @PathVariable String collegeName) {
|
||||
return R.ok(xgClassCadreService.queryCadresByCollege(collegeName));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据年级查询班干部统计
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/grade/{grade}")
|
||||
public R<List<XgClassCadreVo>> getCadresByGrade(@NotBlank(message = "年级不能为空") @PathVariable String grade) {
|
||||
return R.ok(xgClassCadreService.queryCadresByGrade(grade));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班干部任期统计
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/term-statistics")
|
||||
public R<List<XgClassCadreVo>> getCadreTermStatistics(
|
||||
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
|
||||
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
|
||||
return R.ok(xgClassCadreService.queryCadreTermStatistics(startDate, endDate));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据职务级别查询班干部
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/level/{positionLevel}")
|
||||
public R<List<XgClassCadreVo>> getCadresByLevel(@NotNull(message = "职务级别不能为空") @PathVariable Integer positionLevel) {
|
||||
return R.ok(xgClassCadreService.queryCadresByPositionLevel(positionLevel));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班干部工作表现统计
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/performance/{performance}")
|
||||
public R<List<XgClassCadreVo>> getCadresByPerformance(@NotBlank(message = "工作表现不能为空") @PathVariable String performance) {
|
||||
return R.ok(xgClassCadreService.queryCadresByPerformance(performance));
|
||||
}
|
||||
|
||||
// ==================== 辅助功能接口 ====================
|
||||
|
||||
/**
|
||||
* 检查职务是否已被占用
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/check-position")
|
||||
public R<Boolean> checkPositionOccupied(
|
||||
@NotNull(message = "班级ID不能为空") @RequestParam Long classId,
|
||||
@NotBlank(message = "职务编码不能为空") @RequestParam String positionCode,
|
||||
@RequestParam(required = false) Long excludeId) {
|
||||
return R.ok(xgClassCadreService.checkPositionOccupied(classId, positionCode, excludeId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查学生是否已有其他职务
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:list")
|
||||
@GetMapping("/check-student")
|
||||
public R<Boolean> checkStudentHasOtherPosition(
|
||||
@NotNull(message = "学生ID不能为空") @RequestParam Long studentId,
|
||||
@RequestParam(required = false) Long excludeId) {
|
||||
return R.ok(xgClassCadreService.checkStudentHasOtherPosition(studentId, excludeId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新班干部状态
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:edit")
|
||||
@Log(title = "批量更新班干部状态", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/batch-status")
|
||||
public R<Void> batchUpdateStatus(
|
||||
@NotEmpty(message = "班干部ID列表不能为空") @RequestParam List<Long> cadreIds,
|
||||
@NotBlank(message = "状态不能为空") @RequestParam String status) {
|
||||
return toAjax(xgClassCadreService.batchUpdateCadreStatus(cadreIds, status));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动处理到期班干部
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:process")
|
||||
@Log(title = "自动处理到期班干部", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/auto-process-expired")
|
||||
public R<Void> autoProcessExpired() {
|
||||
return toAjax(xgClassCadreService.autoProcessExpiredCadres());
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送到期提醒通知
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:notify")
|
||||
@Log(title = "发送到期提醒通知", businessType = BusinessType.OTHER)
|
||||
@PostMapping("/send-reminder")
|
||||
public R<Void> sendReminder(@RequestParam(defaultValue = "30") Integer days) {
|
||||
return toAjax(xgClassCadreService.sendExpirationReminder(days));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入班干部信息
|
||||
*/
|
||||
@SaCheckPermission("xg:classCadre:import")
|
||||
@Log(title = "班级干部信息", businessType = BusinessType.IMPORT)
|
||||
@PostMapping("/import")
|
||||
public R<Void> importData(MultipartFile file, boolean updateSupport) throws Exception {
|
||||
ExcelResult<XgClassCadreVo> result = ExcelUtil.importExcel(file.getInputStream(), XgClassCadreVo.class, true);
|
||||
List<XgClassCadreVo> cadreList = result.getList();
|
||||
String operName = LoginHelper.getUsername();
|
||||
String message = xgClassCadreService.importCadreList(cadreList, updateSupport, operName);
|
||||
return R.ok(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取导入模板
|
||||
*/
|
||||
@PostMapping("/import-template")
|
||||
public void importTemplate(HttpServletResponse response) {
|
||||
ExcelUtil.exportExcel(List.of(), "班级干部信息", XgClassCadreVo.class, response);
|
||||
}
|
||||
}
|
||||
-205
@@ -1,205 +0,0 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xg.domain.vo.XgClassInfoVo;
|
||||
import org.dromara.xg.domain.bo.XgClassInfoBo;
|
||||
import org.dromara.xg.service.IXgClassInfoService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 班级信息Controller
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xg/classInfo")
|
||||
public class XgClassInfoController extends BaseController {
|
||||
|
||||
private final IXgClassInfoService classInfoService;
|
||||
|
||||
/**
|
||||
* 查询班级信息列表
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgClassInfoVo> list(XgClassInfoBo bo, PageQuery pageQuery) {
|
||||
return classInfoService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出班级信息列表
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:export")
|
||||
@Log(title = "班级信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgClassInfoBo bo, HttpServletResponse response) {
|
||||
List<XgClassInfoVo> list = classInfoService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "班级信息", XgClassInfoVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级选项列表(用于下拉框)
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:list")
|
||||
@GetMapping("/options")
|
||||
public R<List<Map<String, Object>>> getClassOptions() {
|
||||
return R.ok(classInfoService.queryClassOptions());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取辅导员选项列表(用于下拉框)
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:list")
|
||||
@GetMapping("/counselorOptions")
|
||||
public R<List<Map<String, Object>>> getCounselorOptions(@RequestParam(required = false) String collegeCode) {
|
||||
return R.ok(classInfoService.queryCounselorOptions(collegeCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任选项列表(用于下拉框)
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:list")
|
||||
@GetMapping("/classTeacherOptions")
|
||||
public R<List<Map<String, Object>>> getClassTeacherOptions(@RequestParam(required = false) String collegeCode) {
|
||||
return R.ok(classInfoService.queryClassTeacherOptions(collegeCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级信息总体统计
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:list")
|
||||
@GetMapping("/statistics")
|
||||
public R<Map<String, Object>> getClassInfoStatistics() {
|
||||
return R.ok(classInfoService.queryClassInfoStatistics());
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查班级代码是否存在
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:query")
|
||||
@GetMapping("/checkClassCode")
|
||||
public R<Boolean> checkClassCodeExists(
|
||||
@NotBlank(message = "班级代码不能为空") @RequestParam String classCode,
|
||||
@RequestParam(required = false) Long classId) {
|
||||
return R.ok(classInfoService.checkClassCodeExists(classCode, classId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量生成班级代码
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:add")
|
||||
@Log(title = "批量生成班级代码", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/generateClassCode")
|
||||
public R<List<String>> generateClassCode(@RequestBody Map<String, Object> params) {
|
||||
String collegeCode = (String) params.get("collegeCode");
|
||||
String majorCode = (String) params.get("majorCode");
|
||||
Integer enrollmentYear = (Integer) params.get("enrollmentYear");
|
||||
Integer classCount = (Integer) params.get("classCount");
|
||||
|
||||
return R.ok(classInfoService.generateClassCode(collegeCode, majorCode, enrollmentYear, classCount));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据班级代码查询班级信息
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:query")
|
||||
@GetMapping("/byCode/{classCode}")
|
||||
public R<XgClassInfoVo> getByClassCode(@NotBlank(message = "班级代码不能为空") @PathVariable String classCode) {
|
||||
return R.ok(classInfoService.queryByClassCode(classCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学院班级列表
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:list")
|
||||
@GetMapping("/byCollege/{collegeCode}")
|
||||
public R<List<XgClassInfoVo>> getByCollegeCode(@NotBlank(message = "学院代码不能为空") @PathVariable String collegeCode) {
|
||||
return R.ok(classInfoService.queryByCollegeCode(collegeCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级学生统计
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:list")
|
||||
@GetMapping("/{classId}/statistics")
|
||||
public R<Map<String, Object>> getClassStudentStatistics(@NotNull(message = "班级ID不能为空") @PathVariable Long classId) {
|
||||
return R.ok(classInfoService.queryClassStudentStatistics(classId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新班级人数统计
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:edit")
|
||||
@Log(title = "更新人数统计", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/{classId}/updateCount")
|
||||
public R<Void> updateClassStudentCount(@NotNull(message = "班级ID不能为空") @PathVariable Long classId) {
|
||||
return toAjax(classInfoService.updateClassStudentCount(classId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级信息详细信息 - 注意:此方法必须放在最后,避免路径冲突
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgClassInfoVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(classInfoService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增班级信息
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:add")
|
||||
@Log(title = "班级信息", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Long> add(@Validated(AddGroup.class) @RequestBody XgClassInfoBo bo) {
|
||||
boolean success = classInfoService.insertByBo(bo);
|
||||
if (success) {
|
||||
return R.ok(bo.getId());
|
||||
} else {
|
||||
return R.fail("新增班级信息失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改班级信息
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:edit")
|
||||
@Log(title = "班级信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgClassInfoBo bo) {
|
||||
return toAjax(classInfoService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除班级信息
|
||||
*/
|
||||
@SaCheckPermission("xg:classInfo:remove")
|
||||
@Log(title = "班级信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(classInfoService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
}
|
||||
-190
@@ -1,190 +0,0 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.xg.domain.bo.XgCollectionBatchBo;
|
||||
import org.dromara.xg.domain.vo.XgCollectionBatchVo;
|
||||
import org.dromara.xg.service.IXgCollectionBatchService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 信息采集批次管理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xg/collectionBatch")
|
||||
public class XgCollectionBatchController extends BaseController {
|
||||
|
||||
private final IXgCollectionBatchService collectionBatchService;
|
||||
|
||||
/**
|
||||
* 查询信息采集批次列表
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgCollectionBatchVo> list(XgCollectionBatchBo bo, PageQuery pageQuery) {
|
||||
return collectionBatchService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有信息采集批次列表(不分页)
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:list")
|
||||
@GetMapping("/listAll")
|
||||
public R<List<XgCollectionBatchVo>> listAll(XgCollectionBatchBo bo) {
|
||||
List<XgCollectionBatchVo> list = collectionBatchService.queryList(bo);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出信息采集批次列表
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:export")
|
||||
@Log(title = "信息采集批次", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgCollectionBatchBo bo, HttpServletResponse response) {
|
||||
List<XgCollectionBatchVo> list = collectionBatchService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "信息采集批次", XgCollectionBatchVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取信息采集批次详细信息
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgCollectionBatchVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(collectionBatchService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增信息采集批次
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:add")
|
||||
@Log(title = "信息采集批次", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgCollectionBatchBo bo) {
|
||||
return toAjax(collectionBatchService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改信息采集批次
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:edit")
|
||||
@Log(title = "信息采集批次", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgCollectionBatchBo bo) {
|
||||
return toAjax(collectionBatchService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除信息采集批次
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:remove")
|
||||
@Log(title = "信息采集批次", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(collectionBatchService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布批次
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:publish")
|
||||
@Log(title = "发布信息采集批次", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/publish/{id}")
|
||||
public R<Void> publishBatch(@NotNull(message = "批次ID不能为空") @PathVariable Long id) {
|
||||
return toAjax(collectionBatchService.publishBatch(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消发布批次
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:unpublish")
|
||||
@Log(title = "取消发布信息采集批次", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/unpublish/{id}")
|
||||
public R<Void> unpublishBatch(@NotNull(message = "批次ID不能为空") @PathVariable Long id) {
|
||||
return toAjax(collectionBatchService.unpublishBatch(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束批次
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:complete")
|
||||
@Log(title = "结束信息采集批次", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/complete/{id}")
|
||||
public R<Void> completeBatch(@NotNull(message = "批次ID不能为空") @PathVariable Long id) {
|
||||
return toAjax(collectionBatchService.completeBatch(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制批次
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:copy")
|
||||
@Log(title = "复制信息采集批次", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/copy/{id}")
|
||||
public R<Void> copyBatch(@NotNull(message = "批次ID不能为空") @PathVariable Long id,
|
||||
@RequestParam String newBatchName,
|
||||
@RequestParam String newBatchCode) {
|
||||
return toAjax(collectionBatchService.copyBatch(id, newBatchName, newBatchCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取批次统计信息
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:statistics")
|
||||
@GetMapping("/statistics/{id}")
|
||||
public R<Map<String, Object>> getBatchStatistics(@NotNull(message = "批次ID不能为空") @PathVariable Long id) {
|
||||
return R.ok(collectionBatchService.getBatchStatistics(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前活跃批次
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:list")
|
||||
@GetMapping("/active")
|
||||
public R<List<XgCollectionBatchVo>> getActiveBatches() {
|
||||
return R.ok(collectionBatchService.getActiveBatches());
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新批次统计信息
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:statistics")
|
||||
@Log(title = "更新批次统计信息", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/updateStatistics/{id}")
|
||||
public R<Void> updateBatchStatistics(@NotNull(message = "批次ID不能为空") @PathVariable Long id) {
|
||||
return toAjax(collectionBatchService.updateBatchStatistics(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取批次选项列表
|
||||
*/
|
||||
@SaCheckPermission("xg:collectionBatch:list")
|
||||
@GetMapping("/options")
|
||||
public R<List<Map<String, Object>>> getBatchOptions() {
|
||||
return R.ok(collectionBatchService.getBatchOptions());
|
||||
}
|
||||
}
|
||||
-156
@@ -1,156 +0,0 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.xg.domain.bo.XgSemesterBo;
|
||||
import org.dromara.xg.domain.vo.XgSemesterVo;
|
||||
import org.dromara.xg.service.IXgSemesterService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学期管理Controller
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xg/semester")
|
||||
public class XgSemesterController extends BaseController {
|
||||
|
||||
private final IXgSemesterService semesterService;
|
||||
|
||||
/**
|
||||
* 查询学期管理列表
|
||||
*/
|
||||
@SaCheckPermission("xg:semester:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgSemesterVo> list(XgSemesterBo bo, PageQuery pageQuery) {
|
||||
return semesterService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出学期管理列表
|
||||
*/
|
||||
@SaCheckPermission("xg:semester:export")
|
||||
@Log(title = "学期管理", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgSemesterBo bo, HttpServletResponse response) {
|
||||
List<XgSemesterVo> list = semesterService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "学期管理", XgSemesterVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学期管理详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("xg:semester:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgSemesterVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(semesterService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学期管理
|
||||
*/
|
||||
@SaCheckPermission("xg:semester:add")
|
||||
@Log(title = "学期管理", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgSemesterBo bo) {
|
||||
return toAjax(semesterService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学期管理
|
||||
*/
|
||||
@SaCheckPermission("xg:semester:edit")
|
||||
@Log(title = "学期管理", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgSemesterBo bo) {
|
||||
return toAjax(semesterService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除学期管理
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("xg:semester:remove")
|
||||
@Log(title = "学期管理", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(semesterService.deleteWithValidByIds(List.of(ids)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据学年ID查询学期列表
|
||||
*
|
||||
* @param academicYearId 学年ID
|
||||
*/
|
||||
@SaCheckPermission("xg:semester:query")
|
||||
@GetMapping("/getByAcademicYear/{academicYearId}")
|
||||
public R<List<XgSemesterVo>> getByAcademicYearId(@PathVariable Long academicYearId) {
|
||||
return R.ok(semesterService.queryByAcademicYearId(academicYearId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前学期
|
||||
*/
|
||||
@SaCheckPermission("xg:semester:query")
|
||||
@GetMapping("/current")
|
||||
public R<XgSemesterVo> getCurrentSemester() {
|
||||
return R.ok(semesterService.queryCurrentSemester());
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前学期
|
||||
*
|
||||
* @param id 学期ID
|
||||
*/
|
||||
@SaCheckPermission("xg:semester:edit")
|
||||
@Log(title = "设置当前学期", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/setCurrent/{id}")
|
||||
public R<Void> setCurrentSemester(@NotNull(message = "学期ID不能为空") @PathVariable Long id) {
|
||||
return toAjax(semesterService.setCurrentSemester(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询可用的学期选项
|
||||
*/
|
||||
@SaCheckPermission("xg:semester:query")
|
||||
@GetMapping("/availableOptions")
|
||||
public R<List<XgSemesterVo>> getAvailableOptions() {
|
||||
return R.ok(semesterService.queryAvailableOptions());
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验学期名称是否唯一
|
||||
*
|
||||
* @param semesterName 学期名称
|
||||
* @param id 学期ID
|
||||
*/
|
||||
@GetMapping("/checkSemesterName")
|
||||
public R<Boolean> checkSemesterName(@RequestParam String semesterName, @RequestParam(required = false) Long id) {
|
||||
return R.ok(semesterService.checkSemesterNameUnique(semesterName, id));
|
||||
}
|
||||
}
|
||||
-135
@@ -1,135 +0,0 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.xg.domain.bo.XgStudentInfoApprovalBo;
|
||||
import org.dromara.xg.domain.vo.XgStudentInfoApprovalVo;
|
||||
import org.dromara.xg.service.IXgStudentInfoApprovalService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 学生信息审核管理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xg/studentInfoApproval")
|
||||
public class XgStudentInfoApprovalController extends BaseController {
|
||||
|
||||
private final IXgStudentInfoApprovalService studentInfoApprovalService;
|
||||
|
||||
/**
|
||||
* 查询待审核的学生信息列表
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:approve")
|
||||
@GetMapping("/pending")
|
||||
public TableDataInfo<XgStudentInfoApprovalVo> queryPendingApprovalList(XgStudentInfoApprovalBo bo, PageQuery pageQuery) {
|
||||
return studentInfoApprovalService.queryPendingApprovalList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询已审核的学生信息列表
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:approve")
|
||||
@GetMapping("/approved")
|
||||
public TableDataInfo<XgStudentInfoApprovalVo> queryApprovedList(XgStudentInfoApprovalBo bo, PageQuery pageQuery) {
|
||||
return studentInfoApprovalService.queryApprovedList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 审批学生信息
|
||||
*/
|
||||
@PostMapping("/approve")
|
||||
public R<Void> approveStudentInfo(@RequestParam @NotNull(message = "学生ID不能为空") Long studentId,
|
||||
@RequestParam @NotNull(message = "批次ID不能为空") Long batchId,
|
||||
@RequestParam @NotNull(message = "审核结果不能为空") Boolean approved,
|
||||
@RequestParam String comments) {
|
||||
String approvalStatus = approved ? "approved" : "rejected";
|
||||
return toAjax(studentInfoApprovalService.approveStudentInfo(studentId, batchId, approvalStatus, comments));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量审批学生信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:approve")
|
||||
@Log(title = "批量审核学生信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/batchApprove")
|
||||
public R<Void> batchApproveStudentInfo(@NotEmpty(message = "学生ID列表不能为空") @RequestBody List<Long> studentIds,
|
||||
@NotNull(message = "批次ID不能为空") @RequestParam Long batchId,
|
||||
@NotNull(message = "审核结果不能为空") @RequestParam Boolean approved,
|
||||
@RequestParam(required = false) String comments) {
|
||||
String approvalStatus = approved ? "approved" : "rejected";
|
||||
return toAjax(studentInfoApprovalService.batchApproveStudentInfo(studentIds, batchId, approvalStatus, comments));
|
||||
}
|
||||
|
||||
/**
|
||||
* 撤销审批
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:approve")
|
||||
@Log(title = "撤销审核", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/revoke")
|
||||
public R<Void> revokeApproval(@NotNull(message = "学生ID不能为空") @RequestParam Long studentId,
|
||||
@NotNull(message = "批次ID不能为空") @RequestParam Long batchId,
|
||||
@RequestParam(required = false) String reason) {
|
||||
return toAjax(studentInfoApprovalService.revokeApproval(studentId, batchId, reason));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学生信息审核历史
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:approve")
|
||||
@GetMapping("/history")
|
||||
public R<List<XgStudentInfoApprovalVo>> queryApprovalHistory(@NotNull(message = "学生ID不能为空") @RequestParam Long studentId,
|
||||
@NotNull(message = "批次ID不能为空") @RequestParam Long batchId) {
|
||||
return R.ok(studentInfoApprovalService.queryApprovalHistory(studentId, batchId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取审批统计
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:approve")
|
||||
@GetMapping("/statistics/{batchId}")
|
||||
public R<Map<String, Object>> getApprovalStatistics(@PathVariable @NotNull(message = "批次ID不能为空") Long batchId) {
|
||||
return success(studentInfoApprovalService.getApprovalStatistics(batchId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查审批权限
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:approve")
|
||||
@GetMapping("/checkPermission/{batchId}")
|
||||
public R<Boolean> checkApprovalPermission(@PathVariable @NotNull(message = "批次ID不能为空") Long batchId) {
|
||||
return success(studentInfoApprovalService.checkApprovalPermission(batchId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出审核结果
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:export")
|
||||
@Log(title = "导出审核结果", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void exportApprovalResults(XgStudentInfoApprovalBo bo, HttpServletResponse response) {
|
||||
List<XgStudentInfoApprovalVo> list = studentInfoApprovalService.exportApprovalResult(bo);
|
||||
ExcelUtil.exportExcel(list, "审批结果", XgStudentInfoApprovalVo.class, response);
|
||||
}
|
||||
}
|
||||
-580
@@ -1,580 +0,0 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
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.springframework.web.multipart.MultipartFile;
|
||||
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.common.excel.core.ExcelResult;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.xg.domain.vo.XgStudentInfoVo;
|
||||
import org.dromara.xg.domain.bo.XgStudentInfoBo;
|
||||
import org.dromara.xg.service.IXgStudentInfoService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 学生信息Controller
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xg/studentInfo")
|
||||
public class XgStudentInfoController extends BaseController {
|
||||
|
||||
private final IXgStudentInfoService studentInfoService;
|
||||
|
||||
/**
|
||||
* 查询学生信息列表
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgStudentInfoVo> list(XgStudentInfoBo bo, PageQuery pageQuery) {
|
||||
return studentInfoService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出学生信息列表
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:export")
|
||||
@Log(title = "学生信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgStudentInfoBo bo, HttpServletResponse response) {
|
||||
List<XgStudentInfoVo> list = studentInfoService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "学生信息", XgStudentInfoVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生信息详细信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgStudentInfoVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(studentInfoService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据学号查询学生信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:query")
|
||||
@GetMapping("/byStudentNo/{studentNo}")
|
||||
public R<XgStudentInfoVo> getByStudentNo(@NotBlank(message = "学号不能为空") @PathVariable String studentNo) {
|
||||
return R.ok(studentInfoService.queryByStudentNo(studentNo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据身份证号查询学生信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:query")
|
||||
@GetMapping("/byIdCard/{idCard}")
|
||||
public R<XgStudentInfoVo> getByIdCard(@NotBlank(message = "身份证号不能为空") @PathVariable String idCard) {
|
||||
return R.ok(studentInfoService.queryByIdCard(idCard));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询班级学生列表
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:list")
|
||||
@GetMapping("/byClass/{classCode}")
|
||||
public R<List<XgStudentInfoVo>> getByClassCode(@NotBlank(message = "班级代码不能为空") @PathVariable String classCode) {
|
||||
return R.ok(studentInfoService.queryByClassCode(classCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据班级ID查询学生信息(用于班级干部管理)
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:list")
|
||||
@GetMapping("/byClassId/{classId}")
|
||||
public R<List<XgStudentInfoVo>> getByClassId(@NotNull(message = "班级ID不能为空") @PathVariable Long classId) {
|
||||
return R.ok(studentInfoService.queryByClassId(classId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据班级ID获取学生选项列表(用于班级干部管理下拉框)
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:list")
|
||||
@GetMapping("/optionsByClassId/{classId}")
|
||||
public R<List<Map<String, Object>>> getStudentOptionsByClassId(@NotNull(message = "班级ID不能为空") @PathVariable Long classId) {
|
||||
List<XgStudentInfoVo> students = studentInfoService.queryByClassId(classId);
|
||||
|
||||
List<Map<String, Object>> options = students.stream()
|
||||
.map(student -> {
|
||||
Map<String, Object> option = new java.util.HashMap<>();
|
||||
option.put("value", student.getId());
|
||||
option.put("label", student.getName() + "(" + student.getStudentNo() + ")");
|
||||
option.put("studentNo", student.getStudentNo());
|
||||
option.put("studentName", student.getName());
|
||||
option.put("className", student.getClassName());
|
||||
option.put("gender", student.getGender());
|
||||
option.put("phone", student.getPhone());
|
||||
return option;
|
||||
})
|
||||
.toList();
|
||||
|
||||
return R.ok(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学院学生列表
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:list")
|
||||
@GetMapping("/byCollege/{collegeCode}")
|
||||
public R<List<XgStudentInfoVo>> getByCollegeCode(@NotBlank(message = "学院代码不能为空") @PathVariable String collegeCode) {
|
||||
return R.ok(studentInfoService.queryByCollegeCode(collegeCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学生信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:add")
|
||||
@Log(title = "学生信息", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Long> add(@Validated(AddGroup.class) @RequestBody XgStudentInfoBo bo) {
|
||||
boolean success = studentInfoService.insertByBo(bo);
|
||||
if (success) {
|
||||
return R.ok(bo.getId());
|
||||
} else {
|
||||
return R.fail("新增学生信息失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学生信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:edit")
|
||||
@Log(title = "学生信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgStudentInfoBo bo) {
|
||||
return toAjax(studentInfoService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除学生信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:remove")
|
||||
@Log(title = "学生信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(studentInfoService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量导入学生信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:import")
|
||||
@Log(title = "学生信息", businessType = BusinessType.IMPORT)
|
||||
@PostMapping("/importData")
|
||||
public R<Void> importData(MultipartFile file, boolean updateSupport) throws Exception {
|
||||
ExcelResult<XgStudentInfoBo> result = ExcelUtil.importExcel(file.getInputStream(), XgStudentInfoBo.class, true);
|
||||
List<XgStudentInfoBo> studentList = result.getList();
|
||||
String operName = LoginHelper.getUsername();
|
||||
String message = studentInfoService.importStudent(studentList, updateSupport, operName);
|
||||
return R.ok(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取导入模板
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:import")
|
||||
@PostMapping("/importTemplate")
|
||||
public void importTemplate(HttpServletResponse response) {
|
||||
ExcelUtil.exportExcel(new ArrayList<>(), "学生信息数据", XgStudentInfoVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新学生信息状态
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:edit")
|
||||
@Log(title = "批量更新状态", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/batchUpdateStatus")
|
||||
public R<Void> batchUpdateStatus(@RequestBody Map<String, Object> params) {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Long> studentIds = (List<Long>) params.get("studentIds");
|
||||
String infoStatus = (String) params.get("infoStatus");
|
||||
return toAjax(studentInfoService.batchUpdateInfoStatus(studentIds, infoStatus));
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交学生信息审核
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:audit")
|
||||
@Log(title = "提交审核", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/{studentId}/submitAudit")
|
||||
public R<Void> submitForAudit(
|
||||
@NotNull(message = "学生ID不能为空") @PathVariable Long studentId,
|
||||
@NotNull(message = "批次ID不能为空") @RequestParam Long batchId) {
|
||||
return toAjax(studentInfoService.submitForAudit(studentId, batchId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 审核学生信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:audit")
|
||||
@Log(title = "审核学生信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/{studentId}/audit")
|
||||
public R<Void> auditStudentInfo(
|
||||
@NotNull(message = "学生ID不能为空") @PathVariable Long studentId,
|
||||
@NotBlank(message = "审核结果不能为空") @RequestParam String auditResult,
|
||||
@RequestParam(required = false) String auditComment) {
|
||||
return toAjax(studentInfoService.auditStudentInfo(studentId, auditResult, auditComment));
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查学号是否存在
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:query")
|
||||
@GetMapping("/checkStudentNo")
|
||||
public R<Boolean> checkStudentNoExists(
|
||||
@NotBlank(message = "学号不能为空") @RequestParam String studentNo,
|
||||
@RequestParam(required = false) Long studentId) {
|
||||
return R.ok(studentInfoService.checkStudentNoExists(studentNo, studentId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查身份证号是否存在
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:query")
|
||||
@GetMapping("/checkIdCard")
|
||||
public R<Boolean> checkIdCardExists(
|
||||
@NotBlank(message = "身份证号不能为空") @RequestParam String idCard,
|
||||
@RequestParam(required = false) Long studentId) {
|
||||
return R.ok(studentInfoService.checkIdCardExists(idCard, studentId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生统计信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:statistics")
|
||||
@GetMapping("/statistics")
|
||||
public R<List<Map<String, Object>>> getStudentStatistics(@RequestParam Map<String, Object> params) {
|
||||
// 调用service获取真实的统计数据
|
||||
List<Map<String, Object>> statistics = studentInfoService.queryStudentStatistics(params);
|
||||
|
||||
// 如果没有数据,创建一个默认的统计记录
|
||||
if (statistics.isEmpty()) {
|
||||
// 直接查询总体统计
|
||||
XgStudentInfoBo queryBo = new XgStudentInfoBo();
|
||||
List<XgStudentInfoVo> allStudents = studentInfoService.queryList(queryBo);
|
||||
|
||||
Map<String, Object> totalStats = new java.util.HashMap<>();
|
||||
totalStats.put("collegeCode", "");
|
||||
totalStats.put("collegeName", "全校统计");
|
||||
totalStats.put("totalCount", allStudents.size());
|
||||
totalStats.put("maleCount", allStudents.stream().mapToInt(s -> "M".equals(s.getGender()) ? 1 : 0).sum());
|
||||
totalStats.put("femaleCount", allStudents.stream().mapToInt(s -> "F".equals(s.getGender()) ? 1 : 0).sum());
|
||||
totalStats.put("activeCount", allStudents.stream().mapToInt(s -> "1".equals(s.getStudentStatus()) ? 1 : 0).sum());
|
||||
totalStats.put("suspendedCount", allStudents.stream().mapToInt(s -> "2".equals(s.getStudentStatus()) ? 1 : 0).sum());
|
||||
totalStats.put("graduatedCount", allStudents.stream().mapToInt(s -> "5".equals(s.getStudentStatus()) ? 1 : 0).sum());
|
||||
totalStats.put("poorFamilyCount", 0); // 暂时设为0,后续完善
|
||||
totalStats.put("minorityCount", 0); // 暂时设为0,后续完善
|
||||
totalStats.put("disabledCount", 0); // 暂时设为0,后续完善
|
||||
totalStats.put("orphanCount", 0); // 暂时设为0,后续完善
|
||||
|
||||
statistics.add(totalStats);
|
||||
}
|
||||
|
||||
return R.ok(statistics);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生选项列表(用于下拉框)
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:list")
|
||||
@GetMapping("/options")
|
||||
public R<List<Map<String, Object>>> getStudentOptions(@RequestParam(required = false) String classCode) {
|
||||
XgStudentInfoBo bo = new XgStudentInfoBo();
|
||||
if (classCode != null) {
|
||||
bo.setClassCode(classCode);
|
||||
}
|
||||
List<XgStudentInfoVo> students = studentInfoService.queryList(bo);
|
||||
|
||||
List<Map<String, Object>> options = students.stream()
|
||||
.map(student -> {
|
||||
Map<String, Object> option = new java.util.HashMap<>();
|
||||
option.put("value", student.getId());
|
||||
option.put("label", student.getName() + "(" + student.getStudentNo() + ")");
|
||||
option.put("studentNo", student.getStudentNo());
|
||||
option.put("className", student.getClassName());
|
||||
return option;
|
||||
})
|
||||
.toList();
|
||||
|
||||
return R.ok(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学院选项列表(用于下拉框)
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:list")
|
||||
@GetMapping("/collegeOptions")
|
||||
public R<List<Map<String, Object>>> getCollegeOptions() {
|
||||
List<XgStudentInfoVo> students = studentInfoService.queryList(new XgStudentInfoBo());
|
||||
|
||||
List<Map<String, Object>> options = students.stream()
|
||||
.filter(student -> student.getCollegeCode() != null && student.getCollegeName() != null)
|
||||
.collect(java.util.stream.Collectors.toMap(
|
||||
student -> student.getCollegeCode(),
|
||||
student -> {
|
||||
Map<String, Object> option = new java.util.HashMap<>();
|
||||
option.put("value", student.getCollegeCode());
|
||||
option.put("label", student.getCollegeName());
|
||||
option.put("code", student.getCollegeCode());
|
||||
return option;
|
||||
},
|
||||
(existing, replacement) -> existing
|
||||
))
|
||||
.values()
|
||||
.stream()
|
||||
.sorted((a, b) -> a.get("label").toString().compareTo(b.get("label").toString()))
|
||||
.toList();
|
||||
|
||||
return R.ok(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级选项列表(用于下拉框)
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:list")
|
||||
@GetMapping("/classOptions")
|
||||
public R<List<Map<String, Object>>> getClassOptions(@RequestParam(required = false) String collegeCode) {
|
||||
XgStudentInfoBo bo = new XgStudentInfoBo();
|
||||
if (collegeCode != null) {
|
||||
bo.setCollegeCode(collegeCode);
|
||||
}
|
||||
List<XgStudentInfoVo> students = studentInfoService.queryList(bo);
|
||||
|
||||
List<Map<String, Object>> options = students.stream()
|
||||
.filter(student -> student.getClassCode() != null && student.getClassName() != null)
|
||||
.collect(java.util.stream.Collectors.toMap(
|
||||
student -> student.getClassCode(),
|
||||
student -> {
|
||||
Map<String, Object> option = new java.util.HashMap<>();
|
||||
option.put("value", student.getClassCode());
|
||||
option.put("label", student.getClassName());
|
||||
option.put("code", student.getClassCode());
|
||||
option.put("collegeCode", student.getCollegeCode());
|
||||
option.put("collegeName", student.getCollegeName());
|
||||
return option;
|
||||
},
|
||||
(existing, replacement) -> existing
|
||||
))
|
||||
.values()
|
||||
.stream()
|
||||
.sorted((a, b) -> a.get("label").toString().compareTo(b.get("label").toString()))
|
||||
.toList();
|
||||
|
||||
return R.ok(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取专业选项列表(用于下拉框)
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:list")
|
||||
@GetMapping("/majorOptions")
|
||||
public R<List<Map<String, Object>>> getMajorOptions(@RequestParam(required = false) String collegeCode) {
|
||||
XgStudentInfoBo bo = new XgStudentInfoBo();
|
||||
if (collegeCode != null) {
|
||||
bo.setCollegeCode(collegeCode);
|
||||
}
|
||||
List<XgStudentInfoVo> students = studentInfoService.queryList(bo);
|
||||
|
||||
List<Map<String, Object>> options = students.stream()
|
||||
.filter(student -> student.getMajorCode() != null && student.getMajorName() != null)
|
||||
.collect(java.util.stream.Collectors.toMap(
|
||||
student -> student.getMajorCode(),
|
||||
student -> {
|
||||
Map<String, Object> option = new java.util.HashMap<>();
|
||||
option.put("value", student.getMajorCode());
|
||||
option.put("label", student.getMajorName());
|
||||
option.put("code", student.getMajorCode());
|
||||
option.put("collegeCode", student.getCollegeCode());
|
||||
option.put("collegeName", student.getCollegeName());
|
||||
return option;
|
||||
},
|
||||
(existing, replacement) -> existing
|
||||
))
|
||||
.values()
|
||||
.stream()
|
||||
.sorted((a, b) -> a.get("label").toString().compareTo(b.get("label").toString()))
|
||||
.toList();
|
||||
|
||||
return R.ok(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生选项(用于下拉框)
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:list")
|
||||
@GetMapping("/studentOptions")
|
||||
public R<List<Map<String, Object>>> getStudentOptionsForSelect(
|
||||
@RequestParam(required = false) String name,
|
||||
@RequestParam(required = false) String classCode,
|
||||
@RequestParam(required = false) String collegeCode) {
|
||||
|
||||
XgStudentInfoBo bo = new XgStudentInfoBo();
|
||||
if (name != null) {
|
||||
bo.setName(name);
|
||||
}
|
||||
if (classCode != null) {
|
||||
bo.setClassCode(classCode);
|
||||
}
|
||||
if (collegeCode != null) {
|
||||
bo.setCollegeCode(collegeCode);
|
||||
}
|
||||
List<XgStudentInfoVo> students = studentInfoService.queryList(bo);
|
||||
|
||||
List<Map<String, Object>> options = students.stream()
|
||||
.map(student -> {
|
||||
Map<String, Object> option = new HashMap<>();
|
||||
option.put("value", student.getId());
|
||||
option.put("label", student.getName() + "(" + student.getStudentNo() + ")");
|
||||
option.put("studentNo", student.getStudentNo());
|
||||
option.put("className", student.getClassName());
|
||||
option.put("collegeCode", student.getCollegeCode());
|
||||
option.put("collegeName", student.getCollegeName());
|
||||
return option;
|
||||
})
|
||||
.toList();
|
||||
|
||||
return R.ok(options);
|
||||
}
|
||||
|
||||
// ==================== 批次相关功能 ====================
|
||||
|
||||
/**
|
||||
* 根据批次ID查询学生信息列表
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:list")
|
||||
@GetMapping("/byBatch/{batchId}")
|
||||
public TableDataInfo<XgStudentInfoVo> getByBatchId(@NotNull(message = "批次ID不能为空") @PathVariable Long batchId,
|
||||
PageQuery pageQuery) {
|
||||
// 创建查询条件,设置批次ID
|
||||
XgStudentInfoBo bo = new XgStudentInfoBo();
|
||||
bo.setBatchId(batchId);
|
||||
return studentInfoService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 学生信息关联到批次
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:batch")
|
||||
@Log(title = "学生信息关联批次", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/associateToBatch")
|
||||
public R<Void> associateStudentToBatch(@NotNull(message = "学生ID不能为空") @RequestParam Long studentId,
|
||||
@NotNull(message = "批次ID不能为空") @RequestParam Long batchId) {
|
||||
return toAjax(studentInfoService.associateStudentToBatch(studentId, batchId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量关联学生到批次
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:batch")
|
||||
@Log(title = "批量关联学生到批次", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/batchAssociateToBatch")
|
||||
public R<Void> batchAssociateStudentsToBatch(@NotEmpty(message = "学生ID列表不能为空") @RequestBody List<Long> studentIds,
|
||||
@NotNull(message = "批次ID不能为空") @RequestParam Long batchId) {
|
||||
return toAjax(studentInfoService.batchAssociateStudentsToBatch(studentIds, batchId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 学生提交信息(调用现有的提交审核方法)
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:submit")
|
||||
@Log(title = "学生提交信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/{studentId}/submit")
|
||||
public R<Void> submitStudentInfo(@NotNull(message = "学生ID不能为空") @PathVariable Long studentId,
|
||||
@NotNull(message = "批次ID不能为空") @RequestParam Long batchId) {
|
||||
// 调用现有的提交审核方法
|
||||
return submitForAudit(studentId, batchId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 学生撤回提交
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:submit")
|
||||
@Log(title = "学生撤回提交", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/{studentId}/withdraw")
|
||||
public R<Void> withdrawSubmission(@NotNull(message = "学生ID不能为空") @PathVariable Long studentId,
|
||||
@NotNull(message = "批次ID不能为空") @RequestParam Long batchId) {
|
||||
return toAjax(studentInfoService.withdrawSubmission(studentId, batchId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生批次进度
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:query")
|
||||
@GetMapping("/{studentId}/batchProgress")
|
||||
public R<Map<String, Object>> getStudentBatchProgress(@NotNull(message = "学生ID不能为空") @PathVariable Long studentId,
|
||||
@NotNull(message = "批次ID不能为空") @RequestParam Long batchId) {
|
||||
return R.ok(studentInfoService.getStudentBatchProgress(studentId, batchId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量审核学生信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:audit")
|
||||
@Log(title = "批量审核学生信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/batchAudit")
|
||||
public R<Void> batchAuditStudentInfo(@NotEmpty(message = "学生ID列表不能为空") @RequestBody List<Long> studentIds,
|
||||
@NotNull(message = "批次ID不能为空") @RequestParam Long batchId,
|
||||
@NotBlank(message = "审核结果不能为空") @RequestParam String auditResult,
|
||||
@RequestParam(required = false) String auditComment) {
|
||||
return toAjax(studentInfoService.batchAuditStudentInfo(studentIds, batchId, auditResult, auditComment));
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查学生编辑权限
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:query")
|
||||
@GetMapping("/checkEditPermission")
|
||||
public R<Boolean> checkEditPermission(@NotNull(message = "学生ID不能为空") @RequestParam Long studentId,
|
||||
@NotNull(message = "批次ID不能为空") @RequestParam Long batchId) {
|
||||
// 这里需要调用权限服务检查
|
||||
return R.ok(true); // 临时返回true,实际应该调用权限服务
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生批次统计信息
|
||||
*/
|
||||
@SaCheckPermission("xg:studentInfo:statistics")
|
||||
@GetMapping("/batchStatistics")
|
||||
public R<Map<String, Object>> getStudentBatchStatistics(@NotNull(message = "批次ID不能为空") @RequestParam Long batchId) {
|
||||
// 这里需要调用统计服务
|
||||
Map<String, Object> statistics = new HashMap<>();
|
||||
statistics.put("batchId", batchId);
|
||||
statistics.put("totalCount", 0);
|
||||
statistics.put("submittedCount", 0);
|
||||
statistics.put("approvedCount", 0);
|
||||
statistics.put("rejectedCount", 0);
|
||||
return R.ok(statistics);
|
||||
}
|
||||
|
||||
}
|
||||
-107
@@ -1,107 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 学年管理对象 xg_academic_year
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_academic_year")
|
||||
public class XgAcademicYear extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 学年编码,如2024-2025
|
||||
*/
|
||||
private String yearCode;
|
||||
|
||||
/**
|
||||
* 学年名称,如2024-2025学年
|
||||
*/
|
||||
private String yearName;
|
||||
|
||||
/**
|
||||
* 学年开始日期
|
||||
*/
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 学年结束日期
|
||||
*/
|
||||
private LocalDate endDate;
|
||||
|
||||
/**
|
||||
* 是否当前学年:0-否,1-是
|
||||
*/
|
||||
private Boolean isCurrent;
|
||||
|
||||
/**
|
||||
* 状态:active-有效,inactive-无效
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 学年描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
// 手动添加缺失的getter方法,解决编译错误
|
||||
public String getYearCode() {
|
||||
return yearCode;
|
||||
}
|
||||
|
||||
public LocalDate getStartDate() {
|
||||
return startDate;
|
||||
}
|
||||
|
||||
public LocalDate getEndDate() {
|
||||
return endDate;
|
||||
}
|
||||
|
||||
public String getYearName() {
|
||||
return yearName;
|
||||
}
|
||||
|
||||
// 手动添加缺失的getter方法,解决编译错误
|
||||
public Boolean getIsCurrent() {
|
||||
return isCurrent;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
}
|
||||
-129
@@ -1,129 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 审核记录对象 xg_audit_record
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_audit_record")
|
||||
public class XgAuditRecord extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 学生ID,关联xg_student_info.id
|
||||
*/
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 批次ID,关联xg_collection_batch.id
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 审核级别:1-初审,2-复审,3-终审
|
||||
*/
|
||||
private Integer auditLevel;
|
||||
|
||||
/**
|
||||
* 审核类型:submit-提交,approve-通过,reject-拒绝,return-退回
|
||||
*/
|
||||
private String auditType;
|
||||
|
||||
/**
|
||||
* 审核状态:pending-待审核,approved-已通过,rejected-已拒绝
|
||||
*/
|
||||
private String auditStatus;
|
||||
|
||||
/**
|
||||
* 审核人ID
|
||||
*/
|
||||
private Long auditorId;
|
||||
|
||||
/**
|
||||
* 审核人姓名
|
||||
*/
|
||||
private String auditorName;
|
||||
|
||||
/**
|
||||
* 审核人角色
|
||||
*/
|
||||
private String auditorRole;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime auditTime;
|
||||
|
||||
/**
|
||||
* 审核意见
|
||||
*/
|
||||
private String auditComment;
|
||||
|
||||
/**
|
||||
* 变更字段(JSON格式)
|
||||
*/
|
||||
private String changedFields;
|
||||
|
||||
/**
|
||||
* 下一审核人ID
|
||||
*/
|
||||
private Long nextAuditorId;
|
||||
|
||||
/**
|
||||
* 下一审核人姓名
|
||||
*/
|
||||
private String nextAuditorName;
|
||||
|
||||
/**
|
||||
* 是否最终审核:0-否,1-是
|
||||
*/
|
||||
private Boolean isFinal;
|
||||
|
||||
/**
|
||||
* 处理时长(分钟)
|
||||
*/
|
||||
private Integer processDuration;
|
||||
|
||||
/**
|
||||
* IP地址
|
||||
*/
|
||||
private String ipAddress;
|
||||
|
||||
/**
|
||||
* 用户代理
|
||||
*/
|
||||
private String userAgent;
|
||||
|
||||
/**
|
||||
* 附件URL列表(JSON格式)
|
||||
*/
|
||||
private String attachmentUrls;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-180
@@ -1,180 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 批次操作日志对象 xg_batch_operation_log
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_batch_operation_log")
|
||||
public class XgBatchOperationLog extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 批次ID,关联xg_collection_batch.id
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 操作类型:CREATE-创建,UPDATE-修改,DELETE-删除,PUBLISH-发布,UNPUBLISH-取消发布,COMPLETE-完成,COPY-复制
|
||||
*/
|
||||
private String operationType;
|
||||
|
||||
/**
|
||||
* 操作描述
|
||||
*/
|
||||
private String operationDescription;
|
||||
|
||||
/**
|
||||
* 操作前数据(JSON格式)
|
||||
*/
|
||||
private String beforeData;
|
||||
|
||||
/**
|
||||
* 操作后数据(JSON格式)
|
||||
*/
|
||||
private String afterData;
|
||||
|
||||
/**
|
||||
* 操作人ID
|
||||
*/
|
||||
private Long operatorId;
|
||||
|
||||
/**
|
||||
* 操作人姓名
|
||||
*/
|
||||
private String operatorName;
|
||||
|
||||
/**
|
||||
* 操作时间
|
||||
*/
|
||||
private LocalDateTime operationTime;
|
||||
|
||||
/**
|
||||
* 操作IP地址
|
||||
*/
|
||||
private String operationIp;
|
||||
|
||||
/**
|
||||
* 操作结果:SUCCESS-成功,FAILED-失败
|
||||
*/
|
||||
private String operationResult;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*/
|
||||
private String errorMessage;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 操作详情
|
||||
*/
|
||||
private String operationDetails;
|
||||
|
||||
/**
|
||||
* 操作人(兼容字段)
|
||||
*/
|
||||
private Long operationBy;
|
||||
|
||||
// 手动添加缺失的getter/setter方法
|
||||
public String getOperationDetails() {
|
||||
return operationDetails;
|
||||
}
|
||||
|
||||
public void setOperationDetails(String operationDetails) {
|
||||
this.operationDetails = operationDetails;
|
||||
}
|
||||
|
||||
public Long getOperationBy() {
|
||||
return operationBy;
|
||||
}
|
||||
|
||||
public void setOperationBy(Long operationBy) {
|
||||
this.operationBy = operationBy;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置批次ID
|
||||
*/
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置操作类型
|
||||
*/
|
||||
public void setOperationType(String operationType) {
|
||||
this.operationType = operationType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置操作描述
|
||||
*/
|
||||
public void setOperationDescription(String operationDescription) {
|
||||
this.operationDescription = operationDescription;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置操作者ID
|
||||
*/
|
||||
public void setOperatorId(Long operatorId) {
|
||||
this.operatorId = operatorId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置操作者姓名
|
||||
*/
|
||||
public void setOperatorName(String operatorName) {
|
||||
this.operatorName = operatorName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置操作时间
|
||||
*/
|
||||
public void setOperationTime(LocalDateTime operationTime) {
|
||||
this.operationTime = operationTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置操作结果
|
||||
*/
|
||||
public void setOperationResult(String operationResult) {
|
||||
this.operationResult = operationResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
|
||||
// 手动添加setter方法以确保编译通过
|
||||
public void setRemark(String remark) {
|
||||
this.remark = remark;
|
||||
}
|
||||
}
|
||||
-347
@@ -1,347 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 批次权限配置对象 xg_batch_permission
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_batch_permission")
|
||||
public class XgBatchPermission extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 批次ID,关联xg_collection_batch.id
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 角色ID
|
||||
*/
|
||||
private Long roleId;
|
||||
|
||||
/**
|
||||
* 角色名称
|
||||
*/
|
||||
private String roleName;
|
||||
|
||||
/**
|
||||
* 用户类型:student-学生,counselor-辅导员,head_teacher-班主任,college_admin-学院管理员,dept_admin-学生处管理员
|
||||
*/
|
||||
private String userType;
|
||||
|
||||
/**
|
||||
* 权限类型:read-查看,write-编辑,audit-审核,manage-管理
|
||||
*/
|
||||
private String permissionType;
|
||||
|
||||
/**
|
||||
* 权限范围:all-全部,college-学院,class-班级,self-本人
|
||||
*/
|
||||
private String scopeType;
|
||||
|
||||
/**
|
||||
* 权限范围ID列表(JSON格式)
|
||||
*/
|
||||
private String scopeIds;
|
||||
|
||||
/**
|
||||
* 是否可查看:0-否,1-是
|
||||
*/
|
||||
private Boolean canView;
|
||||
|
||||
/**
|
||||
* 是否可编辑:0-否,1-是
|
||||
*/
|
||||
private Boolean canEdit;
|
||||
|
||||
/**
|
||||
* 是否可提交:0-否,1-是
|
||||
*/
|
||||
private Boolean canSubmit;
|
||||
|
||||
/**
|
||||
* 是否可审核:0-否,1-是
|
||||
*/
|
||||
private Boolean canApprove;
|
||||
|
||||
/**
|
||||
* 是否可拒绝:0-否,1-是
|
||||
*/
|
||||
private Boolean canReject;
|
||||
|
||||
/**
|
||||
* 是否可撤回:0-否,1-是
|
||||
*/
|
||||
private Boolean canWithdraw;
|
||||
|
||||
/**
|
||||
* 是否允许删除
|
||||
*/
|
||||
private Boolean canDelete;
|
||||
|
||||
/**
|
||||
* 是否允许导出
|
||||
*/
|
||||
private Boolean canExport;
|
||||
|
||||
/**
|
||||
* 是否允许导入
|
||||
*/
|
||||
private Boolean canImport;
|
||||
|
||||
/**
|
||||
* 权限开始时间
|
||||
*/
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/**
|
||||
* 权限结束时间
|
||||
*/
|
||||
private LocalDateTime endTime;
|
||||
|
||||
/**
|
||||
* 是否激活:0-否,1-是
|
||||
*/
|
||||
private Boolean isActive;
|
||||
|
||||
/**
|
||||
* 权限描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
// ==================== 手动添加的 getter/setter 方法 ====================
|
||||
|
||||
/**
|
||||
* 获取批次ID
|
||||
*/
|
||||
public Long getBatchId() {
|
||||
return this.batchId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置批次ID
|
||||
*/
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取角色ID
|
||||
*/
|
||||
public Long getRoleId() {
|
||||
return this.roleId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取角色名称
|
||||
*/
|
||||
public String getRoleName() {
|
||||
return this.roleName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取权限类型
|
||||
*/
|
||||
public String getPermissionType() {
|
||||
return this.permissionType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否可查看
|
||||
*/
|
||||
public Boolean getCanView() {
|
||||
return this.canView;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否可编辑
|
||||
*/
|
||||
public Boolean getCanEdit() {
|
||||
return this.canEdit;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否可提交
|
||||
*/
|
||||
public Boolean getCanSubmit() {
|
||||
return this.canSubmit;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否可审核
|
||||
*/
|
||||
public Boolean getCanApprove() {
|
||||
return this.canApprove;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否可拒绝
|
||||
*/
|
||||
public Boolean getCanReject() {
|
||||
return this.canReject;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否可撤回
|
||||
*/
|
||||
public Boolean getCanWithdraw() {
|
||||
return this.canWithdraw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取权限开始时间
|
||||
*/
|
||||
public LocalDateTime getStartTime() {
|
||||
return this.startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取权限结束时间
|
||||
*/
|
||||
public LocalDateTime getEndTime() {
|
||||
return this.endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否激活
|
||||
*/
|
||||
public Boolean getIsActive() {
|
||||
return this.isActive;
|
||||
}
|
||||
|
||||
// ==================== 剩余的 setter 方法 ====================
|
||||
|
||||
/**
|
||||
* 设置角色ID
|
||||
*/
|
||||
public void setRoleId(Long roleId) {
|
||||
this.roleId = roleId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置角色名称
|
||||
*/
|
||||
public void setRoleName(String roleName) {
|
||||
this.roleName = roleName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置权限类型
|
||||
*/
|
||||
public void setPermissionType(String permissionType) {
|
||||
this.permissionType = permissionType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否可查看
|
||||
*/
|
||||
public void setCanView(Boolean canView) {
|
||||
this.canView = canView;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否可编辑
|
||||
*/
|
||||
public void setCanEdit(Boolean canEdit) {
|
||||
this.canEdit = canEdit;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否可提交
|
||||
*/
|
||||
public void setCanSubmit(Boolean canSubmit) {
|
||||
this.canSubmit = canSubmit;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否可审核
|
||||
*/
|
||||
public void setCanApprove(Boolean canApprove) {
|
||||
this.canApprove = canApprove;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否可拒绝
|
||||
*/
|
||||
public void setCanReject(Boolean canReject) {
|
||||
this.canReject = canReject;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否可撤回
|
||||
*/
|
||||
public void setCanWithdraw(Boolean canWithdraw) {
|
||||
this.canWithdraw = canWithdraw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置权限开始时间
|
||||
*/
|
||||
public void setStartTime(LocalDateTime startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置结束时间
|
||||
*/
|
||||
public void setEndTime(LocalDateTime endTime) {
|
||||
this.endTime = endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否激活
|
||||
*/
|
||||
public void setIsActive(Boolean isActive) {
|
||||
this.isActive = isActive;
|
||||
}
|
||||
|
||||
public Boolean getCanDelete() {
|
||||
return canDelete;
|
||||
}
|
||||
|
||||
public void setCanDelete(Boolean canDelete) {
|
||||
this.canDelete = canDelete;
|
||||
}
|
||||
|
||||
public Boolean getCanExport() {
|
||||
return canExport;
|
||||
}
|
||||
|
||||
public void setCanExport(Boolean canExport) {
|
||||
this.canExport = canExport;
|
||||
}
|
||||
|
||||
public Boolean getCanImport() {
|
||||
return canImport;
|
||||
}
|
||||
|
||||
public void setCanImport(Boolean canImport) {
|
||||
this.canImport = canImport;
|
||||
}
|
||||
|
||||
}
|
||||
-211
@@ -1,211 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 批次学生关联对象 xg_batch_student_relation
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_batch_student_relation")
|
||||
public class XgBatchStudentRelation extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 关联ID
|
||||
*/
|
||||
@TableId
|
||||
private Long relationId;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
private String studentNumber;
|
||||
|
||||
/**
|
||||
* 提交状态:DRAFT-草稿,SUBMITTED-已提交,WITHDRAWN-已撤回
|
||||
*/
|
||||
private String submissionStatus;
|
||||
|
||||
/**
|
||||
* 提交时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime submissionTime;
|
||||
|
||||
/**
|
||||
* 审核状态:PENDING-待审核,APPROVED-已审核,REJECTED-已拒绝
|
||||
*/
|
||||
private String approvalStatus;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime approvalTime;
|
||||
|
||||
/**
|
||||
* 审核人ID
|
||||
*/
|
||||
private Long approvalBy;
|
||||
|
||||
/**
|
||||
* 审核意见
|
||||
*/
|
||||
private String approvalComments;
|
||||
|
||||
/**
|
||||
* 最后编辑时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime lastEditTime;
|
||||
|
||||
/**
|
||||
* 提交次数
|
||||
*/
|
||||
private Integer submissionCount;
|
||||
|
||||
/**
|
||||
* 是否允许编辑:0-否,1-是
|
||||
*/
|
||||
private Integer allowEdit;
|
||||
|
||||
/**
|
||||
* 扩展字段1
|
||||
*/
|
||||
private String extField1;
|
||||
|
||||
/**
|
||||
* 扩展字段2
|
||||
*/
|
||||
private String extField2;
|
||||
|
||||
/**
|
||||
* 扩展字段3
|
||||
*/
|
||||
private String extField3;
|
||||
|
||||
// 手动添加缺失的getter/setter方法,解决编译错误
|
||||
public Long getId() {
|
||||
return relationId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.relationId = id;
|
||||
}
|
||||
|
||||
public Long getStudentId() {
|
||||
return studentId;
|
||||
}
|
||||
|
||||
public void setStudentId(Long studentId) {
|
||||
this.studentId = studentId;
|
||||
}
|
||||
|
||||
public Long getApprovalBy() {
|
||||
return approvalBy;
|
||||
}
|
||||
|
||||
public String getApprovalComments() {
|
||||
return approvalComments;
|
||||
}
|
||||
|
||||
public void setSubmissionTime(LocalDateTime submissionTime) {
|
||||
this.submissionTime = submissionTime;
|
||||
}
|
||||
|
||||
public Integer getSubmissionCount() {
|
||||
return submissionCount;
|
||||
}
|
||||
|
||||
public void setSubmissionCount(Integer submissionCount) {
|
||||
this.submissionCount = submissionCount;
|
||||
}
|
||||
|
||||
public LocalDateTime getLastEditTime() {
|
||||
return lastEditTime;
|
||||
}
|
||||
|
||||
// 为了兼容Service中的方法引用,添加以下方法
|
||||
public Long getBatchId() {
|
||||
return this.batchId;
|
||||
}
|
||||
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
}
|
||||
|
||||
public String getSubmissionStatus() {
|
||||
return this.submissionStatus;
|
||||
}
|
||||
|
||||
public void setSubmissionStatus(String submissionStatus) {
|
||||
this.submissionStatus = submissionStatus;
|
||||
}
|
||||
|
||||
public String getApprovalStatus() {
|
||||
return this.approvalStatus;
|
||||
}
|
||||
|
||||
public void setApprovalStatus(String approvalStatus) {
|
||||
this.approvalStatus = approvalStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取提交时间
|
||||
*/
|
||||
public LocalDateTime getSubmissionTime() {
|
||||
return this.submissionTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取审批时间
|
||||
*/
|
||||
public LocalDateTime getApprovalTime() {
|
||||
return this.approvalTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置审批时间
|
||||
*/
|
||||
public void setApprovalTime(LocalDateTime approvalTime) {
|
||||
this.approvalTime = approvalTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置审批人
|
||||
*/
|
||||
public void setApprovalBy(Long approvalBy) {
|
||||
this.approvalBy = approvalBy;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置审批意见
|
||||
*/
|
||||
public void setApprovalComments(String approvalComments) {
|
||||
this.approvalComments = approvalComments;
|
||||
}
|
||||
}
|
||||
-243
@@ -1,243 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 业务期管理对象 xg_business_period
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_business_period")
|
||||
public class XgBusinessPeriod extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 批次ID,关联xg_collection_batch.id
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 业务期编码
|
||||
*/
|
||||
private String periodCode;
|
||||
|
||||
/**
|
||||
* 业务期名称
|
||||
*/
|
||||
private String periodName;
|
||||
|
||||
/**
|
||||
* 业务期类型:collection-信息采集期,audit-审核期,confirm-确认期
|
||||
*/
|
||||
private String periodType;
|
||||
|
||||
/**
|
||||
* 关联学年ID
|
||||
*/
|
||||
private Long academicYearId;
|
||||
|
||||
/**
|
||||
* 关联学期ID
|
||||
*/
|
||||
private Long semesterId;
|
||||
|
||||
/**
|
||||
* 业务期开始时间
|
||||
*/
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/**
|
||||
* 业务期结束时间
|
||||
*/
|
||||
private LocalDateTime endTime;
|
||||
|
||||
/**
|
||||
* 状态:not_started-未开始,in_progress-进行中,ended-已结束,suspended-已暂停
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 目标角色(JSON格式)
|
||||
*/
|
||||
private String targetRoles;
|
||||
|
||||
/**
|
||||
* 是否激活:0-否,1-是
|
||||
*/
|
||||
private Boolean isActive;
|
||||
|
||||
/**
|
||||
* 是否自动开始:0-否,1-是
|
||||
*/
|
||||
private Boolean autoStart;
|
||||
|
||||
/**
|
||||
* 是否自动结束:0-否,1-是
|
||||
*/
|
||||
private Boolean autoEnd;
|
||||
|
||||
/**
|
||||
* 业务期描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 通知内容
|
||||
*/
|
||||
private String noticeContent;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 目标角色(兼容字段)
|
||||
*/
|
||||
private String targetRole;
|
||||
|
||||
// 手动添加缺失的getter/setter方法
|
||||
public String getTargetRole() {
|
||||
return targetRole;
|
||||
}
|
||||
|
||||
public void setTargetRole(String targetRole) {
|
||||
this.targetRole = targetRole;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取批次ID
|
||||
*/
|
||||
public Long getBatchId() {
|
||||
return this.batchId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置批次ID
|
||||
*/
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取期间名称
|
||||
*/
|
||||
public String getPeriodName() {
|
||||
return this.periodName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置期间名称
|
||||
*/
|
||||
public void setPeriodName(String periodName) {
|
||||
this.periodName = periodName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取期间类型
|
||||
*/
|
||||
public String getPeriodType() {
|
||||
return this.periodType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置期间类型
|
||||
*/
|
||||
public void setPeriodType(String periodType) {
|
||||
this.periodType = periodType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取开始时间
|
||||
*/
|
||||
public LocalDateTime getStartTime() {
|
||||
return this.startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置开始时间
|
||||
*/
|
||||
public void setStartTime(LocalDateTime startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取结束时间
|
||||
*/
|
||||
public LocalDateTime getEndTime() {
|
||||
return this.endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置结束时间
|
||||
*/
|
||||
public void setEndTime(LocalDateTime endTime) {
|
||||
this.endTime = endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取目标角色
|
||||
*/
|
||||
public String getTargetRoles() {
|
||||
return this.targetRoles;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置目标角色
|
||||
*/
|
||||
public void setTargetRoles(String targetRoles) {
|
||||
this.targetRoles = targetRoles;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否激活
|
||||
*/
|
||||
public Boolean getIsActive() {
|
||||
return this.isActive;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否激活
|
||||
*/
|
||||
public void setIsActive(Boolean isActive) {
|
||||
this.isActive = isActive;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取描述
|
||||
*/
|
||||
public String getDescription() {
|
||||
return this.description;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置描述
|
||||
*/
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
}
|
||||
-264
@@ -1,264 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 班干部变更记录对象 xg_cadre_change_log
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_cadre_change_log")
|
||||
public class XgCadreChangeLog extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 班干部ID,关联xg_class_cadre.id
|
||||
*/
|
||||
@NotNull(message = "班干部ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long cadreId;
|
||||
|
||||
/**
|
||||
* 班级ID,关联xg_class_info.id
|
||||
*/
|
||||
@NotNull(message = "班级ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 学生ID,关联xg_student_info.id
|
||||
*/
|
||||
@NotNull(message = "学生ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@NotBlank(message = "学号不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 32, message = "学号长度不能超过32个字符")
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
@NotBlank(message = "学生姓名不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 50, message = "学生姓名长度不能超过50个字符")
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 变更类型:appointment-任命,dismissal-免职,transfer-调任,renewal-续任,resignation-辞职
|
||||
*/
|
||||
@NotBlank(message = "变更类型不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Pattern(regexp = "^(appointment|dismissal|transfer|renewal|resignation)$",
|
||||
message = "变更类型必须是appointment、dismissal、transfer、renewal、resignation中的一个")
|
||||
private String changeType;
|
||||
|
||||
/**
|
||||
* 变更日期
|
||||
*/
|
||||
@NotNull(message = "变更日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date changeDate;
|
||||
|
||||
/**
|
||||
* 生效日期
|
||||
*/
|
||||
@NotNull(message = "生效日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date effectiveDate;
|
||||
|
||||
/**
|
||||
* 原职务编码
|
||||
*/
|
||||
@Size(max = 20, message = "原职务编码长度不能超过20个字符")
|
||||
private String oldPositionCode;
|
||||
|
||||
/**
|
||||
* 原职务名称
|
||||
*/
|
||||
@Size(max = 50, message = "原职务名称长度不能超过50个字符")
|
||||
private String oldPositionName;
|
||||
|
||||
/**
|
||||
* 新职务编码
|
||||
*/
|
||||
@Size(max = 20, message = "新职务编码长度不能超过20个字符")
|
||||
private String newPositionCode;
|
||||
|
||||
/**
|
||||
* 新职务名称
|
||||
*/
|
||||
@Size(max = 50, message = "新职务名称长度不能超过50个字符")
|
||||
private String newPositionName;
|
||||
|
||||
/**
|
||||
* 职务变更原因
|
||||
*/
|
||||
@Size(max = 200, message = "职务变更原因长度不能超过200个字符")
|
||||
private String positionChangeReason;
|
||||
|
||||
/**
|
||||
* 操作人ID,关联sys_user.id
|
||||
*/
|
||||
@NotNull(message = "操作人ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long operatorId;
|
||||
|
||||
/**
|
||||
* 操作人姓名
|
||||
*/
|
||||
@NotBlank(message = "操作人姓名不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 50, message = "操作人姓名长度不能超过50个字符")
|
||||
private String operatorName;
|
||||
|
||||
/**
|
||||
* 操作人角色:counselor-辅导员,teacher-班主任,admin-管理员
|
||||
*/
|
||||
@NotBlank(message = "操作人角色不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Pattern(regexp = "^(counselor|teacher|admin)$",
|
||||
message = "操作人角色必须是counselor、teacher、admin中的一个")
|
||||
private String operatorRole;
|
||||
|
||||
/**
|
||||
* 操作人部门
|
||||
*/
|
||||
@Size(max = 100, message = "操作人部门长度不能超过100个字符")
|
||||
private String operatorDept;
|
||||
|
||||
/**
|
||||
* 是否需要审批:0-否,1-是
|
||||
*/
|
||||
private Boolean needApproval;
|
||||
|
||||
/**
|
||||
* 审批状态:1-待审批,2-已通过,3-已驳回
|
||||
*/
|
||||
@Pattern(regexp = "^[1-3]$", message = "审批状态必须是1-3之间的数字")
|
||||
private String approvalStatus;
|
||||
|
||||
/**
|
||||
* 审批人ID,关联sys_user.id
|
||||
*/
|
||||
private Long approverId;
|
||||
|
||||
/**
|
||||
* 审批人姓名
|
||||
*/
|
||||
@Size(max = 50, message = "审批人姓名长度不能超过50个字符")
|
||||
private String approverName;
|
||||
|
||||
/**
|
||||
* 审批时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date approvalTime;
|
||||
|
||||
/**
|
||||
* 审批意见
|
||||
*/
|
||||
@Size(max = 500, message = "审批意见长度不能超过500个字符")
|
||||
private String approvalComments;
|
||||
|
||||
/**
|
||||
* 变更原因
|
||||
*/
|
||||
@NotBlank(message = "变更原因不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 500, message = "变更原因长度不能超过500个字符")
|
||||
private String changeReason;
|
||||
|
||||
/**
|
||||
* 变更描述
|
||||
*/
|
||||
private String changeDescription;
|
||||
|
||||
/**
|
||||
* 文件编号
|
||||
*/
|
||||
@Size(max = 100, message = "文件编号长度不能超过100个字符")
|
||||
private String documentNumber;
|
||||
|
||||
/**
|
||||
* 参考文件
|
||||
*/
|
||||
@Size(max = 500, message = "参考文件长度不能超过500个字符")
|
||||
private String referenceDocuments;
|
||||
|
||||
/**
|
||||
* 影响分析
|
||||
*/
|
||||
private String impactAnalysis;
|
||||
|
||||
/**
|
||||
* 继任者ID,关联xg_student_info.id
|
||||
*/
|
||||
private Long successorId;
|
||||
|
||||
/**
|
||||
* 继任者姓名
|
||||
*/
|
||||
@Size(max = 50, message = "继任者姓名长度不能超过50个字符")
|
||||
private String successorName;
|
||||
|
||||
/**
|
||||
* 交接状态:1-未交接,2-交接中,3-已完成
|
||||
*/
|
||||
@Pattern(regexp = "^[1-3]$", message = "交接状态必须是1-3之间的数字")
|
||||
private String handoverStatus;
|
||||
|
||||
/**
|
||||
* 交接日期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date handoverDate;
|
||||
|
||||
/**
|
||||
* 是否紧急变更:0-否,1-是
|
||||
*/
|
||||
private Boolean isEmergency;
|
||||
|
||||
/**
|
||||
* 是否已发送通知:0-否,1-是
|
||||
*/
|
||||
private Boolean notificationSent;
|
||||
|
||||
/**
|
||||
* 附件ID列表(逗号分隔)
|
||||
*/
|
||||
@Size(max = 500, message = "附件ID列表长度不能超过500个字符")
|
||||
private String attachmentIds;
|
||||
|
||||
/**
|
||||
* 备注信息
|
||||
*/
|
||||
@Size(max = 500, message = "备注信息长度不能超过500个字符")
|
||||
private String remark;
|
||||
|
||||
// 以下是从基类继承的字段,这里显式声明用于MyBatis映射
|
||||
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;
|
||||
}
|
||||
-210
@@ -1,210 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 班干部职务配置对象 xg_cadre_position_config
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_cadre_position_config")
|
||||
public class XgCadrePositionConfig extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 职务编码
|
||||
*/
|
||||
@NotBlank(message = "职务编码不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 20, message = "职务编码长度不能超过20个字符")
|
||||
private String positionCode;
|
||||
|
||||
/**
|
||||
* 职务名称
|
||||
*/
|
||||
@NotBlank(message = "职务名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 50, message = "职务名称长度不能超过50个字符")
|
||||
private String positionName;
|
||||
|
||||
/**
|
||||
* 职务英文名称
|
||||
*/
|
||||
@Size(max = 100, message = "职务英文名称长度不能超过100个字符")
|
||||
private String positionNameEn;
|
||||
|
||||
/**
|
||||
* 职务级别:1-班长,2-副班长,3-委员,9-普通成员
|
||||
*/
|
||||
@NotNull(message = "职务级别不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Min(value = 1, message = "职务级别最小值为1")
|
||||
@Max(value = 9, message = "职务级别最大值为9")
|
||||
private Integer positionLevel;
|
||||
|
||||
/**
|
||||
* 职务类别:class-班级干部,party-党团干部,other-其他
|
||||
*/
|
||||
@Size(max = 20, message = "职务类别长度不能超过20个字符")
|
||||
private String positionCategory;
|
||||
|
||||
/**
|
||||
* 每班最大人数
|
||||
*/
|
||||
@Min(value = 0, message = "每班最大人数不能小于0")
|
||||
@Max(value = 10, message = "每班最大人数不能超过10")
|
||||
private Integer maxCountPerClass;
|
||||
|
||||
/**
|
||||
* 每班最小人数
|
||||
*/
|
||||
@Min(value = 0, message = "每班最小人数不能小于0")
|
||||
@Max(value = 10, message = "每班最小人数不能超过10")
|
||||
private Integer minCountPerClass;
|
||||
|
||||
/**
|
||||
* 是否必设:0-否,1-是
|
||||
*/
|
||||
private Boolean isRequired;
|
||||
|
||||
/**
|
||||
* 是否允许兼职:0-否,1-是
|
||||
*/
|
||||
private Boolean isConcurrentAllowed;
|
||||
|
||||
/**
|
||||
* 默认任期(月)
|
||||
*/
|
||||
@Min(value = 1, message = "默认任期最少1个月")
|
||||
@Max(value = 48, message = "默认任期最多48个月")
|
||||
private Integer defaultTermMonths;
|
||||
|
||||
/**
|
||||
* 最低年级要求
|
||||
*/
|
||||
@Size(max = 10, message = "最低年级要求长度不能超过10个字符")
|
||||
private String minGradeRequirement;
|
||||
|
||||
/**
|
||||
* 学业要求
|
||||
*/
|
||||
@Size(max = 200, message = "学业要求长度不能超过200个字符")
|
||||
private String academicRequirements;
|
||||
|
||||
/**
|
||||
* 技能要求
|
||||
*/
|
||||
private String skillRequirements;
|
||||
|
||||
/**
|
||||
* 经验要求
|
||||
*/
|
||||
private String experienceRequirements;
|
||||
|
||||
/**
|
||||
* 默认权限(JSON格式)
|
||||
*/
|
||||
private String defaultPermissions;
|
||||
|
||||
/**
|
||||
* 系统角色列表(逗号分隔)
|
||||
*/
|
||||
@Size(max = 200, message = "系统角色列表长度不能超过200个字符")
|
||||
private String systemRoles;
|
||||
|
||||
/**
|
||||
* 访问级别:1-基础,2-中级,3-高级
|
||||
*/
|
||||
@Min(value = 1, message = "访问级别最小值为1")
|
||||
@Max(value = 3, message = "访问级别最大值为3")
|
||||
private Integer accessLevel;
|
||||
|
||||
/**
|
||||
* 职责描述
|
||||
*/
|
||||
private String responsibilities;
|
||||
|
||||
/**
|
||||
* 具体职务
|
||||
*/
|
||||
private String duties;
|
||||
|
||||
/**
|
||||
* KPI指标(JSON格式)
|
||||
*/
|
||||
private String kpiIndicators;
|
||||
|
||||
/**
|
||||
* 工作标准
|
||||
*/
|
||||
private String workStandards;
|
||||
|
||||
/**
|
||||
* 配置状态:1-启用,2-禁用
|
||||
*/
|
||||
@Pattern(regexp = "^[1-2]$", message = "配置状态必须是1或2")
|
||||
private String configStatus;
|
||||
|
||||
/**
|
||||
* 是否系统职务:0-否,1-是
|
||||
*/
|
||||
private Boolean isSystemPosition;
|
||||
|
||||
/**
|
||||
* 排序顺序
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 职务图标
|
||||
*/
|
||||
@Size(max = 100, message = "职务图标长度不能超过100个字符")
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 显示颜色
|
||||
*/
|
||||
@Size(max = 20, message = "显示颜色长度不能超过20个字符")
|
||||
private String color;
|
||||
|
||||
/**
|
||||
* 职务描述
|
||||
*/
|
||||
@Size(max = 500, message = "职务描述长度不能超过500个字符")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 备注信息
|
||||
*/
|
||||
@Size(max = 500, message = "备注信息长度不能超过500个字符")
|
||||
private String remark;
|
||||
|
||||
// 以下是从基类继承的字段,这里显式声明用于MyBatis映射
|
||||
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;
|
||||
}
|
||||
-466
@@ -1,466 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 班级干部信息对象 xg_class_cadre
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_class_cadre")
|
||||
public class XgClassCadre extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 班级ID,关联xg_class_info.id
|
||||
*/
|
||||
@NotNull(message = "班级ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 学生ID,关联xg_student_info.id
|
||||
*/
|
||||
@NotNull(message = "学生ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@NotBlank(message = "学号不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 32, message = "学号长度不能超过32个字符")
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 学生姓名(冗余字段)
|
||||
*/
|
||||
@NotBlank(message = "学生姓名不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 50, message = "学生姓名长度不能超过50个字符")
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 职务编码:monitor-班长,deputy-副班长,secretary-学习委员等
|
||||
*/
|
||||
@NotBlank(message = "职务编码不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 20, message = "职务编码长度不能超过20个字符")
|
||||
private String positionCode;
|
||||
|
||||
/**
|
||||
* 职务名称
|
||||
*/
|
||||
@NotBlank(message = "职务名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 50, message = "职务名称长度不能超过50个字符")
|
||||
private String positionName;
|
||||
|
||||
/**
|
||||
* 职务级别:1-班长,2-副班长,3-委员,9-普通成员
|
||||
*/
|
||||
@Min(value = 1, message = "职务级别最小值为1")
|
||||
@Max(value = 9, message = "职务级别最大值为9")
|
||||
private Integer positionLevel;
|
||||
|
||||
/**
|
||||
* 职务类别:class-班级干部,party-党团干部,other-其他
|
||||
*/
|
||||
@Size(max = 20, message = "职务类别长度不能超过20个字符")
|
||||
private String positionCategory;
|
||||
|
||||
/**
|
||||
* 任职日期
|
||||
*/
|
||||
@NotNull(message = "任职日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date appointmentDate;
|
||||
|
||||
/**
|
||||
* 任期开始日期
|
||||
*/
|
||||
@NotNull(message = "任期开始日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date termStartDate;
|
||||
|
||||
/**
|
||||
* 任期结束日期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date termEndDate;
|
||||
|
||||
/**
|
||||
* 任期时长(月)
|
||||
*/
|
||||
@Min(value = 1, message = "任期时长最少1个月")
|
||||
@Max(value = 48, message = "任期时长最多48个月")
|
||||
private Integer termDuration;
|
||||
|
||||
/**
|
||||
* 是否现任:0-否,1-是
|
||||
*/
|
||||
private Boolean isCurrent;
|
||||
|
||||
/**
|
||||
* 任职状态:1-在任,2-到期,3-辞职,4-免职,5-调任
|
||||
*/
|
||||
@Pattern(regexp = "^[1-5]$", message = "任职状态必须是1-5之间的数字")
|
||||
private String cadreStatus;
|
||||
|
||||
/**
|
||||
* 是否兼职:0-否,1-是
|
||||
*/
|
||||
private Boolean isConcurrent;
|
||||
|
||||
/**
|
||||
* 兼任职务列表(逗号分隔)
|
||||
*/
|
||||
@Size(max = 200, message = "兼任职务列表长度不能超过200个字符")
|
||||
private String concurrentPositions;
|
||||
|
||||
/**
|
||||
* 任命人ID,关联sys_user.id
|
||||
*/
|
||||
private Long appointerId;
|
||||
|
||||
/**
|
||||
* 任命人姓名
|
||||
*/
|
||||
@Size(max = 50, message = "任命人姓名长度不能超过50个字符")
|
||||
private String appointerName;
|
||||
|
||||
/**
|
||||
* 任命原因
|
||||
*/
|
||||
@Size(max = 200, message = "任命原因长度不能超过200个字符")
|
||||
private String appointmentReason;
|
||||
|
||||
/**
|
||||
* 任命文件号
|
||||
*/
|
||||
@Size(max = 200, message = "任命文件号长度不能超过200个字符")
|
||||
private String appointmentDocument;
|
||||
|
||||
/**
|
||||
* 离任日期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date dismissalDate;
|
||||
|
||||
/**
|
||||
* 离任原因
|
||||
*/
|
||||
@Size(max = 200, message = "离任原因长度不能超过200个字符")
|
||||
private String dismissalReason;
|
||||
|
||||
/**
|
||||
* 免职人ID,关联sys_user.id
|
||||
*/
|
||||
private Long dismisserId;
|
||||
|
||||
/**
|
||||
* 免职人姓名
|
||||
*/
|
||||
@Size(max = 50, message = "免职人姓名长度不能超过50个字符")
|
||||
private String dismisserName;
|
||||
|
||||
/**
|
||||
* 免职文件号
|
||||
*/
|
||||
@Size(max = 200, message = "免职文件号长度不能超过200个字符")
|
||||
private String dismissalDocument;
|
||||
|
||||
/**
|
||||
* 工作表现:excellent-优秀,good-良好,average-一般,poor-较差
|
||||
*/
|
||||
@Pattern(regexp = "^(excellent|good|average|poor)$", message = "工作表现必须是excellent、good、average、poor中的一个")
|
||||
private String workPerformance;
|
||||
|
||||
/**
|
||||
* 表现评分(0-10分)
|
||||
*/
|
||||
@DecimalMin(value = "0.0", message = "表现评分不能小于0分")
|
||||
@DecimalMax(value = "10.0", message = "表现评分不能大于10分")
|
||||
private BigDecimal performanceScore;
|
||||
|
||||
/**
|
||||
* 工作总结
|
||||
*/
|
||||
private String workSummary;
|
||||
|
||||
/**
|
||||
* 评价意见
|
||||
*/
|
||||
private String evaluationComments;
|
||||
|
||||
/**
|
||||
* 权限配置(JSON格式)
|
||||
*/
|
||||
private String permissions;
|
||||
|
||||
/**
|
||||
* 系统角色列表(逗号分隔)
|
||||
*/
|
||||
@Size(max = 200, message = "系统角色列表长度不能超过200个字符")
|
||||
private String systemRoles;
|
||||
|
||||
/**
|
||||
* 访问级别:1-基础,2-中级,3-高级
|
||||
*/
|
||||
@Min(value = 1, message = "访问级别最小值为1")
|
||||
@Max(value = 3, message = "访问级别最大值为3")
|
||||
private Integer accessLevel;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
@Size(max = 20, message = "联系电话长度不能超过20个字符")
|
||||
@Pattern(regexp = "^[0-9+-]*$", message = "联系电话格式不正确")
|
||||
private String contactPhone;
|
||||
|
||||
/**
|
||||
* 联系邮箱
|
||||
*/
|
||||
@Size(max = 100, message = "联系邮箱长度不能超过100个字符")
|
||||
@Email(message = "联系邮箱格式不正确")
|
||||
private String contactEmail;
|
||||
|
||||
/**
|
||||
* 紧急联系人
|
||||
*/
|
||||
@Size(max = 50, message = "紧急联系人长度不能超过50个字符")
|
||||
private String emergencyContact;
|
||||
|
||||
/**
|
||||
* 紧急联系电话
|
||||
*/
|
||||
@Size(max = 20, message = "紧急联系电话长度不能超过20个字符")
|
||||
@Pattern(regexp = "^[0-9+-]*$", message = "紧急联系电话格式不正确")
|
||||
private String emergencyPhone;
|
||||
|
||||
/**
|
||||
* 工作计划
|
||||
*/
|
||||
private String workPlan;
|
||||
|
||||
/**
|
||||
* 主要成就
|
||||
*/
|
||||
private String achievements;
|
||||
|
||||
/**
|
||||
* 培训记录(JSON格式)
|
||||
*/
|
||||
private String trainingRecords;
|
||||
|
||||
/**
|
||||
* 会议出席记录(JSON格式)
|
||||
*/
|
||||
private String meetingAttendance;
|
||||
|
||||
/**
|
||||
* 排序顺序
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 备注信息
|
||||
*/
|
||||
@Size(max = 500, message = "备注信息长度不能超过500个字符")
|
||||
private String remark;
|
||||
|
||||
// 以下是从基类继承的字段,这里显式声明用于MyBatis映射
|
||||
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;
|
||||
|
||||
// 手动添加所有缺失的getter和setter方法
|
||||
public Long getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getClassId() {
|
||||
return this.classId;
|
||||
}
|
||||
|
||||
public void setClassId(Long classId) {
|
||||
this.classId = classId;
|
||||
}
|
||||
|
||||
public Long getStudentId() {
|
||||
return this.studentId;
|
||||
}
|
||||
|
||||
public void setStudentId(Long studentId) {
|
||||
this.studentId = studentId;
|
||||
}
|
||||
|
||||
public String getStudentNo() {
|
||||
return this.studentNo;
|
||||
}
|
||||
|
||||
public void setStudentNo(String studentNo) {
|
||||
this.studentNo = studentNo;
|
||||
}
|
||||
|
||||
public String getStudentName() {
|
||||
return this.studentName;
|
||||
}
|
||||
|
||||
public void setStudentName(String studentName) {
|
||||
this.studentName = studentName;
|
||||
}
|
||||
|
||||
public String getPositionCode() {
|
||||
return this.positionCode;
|
||||
}
|
||||
|
||||
public void setPositionCode(String positionCode) {
|
||||
this.positionCode = positionCode;
|
||||
}
|
||||
|
||||
public String getPositionName() {
|
||||
return this.positionName;
|
||||
}
|
||||
|
||||
public void setPositionName(String positionName) {
|
||||
this.positionName = positionName;
|
||||
}
|
||||
|
||||
public Integer getPositionLevel() {
|
||||
return this.positionLevel;
|
||||
}
|
||||
|
||||
public void setPositionLevel(Integer positionLevel) {
|
||||
this.positionLevel = positionLevel;
|
||||
}
|
||||
|
||||
public String getPositionCategory() {
|
||||
return this.positionCategory;
|
||||
}
|
||||
|
||||
public void setPositionCategory(String positionCategory) {
|
||||
this.positionCategory = positionCategory;
|
||||
}
|
||||
|
||||
public Boolean getIsCurrent() {
|
||||
return this.isCurrent;
|
||||
}
|
||||
|
||||
public void setIsCurrent(Boolean isCurrent) {
|
||||
this.isCurrent = isCurrent;
|
||||
}
|
||||
|
||||
public String getCadreStatus() {
|
||||
return this.cadreStatus;
|
||||
}
|
||||
|
||||
public void setCadreStatus(String cadreStatus) {
|
||||
this.cadreStatus = cadreStatus;
|
||||
}
|
||||
|
||||
public Boolean getIsConcurrent() {
|
||||
return this.isConcurrent;
|
||||
}
|
||||
|
||||
public void setIsConcurrent(Boolean isConcurrent) {
|
||||
this.isConcurrent = isConcurrent;
|
||||
}
|
||||
|
||||
public String getWorkPerformance() {
|
||||
return this.workPerformance;
|
||||
}
|
||||
|
||||
public void setWorkPerformance(String workPerformance) {
|
||||
this.workPerformance = workPerformance;
|
||||
}
|
||||
|
||||
public Date getAppointmentDate() {
|
||||
return this.appointmentDate;
|
||||
}
|
||||
|
||||
public void setAppointmentDate(Date appointmentDate) {
|
||||
this.appointmentDate = appointmentDate;
|
||||
}
|
||||
|
||||
public Date getTermStartDate() {
|
||||
return this.termStartDate;
|
||||
}
|
||||
|
||||
public void setTermStartDate(Date termStartDate) {
|
||||
this.termStartDate = termStartDate;
|
||||
}
|
||||
|
||||
public Date getTermEndDate() {
|
||||
return this.termEndDate;
|
||||
}
|
||||
|
||||
public void setTermEndDate(Date termEndDate) {
|
||||
this.termEndDate = termEndDate;
|
||||
}
|
||||
|
||||
public Date getDismissalDate() {
|
||||
return this.dismissalDate;
|
||||
}
|
||||
|
||||
public void setDismissalDate(Date dismissalDate) {
|
||||
this.dismissalDate = dismissalDate;
|
||||
}
|
||||
|
||||
public String getDismissalReason() {
|
||||
return this.dismissalReason;
|
||||
}
|
||||
|
||||
public void setDismissalReason(String dismissalReason) {
|
||||
this.dismissalReason = dismissalReason;
|
||||
}
|
||||
|
||||
public String getRemark() {
|
||||
return this.remark;
|
||||
}
|
||||
|
||||
public void setRemark(String remark) {
|
||||
this.remark = remark;
|
||||
}
|
||||
|
||||
// 手动添加缺失的setter方法,解决编译错误
|
||||
public void setDismisserId(Long dismisserId) {
|
||||
this.dismisserId = dismisserId;
|
||||
}
|
||||
|
||||
public void setDismisserName(String dismisserName) {
|
||||
this.dismisserName = dismisserName;
|
||||
}
|
||||
|
||||
public void setTermDuration(Integer termDuration) {
|
||||
this.termDuration = termDuration;
|
||||
}
|
||||
|
||||
}
|
||||
-297
@@ -1,297 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 班级信息对象 xg_class_info
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-14
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_class_info")
|
||||
public class XgClassInfo extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 班级代码,唯一标识
|
||||
*/
|
||||
private String classCode;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 班级类型:regular-普通班级,honor-荣誉班级,experimental-实验班级,special-特殊班级
|
||||
*/
|
||||
private String classType;
|
||||
|
||||
/**
|
||||
* 年级:如2023级
|
||||
*/
|
||||
private String grade;
|
||||
|
||||
/**
|
||||
* 入学年份
|
||||
*/
|
||||
private Integer enrollmentYear;
|
||||
|
||||
/**
|
||||
* 毕业年份
|
||||
*/
|
||||
private Integer graduationYear;
|
||||
|
||||
/**
|
||||
* 专业代码
|
||||
*/
|
||||
private String majorCode;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 学院代码
|
||||
*/
|
||||
private String collegeCode;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 辅导员ID,关联sys_user.id
|
||||
*/
|
||||
private Long counselorId;
|
||||
|
||||
/**
|
||||
* 辅导员姓名
|
||||
*/
|
||||
private String counselorName;
|
||||
|
||||
/**
|
||||
* 班主任ID,关联sys_user.id
|
||||
*/
|
||||
private Long classTeacherId;
|
||||
|
||||
/**
|
||||
* 班主任姓名
|
||||
*/
|
||||
private String classTeacherName;
|
||||
|
||||
/**
|
||||
* 班级状态:1-正常,2-停招,3-已毕业,4-已解散
|
||||
*/
|
||||
private String classStatus;
|
||||
|
||||
/**
|
||||
* 当前学生数量
|
||||
*/
|
||||
private Integer currentStudentCount;
|
||||
|
||||
/**
|
||||
* 最大学生数量
|
||||
*/
|
||||
private Integer maxStudentCount;
|
||||
|
||||
/**
|
||||
* 男生人数
|
||||
*/
|
||||
private Integer maleCount;
|
||||
|
||||
/**
|
||||
* 女生人数
|
||||
*/
|
||||
private Integer femaleCount;
|
||||
|
||||
/**
|
||||
* 班级描述
|
||||
*/
|
||||
private String classDescription;
|
||||
|
||||
/**
|
||||
* 班级备注
|
||||
*/
|
||||
private String classNotes;
|
||||
|
||||
/**
|
||||
* 扩展字段1
|
||||
*/
|
||||
private String extField1;
|
||||
|
||||
/**
|
||||
* 扩展字段2
|
||||
*/
|
||||
private String extField2;
|
||||
|
||||
/**
|
||||
* 扩展字段3
|
||||
*/
|
||||
private String extField3;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 获取主键ID
|
||||
*/
|
||||
public Long getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级代码
|
||||
*/
|
||||
public String getClassCode() {
|
||||
return this.classCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级名称
|
||||
*/
|
||||
public String getClassName() {
|
||||
return this.className;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取入学年份
|
||||
*/
|
||||
public Integer getEnrollmentYear() {
|
||||
return this.enrollmentYear;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取专业代码
|
||||
*/
|
||||
public String getMajorCode() {
|
||||
return this.majorCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取专业名称
|
||||
*/
|
||||
public String getMajorName() {
|
||||
return this.majorName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学院代码
|
||||
*/
|
||||
public String getCollegeCode() {
|
||||
return this.collegeCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学院名称
|
||||
*/
|
||||
public String getCollegeName() {
|
||||
return this.collegeName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取辅导员ID
|
||||
*/
|
||||
public Long getCounselorId() {
|
||||
return this.counselorId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取辅导员姓名
|
||||
*/
|
||||
public String getCounselorName() {
|
||||
return this.counselorName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任ID
|
||||
*/
|
||||
public Long getClassTeacherId() {
|
||||
return this.classTeacherId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任姓名
|
||||
*/
|
||||
public String getClassTeacherName() {
|
||||
return this.classTeacherName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级状态
|
||||
*/
|
||||
public String getClassStatus() {
|
||||
return this.classStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置班级状态
|
||||
*/
|
||||
public void setClassStatus(String classStatus) {
|
||||
this.classStatus = classStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前学生数
|
||||
*/
|
||||
public Integer getCurrentStudentCount() {
|
||||
return this.currentStudentCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前学生数
|
||||
*/
|
||||
public void setCurrentStudentCount(Integer currentStudentCount) {
|
||||
this.currentStudentCount = currentStudentCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取男生数量
|
||||
*/
|
||||
public Integer getMaleCount() {
|
||||
return this.maleCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置男生数量
|
||||
*/
|
||||
public void setMaleCount(Integer maleCount) {
|
||||
this.maleCount = maleCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取女生数量
|
||||
*/
|
||||
public Integer getFemaleCount() {
|
||||
return this.femaleCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置女生数量
|
||||
*/
|
||||
public void setFemaleCount(Integer femaleCount) {
|
||||
this.femaleCount = femaleCount;
|
||||
}
|
||||
|
||||
}
|
||||
-74
@@ -1,74 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 班级学生关系对象 xg_class_student
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-14
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_class_student")
|
||||
public class XgClassStudent extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 班级ID,关联xg_class_info.id
|
||||
*/
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 学生ID,关联xg_student_info.id
|
||||
*/
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学生学号
|
||||
*/
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 班级职务:班长、副班长、学习委员、生活委员等
|
||||
*/
|
||||
private String classPosition;
|
||||
|
||||
/**
|
||||
* 加入班级时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date joinTime;
|
||||
|
||||
/**
|
||||
* 离开班级时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date leaveTime;
|
||||
|
||||
/**
|
||||
* 关系状态:1-在班,2-转出,3-转入,4-休学,5-退学,6-毕业
|
||||
*/
|
||||
private String relationStatus;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-494
@@ -1,494 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 信息采集批次对象 xg_collection_batch
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_collection_batch")
|
||||
public class XgCollectionBatch extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 批次ID(业务主键)
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 批次编码
|
||||
*/
|
||||
private String batchCode;
|
||||
|
||||
/**
|
||||
* 批次名称
|
||||
*/
|
||||
private String batchName;
|
||||
|
||||
/**
|
||||
* 批次类型:regular-常规,special-专项,urgent-紧急
|
||||
*/
|
||||
private String batchType;
|
||||
|
||||
/**
|
||||
* 学年
|
||||
*/
|
||||
private String academicYear;
|
||||
|
||||
/**
|
||||
* 学期
|
||||
*/
|
||||
private String semester;
|
||||
|
||||
/**
|
||||
* 关联学年ID
|
||||
*/
|
||||
private Long academicYearId;
|
||||
|
||||
/**
|
||||
* 关联学期ID
|
||||
*/
|
||||
private Long semesterId;
|
||||
|
||||
/**
|
||||
* 关联业务期ID
|
||||
*/
|
||||
private Long businessPeriodId;
|
||||
|
||||
/**
|
||||
* 目标范围:all-全部,college-学院,class-班级,student-个人
|
||||
*/
|
||||
private String targetScope;
|
||||
|
||||
/**
|
||||
* 目标ID列表(JSON格式),当target_scope不为all时使用
|
||||
*/
|
||||
private String targetIds;
|
||||
|
||||
/**
|
||||
* 批次开始时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/**
|
||||
* 批次结束时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
/**
|
||||
* 实际结束时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime actualEndTime;
|
||||
|
||||
/**
|
||||
* 批次状态:DRAFT-草稿,ACTIVE-进行中,COMPLETED-已完成,CANCELLED-已取消
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 发布状态:UNPUBLISHED-未发布,PUBLISHED-已发布
|
||||
*/
|
||||
private String publishStatus;
|
||||
|
||||
/**
|
||||
* 是否已发布:0-否,1-是
|
||||
*/
|
||||
private Boolean isPublished;
|
||||
|
||||
/**
|
||||
* 发布时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
/**
|
||||
* 是否自动提醒:0-否,1-是
|
||||
*/
|
||||
private Boolean autoRemind;
|
||||
|
||||
/**
|
||||
* 提醒天数(结束前几天提醒)
|
||||
*/
|
||||
private Integer remindDays;
|
||||
|
||||
/**
|
||||
* 批次描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 通知内容
|
||||
*/
|
||||
private String noticeContent;
|
||||
|
||||
/**
|
||||
* 完成率
|
||||
*/
|
||||
private BigDecimal completionRate;
|
||||
|
||||
/**
|
||||
* 总人数
|
||||
*/
|
||||
private Integer totalCount;
|
||||
|
||||
/**
|
||||
* 已完成人数
|
||||
*/
|
||||
private Integer completedCount;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 是否允许编辑:0-否,1-是
|
||||
*/
|
||||
private Integer allowEdit;
|
||||
|
||||
// ==================== 统计字段 ====================
|
||||
|
||||
/**
|
||||
* 总学生数
|
||||
*/
|
||||
private Integer totalStudents;
|
||||
|
||||
/**
|
||||
* 已提交学生数
|
||||
*/
|
||||
private Integer submittedStudents;
|
||||
|
||||
/**
|
||||
* 已通过学生数
|
||||
*/
|
||||
private Integer approvedStudents;
|
||||
|
||||
/**
|
||||
* 已拒绝学生数
|
||||
*/
|
||||
private Integer rejectedStudents;
|
||||
|
||||
// ==================== 审核配置字段 ====================
|
||||
|
||||
/**
|
||||
* 是否需要审核:0-否,1-是
|
||||
*/
|
||||
private Boolean requireApproval;
|
||||
|
||||
/**
|
||||
* 是否自动审核:0-否,1-是
|
||||
*/
|
||||
private Boolean autoApprove;
|
||||
|
||||
/**
|
||||
* 是否通知学生:0-否,1-是
|
||||
*/
|
||||
private Boolean notifyStudents;
|
||||
|
||||
/**
|
||||
* 提醒天数(结束前几天提醒)
|
||||
*/
|
||||
private Integer reminderDays;
|
||||
|
||||
// ==================== 兼容方法 ====================
|
||||
|
||||
/**
|
||||
* 批次状态(别名,与status保持一致)
|
||||
*/
|
||||
public String getBatchStatus() {
|
||||
return this.status;
|
||||
}
|
||||
|
||||
public void setBatchStatus(String batchStatus) {
|
||||
this.status = batchStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取批次ID(如果batchId为null,返回主键id)
|
||||
*/
|
||||
public Long getBatchId() {
|
||||
return this.batchId != null ? this.batchId : this.id;
|
||||
}
|
||||
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
if (this.id == null) {
|
||||
this.id = batchId;
|
||||
}
|
||||
}
|
||||
|
||||
// ==================== 手动添加的 getter/setter 方法 ====================
|
||||
|
||||
/**
|
||||
* 获取批次编码
|
||||
*/
|
||||
public String getBatchCode() {
|
||||
return this.batchCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取批次名称
|
||||
*/
|
||||
public String getBatchName() {
|
||||
return this.batchName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取批次类型
|
||||
*/
|
||||
public String getBatchType() {
|
||||
return this.batchType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学年
|
||||
*/
|
||||
public String getAcademicYear() {
|
||||
return this.academicYear;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学期
|
||||
*/
|
||||
public String getSemester() {
|
||||
return this.semester;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取发布状态
|
||||
*/
|
||||
public String getPublishStatus() {
|
||||
return this.publishStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置发布状态
|
||||
*/
|
||||
public void setPublishStatus(String publishStatus) {
|
||||
this.publishStatus = publishStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取开始时间
|
||||
*/
|
||||
public LocalDateTime getStartTime() {
|
||||
return this.startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取结束时间
|
||||
*/
|
||||
public LocalDateTime getEndTime() {
|
||||
return this.endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置发布时间
|
||||
*/
|
||||
public void setPublishTime(LocalDateTime publishTime) {
|
||||
this.publishTime = publishTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置实际结束时间
|
||||
*/
|
||||
public void setActualEndTime(LocalDateTime actualEndTime) {
|
||||
this.actualEndTime = actualEndTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置总学生数
|
||||
*/
|
||||
public void setTotalStudents(Integer totalStudents) {
|
||||
this.totalStudents = totalStudents;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置已提交学生数
|
||||
*/
|
||||
public void setSubmittedStudents(Integer submittedStudents) {
|
||||
this.submittedStudents = submittedStudents;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置已通过学生数
|
||||
*/
|
||||
public void setApprovedStudents(Integer approvedStudents) {
|
||||
this.approvedStudents = approvedStudents;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置已拒绝学生数
|
||||
*/
|
||||
public void setRejectedStudents(Integer rejectedStudents) {
|
||||
this.rejectedStudents = rejectedStudents;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置完成率
|
||||
*/
|
||||
public void setCompletionRate(Double completionRate) {
|
||||
if (completionRate != null) {
|
||||
this.completionRate = BigDecimal.valueOf(completionRate);
|
||||
} else {
|
||||
this.completionRate = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否允许编辑
|
||||
*/
|
||||
public Integer getAllowEdit() {
|
||||
return this.allowEdit;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否需要审核
|
||||
*/
|
||||
public Boolean getRequireApproval() {
|
||||
return this.requireApproval;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否自动审核
|
||||
*/
|
||||
public Boolean getAutoApprove() {
|
||||
return this.autoApprove;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否通知学生
|
||||
*/
|
||||
public Boolean getNotifyStudents() {
|
||||
return this.notifyStudents;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取提醒天数
|
||||
*/
|
||||
public Integer getReminderDays() {
|
||||
return this.reminderDays;
|
||||
}
|
||||
|
||||
// ==================== 剩余的 setter 方法 ====================
|
||||
|
||||
/**
|
||||
* 设置批次编码
|
||||
*/
|
||||
public void setBatchCode(String batchCode) {
|
||||
this.batchCode = batchCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置批次名称
|
||||
*/
|
||||
public void setBatchName(String batchName) {
|
||||
this.batchName = batchName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置批次类型
|
||||
*/
|
||||
public void setBatchType(String batchType) {
|
||||
this.batchType = batchType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置学年
|
||||
*/
|
||||
public void setAcademicYear(String academicYear) {
|
||||
this.academicYear = academicYear;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置学期
|
||||
*/
|
||||
public void setSemester(String semester) {
|
||||
this.semester = semester;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置描述
|
||||
*/
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置开始时间
|
||||
*/
|
||||
public void setStartTime(LocalDateTime startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置结束时间
|
||||
*/
|
||||
public void setEndTime(LocalDateTime endTime) {
|
||||
this.endTime = endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否允许编辑
|
||||
*/
|
||||
public void setAllowEdit(Integer allowEdit) {
|
||||
this.allowEdit = allowEdit;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否需要审核
|
||||
*/
|
||||
public void setRequireApproval(Boolean requireApproval) {
|
||||
this.requireApproval = requireApproval;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否自动审核
|
||||
*/
|
||||
public void setAutoApprove(Boolean autoApprove) {
|
||||
this.autoApprove = autoApprove;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否通知学生
|
||||
*/
|
||||
public void setNotifyStudents(Boolean notifyStudents) {
|
||||
this.notifyStudents = notifyStudents;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置提醒天数
|
||||
*/
|
||||
public void setReminderDays(Integer reminderDays) {
|
||||
this.reminderDays = reminderDays;
|
||||
}
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 数据字典对象 xg_dict_data
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_dict_data")
|
||||
public class XgDictData extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 字典类型
|
||||
*/
|
||||
private String dictType;
|
||||
|
||||
/**
|
||||
* 字典标签
|
||||
*/
|
||||
private String dictLabel;
|
||||
|
||||
/**
|
||||
* 字典键值
|
||||
*/
|
||||
private String dictValue;
|
||||
|
||||
/**
|
||||
* 字典排序
|
||||
*/
|
||||
private Integer dictSort;
|
||||
|
||||
/**
|
||||
* 样式属性
|
||||
*/
|
||||
private String cssClass;
|
||||
|
||||
/**
|
||||
* 表格回显样式
|
||||
*/
|
||||
private String listClass;
|
||||
|
||||
/**
|
||||
* 是否默认:0-否,1-是
|
||||
*/
|
||||
private Boolean isDefault;
|
||||
|
||||
/**
|
||||
* 状态:0-正常,1-停用
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 通知公告对象 xg_notice
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_notice")
|
||||
public class XgNotice extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 通知编码
|
||||
*/
|
||||
private String noticeCode;
|
||||
|
||||
/**
|
||||
* 通知标题
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 通知内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 通知类型:batch-批次通知,audit-审核通知,remind-提醒通知,system-系统通知
|
||||
*/
|
||||
private String noticeType;
|
||||
|
||||
/**
|
||||
* 优先级:low-低,normal-普通,high-高,urgent-紧急
|
||||
*/
|
||||
private String priority;
|
||||
|
||||
/**
|
||||
* 目标类型:all-全部,role-角色,user-用户,college-学院,class-班级
|
||||
*/
|
||||
private String targetType;
|
||||
|
||||
/**
|
||||
* 目标ID列表(JSON格式)
|
||||
*/
|
||||
private String targetIds;
|
||||
|
||||
/**
|
||||
* 关联ID(如批次ID、审核ID等)
|
||||
*/
|
||||
private Long relatedId;
|
||||
|
||||
/**
|
||||
* 关联类型:batch-批次,audit-审核,student-学生
|
||||
*/
|
||||
private String relatedType;
|
||||
|
||||
/**
|
||||
* 发布时间
|
||||
*/
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
/**
|
||||
* 过期时间
|
||||
*/
|
||||
private LocalDateTime expireTime;
|
||||
|
||||
/**
|
||||
* 是否已发布:0-否,1-是
|
||||
*/
|
||||
private Boolean isPublished;
|
||||
|
||||
/**
|
||||
* 是否置顶:0-否,1-是
|
||||
*/
|
||||
private Boolean isTop;
|
||||
|
||||
/**
|
||||
* 阅读次数
|
||||
*/
|
||||
private Integer readCount;
|
||||
|
||||
/**
|
||||
* 附件URL列表(JSON格式)
|
||||
*/
|
||||
private String attachmentUrls;
|
||||
|
||||
/**
|
||||
* 是否自动发送:0-否,1-是
|
||||
*/
|
||||
private Boolean autoSend;
|
||||
|
||||
/**
|
||||
* 发送渠道:web-网页,email-邮件,sms-短信,wechat-微信
|
||||
*/
|
||||
private String sendChannels;
|
||||
|
||||
/**
|
||||
* 状态:draft-草稿,published-已发布,expired-已过期,cancelled-已取消
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-170
@@ -1,170 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 通知阅读记录对象 xg_notice_read
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_notice_read")
|
||||
public class XgNoticeRead extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 通知ID,关联xg_notice.id
|
||||
*/
|
||||
private Long noticeId;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户姓名
|
||||
*/
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 用户类型
|
||||
*/
|
||||
private String userType;
|
||||
|
||||
/**
|
||||
* 阅读时间
|
||||
*/
|
||||
private LocalDateTime readTime;
|
||||
|
||||
/**
|
||||
* 阅读时长(秒)
|
||||
*/
|
||||
private Integer readDuration;
|
||||
|
||||
/**
|
||||
* IP地址
|
||||
*/
|
||||
private String ipAddress;
|
||||
|
||||
/**
|
||||
* 用户代理
|
||||
*/
|
||||
private String userAgent;
|
||||
|
||||
/**
|
||||
* 设备类型:pc-电脑,mobile-手机,tablet-平板
|
||||
*/
|
||||
private String deviceType;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
// 手动添加getter/setter方法以解决Lombok问题
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getNoticeId() {
|
||||
return noticeId;
|
||||
}
|
||||
|
||||
public void setNoticeId(Long noticeId) {
|
||||
this.noticeId = noticeId;
|
||||
}
|
||||
|
||||
public Long getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(Long userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getUserName() {
|
||||
return userName;
|
||||
}
|
||||
|
||||
public void setUserName(String userName) {
|
||||
this.userName = userName;
|
||||
}
|
||||
|
||||
public String getUserType() {
|
||||
return userType;
|
||||
}
|
||||
|
||||
public void setUserType(String userType) {
|
||||
this.userType = userType;
|
||||
}
|
||||
|
||||
public LocalDateTime getReadTime() {
|
||||
return readTime;
|
||||
}
|
||||
|
||||
public void setReadTime(LocalDateTime readTime) {
|
||||
this.readTime = readTime;
|
||||
}
|
||||
|
||||
public Integer getReadDuration() {
|
||||
return readDuration;
|
||||
}
|
||||
|
||||
public void setReadDuration(Integer readDuration) {
|
||||
this.readDuration = readDuration;
|
||||
}
|
||||
|
||||
public String getIpAddress() {
|
||||
return ipAddress;
|
||||
}
|
||||
|
||||
public void setIpAddress(String ipAddress) {
|
||||
this.ipAddress = ipAddress;
|
||||
}
|
||||
|
||||
public String getUserAgent() {
|
||||
return userAgent;
|
||||
}
|
||||
|
||||
public void setUserAgent(String userAgent) {
|
||||
this.userAgent = userAgent;
|
||||
}
|
||||
|
||||
public String getDeviceType() {
|
||||
return deviceType;
|
||||
}
|
||||
|
||||
public void setDeviceType(String deviceType) {
|
||||
this.deviceType = deviceType;
|
||||
}
|
||||
|
||||
public String getRemark() {
|
||||
return remark;
|
||||
}
|
||||
|
||||
public void setRemark(String remark) {
|
||||
this.remark = remark;
|
||||
}
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 学期管理对象 xg_semester
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_semester")
|
||||
public class XgSemester extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 学年ID,关联xg_academic_year.id
|
||||
*/
|
||||
private Long academicYearId;
|
||||
|
||||
/**
|
||||
* 学期编码,如2024-2025-1
|
||||
*/
|
||||
private String semesterCode;
|
||||
|
||||
/**
|
||||
* 学期名称,如2024-2025学年第一学期
|
||||
*/
|
||||
private String semesterName;
|
||||
|
||||
/**
|
||||
* 学期类型:first-第一学期,second-第二学期,summer-暑期
|
||||
*/
|
||||
private String semesterType;
|
||||
|
||||
/**
|
||||
* 学期开始日期
|
||||
*/
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 学期结束日期
|
||||
*/
|
||||
private LocalDate endDate;
|
||||
|
||||
/**
|
||||
* 是否当前学期:0-否,1-是
|
||||
*/
|
||||
private Boolean isCurrent;
|
||||
|
||||
/**
|
||||
* 状态:active-有效,inactive-无效
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 学期描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-333
@@ -1,333 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 学生信息对象 xg_student_info
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_student_info")
|
||||
public class XgStudentInfo extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 性别:M-男,F-女
|
||||
*/
|
||||
private String gender;
|
||||
|
||||
/**
|
||||
* 出生日期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate birthDate;
|
||||
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
private String idCard;
|
||||
|
||||
/**
|
||||
* 民族
|
||||
*/
|
||||
private String nation;
|
||||
|
||||
/**
|
||||
* 政治面貌
|
||||
*/
|
||||
private String politicalStatus;
|
||||
|
||||
/**
|
||||
* 宗教信仰
|
||||
*/
|
||||
private String religion;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 邮箱
|
||||
*/
|
||||
private String email;
|
||||
|
||||
/**
|
||||
* 家庭地址
|
||||
*/
|
||||
private String homeAddress;
|
||||
|
||||
/**
|
||||
* 邮政编码
|
||||
*/
|
||||
private String postalCode;
|
||||
|
||||
/**
|
||||
* 紧急联系人
|
||||
*/
|
||||
private String emergencyContact;
|
||||
|
||||
/**
|
||||
* 紧急联系电话
|
||||
*/
|
||||
private String emergencyPhone;
|
||||
|
||||
/**
|
||||
* 身高(厘米)
|
||||
*/
|
||||
private BigDecimal height;
|
||||
|
||||
/**
|
||||
* 体重(公斤)
|
||||
*/
|
||||
private BigDecimal weight;
|
||||
|
||||
/**
|
||||
* 血型
|
||||
*/
|
||||
private String bloodType;
|
||||
|
||||
/**
|
||||
* 健康状况
|
||||
*/
|
||||
private String healthStatus;
|
||||
|
||||
/**
|
||||
* 银行卡号
|
||||
*/
|
||||
private String bankCard;
|
||||
|
||||
/**
|
||||
* 开户行
|
||||
*/
|
||||
private String bankName;
|
||||
|
||||
/**
|
||||
* 持卡人姓名
|
||||
*/
|
||||
private String cardHolder;
|
||||
|
||||
/**
|
||||
* 照片URL
|
||||
*/
|
||||
private String photoUrl;
|
||||
|
||||
/**
|
||||
* 特长
|
||||
*/
|
||||
private String specialties;
|
||||
|
||||
/**
|
||||
* 学院ID
|
||||
*/
|
||||
private Long collegeId;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 专业
|
||||
*/
|
||||
private String major;
|
||||
|
||||
/**
|
||||
* 班级ID
|
||||
*/
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 年级
|
||||
*/
|
||||
private String grade;
|
||||
|
||||
/**
|
||||
* 入学日期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate enrollmentDate;
|
||||
|
||||
/**
|
||||
* 学制(年)
|
||||
*/
|
||||
private Integer educationLength;
|
||||
|
||||
/**
|
||||
* 学籍状态:active-在读,graduated-已毕业,dropout-退学,suspended-休学
|
||||
*/
|
||||
private String studentStatus;
|
||||
|
||||
/**
|
||||
* 培养方式:full_time-全日制,part_time-非全日制
|
||||
*/
|
||||
private String trainingMode;
|
||||
|
||||
/**
|
||||
* 当前批次ID
|
||||
*/
|
||||
private Long currentBatchId;
|
||||
|
||||
/**
|
||||
* 信息状态:draft-草稿,submitted-已提交,approved-已审核
|
||||
*/
|
||||
private String infoStatus;
|
||||
|
||||
/**
|
||||
* 最后提交时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime lastSubmitTime;
|
||||
|
||||
/**
|
||||
* 最后审核时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime lastAuditTime;
|
||||
|
||||
/**
|
||||
* 审核意见
|
||||
*/
|
||||
private String auditComment;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private Integer version;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
// 手动添加缺失的getter方法,解决编译错误
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getStudentNo() {
|
||||
return studentNo;
|
||||
}
|
||||
|
||||
public String getClassCode() {
|
||||
return String.valueOf(classId);
|
||||
}
|
||||
|
||||
public String getClassName() {
|
||||
return className;
|
||||
}
|
||||
|
||||
public String getCollegeCode() {
|
||||
return String.valueOf(collegeId);
|
||||
}
|
||||
|
||||
public String getCollegeName() {
|
||||
return collegeName;
|
||||
}
|
||||
|
||||
public void setSubmissionTime(LocalDateTime submissionTime) {
|
||||
this.lastSubmitTime = submissionTime;
|
||||
}
|
||||
|
||||
// 手动添加审批相关的setter方法以确保编译通过
|
||||
public void setSubmissionStatus(String submissionStatus) {
|
||||
// 如果字段不存在,先添加字段
|
||||
// this.submissionStatus = submissionStatus;
|
||||
}
|
||||
|
||||
public void setApprovalTime(java.time.LocalDateTime approvalTime) {
|
||||
// 如果字段不存在,先添加字段
|
||||
// this.approvalTime = approvalTime;
|
||||
}
|
||||
|
||||
public void setApprovalBy(Long approvalBy) {
|
||||
// 如果字段不存在,先添加字段
|
||||
// this.approvalBy = approvalBy;
|
||||
}
|
||||
|
||||
public void setApprovalComments(String approvalComments) {
|
||||
// 如果字段不存在,先添加字段
|
||||
// this.approvalComments = approvalComments;
|
||||
}
|
||||
|
||||
public String getIdCard() {
|
||||
return idCard;
|
||||
}
|
||||
|
||||
public void setIdCard(String idCard) {
|
||||
this.idCard = idCard;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public String getGender() {
|
||||
return gender;
|
||||
}
|
||||
|
||||
public void setGender(String gender) {
|
||||
this.gender = gender;
|
||||
}
|
||||
|
||||
public String getStudentStatus() {
|
||||
return studentStatus;
|
||||
}
|
||||
|
||||
public void setStudentStatus(String studentStatus) {
|
||||
this.studentStatus = studentStatus;
|
||||
}
|
||||
|
||||
public String getMajor() {
|
||||
return major;
|
||||
}
|
||||
|
||||
public void setMajor(String major) {
|
||||
this.major = major;
|
||||
}
|
||||
}
|
||||
-102
@@ -1,102 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 学生信息变更记录对象 xg_student_info_history
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_student_info_history")
|
||||
public class XgStudentInfoHistory extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 学生ID,关联xg_student_info.id
|
||||
*/
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 变更类型:create-新增,update-修改,delete-删除
|
||||
*/
|
||||
private String changeType;
|
||||
|
||||
/**
|
||||
* 变更字段列表(JSON格式)
|
||||
*/
|
||||
private String changeFields;
|
||||
|
||||
/**
|
||||
* 变更前数据(JSON格式)
|
||||
*/
|
||||
private String oldValues;
|
||||
|
||||
/**
|
||||
* 变更后数据(JSON格式)
|
||||
*/
|
||||
private String newValues;
|
||||
|
||||
/**
|
||||
* 变更原因
|
||||
*/
|
||||
private String changeReason;
|
||||
|
||||
/**
|
||||
* 变更时间
|
||||
*/
|
||||
private LocalDateTime changeTime;
|
||||
|
||||
/**
|
||||
* 变更人
|
||||
*/
|
||||
private Long changeBy;
|
||||
|
||||
/**
|
||||
* 变更人姓名
|
||||
*/
|
||||
private String changeByName;
|
||||
|
||||
/**
|
||||
* IP地址
|
||||
*/
|
||||
private String ipAddress;
|
||||
|
||||
/**
|
||||
* 用户代理
|
||||
*/
|
||||
private String userAgent;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private Integer version;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-76
@@ -1,76 +0,0 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 系统配置对象 xg_system_config
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_system_config")
|
||||
public class XgSystemConfig extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 配置键
|
||||
*/
|
||||
private String configKey;
|
||||
|
||||
/**
|
||||
* 配置值
|
||||
*/
|
||||
private String configValue;
|
||||
|
||||
/**
|
||||
* 配置类型:string-字符串,number-数字,boolean-布尔,json-JSON
|
||||
*/
|
||||
private String configType;
|
||||
|
||||
/**
|
||||
* 配置分组
|
||||
*/
|
||||
private String configGroup;
|
||||
|
||||
/**
|
||||
* 配置描述
|
||||
*/
|
||||
private String configDesc;
|
||||
|
||||
/**
|
||||
* 是否系统配置:0-否,1-是
|
||||
*/
|
||||
private Boolean isSystem;
|
||||
|
||||
/**
|
||||
* 是否只读:0-否,1-是
|
||||
*/
|
||||
private Boolean isReadonly;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-125
@@ -1,125 +0,0 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import org.dromara.xg.domain.XgAcademicYear;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 学年管理业务对象 xg_academic_year
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgAcademicYear.class, reverseConvertGenerate = false)
|
||||
public class XgAcademicYearBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 学年编码,如2024-2025
|
||||
*/
|
||||
@NotBlank(message = "学年编码不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 20, message = "学年编码长度不能超过20个字符")
|
||||
private String yearCode;
|
||||
|
||||
/**
|
||||
* 学年名称,如2024-2025学年
|
||||
*/
|
||||
@NotBlank(message = "学年名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 50, message = "学年名称长度不能超过50个字符")
|
||||
private String yearName;
|
||||
|
||||
/**
|
||||
* 学年开始日期
|
||||
*/
|
||||
@NotNull(message = "学年开始日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 学年结束日期
|
||||
*/
|
||||
@NotNull(message = "学年结束日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate endDate;
|
||||
|
||||
/**
|
||||
* 是否当前学年:0-否,1-是
|
||||
*/
|
||||
private Boolean isCurrent;
|
||||
|
||||
/**
|
||||
* 状态:active-有效,inactive-无效
|
||||
*/
|
||||
@Size(max = 20, message = "状态长度不能超过20个字符")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 学年描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符")
|
||||
private String remark;
|
||||
|
||||
// 手动添加缺失的getter方法,解决编译错误
|
||||
public String getYearName() {
|
||||
return yearName;
|
||||
}
|
||||
|
||||
public String getYearCode() {
|
||||
return yearCode;
|
||||
}
|
||||
|
||||
public LocalDate getStartDate() {
|
||||
return startDate;
|
||||
}
|
||||
|
||||
public LocalDate getEndDate() {
|
||||
return endDate;
|
||||
}
|
||||
|
||||
public Boolean getIsCurrent() {
|
||||
return isCurrent;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
}
|
||||
-116
@@ -1,116 +0,0 @@
|
||||
package org.dromara.xg.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 io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.time.LocalDateTime;
|
||||
import org.dromara.xg.domain.XgBatchPermission;
|
||||
|
||||
/**
|
||||
* 批次权限配置业务对象 xg_batch_permission
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgBatchPermission.class, reverseConvertGenerate = false)
|
||||
public class XgBatchPermissionBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 权限配置ID
|
||||
*/
|
||||
@NotNull(message = "权限配置ID不能为空", groups = { EditGroup.class })
|
||||
private Long permissionId;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
@NotNull(message = "批次ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 用户组类型
|
||||
*/
|
||||
@NotBlank(message = "用户组类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 50, message = "用户组类型长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String userGroupType;
|
||||
|
||||
/**
|
||||
* 用户组名称
|
||||
*/
|
||||
@NotBlank(message = "用户组名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 100, message = "用户组名称长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String userGroupName;
|
||||
|
||||
/**
|
||||
* 权限类型
|
||||
*/
|
||||
@NotBlank(message = "权限类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 50, message = "权限类型长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String permissionType;
|
||||
|
||||
/**
|
||||
* 权限范围
|
||||
*/
|
||||
@Size(max = 500, message = "权限范围长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String permissionScope;
|
||||
|
||||
/**
|
||||
* 是否可查看
|
||||
*/
|
||||
@NotNull(message = "是否可查看不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean canView;
|
||||
|
||||
/**
|
||||
* 是否可编辑
|
||||
*/
|
||||
@NotNull(message = "是否可编辑不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean canEdit;
|
||||
|
||||
/**
|
||||
* 是否可审核
|
||||
*/
|
||||
@NotNull(message = "是否可审核不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean canAudit;
|
||||
|
||||
/**
|
||||
* 是否可导出
|
||||
*/
|
||||
@NotNull(message = "是否可导出不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean canExport;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
private LocalDateTime endTime;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@Min(value = 0, message = "排序号不能小于0", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 10, message = "状态长度不能超过10个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-93
@@ -1,93 +0,0 @@
|
||||
package org.dromara.xg.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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 业务期间业务对象 XgBusinessPeriodBo
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class XgBusinessPeriodBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 业务期ID
|
||||
*/
|
||||
@NotNull(message = "业务期ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
@NotNull(message = "批次ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 业务期名称
|
||||
*/
|
||||
@NotBlank(message = "业务期名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String periodName;
|
||||
|
||||
/**
|
||||
* 业务期类型
|
||||
*/
|
||||
@NotBlank(message = "业务期类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String periodType;
|
||||
|
||||
/**
|
||||
* 目标角色
|
||||
*/
|
||||
@NotBlank(message = "目标角色不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String targetRole;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
@NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
@NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalDateTime endTime;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 是否启用
|
||||
*/
|
||||
private Boolean enabled;
|
||||
|
||||
/**
|
||||
* 查询关键字
|
||||
*/
|
||||
private String keyword;
|
||||
|
||||
/**
|
||||
* 批次名称(用于查询)
|
||||
*/
|
||||
private String batchName;
|
||||
}
|
||||
-432
@@ -1,432 +0,0 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import org.dromara.xg.domain.XgClassCadre;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 班级干部信息业务对象 xg_class_cadre
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgClassCadre.class, reverseConvertGenerate = false)
|
||||
public class XgClassCadreBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 班级ID,关联xg_class_info.id
|
||||
*/
|
||||
@NotNull(message = "班级ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 学生ID,关联xg_student_info.id
|
||||
*/
|
||||
@NotNull(message = "学生ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@NotBlank(message = "学号不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 32, message = "学号长度不能超过32个字符")
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 学生姓名(冗余字段)
|
||||
*/
|
||||
@NotBlank(message = "学生姓名不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 50, message = "学生姓名长度不能超过50个字符")
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 职务编码:monitor-班长,deputy-副班长,secretary-学习委员等
|
||||
*/
|
||||
@NotBlank(message = "职务编码不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 20, message = "职务编码长度不能超过20个字符")
|
||||
private String positionCode;
|
||||
|
||||
/**
|
||||
* 职务名称
|
||||
*/
|
||||
@NotBlank(message = "职务名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 50, message = "职务名称长度不能超过50个字符")
|
||||
private String positionName;
|
||||
|
||||
/**
|
||||
* 职务级别:1-班长,2-副班长,3-委员,9-普通成员
|
||||
*/
|
||||
@Min(value = 1, message = "职务级别最小值为1")
|
||||
@Max(value = 9, message = "职务级别最大值为9")
|
||||
private Integer positionLevel;
|
||||
|
||||
/**
|
||||
* 职务类别:class-班级干部,party-党团干部,other-其他
|
||||
*/
|
||||
@Size(max = 20, message = "职务类别长度不能超过20个字符")
|
||||
private String positionCategory;
|
||||
|
||||
/**
|
||||
* 任职日期
|
||||
*/
|
||||
@NotNull(message = "任职日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date appointmentDate;
|
||||
|
||||
/**
|
||||
* 任期开始日期
|
||||
*/
|
||||
@NotNull(message = "任期开始日期不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date termStartDate;
|
||||
|
||||
/**
|
||||
* 任期结束日期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date termEndDate;
|
||||
|
||||
/**
|
||||
* 任期时长(月)
|
||||
*/
|
||||
@Min(value = 1, message = "任期时长最少1个月")
|
||||
@Max(value = 48, message = "任期时长最多48个月")
|
||||
private Integer termDuration;
|
||||
|
||||
/**
|
||||
* 是否现任:0-否,1-是
|
||||
*/
|
||||
private Boolean isCurrent;
|
||||
|
||||
/**
|
||||
* 任职状态:1-在任,2-到期,3-辞职,4-免职,5-调任
|
||||
*/
|
||||
@Pattern(regexp = "^[1-5]$", message = "任职状态必须是1-5之间的数字")
|
||||
private String cadreStatus;
|
||||
|
||||
/**
|
||||
* 是否兼职:0-否,1-是
|
||||
*/
|
||||
private Boolean isConcurrent;
|
||||
|
||||
/**
|
||||
* 兼任职务列表(逗号分隔)
|
||||
*/
|
||||
@Size(max = 200, message = "兼任职务列表长度不能超过200个字符")
|
||||
private String concurrentPositions;
|
||||
|
||||
/**
|
||||
* 任命人ID,关联sys_user.id
|
||||
*/
|
||||
private Long appointerId;
|
||||
|
||||
/**
|
||||
* 任命人姓名
|
||||
*/
|
||||
@Size(max = 50, message = "任命人姓名长度不能超过50个字符")
|
||||
private String appointerName;
|
||||
|
||||
/**
|
||||
* 任命原因
|
||||
*/
|
||||
@Size(max = 200, message = "任命原因长度不能超过200个字符")
|
||||
private String appointmentReason;
|
||||
|
||||
/**
|
||||
* 任命文件号
|
||||
*/
|
||||
@Size(max = 200, message = "任命文件号长度不能超过200个字符")
|
||||
private String appointmentDocument;
|
||||
|
||||
/**
|
||||
* 离任日期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date dismissalDate;
|
||||
|
||||
/**
|
||||
* 离任原因
|
||||
*/
|
||||
@Size(max = 200, message = "离任原因长度不能超过200个字符")
|
||||
private String dismissalReason;
|
||||
|
||||
/**
|
||||
* 免职人ID,关联sys_user.id
|
||||
*/
|
||||
private Long dismisserId;
|
||||
|
||||
/**
|
||||
* 免职人姓名
|
||||
*/
|
||||
@Size(max = 50, message = "免职人姓名长度不能超过50个字符")
|
||||
private String dismisserName;
|
||||
|
||||
/**
|
||||
* 免职文件号
|
||||
*/
|
||||
@Size(max = 200, message = "免职文件号长度不能超过200个字符")
|
||||
private String dismissalDocument;
|
||||
|
||||
/**
|
||||
* 工作表现:excellent-优秀,good-良好,average-一般,poor-较差
|
||||
*/
|
||||
@Pattern(regexp = "^(excellent|good|average|poor)$", message = "工作表现必须是excellent、good、average、poor中的一个")
|
||||
private String workPerformance;
|
||||
|
||||
/**
|
||||
* 表现评分(0-10分)
|
||||
*/
|
||||
@DecimalMin(value = "0.0", message = "表现评分不能小于0分")
|
||||
@DecimalMax(value = "10.0", message = "表现评分不能大于10分")
|
||||
private BigDecimal performanceScore;
|
||||
|
||||
/**
|
||||
* 工作总结
|
||||
*/
|
||||
private String workSummary;
|
||||
|
||||
/**
|
||||
* 评价意见
|
||||
*/
|
||||
private String evaluationComments;
|
||||
|
||||
/**
|
||||
* 权限配置(JSON格式)
|
||||
*/
|
||||
private String permissions;
|
||||
|
||||
/**
|
||||
* 系统角色列表(逗号分隔)
|
||||
*/
|
||||
@Size(max = 200, message = "系统角色列表长度不能超过200个字符")
|
||||
private String systemRoles;
|
||||
|
||||
/**
|
||||
* 访问级别:1-基础,2-中级,3-高级
|
||||
*/
|
||||
@Min(value = 1, message = "访问级别最小值为1")
|
||||
@Max(value = 3, message = "访问级别最大值为3")
|
||||
private Integer accessLevel;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
@Size(max = 20, message = "联系电话长度不能超过20个字符")
|
||||
@Pattern(regexp = "^[0-9+-]*$", message = "联系电话格式不正确")
|
||||
private String contactPhone;
|
||||
|
||||
/**
|
||||
* 联系邮箱
|
||||
*/
|
||||
@Size(max = 100, message = "联系邮箱长度不能超过100个字符")
|
||||
@Email(message = "联系邮箱格式不正确")
|
||||
private String contactEmail;
|
||||
|
||||
/**
|
||||
* 紧急联系人
|
||||
*/
|
||||
@Size(max = 50, message = "紧急联系人长度不能超过50个字符")
|
||||
private String emergencyContact;
|
||||
|
||||
/**
|
||||
* 紧急联系电话
|
||||
*/
|
||||
@Size(max = 20, message = "紧急联系电话长度不能超过20个字符")
|
||||
@Pattern(regexp = "^[0-9+-]*$", message = "紧急联系电话格式不正确")
|
||||
private String emergencyPhone;
|
||||
|
||||
/**
|
||||
* 工作计划
|
||||
*/
|
||||
private String workPlan;
|
||||
|
||||
/**
|
||||
* 主要成就
|
||||
*/
|
||||
private String achievements;
|
||||
|
||||
/**
|
||||
* 培训记录(JSON格式)
|
||||
*/
|
||||
private String trainingRecords;
|
||||
|
||||
/**
|
||||
* 会议出席记录(JSON格式)
|
||||
*/
|
||||
private String meetingAttendance;
|
||||
|
||||
/**
|
||||
* 排序顺序
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 备注信息
|
||||
*/
|
||||
@Size(max = 500, message = "备注信息长度不能超过500个字符")
|
||||
private String remark;
|
||||
|
||||
// 查询条件字段
|
||||
/**
|
||||
* 班级编码(查询条件)
|
||||
*/
|
||||
private String classCode;
|
||||
|
||||
/**
|
||||
* 班级名称(查询条件)
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 学院名称(查询条件)
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 年级(查询条件)
|
||||
*/
|
||||
private String grade;
|
||||
|
||||
/**
|
||||
* 专业名称(查询条件)
|
||||
*/
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 任职开始日期(查询条件)
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date appointmentStartDate;
|
||||
|
||||
/**
|
||||
* 任职结束日期(查询条件)
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date appointmentEndDate;
|
||||
|
||||
/**
|
||||
* 任期开始日期(查询条件)
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date termStartDateBegin;
|
||||
|
||||
/**
|
||||
* 任期结束日期(查询条件)
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date termStartDateEnd;
|
||||
|
||||
// 手动添加getter方法以确保编译通过
|
||||
public Long getClassId() {
|
||||
return this.classId;
|
||||
}
|
||||
|
||||
public Long getStudentId() {
|
||||
return this.studentId;
|
||||
}
|
||||
|
||||
public String getStudentNo() {
|
||||
return this.studentNo;
|
||||
}
|
||||
|
||||
public String getStudentName() {
|
||||
return this.studentName;
|
||||
}
|
||||
|
||||
public String getPositionCode() {
|
||||
return this.positionCode;
|
||||
}
|
||||
|
||||
public String getPositionName() {
|
||||
return this.positionName;
|
||||
}
|
||||
|
||||
public Integer getPositionLevel() {
|
||||
return this.positionLevel;
|
||||
}
|
||||
|
||||
public String getPositionCategory() {
|
||||
return this.positionCategory;
|
||||
}
|
||||
|
||||
public void setPositionCategory(String positionCategory) {
|
||||
this.positionCategory = positionCategory;
|
||||
}
|
||||
|
||||
public Boolean getIsCurrent() {
|
||||
return this.isCurrent;
|
||||
}
|
||||
|
||||
public void setIsCurrent(Boolean isCurrent) {
|
||||
this.isCurrent = isCurrent;
|
||||
}
|
||||
|
||||
public String getCadreStatus() {
|
||||
return this.cadreStatus;
|
||||
}
|
||||
|
||||
public void setCadreStatus(String cadreStatus) {
|
||||
this.cadreStatus = cadreStatus;
|
||||
}
|
||||
|
||||
public String getWorkPerformance() {
|
||||
return this.workPerformance;
|
||||
}
|
||||
|
||||
public void setWorkPerformance(String workPerformance) {
|
||||
this.workPerformance = workPerformance;
|
||||
}
|
||||
|
||||
public Date getAppointmentDate() {
|
||||
return this.appointmentDate;
|
||||
}
|
||||
|
||||
public void setAppointmentDate(Date appointmentDate) {
|
||||
this.appointmentDate = appointmentDate;
|
||||
}
|
||||
|
||||
public Date getTermStartDate() {
|
||||
return this.termStartDate;
|
||||
}
|
||||
|
||||
public void setTermStartDate(Date termStartDate) {
|
||||
this.termStartDate = termStartDate;
|
||||
}
|
||||
|
||||
public Date getTermEndDate() {
|
||||
return this.termEndDate;
|
||||
}
|
||||
|
||||
public void setTermEndDate(Date termEndDate) {
|
||||
this.termEndDate = termEndDate;
|
||||
}
|
||||
|
||||
public Integer getTermDuration() {
|
||||
return this.termDuration;
|
||||
}
|
||||
|
||||
public void setTermDuration(Integer termDuration) {
|
||||
this.termDuration = termDuration;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
}
|
||||
-255
@@ -1,255 +0,0 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import org.dromara.xg.domain.XgClassInfo;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 班级信息业务对象 xg_class_info
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-14
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgClassInfo.class, reverseConvertGenerate = false)
|
||||
public class XgClassInfoBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 班级代码
|
||||
*/
|
||||
@NotBlank(message = "班级代码不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String classCode;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
@NotBlank(message = "班级名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 班级类型:regular-普通班级,honor-荣誉班级,experimental-实验班级,special-特殊班级
|
||||
*/
|
||||
private String classType;
|
||||
|
||||
/**
|
||||
* 年级:如2023级
|
||||
*/
|
||||
private String grade;
|
||||
|
||||
/**
|
||||
* 入学年份
|
||||
*/
|
||||
private Integer enrollmentYear;
|
||||
|
||||
/**
|
||||
* 毕业年份
|
||||
*/
|
||||
private Integer graduationYear;
|
||||
|
||||
/**
|
||||
* 专业代码
|
||||
*/
|
||||
private String majorCode;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 学院代码
|
||||
*/
|
||||
private String collegeCode;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 辅导员ID
|
||||
*/
|
||||
private Long counselorId;
|
||||
|
||||
/**
|
||||
* 辅导员姓名
|
||||
*/
|
||||
private String counselorName;
|
||||
|
||||
/**
|
||||
* 班主任ID
|
||||
*/
|
||||
private Long classTeacherId;
|
||||
|
||||
/**
|
||||
* 班主任姓名
|
||||
*/
|
||||
private String classTeacherName;
|
||||
|
||||
/**
|
||||
* 班级状态:1-正常,2-停招,3-已毕业,4-已解散
|
||||
*/
|
||||
private String classStatus;
|
||||
|
||||
/**
|
||||
* 当前学生数量
|
||||
*/
|
||||
private Integer currentStudentCount;
|
||||
|
||||
/**
|
||||
* 最大学生数量
|
||||
*/
|
||||
private Integer maxStudentCount;
|
||||
|
||||
/**
|
||||
* 男生人数
|
||||
*/
|
||||
private Integer maleCount;
|
||||
|
||||
/**
|
||||
* 女生人数
|
||||
*/
|
||||
private Integer femaleCount;
|
||||
|
||||
/**
|
||||
* 班级描述
|
||||
*/
|
||||
private String classDescription;
|
||||
|
||||
/**
|
||||
* 班级备注
|
||||
*/
|
||||
private String classNotes;
|
||||
|
||||
/**
|
||||
* 扩展字段1
|
||||
*/
|
||||
private String extField1;
|
||||
|
||||
/**
|
||||
* 扩展字段2
|
||||
*/
|
||||
private String extField2;
|
||||
|
||||
/**
|
||||
* 扩展字段3
|
||||
*/
|
||||
private String extField3;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 获取班级代码
|
||||
*/
|
||||
public String getClassCode() {
|
||||
return this.classCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级名称
|
||||
*/
|
||||
public String getClassName() {
|
||||
return this.className;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取入学年份
|
||||
*/
|
||||
public Integer getEnrollmentYear() {
|
||||
return this.enrollmentYear;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取专业代码
|
||||
*/
|
||||
public String getMajorCode() {
|
||||
return this.majorCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取专业名称
|
||||
*/
|
||||
public String getMajorName() {
|
||||
return this.majorName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学院代码
|
||||
*/
|
||||
public String getCollegeCode() {
|
||||
return this.collegeCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学院名称
|
||||
*/
|
||||
public String getCollegeName() {
|
||||
return this.collegeName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取辅导员ID
|
||||
*/
|
||||
public Long getCounselorId() {
|
||||
return this.counselorId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取辅导员姓名
|
||||
*/
|
||||
public String getCounselorName() {
|
||||
return this.counselorName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任ID
|
||||
*/
|
||||
public Long getClassTeacherId() {
|
||||
return this.classTeacherId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任姓名
|
||||
*/
|
||||
public String getClassTeacherName() {
|
||||
return this.classTeacherName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级状态
|
||||
*/
|
||||
public String getClassStatus() {
|
||||
return this.classStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置主键ID
|
||||
*/
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主键ID
|
||||
*/
|
||||
public Long getId() {
|
||||
return this.id;
|
||||
}
|
||||
}
|
||||
-298
@@ -1,298 +0,0 @@
|
||||
package org.dromara.xg.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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 信息采集批次业务对象 XgCollectionBatchBo
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class XgCollectionBatchBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
@NotNull(message = "批次ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 批次ID(业务主键,与id保持一致)
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 批次编码
|
||||
*/
|
||||
@NotBlank(message = "批次编码不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 50, message = "批次编码长度不能超过50个字符")
|
||||
private String batchCode;
|
||||
|
||||
/**
|
||||
* 批次名称
|
||||
*/
|
||||
@NotBlank(message = "批次名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 200, message = "批次名称长度不能超过200个字符")
|
||||
private String batchName;
|
||||
|
||||
/**
|
||||
* 批次类型
|
||||
*/
|
||||
@NotBlank(message = "批次类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 50, message = "批次类型长度不能超过50个字符")
|
||||
private String batchType;
|
||||
|
||||
/**
|
||||
* 学年
|
||||
*/
|
||||
@Size(max = 20, message = "学年长度不能超过20个字符")
|
||||
private String academicYear;
|
||||
|
||||
/**
|
||||
* 学期
|
||||
*/
|
||||
@Size(max = 20, message = "学期长度不能超过20个字符")
|
||||
private String semester;
|
||||
|
||||
/**
|
||||
* 批次状态
|
||||
*/
|
||||
@NotBlank(message = "批次状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 20, message = "批次状态长度不能超过20个字符")
|
||||
private String batchStatus;
|
||||
|
||||
/**
|
||||
* 发布状态
|
||||
*/
|
||||
@Size(max = 20, message = "发布状态长度不能超过20个字符")
|
||||
private String publishStatus;
|
||||
|
||||
/**
|
||||
* 批次描述
|
||||
*/
|
||||
@Size(max = 500, message = "批次描述长度不能超过500个字符")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 关联学年ID
|
||||
*/
|
||||
@NotNull(message = "关联学年ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long academicYearId;
|
||||
|
||||
/**
|
||||
* 关联学期ID
|
||||
*/
|
||||
private Long semesterId;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
@NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
@NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 目标范围
|
||||
*/
|
||||
@NotBlank(message = "目标范围不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 50, message = "目标范围长度不能超过50个字符")
|
||||
private String targetScope;
|
||||
|
||||
/**
|
||||
* 目标届别
|
||||
*/
|
||||
@Size(max = 50, message = "目标届别长度不能超过50个字符")
|
||||
private String targetGrade;
|
||||
|
||||
/**
|
||||
* 目标学院ID列表(JSON格式)
|
||||
*/
|
||||
private String targetCollegeIds;
|
||||
|
||||
/**
|
||||
* 目标专业ID列表(JSON格式)
|
||||
*/
|
||||
private String targetMajorIds;
|
||||
|
||||
/**
|
||||
* 目标班级ID列表(JSON格式)
|
||||
*/
|
||||
private String targetClassIds;
|
||||
|
||||
/**
|
||||
* 目标学院ID列表(用于前端)
|
||||
*/
|
||||
private List<Long> targetCollegeIdList;
|
||||
|
||||
/**
|
||||
* 目标专业ID列表(用于前端)
|
||||
*/
|
||||
private List<Long> targetMajorIdList;
|
||||
|
||||
/**
|
||||
* 目标班级ID列表(用于前端)
|
||||
*/
|
||||
private List<Long> targetClassIdList;
|
||||
|
||||
/**
|
||||
* 是否发布
|
||||
*/
|
||||
private Boolean isPublished;
|
||||
|
||||
/**
|
||||
* 发布时间
|
||||
*/
|
||||
private Date publishTime;
|
||||
|
||||
/**
|
||||
* 总数
|
||||
*/
|
||||
private Integer totalCount;
|
||||
|
||||
/**
|
||||
* 完成数
|
||||
*/
|
||||
private Integer completedCount;
|
||||
|
||||
/**
|
||||
* 完成率
|
||||
*/
|
||||
private Double completionRate;
|
||||
|
||||
/**
|
||||
* 开始前提醒时间(小时)
|
||||
*/
|
||||
@Min(value = 1, message = "开始前提醒时间必须大于0")
|
||||
@Max(value = 168, message = "开始前提醒时间不能超过168小时")
|
||||
private Integer remindBeforeStart;
|
||||
|
||||
/**
|
||||
* 结束前提醒时间(小时)
|
||||
*/
|
||||
@Min(value = 1, message = "结束前提醒时间必须大于0")
|
||||
@Max(value = 168, message = "结束前提醒时间不能超过168小时")
|
||||
private Integer remindBeforeEnd;
|
||||
|
||||
/**
|
||||
* 是否自动关闭
|
||||
*/
|
||||
private Boolean autoClose;
|
||||
|
||||
/**
|
||||
* 是否已发送通知
|
||||
*/
|
||||
private Boolean notificationSent;
|
||||
|
||||
/**
|
||||
* 创建模块
|
||||
*/
|
||||
private String createdByModule;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符")
|
||||
private String remark;
|
||||
|
||||
// ==================== 兼容性方法 ====================
|
||||
|
||||
/**
|
||||
* 获取批次ID(如果batchId为null,返回主键id)
|
||||
*/
|
||||
public Long getBatchId() {
|
||||
return this.batchId != null ? this.batchId : this.id;
|
||||
}
|
||||
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
if (this.id == null) {
|
||||
this.id = batchId;
|
||||
}
|
||||
}
|
||||
|
||||
// ==================== 手动添加的 getter 方法 ====================
|
||||
|
||||
/**
|
||||
* 获取批次编码
|
||||
*/
|
||||
public String getBatchCode() {
|
||||
return this.batchCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取批次名称
|
||||
*/
|
||||
public String getBatchName() {
|
||||
return this.batchName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取批次类型
|
||||
*/
|
||||
public String getBatchType() {
|
||||
return this.batchType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学年
|
||||
*/
|
||||
public String getAcademicYear() {
|
||||
return this.academicYear;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学期
|
||||
*/
|
||||
public String getSemester() {
|
||||
return this.semester;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取批次状态
|
||||
*/
|
||||
public String getBatchStatus() {
|
||||
return this.batchStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取发布状态
|
||||
*/
|
||||
public String getPublishStatus() {
|
||||
return this.publishStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取开始时间
|
||||
*/
|
||||
public Date getStartTime() {
|
||||
return this.startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取结束时间
|
||||
*/
|
||||
public Date getEndTime() {
|
||||
return this.endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取批次描述
|
||||
*/
|
||||
public String getDescription() {
|
||||
return this.description;
|
||||
}
|
||||
}
|
||||
-85
@@ -1,85 +0,0 @@
|
||||
package org.dromara.xg.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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
/**
|
||||
* 数据字典业务对象 xg_dict_data
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class XgDictDataBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 字典数据ID
|
||||
*/
|
||||
@NotNull(message = "字典数据ID不能为空", groups = { EditGroup.class })
|
||||
private Long dictDataId;
|
||||
|
||||
/**
|
||||
* 字典类型
|
||||
*/
|
||||
@NotBlank(message = "字典类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 100, message = "字典类型长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String dictType;
|
||||
|
||||
/**
|
||||
* 字典标签
|
||||
*/
|
||||
@NotBlank(message = "字典标签不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 100, message = "字典标签长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String dictLabel;
|
||||
|
||||
/**
|
||||
* 字典键值
|
||||
*/
|
||||
@NotBlank(message = "字典键值不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 100, message = "字典键值长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String dictValue;
|
||||
|
||||
/**
|
||||
* 字典排序
|
||||
*/
|
||||
@NotNull(message = "字典排序不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Min(value = 0, message = "字典排序不能小于0", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer dictSort;
|
||||
|
||||
/**
|
||||
* 样式属性
|
||||
*/
|
||||
@Size(max = 100, message = "样式属性长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String cssClass;
|
||||
|
||||
/**
|
||||
* 表格字典样式
|
||||
*/
|
||||
@Size(max = 100, message = "表格字典样式长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String listClass;
|
||||
|
||||
/**
|
||||
* 是否默认
|
||||
*/
|
||||
@NotNull(message = "是否默认不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean isDefault;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 10, message = "状态长度不能超过10个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-115
@@ -1,115 +0,0 @@
|
||||
package org.dromara.xg.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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 通知公告业务对象 xg_notice
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class XgNoticeBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 通知ID
|
||||
*/
|
||||
@NotNull(message = "通知ID不能为空", groups = { EditGroup.class })
|
||||
private Long noticeId;
|
||||
|
||||
/**
|
||||
* 通知标题
|
||||
*/
|
||||
@NotBlank(message = "通知标题不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 200, message = "通知标题长度不能超过200个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String noticeTitle;
|
||||
|
||||
/**
|
||||
* 通知类型
|
||||
*/
|
||||
@NotBlank(message = "通知类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 20, message = "通知类型长度不能超过20个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String noticeType;
|
||||
|
||||
/**
|
||||
* 通知内容
|
||||
*/
|
||||
@NotBlank(message = "通知内容不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String noticeContent;
|
||||
|
||||
/**
|
||||
* 发布范围
|
||||
*/
|
||||
@Size(max = 500, message = "发布范围长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String publishScope;
|
||||
|
||||
/**
|
||||
* 优先级
|
||||
*/
|
||||
@NotNull(message = "优先级不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Min(value = 1, message = "优先级不能小于1", groups = { AddGroup.class, EditGroup.class })
|
||||
@Max(value = 5, message = "优先级不能大于5", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer priority;
|
||||
|
||||
/**
|
||||
* 是否置顶
|
||||
*/
|
||||
@NotNull(message = "是否置顶不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean isTop;
|
||||
|
||||
/**
|
||||
* 发布时间
|
||||
*/
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
/**
|
||||
* 过期时间
|
||||
*/
|
||||
private LocalDateTime expireTime;
|
||||
|
||||
/**
|
||||
* 附件路径
|
||||
*/
|
||||
@Size(max = 500, message = "附件路径长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String attachmentPath;
|
||||
|
||||
/**
|
||||
* 阅读次数
|
||||
*/
|
||||
@Min(value = 0, message = "阅读次数不能小于0", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer readCount;
|
||||
|
||||
/**
|
||||
* 发布状态
|
||||
*/
|
||||
@NotBlank(message = "发布状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 20, message = "发布状态长度不能超过20个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String publishStatus;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@Min(value = 0, message = "排序号不能小于0", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 10, message = "状态长度不能超过10个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-206
@@ -1,206 +0,0 @@
|
||||
package org.dromara.xg.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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 通知阅读记录业务对象 xg_notice_read
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class XgNoticeReadBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 阅读记录ID
|
||||
*/
|
||||
@NotNull(message = "阅读记录ID不能为空", groups = { EditGroup.class })
|
||||
private Long readId;
|
||||
|
||||
/**
|
||||
* 通知ID
|
||||
*/
|
||||
@NotNull(message = "通知ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long noticeId;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@NotNull(message = "用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户类型
|
||||
*/
|
||||
@NotBlank(message = "用户类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 20, message = "用户类型长度不能超过20个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String userType;
|
||||
|
||||
/**
|
||||
* 阅读时间
|
||||
*/
|
||||
@NotNull(message = "阅读时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalDateTime readTime;
|
||||
|
||||
/**
|
||||
* 阅读时长(秒)
|
||||
*/
|
||||
@Min(value = 0, message = "阅读时长不能小于0", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer readDuration;
|
||||
|
||||
/**
|
||||
* 阅读状态
|
||||
*/
|
||||
@NotBlank(message = "阅读状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 20, message = "阅读状态长度不能超过20个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String readStatus;
|
||||
|
||||
/**
|
||||
* 阅读设备
|
||||
*/
|
||||
@Size(max = 50, message = "阅读设备长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String readDevice;
|
||||
|
||||
/**
|
||||
* IP地址
|
||||
*/
|
||||
@Size(max = 50, message = "IP地址长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String ipAddress;
|
||||
|
||||
/**
|
||||
* 阅读位置
|
||||
*/
|
||||
@Size(max = 200, message = "阅读位置长度不能超过200个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String readLocation;
|
||||
|
||||
/**
|
||||
* 是否完整阅读
|
||||
*/
|
||||
@NotNull(message = "是否完整阅读不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean isFullRead;
|
||||
|
||||
/**
|
||||
* 阅读进度
|
||||
*/
|
||||
@Min(value = 0, message = "阅读进度不能小于0", groups = { AddGroup.class, EditGroup.class })
|
||||
@Max(value = 100, message = "阅读进度不能大于100", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer readProgress;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String remark;
|
||||
|
||||
// 手动添加getter/setter方法以解决Lombok问题
|
||||
public Long getNoticeId() {
|
||||
return noticeId;
|
||||
}
|
||||
|
||||
public void setNoticeId(Long noticeId) {
|
||||
this.noticeId = noticeId;
|
||||
}
|
||||
|
||||
public Long getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(Long userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public LocalDateTime getReadTime() {
|
||||
return readTime;
|
||||
}
|
||||
|
||||
public void setReadTime(LocalDateTime readTime) {
|
||||
this.readTime = readTime;
|
||||
}
|
||||
|
||||
public Long getReadId() {
|
||||
return readId;
|
||||
}
|
||||
|
||||
public void setReadId(Long readId) {
|
||||
this.readId = readId;
|
||||
}
|
||||
|
||||
public String getUserType() {
|
||||
return userType;
|
||||
}
|
||||
|
||||
public void setUserType(String userType) {
|
||||
this.userType = userType;
|
||||
}
|
||||
|
||||
public Integer getReadDuration() {
|
||||
return readDuration;
|
||||
}
|
||||
|
||||
public void setReadDuration(Integer readDuration) {
|
||||
this.readDuration = readDuration;
|
||||
}
|
||||
|
||||
public String getReadStatus() {
|
||||
return readStatus;
|
||||
}
|
||||
|
||||
public void setReadStatus(String readStatus) {
|
||||
this.readStatus = readStatus;
|
||||
}
|
||||
|
||||
public String getReadDevice() {
|
||||
return readDevice;
|
||||
}
|
||||
|
||||
public void setReadDevice(String readDevice) {
|
||||
this.readDevice = readDevice;
|
||||
}
|
||||
|
||||
public String getIpAddress() {
|
||||
return ipAddress;
|
||||
}
|
||||
|
||||
public void setIpAddress(String ipAddress) {
|
||||
this.ipAddress = ipAddress;
|
||||
}
|
||||
|
||||
public String getReadLocation() {
|
||||
return readLocation;
|
||||
}
|
||||
|
||||
public void setReadLocation(String readLocation) {
|
||||
this.readLocation = readLocation;
|
||||
}
|
||||
|
||||
public Boolean getIsFullRead() {
|
||||
return isFullRead;
|
||||
}
|
||||
|
||||
public void setIsFullRead(Boolean isFullRead) {
|
||||
this.isFullRead = isFullRead;
|
||||
}
|
||||
|
||||
public Integer getReadProgress() {
|
||||
return readProgress;
|
||||
}
|
||||
|
||||
public void setReadProgress(Integer readProgress) {
|
||||
this.readProgress = readProgress;
|
||||
}
|
||||
|
||||
public String getRemark() {
|
||||
return remark;
|
||||
}
|
||||
|
||||
public void setRemark(String remark) {
|
||||
this.remark = remark;
|
||||
}
|
||||
}
|
||||
-94
@@ -1,94 +0,0 @@
|
||||
package org.dromara.xg.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 io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.time.LocalDate;
|
||||
import org.dromara.xg.domain.XgSemester;
|
||||
|
||||
/**
|
||||
* 学期管理业务对象 xg_semester
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgSemester.class, reverseConvertGenerate = false)
|
||||
public class XgSemesterBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 学期ID
|
||||
*/
|
||||
@NotNull(message = "学期ID不能为空", groups = { EditGroup.class })
|
||||
private Long semesterId;
|
||||
|
||||
/**
|
||||
* 学年ID
|
||||
*/
|
||||
@NotNull(message = "学年ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long academicYearId;
|
||||
|
||||
/**
|
||||
* 学期名称
|
||||
*/
|
||||
@NotBlank(message = "学期名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 50, message = "学期名称长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String semesterName;
|
||||
|
||||
/**
|
||||
* 学期代码
|
||||
*/
|
||||
@NotBlank(message = "学期代码不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 20, message = "学期代码长度不能超过20个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String semesterCode;
|
||||
|
||||
/**
|
||||
* 学期类型
|
||||
*/
|
||||
@NotBlank(message = "学期类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 20, message = "学期类型长度不能超过20个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String semesterType;
|
||||
|
||||
/**
|
||||
* 开始日期
|
||||
*/
|
||||
@NotNull(message = "开始日期不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 结束日期
|
||||
*/
|
||||
@NotNull(message = "结束日期不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalDate endDate;
|
||||
|
||||
/**
|
||||
* 是否当前学期
|
||||
*/
|
||||
@NotNull(message = "是否当前学期不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean isCurrent;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@Min(value = 0, message = "排序号不能小于0", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 10, message = "状态长度不能超过10个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-198
@@ -1,198 +0,0 @@
|
||||
package org.dromara.xg.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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 学生信息审核业务对象 XgStudentInfoApprovalBo
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class XgStudentInfoApprovalBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
@NotNull(message = "批次ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 班级代码
|
||||
*/
|
||||
private String classCode;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 学院代码
|
||||
*/
|
||||
private String collegeCode;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 提交状态
|
||||
*/
|
||||
private String submissionStatus;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
private String approvalStatus;
|
||||
|
||||
/**
|
||||
* 提交时间开始
|
||||
*/
|
||||
private LocalDateTime submissionTimeStart;
|
||||
|
||||
/**
|
||||
* 提交时间结束
|
||||
*/
|
||||
private LocalDateTime submissionTimeEnd;
|
||||
|
||||
/**
|
||||
* 审核时间开始
|
||||
*/
|
||||
private LocalDateTime approvalTimeStart;
|
||||
|
||||
/**
|
||||
* 审核时间结束
|
||||
*/
|
||||
private LocalDateTime approvalTimeEnd;
|
||||
|
||||
/**
|
||||
* 审核人ID
|
||||
*/
|
||||
private Long approvalBy;
|
||||
|
||||
/**
|
||||
* 审核人姓名
|
||||
*/
|
||||
private String approvalByName;
|
||||
|
||||
/**
|
||||
* 审核意见
|
||||
*/
|
||||
private String approvalComments;
|
||||
|
||||
/**
|
||||
* 查询关键字(学生姓名或学号)
|
||||
*/
|
||||
private String keyword;
|
||||
|
||||
/**
|
||||
* 是否导出
|
||||
*/
|
||||
private Boolean export;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 审批时间
|
||||
*/
|
||||
private LocalDateTime approvalTime;
|
||||
|
||||
/**
|
||||
* 提交时间
|
||||
*/
|
||||
private LocalDateTime submissionTime;
|
||||
|
||||
// 手动添加getter方法以确保编译通过
|
||||
public Long getBatchId() {
|
||||
return this.batchId;
|
||||
}
|
||||
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
}
|
||||
|
||||
// 添加缺失的getter/setter方法
|
||||
public Long getStudentId() {
|
||||
return studentId;
|
||||
}
|
||||
|
||||
public void setStudentId(Long studentId) {
|
||||
this.studentId = studentId;
|
||||
}
|
||||
|
||||
public String getApprovalStatus() {
|
||||
return approvalStatus;
|
||||
}
|
||||
|
||||
public void setApprovalStatus(String approvalStatus) {
|
||||
this.approvalStatus = approvalStatus;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getBatchId() {
|
||||
return batchId;
|
||||
}
|
||||
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
}
|
||||
|
||||
public String getApprovalComments() {
|
||||
return approvalComments;
|
||||
}
|
||||
|
||||
public void setApprovalComments(String approvalComments) {
|
||||
this.approvalComments = approvalComments;
|
||||
}
|
||||
|
||||
public LocalDateTime getApprovalTime() {
|
||||
return approvalTime;
|
||||
}
|
||||
|
||||
public void setApprovalTime(LocalDateTime approvalTime) {
|
||||
this.approvalTime = approvalTime;
|
||||
}
|
||||
|
||||
public LocalDateTime getSubmissionTime() {
|
||||
return submissionTime;
|
||||
}
|
||||
|
||||
public void setSubmissionTime(LocalDateTime submissionTime) {
|
||||
this.submissionTime = submissionTime;
|
||||
}
|
||||
}
|
||||
-507
@@ -1,507 +0,0 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import org.dromara.xg.domain.XgStudentInfo;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 学生信息业务对象 xg_student_info
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgStudentInfo.class, reverseConvertGenerate = false)
|
||||
public class XgStudentInfoBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@NotBlank(message = "学号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
@NotBlank(message = "身份证号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String idCard;
|
||||
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
@NotBlank(message = "姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 姓名拼音
|
||||
*/
|
||||
private String namePinyin;
|
||||
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
@NotBlank(message = "性别不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String gender;
|
||||
|
||||
/**
|
||||
* 出生日期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date birthDate;
|
||||
|
||||
/**
|
||||
* 民族
|
||||
*/
|
||||
private String nation;
|
||||
|
||||
/**
|
||||
* 政治面貌
|
||||
*/
|
||||
private String politicalStatus;
|
||||
|
||||
/**
|
||||
* 学籍状态
|
||||
*/
|
||||
private String studentStatus;
|
||||
|
||||
/**
|
||||
* 入学年份
|
||||
*/
|
||||
private Integer enrollmentYear;
|
||||
|
||||
/**
|
||||
* 入学日期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date enrollmentDate;
|
||||
|
||||
/**
|
||||
* 学制(年)
|
||||
*/
|
||||
private Integer schoolSystem;
|
||||
|
||||
/**
|
||||
* 学历层次
|
||||
*/
|
||||
private String educationLevel;
|
||||
|
||||
/**
|
||||
* 培养方式
|
||||
*/
|
||||
private String trainingType;
|
||||
|
||||
/**
|
||||
* 专业代码
|
||||
*/
|
||||
private String majorCode;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 班级代码
|
||||
*/
|
||||
private String classCode;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 学院代码
|
||||
*/
|
||||
private String collegeCode;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 手机号码
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 电子邮箱
|
||||
*/
|
||||
private String email;
|
||||
|
||||
/**
|
||||
* QQ号码
|
||||
*/
|
||||
private String qq;
|
||||
|
||||
/**
|
||||
* 微信号
|
||||
*/
|
||||
private String wechat;
|
||||
|
||||
/**
|
||||
* 现住址
|
||||
*/
|
||||
private String currentAddress;
|
||||
|
||||
/**
|
||||
* 家庭地址
|
||||
*/
|
||||
private String homeAddress;
|
||||
|
||||
/**
|
||||
* 户籍所在地
|
||||
*/
|
||||
private String domicilePlace;
|
||||
|
||||
/**
|
||||
* 邮政编码
|
||||
*/
|
||||
private String postalCode;
|
||||
|
||||
/**
|
||||
* 紧急联系人姓名
|
||||
*/
|
||||
private String emergencyContactName;
|
||||
|
||||
/**
|
||||
* 紧急联系人关系
|
||||
*/
|
||||
private String emergencyContactRelation;
|
||||
|
||||
/**
|
||||
* 紧急联系人电话
|
||||
*/
|
||||
private String emergencyContactPhone;
|
||||
|
||||
/**
|
||||
* 父亲姓名
|
||||
*/
|
||||
private String fatherName;
|
||||
|
||||
/**
|
||||
* 父亲联系电话
|
||||
*/
|
||||
private String fatherPhone;
|
||||
|
||||
/**
|
||||
* 父亲工作单位
|
||||
*/
|
||||
private String fatherWorkUnit;
|
||||
|
||||
/**
|
||||
* 母亲姓名
|
||||
*/
|
||||
private String motherName;
|
||||
|
||||
/**
|
||||
* 母亲联系电话
|
||||
*/
|
||||
private String motherPhone;
|
||||
|
||||
/**
|
||||
* 母亲工作单位
|
||||
*/
|
||||
private String motherWorkUnit;
|
||||
|
||||
/**
|
||||
* 身高(cm)
|
||||
*/
|
||||
private Integer height;
|
||||
|
||||
/**
|
||||
* 体重(kg)
|
||||
*/
|
||||
private BigDecimal weight;
|
||||
|
||||
/**
|
||||
* 血型
|
||||
*/
|
||||
private String bloodType;
|
||||
|
||||
/**
|
||||
* 特殊体质或疾病
|
||||
*/
|
||||
private String specialCondition;
|
||||
|
||||
/**
|
||||
* 宗教信仰
|
||||
*/
|
||||
private String religion;
|
||||
|
||||
/**
|
||||
* 特长爱好
|
||||
*/
|
||||
private String hobbies;
|
||||
|
||||
/**
|
||||
* 是否贫困生
|
||||
*/
|
||||
private Integer isPoorStudent;
|
||||
|
||||
/**
|
||||
* 贫困等级
|
||||
*/
|
||||
private String povertyLevel;
|
||||
|
||||
/**
|
||||
* 是否享受助学金
|
||||
*/
|
||||
private Integer hasGrant;
|
||||
|
||||
/**
|
||||
* 助学金金额
|
||||
*/
|
||||
private BigDecimal grantAmount;
|
||||
|
||||
/**
|
||||
* 是否办理助学贷款
|
||||
*/
|
||||
private Integer hasLoan;
|
||||
|
||||
/**
|
||||
* 助学贷款金额
|
||||
*/
|
||||
private BigDecimal loanAmount;
|
||||
|
||||
/**
|
||||
* 银行卡号
|
||||
*/
|
||||
private String bankCardNo;
|
||||
|
||||
/**
|
||||
* 开户银行
|
||||
*/
|
||||
private String bankName;
|
||||
|
||||
/**
|
||||
* 开户支行
|
||||
*/
|
||||
private String bankBranch;
|
||||
|
||||
/**
|
||||
* 信息状态
|
||||
*/
|
||||
private String infoStatus;
|
||||
|
||||
/**
|
||||
* 数据来源
|
||||
*/
|
||||
private String dataSource;
|
||||
|
||||
/**
|
||||
* 最后修改批次ID
|
||||
*/
|
||||
private Long lastBatchId;
|
||||
|
||||
/**
|
||||
* 最后审核时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date lastAuditTime;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 学生状态范围查询
|
||||
*/
|
||||
private List<String> studentStatusIn;
|
||||
|
||||
/**
|
||||
* 班级代码范围查询
|
||||
*/
|
||||
private List<String> classCodeIn;
|
||||
|
||||
/**
|
||||
* 学院代码范围查询
|
||||
*/
|
||||
private List<String> collegeCodeIn;
|
||||
|
||||
/**
|
||||
* 入学年份范围查询
|
||||
*/
|
||||
private List<Integer> enrollmentYearIn;
|
||||
|
||||
/**
|
||||
* 搜索关键字
|
||||
*/
|
||||
private String keyword;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
private String idCard;
|
||||
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
private String gender;
|
||||
|
||||
/**
|
||||
* 学生状态
|
||||
*/
|
||||
private String studentStatus;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
// 手动添加getter和setter方法以确保编译通过
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getClassCode() {
|
||||
return classCode;
|
||||
}
|
||||
|
||||
public void setClassCode(String classCode) {
|
||||
this.classCode = classCode;
|
||||
}
|
||||
|
||||
public String getCollegeCode() {
|
||||
return collegeCode;
|
||||
}
|
||||
|
||||
public void setCollegeCode(String collegeCode) {
|
||||
this.collegeCode = collegeCode;
|
||||
}
|
||||
|
||||
public Long getBatchId() {
|
||||
return batchId;
|
||||
}
|
||||
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
}
|
||||
|
||||
public String getKeyword() {
|
||||
return keyword;
|
||||
}
|
||||
|
||||
public void setKeyword(String keyword) {
|
||||
this.keyword = keyword;
|
||||
}
|
||||
|
||||
public String getStudentNo() {
|
||||
return studentNo;
|
||||
}
|
||||
|
||||
public void setStudentNo(String studentNo) {
|
||||
this.studentNo = studentNo;
|
||||
}
|
||||
|
||||
public String getIdCard() {
|
||||
return idCard;
|
||||
}
|
||||
|
||||
public void setIdCard(String idCard) {
|
||||
this.idCard = idCard;
|
||||
}
|
||||
|
||||
public String getGender() {
|
||||
return gender;
|
||||
}
|
||||
|
||||
public void setGender(String gender) {
|
||||
this.gender = gender;
|
||||
}
|
||||
|
||||
public String getStudentStatus() {
|
||||
return studentStatus;
|
||||
}
|
||||
|
||||
public void setStudentStatus(String studentStatus) {
|
||||
this.studentStatus = studentStatus;
|
||||
}
|
||||
|
||||
public String getMajorName() {
|
||||
return majorName;
|
||||
}
|
||||
|
||||
public void setMajorName(String majorName) {
|
||||
this.majorName = majorName;
|
||||
}
|
||||
|
||||
public String getClassName() {
|
||||
return className;
|
||||
}
|
||||
|
||||
public void setClassName(String className) {
|
||||
this.className = className;
|
||||
}
|
||||
|
||||
public String getCollegeName() {
|
||||
return collegeName;
|
||||
}
|
||||
|
||||
public void setCollegeName(String collegeName) {
|
||||
this.collegeName = collegeName;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
}
|
||||
-134
@@ -1,134 +0,0 @@
|
||||
package org.dromara.xg.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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 学生信息历史业务对象 xg_student_info_history
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class XgStudentInfoHistoryBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 历史记录ID
|
||||
*/
|
||||
@NotNull(message = "历史记录ID不能为空", groups = { EditGroup.class })
|
||||
private Long historyId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
@NotNull(message = "学生ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@NotBlank(message = "学号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 50, message = "学号长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 变更类型
|
||||
*/
|
||||
@NotBlank(message = "变更类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 50, message = "变更类型长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String changeType;
|
||||
|
||||
/**
|
||||
* 变更字段
|
||||
*/
|
||||
@NotBlank(message = "变更字段不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 100, message = "变更字段长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String changeField;
|
||||
|
||||
/**
|
||||
* 变更前值
|
||||
*/
|
||||
private String oldValue;
|
||||
|
||||
/**
|
||||
* 变更后值
|
||||
*/
|
||||
private String newValue;
|
||||
|
||||
/**
|
||||
* 变更时间
|
||||
*/
|
||||
@NotNull(message = "变更时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalDateTime changeTime;
|
||||
|
||||
/**
|
||||
* 变更原因
|
||||
*/
|
||||
@Size(max = 500, message = "变更原因长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String changeReason;
|
||||
|
||||
/**
|
||||
* 操作人姓名
|
||||
*/
|
||||
@Size(max = 50, message = "操作人姓名长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String operatorName;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 批次编号
|
||||
*/
|
||||
@Size(max = 50, message = "批次编号长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String batchCode;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
@Size(max = 20, message = "审核状态长度不能超过20个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String auditStatus;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
private LocalDateTime auditTime;
|
||||
|
||||
/**
|
||||
* 审核人姓名
|
||||
*/
|
||||
@Size(max = 50, message = "审核人姓名长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String auditorName;
|
||||
|
||||
/**
|
||||
* 审核意见
|
||||
*/
|
||||
@Size(max = 500, message = "审核意见长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String auditComment;
|
||||
|
||||
/**
|
||||
* 数据来源
|
||||
*/
|
||||
@Size(max = 50, message = "数据来源长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String dataSource;
|
||||
|
||||
/**
|
||||
* 是否生效
|
||||
*/
|
||||
@NotNull(message = "是否生效不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean isEffective;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-107
@@ -1,107 +0,0 @@
|
||||
package org.dromara.xg.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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
/**
|
||||
* 系统配置业务对象 xg_system_config
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class XgSystemConfigBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 配置ID
|
||||
*/
|
||||
@NotNull(message = "配置ID不能为空", groups = { EditGroup.class })
|
||||
private Long configId;
|
||||
|
||||
/**
|
||||
* 配置键
|
||||
*/
|
||||
@NotBlank(message = "配置键不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 100, message = "配置键长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String configKey;
|
||||
|
||||
/**
|
||||
* 配置名称
|
||||
*/
|
||||
@NotBlank(message = "配置名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 100, message = "配置名称长度不能超过100个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String configName;
|
||||
|
||||
/**
|
||||
* 配置值
|
||||
*/
|
||||
@NotBlank(message = "配置值不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String configValue;
|
||||
|
||||
/**
|
||||
* 配置类型
|
||||
*/
|
||||
@NotBlank(message = "配置类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 50, message = "配置类型长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String configType;
|
||||
|
||||
/**
|
||||
* 配置分组
|
||||
*/
|
||||
@Size(max = 50, message = "配置分组长度不能超过50个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String configGroup;
|
||||
|
||||
/**
|
||||
* 配置描述
|
||||
*/
|
||||
@Size(max = 500, message = "配置描述长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String configDescription;
|
||||
|
||||
/**
|
||||
* 默认值
|
||||
*/
|
||||
private String defaultValue;
|
||||
|
||||
/**
|
||||
* 是否系统内置
|
||||
*/
|
||||
@NotNull(message = "是否系统内置不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean isSystem;
|
||||
|
||||
/**
|
||||
* 是否可编辑
|
||||
*/
|
||||
@NotNull(message = "是否可编辑不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean isEditable;
|
||||
|
||||
/**
|
||||
* 是否可删除
|
||||
*/
|
||||
@NotNull(message = "是否可删除不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Boolean isDeletable;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@Min(value = 0, message = "排序号不能小于0", groups = { AddGroup.class, EditGroup.class })
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@Size(max = 10, message = "状态长度不能超过10个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符", groups = { AddGroup.class, EditGroup.class })
|
||||
private String remark;
|
||||
|
||||
}
|
||||
-106
@@ -1,106 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgAcademicYear;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 学年管理视图对象 xg_academic_year
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgAcademicYear.class)
|
||||
public class XgAcademicYearVo extends XgAcademicYear {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 学年编码,如2024-2025
|
||||
*/
|
||||
@ExcelProperty(value = "学年编码")
|
||||
private String yearCode;
|
||||
|
||||
/**
|
||||
* 学年名称,如2024-2025学年
|
||||
*/
|
||||
@ExcelProperty(value = "学年名称")
|
||||
private String yearName;
|
||||
|
||||
/**
|
||||
* 学年开始日期
|
||||
*/
|
||||
@ExcelProperty(value = "学年开始日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 学年结束日期
|
||||
*/
|
||||
@ExcelProperty(value = "学年结束日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate endDate;
|
||||
|
||||
/**
|
||||
* 是否当前学年:0-否,1-是
|
||||
*/
|
||||
@ExcelProperty(value = "是否当前学年")
|
||||
private Boolean isCurrent;
|
||||
|
||||
/**
|
||||
* 状态:active-有效,inactive-无效
|
||||
*/
|
||||
@ExcelProperty(value = "状态")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 学年描述
|
||||
*/
|
||||
@ExcelProperty(value = "学年描述")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
@ExcelProperty(value = "排序字段")
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
// 基础字段
|
||||
@ExcelProperty(value = "创建者")
|
||||
private Long createBy;
|
||||
|
||||
@ExcelProperty(value = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date createTime;
|
||||
|
||||
@ExcelProperty(value = "更新者")
|
||||
private Long updateBy;
|
||||
|
||||
@ExcelProperty(value = "更新时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date updateTime;
|
||||
|
||||
}
|
||||
-200
@@ -1,200 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.xg.domain.XgAuditRecord;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 审核记录视图对象 xg_audit_record
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgAuditRecord.class)
|
||||
public class XgAuditRecordVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 业务类型
|
||||
*/
|
||||
@ExcelProperty(value = "业务类型")
|
||||
private String businessType;
|
||||
|
||||
/**
|
||||
* 业务ID
|
||||
*/
|
||||
@ExcelProperty(value = "业务ID")
|
||||
private Long businessId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
@ExcelProperty(value = "学生ID")
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学生学号
|
||||
*/
|
||||
@ExcelProperty(value = "学号")
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
@ExcelProperty(value = "学生姓名")
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 班级ID
|
||||
*/
|
||||
@ExcelProperty(value = "班级ID")
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 班级代码
|
||||
*/
|
||||
@ExcelProperty(value = "班级代码")
|
||||
private String classCode;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
@ExcelProperty(value = "批次ID")
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 批次编号
|
||||
*/
|
||||
@ExcelProperty(value = "批次编号")
|
||||
private String batchCode;
|
||||
|
||||
/**
|
||||
* 审核级别
|
||||
*/
|
||||
@ExcelProperty(value = "审核级别")
|
||||
private Integer auditLevel;
|
||||
|
||||
/**
|
||||
* 当前审核级别
|
||||
*/
|
||||
@ExcelProperty(value = "当前审核级别")
|
||||
private Integer currentLevel;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
@ExcelProperty(value = "审核状态")
|
||||
private String auditStatus;
|
||||
|
||||
/**
|
||||
* 审核结果
|
||||
*/
|
||||
@ExcelProperty(value = "审核结果", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_audit_result")
|
||||
private String auditResult;
|
||||
|
||||
/**
|
||||
* 提交人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "提交人")
|
||||
private String submitUserName;
|
||||
|
||||
/**
|
||||
* 提交时间
|
||||
*/
|
||||
@ExcelProperty(value = "提交时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date submitTime;
|
||||
|
||||
/**
|
||||
* 审核人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "审核人")
|
||||
private String auditUserName;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
@ExcelProperty(value = "审核时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date auditTime;
|
||||
|
||||
/**
|
||||
* 审核意见
|
||||
*/
|
||||
@ExcelProperty(value = "审核意见")
|
||||
private String auditComment;
|
||||
|
||||
/**
|
||||
* 审核耗时(分钟)
|
||||
*/
|
||||
@ExcelProperty(value = "审核耗时(分钟)")
|
||||
private Integer auditDuration;
|
||||
|
||||
/**
|
||||
* 下级审核人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "下级审核人")
|
||||
private String nextAuditUserName;
|
||||
|
||||
/**
|
||||
* 变更原因
|
||||
*/
|
||||
@ExcelProperty(value = "变更原因")
|
||||
private String changeReason;
|
||||
|
||||
/**
|
||||
* 审核进度
|
||||
*/
|
||||
@ExcelProperty(value = "审核进度")
|
||||
private String auditProgress;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
}
|
||||
-157
@@ -1,157 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.xg.domain.XgBatchOperationLog;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 批次操作日志视图对象 xg_batch_operation_log
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgBatchOperationLog.class)
|
||||
public class XgBatchOperationLogVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 日志ID
|
||||
*/
|
||||
@ExcelProperty(value = "日志ID")
|
||||
private Long logId;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
@ExcelProperty(value = "批次ID")
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 批次名称
|
||||
*/
|
||||
@ExcelProperty(value = "批次名称")
|
||||
private String batchName;
|
||||
|
||||
/**
|
||||
* 操作类型
|
||||
*/
|
||||
@ExcelProperty(value = "操作类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_batch_operation_type")
|
||||
private String operationType;
|
||||
|
||||
/**
|
||||
* 操作描述
|
||||
*/
|
||||
@ExcelProperty(value = "操作描述")
|
||||
private String operationDescription;
|
||||
|
||||
/**
|
||||
* 操作前数据(JSON格式)
|
||||
*/
|
||||
private String beforeData;
|
||||
|
||||
/**
|
||||
* 操作后数据(JSON格式)
|
||||
*/
|
||||
private String afterData;
|
||||
|
||||
/**
|
||||
* 操作人ID
|
||||
*/
|
||||
private Long operatorId;
|
||||
|
||||
/**
|
||||
* 操作人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "操作人")
|
||||
private String operatorName;
|
||||
|
||||
/**
|
||||
* 操作时间
|
||||
*/
|
||||
@ExcelProperty(value = "操作时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date operationTime;
|
||||
|
||||
/**
|
||||
* 操作IP地址
|
||||
*/
|
||||
@ExcelProperty(value = "操作IP")
|
||||
private String operationIp;
|
||||
|
||||
/**
|
||||
* 操作结果
|
||||
*/
|
||||
@ExcelProperty(value = "操作结果", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_operation_result")
|
||||
private String operationResult;
|
||||
|
||||
/**
|
||||
* 失败原因
|
||||
*/
|
||||
@ExcelProperty(value = "失败原因")
|
||||
private String failureReason;
|
||||
|
||||
/**
|
||||
* 关联业务ID
|
||||
*/
|
||||
private Long relatedId;
|
||||
|
||||
/**
|
||||
* 关联业务类型
|
||||
*/
|
||||
@ExcelProperty(value = "关联业务类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_related_type")
|
||||
private String relatedType;
|
||||
|
||||
/**
|
||||
* 扩展字段1
|
||||
*/
|
||||
private String extField1;
|
||||
|
||||
/**
|
||||
* 扩展字段2
|
||||
*/
|
||||
private String extField2;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
}
|
||||
-145
@@ -1,145 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgBatchPermission;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 批次权限配置视图对象 xg_batch_permission
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgBatchPermission.class)
|
||||
public class XgBatchPermissionVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 权限配置ID
|
||||
*/
|
||||
@ExcelProperty(value = "权限配置ID")
|
||||
private Long permissionId;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
@ExcelProperty(value = "批次ID")
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 用户组类型
|
||||
*/
|
||||
@ExcelProperty(value = "用户组类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_user_group_type")
|
||||
private String userGroupType;
|
||||
|
||||
/**
|
||||
* 用户组名称
|
||||
*/
|
||||
@ExcelProperty(value = "用户组名称")
|
||||
private String userGroupName;
|
||||
|
||||
/**
|
||||
* 权限类型
|
||||
*/
|
||||
@ExcelProperty(value = "权限类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_permission_type")
|
||||
private String permissionType;
|
||||
|
||||
/**
|
||||
* 权限范围
|
||||
*/
|
||||
@ExcelProperty(value = "权限范围")
|
||||
private String permissionScope;
|
||||
|
||||
/**
|
||||
* 是否可查看
|
||||
*/
|
||||
@ExcelProperty(value = "是否可查看", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean canView;
|
||||
|
||||
/**
|
||||
* 是否可编辑
|
||||
*/
|
||||
@ExcelProperty(value = "是否可编辑", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean canEdit;
|
||||
|
||||
/**
|
||||
* 是否可审核
|
||||
*/
|
||||
@ExcelProperty(value = "是否可审核", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean canAudit;
|
||||
|
||||
/**
|
||||
* 是否可导出
|
||||
*/
|
||||
@ExcelProperty(value = "是否可导出", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean canExport;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
@ExcelProperty(value = "开始时间")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
@ExcelProperty(value = "结束时间")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@ExcelProperty(value = "排序号")
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_normal_disable")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
-169
@@ -1,169 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import org.dromara.xg.domain.XgBatchStudentRelation;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 批次学生关联视图对象 xg_batch_student_relation
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Data
|
||||
@AutoMapper(target = XgBatchStudentRelation.class)
|
||||
public class XgBatchStudentRelationVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 关联ID
|
||||
*/
|
||||
private Long relationId;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 批次编码
|
||||
*/
|
||||
private String batchCode;
|
||||
|
||||
/**
|
||||
* 批次名称
|
||||
*/
|
||||
private String batchName;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
private String studentNumber;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 学生性别
|
||||
*/
|
||||
private String studentGender;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 提交状态:DRAFT-草稿,SUBMITTED-已提交,WITHDRAWN-已撤回
|
||||
*/
|
||||
private String submissionStatus;
|
||||
|
||||
/**
|
||||
* 提交时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime submissionTime;
|
||||
|
||||
/**
|
||||
* 审核状态:PENDING-待审核,APPROVED-已审核,REJECTED-已拒绝
|
||||
*/
|
||||
private String approvalStatus;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime approvalTime;
|
||||
|
||||
/**
|
||||
* 审核人ID
|
||||
*/
|
||||
private Long approvalBy;
|
||||
|
||||
/**
|
||||
* 审核人姓名
|
||||
*/
|
||||
private String approvalByName;
|
||||
|
||||
/**
|
||||
* 审核意见
|
||||
*/
|
||||
private String approvalComments;
|
||||
|
||||
/**
|
||||
* 最后编辑时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime lastEditTime;
|
||||
|
||||
/**
|
||||
* 提交次数
|
||||
*/
|
||||
private Integer submissionCount;
|
||||
|
||||
/**
|
||||
* 是否允许编辑:0-否,1-是
|
||||
*/
|
||||
private Integer allowEdit;
|
||||
|
||||
/**
|
||||
* 扩展字段1
|
||||
*/
|
||||
private String extField1;
|
||||
|
||||
/**
|
||||
* 扩展字段2
|
||||
*/
|
||||
private String extField2;
|
||||
|
||||
/**
|
||||
* 扩展字段3
|
||||
*/
|
||||
private String extField3;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private Long updateBy;
|
||||
}
|
||||
-117
@@ -1,117 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgBusinessPeriod;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 业务期管理视图对象 xg_business_period
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgBusinessPeriod.class)
|
||||
public class XgBusinessPeriodVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 业务期ID
|
||||
*/
|
||||
@ExcelProperty(value = "业务期ID")
|
||||
private Long businessPeriodId;
|
||||
|
||||
/**
|
||||
* 业务期名称
|
||||
*/
|
||||
@ExcelProperty(value = "业务期名称")
|
||||
private String periodName;
|
||||
|
||||
/**
|
||||
* 业务期代码
|
||||
*/
|
||||
@ExcelProperty(value = "业务期代码")
|
||||
private String periodCode;
|
||||
|
||||
/**
|
||||
* 业务期类型
|
||||
*/
|
||||
@ExcelProperty(value = "业务期类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_business_period_type")
|
||||
private String periodType;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
@ExcelProperty(value = "开始时间")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
@ExcelProperty(value = "结束时间")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
/**
|
||||
* 是否激活
|
||||
*/
|
||||
@ExcelProperty(value = "是否激活", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean isActive;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@ExcelProperty(value = "排序号")
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_normal_disable")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
@ExcelProperty(value = "描述")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
-266
@@ -1,266 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgClassCadre;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 班级干部信息视图对象 xg_class_cadre
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgClassCadre.class)
|
||||
public class XgClassCadreVo extends XgClassCadre {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 班级ID,关联xg_class_info.id
|
||||
*/
|
||||
@ExcelProperty(value = "班级ID")
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 学生ID,关联xg_student_info.id
|
||||
*/
|
||||
@ExcelProperty(value = "学生ID")
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@ExcelProperty(value = "学号")
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
@ExcelProperty(value = "学生姓名")
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 职务编码
|
||||
*/
|
||||
@ExcelProperty(value = "职务编码")
|
||||
private String positionCode;
|
||||
|
||||
/**
|
||||
* 职务名称
|
||||
*/
|
||||
@ExcelProperty(value = "职务名称")
|
||||
private String positionName;
|
||||
|
||||
/**
|
||||
* 职务级别:1-班长,2-副班长,3-委员,9-普通成员
|
||||
*/
|
||||
@ExcelProperty(value = "职务级别")
|
||||
private Integer positionLevel;
|
||||
|
||||
/**
|
||||
* 职务类别:class-班级干部,party-党团干部,other-其他
|
||||
*/
|
||||
@ExcelProperty(value = "职务类别")
|
||||
private String positionCategory;
|
||||
|
||||
/**
|
||||
* 任职日期
|
||||
*/
|
||||
@ExcelProperty(value = "任职日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date appointmentDate;
|
||||
|
||||
/**
|
||||
* 任期开始日期
|
||||
*/
|
||||
@ExcelProperty(value = "任期开始日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date termStartDate;
|
||||
|
||||
/**
|
||||
* 任期结束日期
|
||||
*/
|
||||
@ExcelProperty(value = "任期结束日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date termEndDate;
|
||||
|
||||
/**
|
||||
* 任期时长(月)
|
||||
*/
|
||||
@ExcelProperty(value = "任期时长(月)")
|
||||
private Integer termDuration;
|
||||
|
||||
/**
|
||||
* 是否现任:0-否,1-是
|
||||
*/
|
||||
@ExcelProperty(value = "是否现任")
|
||||
private Boolean isCurrent;
|
||||
|
||||
/**
|
||||
* 任职状态:1-在任,2-到期,3-辞职,4-免职,5-调任
|
||||
*/
|
||||
@ExcelProperty(value = "任职状态")
|
||||
private String cadreStatus;
|
||||
|
||||
/**
|
||||
* 是否兼职:0-否,1-是
|
||||
*/
|
||||
@ExcelProperty(value = "是否兼职")
|
||||
private Boolean isConcurrent;
|
||||
|
||||
/**
|
||||
* 兼任职务列表
|
||||
*/
|
||||
@ExcelProperty(value = "兼任职务列表")
|
||||
private String concurrentPositions;
|
||||
|
||||
/**
|
||||
* 任命人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "任命人姓名")
|
||||
private String appointerName;
|
||||
|
||||
/**
|
||||
* 任命原因
|
||||
*/
|
||||
@ExcelProperty(value = "任命原因")
|
||||
private String appointmentReason;
|
||||
|
||||
/**
|
||||
* 工作表现:excellent-优秀,good-良好,average-一般,poor-较差
|
||||
*/
|
||||
@ExcelProperty(value = "工作表现")
|
||||
private String workPerformance;
|
||||
|
||||
/**
|
||||
* 表现评分(0-10分)
|
||||
*/
|
||||
@ExcelProperty(value = "表现评分")
|
||||
private BigDecimal performanceScore;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
@ExcelProperty(value = "联系电话")
|
||||
private String contactPhone;
|
||||
|
||||
/**
|
||||
* 联系邮箱
|
||||
*/
|
||||
@ExcelProperty(value = "联系邮箱")
|
||||
private String contactEmail;
|
||||
|
||||
/**
|
||||
* 备注信息
|
||||
*/
|
||||
@ExcelProperty(value = "备注信息")
|
||||
private String remark;
|
||||
|
||||
// 关联信息字段
|
||||
/**
|
||||
* 班级编码
|
||||
*/
|
||||
@ExcelProperty(value = "班级编码")
|
||||
private String classCode;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
@ExcelProperty(value = "班级名称")
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
@ExcelProperty(value = "学院名称")
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 年级
|
||||
*/
|
||||
@ExcelProperty(value = "年级")
|
||||
private String grade;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
@ExcelProperty(value = "专业名称")
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 职责描述
|
||||
*/
|
||||
@ExcelProperty(value = "职责描述")
|
||||
private String responsibilities;
|
||||
|
||||
/**
|
||||
* 具体职务
|
||||
*/
|
||||
@ExcelProperty(value = "具体职务")
|
||||
private String duties;
|
||||
|
||||
/**
|
||||
* 剩余任期天数
|
||||
*/
|
||||
@ExcelProperty(value = "剩余任期天数")
|
||||
private Integer daysRemaining;
|
||||
|
||||
/**
|
||||
* 任职状态显示文本
|
||||
*/
|
||||
@ExcelProperty(value = "任职状态显示")
|
||||
private String cadreStatusText;
|
||||
|
||||
/**
|
||||
* 职务级别显示文本
|
||||
*/
|
||||
@ExcelProperty(value = "职务级别显示")
|
||||
private String positionLevelText;
|
||||
|
||||
/**
|
||||
* 工作表现显示文本
|
||||
*/
|
||||
@ExcelProperty(value = "工作表现显示")
|
||||
private String workPerformanceText;
|
||||
|
||||
/**
|
||||
* 是否现任显示文本
|
||||
*/
|
||||
@ExcelProperty(value = "是否现任显示")
|
||||
private String isCurrentText;
|
||||
|
||||
/**
|
||||
* 是否兼职显示文本
|
||||
*/
|
||||
@ExcelProperty(value = "是否兼职显示")
|
||||
private String isConcurrentText;
|
||||
|
||||
// 以下是从基类继承的字段,这里显式声明用于MyBatis映射
|
||||
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;
|
||||
}
|
||||
-249
@@ -1,249 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.xg.domain.XgClassInfo;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 班级信息视图对象 xg_class_info
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-14
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgClassInfo.class)
|
||||
public class XgClassInfoVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 班级代码
|
||||
*/
|
||||
@ExcelProperty(value = "班级代码")
|
||||
private String classCode;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
@ExcelProperty(value = "班级名称")
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 班级类型
|
||||
*/
|
||||
@ExcelProperty(value = "班级类型")
|
||||
private String classType;
|
||||
|
||||
/**
|
||||
* 年级
|
||||
*/
|
||||
@ExcelProperty(value = "年级")
|
||||
private String grade;
|
||||
|
||||
/**
|
||||
* 入学年份
|
||||
*/
|
||||
@ExcelProperty(value = "入学年份")
|
||||
private Integer enrollmentYear;
|
||||
|
||||
/**
|
||||
* 毕业年份
|
||||
*/
|
||||
@ExcelProperty(value = "毕业年份")
|
||||
private Integer graduationYear;
|
||||
|
||||
/**
|
||||
* 专业代码
|
||||
*/
|
||||
@ExcelProperty(value = "专业代码")
|
||||
private String majorCode;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
@ExcelProperty(value = "专业名称")
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 学院代码
|
||||
*/
|
||||
@ExcelProperty(value = "学院代码")
|
||||
private String collegeCode;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
@ExcelProperty(value = "学院名称")
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 辅导员ID
|
||||
*/
|
||||
@ExcelProperty(value = "辅导员ID")
|
||||
private Long counselorId;
|
||||
|
||||
/**
|
||||
* 辅导员姓名
|
||||
*/
|
||||
@ExcelProperty(value = "辅导员")
|
||||
private String counselorName;
|
||||
|
||||
/**
|
||||
* 班主任ID
|
||||
*/
|
||||
@ExcelProperty(value = "班主任ID")
|
||||
private Long classTeacherId;
|
||||
|
||||
/**
|
||||
* 班主任姓名
|
||||
*/
|
||||
@ExcelProperty(value = "班主任")
|
||||
private String classTeacherName;
|
||||
|
||||
/**
|
||||
* 班级状态
|
||||
*/
|
||||
@ExcelProperty(value = "班级状态")
|
||||
private String classStatus;
|
||||
|
||||
/**
|
||||
* 当前学生数量
|
||||
*/
|
||||
@ExcelProperty(value = "当前学生数量")
|
||||
private Integer currentStudentCount;
|
||||
|
||||
/**
|
||||
* 最大学生数量
|
||||
*/
|
||||
@ExcelProperty(value = "最大学生数量")
|
||||
private Integer maxStudentCount;
|
||||
|
||||
/**
|
||||
* 男生人数
|
||||
*/
|
||||
@ExcelProperty(value = "男生人数")
|
||||
private Integer maleCount;
|
||||
|
||||
/**
|
||||
* 女生人数
|
||||
*/
|
||||
@ExcelProperty(value = "女生人数")
|
||||
private Integer femaleCount;
|
||||
|
||||
/**
|
||||
* 班级描述
|
||||
*/
|
||||
@ExcelProperty(value = "班级描述")
|
||||
private String classDescription;
|
||||
|
||||
/**
|
||||
* 班级备注
|
||||
*/
|
||||
@ExcelProperty(value = "班级备注")
|
||||
private String classNotes;
|
||||
|
||||
/**
|
||||
* 扩展字段1
|
||||
*/
|
||||
@ExcelProperty(value = "扩展字段1")
|
||||
private String extField1;
|
||||
|
||||
/**
|
||||
* 扩展字段2
|
||||
*/
|
||||
@ExcelProperty(value = "扩展字段2")
|
||||
private String extField2;
|
||||
|
||||
/**
|
||||
* 扩展字段3
|
||||
*/
|
||||
@ExcelProperty(value = "扩展字段3")
|
||||
private String extField3;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 获取学院代码
|
||||
*/
|
||||
public String getCollegeCode() {
|
||||
return this.collegeCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取辅导员ID
|
||||
*/
|
||||
public Long getCounselorId() {
|
||||
return this.counselorId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班主任ID
|
||||
*/
|
||||
public Long getClassTeacherId() {
|
||||
return this.classTeacherId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前学生数
|
||||
*/
|
||||
public Integer getCurrentStudentCount() {
|
||||
return this.currentStudentCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取男生数量
|
||||
*/
|
||||
public Integer getMaleCount() {
|
||||
return this.maleCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取女生数量
|
||||
*/
|
||||
public Integer getFemaleCount() {
|
||||
return this.femaleCount;
|
||||
}
|
||||
|
||||
}
|
||||
-166
@@ -1,166 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.xg.domain.XgClassStudent;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 班级学生关系视图对象 xg_class_student
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgClassStudent.class)
|
||||
public class XgClassStudentVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 班级ID
|
||||
*/
|
||||
@ExcelProperty(value = "班级ID")
|
||||
private Long classId;
|
||||
|
||||
/**
|
||||
* 班级代码
|
||||
*/
|
||||
@ExcelProperty(value = "班级代码")
|
||||
private String classCode;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
@ExcelProperty(value = "班级名称")
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
@ExcelProperty(value = "学生ID")
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学生学号
|
||||
*/
|
||||
@ExcelProperty(value = "学号")
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
@ExcelProperty(value = "学生姓名")
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 加入班级时间
|
||||
*/
|
||||
@ExcelProperty(value = "加入班级时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date joinTime;
|
||||
|
||||
/**
|
||||
* 离开班级时间
|
||||
*/
|
||||
@ExcelProperty(value = "离开班级时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date leaveTime;
|
||||
|
||||
/**
|
||||
* 班级职务
|
||||
*/
|
||||
@ExcelProperty(value = "班级职务", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_class_position")
|
||||
private String classPosition;
|
||||
|
||||
/**
|
||||
* 职务开始时间
|
||||
*/
|
||||
@ExcelProperty(value = "职务开始时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date positionStartTime;
|
||||
|
||||
/**
|
||||
* 职务结束时间
|
||||
*/
|
||||
@ExcelProperty(value = "职务结束时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date positionEndTime;
|
||||
|
||||
/**
|
||||
* 关系状态
|
||||
*/
|
||||
@ExcelProperty(value = "关系状态")
|
||||
private String relationStatus;
|
||||
|
||||
/**
|
||||
* 转班原因
|
||||
*/
|
||||
@ExcelProperty(value = "转班原因")
|
||||
private String transferReason;
|
||||
|
||||
/**
|
||||
* 原班级代码
|
||||
*/
|
||||
@ExcelProperty(value = "原班级代码")
|
||||
private String originalClassCode;
|
||||
|
||||
/**
|
||||
* 目标班级代码
|
||||
*/
|
||||
@ExcelProperty(value = "目标班级代码")
|
||||
private String targetClassCode;
|
||||
|
||||
/**
|
||||
* 是否当前班级
|
||||
*/
|
||||
@ExcelProperty(value = "是否当前班级")
|
||||
private Integer isCurrentClass;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
}
|
||||
BIN
Binary file not shown.
-220
@@ -1,220 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 信息采集批次视图对象 xg_collection_batch
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class XgCollectionBatchVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
// 手动添加缺失的getter方法,解决编译错误
|
||||
public Long getBatchId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getBatchName() {
|
||||
return batchName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 批次编号
|
||||
*/
|
||||
@ExcelProperty(value = "批次编号")
|
||||
private String batchCode;
|
||||
|
||||
/**
|
||||
* 批次名称
|
||||
*/
|
||||
@ExcelProperty(value = "批次名称")
|
||||
private String batchName;
|
||||
|
||||
/**
|
||||
* 批次描述
|
||||
*/
|
||||
@ExcelProperty(value = "批次描述")
|
||||
private String batchDescription;
|
||||
|
||||
/**
|
||||
* 批次类型
|
||||
*/
|
||||
@ExcelProperty(value = "批次类型")
|
||||
private String batchType;
|
||||
|
||||
/**
|
||||
* 学年
|
||||
*/
|
||||
@ExcelProperty(value = "学年")
|
||||
private String academicYear;
|
||||
|
||||
/**
|
||||
* 学期
|
||||
*/
|
||||
@ExcelProperty(value = "学期")
|
||||
private String semester;
|
||||
|
||||
/**
|
||||
* 适用范围
|
||||
*/
|
||||
@ExcelProperty(value = "适用范围")
|
||||
private String scopeType;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
@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 = "批次状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_batch_status")
|
||||
private String batchStatus;
|
||||
|
||||
/**
|
||||
* 发布状态
|
||||
*/
|
||||
@ExcelProperty(value = "发布状态")
|
||||
private String publishStatus;
|
||||
|
||||
/**
|
||||
* 负责人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "负责人")
|
||||
private String responsiblePersonName;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
@ExcelProperty(value = "联系电话")
|
||||
private String contactPhone;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
// ==================== 统计字段 ====================
|
||||
|
||||
/**
|
||||
* 总学生数
|
||||
*/
|
||||
@ExcelProperty(value = "总学生数")
|
||||
private Integer totalStudents;
|
||||
|
||||
/**
|
||||
* 已提交学生数
|
||||
*/
|
||||
@ExcelProperty(value = "已提交学生数")
|
||||
private Integer submittedStudents;
|
||||
|
||||
/**
|
||||
* 已通过学生数
|
||||
*/
|
||||
@ExcelProperty(value = "已通过学生数")
|
||||
private Integer approvedStudents;
|
||||
|
||||
/**
|
||||
* 已拒绝学生数
|
||||
*/
|
||||
@ExcelProperty(value = "已拒绝学生数")
|
||||
private Integer rejectedStudents;
|
||||
|
||||
/**
|
||||
* 完成率
|
||||
*/
|
||||
@ExcelProperty(value = "完成率(%)")
|
||||
private Double completionRate;
|
||||
|
||||
// ==================== 手动添加的 setter 方法 ====================
|
||||
|
||||
/**
|
||||
* 设置总学生数
|
||||
*/
|
||||
public void setTotalStudents(Integer totalStudents) {
|
||||
this.totalStudents = totalStudents;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置已提交学生数
|
||||
*/
|
||||
public void setSubmittedStudents(Integer submittedStudents) {
|
||||
this.submittedStudents = submittedStudents;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置已通过学生数
|
||||
*/
|
||||
public void setApprovedStudents(Integer approvedStudents) {
|
||||
this.approvedStudents = approvedStudents;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置已拒绝学生数
|
||||
*/
|
||||
public void setRejectedStudents(Integer rejectedStudents) {
|
||||
this.rejectedStudents = rejectedStudents;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置完成率
|
||||
*/
|
||||
public void setCompletionRate(Double completionRate) {
|
||||
this.completionRate = completionRate;
|
||||
}
|
||||
}
|
||||
-108
@@ -1,108 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgDictData;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import lombok.Data;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 数据字典视图对象 xg_dict_data
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class XgDictDataVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 字典数据ID
|
||||
*/
|
||||
@ExcelProperty(value = "字典数据ID")
|
||||
private Long dictDataId;
|
||||
|
||||
/**
|
||||
* 字典类型
|
||||
*/
|
||||
@ExcelProperty(value = "字典类型")
|
||||
private String dictType;
|
||||
|
||||
/**
|
||||
* 字典标签
|
||||
*/
|
||||
@ExcelProperty(value = "字典标签")
|
||||
private String dictLabel;
|
||||
|
||||
/**
|
||||
* 字典键值
|
||||
*/
|
||||
@ExcelProperty(value = "字典键值")
|
||||
private String dictValue;
|
||||
|
||||
/**
|
||||
* 字典排序
|
||||
*/
|
||||
@ExcelProperty(value = "字典排序")
|
||||
private Integer dictSort;
|
||||
|
||||
/**
|
||||
* 样式属性
|
||||
*/
|
||||
@ExcelProperty(value = "样式属性")
|
||||
private String cssClass;
|
||||
|
||||
/**
|
||||
* 表格字典样式
|
||||
*/
|
||||
@ExcelProperty(value = "表格字典样式")
|
||||
private String listClass;
|
||||
|
||||
/**
|
||||
* 是否默认
|
||||
*/
|
||||
@ExcelProperty(value = "是否默认", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean isDefault;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_normal_disable")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
-142
@@ -1,142 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgNoticeRead;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import lombok.Data;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 通知阅读记录视图对象 xg_notice_read
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class XgNoticeReadVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 阅读记录ID
|
||||
*/
|
||||
@ExcelProperty(value = "阅读记录ID")
|
||||
private Long readId;
|
||||
|
||||
/**
|
||||
* 通知ID
|
||||
*/
|
||||
@ExcelProperty(value = "通知ID")
|
||||
private Long noticeId;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@ExcelProperty(value = "用户ID")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户类型
|
||||
*/
|
||||
@ExcelProperty(value = "用户类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_user_type")
|
||||
private String userType;
|
||||
|
||||
/**
|
||||
* 阅读时间
|
||||
*/
|
||||
@ExcelProperty(value = "阅读时间")
|
||||
private LocalDateTime readTime;
|
||||
|
||||
/**
|
||||
* 阅读时长(秒)
|
||||
*/
|
||||
@ExcelProperty(value = "阅读时长(秒)")
|
||||
private Integer readDuration;
|
||||
|
||||
/**
|
||||
* 阅读状态
|
||||
*/
|
||||
@ExcelProperty(value = "阅读状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_read_status")
|
||||
private String readStatus;
|
||||
|
||||
/**
|
||||
* 阅读设备
|
||||
*/
|
||||
@ExcelProperty(value = "阅读设备")
|
||||
private String readDevice;
|
||||
|
||||
/**
|
||||
* IP地址
|
||||
*/
|
||||
@ExcelProperty(value = "IP地址")
|
||||
private String ipAddress;
|
||||
|
||||
/**
|
||||
* 阅读位置
|
||||
*/
|
||||
@ExcelProperty(value = "阅读位置")
|
||||
private String readLocation;
|
||||
|
||||
/**
|
||||
* 是否完整阅读
|
||||
*/
|
||||
@ExcelProperty(value = "是否完整阅读", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean isFullRead;
|
||||
|
||||
/**
|
||||
* 阅读进度
|
||||
*/
|
||||
@ExcelProperty(value = "阅读进度(%)")
|
||||
private Integer readProgress;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
public String getRemark() {
|
||||
return remark;
|
||||
}
|
||||
|
||||
public void setRemark(String remark) {
|
||||
this.remark = remark;
|
||||
}
|
||||
|
||||
public Long getNoticeId() {
|
||||
return noticeId;
|
||||
}
|
||||
|
||||
public void setNoticeId(Long noticeId) {
|
||||
this.noticeId = noticeId;
|
||||
}
|
||||
}
|
||||
-141
@@ -1,141 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgNotice;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import lombok.Data;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 通知公告视图对象 xg_notice
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class XgNoticeVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 通知ID
|
||||
*/
|
||||
@ExcelProperty(value = "通知ID")
|
||||
private Long noticeId;
|
||||
|
||||
/**
|
||||
* 通知标题
|
||||
*/
|
||||
@ExcelProperty(value = "通知标题")
|
||||
private String noticeTitle;
|
||||
|
||||
/**
|
||||
* 通知类型
|
||||
*/
|
||||
@ExcelProperty(value = "通知类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_notice_type")
|
||||
private String noticeType;
|
||||
|
||||
/**
|
||||
* 通知内容
|
||||
*/
|
||||
@ExcelProperty(value = "通知内容")
|
||||
private String noticeContent;
|
||||
|
||||
/**
|
||||
* 发布范围
|
||||
*/
|
||||
@ExcelProperty(value = "发布范围")
|
||||
private String publishScope;
|
||||
|
||||
/**
|
||||
* 优先级
|
||||
*/
|
||||
@ExcelProperty(value = "优先级", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_notice_priority")
|
||||
private Integer priority;
|
||||
|
||||
/**
|
||||
* 是否置顶
|
||||
*/
|
||||
@ExcelProperty(value = "是否置顶", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean isTop;
|
||||
|
||||
/**
|
||||
* 发布时间
|
||||
*/
|
||||
@ExcelProperty(value = "发布时间")
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
/**
|
||||
* 过期时间
|
||||
*/
|
||||
@ExcelProperty(value = "过期时间")
|
||||
private LocalDateTime expireTime;
|
||||
|
||||
/**
|
||||
* 附件路径
|
||||
*/
|
||||
@ExcelProperty(value = "附件路径")
|
||||
private String attachmentPath;
|
||||
|
||||
/**
|
||||
* 阅读次数
|
||||
*/
|
||||
@ExcelProperty(value = "阅读次数")
|
||||
private Integer readCount;
|
||||
|
||||
/**
|
||||
* 发布状态
|
||||
*/
|
||||
@ExcelProperty(value = "发布状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_publish_status")
|
||||
private String publishStatus;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@ExcelProperty(value = "排序号")
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_normal_disable")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
-118
@@ -1,118 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgSemester;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 学期管理视图对象 xg_semester
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgSemester.class)
|
||||
public class XgSemesterVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 学期ID
|
||||
*/
|
||||
@ExcelProperty(value = "学期ID")
|
||||
private Long semesterId;
|
||||
|
||||
/**
|
||||
* 学年ID
|
||||
*/
|
||||
@ExcelProperty(value = "学年ID")
|
||||
private Long academicYearId;
|
||||
|
||||
/**
|
||||
* 学期名称
|
||||
*/
|
||||
@ExcelProperty(value = "学期名称")
|
||||
private String semesterName;
|
||||
|
||||
/**
|
||||
* 学期代码
|
||||
*/
|
||||
@ExcelProperty(value = "学期代码")
|
||||
private String semesterCode;
|
||||
|
||||
/**
|
||||
* 学期类型
|
||||
*/
|
||||
@ExcelProperty(value = "学期类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_semester_type")
|
||||
private String semesterType;
|
||||
|
||||
/**
|
||||
* 开始日期
|
||||
*/
|
||||
@ExcelProperty(value = "开始日期")
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 结束日期
|
||||
*/
|
||||
@ExcelProperty(value = "结束日期")
|
||||
private LocalDate endDate;
|
||||
|
||||
/**
|
||||
* 是否当前学期
|
||||
*/
|
||||
@ExcelProperty(value = "是否当前学期", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean isCurrent;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@ExcelProperty(value = "排序号")
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_normal_disable")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
-299
@@ -1,299 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 学生信息审核视图对象 XgStudentInfoApprovalVo
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Data
|
||||
public class XgStudentInfoApprovalVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 关联ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 批次名称
|
||||
*/
|
||||
private String batchName;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学生姓名
|
||||
*/
|
||||
private String studentName;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 班级代码
|
||||
*/
|
||||
private String classCode;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 学院代码
|
||||
*/
|
||||
private String collegeCode;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 专业代码
|
||||
*/
|
||||
private String majorCode;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 提交状态
|
||||
*/
|
||||
private String submissionStatus;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
private String approvalStatus;
|
||||
|
||||
/**
|
||||
* 提交时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime submissionTime;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime approvalTime;
|
||||
|
||||
/**
|
||||
* 审核人ID
|
||||
*/
|
||||
private Long approvalBy;
|
||||
|
||||
/**
|
||||
* 审核人姓名
|
||||
*/
|
||||
private String approvalByName;
|
||||
|
||||
/**
|
||||
* 审核意见
|
||||
*/
|
||||
private String approvalComments;
|
||||
|
||||
/**
|
||||
* 学生联系电话
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 学生身份证号
|
||||
*/
|
||||
private String idCard;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 统计信息 - 总数
|
||||
*/
|
||||
private Long totalCount;
|
||||
|
||||
/**
|
||||
* 统计信息 - 待审核数
|
||||
*/
|
||||
private Long pendingCount;
|
||||
|
||||
/**
|
||||
* 统计信息 - 已通过数
|
||||
*/
|
||||
private Long approvedCount;
|
||||
|
||||
/**
|
||||
* 统计信息 - 已拒绝数
|
||||
*/
|
||||
private Long rejectedCount;
|
||||
|
||||
/**
|
||||
* 统计信息 - 已提交数
|
||||
*/
|
||||
private Long submittedCount;
|
||||
|
||||
/**
|
||||
* 统计信息 - 草稿数
|
||||
*/
|
||||
private Long draftCount;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
// 手动添加setter方法以确保编译通过
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
}
|
||||
|
||||
public void setTotalCount(Long totalCount) {
|
||||
this.totalCount = totalCount;
|
||||
}
|
||||
|
||||
public void setPendingCount(Long pendingCount) {
|
||||
this.pendingCount = pendingCount;
|
||||
}
|
||||
|
||||
public void setApprovedCount(Long approvedCount) {
|
||||
this.approvedCount = approvedCount;
|
||||
}
|
||||
|
||||
public void setRejectedCount(Long rejectedCount) {
|
||||
this.rejectedCount = rejectedCount;
|
||||
}
|
||||
|
||||
public void setSubmittedCount(Long submittedCount) {
|
||||
this.submittedCount = submittedCount;
|
||||
}
|
||||
|
||||
public void setDraftCount(Long draftCount) {
|
||||
this.draftCount = draftCount;
|
||||
}
|
||||
|
||||
public void setStudentName(String studentName) {
|
||||
this.studentName = studentName;
|
||||
}
|
||||
|
||||
public void setStudentNo(String studentNo) {
|
||||
this.studentNo = studentNo;
|
||||
}
|
||||
|
||||
public void setClassCode(String classCode) {
|
||||
this.classCode = classCode;
|
||||
}
|
||||
|
||||
public void setClassName(String className) {
|
||||
this.className = className;
|
||||
}
|
||||
|
||||
public void setCollegeCode(String collegeCode) {
|
||||
this.collegeCode = collegeCode;
|
||||
}
|
||||
|
||||
public void setCollegeName(String collegeName) {
|
||||
this.collegeName = collegeName;
|
||||
}
|
||||
|
||||
public void setSubmissionStatus(String submissionStatus) {
|
||||
this.submissionStatus = submissionStatus;
|
||||
}
|
||||
|
||||
public void setApprovalStatus(String approvalStatus) {
|
||||
this.approvalStatus = approvalStatus;
|
||||
}
|
||||
|
||||
public void setSubmissionTime(LocalDateTime submissionTime) {
|
||||
this.submissionTime = submissionTime;
|
||||
}
|
||||
|
||||
public void setApprovalTime(LocalDateTime approvalTime) {
|
||||
this.approvalTime = approvalTime;
|
||||
}
|
||||
|
||||
public void setApprovalBy(Long approvalBy) {
|
||||
this.approvalBy = approvalBy;
|
||||
}
|
||||
|
||||
public void setApprovalComments(String approvalComments) {
|
||||
this.approvalComments = approvalComments;
|
||||
}
|
||||
|
||||
public void setUpdateTime(LocalDateTime updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(LocalDateTime createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public void setCreateBy(Long createBy) {
|
||||
this.createBy = createBy;
|
||||
}
|
||||
|
||||
public void setUpdateBy(Long updateBy) {
|
||||
this.updateBy = updateBy;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setStudentId(Long studentId) {
|
||||
this.studentId = studentId;
|
||||
}
|
||||
|
||||
public Long getCreateBy() {
|
||||
return createBy;
|
||||
}
|
||||
|
||||
public void setCreateBy(Long createBy) {
|
||||
this.createBy = createBy;
|
||||
}
|
||||
|
||||
public Long getUpdateBy() {
|
||||
return updateBy;
|
||||
}
|
||||
|
||||
public void setUpdateBy(Long updateBy) {
|
||||
this.updateBy = updateBy;
|
||||
}
|
||||
|
||||
}
|
||||
-163
@@ -1,163 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgStudentInfoHistory;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import lombok.Data;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 学生信息历史视图对象 xg_student_info_history
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class XgStudentInfoHistoryVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 历史记录ID
|
||||
*/
|
||||
@ExcelProperty(value = "历史记录ID")
|
||||
private Long historyId;
|
||||
|
||||
/**
|
||||
* 学生ID
|
||||
*/
|
||||
@ExcelProperty(value = "学生ID")
|
||||
private Long studentId;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@ExcelProperty(value = "学号")
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 变更类型
|
||||
*/
|
||||
@ExcelProperty(value = "变更类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_change_type")
|
||||
private String changeType;
|
||||
|
||||
/**
|
||||
* 变更字段
|
||||
*/
|
||||
@ExcelProperty(value = "变更字段")
|
||||
private String changeField;
|
||||
|
||||
/**
|
||||
* 变更前值
|
||||
*/
|
||||
@ExcelProperty(value = "变更前值")
|
||||
private String oldValue;
|
||||
|
||||
/**
|
||||
* 变更后值
|
||||
*/
|
||||
@ExcelProperty(value = "变更后值")
|
||||
private String newValue;
|
||||
|
||||
/**
|
||||
* 变更时间
|
||||
*/
|
||||
@ExcelProperty(value = "变更时间")
|
||||
private LocalDateTime changeTime;
|
||||
|
||||
/**
|
||||
* 变更原因
|
||||
*/
|
||||
@ExcelProperty(value = "变更原因")
|
||||
private String changeReason;
|
||||
|
||||
/**
|
||||
* 操作人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "操作人")
|
||||
private String operatorName;
|
||||
|
||||
/**
|
||||
* 批次ID
|
||||
*/
|
||||
@ExcelProperty(value = "批次ID")
|
||||
private Long batchId;
|
||||
|
||||
/**
|
||||
* 批次编号
|
||||
*/
|
||||
@ExcelProperty(value = "批次编号")
|
||||
private String batchCode;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
@ExcelProperty(value = "审核状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_audit_status")
|
||||
private String auditStatus;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
@ExcelProperty(value = "审核时间")
|
||||
private LocalDateTime auditTime;
|
||||
|
||||
/**
|
||||
* 审核人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "审核人")
|
||||
private String auditorName;
|
||||
|
||||
/**
|
||||
* 审核意见
|
||||
*/
|
||||
@ExcelProperty(value = "审核意见")
|
||||
private String auditComment;
|
||||
|
||||
/**
|
||||
* 数据来源
|
||||
*/
|
||||
@ExcelProperty(value = "数据来源")
|
||||
private String dataSource;
|
||||
|
||||
/**
|
||||
* 是否生效
|
||||
*/
|
||||
@ExcelProperty(value = "是否生效", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean isEffective;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
-495
@@ -1,495 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.xg.domain.XgStudentInfo;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 学生信息视图对象 xg_student_info
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgStudentInfo.class)
|
||||
public class XgStudentInfoVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 学号
|
||||
*/
|
||||
@ExcelProperty(value = "学号")
|
||||
private String studentNo;
|
||||
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
@ExcelProperty(value = "身份证号")
|
||||
private String idCard;
|
||||
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
@ExcelProperty(value = "姓名")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 姓名拼音
|
||||
*/
|
||||
@ExcelProperty(value = "姓名拼音")
|
||||
private String namePinyin;
|
||||
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
@ExcelProperty(value = "性别", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_student_gender")
|
||||
private String gender;
|
||||
|
||||
/**
|
||||
* 出生日期
|
||||
*/
|
||||
@ExcelProperty(value = "出生日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date birthDate;
|
||||
|
||||
/**
|
||||
* 民族
|
||||
*/
|
||||
@ExcelProperty(value = "民族")
|
||||
private String nation;
|
||||
|
||||
/**
|
||||
* 政治面貌
|
||||
*/
|
||||
@ExcelProperty(value = "政治面貌", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_political_status")
|
||||
private String politicalStatus;
|
||||
|
||||
/**
|
||||
* 学籍状态
|
||||
*/
|
||||
@ExcelProperty(value = "学籍状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_student_status")
|
||||
private String studentStatus;
|
||||
|
||||
/**
|
||||
* 入学年份
|
||||
*/
|
||||
@ExcelProperty(value = "入学年份")
|
||||
private Integer enrollmentYear;
|
||||
|
||||
/**
|
||||
* 入学日期
|
||||
*/
|
||||
@ExcelProperty(value = "入学日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date enrollmentDate;
|
||||
|
||||
/**
|
||||
* 学制(年)
|
||||
*/
|
||||
@ExcelProperty(value = "学制")
|
||||
private Integer schoolSystem;
|
||||
|
||||
/**
|
||||
* 学历层次
|
||||
*/
|
||||
@ExcelProperty(value = "学历层次")
|
||||
private String educationLevel;
|
||||
|
||||
/**
|
||||
* 培养方式
|
||||
*/
|
||||
@ExcelProperty(value = "培养方式", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_training_type")
|
||||
private String trainingType;
|
||||
|
||||
/**
|
||||
* 专业代码
|
||||
*/
|
||||
@ExcelProperty(value = "专业代码")
|
||||
private String majorCode;
|
||||
|
||||
/**
|
||||
* 专业名称
|
||||
*/
|
||||
@ExcelProperty(value = "专业名称")
|
||||
private String majorName;
|
||||
|
||||
/**
|
||||
* 班级代码
|
||||
*/
|
||||
@ExcelProperty(value = "班级代码")
|
||||
private String classCode;
|
||||
|
||||
/**
|
||||
* 班级名称
|
||||
*/
|
||||
@ExcelProperty(value = "班级名称")
|
||||
private String className;
|
||||
|
||||
/**
|
||||
* 学院代码
|
||||
*/
|
||||
@ExcelProperty(value = "学院代码")
|
||||
private String collegeCode;
|
||||
|
||||
/**
|
||||
* 学院名称
|
||||
*/
|
||||
@ExcelProperty(value = "学院名称")
|
||||
private String collegeName;
|
||||
|
||||
/**
|
||||
* 手机号码
|
||||
*/
|
||||
@ExcelProperty(value = "手机号码")
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 电子邮箱
|
||||
*/
|
||||
@ExcelProperty(value = "电子邮箱")
|
||||
private String email;
|
||||
|
||||
/**
|
||||
* QQ号码
|
||||
*/
|
||||
@ExcelProperty(value = "QQ号码")
|
||||
private String qq;
|
||||
|
||||
/**
|
||||
* 微信号
|
||||
*/
|
||||
@ExcelProperty(value = "微信号")
|
||||
private String wechat;
|
||||
|
||||
/**
|
||||
* 现住址
|
||||
*/
|
||||
@ExcelProperty(value = "现住址")
|
||||
private String currentAddress;
|
||||
|
||||
/**
|
||||
* 家庭地址
|
||||
*/
|
||||
@ExcelProperty(value = "家庭地址")
|
||||
private String homeAddress;
|
||||
|
||||
/**
|
||||
* 户籍所在地
|
||||
*/
|
||||
@ExcelProperty(value = "户籍所在地")
|
||||
private String domicilePlace;
|
||||
|
||||
/**
|
||||
* 邮政编码
|
||||
*/
|
||||
@ExcelProperty(value = "邮政编码")
|
||||
private String postalCode;
|
||||
|
||||
/**
|
||||
* 紧急联系人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "紧急联系人")
|
||||
private String emergencyContactName;
|
||||
|
||||
/**
|
||||
* 紧急联系人关系
|
||||
*/
|
||||
@ExcelProperty(value = "紧急联系人关系")
|
||||
private String emergencyContactRelation;
|
||||
|
||||
/**
|
||||
* 紧急联系人电话
|
||||
*/
|
||||
@ExcelProperty(value = "紧急联系人电话")
|
||||
private String emergencyContactPhone;
|
||||
|
||||
/**
|
||||
* 父亲姓名
|
||||
*/
|
||||
@ExcelProperty(value = "父亲姓名")
|
||||
private String fatherName;
|
||||
|
||||
/**
|
||||
* 父亲联系电话
|
||||
*/
|
||||
@ExcelProperty(value = "父亲联系电话")
|
||||
private String fatherPhone;
|
||||
|
||||
/**
|
||||
* 父亲工作单位
|
||||
*/
|
||||
@ExcelProperty(value = "父亲工作单位")
|
||||
private String fatherWorkUnit;
|
||||
|
||||
/**
|
||||
* 母亲姓名
|
||||
*/
|
||||
@ExcelProperty(value = "母亲姓名")
|
||||
private String motherName;
|
||||
|
||||
/**
|
||||
* 母亲联系电话
|
||||
*/
|
||||
@ExcelProperty(value = "母亲联系电话")
|
||||
private String motherPhone;
|
||||
|
||||
/**
|
||||
* 母亲工作单位
|
||||
*/
|
||||
@ExcelProperty(value = "母亲工作单位")
|
||||
private String motherWorkUnit;
|
||||
|
||||
/**
|
||||
* 身高(cm)
|
||||
*/
|
||||
@ExcelProperty(value = "身高(cm)")
|
||||
private Integer height;
|
||||
|
||||
/**
|
||||
* 体重(kg)
|
||||
*/
|
||||
@ExcelProperty(value = "体重(kg)")
|
||||
private BigDecimal weight;
|
||||
|
||||
/**
|
||||
* 血型
|
||||
*/
|
||||
@ExcelProperty(value = "血型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_blood_type")
|
||||
private String bloodType;
|
||||
|
||||
/**
|
||||
* 特殊体质或疾病
|
||||
*/
|
||||
@ExcelProperty(value = "特殊体质或疾病")
|
||||
private String specialCondition;
|
||||
|
||||
/**
|
||||
* 宗教信仰
|
||||
*/
|
||||
@ExcelProperty(value = "宗教信仰")
|
||||
private String religion;
|
||||
|
||||
/**
|
||||
* 特长爱好
|
||||
*/
|
||||
@ExcelProperty(value = "特长爱好")
|
||||
private String hobbies;
|
||||
|
||||
/**
|
||||
* 是否贫困生
|
||||
*/
|
||||
@ExcelProperty(value = "是否贫困生")
|
||||
private Integer isPoorStudent;
|
||||
|
||||
/**
|
||||
* 贫困等级
|
||||
*/
|
||||
@ExcelProperty(value = "贫困等级")
|
||||
private String povertyLevel;
|
||||
|
||||
/**
|
||||
* 是否享受助学金
|
||||
*/
|
||||
@ExcelProperty(value = "是否享受助学金")
|
||||
private Integer hasGrant;
|
||||
|
||||
/**
|
||||
* 助学金金额
|
||||
*/
|
||||
@ExcelProperty(value = "助学金金额")
|
||||
private BigDecimal grantAmount;
|
||||
|
||||
/**
|
||||
* 是否办理助学贷款
|
||||
*/
|
||||
@ExcelProperty(value = "是否办理助学贷款")
|
||||
private Integer hasLoan;
|
||||
|
||||
/**
|
||||
* 助学贷款金额
|
||||
*/
|
||||
@ExcelProperty(value = "助学贷款金额")
|
||||
private BigDecimal loanAmount;
|
||||
|
||||
/**
|
||||
* 银行卡号
|
||||
*/
|
||||
@ExcelProperty(value = "银行卡号")
|
||||
private String bankCardNo;
|
||||
|
||||
/**
|
||||
* 开户银行
|
||||
*/
|
||||
@ExcelProperty(value = "开户银行")
|
||||
private String bankName;
|
||||
|
||||
/**
|
||||
* 开户支行
|
||||
*/
|
||||
@ExcelProperty(value = "开户支行")
|
||||
private String bankBranch;
|
||||
|
||||
/**
|
||||
* 信息状态
|
||||
*/
|
||||
@ExcelProperty(value = "信息状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_info_status")
|
||||
private String infoStatus;
|
||||
|
||||
/**
|
||||
* 数据来源
|
||||
*/
|
||||
@ExcelProperty(value = "数据来源")
|
||||
private String dataSource;
|
||||
|
||||
/**
|
||||
* 最后修改批次ID
|
||||
*/
|
||||
@ExcelProperty(value = "最后修改批次ID")
|
||||
private Long lastBatchId;
|
||||
|
||||
/**
|
||||
* 最后审核时间
|
||||
*/
|
||||
@ExcelProperty(value = "最后审核时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date lastAuditTime;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 获取主键ID
|
||||
*/
|
||||
public Long getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生姓名
|
||||
*/
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学号
|
||||
*/
|
||||
public String getStudentNo() {
|
||||
return this.studentNo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级名称
|
||||
*/
|
||||
public String getClassName() {
|
||||
return this.className;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取性别
|
||||
*/
|
||||
public String getGender() {
|
||||
return this.gender;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取手机号
|
||||
*/
|
||||
public String getPhone() {
|
||||
return this.phone;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学院代码
|
||||
*/
|
||||
public String getCollegeCode() {
|
||||
return this.collegeCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学院名称
|
||||
*/
|
||||
public String getCollegeName() {
|
||||
return this.collegeName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取专业代码
|
||||
*/
|
||||
public String getMajorCode() {
|
||||
return this.majorCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取专业名称
|
||||
*/
|
||||
public String getMajorName() {
|
||||
return this.majorName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取班级代码
|
||||
*/
|
||||
public String getClassCode() {
|
||||
return this.classCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生状态
|
||||
*/
|
||||
public String getStudentStatus() {
|
||||
return this.studentStatus;
|
||||
}
|
||||
|
||||
}
|
||||
-135
@@ -1,135 +0,0 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgSystemConfig;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import lombok.Data;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 系统配置视图对象 xg_system_config
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class XgSystemConfigVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 配置ID
|
||||
*/
|
||||
@ExcelProperty(value = "配置ID")
|
||||
private Long configId;
|
||||
|
||||
/**
|
||||
* 配置键
|
||||
*/
|
||||
@ExcelProperty(value = "配置键")
|
||||
private String configKey;
|
||||
|
||||
/**
|
||||
* 配置名称
|
||||
*/
|
||||
@ExcelProperty(value = "配置名称")
|
||||
private String configName;
|
||||
|
||||
/**
|
||||
* 配置值
|
||||
*/
|
||||
@ExcelProperty(value = "配置值")
|
||||
private String configValue;
|
||||
|
||||
/**
|
||||
* 配置类型
|
||||
*/
|
||||
@ExcelProperty(value = "配置类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "xg_config_type")
|
||||
private String configType;
|
||||
|
||||
/**
|
||||
* 配置分组
|
||||
*/
|
||||
@ExcelProperty(value = "配置分组")
|
||||
private String configGroup;
|
||||
|
||||
/**
|
||||
* 配置描述
|
||||
*/
|
||||
@ExcelProperty(value = "配置描述")
|
||||
private String configDescription;
|
||||
|
||||
/**
|
||||
* 默认值
|
||||
*/
|
||||
@ExcelProperty(value = "默认值")
|
||||
private String defaultValue;
|
||||
|
||||
/**
|
||||
* 是否系统内置
|
||||
*/
|
||||
@ExcelProperty(value = "是否系统内置", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean isSystem;
|
||||
|
||||
/**
|
||||
* 是否可编辑
|
||||
*/
|
||||
@ExcelProperty(value = "是否可编辑", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean isEditable;
|
||||
|
||||
/**
|
||||
* 是否可删除
|
||||
*/
|
||||
@ExcelProperty(value = "是否可删除", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Boolean isDeletable;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@ExcelProperty(value = "排序号")
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_normal_disable")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgAcademicYear;
|
||||
import org.dromara.xg.domain.vo.XgAcademicYearVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 学年管理Mapper接口
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
public interface XgAcademicYearMapper extends BaseMapperPlus<XgAcademicYear, XgAcademicYearVo> {
|
||||
|
||||
}
|
||||
-59
@@ -1,59 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgAuditRecord;
|
||||
import org.dromara.xg.domain.vo.XgAuditRecordVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 审核记录Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
public interface XgAuditRecordMapper extends BaseMapperPlus<XgAuditRecord, XgAuditRecordVo> {
|
||||
|
||||
/**
|
||||
* 根据业务ID查询审核记录
|
||||
*
|
||||
* @param businessType 业务类型
|
||||
* @param businessId 业务ID
|
||||
* @return 审核记录列表
|
||||
*/
|
||||
List<XgAuditRecordVo> selectByBusinessId(String businessType, Long businessId);
|
||||
|
||||
/**
|
||||
* 查询用户待审核的记录
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 待审核记录列表
|
||||
*/
|
||||
List<XgAuditRecordVo> selectPendingAuditsByUser(Long userId);
|
||||
|
||||
/**
|
||||
* 查询学生的审核记录
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @return 审核记录列表
|
||||
*/
|
||||
List<XgAuditRecordVo> selectByStudentId(Long studentId);
|
||||
|
||||
/**
|
||||
* 查询批次的审核记录
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 审核记录列表
|
||||
*/
|
||||
List<XgAuditRecordVo> selectByBatchId(Long batchId);
|
||||
|
||||
/**
|
||||
* 查询审核统计信息
|
||||
*
|
||||
* @param params 查询参数
|
||||
* @return 统计信息
|
||||
*/
|
||||
List<Map<String, Object>> selectAuditStatistics(Map<String, Object> params);
|
||||
|
||||
}
|
||||
-57
@@ -1,57 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgBatchOperationLog;
|
||||
import org.dromara.xg.domain.vo.XgBatchOperationLogVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 批次操作日志Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface XgBatchOperationLogMapper extends BaseMapperPlus<XgBatchOperationLog, XgBatchOperationLogVo> {
|
||||
|
||||
/**
|
||||
* 根据批次ID查询操作日志
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 操作日志列表
|
||||
*/
|
||||
List<XgBatchOperationLogVo> selectByBatchId(Long batchId);
|
||||
|
||||
/**
|
||||
* 根据操作类型查询日志
|
||||
*
|
||||
* @param operationType 操作类型
|
||||
* @return 操作日志列表
|
||||
*/
|
||||
List<XgBatchOperationLogVo> selectByOperationType(String operationType);
|
||||
|
||||
/**
|
||||
* 根据操作人查询日志
|
||||
*
|
||||
* @param operatorId 操作人ID
|
||||
* @return 操作日志列表
|
||||
*/
|
||||
List<XgBatchOperationLogVo> selectByOperatorId(Long operatorId);
|
||||
|
||||
/**
|
||||
* 查询最近的操作日志
|
||||
*
|
||||
* @param limit 限制数量
|
||||
* @return 操作日志列表
|
||||
*/
|
||||
List<XgBatchOperationLogVo> selectRecentLogs(int limit);
|
||||
|
||||
/**
|
||||
* 根据批次ID和操作类型查询日志
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param operationType 操作类型
|
||||
* @return 操作日志列表
|
||||
*/
|
||||
List<XgBatchOperationLogVo> selectByBatchIdAndOperationType(Long batchId, String operationType);
|
||||
}
|
||||
-76
@@ -1,76 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgBatchPermission;
|
||||
import org.dromara.xg.domain.vo.XgBatchPermissionVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 批次权限Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface XgBatchPermissionMapper extends BaseMapperPlus<XgBatchPermission, XgBatchPermissionVo> {
|
||||
|
||||
/**
|
||||
* 根据批次ID查询权限配置
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 权限配置列表
|
||||
*/
|
||||
List<XgBatchPermissionVo> selectByBatchId(Long batchId);
|
||||
|
||||
/**
|
||||
* 根据角色ID查询权限配置
|
||||
*
|
||||
* @param roleId 角色ID
|
||||
* @return 权限配置列表
|
||||
*/
|
||||
List<XgBatchPermissionVo> selectByRoleId(Long roleId);
|
||||
|
||||
/**
|
||||
* 根据批次ID和角色ID查询权限配置
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param roleId 角色ID
|
||||
* @return 权限配置
|
||||
*/
|
||||
XgBatchPermissionVo selectByBatchIdAndRoleId(Long batchId, Long roleId);
|
||||
|
||||
/**
|
||||
* 根据权限类型查询权限配置
|
||||
*
|
||||
* @param permissionType 权限类型
|
||||
* @return 权限配置列表
|
||||
*/
|
||||
List<XgBatchPermissionVo> selectByPermissionType(String permissionType);
|
||||
|
||||
/**
|
||||
* 查询活跃的权限配置
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 活跃权限配置列表
|
||||
*/
|
||||
List<XgBatchPermissionVo> selectActivePermissions(Long batchId);
|
||||
|
||||
/**
|
||||
* 根据用户ID查询用户在批次中的权限
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param userId 用户ID
|
||||
* @return 用户权限配置
|
||||
*/
|
||||
XgBatchPermissionVo selectUserPermission(Long batchId, Long userId);
|
||||
|
||||
/**
|
||||
* 批量更新权限状态
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param roleIds 角色ID列表
|
||||
* @param isActive 是否活跃
|
||||
* @return 更新数量
|
||||
*/
|
||||
int batchUpdatePermissionStatus(Long batchId, List<Long> roleIds, Integer isActive);
|
||||
}
|
||||
-161
@@ -1,161 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgBatchStudentRelation;
|
||||
import org.dromara.xg.domain.vo.XgBatchStudentRelationVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
|
||||
/**
|
||||
* 批次学生关联Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface XgBatchStudentRelationMapper extends BaseMapperPlus<XgBatchStudentRelation, XgBatchStudentRelationVo> {
|
||||
|
||||
/**
|
||||
* 根据批次ID查询学生关联列表
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 学生关联列表
|
||||
*/
|
||||
List<XgBatchStudentRelationVo> selectByBatchId(Long batchId);
|
||||
|
||||
/**
|
||||
* 根据学生ID查询批次关联列表
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @return 批次关联列表
|
||||
*/
|
||||
List<XgBatchStudentRelationVo> selectByStudentId(Long studentId);
|
||||
|
||||
/**
|
||||
* 根据批次ID和学生ID查询关联信息
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param studentId 学生ID
|
||||
* @return 关联信息
|
||||
*/
|
||||
XgBatchStudentRelationVo selectByBatchAndStudent(Long batchId, Long studentId);
|
||||
|
||||
/**
|
||||
* 根据学号查询批次关联列表
|
||||
*
|
||||
* @param studentNumber 学号
|
||||
* @return 批次关联列表
|
||||
*/
|
||||
List<XgBatchStudentRelationVo> selectByStudentNumber(String studentNumber);
|
||||
|
||||
/**
|
||||
* 查询批次学生统计信息
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 统计信息
|
||||
*/
|
||||
Map<String, Object> selectBatchStudentStatistics(Long batchId);
|
||||
|
||||
/**
|
||||
* 查询待审核的学生列表
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 待审核学生列表
|
||||
*/
|
||||
List<XgBatchStudentRelationVo> selectPendingApprovalStudents(Long batchId);
|
||||
|
||||
/**
|
||||
* 批量更新学生提交状态
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param studentIds 学生ID列表
|
||||
* @param status 状态
|
||||
* @return 更新数量
|
||||
*/
|
||||
int batchUpdateSubmissionStatus(Long batchId, List<Long> studentIds, String status);
|
||||
|
||||
/**
|
||||
* 批量更新学生审核状态
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param studentIds 学生ID列表
|
||||
* @param status 状态
|
||||
* @param approvalBy 审核人
|
||||
* @param approvalComments 审核意见
|
||||
* @return 更新数量
|
||||
*/
|
||||
int batchUpdateApprovalStatus(Long batchId, List<Long> studentIds, String status,
|
||||
Long approvalBy, String approvalComments);
|
||||
|
||||
/**
|
||||
* 查询学生在批次中的进度信息
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param batchId 批次ID
|
||||
* @return 进度信息
|
||||
*/
|
||||
Map<String, Object> selectStudentProgress(Long studentId, Long batchId);
|
||||
|
||||
/**
|
||||
* 查询批次完成情况统计
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 完成情况统计
|
||||
*/
|
||||
Map<String, Object> selectBatchCompletionStatistics(Long batchId);
|
||||
|
||||
/**
|
||||
* 查询学生批次历史记录
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @return 历史记录
|
||||
*/
|
||||
List<XgBatchStudentRelationVo> selectStudentBatchHistory(Long studentId);
|
||||
|
||||
/**
|
||||
* 根据提交状态查询学生列表
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param submissionStatus 提交状态
|
||||
* @return 学生列表
|
||||
*/
|
||||
List<XgBatchStudentRelationVo> selectBySubmissionStatus(Long batchId, String submissionStatus);
|
||||
|
||||
/**
|
||||
* 根据审核状态查询学生列表
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param approvalStatus 审核状态
|
||||
* @return 学生列表
|
||||
*/
|
||||
List<XgBatchStudentRelationVo> selectByApprovalStatus(Long batchId, String approvalStatus);
|
||||
|
||||
/**
|
||||
* 分页查询待审批的学生信息
|
||||
*
|
||||
* @param page 分页对象
|
||||
* @param queryWrapper 查询条件
|
||||
* @return 待审批学生信息列表
|
||||
*/
|
||||
Page<XgBatchStudentRelationVo> selectPendingApprovalPage(Page<Object> page, LambdaQueryWrapper<XgBatchStudentRelation> queryWrapper);
|
||||
|
||||
/**
|
||||
* 分页查询已审批的学生信息
|
||||
*
|
||||
* @param page 分页对象
|
||||
* @param queryWrapper 查询条件
|
||||
* @return 已审批学生信息列表
|
||||
*/
|
||||
Page<XgBatchStudentRelationVo> selectApprovedPage(Page<Object> page, LambdaQueryWrapper<XgBatchStudentRelation> queryWrapper);
|
||||
|
||||
/**
|
||||
* 根据批次ID和学生ID查询关系
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param studentId 学生ID
|
||||
* @return 批次学生关系
|
||||
*/
|
||||
XgBatchStudentRelation selectByBatchIdAndStudentId(Long batchId, Long studentId);
|
||||
}
|
||||
-119
@@ -1,119 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgBusinessPeriod;
|
||||
import org.dromara.xg.domain.vo.XgBusinessPeriodVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 业务期间Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface XgBusinessPeriodMapper extends BaseMapperPlus<XgBusinessPeriod, XgBusinessPeriodVo> {
|
||||
|
||||
/**
|
||||
* 根据批次ID查询业务期间
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 业务期间列表
|
||||
*/
|
||||
List<XgBusinessPeriodVo> selectByBatchId(Long batchId);
|
||||
|
||||
/**
|
||||
* 根据期间类型查询业务期间
|
||||
*
|
||||
* @param periodType 期间类型
|
||||
* @return 业务期间列表
|
||||
*/
|
||||
List<XgBusinessPeriodVo> selectByPeriodType(String periodType);
|
||||
|
||||
/**
|
||||
* 查询当前活跃的业务期间
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 活跃业务期间列表
|
||||
*/
|
||||
List<XgBusinessPeriodVo> selectActivePeriods(Long batchId);
|
||||
|
||||
/**
|
||||
* 根据目标角色查询业务期间
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param targetRole 目标角色
|
||||
* @return 业务期间列表
|
||||
*/
|
||||
List<XgBusinessPeriodVo> selectByTargetRole(Long batchId, String targetRole);
|
||||
|
||||
/**
|
||||
* 查询当前时间有效的业务期间
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 有效业务期间列表
|
||||
*/
|
||||
List<XgBusinessPeriodVo> selectCurrentValidPeriods(Long batchId);
|
||||
|
||||
/**
|
||||
* 根据批次ID和期间类型查询业务期间
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param periodType 期间类型
|
||||
* @return 业务期间
|
||||
*/
|
||||
XgBusinessPeriodVo selectByBatchIdAndPeriodType(Long batchId, String periodType);
|
||||
|
||||
/**
|
||||
* 批量更新业务期间状态
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param periodIds 期间ID列表
|
||||
* @param isActive 是否活跃
|
||||
* @return 更新数量
|
||||
*/
|
||||
int batchUpdatePeriodStatus(Long batchId, List<Long> periodIds, Integer isActive);
|
||||
|
||||
/**
|
||||
* 查询所有活跃的业务期间
|
||||
*
|
||||
* @return 活跃业务期间列表
|
||||
*/
|
||||
List<XgBusinessPeriodVo> selectActivePeriods();
|
||||
|
||||
/**
|
||||
* 根据批次ID查询活跃的业务期间
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 活跃业务期间列表
|
||||
*/
|
||||
List<XgBusinessPeriodVo> selectActivePeriodsByBatchId(Long batchId);
|
||||
|
||||
/**
|
||||
* 检查时间冲突
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @return 冲突数量
|
||||
*/
|
||||
int checkTimeConflict(@Param("batchId") Long batchId,
|
||||
@Param("startTime") LocalDateTime startTime,
|
||||
@Param("endTime") LocalDateTime endTime);
|
||||
|
||||
/**
|
||||
* 检查时间冲突(排除自己)
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param excludeId 排除的ID
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @return 冲突数量
|
||||
*/
|
||||
int checkTimeConflictExcludeSelf(@Param("batchId") Long batchId,
|
||||
@Param("excludeId") Long excludeId,
|
||||
@Param("startTime") LocalDateTime startTime,
|
||||
@Param("endTime") LocalDateTime endTime);
|
||||
}
|
||||
-158
@@ -1,158 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgClassCadre;
|
||||
import org.dromara.xg.domain.vo.XgClassCadreVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 班级干部信息Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-09
|
||||
*/
|
||||
public interface XgClassCadreMapper extends BaseMapperPlus<XgClassCadre, XgClassCadreVo> {
|
||||
|
||||
/**
|
||||
* 查询班级干部信息列表
|
||||
*
|
||||
* @param xgClassCadre 班级干部信息
|
||||
* @return 班级干部信息集合
|
||||
*/
|
||||
List<XgClassCadreVo> selectXgClassCadreList(XgClassCadre xgClassCadre);
|
||||
|
||||
/**
|
||||
* 根据班级ID查询班干部列表
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @return 班干部列表
|
||||
*/
|
||||
List<XgClassCadreVo> selectCadresByClassId(@Param("classId") Long classId);
|
||||
|
||||
/**
|
||||
* 根据学生ID查询班干部信息
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @return 班干部信息列表
|
||||
*/
|
||||
List<XgClassCadreVo> selectCadresByStudentId(@Param("studentId") Long studentId);
|
||||
|
||||
/**
|
||||
* 查询当前在任班干部列表
|
||||
*
|
||||
* @param classId 班级ID(可选)
|
||||
* @return 当前在任班干部列表
|
||||
*/
|
||||
List<XgClassCadreVo> selectCurrentCadres(@Param("classId") Long classId);
|
||||
|
||||
/**
|
||||
* 根据职务编码查询班干部
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @param positionCode 职务编码
|
||||
* @return 班干部信息
|
||||
*/
|
||||
XgClassCadreVo selectCadreByPosition(@Param("classId") Long classId, @Param("positionCode") String positionCode);
|
||||
|
||||
/**
|
||||
* 查询即将到期的班干部列表
|
||||
*
|
||||
* @param days 提前天数
|
||||
* @return 即将到期的班干部列表
|
||||
*/
|
||||
List<XgClassCadreVo> selectExpiringCadres(@Param("days") Integer days);
|
||||
|
||||
/**
|
||||
* 查询已到期的班干部列表
|
||||
*
|
||||
* @return 已到期的班干部列表
|
||||
*/
|
||||
List<XgClassCadreVo> selectExpiredCadres();
|
||||
|
||||
/**
|
||||
* 根据学院查询班干部统计
|
||||
*
|
||||
* @param collegeName 学院名称
|
||||
* @return 班干部统计信息
|
||||
*/
|
||||
List<XgClassCadreVo> selectCadresByCollege(@Param("collegeName") String collegeName);
|
||||
|
||||
/**
|
||||
* 根据年级查询班干部统计
|
||||
*
|
||||
* @param grade 年级
|
||||
* @return 班干部统计信息
|
||||
*/
|
||||
List<XgClassCadreVo> selectCadresByGrade(@Param("grade") String grade);
|
||||
|
||||
/**
|
||||
* 查询班干部任期统计
|
||||
*
|
||||
* @param startDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @return 任期统计信息
|
||||
*/
|
||||
List<XgClassCadreVo> selectCadreTermStatistics(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
|
||||
|
||||
/**
|
||||
* 检查职务是否已被占用
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @param positionCode 职务编码
|
||||
* @param excludeId 排除的记录ID
|
||||
* @return 是否已被占用
|
||||
*/
|
||||
boolean checkPositionOccupied(@Param("classId") Long classId, @Param("positionCode") String positionCode, @Param("excludeId") Long excludeId);
|
||||
|
||||
/**
|
||||
* 检查学生是否已有其他职务
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param excludeId 排除的记录ID
|
||||
* @return 是否已有其他职务
|
||||
*/
|
||||
boolean checkStudentHasOtherPosition(@Param("studentId") Long studentId, @Param("excludeId") Long excludeId);
|
||||
|
||||
/**
|
||||
* 更新班干部状态为历史记录
|
||||
*
|
||||
* @param cadreId 班干部ID
|
||||
* @return 更新结果
|
||||
*/
|
||||
int updateCadreToHistory(@Param("cadreId") Long cadreId);
|
||||
|
||||
/**
|
||||
* 批量更新班干部状态
|
||||
*
|
||||
* @param cadreIds 班干部ID列表
|
||||
* @param status 新状态
|
||||
* @return 更新结果
|
||||
*/
|
||||
int batchUpdateCadreStatus(@Param("cadreIds") List<Long> cadreIds, @Param("status") String status);
|
||||
|
||||
/**
|
||||
* 根据职务级别查询班干部
|
||||
*
|
||||
* @param positionLevel 职务级别
|
||||
* @return 班干部列表
|
||||
*/
|
||||
List<XgClassCadreVo> selectCadresByPositionLevel(@Param("positionLevel") Integer positionLevel);
|
||||
|
||||
/**
|
||||
* 查询班干部工作表现统计
|
||||
*
|
||||
* @param performance 工作表现
|
||||
* @return 统计结果
|
||||
*/
|
||||
List<XgClassCadreVo> selectCadresByPerformance(@Param("performance") String performance);
|
||||
|
||||
/**
|
||||
* 查询班级干部完整信息(包含关联数据)
|
||||
*
|
||||
* @param id 班干部ID
|
||||
* @return 班干部完整信息
|
||||
*/
|
||||
XgClassCadreVo selectCadreWithDetails(@Param("id") Long id);
|
||||
}
|
||||
-65
@@ -1,65 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgClassInfo;
|
||||
import org.dromara.xg.domain.vo.XgClassInfoVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 班级信息Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
public interface XgClassInfoMapper extends BaseMapperPlus<XgClassInfo, XgClassInfoVo> {
|
||||
|
||||
/**
|
||||
* 根据班级代码查询班级信息
|
||||
*
|
||||
* @param classCode 班级代码
|
||||
* @return 班级信息
|
||||
*/
|
||||
XgClassInfoVo selectByClassCode(String classCode);
|
||||
|
||||
/**
|
||||
* 查询学院班级列表
|
||||
*
|
||||
* @param collegeCode 学院代码
|
||||
* @return 班级列表
|
||||
*/
|
||||
List<XgClassInfoVo> selectByCollegeCode(String collegeCode);
|
||||
|
||||
/**
|
||||
* 查询辅导员负责的班级列表
|
||||
*
|
||||
* @param counselorId 辅导员ID
|
||||
* @return 班级列表
|
||||
*/
|
||||
List<XgClassInfoVo> selectByCounselorId(Long counselorId);
|
||||
|
||||
/**
|
||||
* 查询班主任负责的班级列表
|
||||
*
|
||||
* @param classTeacherId 班主任ID
|
||||
* @return 班级列表
|
||||
*/
|
||||
List<XgClassInfoVo> selectByClassTeacherId(Long classTeacherId);
|
||||
|
||||
/**
|
||||
* 查询班级选项列表(用于下拉框)
|
||||
*
|
||||
* @return 班级选项列表
|
||||
*/
|
||||
List<Map<String, Object>> selectClassOptions();
|
||||
|
||||
/**
|
||||
* 更新班级人数统计
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @return 更新数量
|
||||
*/
|
||||
int updateClassStudentCount(Long classId);
|
||||
|
||||
}
|
||||
-67
@@ -1,67 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgClassStudent;
|
||||
import org.dromara.xg.domain.vo.XgClassStudentVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 班级学生关系Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
public interface XgClassStudentMapper extends BaseMapperPlus<XgClassStudent, XgClassStudentVo> {
|
||||
|
||||
/**
|
||||
* 根据班级ID查询班级学生关系
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @return 班级学生关系列表
|
||||
*/
|
||||
List<XgClassStudentVo> selectByClassId(Long classId);
|
||||
|
||||
/**
|
||||
* 根据学生ID查询班级学生关系
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @return 班级学生关系列表
|
||||
*/
|
||||
List<XgClassStudentVo> selectByStudentId(Long studentId);
|
||||
|
||||
/**
|
||||
* 查询学生当前班级关系
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @return 当前班级关系
|
||||
*/
|
||||
XgClassStudentVo selectCurrentClassByStudentId(Long studentId);
|
||||
|
||||
/**
|
||||
* 查询班级干部列表
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @return 班级干部列表
|
||||
*/
|
||||
List<XgClassStudentVo> selectClassOfficers(Long classId);
|
||||
|
||||
/**
|
||||
* 查询班级人员统计
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @return 人员统计信息
|
||||
*/
|
||||
Map<String, Object> selectClassStudentStatistics(Long classId);
|
||||
|
||||
/**
|
||||
* 批量更新学生班级关系状态
|
||||
*
|
||||
* @param studentIds 学生ID列表
|
||||
* @param relationStatus 关系状态
|
||||
* @return 更新数量
|
||||
*/
|
||||
int batchUpdateRelationStatus(List<Long> studentIds, String relationStatus);
|
||||
|
||||
}
|
||||
-80
@@ -1,80 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgCollectionBatch;
|
||||
import org.dromara.xg.domain.vo.XgCollectionBatchVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 信息采集批次Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface XgCollectionBatchMapper extends BaseMapperPlus<XgCollectionBatch, XgCollectionBatchVo> {
|
||||
|
||||
/**
|
||||
* 根据批次编码查询批次信息
|
||||
*
|
||||
* @param batchCode 批次编码
|
||||
* @return 批次信息
|
||||
*/
|
||||
XgCollectionBatchVo selectByBatchCode(String batchCode);
|
||||
|
||||
/**
|
||||
* 查询活跃批次列表
|
||||
*
|
||||
* @return 活跃批次列表
|
||||
*/
|
||||
List<XgCollectionBatchVo> selectActiveBatches();
|
||||
|
||||
/**
|
||||
* 查询批次统计信息
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 统计信息
|
||||
*/
|
||||
Map<String, Object> selectBatchStatistics(Long batchId);
|
||||
|
||||
/**
|
||||
* 查询学年批次列表
|
||||
*
|
||||
* @param academicYear 学年
|
||||
* @return 批次列表
|
||||
*/
|
||||
List<XgCollectionBatchVo> selectByAcademicYear(String academicYear);
|
||||
|
||||
/**
|
||||
* 查询批次选项列表
|
||||
*
|
||||
* @return 批次选项列表
|
||||
*/
|
||||
List<Map<String, Object>> selectBatchOptions();
|
||||
|
||||
/**
|
||||
* 更新批次统计信息
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param statistics 统计信息
|
||||
* @return 更新数量
|
||||
*/
|
||||
int updateBatchStatistics(Long batchId, Map<String, Object> statistics);
|
||||
|
||||
/**
|
||||
* 查询即将过期的批次
|
||||
*
|
||||
* @param days 提前天数
|
||||
* @return 即将过期的批次列表
|
||||
*/
|
||||
List<XgCollectionBatchVo> selectExpiringBatches(int days);
|
||||
|
||||
/**
|
||||
* 查询批次详细信息(包含统计数据)
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 批次详细信息
|
||||
*/
|
||||
XgCollectionBatchVo selectBatchWithStatistics(Long batchId);
|
||||
}
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgDictData;
|
||||
import org.dromara.xg.domain.vo.XgDictDataVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 数据字典Mapper接口
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
public interface XgDictDataMapper extends BaseMapperPlus<XgDictData, XgDictDataVo> {
|
||||
|
||||
}
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgNotice;
|
||||
import org.dromara.xg.domain.vo.XgNoticeVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 通知公告Mapper接口
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
public interface XgNoticeMapper extends BaseMapperPlus<XgNotice, XgNoticeVo> {
|
||||
|
||||
}
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgNoticeRead;
|
||||
import org.dromara.xg.domain.vo.XgNoticeReadVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 通知阅读记录Mapper接口
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
public interface XgNoticeReadMapper extends BaseMapperPlus<XgNoticeRead, XgNoticeReadVo> {
|
||||
|
||||
}
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgSemester;
|
||||
import org.dromara.xg.domain.vo.XgSemesterVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 学期管理Mapper接口
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
public interface XgSemesterMapper extends BaseMapperPlus<XgSemester, XgSemesterVo> {
|
||||
|
||||
}
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgStudentInfoHistory;
|
||||
import org.dromara.xg.domain.vo.XgStudentInfoHistoryVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 学生信息历史Mapper接口
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
public interface XgStudentInfoHistoryMapper extends BaseMapperPlus<XgStudentInfoHistory, XgStudentInfoHistoryVo> {
|
||||
|
||||
}
|
||||
-75
@@ -1,75 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgStudentInfo;
|
||||
import org.dromara.xg.domain.vo.XgStudentInfoVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 学生信息Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
public interface XgStudentInfoMapper extends BaseMapperPlus<XgStudentInfo, XgStudentInfoVo> {
|
||||
|
||||
/**
|
||||
* 根据学号查询学生信息
|
||||
*
|
||||
* @param studentNo 学号
|
||||
* @return 学生信息
|
||||
*/
|
||||
XgStudentInfoVo selectByStudentNo(String studentNo);
|
||||
|
||||
/**
|
||||
* 根据身份证号查询学生信息
|
||||
*
|
||||
* @param idCard 身份证号
|
||||
* @return 学生信息
|
||||
*/
|
||||
XgStudentInfoVo selectByIdCard(String idCard);
|
||||
|
||||
/**
|
||||
* 查询班级学生列表
|
||||
*
|
||||
* @param classCode 班级代码
|
||||
* @return 学生列表
|
||||
*/
|
||||
List<XgStudentInfoVo> selectByClassCode(String classCode);
|
||||
|
||||
/**
|
||||
* 根据班级ID查询学生列表
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @return 学生列表
|
||||
*/
|
||||
List<XgStudentInfoVo> selectByClassId(Long classId);
|
||||
|
||||
/**
|
||||
* 查询学院学生列表
|
||||
*
|
||||
* @param collegeCode 学院代码
|
||||
* @return 学生列表
|
||||
*/
|
||||
List<XgStudentInfoVo> selectByCollegeCode(String collegeCode);
|
||||
|
||||
/**
|
||||
* 查询学生统计信息
|
||||
*
|
||||
* @param params 查询参数
|
||||
* @return 统计信息
|
||||
*/
|
||||
List<Map<String, Object>> selectStudentStatistics(Map<String, Object> params);
|
||||
|
||||
/**
|
||||
* 批量更新学生信息状态
|
||||
*
|
||||
* @param studentIds 学生ID列表
|
||||
* @param infoStatus 信息状态
|
||||
* @return 更新数量
|
||||
*/
|
||||
int batchUpdateInfoStatus(List<Long> studentIds, String infoStatus);
|
||||
|
||||
}
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgSystemConfig;
|
||||
import org.dromara.xg.domain.vo.XgSystemConfigVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 系统配置Mapper接口
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
public interface XgSystemConfigMapper extends BaseMapperPlus<XgSystemConfig, XgSystemConfigVo> {
|
||||
|
||||
}
|
||||
-202
@@ -1,202 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgCollectionBatchVo;
|
||||
|
||||
/**
|
||||
* 学生信息权限控制服务接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface IStudentInfoPermissionService {
|
||||
|
||||
/**
|
||||
* 检查学生是否可以修改信息
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @return 是否可以修改
|
||||
*/
|
||||
boolean canEditStudentInfo(Long studentId);
|
||||
|
||||
/**
|
||||
* 检查学生是否可以修改信息(详细信息)
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @return 权限检查结果
|
||||
*/
|
||||
StudentPermissionResult checkStudentPermission(Long studentId);
|
||||
|
||||
/**
|
||||
* 检查当前是否有活跃批次
|
||||
*
|
||||
* @return 当前活跃批次
|
||||
*/
|
||||
XgCollectionBatchVo getCurrentActiveBatch();
|
||||
|
||||
/**
|
||||
* 检查学生是否符合批次条件
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param batchId 批次ID
|
||||
* @return 是否符合条件
|
||||
*/
|
||||
boolean isStudentInBatch(Long studentId, Long batchId);
|
||||
|
||||
/**
|
||||
* 记录学生信息修改日志
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param batchId 批次ID
|
||||
* @param operation 操作类型
|
||||
* @param description 操作描述
|
||||
*/
|
||||
void logStudentInfoChange(Long studentId, Long batchId, String operation, String description);
|
||||
|
||||
/**
|
||||
* 学生提交信息
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param batchId 批次ID
|
||||
* @return 提交结果
|
||||
*/
|
||||
boolean submitStudentInfo(Long studentId, Long batchId);
|
||||
|
||||
/**
|
||||
* 获取学生在批次中的统计信息
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param batchId 批次ID
|
||||
* @return 统计信息
|
||||
*/
|
||||
StudentBatchStatistics getStudentBatchStatistics(Long studentId, Long batchId);
|
||||
|
||||
/**
|
||||
* 学生权限检查结果
|
||||
*/
|
||||
class StudentPermissionResult {
|
||||
private boolean canEdit;
|
||||
private Long batchId;
|
||||
private String batchName;
|
||||
private String message;
|
||||
private String reason;
|
||||
|
||||
public StudentPermissionResult(boolean canEdit, Long batchId, String batchName, String message, String reason) {
|
||||
this.canEdit = canEdit;
|
||||
this.batchId = batchId;
|
||||
this.batchName = batchName;
|
||||
this.message = message;
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
// Getters and setters
|
||||
public boolean isCanEdit() {
|
||||
return canEdit;
|
||||
}
|
||||
|
||||
public void setCanEdit(boolean canEdit) {
|
||||
this.canEdit = canEdit;
|
||||
}
|
||||
|
||||
public Long getBatchId() {
|
||||
return batchId;
|
||||
}
|
||||
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
}
|
||||
|
||||
public String getBatchName() {
|
||||
return batchName;
|
||||
}
|
||||
|
||||
public void setBatchName(String batchName) {
|
||||
this.batchName = batchName;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getReason() {
|
||||
return reason;
|
||||
}
|
||||
|
||||
public void setReason(String reason) {
|
||||
this.reason = reason;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 学生批次统计信息
|
||||
*/
|
||||
class StudentBatchStatistics {
|
||||
private Long studentId;
|
||||
private Long batchId;
|
||||
private String batchName;
|
||||
private boolean hasSubmitted;
|
||||
private java.util.Date submitTime;
|
||||
private java.util.Date lastEditTime;
|
||||
private int editCount;
|
||||
|
||||
// Getters and setters
|
||||
public Long getStudentId() {
|
||||
return studentId;
|
||||
}
|
||||
|
||||
public void setStudentId(Long studentId) {
|
||||
this.studentId = studentId;
|
||||
}
|
||||
|
||||
public Long getBatchId() {
|
||||
return batchId;
|
||||
}
|
||||
|
||||
public void setBatchId(Long batchId) {
|
||||
this.batchId = batchId;
|
||||
}
|
||||
|
||||
public String getBatchName() {
|
||||
return batchName;
|
||||
}
|
||||
|
||||
public void setBatchName(String batchName) {
|
||||
this.batchName = batchName;
|
||||
}
|
||||
|
||||
public boolean isHasSubmitted() {
|
||||
return hasSubmitted;
|
||||
}
|
||||
|
||||
public void setHasSubmitted(boolean hasSubmitted) {
|
||||
this.hasSubmitted = hasSubmitted;
|
||||
}
|
||||
|
||||
public java.util.Date getSubmitTime() {
|
||||
return submitTime;
|
||||
}
|
||||
|
||||
public void setSubmitTime(java.util.Date submitTime) {
|
||||
this.submitTime = submitTime;
|
||||
}
|
||||
|
||||
public java.util.Date getLastEditTime() {
|
||||
return lastEditTime;
|
||||
}
|
||||
|
||||
public void setLastEditTime(java.util.Date lastEditTime) {
|
||||
this.lastEditTime = lastEditTime;
|
||||
}
|
||||
|
||||
public int getEditCount() {
|
||||
return editCount;
|
||||
}
|
||||
|
||||
public void setEditCount(int editCount) {
|
||||
this.editCount = editCount;
|
||||
}
|
||||
}
|
||||
}
|
||||
-101
@@ -1,101 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgAcademicYearVo;
|
||||
import org.dromara.xg.domain.bo.XgAcademicYearBo;
|
||||
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 wuzilong
|
||||
* @date 2025-01-08
|
||||
*/
|
||||
public interface IXgAcademicYearService {
|
||||
|
||||
/**
|
||||
* 查询学年管理
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 学年管理
|
||||
*/
|
||||
XgAcademicYearVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询学年管理列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 学年管理分页列表
|
||||
*/
|
||||
TableDataInfo<XgAcademicYearVo> queryPageList(XgAcademicYearBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的学年管理列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 学年管理列表
|
||||
*/
|
||||
List<XgAcademicYearVo> queryList(XgAcademicYearBo bo);
|
||||
|
||||
/**
|
||||
* 新增学年管理
|
||||
*
|
||||
* @param bo 学年管理
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XgAcademicYearBo bo);
|
||||
|
||||
/**
|
||||
* 修改学年管理
|
||||
*
|
||||
* @param bo 学年管理
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XgAcademicYearBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除学年管理
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据学年编码查询学年信息
|
||||
*
|
||||
* @param yearCode 学年编码
|
||||
* @return 学年信息
|
||||
*/
|
||||
XgAcademicYearVo queryByYearCode(String yearCode);
|
||||
|
||||
/**
|
||||
* 查询当前学年
|
||||
*
|
||||
* @return 当前学年
|
||||
*/
|
||||
XgAcademicYearVo queryCurrentYear();
|
||||
|
||||
/**
|
||||
* 设置当前学年
|
||||
*
|
||||
* @param yearId 学年ID
|
||||
* @return 是否设置成功
|
||||
*/
|
||||
Boolean setCurrentYear(Long yearId);
|
||||
|
||||
/**
|
||||
* 检查学年编码是否存在
|
||||
*
|
||||
* @param yearCode 学年编码
|
||||
* @param yearId 学年ID(修改时使用)
|
||||
* @return 是否存在
|
||||
*/
|
||||
Boolean checkYearCodeExists(String yearCode, Long yearId);
|
||||
|
||||
}
|
||||
-193
@@ -1,193 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgBatchPermissionVo;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 批次权限控制服务接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface IXgBatchPermissionService {
|
||||
|
||||
/**
|
||||
* 检查用户在批次中的权限
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param userId 用户ID
|
||||
* @return 权限检查结果
|
||||
*/
|
||||
BatchPermissionResult checkUserBatchPermission(Long batchId, Long userId);
|
||||
|
||||
/**
|
||||
* 检查用户是否有特定操作权限
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param userId 用户ID
|
||||
* @param operation 操作类型(VIEW, EDIT, SUBMIT, APPROVE, REJECT, WITHDRAW)
|
||||
* @return 是否有权限
|
||||
*/
|
||||
boolean hasOperationPermission(Long batchId, Long userId, String operation);
|
||||
|
||||
/**
|
||||
* 获取用户在批次中的权限配置
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param userId 用户ID
|
||||
* @return 权限配置
|
||||
*/
|
||||
XgBatchPermissionVo getUserBatchPermissionConfig(Long batchId, Long userId);
|
||||
|
||||
/**
|
||||
* 批量配置批次权限
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param configs 权限配置列表
|
||||
* @return 是否配置成功
|
||||
*/
|
||||
Boolean batchConfigurePermissions(Long batchId, List<BatchPermissionConfig> configs);
|
||||
|
||||
/**
|
||||
* 获取批次权限配置列表
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 权限配置列表
|
||||
*/
|
||||
List<XgBatchPermissionVo> getBatchPermissionConfigs(Long batchId);
|
||||
|
||||
/**
|
||||
* 更新权限配置状态
|
||||
*
|
||||
* @param permissionId 权限ID
|
||||
* @param isActive 是否激活
|
||||
* @return 是否更新成功
|
||||
*/
|
||||
Boolean updatePermissionStatus(Long permissionId, Boolean isActive);
|
||||
|
||||
/**
|
||||
* 复制权限配置到其他批次
|
||||
*
|
||||
* @param sourceBatchId 源批次ID
|
||||
* @param targetBatchId 目标批次ID
|
||||
* @return 是否复制成功
|
||||
*/
|
||||
Boolean copyPermissionsToOtherBatch(Long sourceBatchId, Long targetBatchId);
|
||||
|
||||
/**
|
||||
* 批次权限检查结果接口
|
||||
*/
|
||||
interface BatchPermissionResult {
|
||||
Long getBatchId();
|
||||
Long getUserId();
|
||||
boolean isHasPermission();
|
||||
String getPermissionType();
|
||||
boolean isCanView();
|
||||
boolean isCanEdit();
|
||||
boolean isCanSubmit();
|
||||
boolean isCanApprove();
|
||||
boolean isCanReject();
|
||||
boolean isCanWithdraw();
|
||||
String getMessage();
|
||||
}
|
||||
|
||||
/**
|
||||
* 批次权限配置接口
|
||||
*/
|
||||
class BatchPermissionConfig {
|
||||
Long roleId;
|
||||
String roleName;
|
||||
String permissionType;
|
||||
boolean canView;
|
||||
boolean canEdit;
|
||||
boolean canSubmit;
|
||||
boolean canApprove;
|
||||
boolean canReject;
|
||||
boolean canWithdraw;
|
||||
LocalDateTime startTime;
|
||||
LocalDateTime endTime;
|
||||
boolean isActive;
|
||||
|
||||
public Long getRoleId() {
|
||||
return roleId;
|
||||
}
|
||||
|
||||
public String getRoleName() {
|
||||
return roleName;
|
||||
}
|
||||
|
||||
public String getPermissionType() {
|
||||
return permissionType;
|
||||
}
|
||||
|
||||
public boolean isCanView() {
|
||||
return canView;
|
||||
}
|
||||
|
||||
public boolean isCanEdit() {
|
||||
return canEdit;
|
||||
}
|
||||
|
||||
public boolean isCanSubmit() {
|
||||
return canSubmit;
|
||||
}
|
||||
|
||||
public boolean isCanApprove() {
|
||||
return canApprove;
|
||||
}
|
||||
|
||||
public boolean isCanReject() {
|
||||
return canReject;
|
||||
}
|
||||
|
||||
public boolean isCanWithdraw() {
|
||||
return canWithdraw;
|
||||
}
|
||||
|
||||
public LocalDateTime getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public LocalDateTime getEndTime() {
|
||||
return endTime;
|
||||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return isActive;
|
||||
}
|
||||
|
||||
public Long getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public Boolean getCanView() {
|
||||
return canView;
|
||||
}
|
||||
|
||||
public Boolean getCanEdit() {
|
||||
return canEdit;
|
||||
}
|
||||
|
||||
public Boolean getCanDelete() {
|
||||
return canDelete;
|
||||
}
|
||||
|
||||
public Boolean getCanApprove() {
|
||||
return canApprove;
|
||||
}
|
||||
|
||||
public Boolean getCanExport() {
|
||||
return canExport;
|
||||
}
|
||||
|
||||
public Boolean getCanImport() {
|
||||
return canImport;
|
||||
}
|
||||
|
||||
public Boolean getIsActive() {
|
||||
return isActive;
|
||||
}
|
||||
}
|
||||
}
|
||||
-114
@@ -1,114 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xg.domain.bo.XgBusinessPeriodBo;
|
||||
import org.dromara.xg.domain.vo.XgBusinessPeriodVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 业务期管理Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface IXgBusinessPeriodService {
|
||||
|
||||
/**
|
||||
* 查询业务期管理
|
||||
*
|
||||
* @param id 业务期管理主键
|
||||
* @return 业务期管理
|
||||
*/
|
||||
XgBusinessPeriodVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询业务期管理列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 业务期管理集合
|
||||
*/
|
||||
TableDataInfo<XgBusinessPeriodVo> queryPageList(XgBusinessPeriodBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询业务期管理列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 业务期管理集合
|
||||
*/
|
||||
List<XgBusinessPeriodVo> queryList(XgBusinessPeriodBo bo);
|
||||
|
||||
/**
|
||||
* 新增业务期管理
|
||||
*
|
||||
* @param bo 业务期管理
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean insertByBo(XgBusinessPeriodBo bo);
|
||||
|
||||
/**
|
||||
* 修改业务期管理
|
||||
*
|
||||
* @param bo 业务期管理
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean updateByBo(XgBusinessPeriodBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除业务期管理信息
|
||||
*
|
||||
* @param ids 需要删除的业务期管理主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 根据批次ID查询业务期列表
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 业务期列表
|
||||
*/
|
||||
List<XgBusinessPeriodVo> queryByBatchId(Long batchId);
|
||||
|
||||
/**
|
||||
* 查询当前活跃的业务期
|
||||
*
|
||||
* @return 活跃的业务期列表
|
||||
*/
|
||||
List<XgBusinessPeriodVo> queryActivePeriods();
|
||||
|
||||
/**
|
||||
* 检查业务期是否开放
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 是否开放
|
||||
*/
|
||||
Boolean checkPeriodOpen(Long batchId);
|
||||
|
||||
/**
|
||||
* 开启业务期
|
||||
*
|
||||
* @param id 业务期ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean openPeriod(Long id);
|
||||
|
||||
/**
|
||||
* 关闭业务期
|
||||
*
|
||||
* @param id 业务期ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean closePeriod(Long id);
|
||||
|
||||
/**
|
||||
* 校验业务期时间是否冲突
|
||||
*
|
||||
* @param bo 业务期信息
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean checkPeriodTimeConflict(XgBusinessPeriodBo bo);
|
||||
}
|
||||
-279
@@ -1,279 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.XgClassCadre;
|
||||
import org.dromara.xg.domain.vo.XgClassCadreVo;
|
||||
import org.dromara.xg.domain.bo.XgClassCadreBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 班级干部信息Service接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-09
|
||||
*/
|
||||
public interface IXgClassCadreService {
|
||||
|
||||
/**
|
||||
* 查询班级干部信息
|
||||
*
|
||||
* @param id 班级干部信息主键
|
||||
* @return 班级干部信息
|
||||
*/
|
||||
XgClassCadreVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询班级干部信息列表
|
||||
*
|
||||
* @param bo 班级干部信息
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 班级干部信息集合
|
||||
*/
|
||||
TableDataInfo<XgClassCadreVo> queryPageList(XgClassCadreBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询班级干部信息列表
|
||||
*
|
||||
* @param bo 班级干部信息
|
||||
* @return 班级干部信息集合
|
||||
*/
|
||||
List<XgClassCadreVo> queryList(XgClassCadreBo bo);
|
||||
|
||||
/**
|
||||
* 新增班级干部信息
|
||||
*
|
||||
* @param bo 班级干部信息
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean insertByBo(XgClassCadreBo bo);
|
||||
|
||||
/**
|
||||
* 修改班级干部信息
|
||||
*
|
||||
* @param bo 班级干部信息
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean updateByBo(XgClassCadreBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除班级干部信息
|
||||
*
|
||||
* @param ids 需要删除的班级干部信息主键集合
|
||||
* @param isValid 是否校验,true-删除前校验,false-不校验
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
// ==================== 业务方法 ====================
|
||||
|
||||
/**
|
||||
* 根据班级ID查询班干部列表
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @return 班干部列表
|
||||
*/
|
||||
List<XgClassCadreVo> queryCadresByClassId(Long classId);
|
||||
|
||||
/**
|
||||
* 根据学生ID查询班干部信息
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @return 班干部信息列表
|
||||
*/
|
||||
List<XgClassCadreVo> queryCadresByStudentId(Long studentId);
|
||||
|
||||
/**
|
||||
* 查询当前在任班干部列表
|
||||
*
|
||||
* @param classId 班级ID(可选)
|
||||
* @return 当前在任班干部列表
|
||||
*/
|
||||
List<XgClassCadreVo> queryCurrentCadres(Long classId);
|
||||
|
||||
/**
|
||||
* 根据职务编码查询班干部
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @param positionCode 职务编码
|
||||
* @return 班干部信息
|
||||
*/
|
||||
XgClassCadreVo queryCadreByPosition(Long classId, String positionCode);
|
||||
|
||||
/**
|
||||
* 任命班干部
|
||||
*
|
||||
* @param bo 班干部信息
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean appointCadre(XgClassCadreBo bo);
|
||||
|
||||
/**
|
||||
* 免职班干部
|
||||
*
|
||||
* @param cadreId 班干部ID
|
||||
* @param dismissalReason 免职原因
|
||||
* @param dismissalDate 免职日期
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean dismissCadre(Long cadreId, String dismissalReason, Date dismissalDate);
|
||||
|
||||
/**
|
||||
* 调任班干部
|
||||
*
|
||||
* @param cadreId 班干部ID
|
||||
* @param newPositionCode 新职务编码
|
||||
* @param newPositionName 新职务名称
|
||||
* @param transferReason 调任原因
|
||||
* @param effectiveDate 生效日期
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean transferCadre(Long cadreId, String newPositionCode, String newPositionName, String transferReason, Date effectiveDate);
|
||||
|
||||
/**
|
||||
* 续任班干部
|
||||
*
|
||||
* @param cadreId 班干部ID
|
||||
* @param newTermDuration 新任期时长(月)
|
||||
* @param renewalReason 续任原因
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean renewCadre(Long cadreId, Integer newTermDuration, String renewalReason);
|
||||
|
||||
/**
|
||||
* 班干部辞职
|
||||
*
|
||||
* @param cadreId 班干部ID
|
||||
* @param resignationReason 辞职原因
|
||||
* @param resignationDate 辞职日期
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean resignCadre(Long cadreId, String resignationReason, Date resignationDate);
|
||||
|
||||
/**
|
||||
* 查询即将到期的班干部列表
|
||||
*
|
||||
* @param days 提前天数
|
||||
* @return 即将到期的班干部列表
|
||||
*/
|
||||
List<XgClassCadreVo> queryExpiringCadres(Integer days);
|
||||
|
||||
/**
|
||||
* 查询已到期的班干部列表
|
||||
*
|
||||
* @return 已到期的班干部列表
|
||||
*/
|
||||
List<XgClassCadreVo> queryExpiredCadres();
|
||||
|
||||
/**
|
||||
* 根据学院查询班干部统计
|
||||
*
|
||||
* @param collegeName 学院名称
|
||||
* @return 班干部统计信息
|
||||
*/
|
||||
List<XgClassCadreVo> queryCadresByCollege(String collegeName);
|
||||
|
||||
/**
|
||||
* 根据年级查询班干部统计
|
||||
*
|
||||
* @param grade 年级
|
||||
* @return 班干部统计信息
|
||||
*/
|
||||
List<XgClassCadreVo> queryCadresByGrade(String grade);
|
||||
|
||||
/**
|
||||
* 查询班干部任期统计
|
||||
*
|
||||
* @param startDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @return 任期统计信息
|
||||
*/
|
||||
List<XgClassCadreVo> queryCadreTermStatistics(Date startDate, Date endDate);
|
||||
|
||||
/**
|
||||
* 检查职务是否已被占用
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @param positionCode 职务编码
|
||||
* @param excludeId 排除的记录ID
|
||||
* @return 是否已被占用
|
||||
*/
|
||||
boolean checkPositionOccupied(Long classId, String positionCode, Long excludeId);
|
||||
|
||||
/**
|
||||
* 检查学生是否已有其他职务
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param excludeId 排除的记录ID
|
||||
* @return 是否已有其他职务
|
||||
*/
|
||||
boolean checkStudentHasOtherPosition(Long studentId, Long excludeId);
|
||||
|
||||
/**
|
||||
* 批量更新班干部状态
|
||||
*
|
||||
* @param cadreIds 班干部ID列表
|
||||
* @param status 新状态
|
||||
* @return 更新结果
|
||||
*/
|
||||
Boolean batchUpdateCadreStatus(List<Long> cadreIds, String status);
|
||||
|
||||
/**
|
||||
* 根据职务级别查询班干部
|
||||
*
|
||||
* @param positionLevel 职务级别
|
||||
* @return 班干部列表
|
||||
*/
|
||||
List<XgClassCadreVo> queryCadresByPositionLevel(Integer positionLevel);
|
||||
|
||||
/**
|
||||
* 查询班干部工作表现统计
|
||||
*
|
||||
* @param performance 工作表现
|
||||
* @return 统计结果
|
||||
*/
|
||||
List<XgClassCadreVo> queryCadresByPerformance(String performance);
|
||||
|
||||
/**
|
||||
* 查询班级干部完整信息(包含关联数据)
|
||||
*
|
||||
* @param id 班干部ID
|
||||
* @return 班干部完整信息
|
||||
*/
|
||||
XgClassCadreVo queryCadreWithDetails(Long id);
|
||||
|
||||
/**
|
||||
* 自动处理到期班干部
|
||||
*
|
||||
* @return 处理结果
|
||||
*/
|
||||
Boolean autoProcessExpiredCadres();
|
||||
|
||||
/**
|
||||
* 发送到期提醒通知
|
||||
*
|
||||
* @param days 提前天数
|
||||
* @return 发送结果
|
||||
*/
|
||||
Boolean sendExpirationReminder(Integer days);
|
||||
|
||||
/**
|
||||
* 导出班干部信息
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 导出数据
|
||||
*/
|
||||
List<XgClassCadreVo> exportCadreList(XgClassCadreBo bo);
|
||||
|
||||
/**
|
||||
* 导入班干部信息
|
||||
*
|
||||
* @param cadreList 班干部信息列表
|
||||
* @param isUpdateSupport 是否支持更新
|
||||
* @param operName 操作人
|
||||
* @return 导入结果
|
||||
*/
|
||||
String importCadreList(List<XgClassCadreVo> cadreList, Boolean isUpdateSupport, String operName);
|
||||
}
|
||||
-152
@@ -1,152 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgClassInfoVo;
|
||||
import org.dromara.xg.domain.bo.XgClassInfoBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 班级信息Service接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
public interface IXgClassInfoService {
|
||||
|
||||
/**
|
||||
* 查询班级信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 班级信息
|
||||
*/
|
||||
XgClassInfoVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询班级信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 班级信息分页列表
|
||||
*/
|
||||
TableDataInfo<XgClassInfoVo> queryPageList(XgClassInfoBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的班级信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 班级信息列表
|
||||
*/
|
||||
List<XgClassInfoVo> queryList(XgClassInfoBo bo);
|
||||
|
||||
/**
|
||||
* 新增班级信息
|
||||
*
|
||||
* @param bo 班级信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XgClassInfoBo bo);
|
||||
|
||||
/**
|
||||
* 修改班级信息
|
||||
*
|
||||
* @param bo 班级信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XgClassInfoBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除班级信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据班级代码查询班级信息
|
||||
*
|
||||
* @param classCode 班级代码
|
||||
* @return 班级信息
|
||||
*/
|
||||
XgClassInfoVo queryByClassCode(String classCode);
|
||||
|
||||
/**
|
||||
* 查询学院班级列表
|
||||
*
|
||||
* @param collegeCode 学院代码
|
||||
* @return 班级列表
|
||||
*/
|
||||
List<XgClassInfoVo> queryByCollegeCode(String collegeCode);
|
||||
|
||||
/**
|
||||
* 查询班级选项列表
|
||||
*
|
||||
* @return 班级选项列表
|
||||
*/
|
||||
List<Map<String, Object>> queryClassOptions();
|
||||
|
||||
/**
|
||||
* 更新班级人数统计
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @return 是否更新成功
|
||||
*/
|
||||
Boolean updateClassStudentCount(Long classId);
|
||||
|
||||
/**
|
||||
* 检查班级代码是否存在
|
||||
*
|
||||
* @param classCode 班级代码
|
||||
* @param classId 班级ID(修改时使用)
|
||||
* @return 是否存在
|
||||
*/
|
||||
Boolean checkClassCodeExists(String classCode, Long classId);
|
||||
|
||||
/**
|
||||
* 查询辅导员选项列表
|
||||
*
|
||||
* @param collegeCode 学院代码(可选)
|
||||
* @return 辅导员选项列表
|
||||
*/
|
||||
List<Map<String, Object>> queryCounselorOptions(String collegeCode);
|
||||
|
||||
/**
|
||||
* 查询班主任选项列表
|
||||
*
|
||||
* @param collegeCode 学院代码(可选)
|
||||
* @return 班主任选项列表
|
||||
*/
|
||||
List<Map<String, Object>> queryClassTeacherOptions(String collegeCode);
|
||||
|
||||
/**
|
||||
* 查询班级信息总体统计
|
||||
*
|
||||
* @return 统计数据
|
||||
*/
|
||||
Map<String, Object> queryClassInfoStatistics();
|
||||
|
||||
/**
|
||||
* 查询班级学生统计
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @return 统计数据
|
||||
*/
|
||||
Map<String, Object> queryClassStudentStatistics(Long classId);
|
||||
|
||||
/**
|
||||
* 批量生成班级代码
|
||||
*
|
||||
* @param collegeCode 学院代码
|
||||
* @param majorCode 专业代码
|
||||
* @param enrollmentYear 入学年份
|
||||
* @param classCount 班级数量
|
||||
* @return 班级代码列表
|
||||
*/
|
||||
List<String> generateClassCode(String collegeCode, String majorCode, Integer enrollmentYear, Integer classCount);
|
||||
|
||||
}
|
||||
-89
@@ -1,89 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xg.domain.bo.XgCollectionBatchBo;
|
||||
import org.dromara.xg.domain.vo.XgCollectionBatchVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 信息采集批次Service接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface IXgCollectionBatchService {
|
||||
|
||||
/**
|
||||
* 查询信息采集批次
|
||||
*/
|
||||
XgCollectionBatchVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询信息采集批次列表
|
||||
*/
|
||||
TableDataInfo<XgCollectionBatchVo> queryPageList(XgCollectionBatchBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询信息采集批次列表
|
||||
*/
|
||||
List<XgCollectionBatchVo> queryList(XgCollectionBatchBo bo);
|
||||
|
||||
/**
|
||||
* 新增信息采集批次
|
||||
*/
|
||||
Boolean insertByBo(XgCollectionBatchBo bo);
|
||||
|
||||
/**
|
||||
* 修改信息采集批次
|
||||
*/
|
||||
Boolean updateByBo(XgCollectionBatchBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除信息采集批次信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 获取当前活跃的批次列表
|
||||
*/
|
||||
List<XgCollectionBatchVo> getActiveBatches();
|
||||
|
||||
/**
|
||||
* 发布批次
|
||||
*/
|
||||
Boolean publishBatch(Long id);
|
||||
|
||||
/**
|
||||
* 取消发布批次
|
||||
*/
|
||||
Boolean unpublishBatch(Long id);
|
||||
|
||||
/**
|
||||
* 结束批次
|
||||
*/
|
||||
Boolean completeBatch(Long id);
|
||||
|
||||
/**
|
||||
* 获取批次统计信息
|
||||
*/
|
||||
Map<String, Object> getBatchStatistics(Long id);
|
||||
|
||||
/**
|
||||
* 获取批次选项列表
|
||||
*/
|
||||
List<Map<String, Object>> getBatchOptions();
|
||||
|
||||
/**
|
||||
* 更新批次统计信息
|
||||
*/
|
||||
Boolean updateBatchStatistics(Long id);
|
||||
|
||||
/**
|
||||
* 复制批次
|
||||
*/
|
||||
Boolean copyBatch(Long sourceBatchId, XgCollectionBatchBo targetBatchBo);
|
||||
}
|
||||
-169
@@ -1,169 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xg.domain.bo.XgDictDataBo;
|
||||
import org.dromara.xg.domain.vo.XgDictDataVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 数据字典Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface IXgDictDataService {
|
||||
|
||||
/**
|
||||
* 查询数据字典
|
||||
*
|
||||
* @param id 数据字典主键
|
||||
* @return 数据字典
|
||||
*/
|
||||
XgDictDataVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询数据字典列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 数据字典集合
|
||||
*/
|
||||
TableDataInfo<XgDictDataVo> queryPageList(XgDictDataBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询数据字典列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 数据字典集合
|
||||
*/
|
||||
List<XgDictDataVo> queryList(XgDictDataBo bo);
|
||||
|
||||
/**
|
||||
* 新增数据字典
|
||||
*
|
||||
* @param bo 数据字典
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean insertByBo(XgDictDataBo bo);
|
||||
|
||||
/**
|
||||
* 修改数据字典
|
||||
*
|
||||
* @param bo 数据字典
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean updateByBo(XgDictDataBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除数据字典信息
|
||||
*
|
||||
* @param ids 需要删除的数据字典主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 根据字典类型查询字典数据
|
||||
*
|
||||
* @param dictType 字典类型
|
||||
* @return 字典数据列表
|
||||
*/
|
||||
List<XgDictDataVo> queryByDictType(String dictType);
|
||||
|
||||
/**
|
||||
* 根据字典类型和字典值查询字典标签
|
||||
*
|
||||
* @param dictType 字典类型
|
||||
* @param dictValue 字典值
|
||||
* @return 字典标签
|
||||
*/
|
||||
String getDictLabel(String dictType, String dictValue);
|
||||
|
||||
/**
|
||||
* 根据字典类型和字典标签查询字典值
|
||||
*
|
||||
* @param dictType 字典类型
|
||||
* @param dictLabel 字典标签
|
||||
* @return 字典值
|
||||
*/
|
||||
String getDictValue(String dictType, String dictLabel);
|
||||
|
||||
/**
|
||||
* 校验字典键值是否唯一
|
||||
*
|
||||
* @param dictType 字典类型
|
||||
* @param dictValue 字典值
|
||||
* @param id 字典数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean checkDictValueUnique(String dictType, String dictValue, Long id);
|
||||
|
||||
/**
|
||||
* 校验字典标签是否唯一
|
||||
*
|
||||
* @param dictType 字典类型
|
||||
* @param dictLabel 字典标签
|
||||
* @param id 字典数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean checkDictLabelUnique(String dictType, String dictLabel, Long id);
|
||||
|
||||
/**
|
||||
* 启用字典数据
|
||||
*
|
||||
* @param id 字典数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean enableDictData(Long id);
|
||||
|
||||
/**
|
||||
* 禁用字典数据
|
||||
*
|
||||
* @param id 字典数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean disableDictData(Long id);
|
||||
|
||||
/**
|
||||
* 批量更新字典数据状态
|
||||
*
|
||||
* @param ids 字典数据ID集合
|
||||
* @param status 状态
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean batchUpdateStatus(Collection<Long> ids, String status);
|
||||
|
||||
/**
|
||||
* 根据字典类型获取默认字典数据
|
||||
*
|
||||
* @param dictType 字典类型
|
||||
* @return 默认字典数据
|
||||
*/
|
||||
XgDictDataVo getDefaultDictData(String dictType);
|
||||
|
||||
/**
|
||||
* 设置默认字典数据
|
||||
*
|
||||
* @param dictType 字典类型
|
||||
* @param id 字典数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean setDefaultDictData(String dictType, Long id);
|
||||
|
||||
/**
|
||||
* 刷新字典缓存
|
||||
*
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean refreshDictCache();
|
||||
|
||||
/**
|
||||
* 获取字典数据统计
|
||||
*
|
||||
* @return 字典数据统计信息
|
||||
*/
|
||||
XgDictDataVo getDictStatistics();
|
||||
}
|
||||
-144
@@ -1,144 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xg.domain.bo.XgNoticeReadBo;
|
||||
import org.dromara.xg.domain.vo.XgNoticeReadVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 通知阅读记录Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface IXgNoticeReadService {
|
||||
|
||||
/**
|
||||
* 查询通知阅读记录
|
||||
*
|
||||
* @param id 通知阅读记录主键
|
||||
* @return 通知阅读记录
|
||||
*/
|
||||
XgNoticeReadVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询通知阅读记录列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 通知阅读记录集合
|
||||
*/
|
||||
TableDataInfo<XgNoticeReadVo> queryPageList(XgNoticeReadBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询通知阅读记录列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 通知阅读记录集合
|
||||
*/
|
||||
List<XgNoticeReadVo> queryList(XgNoticeReadBo bo);
|
||||
|
||||
/**
|
||||
* 新增通知阅读记录
|
||||
*
|
||||
* @param bo 通知阅读记录
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean insertByBo(XgNoticeReadBo bo);
|
||||
|
||||
/**
|
||||
* 修改通知阅读记录
|
||||
*
|
||||
* @param bo 通知阅读记录
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean updateByBo(XgNoticeReadBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除通知阅读记录信息
|
||||
*
|
||||
* @param ids 需要删除的通知阅读记录主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 记录用户阅读通知
|
||||
*
|
||||
* @param noticeId 通知ID
|
||||
* @param userId 用户ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean recordRead(Long noticeId, Long userId);
|
||||
|
||||
/**
|
||||
* 检查用户是否已阅读通知
|
||||
*
|
||||
* @param noticeId 通知ID
|
||||
* @param userId 用户ID
|
||||
* @return 是否已阅读
|
||||
*/
|
||||
Boolean checkUserRead(Long noticeId, Long userId);
|
||||
|
||||
/**
|
||||
* 根据通知ID查询阅读记录
|
||||
*
|
||||
* @param noticeId 通知ID
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 阅读记录集合
|
||||
*/
|
||||
TableDataInfo<XgNoticeReadVo> queryByNoticeId(Long noticeId, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 根据用户ID查询阅读记录
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 阅读记录集合
|
||||
*/
|
||||
TableDataInfo<XgNoticeReadVo> queryByUserId(Long userId, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 统计通知阅读数量
|
||||
*
|
||||
* @param noticeId 通知ID
|
||||
* @return 阅读数量
|
||||
*/
|
||||
Long countReadByNoticeId(Long noticeId);
|
||||
|
||||
/**
|
||||
* 统计用户阅读数量
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 阅读数量
|
||||
*/
|
||||
Long countReadByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 批量标记已读
|
||||
*
|
||||
* @param noticeIds 通知ID集合
|
||||
* @param userId 用户ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean batchMarkRead(Collection<Long> noticeIds, Long userId);
|
||||
|
||||
/**
|
||||
* 获取用户未读通知数量
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 未读数量
|
||||
*/
|
||||
Long countUnreadByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 获取通知阅读统计
|
||||
*
|
||||
* @param noticeId 通知ID
|
||||
* @return 阅读统计信息
|
||||
*/
|
||||
XgNoticeReadVo getReadStatistics(Long noticeId);
|
||||
}
|
||||
-139
@@ -1,139 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xg.domain.bo.XgNoticeBo;
|
||||
import org.dromara.xg.domain.vo.XgNoticeVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 通知公告Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface IXgNoticeService {
|
||||
|
||||
/**
|
||||
* 查询通知公告
|
||||
*
|
||||
* @param id 通知公告主键
|
||||
* @return 通知公告
|
||||
*/
|
||||
XgNoticeVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询通知公告列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 通知公告集合
|
||||
*/
|
||||
TableDataInfo<XgNoticeVo> queryPageList(XgNoticeBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询通知公告列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 通知公告集合
|
||||
*/
|
||||
List<XgNoticeVo> queryList(XgNoticeBo bo);
|
||||
|
||||
/**
|
||||
* 新增通知公告
|
||||
*
|
||||
* @param bo 通知公告
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean insertByBo(XgNoticeBo bo);
|
||||
|
||||
/**
|
||||
* 修改通知公告
|
||||
*
|
||||
* @param bo 通知公告
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean updateByBo(XgNoticeBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除通知公告信息
|
||||
*
|
||||
* @param ids 需要删除的通知公告主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 发布通知公告
|
||||
*
|
||||
* @param id 通知公告ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean publishNotice(Long id);
|
||||
|
||||
/**
|
||||
* 撤回通知公告
|
||||
*
|
||||
* @param id 通知公告ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean withdrawNotice(Long id);
|
||||
|
||||
/**
|
||||
* 查询已发布的通知公告
|
||||
*
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 通知公告集合
|
||||
*/
|
||||
TableDataInfo<XgNoticeVo> queryPublishedNotices(PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询置顶通知公告
|
||||
*
|
||||
* @return 置顶通知公告列表
|
||||
*/
|
||||
List<XgNoticeVo> queryTopNotices();
|
||||
|
||||
/**
|
||||
* 设置置顶
|
||||
*
|
||||
* @param id 通知公告ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean setTop(Long id);
|
||||
|
||||
/**
|
||||
* 取消置顶
|
||||
*
|
||||
* @param id 通知公告ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean cancelTop(Long id);
|
||||
|
||||
/**
|
||||
* 根据批次ID查询通知公告
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 通知公告列表
|
||||
*/
|
||||
List<XgNoticeVo> queryByBatchId(Long batchId);
|
||||
|
||||
/**
|
||||
* 增加阅读量
|
||||
*
|
||||
* @param id 通知公告ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean increaseReadCount(Long id);
|
||||
|
||||
/**
|
||||
* 校验通知标题是否唯一
|
||||
*
|
||||
* @param title 通知标题
|
||||
* @param id 通知ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean checkNoticeTitleUnique(String title, Long id);
|
||||
}
|
||||
-106
@@ -1,106 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xg.domain.bo.XgSemesterBo;
|
||||
import org.dromara.xg.domain.vo.XgSemesterVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学期管理Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface IXgSemesterService {
|
||||
|
||||
/**
|
||||
* 查询学期管理
|
||||
*
|
||||
* @param id 学期管理主键
|
||||
* @return 学期管理
|
||||
*/
|
||||
XgSemesterVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询学期管理列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 学期管理集合
|
||||
*/
|
||||
TableDataInfo<XgSemesterVo> queryPageList(XgSemesterBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询学期管理列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 学期管理集合
|
||||
*/
|
||||
List<XgSemesterVo> queryList(XgSemesterBo bo);
|
||||
|
||||
/**
|
||||
* 新增学期管理
|
||||
*
|
||||
* @param bo 学期管理
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean insertByBo(XgSemesterBo bo);
|
||||
|
||||
/**
|
||||
* 修改学期管理
|
||||
*
|
||||
* @param bo 学期管理
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean updateByBo(XgSemesterBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除学期管理信息
|
||||
*
|
||||
* @param ids 需要删除的学期管理主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 根据学年ID查询学期列表
|
||||
*
|
||||
* @param academicYearId 学年ID
|
||||
* @return 学期列表
|
||||
*/
|
||||
List<XgSemesterVo> queryByAcademicYearId(Long academicYearId);
|
||||
|
||||
/**
|
||||
* 查询当前学期
|
||||
*
|
||||
* @return 当前学期
|
||||
*/
|
||||
XgSemesterVo queryCurrentSemester();
|
||||
|
||||
/**
|
||||
* 设置当前学期
|
||||
*
|
||||
* @param id 学期ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean setCurrentSemester(Long id);
|
||||
|
||||
/**
|
||||
* 查询可用的学期选项
|
||||
*
|
||||
* @return 学期选项列表
|
||||
*/
|
||||
List<XgSemesterVo> queryAvailableOptions();
|
||||
|
||||
/**
|
||||
* 校验学期名称是否唯一
|
||||
*
|
||||
* @param semesterName 学期名称
|
||||
* @param id 学期ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean checkSemesterNameUnique(String semesterName, Long id);
|
||||
}
|
||||
-81
@@ -1,81 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xg.domain.bo.XgStudentInfoApprovalBo;
|
||||
import org.dromara.xg.domain.vo.XgStudentInfoApprovalVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 学生信息审核Service接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface IXgStudentInfoApprovalService {
|
||||
|
||||
/**
|
||||
* 查询待审核学生信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 待审核学生信息列表
|
||||
*/
|
||||
TableDataInfo<XgStudentInfoApprovalVo> queryPendingApprovalList(XgStudentInfoApprovalBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询已审核学生信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 已审核学生信息列表
|
||||
*/
|
||||
TableDataInfo<XgStudentInfoApprovalVo> queryApprovedList(XgStudentInfoApprovalBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询学生信息审核详情
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param batchId 批次ID
|
||||
* @return 学生信息审核详情
|
||||
*/
|
||||
XgStudentInfoApprovalVo queryApprovalDetail(Long studentId, Long batchId);
|
||||
|
||||
/**
|
||||
* 审批学生信息
|
||||
*/
|
||||
Boolean approveStudentInfo(Long studentId, Long batchId, String approved, String comments);
|
||||
|
||||
/**
|
||||
* 批量审批学生信息
|
||||
*/
|
||||
Boolean batchApproveStudentInfo(List<Long> studentIds, Long batchId, String approved, String comments);
|
||||
|
||||
/**
|
||||
* 撤销审批
|
||||
*/
|
||||
Boolean revokeApproval(Long studentId, Long batchId);
|
||||
|
||||
/**
|
||||
* 获取审批历史
|
||||
*/
|
||||
List<Map<String, Object>> getApprovalHistory(Long studentId, Long batchId);
|
||||
|
||||
/**
|
||||
* 获取审批统计
|
||||
*/
|
||||
Map<String, Object> getApprovalStatistics(Long batchId);
|
||||
|
||||
/**
|
||||
* 检查审批权限
|
||||
*/
|
||||
Boolean checkApprovalPermission(Long batchId);
|
||||
|
||||
/**
|
||||
* 导出审批结果
|
||||
*/
|
||||
List<XgStudentInfoApprovalVo> exportApprovalResult(XgStudentInfoApprovalBo bo);
|
||||
}
|
||||
-149
@@ -1,149 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xg.domain.bo.XgStudentInfoHistoryBo;
|
||||
import org.dromara.xg.domain.vo.XgStudentInfoHistoryVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学生信息历史Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface IXgStudentInfoHistoryService {
|
||||
|
||||
/**
|
||||
* 查询学生信息历史
|
||||
*
|
||||
* @param id 学生信息历史主键
|
||||
* @return 学生信息历史
|
||||
*/
|
||||
XgStudentInfoHistoryVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询学生信息历史列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 学生信息历史集合
|
||||
*/
|
||||
TableDataInfo<XgStudentInfoHistoryVo> queryPageList(XgStudentInfoHistoryBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询学生信息历史列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 学生信息历史集合
|
||||
*/
|
||||
List<XgStudentInfoHistoryVo> queryList(XgStudentInfoHistoryBo bo);
|
||||
|
||||
/**
|
||||
* 新增学生信息历史
|
||||
*
|
||||
* @param bo 学生信息历史
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean insertByBo(XgStudentInfoHistoryBo bo);
|
||||
|
||||
/**
|
||||
* 修改学生信息历史
|
||||
*
|
||||
* @param bo 学生信息历史
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean updateByBo(XgStudentInfoHistoryBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除学生信息历史信息
|
||||
*
|
||||
* @param ids 需要删除的学生信息历史主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 根据学生ID查询历史记录
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 历史记录集合
|
||||
*/
|
||||
TableDataInfo<XgStudentInfoHistoryVo> queryByStudentId(Long studentId, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 根据批次ID查询历史记录
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 历史记录集合
|
||||
*/
|
||||
TableDataInfo<XgStudentInfoHistoryVo> queryByBatchId(Long batchId, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 创建学生信息历史记录
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param batchId 批次ID
|
||||
* @param changeType 变更类型
|
||||
* @param oldData 旧数据
|
||||
* @param newData 新数据
|
||||
* @param changeReason 变更原因
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean createHistory(Long studentId, Long batchId, String changeType,
|
||||
String oldData, String newData, String changeReason);
|
||||
|
||||
/**
|
||||
* 比较学生信息变更
|
||||
*
|
||||
* @param oldData 旧数据
|
||||
* @param newData 新数据
|
||||
* @return 变更详情
|
||||
*/
|
||||
String compareStudentInfo(String oldData, String newData);
|
||||
|
||||
/**
|
||||
* 恢复学生信息到历史版本
|
||||
*
|
||||
* @param historyId 历史记录ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean restoreToHistory(Long historyId);
|
||||
|
||||
/**
|
||||
* 查询学生信息变更统计
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @return 变更统计
|
||||
*/
|
||||
XgStudentInfoHistoryVo getChangeStatistics(Long studentId);
|
||||
|
||||
/**
|
||||
* 批量创建历史记录
|
||||
*
|
||||
* @param historyList 历史记录列表
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean batchCreateHistory(List<XgStudentInfoHistoryBo> historyList);
|
||||
|
||||
/**
|
||||
* 根据变更类型查询历史记录
|
||||
*
|
||||
* @param changeType 变更类型
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 历史记录集合
|
||||
*/
|
||||
TableDataInfo<XgStudentInfoHistoryVo> queryByChangeType(String changeType, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 清理过期历史记录
|
||||
*
|
||||
* @param days 保留天数
|
||||
* @return 清理数量
|
||||
*/
|
||||
Long cleanExpiredHistory(Integer days);
|
||||
}
|
||||
-229
@@ -1,229 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgStudentInfoVo;
|
||||
import org.dromara.xg.domain.bo.XgStudentInfoBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 学生信息Service接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-12
|
||||
*/
|
||||
public interface IXgStudentInfoService {
|
||||
|
||||
/**
|
||||
* 查询学生信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 学生信息
|
||||
*/
|
||||
XgStudentInfoVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询学生信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 学生信息分页列表
|
||||
*/
|
||||
TableDataInfo<XgStudentInfoVo> queryPageList(XgStudentInfoBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的学生信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 学生信息列表
|
||||
*/
|
||||
List<XgStudentInfoVo> queryList(XgStudentInfoBo bo);
|
||||
|
||||
/**
|
||||
* 新增学生信息
|
||||
*
|
||||
* @param bo 学生信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XgStudentInfoBo bo);
|
||||
|
||||
/**
|
||||
* 修改学生信息
|
||||
*
|
||||
* @param bo 学生信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XgStudentInfoBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除学生信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据学号查询学生信息
|
||||
*
|
||||
* @param studentNo 学号
|
||||
* @return 学生信息
|
||||
*/
|
||||
XgStudentInfoVo queryByStudentNo(String studentNo);
|
||||
|
||||
/**
|
||||
* 根据身份证号查询学生信息
|
||||
*
|
||||
* @param idCard 身份证号
|
||||
* @return 学生信息
|
||||
*/
|
||||
XgStudentInfoVo queryByIdCard(String idCard);
|
||||
|
||||
/**
|
||||
* 查询班级学生列表
|
||||
*
|
||||
* @param classCode 班级代码
|
||||
* @return 学生列表
|
||||
*/
|
||||
List<XgStudentInfoVo> queryByClassCode(String classCode);
|
||||
|
||||
/**
|
||||
* 根据班级ID查询学生列表
|
||||
*
|
||||
* @param classId 班级ID
|
||||
* @return 学生列表
|
||||
*/
|
||||
List<XgStudentInfoVo> queryByClassId(Long classId);
|
||||
|
||||
/**
|
||||
* 查询学院学生列表
|
||||
*
|
||||
* @param collegeCode 学院代码
|
||||
* @return 学生列表
|
||||
*/
|
||||
List<XgStudentInfoVo> queryByCollegeCode(String collegeCode);
|
||||
|
||||
/**
|
||||
* 查询学生统计信息
|
||||
*
|
||||
* @param params 查询参数
|
||||
* @return 统计信息
|
||||
*/
|
||||
List<Map<String, Object>> queryStudentStatistics(Map<String, Object> params);
|
||||
|
||||
/**
|
||||
* 批量导入学生信息
|
||||
*
|
||||
* @param studentList 学生信息列表
|
||||
* @param isUpdateSupport 是否支持更新
|
||||
* @param operName 操作人姓名
|
||||
* @return 导入结果
|
||||
*/
|
||||
String importStudent(List<XgStudentInfoBo> studentList, Boolean isUpdateSupport, String operName);
|
||||
|
||||
/**
|
||||
* 批量更新学生信息状态
|
||||
*
|
||||
* @param studentIds 学生ID列表
|
||||
* @param infoStatus 信息状态
|
||||
* @return 是否更新成功
|
||||
*/
|
||||
Boolean batchUpdateInfoStatus(List<Long> studentIds, String infoStatus);
|
||||
|
||||
/**
|
||||
* 提交学生信息审核
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param batchId 批次ID
|
||||
* @return 是否提交成功
|
||||
*/
|
||||
Boolean submitForAudit(Long studentId, Long batchId);
|
||||
|
||||
/**
|
||||
* 审核学生信息
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param auditResult 审核结果
|
||||
* @param auditComment 审核意见
|
||||
* @return 是否审核成功
|
||||
*/
|
||||
Boolean auditStudentInfo(Long studentId, String auditResult, String auditComment);
|
||||
|
||||
/**
|
||||
* 检查学号是否存在
|
||||
*
|
||||
* @param studentNo 学号
|
||||
* @param studentId 学生ID(修改时使用)
|
||||
* @return 是否存在
|
||||
*/
|
||||
Boolean checkStudentNoExists(String studentNo, Long studentId);
|
||||
|
||||
/**
|
||||
* 检查身份证号是否存在
|
||||
*
|
||||
* @param idCard 身份证号
|
||||
* @param studentId 学生ID(修改时使用)
|
||||
* @return 是否存在
|
||||
*/
|
||||
Boolean checkIdCardExists(String idCard, Long studentId);
|
||||
|
||||
/**
|
||||
* 根据批次ID查询学生信息列表
|
||||
*
|
||||
* @param batchId 批次ID
|
||||
* @return 学生信息列表
|
||||
*/
|
||||
List<XgStudentInfoVo> queryByBatchId(Long batchId);
|
||||
|
||||
/**
|
||||
* 将学生信息关联到批次
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param batchId 批次ID
|
||||
* @return 是否关联成功
|
||||
*/
|
||||
Boolean associateStudentToBatch(Long studentId, Long batchId);
|
||||
|
||||
/**
|
||||
* 批量将学生信息关联到批次
|
||||
*
|
||||
* @param studentIds 学生ID列表
|
||||
* @param batchId 批次ID
|
||||
* @return 是否关联成功
|
||||
*/
|
||||
Boolean batchAssociateStudentsToBatch(List<Long> studentIds, Long batchId);
|
||||
|
||||
/**
|
||||
* 学生撤回提交
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param batchId 批次ID
|
||||
* @return 是否撤回成功
|
||||
*/
|
||||
Boolean withdrawSubmission(Long studentId, Long batchId);
|
||||
|
||||
/**
|
||||
* 获取学生在批次中的进度信息
|
||||
*
|
||||
* @param studentId 学生ID
|
||||
* @param batchId 批次ID
|
||||
* @return 进度信息
|
||||
*/
|
||||
Map<String, Object> getStudentBatchProgress(Long studentId, Long batchId);
|
||||
|
||||
/**
|
||||
* 批量审核学生信息
|
||||
*
|
||||
* @param studentIds 学生ID列表
|
||||
* @param batchId 批次ID
|
||||
* @param auditResult 审核结果
|
||||
* @param auditComment 审核意见
|
||||
* @return 是否审核成功
|
||||
*/
|
||||
Boolean batchAuditStudentInfo(List<Long> studentIds, Long batchId, String auditResult, String auditComment);
|
||||
|
||||
}
|
||||
-155
@@ -1,155 +0,0 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xg.domain.bo.XgSystemConfigBo;
|
||||
import org.dromara.xg.domain.vo.XgSystemConfigVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 系统配置Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
public interface IXgSystemConfigService {
|
||||
|
||||
/**
|
||||
* 查询系统配置
|
||||
*
|
||||
* @param id 系统配置主键
|
||||
* @return 系统配置
|
||||
*/
|
||||
XgSystemConfigVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询系统配置列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 系统配置集合
|
||||
*/
|
||||
TableDataInfo<XgSystemConfigVo> queryPageList(XgSystemConfigBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询系统配置列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 系统配置集合
|
||||
*/
|
||||
List<XgSystemConfigVo> queryList(XgSystemConfigBo bo);
|
||||
|
||||
/**
|
||||
* 新增系统配置
|
||||
*
|
||||
* @param bo 系统配置
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean insertByBo(XgSystemConfigBo bo);
|
||||
|
||||
/**
|
||||
* 修改系统配置
|
||||
*
|
||||
* @param bo 系统配置
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean updateByBo(XgSystemConfigBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除系统配置信息
|
||||
*
|
||||
* @param ids 需要删除的系统配置主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 根据配置键查询配置值
|
||||
*
|
||||
* @param configKey 配置键
|
||||
* @return 配置值
|
||||
*/
|
||||
String getConfigValue(String configKey);
|
||||
|
||||
/**
|
||||
* 根据配置键查询配置对象
|
||||
*
|
||||
* @param configKey 配置键
|
||||
* @return 配置对象
|
||||
*/
|
||||
XgSystemConfigVo getConfigByKey(String configKey);
|
||||
|
||||
/**
|
||||
* 设置配置值
|
||||
*
|
||||
* @param configKey 配置键
|
||||
* @param configValue 配置值
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean setConfigValue(String configKey, String configValue);
|
||||
|
||||
/**
|
||||
* 批量设置配置
|
||||
*
|
||||
* @param configs 配置列表
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean batchSetConfig(List<XgSystemConfigBo> configs);
|
||||
|
||||
/**
|
||||
* 根据配置组查询配置列表
|
||||
*
|
||||
* @param configGroup 配置组
|
||||
* @return 配置列表
|
||||
*/
|
||||
List<XgSystemConfigVo> queryByGroup(String configGroup);
|
||||
|
||||
/**
|
||||
* 校验配置键是否唯一
|
||||
*
|
||||
* @param configKey 配置键
|
||||
* @param id 配置ID
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean checkConfigKeyUnique(String configKey, Long id);
|
||||
|
||||
/**
|
||||
* 刷新配置缓存
|
||||
*
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean refreshCache();
|
||||
|
||||
/**
|
||||
* 重置配置为默认值
|
||||
*
|
||||
* @param configKey 配置键
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean resetToDefault(String configKey);
|
||||
|
||||
/**
|
||||
* 导出配置
|
||||
*
|
||||
* @param configGroup 配置组
|
||||
* @return 配置数据
|
||||
*/
|
||||
String exportConfig(String configGroup);
|
||||
|
||||
/**
|
||||
* 导入配置
|
||||
*
|
||||
* @param configData 配置数据
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean importConfig(String configData);
|
||||
|
||||
/**
|
||||
* 获取系统配置统计
|
||||
*
|
||||
* @return 配置统计信息
|
||||
*/
|
||||
XgSystemConfigVo getConfigStatistics();
|
||||
}
|
||||
-550
@@ -1,550 +0,0 @@
|
||||
package org.dromara.xg.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
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.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.xg.domain.XgCollectionBatch;
|
||||
import org.dromara.xg.domain.XgBatchStudentRelation;
|
||||
import org.dromara.xg.domain.XgBatchPermission;
|
||||
import org.dromara.xg.domain.XgBusinessPeriod;
|
||||
import org.dromara.xg.domain.XgBatchOperationLog;
|
||||
import org.dromara.xg.domain.XgStudentInfo;
|
||||
import org.dromara.xg.domain.vo.XgCollectionBatchVo;
|
||||
import org.dromara.xg.mapper.XgCollectionBatchMapper;
|
||||
import org.dromara.xg.mapper.XgBatchStudentRelationMapper;
|
||||
import org.dromara.xg.mapper.XgBatchPermissionMapper;
|
||||
import org.dromara.xg.mapper.XgBusinessPeriodMapper;
|
||||
import org.dromara.xg.mapper.XgBatchOperationLogMapper;
|
||||
import org.dromara.xg.mapper.XgStudentInfoMapper;
|
||||
import org.dromara.xg.service.IStudentInfoPermissionService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 学生信息权限控制服务实现类
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class StudentInfoPermissionServiceImpl implements IStudentInfoPermissionService {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(StudentInfoPermissionServiceImpl.class);
|
||||
|
||||
private final XgCollectionBatchMapper collectionBatchMapper;
|
||||
private final XgBatchStudentRelationMapper batchStudentRelationMapper;
|
||||
private final XgBatchPermissionMapper batchPermissionMapper;
|
||||
private final XgBusinessPeriodMapper businessPeriodMapper;
|
||||
private final XgBatchOperationLogMapper batchOperationLogMapper;
|
||||
private final XgStudentInfoMapper studentInfoMapper;
|
||||
|
||||
/**
|
||||
* 检查学生是否可以修改信息
|
||||
*/
|
||||
@Override
|
||||
public boolean canEditStudentInfo(Long studentId) {
|
||||
try {
|
||||
StudentPermissionResult result = checkStudentPermission(studentId);
|
||||
return result.isCanEdit();
|
||||
} catch (Exception e) {
|
||||
log.error("检查学生编辑权限失败: {}", e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查学生是否可以修改信息(详细信息)
|
||||
*/
|
||||
@Override
|
||||
public StudentPermissionResult checkStudentPermission(Long studentId) {
|
||||
StudentPermissionResult result = new StudentPermissionResult();
|
||||
result.setStudentId(studentId);
|
||||
result.setCanEdit(false);
|
||||
result.setCanSubmit(false);
|
||||
result.setCanWithdraw(false);
|
||||
|
||||
try {
|
||||
// 获取当前活跃批次
|
||||
XgCollectionBatchVo currentBatch = getCurrentActiveBatch();
|
||||
if (currentBatch == null) {
|
||||
result.setMessage("当前没有活跃的信息采集批次");
|
||||
return result;
|
||||
}
|
||||
|
||||
result.setBatchId(currentBatch.getBatchId());
|
||||
result.setBatchName(currentBatch.getBatchName());
|
||||
|
||||
// 检查学生是否在批次中
|
||||
if (!isStudentInBatch(studentId, currentBatch.getBatchId())) {
|
||||
result.setMessage("学生不在当前批次中");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 获取当前用户信息
|
||||
var loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
result.setMessage("用户未登录");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 获取用户角色权限
|
||||
var rolePermissions = loginUser.getRolePermission();
|
||||
|
||||
// 检查批次权限配置
|
||||
XgBatchPermission batchPermission = getBatchPermissionForUser(currentBatch.getBatchId(), loginUser.getUserId());
|
||||
if (batchPermission == null) {
|
||||
result.setMessage("用户在当前批次中没有权限配置");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 检查业务期间
|
||||
List<XgBusinessPeriod> validPeriods = getValidBusinessPeriods(currentBatch.getBatchId(), rolePermissions);
|
||||
if (validPeriods.isEmpty()) {
|
||||
result.setMessage("当前不在有效的业务期间内");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 获取学生在批次中的状态
|
||||
XgBatchStudentRelation studentRelation = getStudentBatchRelation(studentId, currentBatch.getBatchId());
|
||||
if (studentRelation == null) {
|
||||
result.setMessage("学生批次关联信息不存在");
|
||||
return result;
|
||||
}
|
||||
|
||||
result.setSubmissionStatus(studentRelation.getSubmissionStatus());
|
||||
result.setApprovalStatus(studentRelation.getApprovalStatus());
|
||||
|
||||
// 根据权限配置和业务状态确定操作权限
|
||||
determinePermissions(result, batchPermission, studentRelation, validPeriods);
|
||||
|
||||
result.setCheckPassed(true);
|
||||
if (StringUtils.isBlank(result.getMessage())) {
|
||||
result.setMessage("权限检查通过");
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("检查学生权限异常: {}", e.getMessage(), e);
|
||||
result.setMessage("权限检查异常: " + e.getMessage());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 确定操作权限
|
||||
*/
|
||||
private void determinePermissions(StudentPermissionResult result, XgBatchPermission batchPermission,
|
||||
XgBatchStudentRelation studentRelation, List<XgBusinessPeriod> validPeriods) {
|
||||
|
||||
// 基础权限检查
|
||||
if (batchPermission.getCanView() != null && Boolean.TRUE.equals(batchPermission.getCanView())) {
|
||||
result.setCanView(true);
|
||||
}
|
||||
|
||||
// 编辑权限检查
|
||||
if (batchPermission.getCanEdit() != null && Boolean.TRUE.equals(batchPermission.getCanEdit())) {
|
||||
// 检查提交状态
|
||||
String submissionStatus = studentRelation.getSubmissionStatus();
|
||||
String approvalStatus = studentRelation.getApprovalStatus();
|
||||
|
||||
if ("DRAFT".equals(submissionStatus) || "WITHDRAWN".equals(submissionStatus)) {
|
||||
result.setCanEdit(true);
|
||||
} else if ("SUBMITTED".equals(submissionStatus) && "REJECTED".equals(approvalStatus)) {
|
||||
result.setCanEdit(true);
|
||||
result.setMessage("信息已被拒绝,可以重新编辑");
|
||||
}
|
||||
}
|
||||
|
||||
// 提交权限检查
|
||||
if (batchPermission.getCanSubmit() != null && Boolean.TRUE.equals(batchPermission.getCanSubmit())) {
|
||||
String submissionStatus = studentRelation.getSubmissionStatus();
|
||||
if ("DRAFT".equals(submissionStatus) || "WITHDRAWN".equals(submissionStatus)) {
|
||||
result.setCanSubmit(true);
|
||||
}
|
||||
}
|
||||
|
||||
// 撤回权限检查
|
||||
if (batchPermission.getCanWithdraw() != null && Boolean.TRUE.equals(batchPermission.getCanWithdraw())) {
|
||||
String submissionStatus = studentRelation.getSubmissionStatus();
|
||||
String approvalStatus = studentRelation.getApprovalStatus();
|
||||
if ("SUBMITTED".equals(submissionStatus) && "PENDING".equals(approvalStatus)) {
|
||||
result.setCanWithdraw(true);
|
||||
}
|
||||
}
|
||||
|
||||
// 审核权限检查(管理员和审核人员)
|
||||
if (batchPermission.getCanApprove() != null && Boolean.TRUE.equals(batchPermission.getCanApprove())) {
|
||||
String submissionStatus = studentRelation.getSubmissionStatus();
|
||||
String approvalStatus = studentRelation.getApprovalStatus();
|
||||
if ("SUBMITTED".equals(submissionStatus) && "PENDING".equals(approvalStatus)) {
|
||||
result.setCanApprove(true);
|
||||
}
|
||||
}
|
||||
|
||||
// 拒绝权限检查
|
||||
if (batchPermission.getCanReject() != null && Boolean.TRUE.equals(batchPermission.getCanReject())) {
|
||||
String submissionStatus = studentRelation.getSubmissionStatus();
|
||||
String approvalStatus = studentRelation.getApprovalStatus();
|
||||
if ("SUBMITTED".equals(submissionStatus) && "PENDING".equals(approvalStatus)) {
|
||||
result.setCanReject(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查当前是否有活跃批次
|
||||
*/
|
||||
@Override
|
||||
public XgCollectionBatchVo getCurrentActiveBatch() {
|
||||
try {
|
||||
LambdaQueryWrapper<XgCollectionBatch> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(XgCollectionBatch::getBatchStatus, "ACTIVE");
|
||||
lqw.eq(XgCollectionBatch::getPublishStatus, "PUBLISHED");
|
||||
lqw.le(XgCollectionBatch::getStartTime, LocalDateTime.now());
|
||||
lqw.ge(XgCollectionBatch::getEndTime, LocalDateTime.now());
|
||||
lqw.orderByDesc(XgCollectionBatch::getCreateTime);
|
||||
lqw.last("LIMIT 1");
|
||||
|
||||
XgCollectionBatch batch = collectionBatchMapper.selectOne(lqw);
|
||||
return batch != null ? MapstructUtils.convert(batch, XgCollectionBatchVo.class) : null;
|
||||
} catch (Exception e) {
|
||||
log.error("获取当前活跃批次失败: {}", e.getMessage(), e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查学生是否符合批次条件
|
||||
*/
|
||||
@Override
|
||||
public boolean isStudentInBatch(Long studentId, Long batchId) {
|
||||
try {
|
||||
LambdaQueryWrapper<XgBatchStudentRelation> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(XgBatchStudentRelation::getBatchId, batchId);
|
||||
lqw.eq(XgBatchStudentRelation::getStudentId, studentId);
|
||||
return batchStudentRelationMapper.exists(lqw);
|
||||
} catch (Exception e) {
|
||||
log.error("检查学生批次关联失败: {}", e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录学生信息修改日志
|
||||
*/
|
||||
@Override
|
||||
public void logStudentInfoChange(Long studentId, Long batchId, String operation, String description) {
|
||||
try {
|
||||
XgBatchOperationLog log = new XgBatchOperationLog();
|
||||
log.setBatchId(batchId);
|
||||
log.setOperationType(operation);
|
||||
log.setOperationDescription(description);
|
||||
log.setOperatorId(LoginHelper.getUserId());
|
||||
log.setOperatorName(LoginHelper.getUsername());
|
||||
log.setOperationTime(LocalDateTime.now());
|
||||
log.setOperationResult("SUCCESS");
|
||||
log.setOperationDetails("学生ID: " + studentId + ", " + description);
|
||||
|
||||
batchOperationLogMapper.insert(log);
|
||||
} catch (Exception e) {
|
||||
log.error("记录学生信息修改日志失败: {}", e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 学生提交信息
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public boolean submitStudentInfo(Long studentId, Long batchId) {
|
||||
try {
|
||||
// 检查权限
|
||||
StudentPermissionResult permission = checkStudentPermission(studentId);
|
||||
if (!permission.isCanSubmit()) {
|
||||
throw new ServiceException("没有提交权限: " + permission.getMessage());
|
||||
}
|
||||
|
||||
// 获取学生批次关联
|
||||
XgBatchStudentRelation studentRelation = getStudentBatchRelation(studentId, batchId);
|
||||
if (studentRelation == null) {
|
||||
throw new ServiceException("学生批次关联信息不存在");
|
||||
}
|
||||
|
||||
// 更新提交状态
|
||||
studentRelation.setSubmissionStatus("SUBMITTED");
|
||||
studentRelation.setSubmissionTime(LocalDateTime.now());
|
||||
studentRelation.setApprovalStatus("PENDING");
|
||||
studentRelation.setSubmissionCount(
|
||||
ObjectUtil.defaultIfNull(studentRelation.getSubmissionCount(), 0) + 1
|
||||
);
|
||||
|
||||
boolean flag = batchStudentRelationMapper.updateById(studentRelation) > 0;
|
||||
if (flag) {
|
||||
// 更新学生信息表的提交状态
|
||||
updateStudentInfoSubmissionStatus(studentId, "SUBMITTED");
|
||||
|
||||
// 记录操作日志
|
||||
logStudentInfoChange(studentId, batchId, "SUBMIT", "学生提交信息");
|
||||
}
|
||||
|
||||
return flag;
|
||||
} catch (Exception e) {
|
||||
log.error("学生提交信息失败: {}", e.getMessage(), e);
|
||||
throw new ServiceException("提交失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生在批次中的统计信息
|
||||
*/
|
||||
@Override
|
||||
public StudentBatchStatistics getStudentBatchStatistics(Long studentId, Long batchId) {
|
||||
StudentBatchStatistics statistics = new StudentBatchStatistics();
|
||||
statistics.setStudentId(studentId);
|
||||
statistics.setBatchId(batchId);
|
||||
|
||||
try {
|
||||
// 获取学生批次关联信息
|
||||
XgBatchStudentRelation studentRelation = getStudentBatchRelation(studentId, batchId);
|
||||
if (studentRelation != null) {
|
||||
statistics.setSubmissionStatus(studentRelation.getSubmissionStatus());
|
||||
statistics.setApprovalStatus(studentRelation.getApprovalStatus());
|
||||
statistics.setSubmissionTime(studentRelation.getSubmissionTime());
|
||||
statistics.setApprovalTime(studentRelation.getApprovalTime());
|
||||
statistics.setSubmissionCount(
|
||||
ObjectUtil.defaultIfNull(studentRelation.getSubmissionCount(), 0)
|
||||
);
|
||||
statistics.setLastEditTime(studentRelation.getLastEditTime());
|
||||
}
|
||||
|
||||
// 获取批次信息
|
||||
XgCollectionBatch batch = collectionBatchMapper.selectById(batchId);
|
||||
if (batch != null) {
|
||||
statistics.setBatchName(batch.getBatchName());
|
||||
statistics.setBatchStartTime(batch.getStartTime());
|
||||
statistics.setBatchEndTime(batch.getEndTime());
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("获取学生批次统计信息失败: {}", e.getMessage(), e);
|
||||
}
|
||||
|
||||
return statistics;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户在批次中的权限配置
|
||||
*/
|
||||
private XgBatchPermission getBatchPermissionForUser(Long batchId, Long userId) {
|
||||
try {
|
||||
// 这里需要根据用户的角色来获取权限配置
|
||||
// 简化实现,实际应该根据用户角色查询
|
||||
LambdaQueryWrapper<XgBatchPermission> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(XgBatchPermission::getBatchId, batchId);
|
||||
lqw.eq(XgBatchPermission::getIsActive, 1);
|
||||
lqw.orderByDesc(XgBatchPermission::getCreateTime);
|
||||
lqw.last("LIMIT 1");
|
||||
|
||||
return batchPermissionMapper.selectOne(lqw);
|
||||
} catch (Exception e) {
|
||||
log.error("获取用户批次权限配置失败: {}", e.getMessage(), e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取有效的业务期间
|
||||
*/
|
||||
private List<XgBusinessPeriod> getValidBusinessPeriods(Long batchId, Set<String> rolePermissions) {
|
||||
try {
|
||||
LambdaQueryWrapper<XgBusinessPeriod> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(XgBusinessPeriod::getBatchId, batchId);
|
||||
lqw.eq(XgBusinessPeriod::getIsActive, 1);
|
||||
lqw.le(XgBusinessPeriod::getStartTime, LocalDateTime.now());
|
||||
lqw.ge(XgBusinessPeriod::getEndTime, LocalDateTime.now());
|
||||
|
||||
return businessPeriodMapper.selectList(lqw);
|
||||
} catch (Exception e) {
|
||||
log.error("获取有效业务期间失败: {}", e.getMessage(), e);
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取学生批次关联信息
|
||||
*/
|
||||
private XgBatchStudentRelation getStudentBatchRelation(Long studentId, Long batchId) {
|
||||
try {
|
||||
LambdaQueryWrapper<XgBatchStudentRelation> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(XgBatchStudentRelation::getBatchId, batchId);
|
||||
lqw.eq(XgBatchStudentRelation::getStudentId, studentId);
|
||||
return batchStudentRelationMapper.selectOne(lqw);
|
||||
} catch (Exception e) {
|
||||
log.error("获取学生批次关联信息失败: {}", e.getMessage(), e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新学生信息表的提交状态
|
||||
*/
|
||||
private void updateStudentInfoSubmissionStatus(Long studentId, String status) {
|
||||
try {
|
||||
XgStudentInfo studentInfo = studentInfoMapper.selectById(studentId);
|
||||
if (studentInfo != null) {
|
||||
studentInfo.setSubmissionStatus(status);
|
||||
studentInfo.setSubmissionTime(LocalDateTime.now());
|
||||
studentInfoMapper.updateById(studentInfo);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("更新学生信息提交状态失败: {}", e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 学生权限检查结果内部类
|
||||
*/
|
||||
public static class StudentPermissionResult implements IStudentInfoPermissionService.StudentPermissionResult {
|
||||
private Long studentId;
|
||||
private Long batchId;
|
||||
private String batchName;
|
||||
private boolean canView = false;
|
||||
private boolean canEdit = false;
|
||||
private boolean canSubmit = false;
|
||||
private boolean canWithdraw = false;
|
||||
private boolean canApprove = false;
|
||||
private boolean canReject = false;
|
||||
private String submissionStatus;
|
||||
private String approvalStatus;
|
||||
private String message;
|
||||
private boolean checkPassed = false;
|
||||
|
||||
// Getters and Setters
|
||||
@Override
|
||||
public Long getStudentId() { return studentId; }
|
||||
public void setStudentId(Long studentId) { this.studentId = studentId; }
|
||||
|
||||
@Override
|
||||
public Long getBatchId() { return batchId; }
|
||||
public void setBatchId(Long batchId) { this.batchId = batchId; }
|
||||
|
||||
@Override
|
||||
public String getBatchName() { return batchName; }
|
||||
public void setBatchName(String batchName) { this.batchName = batchName; }
|
||||
|
||||
@Override
|
||||
public boolean isCanView() { return canView; }
|
||||
public void setCanView(boolean canView) { this.canView = canView; }
|
||||
|
||||
@Override
|
||||
public boolean isCanEdit() { return canEdit; }
|
||||
public void setCanEdit(boolean canEdit) { this.canEdit = canEdit; }
|
||||
|
||||
@Override
|
||||
public boolean isCanSubmit() { return canSubmit; }
|
||||
public void setCanSubmit(boolean canSubmit) { this.canSubmit = canSubmit; }
|
||||
|
||||
@Override
|
||||
public boolean isCanWithdraw() { return canWithdraw; }
|
||||
public void setCanWithdraw(boolean canWithdraw) { this.canWithdraw = canWithdraw; }
|
||||
|
||||
@Override
|
||||
public boolean isCanApprove() { return canApprove; }
|
||||
public void setCanApprove(boolean canApprove) { this.canApprove = canApprove; }
|
||||
|
||||
@Override
|
||||
public boolean isCanReject() { return canReject; }
|
||||
public void setCanReject(boolean canReject) { this.canReject = canReject; }
|
||||
|
||||
@Override
|
||||
public String getSubmissionStatus() { return submissionStatus; }
|
||||
public void setSubmissionStatus(String submissionStatus) { this.submissionStatus = submissionStatus; }
|
||||
|
||||
@Override
|
||||
public String getApprovalStatus() { return approvalStatus; }
|
||||
public void setApprovalStatus(String approvalStatus) { this.approvalStatus = approvalStatus; }
|
||||
|
||||
@Override
|
||||
public String getMessage() { return message; }
|
||||
public void setMessage(String message) { this.message = message; }
|
||||
|
||||
@Override
|
||||
public boolean isCheckPassed() { return checkPassed; }
|
||||
public void setCheckPassed(boolean checkPassed) { this.checkPassed = checkPassed; }
|
||||
}
|
||||
|
||||
/**
|
||||
* 学生批次统计信息内部类
|
||||
*/
|
||||
public static class StudentBatchStatistics implements IStudentInfoPermissionService.StudentBatchStatistics {
|
||||
private Long studentId;
|
||||
private Long batchId;
|
||||
private String batchName;
|
||||
private String submissionStatus;
|
||||
private String approvalStatus;
|
||||
private LocalDateTime submissionTime;
|
||||
private LocalDateTime approvalTime;
|
||||
private Integer submissionCount;
|
||||
private LocalDateTime lastEditTime;
|
||||
private LocalDateTime batchStartTime;
|
||||
private LocalDateTime batchEndTime;
|
||||
|
||||
// Getters and Setters
|
||||
@Override
|
||||
public Long getStudentId() { return studentId; }
|
||||
public void setStudentId(Long studentId) { this.studentId = studentId; }
|
||||
|
||||
@Override
|
||||
public Long getBatchId() { return batchId; }
|
||||
public void setBatchId(Long batchId) { this.batchId = batchId; }
|
||||
|
||||
@Override
|
||||
public String getBatchName() { return batchName; }
|
||||
public void setBatchName(String batchName) { this.batchName = batchName; }
|
||||
|
||||
@Override
|
||||
public String getSubmissionStatus() { return submissionStatus; }
|
||||
public void setSubmissionStatus(String submissionStatus) { this.submissionStatus = submissionStatus; }
|
||||
|
||||
@Override
|
||||
public String getApprovalStatus() { return approvalStatus; }
|
||||
public void setApprovalStatus(String approvalStatus) { this.approvalStatus = approvalStatus; }
|
||||
|
||||
@Override
|
||||
public LocalDateTime getSubmissionTime() { return submissionTime; }
|
||||
public void setSubmissionTime(LocalDateTime submissionTime) { this.submissionTime = submissionTime; }
|
||||
|
||||
@Override
|
||||
public LocalDateTime getApprovalTime() { return approvalTime; }
|
||||
public void setApprovalTime(LocalDateTime approvalTime) { this.approvalTime = approvalTime; }
|
||||
|
||||
@Override
|
||||
public Integer getSubmissionCount() { return submissionCount; }
|
||||
public void setSubmissionCount(Integer submissionCount) { this.submissionCount = submissionCount; }
|
||||
|
||||
@Override
|
||||
public LocalDateTime getLastEditTime() { return lastEditTime; }
|
||||
public void setLastEditTime(LocalDateTime lastEditTime) { this.lastEditTime = lastEditTime; }
|
||||
|
||||
@Override
|
||||
public LocalDateTime getBatchStartTime() { return batchStartTime; }
|
||||
public void setBatchStartTime(LocalDateTime batchStartTime) { this.batchStartTime = batchStartTime; }
|
||||
|
||||
@Override
|
||||
public LocalDateTime getBatchEndTime() { return batchEndTime; }
|
||||
public void setBatchEndTime(LocalDateTime batchEndTime) { this.batchEndTime = batchEndTime; }
|
||||
}
|
||||
}
|
||||
-231
@@ -1,231 +0,0 @@
|
||||
package org.dromara.xg.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.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.xg.domain.XgAcademicYear;
|
||||
import org.dromara.xg.domain.bo.XgAcademicYearBo;
|
||||
import org.dromara.xg.domain.vo.XgAcademicYearVo;
|
||||
import org.dromara.xg.mapper.XgAcademicYearMapper;
|
||||
import org.dromara.xg.service.IXgAcademicYearService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 学年管理Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XgAcademicYearServiceImpl implements IXgAcademicYearService {
|
||||
|
||||
private final XgAcademicYearMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询学年管理
|
||||
*
|
||||
* @param id 学年管理主键
|
||||
* @return 学年管理
|
||||
*/
|
||||
@Override
|
||||
public XgAcademicYearVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学年管理列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页查询条件
|
||||
* @return 学年管理集合
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XgAcademicYearVo> queryPageList(XgAcademicYearBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XgAcademicYear> lqw = buildQueryWrapper(bo);
|
||||
Page<XgAcademicYearVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询学年管理列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 学年管理集合
|
||||
*/
|
||||
@Override
|
||||
public List<XgAcademicYearVo> queryList(XgAcademicYearBo bo) {
|
||||
LambdaQueryWrapper<XgAcademicYear> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XgAcademicYear> buildQueryWrapper(XgAcademicYearBo bo) {
|
||||
LambdaQueryWrapper<XgAcademicYear> lqw = Wrappers.lambdaQuery();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getYearName()), XgAcademicYear::getYearName, bo.getYearName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getYearCode()), XgAcademicYear::getYearCode, bo.getYearCode());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getStartDate()), XgAcademicYear::getStartDate, bo.getStartDate());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getEndDate()), XgAcademicYear::getEndDate, bo.getEndDate());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getIsCurrent()), XgAcademicYear::getIsCurrent, bo.getIsCurrent());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XgAcademicYear::getStatus, bo.getStatus());
|
||||
lqw.orderByDesc(XgAcademicYear::getCreateTime);
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增学年管理
|
||||
*
|
||||
* @param bo 学年管理
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(XgAcademicYearBo bo) {
|
||||
XgAcademicYear add = MapstructUtils.convert(bo, XgAcademicYear.class);
|
||||
validEntityBeforeSave(add);
|
||||
|
||||
// 如果设置为当前学年,需要取消其他学年的当前状态
|
||||
if (Boolean.TRUE.equals(bo.getIsCurrent())) {
|
||||
baseMapper.update(null, Wrappers.<XgAcademicYear>lambdaUpdate()
|
||||
.set(XgAcademicYear::getIsCurrent, false));
|
||||
}
|
||||
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改学年管理
|
||||
*
|
||||
* @param bo 学年管理
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateByBo(XgAcademicYearBo bo) {
|
||||
XgAcademicYear update = MapstructUtils.convert(bo, XgAcademicYear.class);
|
||||
validEntityBeforeSave(update);
|
||||
|
||||
// 如果设置为当前学年,需要取消其他学年的当前状态
|
||||
if (Boolean.TRUE.equals(bo.getIsCurrent())) {
|
||||
baseMapper.update(null, Wrappers.<XgAcademicYear>lambdaUpdate()
|
||||
.set(XgAcademicYear::getIsCurrent, false)
|
||||
.ne(XgAcademicYear::getId, bo.getId()));
|
||||
}
|
||||
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*
|
||||
* @param entity 实体类数据
|
||||
*/
|
||||
private void validEntityBeforeSave(XgAcademicYear entity) {
|
||||
// 校验学年编码是否唯一
|
||||
if (!checkYearCodeExists(entity.getYearCode(), entity.getId())) {
|
||||
throw new RuntimeException("学年编码已存在");
|
||||
}
|
||||
|
||||
// 校验开始日期不能大于结束日期
|
||||
if (entity.getStartDate() != null && entity.getEndDate() != null
|
||||
&& entity.getStartDate().isAfter(entity.getEndDate())) {
|
||||
throw new RuntimeException("开始日期不能大于结束日期");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除学年管理
|
||||
*
|
||||
* @param ids 需要删除的学年管理主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (Boolean.TRUE.equals(isValid)) {
|
||||
// 校验是否存在当前学年
|
||||
long currentCount = baseMapper.selectCount(Wrappers.<XgAcademicYear>lambdaQuery()
|
||||
.in(XgAcademicYear::getId, ids)
|
||||
.eq(XgAcademicYear::getIsCurrent, true));
|
||||
if (currentCount > 0) {
|
||||
throw new RuntimeException("不能删除当前学年");
|
||||
}
|
||||
}
|
||||
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据学年编码查询学年信息
|
||||
*
|
||||
* @param yearCode 学年编码
|
||||
* @return 学年信息
|
||||
*/
|
||||
@Override
|
||||
public XgAcademicYearVo queryByYearCode(String yearCode) {
|
||||
return baseMapper.selectVoOne(Wrappers.<XgAcademicYear>lambdaQuery()
|
||||
.eq(XgAcademicYear::getYearCode, yearCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前学年
|
||||
*
|
||||
* @return 当前学年
|
||||
*/
|
||||
@Override
|
||||
public XgAcademicYearVo queryCurrentYear() {
|
||||
return baseMapper.selectVoOne(Wrappers.<XgAcademicYear>lambdaQuery()
|
||||
.eq(XgAcademicYear::getIsCurrent, true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前学年
|
||||
*
|
||||
* @param yearId 学年ID
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean setCurrentYear(Long yearId) {
|
||||
// 先取消所有学年的当前状态
|
||||
baseMapper.update(null, Wrappers.<XgAcademicYear>lambdaUpdate()
|
||||
.set(XgAcademicYear::getIsCurrent, false));
|
||||
|
||||
// 设置指定学年为当前学年
|
||||
return baseMapper.update(null, Wrappers.<XgAcademicYear>lambdaUpdate()
|
||||
.set(XgAcademicYear::getIsCurrent, true)
|
||||
.eq(XgAcademicYear::getId, yearId)) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查学年编码是否存在
|
||||
*
|
||||
* @param yearCode 学年编码
|
||||
* @param yearId 学年ID(修改时使用)
|
||||
* @return 是否存在
|
||||
*/
|
||||
@Override
|
||||
public Boolean checkYearCodeExists(String yearCode, Long yearId) {
|
||||
LambdaQueryWrapper<XgAcademicYear> lqw = Wrappers.<XgAcademicYear>lambdaQuery()
|
||||
.eq(XgAcademicYear::getYearCode, yearCode);
|
||||
if (ObjectUtil.isNotNull(yearId)) {
|
||||
lqw.ne(XgAcademicYear::getId, yearId);
|
||||
}
|
||||
return baseMapper.selectCount(lqw) > 0;
|
||||
}
|
||||
}
|
||||
-557
@@ -1,557 +0,0 @@
|
||||
package org.dromara.xg.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
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.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.xg.domain.XgBatchPermission;
|
||||
import org.dromara.xg.domain.XgBusinessPeriod;
|
||||
import org.dromara.xg.domain.XgCollectionBatch;
|
||||
import org.dromara.xg.domain.vo.XgBatchPermissionVo;
|
||||
import org.dromara.xg.mapper.XgBatchPermissionMapper;
|
||||
import org.dromara.xg.mapper.XgBusinessPeriodMapper;
|
||||
import org.dromara.xg.mapper.XgCollectionBatchMapper;
|
||||
import org.dromara.xg.service.IXgBatchPermissionService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 批次权限控制服务实现类
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XgBatchPermissionServiceImpl implements IXgBatchPermissionService {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(XgBatchPermissionServiceImpl.class);
|
||||
|
||||
private final XgBatchPermissionMapper baseMapper;
|
||||
private final XgBusinessPeriodMapper businessPeriodMapper;
|
||||
private final XgCollectionBatchMapper collectionBatchMapper;
|
||||
|
||||
/**
|
||||
* 检查用户在批次中的权限
|
||||
*/
|
||||
@Override
|
||||
public BatchPermissionResult checkUserBatchPermission(Long batchId, Long userId) {
|
||||
BatchPermissionResult result = new BatchPermissionResult();
|
||||
result.setBatchId(batchId);
|
||||
result.setUserId(userId);
|
||||
result.setHasPermission(false);
|
||||
|
||||
try {
|
||||
// 获取批次信息
|
||||
XgCollectionBatch batch = collectionBatchMapper.selectById(batchId);
|
||||
if (batch == null) {
|
||||
result.setMessage("批次不存在");
|
||||
return result;
|
||||
}
|
||||
|
||||
if (!"ACTIVE".equals(batch.getBatchStatus())) {
|
||||
result.setMessage("批次未激活");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 获取用户角色信息
|
||||
var loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
result.setMessage("用户未登录");
|
||||
return result;
|
||||
}
|
||||
|
||||
Set<String> rolePermissions = loginUser.getRolePermission();
|
||||
if (CollUtil.isEmpty(rolePermissions)) {
|
||||
result.setMessage("用户没有角色权限");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 查询用户在批次中的权限配置
|
||||
XgBatchPermission batchPermission = getUserBatchPermission(batchId, userId, rolePermissions);
|
||||
if (batchPermission == null) {
|
||||
result.setMessage("用户在当前批次中没有权限配置");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 检查权限是否在有效期内
|
||||
if (!isPermissionValid(batchPermission)) {
|
||||
result.setMessage("权限已过期或未生效");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 检查业务期间
|
||||
if (!isInValidBusinessPeriod(batchId, rolePermissions)) {
|
||||
result.setMessage("当前不在有效的业务期间内");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 验证权限配置的有效性
|
||||
if (batchPermission.getCanView() != null && Boolean.TRUE.equals(batchPermission.getCanView())) {
|
||||
// 可查看权限验证
|
||||
}
|
||||
if (batchPermission.getCanEdit() != null && Boolean.TRUE.equals(batchPermission.getCanEdit())) {
|
||||
// 可编辑权限验证
|
||||
}
|
||||
if (batchPermission.getCanDelete() != null && Boolean.TRUE.equals(batchPermission.getCanDelete())) {
|
||||
// 可删除权限验证
|
||||
}
|
||||
if (batchPermission.getCanExport() != null && Boolean.TRUE.equals(batchPermission.getCanExport())) {
|
||||
// 可导出权限验证
|
||||
}
|
||||
if (batchPermission.getCanImport() != null && Boolean.TRUE.equals(batchPermission.getCanImport())) {
|
||||
// 可导入权限验证
|
||||
}
|
||||
if (batchPermission.getCanApprove() != null && Boolean.TRUE.equals(batchPermission.getCanApprove())) {
|
||||
// 可审批权限验证
|
||||
}
|
||||
|
||||
// 设置权限结果
|
||||
result.setHasPermission(true);
|
||||
result.setPermissionType(batchPermission.getPermissionType());
|
||||
result.setCanView(Boolean.TRUE.equals(batchPermission.getCanView()));
|
||||
result.setCanEdit(Boolean.TRUE.equals(batchPermission.getCanEdit()));
|
||||
result.setCanSubmit(Boolean.TRUE.equals(batchPermission.getCanSubmit()));
|
||||
result.setCanApprove(Boolean.TRUE.equals(batchPermission.getCanApprove()));
|
||||
result.setCanReject(Boolean.TRUE.equals(batchPermission.getCanReject()));
|
||||
result.setCanWithdraw(Boolean.TRUE.equals(batchPermission.getCanWithdraw()));
|
||||
result.setMessage("权限检查通过");
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("检查用户批次权限失败: {}", e.getMessage(), e);
|
||||
result.setMessage("权限检查异常: " + e.getMessage());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查用户是否有特定操作权限
|
||||
*/
|
||||
@Override
|
||||
public boolean hasOperationPermission(Long batchId, Long userId, String operation) {
|
||||
try {
|
||||
BatchPermissionResult result = checkUserBatchPermission(batchId, userId);
|
||||
if (!result.isHasPermission()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return switch (operation.toUpperCase()) {
|
||||
case "VIEW" -> result.isCanView();
|
||||
case "EDIT" -> result.isCanEdit();
|
||||
case "SUBMIT" -> result.isCanSubmit();
|
||||
case "APPROVE" -> result.isCanApprove();
|
||||
case "REJECT" -> result.isCanReject();
|
||||
case "WITHDRAW" -> result.isCanWithdraw();
|
||||
default -> false;
|
||||
};
|
||||
} catch (Exception e) {
|
||||
log.error("检查操作权限失败: {}", e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户在批次中的权限配置
|
||||
*/
|
||||
@Override
|
||||
public XgBatchPermissionVo getUserBatchPermissionConfig(Long batchId, Long userId) {
|
||||
try {
|
||||
var loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Set<String> rolePermissions = loginUser.getRolePermission();
|
||||
XgBatchPermission batchPermission = getUserBatchPermission(batchId, userId, rolePermissions);
|
||||
|
||||
return batchPermission != null ? MapstructUtils.convert(batchPermission, XgBatchPermissionVo.class) : null;
|
||||
} catch (Exception e) {
|
||||
log.error("获取用户批次权限配置失败: {}", e.getMessage(), e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量配置权限
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean batchConfigurePermissions(Long batchId, List<IXgBatchPermissionService.BatchPermissionConfig> configs) {
|
||||
try {
|
||||
// 验证批次是否存在
|
||||
XgCollectionBatch batch = collectionBatchMapper.selectById(batchId);
|
||||
if (batch == null) {
|
||||
throw new ServiceException("批次不存在");
|
||||
}
|
||||
|
||||
// 删除现有权限配置
|
||||
LambdaQueryWrapper<XgBatchPermission> deleteWrapper = Wrappers.lambdaQuery();
|
||||
deleteWrapper.eq(XgBatchPermission::getBatchId, batchId);
|
||||
baseMapper.delete(deleteWrapper);
|
||||
|
||||
// 批量插入新的权限配置
|
||||
for (IXgBatchPermissionService.BatchPermissionConfig config : configs) {
|
||||
XgBatchPermission permission = new XgBatchPermission();
|
||||
permission.setBatchId(batchId);
|
||||
permission.setUserId(config.getUserId());
|
||||
permission.setRoleId(config.getRoleId());
|
||||
permission.setPermissionType(config.getPermissionType());
|
||||
permission.setCanView(config.getCanView() ? Boolean.TRUE : Boolean.FALSE);
|
||||
permission.setCanEdit(config.getCanEdit() ? Boolean.TRUE : Boolean.FALSE);
|
||||
permission.setCanDelete(config.getCanDelete() ? Boolean.TRUE : Boolean.FALSE);
|
||||
permission.setCanApprove(config.getCanApprove() ? Boolean.TRUE : Boolean.FALSE);
|
||||
permission.setCanExport(config.getCanExport() ? Boolean.TRUE : Boolean.FALSE);
|
||||
permission.setCanImport(config.getCanImport() ? Boolean.TRUE : Boolean.FALSE);
|
||||
|
||||
// 设置权限状态
|
||||
permission.setIsActive(config.getIsActive() ? Boolean.TRUE : Boolean.FALSE);
|
||||
|
||||
baseMapper.insert(permission);
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
log.error("批量配置批次权限失败: {}", e.getMessage(), e);
|
||||
throw new ServiceException("配置权限失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取批次权限配置列表
|
||||
*/
|
||||
@Override
|
||||
public List<XgBatchPermissionVo> getBatchPermissionConfigs(Long batchId) {
|
||||
try {
|
||||
LambdaQueryWrapper<XgBatchPermission> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(XgBatchPermission::getBatchId, batchId);
|
||||
lqw.orderByDesc(XgBatchPermission::getCreateTime);
|
||||
|
||||
return baseMapper.selectList(lqw).stream()
|
||||
.map(permission -> MapstructUtils.convert(permission, XgBatchPermissionVo.class))
|
||||
.collect(Collectors.toList());
|
||||
} catch (Exception e) {
|
||||
log.error("获取批次权限配置列表失败: {}", e.getMessage(), e);
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新权限配置状态
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean updatePermissionStatus(Long permissionId, Boolean isActive) {
|
||||
try {
|
||||
XgBatchPermission permission = baseMapper.selectById(permissionId);
|
||||
if (permission == null) {
|
||||
throw new ServiceException("权限配置不存在");
|
||||
}
|
||||
|
||||
permission.setIsActive(isActive ? 1 : 0);
|
||||
return baseMapper.updateById(permission) > 0;
|
||||
} catch (Exception e) {
|
||||
log.error("更新权限配置状态失败: {}", e.getMessage(), e);
|
||||
throw new ServiceException("更新状态失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制权限配置到其他批次
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean copyPermissionsToOtherBatch(Long sourceBatchId, Long targetBatchId) {
|
||||
try {
|
||||
// 验证源批次和目标批次是否存在
|
||||
XgCollectionBatch sourceBatch = collectionBatchMapper.selectById(sourceBatchId);
|
||||
XgCollectionBatch targetBatch = collectionBatchMapper.selectById(targetBatchId);
|
||||
|
||||
if (sourceBatch == null || targetBatch == null) {
|
||||
throw new ServiceException("源批次或目标批次不存在");
|
||||
}
|
||||
|
||||
// 获取源批次的权限配置
|
||||
LambdaQueryWrapper<XgBatchPermission> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(XgBatchPermission::getBatchId, sourceBatchId);
|
||||
List<XgBatchPermission> sourcePermissions = baseMapper.selectList(lqw);
|
||||
|
||||
if (CollUtil.isEmpty(sourcePermissions)) {
|
||||
throw new ServiceException("源批次没有权限配置");
|
||||
}
|
||||
|
||||
// 删除目标批次现有权限配置
|
||||
LambdaQueryWrapper<XgBatchPermission> deleteWrapper = Wrappers.lambdaQuery();
|
||||
deleteWrapper.eq(XgBatchPermission::getBatchId, targetBatchId);
|
||||
baseMapper.delete(deleteWrapper);
|
||||
|
||||
// 复制权限配置到目标批次
|
||||
for (XgBatchPermission sourcePermission : sourcePermissions) {
|
||||
XgBatchPermission newPermission = new XgBatchPermission();
|
||||
newPermission.setBatchId(targetBatchId);
|
||||
newPermission.setRoleId(sourcePermission.getRoleId());
|
||||
newPermission.setRoleName(sourcePermission.getRoleName());
|
||||
newPermission.setPermissionType(sourcePermission.getPermissionType());
|
||||
newPermission.setCanView(sourcePermission.getCanView());
|
||||
newPermission.setCanEdit(sourcePermission.getCanEdit());
|
||||
newPermission.setCanSubmit(sourcePermission.getCanSubmit());
|
||||
newPermission.setCanApprove(sourcePermission.getCanApprove());
|
||||
newPermission.setCanReject(sourcePermission.getCanReject());
|
||||
newPermission.setCanWithdraw(sourcePermission.getCanWithdraw());
|
||||
newPermission.setStartTime(sourcePermission.getStartTime());
|
||||
newPermission.setEndTime(sourcePermission.getEndTime());
|
||||
newPermission.setIsActive(sourcePermission.getIsActive());
|
||||
|
||||
baseMapper.insert(newPermission);
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
log.error("复制权限配置失败: {}", e.getMessage(), e);
|
||||
throw new ServiceException("复制权限配置失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户在批次中的权限配置
|
||||
*/
|
||||
private XgBatchPermission getUserBatchPermission(Long batchId, Long userId, Set<String> rolePermissions) {
|
||||
// 这里需要根据用户的角色来匹配权限配置
|
||||
// 简化实现,实际应该根据用户的具体角色来查询
|
||||
LambdaQueryWrapper<XgBatchPermission> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(XgBatchPermission::getBatchId, batchId);
|
||||
lqw.eq(XgBatchPermission::getIsActive, 1);
|
||||
|
||||
// 根据用户角色权限匹配权限类型
|
||||
if (rolePermissions.contains("student_affairs_admin")) {
|
||||
lqw.eq(XgBatchPermission::getPermissionType, "ADMIN");
|
||||
} else if (rolePermissions.contains("college_admin")) {
|
||||
lqw.eq(XgBatchPermission::getPermissionType, "COLLEGE_ADMIN");
|
||||
} else if (rolePermissions.contains("counselor")) {
|
||||
lqw.eq(XgBatchPermission::getPermissionType, "COUNSELOR");
|
||||
} else if (rolePermissions.contains("class_teacher")) {
|
||||
lqw.eq(XgBatchPermission::getPermissionType, "CLASS_TEACHER");
|
||||
} else if (rolePermissions.contains("student")) {
|
||||
lqw.eq(XgBatchPermission::getPermissionType, "STUDENT");
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
lqw.orderByDesc(XgBatchPermission::getCreateTime);
|
||||
lqw.last("LIMIT 1");
|
||||
|
||||
return baseMapper.selectOne(lqw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查权限是否在有效期内
|
||||
*/
|
||||
private boolean isPermissionValid(XgBatchPermission permission) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
if (permission.getStartTime() != null && now.isBefore(permission.getStartTime())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (permission.getEndTime() != null && now.isAfter(permission.getEndTime())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Boolean.TRUE.equals(permission.getIsActive());
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否在有效的业务期间内
|
||||
*/
|
||||
private boolean isInValidBusinessPeriod(Long batchId, Set<String> rolePermissions) {
|
||||
try {
|
||||
LambdaQueryWrapper<XgBusinessPeriod> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(XgBusinessPeriod::getBatchId, batchId);
|
||||
lqw.eq(XgBusinessPeriod::getIsActive, 1);
|
||||
lqw.le(XgBusinessPeriod::getStartTime, LocalDateTime.now());
|
||||
lqw.ge(XgBusinessPeriod::getEndTime, LocalDateTime.now());
|
||||
|
||||
List<XgBusinessPeriod> validPeriods = businessPeriodMapper.selectList(lqw);
|
||||
|
||||
if (CollUtil.isEmpty(validPeriods)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查是否有适合当前用户角色的业务期间
|
||||
for (XgBusinessPeriod period : validPeriods) {
|
||||
String targetRoles = period.getTargetRoles();
|
||||
if (StringUtils.isBlank(targetRoles)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 检查用户角色是否匹配业务期间的目标角色
|
||||
for (String rolePermission : rolePermissions) {
|
||||
if (targetRoles.contains(rolePermission)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
} catch (Exception e) {
|
||||
log.error("检查业务期间失败: {}", e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查权限是否有效
|
||||
*/
|
||||
private Boolean isPermissionActive(XgBatchPermission permission) {
|
||||
return Boolean.TRUE.equals(permission.getIsActive());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取有效权限
|
||||
*/
|
||||
private Boolean getEffectivePermission(Boolean permission) {
|
||||
return permission != null ? permission : Boolean.FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批次权限检查结果内部类
|
||||
*/
|
||||
public static class BatchPermissionResult implements IXgBatchPermissionService.BatchPermissionResult {
|
||||
private Long batchId;
|
||||
private Long userId;
|
||||
private boolean hasPermission = false;
|
||||
private String permissionType;
|
||||
private boolean canView = false;
|
||||
private boolean canEdit = false;
|
||||
private boolean canSubmit = false;
|
||||
private boolean canApprove = false;
|
||||
private boolean canReject = false;
|
||||
private boolean canWithdraw = false;
|
||||
private String message;
|
||||
|
||||
// Getters and Setters
|
||||
@Override
|
||||
public Long getBatchId() { return batchId; }
|
||||
public void setBatchId(Long batchId) { this.batchId = batchId; }
|
||||
|
||||
@Override
|
||||
public Long getUserId() { return userId; }
|
||||
public void setUserId(Long userId) { this.userId = userId; }
|
||||
|
||||
@Override
|
||||
public boolean isHasPermission() { return hasPermission; }
|
||||
public void setHasPermission(boolean hasPermission) { this.hasPermission = hasPermission; }
|
||||
|
||||
@Override
|
||||
public String getPermissionType() { return permissionType; }
|
||||
public void setPermissionType(String permissionType) { this.permissionType = permissionType; }
|
||||
|
||||
@Override
|
||||
public boolean isCanView() { return canView; }
|
||||
public void setCanView(boolean canView) { this.canView = canView; }
|
||||
|
||||
@Override
|
||||
public boolean isCanEdit() { return canEdit; }
|
||||
public void setCanEdit(boolean canEdit) { this.canEdit = canEdit; }
|
||||
|
||||
@Override
|
||||
public boolean isCanSubmit() { return canSubmit; }
|
||||
public void setCanSubmit(boolean canSubmit) { this.canSubmit = canSubmit; }
|
||||
|
||||
@Override
|
||||
public boolean isCanApprove() { return canApprove; }
|
||||
public void setCanApprove(boolean canApprove) { this.canApprove = canApprove; }
|
||||
|
||||
@Override
|
||||
public boolean isCanReject() { return canReject; }
|
||||
public void setCanReject(boolean canReject) { this.canReject = canReject; }
|
||||
|
||||
@Override
|
||||
public boolean isCanWithdraw() { return canWithdraw; }
|
||||
public void setCanWithdraw(boolean canWithdraw) { this.canWithdraw = canWithdraw; }
|
||||
|
||||
@Override
|
||||
public String getMessage() { return message; }
|
||||
public void setMessage(String message) { this.message = message; }
|
||||
}
|
||||
|
||||
/**
|
||||
* 批次权限配置内部类
|
||||
*/
|
||||
public static class BatchPermissionConfig implements IXgBatchPermissionService.BatchPermissionConfig {
|
||||
private Long roleId;
|
||||
private String roleName;
|
||||
private String permissionType;
|
||||
private boolean canView = false;
|
||||
private boolean canEdit = false;
|
||||
private boolean canSubmit = false;
|
||||
private boolean canApprove = false;
|
||||
private boolean canReject = false;
|
||||
private boolean canWithdraw = false;
|
||||
private LocalDateTime startTime;
|
||||
private LocalDateTime endTime;
|
||||
private boolean active = true;
|
||||
|
||||
// Getters and Setters
|
||||
@Override
|
||||
public Long getRoleId() { return roleId; }
|
||||
public void setRoleId(Long roleId) { this.roleId = roleId; }
|
||||
|
||||
@Override
|
||||
public String getRoleName() { return roleName; }
|
||||
public void setRoleName(String roleName) { this.roleName = roleName; }
|
||||
|
||||
@Override
|
||||
public String getPermissionType() { return permissionType; }
|
||||
public void setPermissionType(String permissionType) { this.permissionType = permissionType; }
|
||||
|
||||
@Override
|
||||
public boolean isCanView() { return canView; }
|
||||
public void setCanView(boolean canView) { this.canView = canView; }
|
||||
|
||||
@Override
|
||||
public boolean isCanEdit() { return canEdit; }
|
||||
public void setCanEdit(boolean canEdit) { this.canEdit = canEdit; }
|
||||
|
||||
@Override
|
||||
public boolean isCanSubmit() { return canSubmit; }
|
||||
public void setCanSubmit(boolean canSubmit) { this.canSubmit = canSubmit; }
|
||||
|
||||
@Override
|
||||
public boolean isCanApprove() { return canApprove; }
|
||||
public void setCanApprove(boolean canApprove) { this.canApprove = canApprove; }
|
||||
|
||||
@Override
|
||||
public boolean isCanReject() { return canReject; }
|
||||
public void setCanReject(boolean canReject) { this.canReject = canReject; }
|
||||
|
||||
@Override
|
||||
public boolean isCanWithdraw() { return canWithdraw; }
|
||||
public void setCanWithdraw(boolean canWithdraw) { this.canWithdraw = canWithdraw; }
|
||||
|
||||
@Override
|
||||
public LocalDateTime getStartTime() { return startTime; }
|
||||
public void setStartTime(LocalDateTime startTime) { this.startTime = startTime; }
|
||||
|
||||
@Override
|
||||
public LocalDateTime getEndTime() { return endTime; }
|
||||
public void setEndTime(LocalDateTime endTime) { this.endTime = endTime; }
|
||||
|
||||
@Override
|
||||
public boolean isActive() { return active; }
|
||||
public void setActive(boolean active) { this.active = active; }
|
||||
}
|
||||
}
|
||||
-307
@@ -1,307 +0,0 @@
|
||||
package org.dromara.xg.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.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
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.xg.domain.XgBusinessPeriod;
|
||||
import org.dromara.xg.domain.bo.XgBusinessPeriodBo;
|
||||
import org.dromara.xg.domain.vo.XgBusinessPeriodVo;
|
||||
import org.dromara.xg.mapper.XgBusinessPeriodMapper;
|
||||
import org.dromara.xg.service.IXgBusinessPeriodService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 业务期管理Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-01-13
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XgBusinessPeriodServiceImpl implements IXgBusinessPeriodService {
|
||||
|
||||
private final XgBusinessPeriodMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询业务期管理
|
||||
*/
|
||||
@Override
|
||||
public XgBusinessPeriodVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询业务期管理列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XgBusinessPeriodVo> queryPageList(XgBusinessPeriodBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XgBusinessPeriod> lqw = buildQueryWrapper(bo);
|
||||
Page<XgBusinessPeriodVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询业务期管理列表
|
||||
*/
|
||||
@Override
|
||||
public List<XgBusinessPeriodVo> queryList(XgBusinessPeriodBo bo) {
|
||||
LambdaQueryWrapper<XgBusinessPeriod> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XgBusinessPeriod> buildQueryWrapper(XgBusinessPeriodBo bo) {
|
||||
LambdaQueryWrapper<XgBusinessPeriod> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getBatchId()), XgBusinessPeriod::getBatchId, bo.getBatchId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getPeriodName()), XgBusinessPeriod::getPeriodName, bo.getPeriodName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPeriodType()), XgBusinessPeriod::getPeriodType, bo.getPeriodType());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTargetRole()), XgBusinessPeriod::getTargetRole, bo.getTargetRole());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XgBusinessPeriod::getStatus, bo.getStatus());
|
||||
lqw.ge(ObjectUtil.isNotNull(bo.getStartTime()), XgBusinessPeriod::getStartTime, bo.getStartTime());
|
||||
lqw.le(ObjectUtil.isNotNull(bo.getEndTime()), XgBusinessPeriod::getEndTime, bo.getEndTime());
|
||||
lqw.orderByDesc(XgBusinessPeriod::getCreateTime);
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增业务期管理
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(XgBusinessPeriodBo bo) {
|
||||
// 校验时间冲突
|
||||
if (checkPeriodTimeConflict(bo)) {
|
||||
throw new ServiceException("业务期间时间冲突,请重新选择时间范围");
|
||||
}
|
||||
|
||||
XgBusinessPeriod add = BeanUtil.toBean(bo, XgBusinessPeriod.class);
|
||||
validEntityBeforeSave(add);
|
||||
|
||||
// 设置创建信息
|
||||
add.setCreateBy(LoginHelper.getUserId());
|
||||
add.setCreateTime(LocalDateTime.now());
|
||||
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
log.info("新增业务期成功,ID: {}, 名称: {}", add.getId(), add.getPeriodName());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改业务期管理
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateByBo(XgBusinessPeriodBo bo) {
|
||||
// 校验时间冲突(排除自己)
|
||||
if (checkPeriodTimeConflictExcludeSelf(bo)) {
|
||||
throw new ServiceException("业务期间时间冲突,请重新选择时间范围");
|
||||
}
|
||||
|
||||
XgBusinessPeriod update = BeanUtil.toBean(bo, XgBusinessPeriod.class);
|
||||
validEntityBeforeSave(update);
|
||||
|
||||
// 设置更新信息
|
||||
update.setUpdateBy(LoginHelper.getUserId());
|
||||
update.setUpdateTime(LocalDateTime.now());
|
||||
|
||||
boolean flag = baseMapper.updateById(update) > 0;
|
||||
if (flag) {
|
||||
log.info("修改业务期成功,ID: {}, 名称: {}", update.getId(), update.getPeriodName());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XgBusinessPeriod entity) {
|
||||
if (ObjectUtil.isNull(entity.getBatchId())) {
|
||||
throw new ServiceException("批次ID不能为空");
|
||||
}
|
||||
if (StringUtils.isBlank(entity.getPeriodName())) {
|
||||
throw new ServiceException("业务期名称不能为空");
|
||||
}
|
||||
if (StringUtils.isBlank(entity.getPeriodType())) {
|
||||
throw new ServiceException("业务期类型不能为空");
|
||||
}
|
||||
if (ObjectUtil.isNull(entity.getStartTime()) || ObjectUtil.isNull(entity.getEndTime())) {
|
||||
throw new ServiceException("开始时间和结束时间不能为空");
|
||||
}
|
||||
if (entity.getStartTime().isAfter(entity.getEndTime())) {
|
||||
throw new ServiceException("开始时间不能晚于结束时间");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除业务期管理
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids) {
|
||||
if (ObjectUtil.isEmpty(ids)) {
|
||||
throw new ServiceException("删除的业务期ID不能为空");
|
||||
}
|
||||
|
||||
// 检查是否有正在使用的业务期
|
||||
List<XgBusinessPeriod> periods = baseMapper.selectBatchIds(ids);
|
||||
for (XgBusinessPeriod period : periods) {
|
||||
if ("ACTIVE".equals(period.getStatus())) {
|
||||
throw new ServiceException("不能删除状态为活跃的业务期:" + period.getPeriodName());
|
||||
}
|
||||
}
|
||||
|
||||
boolean flag = baseMapper.deleteBatchIds(ids) > 0;
|
||||
if (flag) {
|
||||
log.info("批量删除业务期成功,删除数量: {}", ids.size());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据批次ID查询业务期列表
|
||||
*/
|
||||
@Override
|
||||
public List<XgBusinessPeriodVo> queryByBatchId(Long batchId) {
|
||||
if (ObjectUtil.isNull(batchId)) {
|
||||
throw new ServiceException("批次ID不能为空");
|
||||
}
|
||||
return baseMapper.selectByBatchId(batchId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前活跃的业务期
|
||||
*/
|
||||
@Override
|
||||
public List<XgBusinessPeriodVo> queryActivePeriods() {
|
||||
return baseMapper.selectActivePeriods();
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查业务期是否开放
|
||||
*/
|
||||
@Override
|
||||
public Boolean checkPeriodOpen(Long batchId) {
|
||||
if (ObjectUtil.isNull(batchId)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
List<XgBusinessPeriodVo> activePeriods = baseMapper.selectActivePeriodsByBatchId(batchId);
|
||||
if (ObjectUtil.isEmpty(activePeriods)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
return activePeriods.stream().anyMatch(period ->
|
||||
"ACTIVE".equals(period.getStatus()) &&
|
||||
now.isAfter(period.getStartTime()) &&
|
||||
now.isBefore(period.getEndTime())
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启业务期
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean openPeriod(Long id) {
|
||||
if (ObjectUtil.isNull(id)) {
|
||||
throw new ServiceException("业务期ID不能为空");
|
||||
}
|
||||
|
||||
XgBusinessPeriod period = baseMapper.selectById(id);
|
||||
if (ObjectUtil.isNull(period)) {
|
||||
throw new ServiceException("业务期不存在");
|
||||
}
|
||||
|
||||
if ("ACTIVE".equals(period.getStatus())) {
|
||||
throw new ServiceException("业务期已经是开启状态");
|
||||
}
|
||||
|
||||
// 检查时间是否合理
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
if (now.isAfter(period.getEndTime())) {
|
||||
throw new ServiceException("业务期已过期,无法开启");
|
||||
}
|
||||
|
||||
period.setStatus("ACTIVE");
|
||||
period.setUpdateBy(LoginHelper.getUserId());
|
||||
period.setUpdateTime(now);
|
||||
|
||||
boolean flag = baseMapper.updateById(period) > 0;
|
||||
if (flag) {
|
||||
log.info("开启业务期成功,ID: {}, 名称: {}", id, period.getPeriodName());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭业务期
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean closePeriod(Long id) {
|
||||
if (ObjectUtil.isNull(id)) {
|
||||
throw new ServiceException("业务期ID不能为空");
|
||||
}
|
||||
|
||||
XgBusinessPeriod period = baseMapper.selectById(id);
|
||||
if (ObjectUtil.isNull(period)) {
|
||||
throw new ServiceException("业务期不存在");
|
||||
}
|
||||
|
||||
if ("CLOSED".equals(period.getStatus())) {
|
||||
throw new ServiceException("业务期已经是关闭状态");
|
||||
}
|
||||
|
||||
period.setStatus("CLOSED");
|
||||
period.setUpdateBy(LoginHelper.getUserId());
|
||||
period.setUpdateTime(LocalDateTime.now());
|
||||
|
||||
boolean flag = baseMapper.updateById(period) > 0;
|
||||
if (flag) {
|
||||
log.info("关闭业务期成功,ID: {}, 名称: {}", id, period.getPeriodName());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验业务期时间是否冲突
|
||||
*/
|
||||
@Override
|
||||
public Boolean checkPeriodTimeConflict(XgBusinessPeriodBo bo) {
|
||||
if (ObjectUtil.isNull(bo.getBatchId()) || ObjectUtil.isNull(bo.getStartTime()) || ObjectUtil.isNull(bo.getEndTime())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return baseMapper.checkTimeConflict(bo.getBatchId(), bo.getStartTime(), bo.getEndTime()) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验业务期时间是否冲突(排除自己)
|
||||
*/
|
||||
private Boolean checkPeriodTimeConflictExcludeSelf(XgBusinessPeriodBo bo) {
|
||||
if (ObjectUtil.isNull(bo.getBatchId()) || ObjectUtil.isNull(bo.getStartTime()) || ObjectUtil.isNull(bo.getEndTime())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return baseMapper.checkTimeConflictExcludeSelf(bo.getBatchId(), bo.getId(), bo.getStartTime(), bo.getEndTime()) > 0;
|
||||
}
|
||||
}
|
||||
Loaded 100 of 127 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user