feat(wms): 新增考勤比对功能

- 创建 AttendanceCheckBo 数据传输对象用于考勤比对参数传递
- 定义 IWmsAttendanceCheckService 接口及其实现类
- 创建 WmsAttendanceCheck 实体类存储考勤比对结果数据
- 开发 WmsAttendanceCheckController 提供考勤比对接口
- 实现考勤比对核心逻辑,支持上下班时间段考勤检查
- 集成打卡记录查询和考勤规则应用功能
- 添加考勤状态判断和扣款计算逻辑
- 实现连续旷工天数统计功能
- 创建考勤比对结果的增删改查接口
- 配置 MyBatis 映射文件和 Excel 导出功能
This commit is contained in:
2026-05-12 16:29:54 +08:00
parent 736b786ff9
commit 693de2ad5e
9 changed files with 695 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
package com.klp.controller;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.enums.BusinessType;
import com.klp.domain.bo.AttendanceCheckBo;
import com.klp.domain.bo.WmsAttendanceCheckBo;
import com.klp.domain.vo.WmsAttendanceCheckVo;
import com.klp.service.IWmsAttendanceCheckService;
import lombok.RequiredArgsConstructor;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotEmpty;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/wms/attendanceCheck")
public class WmsAttendanceCheckController extends BaseController {
private final IWmsAttendanceCheckService iWmsAttendanceCheckService;
@GetMapping("/list")
public TableDataInfo<WmsAttendanceCheckVo> list(WmsAttendanceCheckBo bo, PageQuery pageQuery) {
return iWmsAttendanceCheckService.queryPageList(bo, pageQuery);
}
@GetMapping("/{checkId}")
public R<WmsAttendanceCheckVo> getInfo(@PathVariable Long checkId) {
return R.ok(iWmsAttendanceCheckService.queryById(checkId));
}
@Log(title = "考勤比对", businessType = BusinessType.DELETE)
@DeleteMapping("/{checkIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] checkIds) {
return toAjax(iWmsAttendanceCheckService.deleteWithValidByIds(Arrays.asList(checkIds), true));
}
@Log(title = "考勤比对", businessType = BusinessType.INSERT)
@PostMapping("/check")
public R<Void> checkAttendance(@Validated @RequestBody AttendanceCheckBo bo) {
iWmsAttendanceCheckService.checkAttendance(bo);
return R.ok();
}
}