From c74b57e29e88af9e55313fea62a2a099d33a6bee Mon Sep 17 00:00:00 2001 From: aikai Date: Wed, 5 Jun 2024 17:20:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E8=80=83=E5=8B=A4app?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E8=87=B3admin=E6=A8=A1=E5=9D=97/=E4=B8=BA?= =?UTF-8?q?=E4=BA=86=E8=B0=83=E6=95=B4=E7=94=A8=E6=88=B7=E7=99=BB=E9=99=86?= =?UTF-8?q?=E9=97=AE=E9=A2=98/=E8=80=83=E5=8B=A4=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E4=B8=AD=E6=9B=B4=E6=96=B0redis=E7=BC=93?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AttendanceEquipmentController.java | 4 +- .../attendance/AttendanceController.java | 10 ++-- .../attendance/dto/AttendancePunchDTO.java | 2 +- .../dto/AttendancePunchPageDTO.java | 2 +- .../dto/AttendanceStatisticsByCycleDTO.java | 2 +- .../dto/AttendanceStatisticsByDayDTO.java | 2 +- .../TeamAttendanceStatisticsByCycleDTO.java | 2 +- .../dto/TeamAttendanceStatisticsByDayDTO.java | 2 +- .../attendance/vo/AttendanceByGroupVO.java | 2 +- .../vo/AttendanceGroupSystemVO.java | 7 +-- .../attendance/vo/AttendancePunchPageVO.java | 2 +- .../vo/AttendancePunchStatisticsVO.java | 2 +- .../attendance/vo/AttendancePunchVO.java | 2 +- .../attendance/vo/AttendanceStatisticsVO.java | 2 +- .../vo/AttendanceStatusByDayVO.java | 2 +- .../attendance/vo/CalculateNum.java | 2 +- .../attendance/vo/HolidayVO.java | 2 +- .../vo/TeamAttendancePunchStatisticsVO.java | 2 +- .../vo/TeamAttendanceStatisticsByCycleVO.java | 3 +- .../vo/TeamAttendanceStatisticsByDayVO.java | 2 +- .../groupshift/AttendanceGroupShiftDO.java | 9 ++- .../attendance/AttendanceStatisticsJob.java | 9 +++ .../service/attendance/AttendanceService.java | 6 +- .../attendance/AttendanceServiceImpl.java | 26 +++++--- .../fixed/AttendanceFixedServiceImpl.java | 5 +- .../AttendanceGroupShiftServiceImpl.java | 60 ++++++++++++------- .../attendance/punch/PunchService.java | 4 +- .../AttendanceSchedulingServiceImpl.java | 4 +- 28 files changed, 107 insertions(+), 72 deletions(-) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/AttendanceController.java (86%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/dto/AttendancePunchDTO.java (94%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/dto/AttendancePunchPageDTO.java (93%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/dto/AttendanceStatisticsByCycleDTO.java (94%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/dto/AttendanceStatisticsByDayDTO.java (92%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/dto/TeamAttendanceStatisticsByCycleDTO.java (94%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/dto/TeamAttendanceStatisticsByDayDTO.java (93%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/AttendanceByGroupVO.java (88%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/AttendanceGroupSystemVO.java (61%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/AttendancePunchPageVO.java (96%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/AttendancePunchStatisticsVO.java (88%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/AttendancePunchVO.java (92%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/AttendanceStatisticsVO.java (94%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/AttendanceStatusByDayVO.java (88%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/CalculateNum.java (94%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/HolidayVO.java (82%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/TeamAttendancePunchStatisticsVO.java (91%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/TeamAttendanceStatisticsByCycleVO.java (95%) rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/{app => admin}/attendance/vo/TeamAttendanceStatisticsByDayVO.java (90%) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/AttendanceEquipmentController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/AttendanceEquipmentController.java index a3eb0507..56fcd177 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/AttendanceEquipmentController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/AttendanceEquipmentController.java @@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.system.controller; import cn.hutool.json.JSONObject; import cn.iocoder.yudao.framework.common.exception.ServiceException; import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; -import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendancePunchDTO; -import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchVO; +import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchDTO; +import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; import cn.iocoder.yudao.module.system.service.attendance.AttendanceService; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/AttendanceController.java similarity index 86% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/AttendanceController.java index a717ca56..629c4fec 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/AttendanceController.java @@ -1,8 +1,8 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance; +package cn.iocoder.yudao.module.system.controller.admin.attendance; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.module.system.controller.app.attendance.dto.*; -import cn.iocoder.yudao.module.system.controller.app.attendance.vo.*; +import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.*; +import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.*; import cn.iocoder.yudao.module.system.service.attendance.AttendanceService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -68,8 +68,8 @@ public class AttendanceController { @GetMapping("/getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights") @Operation(summary = "获取当前登陆用户所在考勤组并且是否有管理员权限") - public CommonResult getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights() { - AttendanceGroupSystemVO vo = attendanceService.getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights(); + public CommonResult> getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights() { + List vo = attendanceService.getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights(); return success(vo); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendancePunchDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendancePunchDTO.java similarity index 94% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendancePunchDTO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendancePunchDTO.java index 1b692fc5..0879d91d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendancePunchDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendancePunchDTO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.dto; +package cn.iocoder.yudao.module.system.controller.admin.attendance.dto; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendancePunchPageDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendancePunchPageDTO.java similarity index 93% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendancePunchPageDTO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendancePunchPageDTO.java index 4689581f..77c6e134 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendancePunchPageDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendancePunchPageDTO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.dto; +package cn.iocoder.yudao.module.system.controller.admin.attendance.dto; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendanceStatisticsByCycleDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendanceStatisticsByCycleDTO.java similarity index 94% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendanceStatisticsByCycleDTO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendanceStatisticsByCycleDTO.java index b128b2a7..90f23986 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendanceStatisticsByCycleDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendanceStatisticsByCycleDTO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.dto; +package cn.iocoder.yudao.module.system.controller.admin.attendance.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendanceStatisticsByDayDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendanceStatisticsByDayDTO.java similarity index 92% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendanceStatisticsByDayDTO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendanceStatisticsByDayDTO.java index 4dad7c95..215634b8 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendanceStatisticsByDayDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/AttendanceStatisticsByDayDTO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.dto; +package cn.iocoder.yudao.module.system.controller.admin.attendance.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/TeamAttendanceStatisticsByCycleDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/TeamAttendanceStatisticsByCycleDTO.java similarity index 94% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/TeamAttendanceStatisticsByCycleDTO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/TeamAttendanceStatisticsByCycleDTO.java index f4dc60fa..53f12300 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/TeamAttendanceStatisticsByCycleDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/TeamAttendanceStatisticsByCycleDTO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.dto; +package cn.iocoder.yudao.module.system.controller.admin.attendance.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/TeamAttendanceStatisticsByDayDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/TeamAttendanceStatisticsByDayDTO.java similarity index 93% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/TeamAttendanceStatisticsByDayDTO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/TeamAttendanceStatisticsByDayDTO.java index a3d92bf6..3bec7ca2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/TeamAttendanceStatisticsByDayDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/dto/TeamAttendanceStatisticsByDayDTO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.dto; +package cn.iocoder.yudao.module.system.controller.admin.attendance.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceByGroupVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceByGroupVO.java similarity index 88% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceByGroupVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceByGroupVO.java index af62b00e..c37750c6 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceByGroupVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceByGroupVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceGroupSystemVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceGroupSystemVO.java similarity index 61% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceGroupSystemVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceGroupSystemVO.java index 4eab67fe..f6a6fc8f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceGroupSystemVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceGroupSystemVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -11,7 +11,6 @@ public class AttendanceGroupSystemVO { @Schema(description = "考勤组id") private Long groupId; - @Schema(description = "是否有权限 true是 false否") - private Boolean flag; - + @Schema(description = "考勤组名称") + private String groupName; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendancePunchPageVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendancePunchPageVO.java similarity index 96% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendancePunchPageVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendancePunchPageVO.java index f782fba4..501265cb 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendancePunchPageVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendancePunchPageVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshift.AttendanceGroupShiftDO; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendancePunchStatisticsVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendancePunchStatisticsVO.java similarity index 88% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendancePunchStatisticsVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendancePunchStatisticsVO.java index 6bc66f06..e8afe449 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendancePunchStatisticsVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendancePunchStatisticsVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendancePunchVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendancePunchVO.java similarity index 92% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendancePunchVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendancePunchVO.java index bbe14c49..815aefa2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendancePunchVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendancePunchVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshift.AttendanceGroupShiftDO; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatisticsVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceStatisticsVO.java similarity index 94% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatisticsVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceStatisticsVO.java index 47c4bb6c..6e65c83d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatisticsVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceStatisticsVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDayVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceStatusByDayVO.java similarity index 88% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDayVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceStatusByDayVO.java index 2141e5f9..ff636358 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDayVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/AttendanceStatusByDayVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/CalculateNum.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/CalculateNum.java similarity index 94% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/CalculateNum.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/CalculateNum.java index df7017c3..73d82819 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/CalculateNum.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/CalculateNum.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/HolidayVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/HolidayVO.java similarity index 82% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/HolidayVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/HolidayVO.java index 0b26edea..9213557d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/HolidayVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/HolidayVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/TeamAttendancePunchStatisticsVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/TeamAttendancePunchStatisticsVO.java similarity index 91% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/TeamAttendancePunchStatisticsVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/TeamAttendancePunchStatisticsVO.java index 7517a807..2edd7639 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/TeamAttendancePunchStatisticsVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/TeamAttendancePunchStatisticsVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/TeamAttendanceStatisticsByCycleVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/TeamAttendanceStatisticsByCycleVO.java similarity index 95% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/TeamAttendanceStatisticsByCycleVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/TeamAttendanceStatisticsByCycleVO.java index 430dcb22..268b3ba2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/TeamAttendanceStatisticsByCycleVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/TeamAttendanceStatisticsByCycleVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import cn.hutool.core.date.BetweenFormatter; import cn.hutool.core.date.DateUtil; @@ -6,7 +6,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.experimental.Accessors; -import java.math.BigDecimal; import java.util.List; @Data diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/TeamAttendanceStatisticsByDayVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/TeamAttendanceStatisticsByDayVO.java similarity index 90% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/TeamAttendanceStatisticsByDayVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/TeamAttendanceStatisticsByDayVO.java index d3ab8d7c..b1d66108 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/TeamAttendanceStatisticsByDayVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/vo/TeamAttendanceStatisticsByDayVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.app.attendance.vo; +package cn.iocoder.yudao.module.system.controller.admin.attendance.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/groupshift/AttendanceGroupShiftDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/groupshift/AttendanceGroupShiftDO.java index 50653c23..2b1f0bfe 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/groupshift/AttendanceGroupShiftDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/groupshift/AttendanceGroupShiftDO.java @@ -1,11 +1,10 @@ package cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshift; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; /** * 考勤组班次 DO diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceStatisticsJob.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceStatisticsJob.java index b31a262f..4c807ec4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceStatisticsJob.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceStatisticsJob.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import cn.iocoder.yudao.framework.common.Constants; import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.tenant.core.job.TenantJob; @@ -22,6 +23,7 @@ import cn.iocoder.yudao.module.system.service.attendance.scheduling.AttendanceSc import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -32,6 +34,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @Component @@ -66,6 +69,8 @@ public class AttendanceStatisticsJob { private AttendanceGroupShiftItemService attendanceGroupShiftItemService; @Resource private AttendancePunchRecordService attendancePunchRecordService; + @Resource + private StringRedisTemplate stringRedisTemplate; @XxlJob("attendanceStatisticsJob") @TenantJob // --- ⚠️ 这个注解 会将租户列表拉出来 完了后逐个租户执行 定时任务需要注意 @@ -91,6 +96,7 @@ public class AttendanceStatisticsJob { Map> itemMaps = attendanceGroupShiftItemDOList.stream().collect(Collectors.groupingBy(AttendanceGroupShiftItemDO::getKqAttendanceGroupShiftId)); List attendancePunchRecordDOList = new ArrayList<>(); for (Map.Entry entry : map.entrySet()) { + String key = Constants.ATTENDANCE + Constants.UNDERLINE + entry.getKey() + Constants.UNDERLINE; // + 时间 AttendanceGroupDO attendanceGroupDO = groupMap.get(entry.getKey()); List userIds = groupUserMap.get(entry.getKey()); if (CollectionUtil.isEmpty(userIds)) { @@ -124,7 +130,10 @@ public class AttendanceStatisticsJob { attendancePunchRecordDO.setLatestPunchTime(shouldPunchTime.plusMinutes(attendanceOnTheDayDTO.getAfterPunchTime())); attendancePunchRecordDOList.add(attendancePunchRecordDO); } + stringRedisTemplate.opsForHash().put(key + time, userId, JSONUtil.toJsonStr(attendanceOnTheDayDTOS)); } + //设置缓存 2天 + stringRedisTemplate.expire(key + time, 2, TimeUnit.DAYS); } // -- 批量 attendancePunchRecordService.saveBatch(attendancePunchRecordDOList); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java index e0a8aff3..bf4224ab 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.module.system.service.attendance; -import cn.iocoder.yudao.module.system.controller.app.attendance.dto.*; -import cn.iocoder.yudao.module.system.controller.app.attendance.vo.*; +import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.*; +import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.*; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO; import cn.iocoder.yudao.module.system.service.attendance.punch.dto.AttendanceOnTheDayDTO; @@ -87,5 +87,5 @@ public interface AttendanceService { * 获取当前登录用户所属的考勤组以及是否具有管理员权限 * @return */ - AttendanceGroupSystemVO getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights(); + List getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights(); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java index f28d7fe3..9988dde4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java @@ -13,14 +13,15 @@ import cn.hutool.json.JSONUtil; import cn.iocoder.yudao.framework.common.Constants; import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.common.util.distance.GeoUtil; +import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.*; +import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.*; import cn.iocoder.yudao.module.system.controller.admin.punchrecord.vo.AttendancePunchRecordSaveReqVO; -import cn.iocoder.yudao.module.system.controller.app.attendance.dto.*; -import cn.iocoder.yudao.module.system.controller.app.attendance.vo.*; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshift.AttendanceGroupShiftDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.dal.mysql.attendance.group.AttendanceGroupMapper; import cn.iocoder.yudao.module.system.dal.mysql.attendance.punchrecord.AttendancePunchRecordMapper; import cn.iocoder.yudao.module.system.handler.PunchHandler; import cn.iocoder.yudao.module.system.service.attendance.group.AttendanceGroupService; @@ -77,6 +78,9 @@ public class AttendanceServiceImpl implements AttendanceService { @Resource private AdminUserService adminUserService; + @Resource + private AttendanceGroupMapper attendanceGroupMapper; + // 定义一些常量以提高代码的可读性和可维护性 /** @@ -715,13 +719,21 @@ public class AttendanceServiceImpl implements AttendanceService { } @Override - public AttendanceGroupSystemVO getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights() { + public List getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights() { Long userId = getLoginUserId(); - AttendanceGroupDO attendanceGroupDO = attendanceGroupService.getByUserId(userId); - if (attendanceGroupDO != null) { - return new AttendanceGroupSystemVO().setGroupId(attendanceGroupDO.getId()).setFlag(attendanceGroupDO.getUserId().equals(userId)); + List attendanceGroupSystemVOS = new ArrayList<>(); + List attendanceGroupDOS = attendanceGroupMapper.selectList(new LambdaQueryWrapper() + .eq(AttendanceGroupDO::getUserId, userId)); + if (CollectionUtil.isEmpty(attendanceGroupDOS)) { + return attendanceGroupSystemVOS; } - return null; + for (AttendanceGroupDO attendanceGroupDO : attendanceGroupDOS) { + AttendanceGroupSystemVO attendanceGroupSystemVO = new AttendanceGroupSystemVO(); + attendanceGroupSystemVO.setGroupId(attendanceGroupDO.getId()); + attendanceGroupSystemVO.setGroupName(attendanceGroupDO.getGroupName()); + attendanceGroupSystemVOS.add(attendanceGroupSystemVO); + } + return attendanceGroupSystemVOS; } /** diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java index 7f22be22..fd2b8c88 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java @@ -1,7 +1,6 @@ package cn.iocoder.yudao.module.system.service.attendance.fixed; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.map.MapUtil; import cn.iocoder.yudao.framework.common.Constants; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; @@ -9,8 +8,8 @@ import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedP import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedRespVO; import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.AttendanceGroupShiftVO; -import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendancePunchPageDTO; -import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchPageVO; +import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchPageDTO; +import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchPageVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.fixed.AttendanceFixedDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; import cn.iocoder.yudao.module.system.dal.mysql.attendance.fixed.AttendanceFixedMapper; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftServiceImpl.java index fd3790fd..cfb1ccd9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftServiceImpl.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.attendance.groupshift; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.LocalDateTimeUtil; +import cn.iocoder.yudao.framework.common.Constants; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; @@ -118,32 +119,49 @@ public class AttendanceGroupShiftServiceImpl implements AttendanceGroupShiftServ items = insertSpanDay(items); List oldItems = groupShiftItemMapper.selectList(new LambdaQueryWrapper() .eq(AttendanceGroupShiftItemDO::getKqAttendanceGroupShiftId, updateReqVO.getId())); + boolean flag = false; if (CollectionUtil.isEmpty(oldItems)) { groupShiftItemMapper.insertBatch(items); - return; - } - //新增 - List saveList = items.stream().filter(a -> a.getId() == null).collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(saveList)) { - for (AttendanceGroupShiftItemDO attendanceGroupShiftItemDO : saveList) { - attendanceGroupShiftItemDO.setKqAttendanceGroupShiftId(updateReqVO.getId()); + flag = true; + } else { + //新增 + List saveList = items.stream().filter(a -> a.getId() == null).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(saveList)) { + for (AttendanceGroupShiftItemDO attendanceGroupShiftItemDO : saveList) { + attendanceGroupShiftItemDO.setKqAttendanceGroupShiftId(updateReqVO.getId()); + } + groupShiftItemMapper.insertBatch(saveList); + flag = true; } - groupShiftItemMapper.insertBatch(saveList); + //修改 + List editList = items.stream().filter(a -> a.getId() != null).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(editList)) { + int num = 0; + for (AttendanceGroupShiftItemDO attendanceGroupShiftItemDO : editList) { + int i = groupShiftItemMapper.updateById(attendanceGroupShiftItemDO); + num += i; + } + flag = num > 0; + } + //删除 + // -- 需要删除的 - + List oldIds = oldItems.stream().map(AttendanceGroupShiftItemDO::getId).collect(Collectors.toList()); + List newIds = editList.stream().map(AttendanceGroupShiftItemDO::getId).collect(Collectors.toList()); + List delIds = new ArrayList<>(CollectionUtil.subtract(oldIds, newIds)); + if (!delIds.isEmpty()) { + groupShiftItemMapper.deleteBatchIds(delIds); + flag = true; + } + groupShiftMapper.updateById(attendanceGroupShiftDO); } - //修改 - List editList = items.stream().filter(a -> a.getId() != null).collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(editList)) { - groupShiftItemMapper.updateBatch(editList); + // -- 如果班次子表调整了 - 那么需要更新下明天和后天生成的数据 + if (flag) { + // -- 获取考勤组ids + + // TODO: 2024/6/5 如果有更新的话 - 那么需要调整 + // 查询这些班次 在哪里用到了 +// String key = Constants.ATTENDANCE + Constants.UNDERLINE + activationGroup.getId() + Constants.UNDERLINE; // + 时间 } - //删除 - // -- 需要删除的 - - List oldIds = oldItems.stream().map(AttendanceGroupShiftItemDO::getId).collect(Collectors.toList()); - List newIds = editList.stream().map(AttendanceGroupShiftItemDO::getId).collect(Collectors.toList()); - List delIds = new ArrayList<>(CollectionUtil.subtract(oldIds, newIds)); - if (!delIds.isEmpty()) { - groupShiftItemMapper.deleteBatchIds(delIds); - } - groupShiftMapper.updateById(attendanceGroupShiftDO); } @Override diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/punch/PunchService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/punch/PunchService.java index bfce3f3c..f2c747f8 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/punch/PunchService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/punch/PunchService.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.module.system.service.attendance.punch; -import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendancePunchPageDTO; -import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchPageVO; +import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchPageDTO; +import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchPageVO; /** * 打卡 Service 接口 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java index 04be0b63..8da75939 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java @@ -9,8 +9,8 @@ import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.AttendanceG import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingRespVO; import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingSaveReqVO; -import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendancePunchPageDTO; -import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchPageVO; +import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchPageDTO; +import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchPageVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.scheduling.AttendanceSchedulingDO; import cn.iocoder.yudao.module.system.dal.mysql.attendance.scheduling.AttendanceSchedulingMapper; From 76c23e976badf2876723da146bd65cdac6b58d25 Mon Sep 17 00:00:00 2001 From: aikai Date: Wed, 5 Jun 2024 17:39:42 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=80=83=E5=8B=A4=E7=BB=84=E8=BF=98?= =?UTF-8?q?=E6=9C=89=E4=BA=BA=E5=91=98=E4=B8=8D=E5=85=81=E8=AE=B8=E5=88=A0?= =?UTF-8?q?=E9=99=A4=20-=20=E8=80=83=E5=8B=A4=E7=BB=84=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yudao/module/system/enums/ErrorCodeConstants.java | 1 + .../attendance/group/AttendanceGroupServiceImpl.java | 7 +++++++ .../src/main/resources/mapper/user/AdminUserMapper.xml | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index 3e547a65..5c0b7be6 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -201,6 +201,7 @@ public interface ErrorCodeConstants { ErrorCode GROUP_SHIFT_IN_USE = new ErrorCode(1_003_014_000, "班次使用中不允许删除"); + ErrorCode THERE_ARE_STILL_PEOPLE_IN_THE_ATTENDANCE_GROUP_WHO_ARE_NOT_ALLOWED_TO_BE_DELETED = new ErrorCode(1_003_015_000, "考勤组还有人员不允许删除"); ErrorCode LOG_FORM_NOT_USE = new ErrorCode(1_009_010_004, "你不用使用该日志模板"); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java index 593bdca9..fff77200 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java @@ -22,6 +22,7 @@ import cn.iocoder.yudao.module.system.service.attendance.groupshiftitem.Attendan import cn.iocoder.yudao.module.system.service.attendance.punch.dto.AttendanceOnTheDayDTO; import cn.iocoder.yudao.module.system.service.attendance.punchrecord.AttendancePunchRecordService; import cn.iocoder.yudao.module.system.service.attendance.scheduling.AttendanceSchedulingService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -38,6 +39,7 @@ import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.GROUP_NOT_EXISTS; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.THERE_ARE_STILL_PEOPLE_IN_THE_ATTENDANCE_GROUP_WHO_ARE_NOT_ALLOWED_TO_BE_DELETED; /** * 考勤组 Service 实现类 @@ -89,6 +91,11 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService { public void deleteGroup(Long id) { // 校验存在 validateGroupExists(id); + // - 判断考勤组内是否存在人员 - 如果有的话提示不能删除 + int num = Math.toIntExact(attendanceGroupUserMapper.selectCount(new LambdaQueryWrapper().eq(AttendanceGroupUserDO::getAttendanceGroupId, id))); + if (num > 0) { + throw exception(THERE_ARE_STILL_PEOPLE_IN_THE_ATTENDANCE_GROUP_WHO_ARE_NOT_ALLOWED_TO_BE_DELETED); + } // 删除 groupMapper.deleteById(id); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml index 57d70435..bf5fed4c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/AdminUserMapper.xml @@ -52,6 +52,6 @@ #{deptId} - and not exists(select id from kq_attendance_group_user where user_id = a.id and attendance_group_id != #{groupId}) + and not exists(select id from kq_attendance_group_user where user_id = a.id and attendance_group_id != #{groupId} and deleted = 0) \ No newline at end of file From f477e9e0e53e987710d3e0b19e9d2c16a7d6a94e Mon Sep 17 00:00:00 2001 From: aikai Date: Wed, 5 Jun 2024 21:29:14 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=80=83=E5=8B=A4?= =?UTF-8?q?=E7=BB=84=E7=8F=AD=E6=AC=A1/=E6=9B=B4=E6=8D=A2=E8=80=83?= =?UTF-8?q?=E5=8B=A4=E7=8F=AD=E6=AC=A1=E7=AB=8B=E5=8D=B3=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AttendanceGroupShiftController.java | 16 +++++++- .../fixed/AttendanceFixedMapper.java | 14 ++++++- .../AttendanceSchedulingMapper.java | 15 +++++++- .../fixed/AttendanceFixedService.java | 8 ++++ .../fixed/AttendanceFixedServiceImpl.java | 5 +++ .../group/AttendanceGroupService.java | 15 ++++++++ .../group/AttendanceGroupServiceImpl.java | 23 ++++++++++++ .../AttendanceGroupShiftService.java | 2 +- .../AttendanceGroupShiftServiceImpl.java | 37 +++++++++++++------ .../AttendanceSchedulingService.java | 7 ++++ .../AttendanceSchedulingServiceImpl.java | 9 ++++- .../mapper/fixed/AttendanceFixedMapper.xml | 7 ++++ .../scheduling/AttendanceSchedulingMapper.xml | 6 +++ 13 files changed, 143 insertions(+), 21 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/groupshift/AttendanceGroupShiftController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/groupshift/AttendanceGroupShiftController.java index 663e57a7..c85b2f1f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/groupshift/AttendanceGroupShiftController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/groupshift/AttendanceGroupShiftController.java @@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.AttendanceG import cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.vo.AttendanceGroupShiftItemSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshift.AttendanceGroupShiftDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO; +import cn.iocoder.yudao.module.system.service.attendance.group.AttendanceGroupService; import cn.iocoder.yudao.module.system.service.attendance.groupshift.AttendanceGroupShiftService; import cn.iocoder.yudao.module.system.service.attendance.groupshiftitem.AttendanceGroupShiftItemService; import io.swagger.v3.oas.annotations.Operation; @@ -39,6 +40,9 @@ public class AttendanceGroupShiftController { @Resource private AttendanceGroupShiftService groupShiftService; + @Resource + private AttendanceGroupService attendanceGroupService; + @Resource private AttendanceGroupShiftItemService groupShiftItemService; @@ -49,11 +53,19 @@ public class AttendanceGroupShiftController { return success(groupShiftService.createGroupShift(createReqVO)); } + // TODO: 2024/6/5 如果返回的有值 (判断不是空数组) - 那么前端 跳出提示框 (该班次已有考勤组在使用请选择更新方式) 下面两个按钮 立即生效 和 (推荐)次日生效 @PutMapping("/update") @Operation(summary = "更新考勤组班次") @PreAuthorize("@ss.hasPermission('attendance:group-shift:update')") - public CommonResult updateGroupShift(@Valid @RequestBody AttendanceGroupShiftSaveReqVO updateReqVO) { - groupShiftService.updateGroupShift(updateReqVO); + public CommonResult> updateGroupShift(@Valid @RequestBody AttendanceGroupShiftSaveReqVO updateReqVO) { + List groupIds = groupShiftService.updateGroupShift(updateReqVO); + return success(groupIds); + } + + @PostMapping("/effectiveImmediately") + @Operation(summary = "更换考勤班次立即生效") + public CommonResult effectiveImmediately(@RequestBody List groupIds) { + attendanceGroupService.effectiveImmediately(groupIds); return success(true); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/fixed/AttendanceFixedMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/fixed/AttendanceFixedMapper.java index 12d06fae..a5a76009 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/fixed/AttendanceFixedMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/fixed/AttendanceFixedMapper.java @@ -1,11 +1,14 @@ package cn.iocoder.yudao.module.system.dal.mysql.attendance.fixed; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.fixed.AttendanceFixedDO; import org.apache.ibatis.annotations.Mapper; -import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.*; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 固定班制考勤设置 Mapper @@ -24,4 +27,11 @@ public interface AttendanceFixedMapper extends BaseMapperX { .orderByDesc(AttendanceFixedDO::getId)); } + /** + * 获取使用的考勤组ids + * + * @param shiftId + * @return + */ + List getUseGroupIds(@Param("shiftId") Long shiftId); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/scheduling/AttendanceSchedulingMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/scheduling/AttendanceSchedulingMapper.java index 3fb442a0..3f34ab91 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/scheduling/AttendanceSchedulingMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/scheduling/AttendanceSchedulingMapper.java @@ -1,13 +1,15 @@ package cn.iocoder.yudao.module.system.dal.mysql.attendance.scheduling; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.scheduling.AttendanceSchedulingDO; import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; -import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.*; +import org.apache.ibatis.annotations.Param; +import java.util.List; import java.util.Map; /** @@ -27,6 +29,15 @@ public interface AttendanceSchedulingMapper extends BaseMapperX countGroupId(); + + /** + * 获取使用的考勤组ids + * + * @param shiftId + * @return + */ + List getUseGroupIds(@Param("shiftId") Long shiftId); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedService.java index 1ff4ebd6..66a717b6 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedService.java @@ -84,4 +84,12 @@ public interface AttendanceFixedService { * @return */ List getListByGroupId(Long attendanceGroupId); + + /** + * 查询使用的考勤组ids + * + * @param shiftId + * @return + */ + List getUseGroupIds(Long shiftId); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java index fd2b8c88..12dbe9a2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/fixed/AttendanceFixedServiceImpl.java @@ -182,6 +182,11 @@ public class AttendanceFixedServiceImpl implements AttendanceFixedService, Punch return respVOS; } + @Override + public List getUseGroupIds(Long shiftId) { + return attendanceFixedMapper.getUseGroupIds(shiftId); + } + @Override public AttendancePunchPageVO getPunchPage(AttendancePunchPageDTO dto) { AttendancePunchPageVO vo = new AttendancePunchPageVO(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupService.java index 376bbcc0..80dbbbef 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupService.java @@ -69,4 +69,19 @@ public interface AttendanceGroupService { * @return */ List getAll(); + + /** + * 获取使用班次id的考勤组ids + * + * @param shiftId + * @return + */ + List getUseGroupIds(Long shiftId); + + /** + * 立即生效 + * + * @param groupIds + */ + void effectiveImmediately(List groupIds); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java index fff77200..e8320660 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java @@ -24,6 +24,7 @@ import cn.iocoder.yudao.module.system.service.attendance.punchrecord.AttendanceP import cn.iocoder.yudao.module.system.service.attendance.scheduling.AttendanceSchedulingService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.context.annotation.Lazy; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -67,6 +68,8 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService { private AttendanceFixedService attendanceFixedService; @Resource private AttendanceSchedulingService attendanceSchedulingService; + @Resource + private StringRedisTemplate stringRedisTemplate; @Override @@ -194,6 +197,26 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService { return attendanceGroupMapper.selectList(); } + @Override + public List getUseGroupIds(Long shiftId) { + List ids = new ArrayList<>(); + List fixedGroupIds = attendanceFixedService.getUseGroupIds(shiftId); + ids.addAll(fixedGroupIds); + List schedulingGroupIds = attendanceSchedulingService.getUseGroupIds(shiftId); + ids.addAll(schedulingGroupIds); + return ids; + } + + @Override + public void effectiveImmediately(List groupIds) { + String time = LocalDateTime.now().format(Constants.REPO_DATE_FORMAT); + // TODO: 2024/6/5 删除当天redis中考勤记录 - 重新计算新的考勤记录到redis 和 数据库中 + for (Long groupId : groupIds) { + String key = Constants.ATTENDANCE + Constants.UNDERLINE + groupId + Constants.UNDERLINE; // + 时间 + stringRedisTemplate.delete(key + time); + } + } + private Map getAttendanceGroupShiftIdGroupByGroup(List attendanceGroupDOS, LocalDateTime localDateTime) { Map map = new HashMap<>(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftService.java index 6863982b..d222ef15 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftService.java @@ -29,7 +29,7 @@ public interface AttendanceGroupShiftService { * * @param updateReqVO 更新信息 */ - void updateGroupShift(@Valid AttendanceGroupShiftSaveReqVO updateReqVO); + List updateGroupShift(@Valid AttendanceGroupShiftSaveReqVO updateReqVO); /** * 删除考勤组班次 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftServiceImpl.java index cfb1ccd9..ee2cb7fb 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshift/AttendanceGroupShiftServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.system.service.attendance.groupshift; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.iocoder.yudao.framework.common.Constants; @@ -17,7 +18,9 @@ import cn.iocoder.yudao.module.system.dal.mysql.attendance.fixed.AttendanceFixed import cn.iocoder.yudao.module.system.dal.mysql.attendance.groupshift.AttendanceGroupShiftMapper; import cn.iocoder.yudao.module.system.dal.mysql.attendance.groupshiftitem.AttendanceGroupShiftItemMapper; import cn.iocoder.yudao.module.system.dal.mysql.attendance.scheduling.AttendanceSchedulingMapper; +import cn.iocoder.yudao.module.system.service.attendance.group.AttendanceGroupService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -48,6 +51,8 @@ public class AttendanceGroupShiftServiceImpl implements AttendanceGroupShiftServ private AttendanceFixedMapper attendanceFixedMapper; @Resource private AttendanceSchedulingMapper attendanceSchedulingMapper; + @Resource + private AttendanceGroupService attendanceGroupService; @Override @@ -109,7 +114,7 @@ public class AttendanceGroupShiftServiceImpl implements AttendanceGroupShiftServ @Override @Transactional(rollbackFor = Exception.class) - public void updateGroupShift(AttendanceGroupShiftSaveReqVO updateReqVO) { + public List updateGroupShift(AttendanceGroupShiftSaveReqVO updateReqVO) { // 校验存在 validateGroupShiftExists(updateReqVO.getId()); // 更新 @@ -119,11 +124,18 @@ public class AttendanceGroupShiftServiceImpl implements AttendanceGroupShiftServ items = insertSpanDay(items); List oldItems = groupShiftItemMapper.selectList(new LambdaQueryWrapper() .eq(AttendanceGroupShiftItemDO::getKqAttendanceGroupShiftId, updateReqVO.getId())); + + // -- 查询下有没有考勤组在用这个班次 - 如果有的话就要考虑更新 是立即更新 还是 次日更新 + List useGroupIds = attendanceGroupService.getUseGroupIds(updateReqVO.getId()); + // TODO: 2024/6/5 如果考勤组没有使用班次 则不需要更新 + + boolean flag = false; if (CollectionUtil.isEmpty(oldItems)) { groupShiftItemMapper.insertBatch(items); flag = true; } else { + Map map = oldItems.stream().collect(Collectors.toMap(AttendanceGroupShiftItemDO::getId, a -> a)); //新增 List saveList = items.stream().filter(a -> a.getId() == null).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(saveList)) { @@ -135,13 +147,17 @@ public class AttendanceGroupShiftServiceImpl implements AttendanceGroupShiftServ } //修改 List editList = items.stream().filter(a -> a.getId() != null).collect(Collectors.toList()); + //先查询一手 - 完了后判断下和修改的值有什么不同 if (CollectionUtil.isNotEmpty(editList)) { - int num = 0; + groupShiftItemMapper.updateBatch(editList); for (AttendanceGroupShiftItemDO attendanceGroupShiftItemDO : editList) { - int i = groupShiftItemMapper.updateById(attendanceGroupShiftItemDO); - num += i; + AttendanceGroupShiftItemDO item = map.get(attendanceGroupShiftItemDO.getId()); + boolean eqFlag = BeanUtil.isCommonFieldsEqual(attendanceGroupShiftItemDO, item, "createTime", "updateTime", "creator", "updater"); + if (!eqFlag) { + flag = true; + break; + } } - flag = num > 0; } //删除 // -- 需要删除的 - @@ -154,14 +170,11 @@ public class AttendanceGroupShiftServiceImpl implements AttendanceGroupShiftServ } groupShiftMapper.updateById(attendanceGroupShiftDO); } - // -- 如果班次子表调整了 - 那么需要更新下明天和后天生成的数据 - if (flag) { - // -- 获取考勤组ids - - // TODO: 2024/6/5 如果有更新的话 - 那么需要调整 - // 查询这些班次 在哪里用到了 -// String key = Constants.ATTENDANCE + Constants.UNDERLINE + activationGroup.getId() + Constants.UNDERLINE; // + 时间 + // -- 如果班次子表调整了 - 并且有考勤组在使用 - 那么需要更新下明天和后天生成的数据 + if (flag && CollectionUtil.isNotEmpty(useGroupIds)) { + return useGroupIds; } + return Collections.emptyList(); } @Override diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingService.java index c8fc29fa..3a0534ce 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingService.java @@ -92,4 +92,11 @@ public interface AttendanceSchedulingService { * @return */ List getListByGroupId(Long attendanceGroupId); + + /** + * 获取使用的考勤组ids + * @param shiftId + * @return + */ + List getUseGroupIds(Long shiftId); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java index 8da75939..2d90dd76 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/scheduling/AttendanceSchedulingServiceImpl.java @@ -5,12 +5,12 @@ import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.Constants; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchPageDTO; +import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchPageVO; import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.AttendanceGroupShiftVO; import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingRespVO; import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingSaveReqVO; -import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchPageDTO; -import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchPageVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.scheduling.AttendanceSchedulingDO; import cn.iocoder.yudao.module.system.dal.mysql.attendance.scheduling.AttendanceSchedulingMapper; @@ -177,6 +177,11 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ return respVOS; } + @Override + public List getUseGroupIds(Long shiftId) { + return schedulingMapper.getUseGroupIds(shiftId); + } + @Override public AttendancePunchPageVO getPunchPage(AttendancePunchPageDTO dto) { AttendancePunchPageVO vo = new AttendancePunchPageVO(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/fixed/AttendanceFixedMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/fixed/AttendanceFixedMapper.xml index 20605f0b..7b0a37f0 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/fixed/AttendanceFixedMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/fixed/AttendanceFixedMapper.xml @@ -9,4 +9,11 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/scheduling/AttendanceSchedulingMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/scheduling/AttendanceSchedulingMapper.xml index af09595b..1292ce1f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/scheduling/AttendanceSchedulingMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/scheduling/AttendanceSchedulingMapper.xml @@ -16,4 +16,10 @@ from kq_attendance_scheduling group by attendance_group_id + \ No newline at end of file