AttendanceController.java 5.06 KB
package com.ruoyi.controller;

import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.global.Result;
import com.ruoyi.domain.RuleAttendanceMain;
import com.ruoyi.pojo.dto.SchedulingDto;
import com.ruoyi.pojo.dto.SchedulingSettingDto;
import com.ruoyi.pojo.vo.*;
import com.ruoyi.service.AttendanceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 考勤表controller
 *
 * @author 20412
 */
@RestController
@RequestMapping("/attendance")
@Api(tags = "考勤管理")
public class AttendanceController extends BaseController {

    @Autowired
    private AttendanceService attendanceService;


    /**
     * 获取指定人员信息
     */
    @ApiOperation("获取人员信息")
    @GetMapping("/peoples")
    public Result<?> getPeopleInfo(@RequestParam(value = "id", required = false) Long id) {
        return Result.OK(attendanceService.getDriverInfo(id));
    }

    /**
     * 获取排班
     */
    @ApiOperation("获取排班")
    @GetMapping("/scheduling/list")
    public TableDataInfo getSchedulingList(@ModelAttribute SchedulingRequestVo vo) {
        List<SchedulingResponseVo> list = attendanceService.getSchedulingList(vo);
        return getDataTable(list);
    }

    /**
     * 根据班次获取模板
     */
    @ApiOperation("根据班次获取模板")
    @GetMapping("/template/{id}")
    public Result<?> getTemplate(@PathVariable("id") Long id) {
        return Result.OK(attendanceService.getTemplate(id));
    }


    /**
     * 新增排班设置
     */
    @ApiOperation("排班设置")
    @PostMapping("/saveSchedulingSetting")
    @Log(title = "新增排班设置", businessType = BusinessType.INSERT)
    public Result<?> saveSchedulingSetting(@RequestBody @Validated SchedulingSettingDto dto) {
        attendanceService.saveSchedulingSetting(dto);
        return Result.OK("新增成功");
    }

    /**
     * 修改排班设置
     */
    @ApiOperation("排班设置")
    @PutMapping("/updateSchedulingSetting")
    @Log(title = "修改排班设置", businessType = BusinessType.UPDATE)
    public Result<?> updateSchedulingSetting(@RequestBody @Validated SchedulingDto dto) {
        attendanceService.updateSchedulingSetting(dto);
        return Result.OK("新增成功");
    }

    /**
     * 删除排班设置
     */
    @ApiOperation("排班设置")
    @DeleteMapping("/deleteSchedulingSetting/{settingId}")
    @Log(title = "删除排班设置", businessType = BusinessType.DELETE)
    public Result<?> deleteSchedulingSetting(@PathVariable("settingId") Integer settingId) {
        attendanceService.deleteSchedulingSetting(settingId);
        return Result.OK("删除成功");
    }


    /**
     * 获取考情表
     */
    @ApiOperation("获取考情表")
    @GetMapping("/list/attendance")
    public TableDataInfo getAttendance(@ModelAttribute RuleAttendanceMainRequestVo vo) {
        List<RuleAttendanceMain> list = attendanceService.queryAttendanceMain(vo);
        return getDataTable(list);
    }

    @ApiOperation("修改考情表")
    @PutMapping("/update/attendance")
    @Log(title = "修改考情表", businessType = BusinessType.UPDATE)
    public Result<?> updateAttendance(@RequestBody @Validated UpdateAttendanceVo vo) {
        try {
            attendanceService.updateAttendance(vo);
            return Result.OK("排班修改成功");
        } catch (Exception e) {
            throw new RuntimeException("排班修改失败,请联系管理员" + e.getMessage());
        }
    }

    @ApiOperation("删除考勤表")
    @PostMapping("/delete/attendance")
    @Log(title = "删除考勤表", businessType = BusinessType.DELETE)
    public Result<?> deleteAttendance(@RequestBody DeleteAttendanceVo vo) {
        try {
            attendanceService.deleteAttendance(vo);
            return Result.OK("删除排班成功");
        } catch (Exception e) {
            throw new RuntimeException("删除排班失败,请联系管理员" + e.getMessage());
        }
    }

    @ApiOperation("获取一个月的排班table")
    @GetMapping("/list/people")
    public TableDataInfo getTableMonth(@ModelAttribute PeopleRequestVo vo){
        return attendanceService.getTableMonth(vo);
    }


    @ApiOperation("用户顶班")
    @PutMapping("/update/people/attendance")
    @Log(title = "用户顶班", businessType = BusinessType.UPDATE)
    public Result<?> updateSchedulingByUser( @RequestBody @Validated UpdatePeopleAttendanceRequestVo vo){
        attendanceService.updateSchedulingByUser(vo);
        return Result.OK("顶班成功");
    }

    @ApiOperation("获取当日休息的用户")
    @GetMapping("/getToday/freeUser")
    public Result<?> getTodayFreeUser(@RequestParam("date") String date){
        return Result.OK(attendanceService.getTodayFreeUser(date));
    }

}