gaoluyang
2 小时以前 ef3cbc1c6882786e8218b08be3e52ea44587f03b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package cn.iocoder.yudao.module.hrm.controller.admin.attendance;
 
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceHolidayGroupRespVO;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceHolidayPageReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceHolidayRangeCreateReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceHolidayRangeUpdateReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceHolidayRespVO;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceHolidaySaveReqVO;
import cn.iocoder.yudao.module.hrm.dal.dataobject.attendance.HrmAttendanceHolidayDO;
import cn.iocoder.yudao.module.hrm.service.attendance.HrmAttendanceHolidayService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
 
import java.io.IOException;
import java.time.LocalDate;
import java.util.List;
 
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
@Tag(name = "管理后台 - HRM 考勤节假日配置")
@RestController
@RequestMapping("/hrm/attendance/holiday")
@Validated
public class HrmAttendanceHolidayController {
 
    @Resource
    private HrmAttendanceHolidayService attendanceHolidayService;
 
    @PostMapping("/create")
    @Operation(summary = "新增节假日配置")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:create')")
    public CommonResult<Long> createAttendanceHoliday(@Valid @RequestBody HrmAttendanceHolidaySaveReqVO createReqVO) {
        return success(attendanceHolidayService.createAttendanceHoliday(createReqVO));
    }
 
    @PostMapping("/create-range")
    @Operation(summary = "按日期范围新增节假日配置(含中间每一天)")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:create')")
    public CommonResult<Integer> createAttendanceHolidayRange(
            @Valid @RequestBody HrmAttendanceHolidayRangeCreateReqVO createReqVO) {
        return success(attendanceHolidayService.createAttendanceHolidayRange(createReqVO));
    }
 
    @PutMapping("/update")
    @Operation(summary = "更新节假日配置")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:update')")
    public CommonResult<Boolean> updateAttendanceHoliday(@Valid @RequestBody HrmAttendanceHolidaySaveReqVO updateReqVO) {
        attendanceHolidayService.updateAttendanceHoliday(updateReqVO);
        return success(true);
    }
 
    @PutMapping("/update-range")
    @Operation(summary = "按日期区间更新节假日配置(删除原区间记录后按新起止日期重写)")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:update')")
    public CommonResult<Boolean> updateAttendanceHolidayRange(
            @Valid @RequestBody HrmAttendanceHolidayRangeUpdateReqVO updateReqVO) {
        attendanceHolidayService.updateAttendanceHolidayRange(updateReqVO);
        return success(true);
    }
 
    @DeleteMapping("/delete")
    @Operation(summary = "删除节假日配置")
    @Parameter(name = "id", description = "节假日ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:attendance:delete')")
    public CommonResult<Boolean> deleteAttendanceHoliday(@RequestParam("id") Long id) {
        attendanceHolidayService.deleteAttendanceHoliday(id);
        return success(true);
    }
 
    @DeleteMapping("/delete-range")
    @Operation(summary = "按日期区间删除节假日配置(删除区间内全部日期)")
    @Parameter(name = "ids", description = "区间内节假日ID列表", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:attendance:delete')")
    public CommonResult<Boolean> deleteAttendanceHolidayRange(@RequestParam("ids") List<Long> ids) {
        attendanceHolidayService.deleteAttendanceHolidayRange(ids);
        return success(true);
    }
 
    @GetMapping("/get")
    @Operation(summary = "获得节假日配置")
    @Parameter(name = "id", description = "节假日ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    public CommonResult<HrmAttendanceHolidayRespVO> getAttendanceHoliday(@RequestParam("id") Long id) {
        HrmAttendanceHolidayDO attendanceHoliday = attendanceHolidayService.getAttendanceHoliday(id);
        return success(BeanUtils.toBean(attendanceHoliday, HrmAttendanceHolidayRespVO.class));
    }
 
    @GetMapping("/page")
    @Operation(summary = "获得节假日配置分页")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    public CommonResult<PageResult<HrmAttendanceHolidayRespVO>> getAttendanceHolidayPage(@Valid HrmAttendanceHolidayPageReqVO pageReqVO) {
        PageResult<HrmAttendanceHolidayDO> pageResult = attendanceHolidayService.getAttendanceHolidayPage(pageReqVO);
        return success(BeanUtils.toBean(pageResult, HrmAttendanceHolidayRespVO.class));
    }
 
    @GetMapping("/page-grouped")
    @Operation(summary = "获得节假日配置分页(按连续日期区间合并展示)")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    public CommonResult<PageResult<HrmAttendanceHolidayGroupRespVO>> getAttendanceHolidayGroupPage(
            @Valid HrmAttendanceHolidayPageReqVO pageReqVO) {
        return success(attendanceHolidayService.getAttendanceHolidayGroupPage(pageReqVO));
    }
 
    @GetMapping("/list")
    @Operation(summary = "获得指定日期范围的节假日列表(逐日,排班日历使用)")
    @Parameter(name = "startDate", description = "开始日期", required = true)
    @Parameter(name = "endDate", description = "结束日期", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    public CommonResult<List<HrmAttendanceHolidayRespVO>> getAttendanceHolidayList(
            @RequestParam("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
            @RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate) {
        List<HrmAttendanceHolidayDO> list = attendanceHolidayService.getAttendanceHolidayListByDateRange(startDate, endDate);
        return success(BeanUtils.toBean(list, HrmAttendanceHolidayRespVO.class));
    }
 
    @GetMapping("/export-excel")
    @Operation(summary = "导出节假日配置 Excel")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:export')")
    @ApiAccessLog(operateType = EXPORT)
    public void exportAttendanceHolidayExcel(@Valid HrmAttendanceHolidayPageReqVO pageReqVO,
                                               HttpServletResponse response) throws IOException {
        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
        List<HrmAttendanceHolidayDO> list = attendanceHolidayService.getAttendanceHolidayPage(pageReqVO).getList();
        List<HrmAttendanceHolidayRespVO> data = BeanUtils.toBean(list, HrmAttendanceHolidayRespVO.class);
        ExcelUtils.write(response, "节假日配置.xls", "数据", HrmAttendanceHolidayRespVO.class, data);
    }
 
}