| | |
| | | package com.ruoyi.staff.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.OrderItem; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.staff.dto.PersonalAttendanceRecordsDto; |
| | | import com.ruoyi.staff.pojo.PersonalAttendanceLocationConfig; |
| | | import com.ruoyi.staff.pojo.PersonalAttendanceRecords; |
| | | import com.ruoyi.staff.service.PersonalAttendanceLocationConfigService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/personalAttendanceLocationConfig") |
| | | @Api(tags = "人员打卡规则配置") |
| | | @Tag(name = "人员打卡规则配置") |
| | | @RequiredArgsConstructor |
| | | public class PersonalAttendanceLocationConfigController { |
| | | |
| | | @Autowired |
| | | private PersonalAttendanceLocationConfigService personalAttendanceLocationConfigService; |
| | | private final PersonalAttendanceLocationConfigService personalAttendanceLocationConfigService; |
| | | |
| | | @ApiOperation("新增/修改人员打卡规则配置") |
| | | @Operation(summary = "新增/修改人员打卡规则配置") |
| | | @PostMapping("/add") |
| | | public R add(@RequestBody PersonalAttendanceLocationConfig personalAttendanceLocationConfig){ |
| | | if (personalAttendanceLocationConfig.getId() != null |
| | | && !personalAttendanceLocationConfigService.canEdit(personalAttendanceLocationConfig.getId())) { |
| | | return R.fail("该班次配置已被排班并产生打卡记录,不能编辑"); |
| | | } |
| | | // 班次需要不能够重复 |
| | | if (personalAttendanceLocationConfig.getId() == null && personalAttendanceLocationConfigService.lambdaQuery().eq(PersonalAttendanceLocationConfig::getShift, personalAttendanceLocationConfig.getShift()).one() != null) { |
| | | return R.fail("班次不能重复"); |
| | | } |
| | | return R.ok(personalAttendanceLocationConfigService.saveOrUpdate(personalAttendanceLocationConfig)); |
| | | } |
| | | |
| | | @ApiOperation("分页查询打卡签到") |
| | | @Operation(summary = "分页查询人员打卡规则配置") |
| | | @GetMapping("/listPage") |
| | | public R listPage(Page page){ |
| | | return R.ok(personalAttendanceLocationConfigService.page(page)); |
| | | public R listPage(Page page, PersonalAttendanceLocationConfig query){ |
| | | page.addOrder(OrderItem.desc("id")); |
| | | LambdaQueryWrapper<PersonalAttendanceLocationConfig> wrapper = new LambdaQueryWrapper<PersonalAttendanceLocationConfig>() |
| | | .ne(PersonalAttendanceLocationConfig::getId, 999); |
| | | if (query.getSysDeptId() != null) { |
| | | wrapper.eq(PersonalAttendanceLocationConfig::getSysDeptId, query.getSysDeptId()); |
| | | } |
| | | if (query.getShift() != null && !query.getShift().isEmpty()) { |
| | | wrapper.eq(PersonalAttendanceLocationConfig::getShift, query.getShift()); |
| | | } |
| | | IPage<PersonalAttendanceLocationConfig> result = personalAttendanceLocationConfigService.page(page, wrapper); |
| | | result.getRecords().forEach(item -> { |
| | | boolean locked = personalAttendanceLocationConfigService.hasAttendanceUsage(item.getId()); |
| | | item.setUsageLocked(locked); |
| | | item.setCanEdit(!locked); |
| | | item.setCanDelete(!locked); |
| | | }); |
| | | return R.ok(result); |
| | | } |
| | | |
| | | |
| | | @Operation(summary = "删除人员打卡规则配置") |
| | | @DeleteMapping("/del") |
| | | public R del(@RequestBody List<Integer> ids) { |
| | | for (Integer id : ids) { |
| | | if (!personalAttendanceLocationConfigService.canDelete(id)) { |
| | | return R.fail("存在已排班且已有打卡记录的班次配置,不能删除"); |
| | | } |
| | | } |
| | | return R.ok(personalAttendanceLocationConfigService.removeBatchByIds(ids)); |
| | | } |
| | | |
| | | } |