diff --git a/gear-oa/src/main/java/com/gear/oa/controller/GearAttendanceSummaryController.java b/gear-oa/src/main/java/com/gear/oa/controller/GearAttendanceSummaryController.java new file mode 100644 index 0000000..7581104 --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/controller/GearAttendanceSummaryController.java @@ -0,0 +1,102 @@ +package com.gear.oa.controller; + +import java.util.List; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.gear.common.annotation.RepeatSubmit; +import com.gear.common.annotation.Log; +import com.gear.common.core.controller.BaseController; +import com.gear.common.core.domain.PageQuery; +import com.gear.common.core.domain.R; +import com.gear.common.core.validate.AddGroup; +import com.gear.common.core.validate.EditGroup; +import com.gear.common.core.validate.QueryGroup; +import com.gear.common.enums.BusinessType; +import com.gear.common.utils.poi.ExcelUtil; +import com.gear.oa.domain.vo.GearAttendanceSummaryVo; +import com.gear.oa.domain.bo.GearAttendanceSummaryBo; +import com.gear.oa.service.IGearAttendanceSummaryService; +import com.gear.common.core.page.TableDataInfo; + +/** + * 考勤汇总 + * + * @author Joshi + * @date 2025-08-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/attendanceSummary") +public class GearAttendanceSummaryController extends BaseController { + + private final IGearAttendanceSummaryService iGearAttendanceSummaryService; + + /** + * 查询考勤汇总列表 + */ + @GetMapping("/list") + public TableDataInfo list(GearAttendanceSummaryBo bo, PageQuery pageQuery) { + return iGearAttendanceSummaryService.queryPageList(bo, pageQuery); + } + + /** + * 导出考勤汇总列表 + */ + @Log(title = "考勤汇总", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(GearAttendanceSummaryBo bo, HttpServletResponse response) { + List list = iGearAttendanceSummaryService.queryList(bo); + ExcelUtil.exportExcel(list, "考勤汇总", GearAttendanceSummaryVo.class, response); + } + + /** + * 获取考勤汇总详细信息 + * + * @param summaryId 主键 + */ + @GetMapping("/{summaryId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long summaryId) { + return R.ok(iGearAttendanceSummaryService.queryById(summaryId)); + } + + /** + * 新增考勤汇总 + */ + @Log(title = "考勤汇总", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody GearAttendanceSummaryBo bo) { + return toAjax(iGearAttendanceSummaryService.insertByBo(bo)); + } + + /** + * 修改考勤汇总 + */ + @Log(title = "考勤汇总", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody GearAttendanceSummaryBo bo) { + return toAjax(iGearAttendanceSummaryService.updateByBo(bo)); + } + + /** + * 删除考勤汇总 + * + * @param summaryIds 主键串 + */ + @Log(title = "考勤汇总", businessType = BusinessType.DELETE) + @DeleteMapping("/{summaryIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] summaryIds) { + return toAjax(iGearAttendanceSummaryService.deleteWithValidByIds(Arrays.asList(summaryIds), true)); + } +} diff --git a/gear-oa/src/main/java/com/gear/oa/controller/GearAttendanceSummaryDetailController.java b/gear-oa/src/main/java/com/gear/oa/controller/GearAttendanceSummaryDetailController.java new file mode 100644 index 0000000..a2befb5 --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/controller/GearAttendanceSummaryDetailController.java @@ -0,0 +1,102 @@ +package com.gear.oa.controller; + +import java.util.List; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.gear.common.annotation.RepeatSubmit; +import com.gear.common.annotation.Log; +import com.gear.common.core.controller.BaseController; +import com.gear.common.core.domain.PageQuery; +import com.gear.common.core.domain.R; +import com.gear.common.core.validate.AddGroup; +import com.gear.common.core.validate.EditGroup; +import com.gear.common.core.validate.QueryGroup; +import com.gear.common.enums.BusinessType; +import com.gear.common.utils.poi.ExcelUtil; +import com.gear.oa.domain.vo.GearAttendanceSummaryDetailVo; +import com.gear.oa.domain.bo.GearAttendanceSummaryDetailBo; +import com.gear.oa.service.IGearAttendanceSummaryDetailService; +import com.gear.common.core.page.TableDataInfo; + +/** + * 考勤汇总明细 + * + * @author ruoyi + * @date 2025-08-07 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/attendanceSummaryDetail") +public class GearAttendanceSummaryDetailController extends BaseController { + + private final IGearAttendanceSummaryDetailService iGearAttendanceSummaryDetailService; + + /** + * 查询考勤汇总明细列表 + */ + @GetMapping("/list") + public TableDataInfo list(GearAttendanceSummaryDetailBo bo, PageQuery pageQuery) { + return iGearAttendanceSummaryDetailService.queryPageList(bo, pageQuery); + } + + /** + * 导出考勤汇总明细列表 + */ + @Log(title = "考勤汇总明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(GearAttendanceSummaryDetailBo bo, HttpServletResponse response) { + List list = iGearAttendanceSummaryDetailService.queryList(bo); + ExcelUtil.exportExcel(list, "考勤汇总明细", GearAttendanceSummaryDetailVo.class, response); + } + + /** + * 获取考勤汇总明细详细信息 + * + * @param detailId 主键 + */ + @GetMapping("/{detailId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long detailId) { + return R.ok(iGearAttendanceSummaryDetailService.queryById(detailId)); + } + + /** + * 新增考勤汇总明细 + */ + @Log(title = "考勤汇总明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody GearAttendanceSummaryDetailBo bo) { + return toAjax(iGearAttendanceSummaryDetailService.insertByBo(bo)); + } + + /** + * 修改考勤汇总明细 + */ + @Log(title = "考勤汇总明细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody GearAttendanceSummaryDetailBo bo) { + return toAjax(iGearAttendanceSummaryDetailService.updateByBo(bo)); + } + + /** + * 删除考勤汇总明细 + * + * @param detailIds 主键串 + */ + @Log(title = "考勤汇总明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{detailIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] detailIds) { + return toAjax(iGearAttendanceSummaryDetailService.deleteWithValidByIds(Arrays.asList(detailIds), true)); + } +} diff --git a/gear-oa/src/main/java/com/gear/oa/domain/GearAttendanceSummary.java b/gear-oa/src/main/java/com/gear/oa/domain/GearAttendanceSummary.java new file mode 100644 index 0000000..bffc02e --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/domain/GearAttendanceSummary.java @@ -0,0 +1,54 @@ +package com.gear.oa.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gear.common.core.domain.BaseEntity; + +/** + * 考勤汇总对象 gear_attendance_summary + * + * @author Joshi + * @date 2025-08-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("gear_attendance_summary") +public class GearAttendanceSummary extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 汇总主表ID + */ + @TableId(value = "summary_id") + private Long summaryId; + /** + * 汇总名称 + */ + private String summaryName; + /** + * 汇总开始日期 + */ + private Date startDate; + /** + * 汇总结束日期 + */ + private Date endDate; + /** + * 删除标志 + */ + @TableLogic + private Long delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/gear-oa/src/main/java/com/gear/oa/domain/GearAttendanceSummaryDetail.java b/gear-oa/src/main/java/com/gear/oa/domain/GearAttendanceSummaryDetail.java new file mode 100644 index 0000000..9471346 --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/domain/GearAttendanceSummaryDetail.java @@ -0,0 +1,61 @@ +package com.gear.oa.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +import java.math.BigDecimal; +import com.gear.common.core.domain.BaseEntity; + +/** + * 考勤汇总明细对象 gear_attendance_summary_detail + * + * @author ruoyi + * @date 2025-08-07 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("gear_attendance_summary_detail") +public class GearAttendanceSummaryDetail extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 明细ID + */ + @TableId(value = "detail_id") + private Long detailId; + /** + * 汇总主表ID + */ + private Long summaryId; + /** + * 用户ID + */ + private String userId; + /** + * 正常出勤小时数 + */ + private BigDecimal normalHours; + /** + * 加班小时数 + */ + private BigDecimal overtimeHours; + /** + * 出差小时数 + */ + private BigDecimal travelHours; + /** + * 删除标志 + */ + @TableLogic + private Long delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/gear-oa/src/main/java/com/gear/oa/domain/bo/GearAttendanceRecordBo.java b/gear-oa/src/main/java/com/gear/oa/domain/bo/GearAttendanceRecordBo.java index 678abcf..fcde093 100644 --- a/gear-oa/src/main/java/com/gear/oa/domain/bo/GearAttendanceRecordBo.java +++ b/gear-oa/src/main/java/com/gear/oa/domain/bo/GearAttendanceRecordBo.java @@ -1,14 +1,10 @@ package com.gear.oa.domain.bo; -import com.gear.common.core.validate.AddGroup; -import com.gear.common.core.validate.EditGroup; import lombok.Data; import lombok.EqualsAndHashCode; -import javax.validation.constraints.*; import java.util.Date; -import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; import com.gear.common.core.domain.BaseEntity; diff --git a/gear-oa/src/main/java/com/gear/oa/domain/bo/GearAttendanceSummaryBo.java b/gear-oa/src/main/java/com/gear/oa/domain/bo/GearAttendanceSummaryBo.java new file mode 100644 index 0000000..06586bd --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/domain/bo/GearAttendanceSummaryBo.java @@ -0,0 +1,52 @@ +package com.gear.oa.domain.bo; + +import com.gear.common.core.validate.AddGroup; +import com.gear.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gear.common.core.domain.BaseEntity; + +/** + * 考勤汇总业务对象 gear_attendance_summary + * + * @author Joshi + * @date 2025-08-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class GearAttendanceSummaryBo extends BaseEntity { + + /** + * 汇总主表ID + */ + private Long summaryId; + + /** + * 汇总名称 + */ + private String summaryName; + + /** + * 汇总开始日期 + */ + private Date startDate; + + /** + * 汇总结束日期 + */ + private Date endDate; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/gear-oa/src/main/java/com/gear/oa/domain/bo/GearAttendanceSummaryDetailBo.java b/gear-oa/src/main/java/com/gear/oa/domain/bo/GearAttendanceSummaryDetailBo.java new file mode 100644 index 0000000..73dc927 --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/domain/bo/GearAttendanceSummaryDetailBo.java @@ -0,0 +1,61 @@ +package com.gear.oa.domain.bo; + +import com.gear.common.core.validate.AddGroup; +import com.gear.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import java.math.BigDecimal; +import com.gear.common.core.domain.BaseEntity; + +/** + * 考勤汇总明细业务对象 gear_attendance_summary_detail + * + * @author ruoyi + * @date 2025-08-07 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class GearAttendanceSummaryDetailBo extends BaseEntity { + + /** + * 明细ID + */ + private Long detailId; + + /** + * 汇总主表ID + */ + private Long summaryId; + + /** + * 用户ID + */ + private String userId; + + /** + * 正常出勤小时数 + */ + private BigDecimal normalHours; + + /** + * 加班小时数 + */ + private BigDecimal overtimeHours; + + /** + * 出差小时数 + */ + private BigDecimal travelHours; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/gear-oa/src/main/java/com/gear/oa/domain/vo/GearAttendanceSummaryDetailVo.java b/gear-oa/src/main/java/com/gear/oa/domain/vo/GearAttendanceSummaryDetailVo.java new file mode 100644 index 0000000..53a37ff --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/domain/vo/GearAttendanceSummaryDetailVo.java @@ -0,0 +1,68 @@ +package com.gear.oa.domain.vo; + +import java.math.BigDecimal; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.gear.common.annotation.ExcelDictFormat; +import com.gear.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 考勤汇总明细视图对象 gear_attendance_summary_detail + * + * @author ruoyi + * @date 2025-08-07 + */ +@Data +@ExcelIgnoreUnannotated +public class GearAttendanceSummaryDetailVo { + + private static final long serialVersionUID = 1L; + + /** + * 明细ID + */ + @ExcelProperty(value = "明细ID") + private Long detailId; + + /** + * 汇总主表ID + */ + @ExcelProperty(value = "汇总主表ID") + private Long summaryId; + + /** + * 用户ID + */ + @ExcelProperty(value = "用户ID") + private String userId; + + /** + * 正常出勤小时数 + */ + @ExcelProperty(value = "正常出勤小时数") + private BigDecimal normalHours; + + /** + * 加班小时数 + */ + @ExcelProperty(value = "加班小时数") + private BigDecimal overtimeHours; + + /** + * 出差小时数 + */ + @ExcelProperty(value = "出差小时数") + private BigDecimal travelHours; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/gear-oa/src/main/java/com/gear/oa/domain/vo/GearAttendanceSummaryVo.java b/gear-oa/src/main/java/com/gear/oa/domain/vo/GearAttendanceSummaryVo.java new file mode 100644 index 0000000..9c32ef5 --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/domain/vo/GearAttendanceSummaryVo.java @@ -0,0 +1,57 @@ +package com.gear.oa.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.gear.common.annotation.ExcelDictFormat; +import com.gear.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 考勤汇总视图对象 gear_attendance_summary + * + * @author Joshi + * @date 2025-08-07 + */ +@Data +@ExcelIgnoreUnannotated +public class GearAttendanceSummaryVo { + + private static final long serialVersionUID = 1L; + + /** + * 汇总主表ID + */ + @ExcelProperty(value = "汇总主表ID") + private Long summaryId; + + /** + * 汇总名称 + */ + @ExcelProperty(value = "汇总名称") + private String summaryName; + + /** + * 汇总开始日期 + */ + @ExcelProperty(value = "汇总开始日期") + private Date startDate; + + /** + * 汇总结束日期 + */ + @ExcelProperty(value = "汇总结束日期") + private Date endDate; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/gear-oa/src/main/java/com/gear/oa/mapper/GearAttendanceSummaryDetailMapper.java b/gear-oa/src/main/java/com/gear/oa/mapper/GearAttendanceSummaryDetailMapper.java new file mode 100644 index 0000000..61be57c --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/mapper/GearAttendanceSummaryDetailMapper.java @@ -0,0 +1,15 @@ +package com.gear.oa.mapper; + +import com.gear.oa.domain.GearAttendanceSummaryDetail; +import com.gear.oa.domain.vo.GearAttendanceSummaryDetailVo; +import com.gear.common.core.mapper.BaseMapperPlus; + +/** + * 考勤汇总明细Mapper接口 + * + * @author ruoyi + * @date 2025-08-07 + */ +public interface GearAttendanceSummaryDetailMapper extends BaseMapperPlus { + +} diff --git a/gear-oa/src/main/java/com/gear/oa/mapper/GearAttendanceSummaryMapper.java b/gear-oa/src/main/java/com/gear/oa/mapper/GearAttendanceSummaryMapper.java new file mode 100644 index 0000000..1c4c7c0 --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/mapper/GearAttendanceSummaryMapper.java @@ -0,0 +1,15 @@ +package com.gear.oa.mapper; + +import com.gear.oa.domain.GearAttendanceSummary; +import com.gear.oa.domain.vo.GearAttendanceSummaryVo; +import com.gear.common.core.mapper.BaseMapperPlus; + +/** + * 考勤汇总Mapper接口 + * + * @author Joshi + * @date 2025-08-07 + */ +public interface GearAttendanceSummaryMapper extends BaseMapperPlus { + +} diff --git a/gear-oa/src/main/java/com/gear/oa/service/IGearAttendanceSummaryDetailService.java b/gear-oa/src/main/java/com/gear/oa/service/IGearAttendanceSummaryDetailService.java new file mode 100644 index 0000000..ef243b3 --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/service/IGearAttendanceSummaryDetailService.java @@ -0,0 +1,49 @@ +package com.gear.oa.service; + +import com.gear.oa.domain.GearAttendanceSummaryDetail; +import com.gear.oa.domain.vo.GearAttendanceSummaryDetailVo; +import com.gear.oa.domain.bo.GearAttendanceSummaryDetailBo; +import com.gear.common.core.page.TableDataInfo; +import com.gear.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 考勤汇总明细Service接口 + * + * @author ruoyi + * @date 2025-08-07 + */ +public interface IGearAttendanceSummaryDetailService { + + /** + * 查询考勤汇总明细 + */ + GearAttendanceSummaryDetailVo queryById(Long detailId); + + /** + * 查询考勤汇总明细列表 + */ + TableDataInfo queryPageList(GearAttendanceSummaryDetailBo bo, PageQuery pageQuery); + + /** + * 查询考勤汇总明细列表 + */ + List queryList(GearAttendanceSummaryDetailBo bo); + + /** + * 新增考勤汇总明细 + */ + Boolean insertByBo(GearAttendanceSummaryDetailBo bo); + + /** + * 修改考勤汇总明细 + */ + Boolean updateByBo(GearAttendanceSummaryDetailBo bo); + + /** + * 校验并批量删除考勤汇总明细信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/gear-oa/src/main/java/com/gear/oa/service/IGearAttendanceSummaryService.java b/gear-oa/src/main/java/com/gear/oa/service/IGearAttendanceSummaryService.java new file mode 100644 index 0000000..813e0ef --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/service/IGearAttendanceSummaryService.java @@ -0,0 +1,49 @@ +package com.gear.oa.service; + +import com.gear.oa.domain.GearAttendanceSummary; +import com.gear.oa.domain.vo.GearAttendanceSummaryVo; +import com.gear.oa.domain.bo.GearAttendanceSummaryBo; +import com.gear.common.core.page.TableDataInfo; +import com.gear.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 考勤汇总Service接口 + * + * @author Joshi + * @date 2025-08-07 + */ +public interface IGearAttendanceSummaryService { + + /** + * 查询考勤汇总 + */ + GearAttendanceSummaryVo queryById(Long summaryId); + + /** + * 查询考勤汇总列表 + */ + TableDataInfo queryPageList(GearAttendanceSummaryBo bo, PageQuery pageQuery); + + /** + * 查询考勤汇总列表 + */ + List queryList(GearAttendanceSummaryBo bo); + + /** + * 新增考勤汇总 + */ + Boolean insertByBo(GearAttendanceSummaryBo bo); + + /** + * 修改考勤汇总 + */ + Boolean updateByBo(GearAttendanceSummaryBo bo); + + /** + * 校验并批量删除考勤汇总信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/gear-oa/src/main/java/com/gear/oa/service/impl/GearAttendanceSummaryDetailServiceImpl.java b/gear-oa/src/main/java/com/gear/oa/service/impl/GearAttendanceSummaryDetailServiceImpl.java new file mode 100644 index 0000000..7a37320 --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/service/impl/GearAttendanceSummaryDetailServiceImpl.java @@ -0,0 +1,113 @@ +package com.gear.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.gear.common.utils.StringUtils; +import com.gear.common.core.page.TableDataInfo; +import com.gear.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.gear.oa.domain.bo.GearAttendanceSummaryDetailBo; +import com.gear.oa.domain.vo.GearAttendanceSummaryDetailVo; +import com.gear.oa.domain.GearAttendanceSummaryDetail; +import com.gear.oa.mapper.GearAttendanceSummaryDetailMapper; +import com.gear.oa.service.IGearAttendanceSummaryDetailService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 考勤汇总明细Service业务层处理 + * + * @author ruoyi + * @date 2025-08-07 + */ +@RequiredArgsConstructor +@Service +public class GearAttendanceSummaryDetailServiceImpl implements IGearAttendanceSummaryDetailService { + + private final GearAttendanceSummaryDetailMapper baseMapper; + + /** + * 查询考勤汇总明细 + */ + @Override + public GearAttendanceSummaryDetailVo queryById(Long detailId){ + return baseMapper.selectVoById(detailId); + } + + /** + * 查询考勤汇总明细列表 + */ + @Override + public TableDataInfo queryPageList(GearAttendanceSummaryDetailBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询考勤汇总明细列表 + */ + @Override + public List queryList(GearAttendanceSummaryDetailBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(GearAttendanceSummaryDetailBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getSummaryId() != null, GearAttendanceSummaryDetail::getSummaryId, bo.getSummaryId()); + lqw.eq(StringUtils.isNotBlank(bo.getUserId()), GearAttendanceSummaryDetail::getUserId, bo.getUserId()); + lqw.eq(bo.getNormalHours() != null, GearAttendanceSummaryDetail::getNormalHours, bo.getNormalHours()); + lqw.eq(bo.getOvertimeHours() != null, GearAttendanceSummaryDetail::getOvertimeHours, bo.getOvertimeHours()); + lqw.eq(bo.getTravelHours() != null, GearAttendanceSummaryDetail::getTravelHours, bo.getTravelHours()); + return lqw; + } + + /** + * 新增考勤汇总明细 + */ + @Override + public Boolean insertByBo(GearAttendanceSummaryDetailBo bo) { + GearAttendanceSummaryDetail add = BeanUtil.toBean(bo, GearAttendanceSummaryDetail.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setDetailId(add.getDetailId()); + } + return flag; + } + + /** + * 修改考勤汇总明细 + */ + @Override + public Boolean updateByBo(GearAttendanceSummaryDetailBo bo) { + GearAttendanceSummaryDetail update = BeanUtil.toBean(bo, GearAttendanceSummaryDetail.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(GearAttendanceSummaryDetail entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除考勤汇总明细 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/gear-oa/src/main/java/com/gear/oa/service/impl/GearAttendanceSummaryServiceImpl.java b/gear-oa/src/main/java/com/gear/oa/service/impl/GearAttendanceSummaryServiceImpl.java new file mode 100644 index 0000000..263b6b9 --- /dev/null +++ b/gear-oa/src/main/java/com/gear/oa/service/impl/GearAttendanceSummaryServiceImpl.java @@ -0,0 +1,111 @@ +package com.gear.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.gear.common.utils.StringUtils; +import com.gear.common.core.page.TableDataInfo; +import com.gear.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.gear.oa.domain.bo.GearAttendanceSummaryBo; +import com.gear.oa.domain.vo.GearAttendanceSummaryVo; +import com.gear.oa.domain.GearAttendanceSummary; +import com.gear.oa.mapper.GearAttendanceSummaryMapper; +import com.gear.oa.service.IGearAttendanceSummaryService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 考勤汇总Service业务层处理 + * + * @author Joshi + * @date 2025-08-07 + */ +@RequiredArgsConstructor +@Service +public class GearAttendanceSummaryServiceImpl implements IGearAttendanceSummaryService { + + private final GearAttendanceSummaryMapper baseMapper; + + /** + * 查询考勤汇总 + */ + @Override + public GearAttendanceSummaryVo queryById(Long summaryId){ + return baseMapper.selectVoById(summaryId); + } + + /** + * 查询考勤汇总列表 + */ + @Override + public TableDataInfo queryPageList(GearAttendanceSummaryBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询考勤汇总列表 + */ + @Override + public List queryList(GearAttendanceSummaryBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(GearAttendanceSummaryBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getSummaryName()), GearAttendanceSummary::getSummaryName, bo.getSummaryName()); + lqw.eq(bo.getStartDate() != null, GearAttendanceSummary::getStartDate, bo.getStartDate()); + lqw.eq(bo.getEndDate() != null, GearAttendanceSummary::getEndDate, bo.getEndDate()); + return lqw; + } + + /** + * 新增考勤汇总 + */ + @Override + public Boolean insertByBo(GearAttendanceSummaryBo bo) { + GearAttendanceSummary add = BeanUtil.toBean(bo, GearAttendanceSummary.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setSummaryId(add.getSummaryId()); + } + return flag; + } + + /** + * 修改考勤汇总 + */ + @Override + public Boolean updateByBo(GearAttendanceSummaryBo bo) { + GearAttendanceSummary update = BeanUtil.toBean(bo, GearAttendanceSummary.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(GearAttendanceSummary entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除考勤汇总 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/gear-oa/src/main/resources/mapper/oa/GearAttendanceSummaryDetailMapper.xml b/gear-oa/src/main/resources/mapper/oa/GearAttendanceSummaryDetailMapper.xml new file mode 100644 index 0000000..7493a4f --- /dev/null +++ b/gear-oa/src/main/resources/mapper/oa/GearAttendanceSummaryDetailMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/gear-oa/src/main/resources/mapper/oa/GearAttendanceSummaryMapper.xml b/gear-oa/src/main/resources/mapper/oa/GearAttendanceSummaryMapper.xml new file mode 100644 index 0000000..d38b304 --- /dev/null +++ b/gear-oa/src/main/resources/mapper/oa/GearAttendanceSummaryMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + +