From 8311111c2961d3f7036ed363051c5fbb49ae50c9 Mon Sep 17 00:00:00 2001 From: weizhong Date: Sun, 24 Aug 2025 23:37:48 +0800 Subject: [PATCH] =?UTF-8?q?=E2=80=9C0823=E4=BC=9A=E8=AE=AE=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E6=94=B9=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RsTrainingApplicationController.java | 23 +- .../RsTrainingApprovalController.java | 16 +- .../RsTrainingCourseController.java | 124 ------ .../rs/domain/RsTrainingApplication.java | 13 +- .../dromara/rs/domain/RsTrainingCourse.java | 92 ----- .../dromara/rs/domain/RsTrainingRecord.java | 8 +- .../rs/mapper/RsTrainingCourseMapper.java | 14 - .../rs/service/IRsTrainingCourseService.java | 80 ---- .../RsTrainingApplicationServiceImpl.java | 266 +++++++------ .../impl/RsTrainingCourseServiceImpl.java | 138 ------- .../impl/RsTrainingRecordServiceImpl.java | 30 +- .../mapper/rs/RsTrainingCourseMapper.xml | 62 --- .../mapper/rs/RsTrainingRecordMapper.xml | 11 +- .../src/main/resources/mapper/rs/training.sql | 8 +- web/src/api/rs/training.ts | 3 + .../assessmentApproval/approvalDialog.vue | 24 +- .../views/bzrkh/assessmentApproval/index.vue | 50 ++- .../bzrkh/assessmentApproval/viewDialog.vue | 22 +- .../views/bzrkh/assessmentIndicator/index.vue | 33 +- .../bzrkh/assessmentIndicatorType/index.vue | 35 +- web/src/views/bzrkh/assessmentPlan/index.vue | 68 ++-- .../views/bzrkh/assessmentScheme/index.vue | 40 +- .../views/bzrkh/teacherAssessment/index.vue | 64 ++-- .../bzrkh/teacherAssessment/submitDialog.vue | 34 +- .../bzrkh/teacherAssessment/viewDialog.vue | 74 ++-- web/src/views/rs/index.vue | 22 +- web/src/views/rs/overseas/approval.vue | 12 +- web/src/views/rs/overseas/index.vue | 10 +- web/src/views/rs/overseasApproval/index.vue | 11 +- web/src/views/rs/recruitment-apply.vue | 18 +- web/src/views/rs/recruitment-portal.vue | 326 +++++++++++----- web/src/views/rs/training/index.vue | 354 +++++++++++++----- web/src/views/rs/trainingApproval/index.vue | 40 +- 33 files changed, 1029 insertions(+), 1096 deletions(-) delete mode 100644 backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingCourseController.java delete mode 100644 backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingCourse.java delete mode 100644 backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/mapper/RsTrainingCourseMapper.java delete mode 100644 backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/IRsTrainingCourseService.java delete mode 100644 backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingCourseServiceImpl.java delete mode 100644 backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsTrainingCourseMapper.xml diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingApplicationController.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingApplicationController.java index 044d5a1d..f99313a0 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingApplicationController.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingApplicationController.java @@ -11,7 +11,6 @@ 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.rs.domain.RsTrainingApplication; -import org.dromara.rs.domain.RsTrainingCourse; import org.dromara.rs.service.IRsTrainingApplicationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -42,7 +41,7 @@ public class RsTrainingApplicationController extends BaseController { /** * 查询培训申请列表 */ - @SaCheckPermission("rs:training:application:list") + @SaCheckPermission("rs:trainingapplication:list") @GetMapping("/list") public TableDataInfo list(RsTrainingApplication application, PageQuery pageQuery) { return trainingApplicationService.selectPageRsTrainingApplicationList(application, pageQuery); @@ -51,7 +50,7 @@ public class RsTrainingApplicationController extends BaseController { /** * 导出培训申请列表 */ - @SaCheckPermission("rs:training:application:export") + @SaCheckPermission("rs:trainingapplication:export") @Log(title = "培训申请", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, RsTrainingApplication application) { @@ -62,7 +61,7 @@ public class RsTrainingApplicationController extends BaseController { /** * 获取培训申请详细信息 */ - @SaCheckPermission("rs:training:application:query") + @SaCheckPermission("rs:trainingapplication:query") @GetMapping("/{applicationId}") public R getInfo(@PathVariable("applicationId") Long applicationId) { return R.ok(trainingApplicationService.selectRsTrainingApplicationById(applicationId)); @@ -71,7 +70,7 @@ public class RsTrainingApplicationController extends BaseController { /** * 新增培训申请 */ - @SaCheckPermission("rs:training:application:add") + @SaCheckPermission("rs:trainingapplication:add") @Log(title = "培训申请", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping @@ -124,7 +123,7 @@ public class RsTrainingApplicationController extends BaseController { /** * 修改培训申请 */ - @SaCheckPermission("rs:training:application:edit") + @SaCheckPermission("rs:trainingapplication:edit") @Log(title = "培训申请", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping @@ -135,7 +134,7 @@ public class RsTrainingApplicationController extends BaseController { /** * 删除培训申请 */ - @SaCheckPermission("rs:training:application:remove") + @SaCheckPermission("rs:trainingapplication:remove") @Log(title = "培训申请", businessType = BusinessType.DELETE) @DeleteMapping("/{applicationIds}") public R remove(@PathVariable Long[] applicationIds) { @@ -145,7 +144,7 @@ public class RsTrainingApplicationController extends BaseController { /** * 取消培训申请 */ - @SaCheckPermission("rs:training:application:edit") + @SaCheckPermission("rs:trainingapplication:edit") @Log(title = "培训申请", businessType = BusinessType.UPDATE) @PutMapping("/cancel/{applicationId}") public R cancel(@PathVariable("applicationId") Long applicationId) { @@ -155,7 +154,7 @@ public class RsTrainingApplicationController extends BaseController { /** * 查询我的培训申请列表 */ - @SaCheckPermission("rs:training:application:query") + @SaCheckPermission("rs:trainingapplication:query") @GetMapping("/my") public TableDataInfo listMyApplications(RsTrainingApplication application, PageQuery pageQuery) { return trainingApplicationService.selectPageMyApplications(StpUtil.getLoginIdAsLong(), application, pageQuery); @@ -164,7 +163,7 @@ public class RsTrainingApplicationController extends BaseController { /** * 查询指定课程的申请列表 */ - @SaCheckPermission("rs:training:application:list") + @SaCheckPermission("rs:trainingapplication:list") @GetMapping("/list/{courseId}") public TableDataInfo listByCourse(@PathVariable("courseId") Long courseId, RsTrainingApplication application, PageQuery pageQuery) { return trainingApplicationService.selectPageApplicationsByCourse(courseId, application, pageQuery); @@ -227,7 +226,7 @@ public class RsTrainingApplicationController extends BaseController { /** * 更新培训申请状态 */ - @SaCheckPermission("rs:training:application:edit") + @SaCheckPermission("rs:trainingapplication:edit") @Log(title = "培训申请状态", businessType = BusinessType.UPDATE) @PutMapping("/status/{applicationId}/{status}") public R updateStatus( @@ -240,7 +239,7 @@ public class RsTrainingApplicationController extends BaseController { /** * 重新提交被拒绝的培训申请 */ - @SaCheckPermission("rs:training:application:edit") + @SaCheckPermission("rs:trainingapplication:edit") @Log(title = "重新提交培训申请", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping("/resubmit/{applicationId}") diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingApprovalController.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingApprovalController.java index cc3026d9..0b284cb7 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingApprovalController.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingApprovalController.java @@ -38,7 +38,7 @@ public class RsTrainingApprovalController extends BaseController { /** * 查询培训审批列表 */ - @SaCheckPermission("rs:training:approval:list") + @SaCheckPermission("rs:trainingapproval:list") @GetMapping("/list") public TableDataInfo list(RsTrainingApproval approval, PageQuery pageQuery) { // 使用带详细信息的查询方法,返回申请人姓名和课程名称 @@ -48,7 +48,7 @@ public class RsTrainingApprovalController extends BaseController { /** * 获取培训审批详细信息 */ - @SaCheckPermission("rs:training:approval:query") + @SaCheckPermission("rs:trainingapproval:query") @GetMapping("/{approvalId}") public R getInfo(@PathVariable("approvalId") Long approvalId) { return R.ok(trainingApprovalService.selectRsTrainingApprovalById(approvalId)); @@ -57,7 +57,7 @@ public class RsTrainingApprovalController extends BaseController { /** * 新增培训审批 */ - @SaCheckPermission("rs:training:approval:add") + @SaCheckPermission("rs:trainingapproval:add") @Log(title = "培训审批", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping @@ -68,7 +68,7 @@ public class RsTrainingApprovalController extends BaseController { /** * 修改培训审批 */ - @SaCheckPermission("rs:training:approval:edit") + @SaCheckPermission("rs:trainingapproval:edit") @Log(title = "培训审批", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping @@ -79,7 +79,7 @@ public class RsTrainingApprovalController extends BaseController { /** * 删除培训审批 */ - @SaCheckPermission("rs:training:approval:remove") + @SaCheckPermission("rs:trainingapproval:remove") @Log(title = "培训审批", businessType = BusinessType.DELETE) @DeleteMapping("/{approvalIds}") public R remove(@PathVariable Long[] approvalIds) { @@ -89,7 +89,7 @@ public class RsTrainingApprovalController extends BaseController { /** * 查询待我审批的列表 */ - @SaCheckPermission("rs:training:approval:process") + @SaCheckPermission("rs:trainingapproval:process") @GetMapping("/pending") public TableDataInfo listPendingApprovals(RsTrainingApproval approval, PageQuery pageQuery) { return trainingApprovalService.selectPagePendingApprovals(StpUtil.getLoginIdAsLong(), approval, pageQuery); @@ -98,7 +98,7 @@ public class RsTrainingApprovalController extends BaseController { /** * 处理审批 */ - @SaCheckPermission("rs:training:approval:process") + @SaCheckPermission("rs:trainingapproval:process") @Log(title = "培训审批", businessType = BusinessType.UPDATE) @PutMapping("/process/{applicationId}/{status}") public R processApproval(@PathVariable("applicationId") Long applicationId, @PathVariable("status") String status, @RequestBody(required = false) Map params) { @@ -109,7 +109,7 @@ public class RsTrainingApprovalController extends BaseController { /** * 查询申请审批历史 */ - @SaCheckPermission("rs:training:approval:query") + @SaCheckPermission("rs:trainingapproval:query") @GetMapping("/history/{applicationId}") public R> getApprovalHistory(@PathVariable("applicationId") Long applicationId) { System.out.println("查询审批历史记录 - applicationId: " + applicationId); diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingCourseController.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingCourseController.java deleted file mode 100644 index 622888d0..00000000 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingCourseController.java +++ /dev/null @@ -1,124 +0,0 @@ -package org.dromara.rs.controller; - -import java.util.List; - -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.rs.domain.RsTrainingCourse; -import org.dromara.rs.service.IRsTrainingCourseService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import cn.dev33.satoken.annotation.SaCheckPermission; -import cn.dev33.satoken.annotation.SaIgnore; -import jakarta.servlet.http.HttpServletResponse; - -/** - * 培训课程控制器 - * - * @author weizzzz - * @date 2025-07-16 - */ -@RestController -@RequestMapping("/rs/training/course") -public class RsTrainingCourseController extends BaseController { - - @Autowired - private IRsTrainingCourseService trainingCourseService; - - /** - * 查询培训课程列表 - */ - @SaCheckPermission("rs:training:course:list") - @GetMapping("/list") - public TableDataInfo list(RsTrainingCourse course, PageQuery pageQuery) { - return trainingCourseService.selectPageRsTrainingCourseList(course, pageQuery); - } - - /** - * 导出培训课程列表 - */ - @SaCheckPermission("rs:training:course:export") - @Log(title = "培训课程", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, RsTrainingCourse course) { - List list = trainingCourseService.selectRsTrainingCourseList(course); - ExcelUtil.exportExcel(list, "培训课程", RsTrainingCourse.class, response); - } - - /** - * 获取培训课程详细信息 - */ - @SaCheckPermission("rs:training:course:query") - @GetMapping("/{courseId}") - public R getInfo(@PathVariable("courseId") Long courseId) { - return R.ok(trainingCourseService.selectRsTrainingCourseById(courseId)); - } - - /** - * 新增培训课程 - */ - @SaCheckPermission("rs:training:course:add") - @Log(title = "培训课程", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping - public R add(@Validated @RequestBody RsTrainingCourse course) { - return toAjax(trainingCourseService.insertRsTrainingCourse(course)); - } - - /** - * 修改培训课程 - */ - @SaCheckPermission("rs:training:course:edit") - @Log(title = "培训课程", businessType = BusinessType.UPDATE) - @RepeatSubmit() - @PutMapping - public R edit(@Validated @RequestBody RsTrainingCourse course) { - return toAjax(trainingCourseService.updateRsTrainingCourse(course)); - } - - /** - * 删除培训课程 - */ - @SaCheckPermission("rs:training:course:remove") - @Log(title = "培训课程", businessType = BusinessType.DELETE) - @DeleteMapping("/{courseIds}") - public R remove(@PathVariable Long[] courseIds) { - return toAjax(trainingCourseService.deleteRsTrainingCourseByIds(courseIds)); - } - - /** - * 切换培训课程状态 - */ - @SaCheckPermission("rs:training:course:edit") - @Log(title = "培训课程", businessType = BusinessType.UPDATE) - @PutMapping("/toggle/{courseId}") - public R toggleStatus(@PathVariable("courseId") Long courseId) { - return toAjax(trainingCourseService.toggleCourseStatus(courseId)); - } - - /** - * 获取可用培训课程列表(不分页) - */ - @SaIgnore - @GetMapping("/available") - public R> getAvailableCourses() { - RsTrainingCourse course = new RsTrainingCourse(); - course.setStatus("0"); // 只查询状态为正常的课程 - return R.ok(trainingCourseService.selectRsTrainingCourseList(course)); - } -} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingApplication.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingApplication.java index 1a1b7a7b..0dc6f2d6 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingApplication.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingApplication.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.mybatis.core.domain.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; +import com.baomidou.mybatisplus.annotation.IdType; import java.util.Date; @@ -26,7 +27,7 @@ public class RsTrainingApplication extends BaseEntity { /** * 申请ID */ - @TableId(value = "application_id") + @TableId(value = "application_id", type = IdType.ASSIGN_ID) private Long applicationId; /** @@ -34,6 +35,11 @@ public class RsTrainingApplication extends BaseEntity { */ private Long courseId; + /** + * 培训名称 + */ + private String courseName; + /** * 申请人ID */ @@ -107,11 +113,6 @@ public class RsTrainingApplication extends BaseEntity { */ private Long createDept; - /** - * 自定义课程名称 - */ - private String courseName; - /** * 拒绝时间 */ diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingCourse.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingCourse.java deleted file mode 100644 index b198ef82..00000000 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingCourse.java +++ /dev/null @@ -1,92 +0,0 @@ -package org.dromara.rs.domain; - -import com.baomidou.mybatisplus.annotation.TableField; -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.util.Date; - -/** - * 培训课程对象 rs_training_course - * - * @author weizzzz - * @date 2025-07-16 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@TableName("rs_training_course") -public class RsTrainingCourse extends BaseEntity { - - private static final long serialVersionUID = 1L; - - /** - * 课程ID - */ - @TableId(value = "course_id") - private Long courseId; - - /** - * 课程名称 - */ - private String title; - - /** - * 课程类别 - */ - private String category; - - /** - * 课程描述 - */ - private String description; - - /** - * 开始时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date startTime; - - /** - * 结束时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date endTime; - - /** - * 学时数 - */ - private Integer duration; - - /** - * 培训地点 - */ - private String location; - - /** - * 最大参与人数 - */ - private Integer maxParticipants; - - /** - * 当前报名人数 - */ - private Integer currentParticipants; - - /** - * 状态(0正常 1结束) - */ - private String status; - - /** - * 租户ID - */ - private String tenantId; - - /** 非数据库字段 **/ - @TableField(exist = false) - private Integer applicationCount; -} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingRecord.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingRecord.java index d34c5746..dfb1dc40 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingRecord.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/domain/RsTrainingRecord.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.mybatis.core.domain.BaseEntity; import com.fasterxml.jackson.annotation.JsonFormat; +import com.baomidou.mybatisplus.annotation.IdType; import java.math.BigDecimal; import java.util.Date; @@ -27,7 +28,7 @@ public class RsTrainingRecord extends BaseEntity { /** * 记录ID */ - @TableId(value = "record_id") + @TableId(value = "record_id", type = IdType.ASSIGN_ID) private Long recordId; private Long applicationId; @@ -117,6 +118,11 @@ public class RsTrainingRecord extends BaseEntity { private String tenantId; private Long createDept; + /** + * 部门ID + */ + private Long deptId; + // 数据库字段 - 直接存储在培训记录表中 private String courseName; private Integer duration; diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/mapper/RsTrainingCourseMapper.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/mapper/RsTrainingCourseMapper.java deleted file mode 100644 index fe35ee84..00000000 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/mapper/RsTrainingCourseMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.dromara.rs.mapper; - -import org.dromara.rs.domain.RsTrainingCourse; -import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; - -/** - * 培训课程Mapper接口 - * - * @author weizzzz - * @date 2025-07-16 - */ -public interface RsTrainingCourseMapper extends BaseMapperPlus { - -} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/IRsTrainingCourseService.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/IRsTrainingCourseService.java deleted file mode 100644 index 52f9ce71..00000000 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/IRsTrainingCourseService.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.dromara.rs.service; - -import java.util.List; -import org.dromara.rs.domain.RsTrainingCourse; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; - -/** - * 培训课程服务接口 - * - * @author weizzzz - * @date 2025-07-16 - */ -public interface IRsTrainingCourseService { - - /** - * 查询培训课程列表 - * - * @param course 培训课程 - * @param pageQuery 分页参数 - * @return 培训课程分页列表 - */ - TableDataInfo selectPageRsTrainingCourseList(RsTrainingCourse course, PageQuery pageQuery); - - /** - * 查询培训课程列表 - * - * @param course 培训课程 - * @return 培训课程列表 - */ - List selectRsTrainingCourseList(RsTrainingCourse course); - - /** - * 查询培训课程详细信息 - * - * @param courseId 培训课程ID - * @return 培训课程 - */ - RsTrainingCourse selectRsTrainingCourseById(Long courseId); - - /** - * 新增培训课程 - * - * @param course 培训课程 - * @return 结果 - */ - int insertRsTrainingCourse(RsTrainingCourse course); - - /** - * 修改培训课程 - * - * @param course 培训课程 - * @return 结果 - */ - int updateRsTrainingCourse(RsTrainingCourse course); - - /** - * 批量删除培训课程 - * - * @param courseIds 需要删除的培训课程ID数组 - * @return 结果 - */ - int deleteRsTrainingCourseByIds(Long[] courseIds); - - /** - * 删除培训课程信息 - * - * @param courseId 培训课程ID - * @return 结果 - */ - int deleteRsTrainingCourseById(Long courseId); - - /** - * 切换培训课程状态 - * - * @param courseId 培训课程ID - * @return 结果 - */ - int toggleCourseStatus(Long courseId); -} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingApplicationServiceImpl.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingApplicationServiceImpl.java index a16b76a2..518a19f9 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingApplicationServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingApplicationServiceImpl.java @@ -1,30 +1,32 @@ package org.dromara.rs.service.impl; -import java.util.Arrays; -import java.util.List; - +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.DateUtils; +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.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.dromara.rs.mapper.RsTrainingApplicationMapper; -import org.dromara.rs.mapper.RsTrainingCourseMapper; import org.dromara.rs.domain.RsTrainingApplication; -import org.dromara.rs.domain.RsTrainingCourse; +import org.dromara.rs.domain.RsTrainingRecord; +import org.dromara.rs.domain.bo.RsTrainingApplicationBo; + +import java.util.Arrays; + +import org.dromara.rs.mapper.RsTrainingApplicationMapper; import org.dromara.rs.service.IRsTrainingApplicationService; import org.dromara.rs.service.IRsTrainingRecordService; -import org.dromara.rs.domain.RsTrainingRecord; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.dromara.common.core.utils.DateUtils; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; + +import java.util.Collection; +import java.util.Date; +import java.util.List; /** * 培训申请服务实现类 @@ -33,29 +35,15 @@ import org.springframework.context.ApplicationContextAware; * @date 2025-07-16 */ @Service -public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationService, ApplicationContextAware { +@RequiredArgsConstructor +public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationService { private static final Logger log = LoggerFactory.getLogger(RsTrainingApplicationServiceImpl.class); - - @Autowired - private RsTrainingApplicationMapper trainingApplicationMapper; + + private final RsTrainingApplicationMapper trainingApplicationMapper; @Autowired - private RsTrainingCourseMapper trainingCourseMapper; - - private ApplicationContext applicationContext; - - @Override - public void setApplicationContext(ApplicationContext applicationContext) { - this.applicationContext = applicationContext; - } - - /** - * 获取培训记录服务(延迟获取以避免循环依赖) - */ - private IRsTrainingRecordService getRecordService() { - return applicationContext.getBean(IRsTrainingRecordService.class); - } + private IRsTrainingRecordService trainingRecordService; /** * 查询培训申请列表 @@ -85,9 +73,9 @@ public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationS // 使用自定义分页查询获取列表数据 List list = trainingApplicationMapper.selectRsTrainingApplicationListPage(application, offset, size); - // 处理自定义培训课程(courseId=0)的情况 + // 处理自定义培训课程的情况 for (RsTrainingApplication app : list) { - if (app.getCourseId() != null && app.getCourseId() == 0 && (app.getCourseName() == null || app.getCourseName().isEmpty())) { + if (app.getCourseName() == null || app.getCourseName().isEmpty()) { app.setCourseName("自定义培训"); } } @@ -194,7 +182,6 @@ public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationS * @return 结果 */ @Override - @Transactional(rollbackFor = Exception.class) public int insertRsTrainingApplication(RsTrainingApplication application) { try { // 确保applicationId不为空 @@ -212,41 +199,18 @@ public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationS } // 处理自定义培训课程的情况(courseId = 0 或 null) - if (application.getCourseId() == null || application.getCourseId() == 0) { - // 对于自定义培训课程,不需要验证课程和更新课程报名人数 - application.setCourseId(0L); // 确保courseId为0L而不是null - // 确保courseName不为空 - if (application.getCourseName() == null || application.getCourseName().isEmpty()) { - application.setCourseName("自定义培训"); - } - application.setCreateTime(DateUtils.getNowDate()); - application.setApplyTime(DateUtils.getNowDate()); - application.setStatus("0"); // 待审核状态 - application.setTenantId("000000"); // 设置默认租户ID - return trainingApplicationMapper.insert(application); + // 确保courseName不为空 + if (application.getCourseName() == null || application.getCourseName().isEmpty()) { + application.setCourseName("自定义培训"); } - - // 1. 验证课程是否存在并可申请 - RsTrainingCourse course = trainingCourseMapper.selectById(application.getCourseId()); - if (course == null) { - return 0; - } - - // 2. 检查是否已达到最大参与人数 - if (course.getCurrentParticipants() >= course.getMaxParticipants()) { - return 0; - } - - // 3. 更新课程当前报名人数 - course.setCurrentParticipants(course.getCurrentParticipants() + 1); - trainingCourseMapper.updateById(course); - - // 4. 保存申请信息 - application.setCreateTime(DateUtils.getNowDate()); - application.setApplyTime(DateUtils.getNowDate()); + Date now = DateUtils.getNowDate(); + application.setCreateTime(now); + application.setApplyTime(now); application.setStatus("0"); // 待审核状态 application.setTenantId("000000"); // 设置默认租户ID return trainingApplicationMapper.insert(application); + + // 以上代码已处理所有情况 } catch (Exception e) { e.printStackTrace(); throw e; @@ -272,18 +236,13 @@ public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationS * @return 结果 */ @Override - @Transactional(rollbackFor = Exception.class) public int deleteRsTrainingApplicationByIds(Long[] applicationIds) { // 查询所有要删除的申请 List applications = trainingApplicationMapper.selectBatchIds(Arrays.asList(applicationIds)); // 对每个申请,减少对应课程的当前报名人数 for (RsTrainingApplication app : applications) { - RsTrainingCourse course = trainingCourseMapper.selectById(app.getCourseId()); - if (course != null && course.getCurrentParticipants() > 0) { - course.setCurrentParticipants(course.getCurrentParticipants() - 1); - trainingCourseMapper.updateById(course); - } + // 培训课程功能已移除,无需更新课程报名人数 } return trainingApplicationMapper.deleteBatchIds(Arrays.asList(applicationIds)); @@ -296,17 +255,11 @@ public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationS * @return 结果 */ @Override - @Transactional(rollbackFor = Exception.class) public int deleteRsTrainingApplicationById(Long applicationId) { // 查询申请 RsTrainingApplication application = trainingApplicationMapper.selectById(applicationId); if (application != null) { - // 减少课程的当前报名人数 - RsTrainingCourse course = trainingCourseMapper.selectById(application.getCourseId()); - if (course != null && course.getCurrentParticipants() > 0) { - course.setCurrentParticipants(course.getCurrentParticipants() - 1); - trainingCourseMapper.updateById(course); - } + // 培训课程功能已移除,无需更新课程报名人数 } return trainingApplicationMapper.deleteById(applicationId); @@ -319,23 +272,17 @@ public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationS * @return 结果 */ @Override - @Transactional(rollbackFor = Exception.class) public int cancelApplication(Long applicationId) { // 查询申请 RsTrainingApplication application = trainingApplicationMapper.selectById(applicationId); if (application != null) { // 只有待审核状态的申请才能取消 if ("0".equals(application.getStatus())) { - // 更新状态为已取消 - application.setStatus("3"); - application.setUpdateTime(DateUtils.getNowDate()); + // 更新状态为已取消 + application.setStatus("3"); + application.setUpdateTime(DateUtils.getNowDate()); - // 减少课程的当前报名人数 - RsTrainingCourse course = trainingCourseMapper.selectById(application.getCourseId()); - if (course != null && course.getCurrentParticipants() > 0) { - course.setCurrentParticipants(course.getCurrentParticipants() - 1); - trainingCourseMapper.updateById(course); - } + // 培训课程功能已移除,无需更新课程报名人数 return trainingApplicationMapper.updateById(application); } @@ -353,51 +300,28 @@ public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationS @Override public int updateApplicationStatus(Long applicationId, String status) { RsTrainingApplication application = trainingApplicationMapper.selectById(applicationId); - if (application != null) { - application.setStatus(status); - application.setUpdateTime(DateUtils.getNowDate()); - - // 如果是拒绝,记录被拒绝时间 - if ("2".equals(status)) { - application.setRejectTime(DateUtils.getNowDate()); - } + if (application != null) { + application.setStatus(status); + Date now = DateUtils.getNowDate(); + application.setUpdateTime(now); + + // 如果是拒绝,记录被拒绝时间 + if ("2".equals(status)) { + application.setRejectTime(now); + } int result = trainingApplicationMapper.updateById(application); - // 同步到培训记录表:状态为"1已通过""3进行中""4已完成"时自动写入 - if ("1".equals(status) || "3".equals(status) || "4".equals(status)) { - log.info("【同步培训记录】触发,applicationId={}, status={}", applicationId, status); - RsTrainingRecord exist = getRecordService().selectByApplicationId(applicationId); - if (exist == null) { - log.info("【同步培训记录】插入新记录,userId={}, courseId={}", application.getUserId(), application.getCourseId()); - RsTrainingRecord record = new RsTrainingRecord(); - // 设置记录ID(使用时间戳) - record.setRecordId(System.currentTimeMillis()); - record.setApplicationId(application.getApplicationId()); - record.setCourseId(application.getCourseId()); - record.setUserId(application.getUserId()); - record.setUserName(application.getUserName()); - record.setDepartment(application.getDepartment()); - record.setPosition(application.getPosition()); - record.setReason(application.getReason()); - record.setStatus(application.getStatus()); - record.setApplyTime(application.getApplyTime()); - record.setCurrentApprover(application.getCurrentApprover()); - record.setLocation(application.getLocation()); - record.setDuration(application.getDuration()); - record.setStartTime(application.getStartTime()); - record.setEndTime(application.getEndTime()); - record.setCourseName(application.getCourseName()); - record.setTenantId(application.getTenantId()); - record.setCreateDept(application.getCreateDept()); - record.setCreateBy(1L); // 默认系统用户 - record.setCreateTime(DateUtils.getNowDate()); - // 默认完成状态为进行中 - record.setCompletionStatus("0"); - getRecordService().insertRsTrainingRecord(record); - } else { - log.info("【同步培训记录】已存在,不重复插入,applicationId={}", applicationId); + + // 如果申请通过,自动创建培训记录 + if ("1".equals(status)) { + try { + createTrainingRecordFromApplication(application); + } catch (Exception e) { + log.error("创建培训记录失败: applicationId={}, error={}", applicationId, e.getMessage(), e); + // 不影响申请状态更新的结果 } } + return result; } return 0; @@ -411,7 +335,6 @@ public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationS * @return 结果 */ @Override - @Transactional(rollbackFor = Exception.class) public int resubmitApplication(Long applicationId, RsTrainingApplication applicationData) { // 查询原申请 RsTrainingApplication existingApp = trainingApplicationMapper.selectById(applicationId); @@ -424,7 +347,7 @@ public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationS return 0; } - log.info("【重新提交申请】原申请状态: {}, 申请ID: {}", existingApp.getStatus(), applicationId); + // 更新申请数据 if (applicationData.getReason() != null) { @@ -446,13 +369,74 @@ public class RsTrainingApplicationServiceImpl implements IRsTrainingApplicationS existingApp.setCourseName(applicationData.getCourseName()); } - // 重置为待审核状态 - existingApp.setStatus("0"); - existingApp.setUpdateTime(DateUtils.getNowDate()); - existingApp.setApplyTime(DateUtils.getNowDate()); // 更新申请时间 + // 重置为待审核状态 + existingApp.setStatus("0"); + Date now = DateUtils.getNowDate(); + existingApp.setUpdateTime(now); + existingApp.setApplyTime(now); // 更新申请时间 + - log.info("【重新提交申请】更新为待审核状态"); return trainingApplicationMapper.updateById(existingApp); } + + /** + * 根据培训申请创建培训记录 + * + * @param application 培训申请 + */ + private void createTrainingRecordFromApplication(RsTrainingApplication application) { + try { + // 检查是否已存在培训记录 + RsTrainingRecord existingRecord = trainingRecordService.selectByApplicationId(application.getApplicationId()); + if (existingRecord != null) { + log.info("培训记录已存在,不重复创建: applicationId={}, recordId={}", + application.getApplicationId(), existingRecord.getRecordId()); + return; + } + + // 创建新的培训记录 + RsTrainingRecord record = new RsTrainingRecord(); + record.setApplicationId(application.getApplicationId()); + record.setCourseId(application.getCourseId()); + record.setUserId(application.getUserId()); + record.setUserName(application.getUserName()); + record.setDepartment(application.getDepartment()); + record.setPosition(application.getPosition()); + record.setReason(application.getReason()); + // 添加缺失的字段设置 + record.setCourseName(application.getCourseName()); + record.setDuration(application.getDuration()); + record.setLocation(application.getLocation()); + record.setStatus("3"); // 3=进行中 + record.setApplyTime(application.getApplyTime()); + record.setStartTime(application.getStartTime()); + record.setEndTime(application.getEndTime()); + record.setCompletionStatus("0"); // 0=进行中 + + // 设置基础字段 - 修复字段缺失问题 + Date now = DateUtils.getNowDate(); + record.setCreateTime(now); + record.setUpdateTime(now); + + // 设置租户和用户信息 + record.setTenantId(application.getTenantId() != null ? application.getTenantId() : "000000"); + record.setCreateBy(application.getUserId()); // 创建者设为申请人 + record.setUpdateBy(application.getUserId()); // 更新者设为申请人 + record.setCreateDept(application.getCreateDept() != null ? application.getCreateDept() : 1L); // 使用createDept,如果没有则设为默认值 + record.setDeptId(application.getCreateDept() != null ? application.getCreateDept() : 1L); // 设置部门ID + + int result = trainingRecordService.insertRsTrainingRecord(record); + if (result > 0) { + log.info("培训记录创建成功: applicationId={}, recordId={}", + application.getApplicationId(), record.getRecordId()); + } else { + log.error("培训记录创建失败: applicationId={}", application.getApplicationId()); + } + } catch (Exception e) { + log.error("创建培训记录时发生异常: applicationId={}, error={}", + application.getApplicationId(), e.getMessage(), e); + throw e; + } + } } \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingCourseServiceImpl.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingCourseServiceImpl.java deleted file mode 100644 index 2e09266d..00000000 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingCourseServiceImpl.java +++ /dev/null @@ -1,138 +0,0 @@ -package org.dromara.rs.service.impl; - -import java.util.Arrays; -import java.util.List; - -import org.dromara.common.core.utils.DateUtils; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.dromara.rs.mapper.RsTrainingCourseMapper; -import org.dromara.rs.domain.RsTrainingCourse; -import org.dromara.rs.service.IRsTrainingCourseService; - -/** - * 培训课程服务实现类 - * - * @author weizzzz - * @date 2025-07-16 - */ -@Service -public class RsTrainingCourseServiceImpl implements IRsTrainingCourseService { - - @Autowired - private RsTrainingCourseMapper trainingCourseMapper; - - /** - * 查询培训课程列表 - * - * @param course 培训课程 - * @param pageQuery 分页参数 - * @return 培训课程分页列表 - */ - @Override - public TableDataInfo selectPageRsTrainingCourseList(RsTrainingCourse course, PageQuery pageQuery) { - com.baomidou.mybatisplus.extension.plugins.pagination.Page page = trainingCourseMapper.selectPage(pageQuery.build(), buildQueryWrapper(course)); - return TableDataInfo.build(page); - } - - /** - * 查询培训课程列表 - * - * @param course 培训课程 - * @return 培训课程列表 - */ - @Override - public List selectRsTrainingCourseList(RsTrainingCourse course) { - return trainingCourseMapper.selectList(buildQueryWrapper(course)); - } - - /** - * 查询培训课程详细信息 - * - * @param courseId 培训课程ID - * @return 培训课程 - */ - @Override - public RsTrainingCourse selectRsTrainingCourseById(Long courseId) { - return trainingCourseMapper.selectById(courseId); - } - - /** - * 新增培训课程 - * - * @param course 培训课程 - * @return 结果 - */ - @Override - public int insertRsTrainingCourse(RsTrainingCourse course) { - course.setCreateTime(DateUtils.getNowDate()); - return trainingCourseMapper.insert(course); - } - - /** - * 修改培训课程 - * - * @param course 培训课程 - * @return 结果 - */ - @Override - public int updateRsTrainingCourse(RsTrainingCourse course) { - course.setUpdateTime(DateUtils.getNowDate()); - return trainingCourseMapper.updateById(course); - } - - /** - * 批量删除培训课程 - * - * @param courseIds 需要删除的培训课程ID数组 - * @return 结果 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int deleteRsTrainingCourseByIds(Long[] courseIds) { - return trainingCourseMapper.deleteBatchIds(Arrays.asList(courseIds)); - } - - /** - * 删除培训课程信息 - * - * @param courseId 培训课程ID - * @return 结果 - */ - @Override - public int deleteRsTrainingCourseById(Long courseId) { - return trainingCourseMapper.deleteById(courseId); - } - - /** - * 切换培训课程状态 - * - * @param courseId 培训课程ID - * @return 结果 - */ - @Override - public int toggleCourseStatus(Long courseId) { - RsTrainingCourse course = trainingCourseMapper.selectById(courseId); - if (course != null) { - // 切换状态:0正常 -> 1停用,或 1停用 -> 0正常 - course.setStatus("0".equals(course.getStatus()) ? "1" : "0"); - course.setUpdateTime(DateUtils.getNowDate()); - return trainingCourseMapper.updateById(course); - } - return 0; - } - - /** - * 构建查询条件 - */ - private com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper buildQueryWrapper(RsTrainingCourse course) { - com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper lqw = new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<>(); - lqw.like(course.getTitle() != null, RsTrainingCourse::getTitle, course.getTitle()); - lqw.eq(course.getCategory() != null, RsTrainingCourse::getCategory, course.getCategory()); - lqw.eq(course.getStatus() != null, RsTrainingCourse::getStatus, course.getStatus()); - return lqw; - } -} \ No newline at end of file diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingRecordServiceImpl.java b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingRecordServiceImpl.java index 449aa461..194ac935 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingRecordServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsTrainingRecordServiceImpl.java @@ -15,8 +15,7 @@ import org.dromara.rs.domain.RsTrainingRecord; import org.dromara.rs.service.IRsTrainingRecordService; import org.dromara.rs.domain.RsTrainingApplication; import org.dromara.rs.service.IRsTrainingApplicationService; -import org.dromara.rs.domain.RsTrainingCourse; -import org.dromara.rs.service.IRsTrainingCourseService; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.commons.lang3.StringUtils; @@ -37,8 +36,7 @@ public class RsTrainingRecordServiceImpl implements IRsTrainingRecordService, Ap @Autowired private RsTrainingRecordMapper trainingRecordMapper; - @Autowired - private IRsTrainingCourseService courseService; + private ApplicationContext applicationContext; @@ -303,25 +301,11 @@ public class RsTrainingRecordServiceImpl implements IRsTrainingRecordService, Ap } } - // 如果申请表中也没有,尝试从课程表获取 - if ((StringUtils.isEmpty(record.getCourseName()) || StringUtils.isEmpty(record.getLocation()) || record.getDuration() == null) - && record.getCourseId() != null) { - - RsTrainingCourse course = courseService.selectRsTrainingCourseById(record.getCourseId()); - if (course != null) { - if (StringUtils.isEmpty(record.getCourseName())) { - record.setCourseName(course.getTitle()); - needUpdate = true; - } - if (StringUtils.isEmpty(record.getLocation())) { - record.setLocation(course.getLocation()); - needUpdate = true; - } - if (record.getDuration() == null) { - record.setDuration(course.getDuration()); - needUpdate = true; - } - } + // 培训课程功能已移除,不再从课程表获取信息 + // 如果记录中仍然缺少信息,设置默认值 + if (StringUtils.isEmpty(record.getCourseName())) { + record.setCourseName("自定义培训"); + needUpdate = true; } // 更新记录 diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsTrainingCourseMapper.xml b/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsTrainingCourseMapper.xml deleted file mode 100644 index 11a6629c..00000000 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsTrainingCourseMapper.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - select c.course_id, c.title, c.category, c.description, c.start_time, c.end_time, c.duration, - c.location, c.max_participants, c.current_participants, c.status, c.tenant_id, c.create_by, - c.create_time, c.update_by, c.update_time, c.remark, - (select count(1) from rs_training_application a where a.course_id = c.course_id and a.deleted = '0' and a.tenant_id = c.tenant_id) as application_count - from rs_training_course c - - - - - diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsTrainingRecordMapper.xml b/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsTrainingRecordMapper.xml index 242410b7..0572d2ad 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsTrainingRecordMapper.xml +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsTrainingRecordMapper.xml @@ -36,6 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -43,7 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" r.completion_status, r.completion_time, r.score, r.certificate_path, r.certificate_number, r.attachment_ids, r.feedback, r.tenant_id, r.create_dept, r.create_by, r.create_time, r.update_by, r.update_time, r.department, r.position, r.reason, r.status, r.apply_time, r.current_approver, r.start_time, r.end_time, - r.course_name, r.duration, r.location + r.course_name, r.duration, r.location, r.dept_id from rs_training_record r @@ -51,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" r.deleted = '0' + and r.application_id = #{applicationId} and r.course_id = #{courseId} and r.course_name like concat('%', #{courseName}, '%') and r.user_id = #{userId} @@ -74,12 +76,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" record_id, application_id, course_id, user_id, user_name, completion_status, completion_time, score, certificate_path, certificate_number, attachment_ids, feedback, location, duration, apply_time, status, course_name, department, position, reason, current_approver, start_time, end_time, - tenant_id, create_dept, create_by, create_time, deleted + tenant_id, create_dept, create_by, create_time, deleted, dept_id ) VALUES ( #{recordId}, #{applicationId}, #{courseId}, #{userId}, #{userName}, #{completionStatus}, #{completionTime}, #{score}, #{certificatePath}, #{certificateNumber}, #{attachmentIds}, #{feedback}, #{location}, #{duration}, #{applyTime}, #{status}, #{courseName}, #{department}, #{position}, #{reason}, #{currentApprover}, #{startTime}, #{endTime}, - #{tenantId}, #{createDept}, #{createBy}, #{createTime}, '0' + #{tenantId}, #{createDept}, #{createBy}, #{createTime}, '0', #{deptId} ) @@ -109,7 +111,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" start_time = #{startTime}, end_time = #{endTime}, update_by = #{updateBy}, - update_time = #{updateTime} + update_time = #{updateTime}, + dept_id = #{deptId}, where record_id = #{recordId} diff --git a/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/training.sql b/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/training.sql index e14ff3c0..05843e86 100644 --- a/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/training.sql +++ b/backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/training.sql @@ -34,7 +34,7 @@ create table rs_training_course ( drop table if exists rs_training_application; create table rs_training_application ( application_id bigint(20) not null comment '申请ID', - course_id bigint(20) not null comment '课程ID', + course_name varchar(100) not null comment '培训名称', user_id bigint(20) not null comment '申请人ID', user_name varchar(50) not null comment '申请人姓名', department varchar(50) not null comment '所属部门', @@ -43,7 +43,13 @@ create table rs_training_application ( status char(1) default '0' comment '状态(0待审核 1已通过 2已拒绝 3进行中 4已完成)', apply_time datetime comment '申请时间', current_approver varchar(50) comment '当前审批人', + location varchar(200) comment '培训地点', + duration int(11) comment '学时', + start_time datetime comment '开始时间', + end_time datetime comment '结束时间', tenant_id varchar(20) default '000000' comment '租户编号', + create_dept bigint(20) comment '创建部门', + reject_time datetime comment '拒绝时间', create_by bigint(20) comment '创建者', create_time datetime comment '创建时间', update_by bigint(20) comment '更新者', diff --git a/web/src/api/rs/training.ts b/web/src/api/rs/training.ts index 439b0fd0..8a7d2543 100644 --- a/web/src/api/rs/training.ts +++ b/web/src/api/rs/training.ts @@ -107,6 +107,8 @@ export interface RecordQuery { courseName?: string; userId?: number | string; userName?: string; + location?: string; + department?: string; completionStatus?: string; params?: Record; } @@ -119,6 +121,7 @@ export interface RecordVO { courseName: string; userId: number | string; userName: string; + location?: string; department?: string; completionStatus: string; score?: string; diff --git a/web/src/views/bzrkh/assessmentApproval/approvalDialog.vue b/web/src/views/bzrkh/assessmentApproval/approvalDialog.vue index 4e1cfe06..ca3ee38c 100644 --- a/web/src/views/bzrkh/assessmentApproval/approvalDialog.vue +++ b/web/src/views/bzrkh/assessmentApproval/approvalDialog.vue @@ -87,24 +87,24 @@ - + - + - + - + - + - + - + - + - + - +