2117847720qq

导航

4.14

已经花费的时间2天,还剩余的时间8天

实现了员工管理功能,查看员工选课情况

// 员工管理
@GetMapping("/employees")
public String employeeManage(Model model) {
// 获取员工列表
List employees = adminService.findAllEmployees();

    // 获取员工课程映射表
    Map<Integer, List<Course>> coursesMap = adminService.getEmployeeCoursesMap();

    model.addAttribute("employees", employees);
    model.addAttribute("coursesMap", coursesMap);
    return "admin/employee";
}

// 员工删除
@PostMapping("/employees/delete/{id}")
public String deleteEmployee(@PathVariable Integer id,
                             HttpSession session,
                             RedirectAttributes ra) {
    if (!checkAdmin(session)) return "redirect:/login";

    try {
        adminService.deleteEmployee(id);
        ra.addFlashAttribute("success", "员工删除成功");
    } catch (AdminService.ServiceException e) {
        ra.addFlashAttribute("error", e.getMessage());
    } catch (Exception e) {
        ra.addFlashAttribute("error", "系统错误:" + e.getMessage());
    }
    return "redirect:/admin/employees";
}

package com.example.training.repository;

import com.example.training.entity.EmployeeCourse;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
import java.util.Optional;

public interface EmployeeCourseRepository extends JpaRepository<EmployeeCourse, Integer> {

@Query("SELECT ec FROM EmployeeCourse ec " +
        "WHERE ec.employee.id = :employeeId " +
        "AND ec.active = true")
List<EmployeeCourse> findActiveCoursesByEmployee(@Param("employeeId") Integer employeeId);

@Query("SELECT COUNT(ec) > 0 FROM EmployeeCourse ec " +
        "WHERE ec.employee.id = :employeeId " +
        "AND ec.course.id = :courseId " +
        "AND ec.active = true")
boolean existsActiveSelection(@Param("employeeId") Integer employeeId,
                              @Param("courseId") Integer courseId);

@Query("UPDATE EmployeeCourse ec SET ec.active = false " +
        "WHERE ec.employee.id = :employeeId " +
        "AND ec.course.id = :courseId")
void cancelCourseSelection(@Param("employeeId") Integer employeeId,
                           @Param("courseId") Integer courseId);


@Query("SELECT COUNT(ec) > 0 FROM EmployeeCourse ec WHERE ec.course.id = :courseId")
boolean existsByCourseId(@Param("courseId") Integer courseId);

@Query("SELECT COUNT(ec) > 0 FROM EmployeeCourse ec WHERE ec.employee.id = :employeeId")
boolean existsByEmployeeId(@Param("employeeId") Integer employeeId);

@Query("SELECT ec FROM EmployeeCourse ec WHERE ec.employee.id = :employeeId AND ec.course.id = :courseId")
Optional<EmployeeCourse> findByEmployeeIdAndCourseId(
        @Param("employeeId") Integer employeeId,
        @Param("courseId") Integer courseId);
@Query("SELECT ec FROM EmployeeCourse ec JOIN FETCH ec.course WHERE ec.employee.id IN :employeeIds")
List<EmployeeCourse> findWithCoursesByEmployeeIds(@Param("employeeIds") List<Integer> employeeIds);

}

员工管理

posted on 2025-04-14 21:57  我爱玩原神(原神大王)  阅读(6)  评论(0)    收藏  举报