diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/attendance/vo/AttendancePunchRecordVO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/attendance/vo/AttendancePunchRecordVO.java index 0ed3b125..702d6a27 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/attendance/vo/AttendancePunchRecordVO.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/attendance/vo/AttendancePunchRecordVO.java @@ -10,13 +10,13 @@ import java.time.LocalDateTime; * @author 艾楷 */ @Data -public class AttendancePunchRecordVO { +public class AttendancePunchRecordVO { /** * 编号 */ private Long id; /** - * 考勤组管理员id + * 考勤用户id */ private Long userId; /** @@ -135,4 +135,4 @@ public class AttendancePunchRecordVO { * 请假json对象 */ private String leaveJson; -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/AttendanceGroupController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/AttendanceGroupController.java index b6956d2d..d3ef5404 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/AttendanceGroupController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/AttendanceGroupController.java @@ -1,33 +1,33 @@ package cn.iocoder.yudao.module.system.controller.admin.group; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.annotation.security.PermitAll; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - +import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.iocoder.yudao.module.system.controller.admin.group.vo.*; +import cn.iocoder.yudao.module.system.controller.admin.group.vo.AttendanceGroupPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.group.vo.AttendanceGroupRespVO; +import cn.iocoder.yudao.module.system.controller.admin.group.vo.AttendanceGroupSaveReqVO; +import cn.iocoder.yudao.module.system.controller.admin.groupsystem.vo.AttendanceGroupSystemRespVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; import cn.iocoder.yudao.module.system.service.attendance.group.AttendanceGroupService; +import cn.iocoder.yudao.module.system.service.attendance.groupsystem.AttendanceGroupSystemService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 考勤组") @RestController @@ -37,6 +37,8 @@ public class AttendanceGroupController { @Resource private AttendanceGroupService groupService; + @Resource + private AttendanceGroupSystemService groupSystemService; @PostMapping("/create") @Operation(summary = "创建考勤组") @@ -68,7 +70,10 @@ public class AttendanceGroupController { @PreAuthorize("@ss.hasPermission('attendance:group:query')") public CommonResult getGroup(@RequestParam("id") Long id) { AttendanceGroupDO group = groupService.getGroup(id); - return success(BeanUtils.toBean(group, AttendanceGroupRespVO.class)); + List groupSystems = groupSystemService.getGroupSystemVoByGroupId(id); + AttendanceGroupRespVO vo = BeanUtils.toBean(group, AttendanceGroupRespVO.class); + vo.setGroupSystems(groupSystems); + return success(vo); } @@ -93,12 +98,12 @@ public class AttendanceGroupController { @PreAuthorize("@ss.hasPermission('attendance:group:export')") @OperateLog(type = EXPORT) public void exportGroupExcel(@Valid AttendanceGroupPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = groupService.getGroupPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "考勤组.xls", "数据", AttendanceGroupRespVO.class, - BeanUtils.toBean(list, AttendanceGroupRespVO.class)); + BeanUtils.toBean(list, AttendanceGroupRespVO.class)); } -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupPageReqVO.java index cafa7a65..9b3a05b1 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupPageReqVO.java @@ -1,12 +1,14 @@ package cn.iocoder.yudao.module.system.controller.admin.group.vo; -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + import java.time.LocalDateTime; +import java.util.List; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -16,8 +18,8 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @ToString(callSuper = true) public class AttendanceGroupPageReqVO extends PageParam { - @Schema(description = "考勤组管理员id", example = "15633") - private Long userId; + @Schema(description = "考勤组管理员ids", example = "15633") + private List userIds; @Schema(description = "群组名称", example = "李四") private String groupName; @@ -50,4 +52,4 @@ public class AttendanceGroupPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupRespVO.java index b51e07d3..488c2a04 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupRespVO.java @@ -1,12 +1,13 @@ package cn.iocoder.yudao.module.system.controller.admin.group.vo; +import cn.iocoder.yudao.module.system.controller.admin.groupsystem.vo.AttendanceGroupSystemRespVO; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; +import lombok.Data; + import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; +import java.util.List; @Schema(description = "管理后台 - 考勤组 Response VO") @Data @@ -17,9 +18,13 @@ public class AttendanceGroupRespVO { @ExcelProperty("编号") private Long id; - @Schema(description = "考勤组管理员id", example = "15633") - @ExcelProperty("考勤组管理员id") - private Long userId; + @Schema(description = "考勤组管理员列表", example = "15633") + @ExcelProperty("考勤组管理员列表") + private List groupSystems; + + @Schema(description = "管理员名称列表逗号隔开", example = "李四") + @ExcelProperty("管理员名称列表逗号隔开") + private String systemNames; @Schema(description = "群组名称", example = "李四") @ExcelProperty("群组名称") @@ -62,4 +67,4 @@ public class AttendanceGroupRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupSaveReqVO.java index dde5f75a..fe4f2ee4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/group/vo/AttendanceGroupSaveReqVO.java @@ -1,11 +1,7 @@ package cn.iocoder.yudao.module.system.controller.admin.group.vo; -import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; +import lombok.Data; @Schema(description = "管理后台 - 考勤组新增/修改 Request VO") @Data @@ -14,8 +10,8 @@ public class AttendanceGroupSaveReqVO { @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22881") private Long id; - @Schema(description = "考勤组管理员id", example = "15633") - private Long userId; + @Schema(description = "考勤组管理员ids", example = "15633") + private String userIds; @Schema(description = "群组名称", example = "李四") private String groupName; @@ -44,4 +40,4 @@ public class AttendanceGroupSaveReqVO { @Schema(description = "节假日自动排休 0否 1是") private Integer autoHolidaysFlag; -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/groupsystem/vo/AttendanceGroupSystemRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/groupsystem/vo/AttendanceGroupSystemRespVO.java new file mode 100644 index 00000000..82e3848e --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/groupsystem/vo/AttendanceGroupSystemRespVO.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.system.controller.admin.groupsystem.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class AttendanceGroupSystemRespVO { + @Schema(description = "id") + private Long id; + + @Schema(description = "考勤组管理员id") + private Long userId; + + @Schema(description = "考勤组管理员名称") + private String nickname; + + @Schema(description = "考勤组id") + private Long attendanceGroupId; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordPageReqVO.java index d0fe2892..34872481 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordPageReqVO.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.system.controller.admin.punchrecord.vo; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -17,7 +18,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @ToString(callSuper = true) public class AttendancePunchRecordPageReqVO extends PageParam { - @Schema(description = "考勤组管理员id", example = "11409") + @Schema(description = "考勤用户id", example = "11409") private Long userId; @Schema(description = "考勤组id", example = "22293") @@ -77,4 +78,4 @@ public class AttendancePunchRecordPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordRespVO.java index 19398066..417b8d5a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordRespVO.java @@ -17,8 +17,8 @@ public class AttendancePunchRecordRespVO { @ExcelProperty("编号") private Long id; - @Schema(description = "考勤组管理员id", example = "11409") - @ExcelProperty("考勤组管理员id") + @Schema(description = "考勤用户id", example = "11409") + @ExcelProperty("考勤用户id") private Long userId; @Schema(description = "考勤组id", example = "22293") @@ -103,4 +103,4 @@ public class AttendancePunchRecordRespVO { @Schema(description = "班次名称") @ExcelProperty("班次名称") private String attendanceGroupShiftName; -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordSaveReqVO.java index de2a6dec..096c8a23 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordSaveReqVO.java @@ -1,12 +1,9 @@ package cn.iocoder.yudao.module.system.controller.admin.punchrecord.vo; -import cn.hutool.core.date.LocalDateTimeUtil; -import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; -import java.time.temporal.ChronoUnit; @Schema(description = "管理后台 - 用户打卡记录新增/修改 Request VO") @Data @@ -14,7 +11,7 @@ public class AttendancePunchRecordSaveReqVO { @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "65") private Long id; - @Schema(description = "考勤组管理员id", example = "11409") + @Schema(description = "考勤用户id", example = "11409") private Long userId; @Schema(description = "部门id", example = "11409") @@ -102,4 +99,4 @@ public class AttendancePunchRecordSaveReqVO { return null; } -} \ No newline at end of file +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java index 46afbbc2..8d013939 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java @@ -65,6 +65,17 @@ public class LogStatisticsController { return success(logStatisticsService.getStatisticsGroupByUser(dto)); } + @GetMapping("/export-excel-group-by-user") + @Operation(summary = "导出日志统计 Excel") + @OperateLog(type = EXPORT) + public void exportLogGroupByUserExcel(@ModelAttribute LogStatisticsDetailsListGroupByUserDTO dto, + HttpServletResponse response) throws IOException { + List list = logStatisticsService.getStatisticsGroupByUser(dto); + // 导出 Excel + ExcelUtils.write(response, "日志统计.xls", "日志统计", LogStatisticsDetailsListGroupByUserVO.class, + BeanUtils.toBean(list, LogStatisticsDetailsListGroupByUserVO.class)); + } + @GetMapping("/getNeedWrite") @Operation(summary = "获取需要填写的") public CommonResult> getNeedWrite() { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statisticsrecord/LogStatisticsDetailsListGroupByUserVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statisticsrecord/LogStatisticsDetailsListGroupByUserVO.java index c24abef9..00795f93 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statisticsrecord/LogStatisticsDetailsListGroupByUserVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statisticsrecord/LogStatisticsDetailsListGroupByUserVO.java @@ -1,29 +1,42 @@ package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statisticsrecord; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Data +@ExcelIgnoreUnannotated public class LogStatisticsDetailsListGroupByUserVO { @Schema(description = "姓名") + @ExcelProperty("姓名") private String nickName; @Schema(description = "部门名称") + @ExcelProperty("部门名称") private String deptName; @Schema(description = "日志类型") + @ExcelProperty(value = "日志类型", converter = DictConvert.class) + @DictFormat("work_log_type") private Integer type; @Schema(description = "应提交") + @ExcelProperty("应提交") private Integer should; @Schema(description = "按时交") + @ExcelProperty("按时交") private Integer onTime; @Schema(description = "迟交") + @ExcelProperty("迟交") private Integer late; @Schema(description = "未提交") + @ExcelProperty("未提交") private Integer notYet; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/group/AttendanceGroupDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/group/AttendanceGroupDO.java index bccab8ec..6ea8c5d9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/group/AttendanceGroupDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/group/AttendanceGroupDO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.dal.dataobject.attendance.group; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; @@ -31,10 +32,6 @@ public class AttendanceGroupDO extends BaseDO { */ @TableId private Long id; - /** - * 考勤组管理员id - */ - private Long userId; /** * 群组名称 */ @@ -72,6 +69,11 @@ public class AttendanceGroupDO extends BaseDO { */ private Integer autoHolidaysFlag; + /** + * 管理员名称列表逗号隔开 + */ + @TableField(exist = false) + private String systemNames; public static String getCodeByType(Integer type) { if (type == 1) { @@ -81,4 +83,4 @@ public class AttendanceGroupDO extends BaseDO { } } -} \ 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/dataobject/attendance/groupsystem/AttendanceGroupSystemDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/groupsystem/AttendanceGroupSystemDO.java new file mode 100644 index 00000000..b88a718a --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/groupsystem/AttendanceGroupSystemDO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupsystem; + +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 + * + * @author 艾楷 + */ +@TableName("kq_attendance_group_system") +@KeySequence("kq_attendance_group_system_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AttendanceGroupSystemDO extends BaseDO { + /** + * 编号 + */ + @TableId + private Long id; + /** + * 考勤组管理员id + */ + private Long userId; + /** + * 考勤组id + */ + private Long attendanceGroupId; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/punchrecord/AttendancePunchRecordDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/punchrecord/AttendancePunchRecordDO.java index e1d7dc68..623b5f1b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/punchrecord/AttendancePunchRecordDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/punchrecord/AttendancePunchRecordDO.java @@ -30,7 +30,7 @@ public class AttendancePunchRecordDO extends BaseDO { @TableId private Long id; /** - * 考勤组管理员id + * 考勤用户id */ private Long userId; /** diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/group/AttendanceGroupMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/group/AttendanceGroupMapper.java index 9fe48147..86303756 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/group/AttendanceGroupMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/group/AttendanceGroupMapper.java @@ -5,6 +5,8 @@ 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.group.vo.AttendanceGroupPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -20,7 +22,6 @@ public interface AttendanceGroupMapper extends BaseMapperX { default PageResult selectPage(AttendanceGroupPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(AttendanceGroupDO::getUserId, reqVO.getUserId()) .likeIfPresent(AttendanceGroupDO::getGroupName, reqVO.getGroupName()) .eqIfPresent(AttendanceGroupDO::getType, reqVO.getType()) .eqIfPresent(AttendanceGroupDO::getPunchType, reqVO.getPunchType()) @@ -39,4 +40,13 @@ public interface AttendanceGroupMapper extends BaseMapperX { * @return */ List getByUserId(@Param("userId") Long userId); -} \ No newline at end of file + + /** + * 分页列表 + * + * @param vo + * @param page + * @return + */ + IPage selectPageList(@Param("vo") AttendanceGroupPageReqVO vo, @Param("page") Page page); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/groupsystem/AttendanceGroupSystemMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/groupsystem/AttendanceGroupSystemMapper.java new file mode 100644 index 00000000..773beec2 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/groupsystem/AttendanceGroupSystemMapper.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.system.dal.mysql.attendance.groupsystem; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.system.controller.admin.groupsystem.vo.AttendanceGroupSystemRespVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupsystem.AttendanceGroupSystemDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 考勤组 Mapper + * + * @author 艾楷 + */ +@Mapper +public interface AttendanceGroupSystemMapper extends BaseMapperX { + /** + * 根据考勤组id查询考勤组管理员 + * + * @param groupId + * @return + */ + List getGroupSystemVoByGroupId(@Param("groupId") Long groupId); + + /** + * 获取用户管理的考勤组 + * + * @param userId + * @return + */ + List getGroupSystemByUserId(@Param("userId") Long userId); +} 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 82529c59..765cb6ed 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 @@ -30,6 +30,7 @@ import cn.iocoder.yudao.module.system.handler.PunchHandler; 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 cn.iocoder.yudao.module.system.service.attendance.groupsystem.AttendanceGroupSystemService; import cn.iocoder.yudao.module.system.service.attendance.groupuser.AttendanceGroupUserService; import cn.iocoder.yudao.module.system.service.attendance.punch.PunchService; import cn.iocoder.yudao.module.system.service.attendance.punch.dto.AttendanceOnTheDayDTO; @@ -90,6 +91,8 @@ public class AttendanceServiceImpl implements AttendanceService { @Resource private AttendanceGroupMapper attendanceGroupMapper; @Resource + private AttendanceGroupSystemService attendanceGroupSystemService; + @Resource private AttendanceGroupUserService attendanceGroupUserService; @Resource private PostMapper postMapper; @@ -865,8 +868,7 @@ public class AttendanceServiceImpl implements AttendanceService { public List getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights(Boolean allFlag) { Long userId = getLoginUserId(); List attendanceGroupSystemVOS = new ArrayList<>(); - List attendanceGroupDOS = attendanceGroupMapper.selectList(new LambdaQueryWrapper() - .eq(!allFlag, AttendanceGroupDO::getUserId, userId)); + List attendanceGroupDOS = attendanceGroupSystemService.getGroupSystemByUserId(userId); if (CollectionUtil.isEmpty(attendanceGroupDOS)) { return attendanceGroupSystemVOS; } 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 d57f7477..554f97d1 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 @@ -1,42 +1,26 @@ package cn.iocoder.yudao.module.system.service.attendance.group; -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.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; +import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; import cn.iocoder.yudao.module.system.controller.admin.group.vo.AttendanceGroupPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.group.vo.AttendanceGroupSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.assets.AssetsDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; -import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupuser.AttendanceGroupUserDO; -import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; import cn.iocoder.yudao.module.system.dal.mysql.attendance.group.AttendanceGroupMapper; import cn.iocoder.yudao.module.system.dal.mysql.attendance.groupuser.AttendanceGroupUserMapper; -import cn.iocoder.yudao.module.system.service.attendance.AttendanceService; import cn.iocoder.yudao.module.system.service.attendance.fixed.AttendanceFixedService; -import cn.iocoder.yudao.module.system.service.attendance.groupshiftitem.AttendanceGroupShiftItemService; -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.groupsystem.AttendanceGroupSystemService; 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 com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.temporal.ChronoUnit; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; -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; @@ -54,27 +38,24 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService { @Resource private AttendanceGroupMapper groupMapper; @Resource - private AttendancePunchRecordService attendancePunchRecordService; - @Resource private AttendanceGroupMapper attendanceGroupMapper; @Resource private AttendanceGroupUserMapper attendanceGroupUserMapper; @Resource - private AttendanceGroupShiftItemService attendanceGroupShiftItemService; - @Resource - @Lazy // 避免依赖循环 - private AttendanceService attendanceService; - @Resource private AttendanceFixedService attendanceFixedService; @Resource private AttendanceSchedulingService attendanceSchedulingService; + @Resource + private AttendanceGroupSystemService attendanceGroupSystemService; @Override public Long createGroup(AttendanceGroupSaveReqVO createReqVO) { - // 插入 AttendanceGroupDO group = BeanUtils.toBean(createReqVO, AttendanceGroupDO.class); groupMapper.insert(group); + //把考勤组用户ids拿出来 + // 插入 + attendanceGroupSystemService.batchCreateOrUpdate(createReqVO.getUserIds(), group.getId()); // 返回 return group.getId(); } @@ -86,6 +67,8 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService { // 更新 AttendanceGroupDO updateObj = BeanUtils.toBean(updateReqVO, AttendanceGroupDO.class); groupMapper.updateById(updateObj); + // 插入 + attendanceGroupSystemService.batchCreateOrUpdate(updateReqVO.getUserIds(), updateReqVO.getId()); } @Override @@ -99,6 +82,7 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService { } // 删除 groupMapper.deleteById(id); + attendanceGroupSystemService.delByGroupId(id); } private void validateGroupExists(Long id) { @@ -114,7 +98,8 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService { @Override public PageResult getGroupPage(AttendanceGroupPageReqVO pageReqVO) { - return groupMapper.selectPage(pageReqVO); + IPage page = groupMapper.selectPageList(pageReqVO, MyBatisUtils.buildPage(pageReqVO)); + return new PageResult<>(page.getRecords(), page.getTotal()); } @Override @@ -141,4 +126,4 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService { return ids; } -} \ 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/groupsystem/AttendanceGroupSystemService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupsystem/AttendanceGroupSystemService.java new file mode 100644 index 00000000..c121543a --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupsystem/AttendanceGroupSystemService.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.system.service.attendance.groupsystem; + +import cn.iocoder.yudao.module.system.controller.admin.groupsystem.vo.AttendanceGroupSystemRespVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupsystem.AttendanceGroupSystemDO; + +import java.util.List; + +/** + * 考勤组管理员表 Service 接口 + * + * @author 艾楷 + */ +public interface AttendanceGroupSystemService { + /** + * 批量新增/修改考勤组管理员 + * + * @param userIds + * @param groupId + */ + void batchCreateOrUpdate(String userIds, Long groupId); + + /** + * 根据考勤组id获取考勤组管理员 + * + * @param groupId + * @return + */ + List getGroupSystemByGroupId(Long groupId); + + /** + * 根据考勤组id删除 + * + * @param groupId + */ + void delByGroupId(Long groupId); + + /** + * 根据考勤组id获取考勤管理员 + * + * @param groupId + * @return + */ + List getGroupSystemVoByGroupId(Long groupId); + + /** + * 获取用户管理的考勤组 + * + * @param userId + * @return + */ + List getGroupSystemByUserId(Long userId); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupsystem/AttendanceGroupSystemServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupsystem/AttendanceGroupSystemServiceImpl.java new file mode 100644 index 00000000..b964c14f --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupsystem/AttendanceGroupSystemServiceImpl.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.system.service.attendance.groupsystem; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.module.system.controller.admin.groupsystem.vo.AttendanceGroupSystemRespVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupsystem.AttendanceGroupSystemDO; +import cn.iocoder.yudao.module.system.dal.mysql.attendance.groupsystem.AttendanceGroupSystemMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 考勤组管理员 实现类 + */ +@Service +@Slf4j +public class AttendanceGroupSystemServiceImpl implements AttendanceGroupSystemService { + + @Resource + private AttendanceGroupSystemMapper attendanceGroupSystemMapper; + + @Override + public void batchCreateOrUpdate(String userIds, Long groupId) { + if (StrUtil.isEmpty(userIds)) { + attendanceGroupSystemMapper.delete(new LambdaQueryWrapper() + .eq(AttendanceGroupSystemDO::getAttendanceGroupId, groupId)); + return; + } + + List ids = Arrays.stream(userIds.split(",")).map(Long::valueOf).collect(Collectors.toList()); + List list = this.getGroupSystemByGroupId(groupId); + if (list.isEmpty()) { + this.saveList(ids, groupId); + return; + } + List oldIds = list.stream().map(AttendanceGroupSystemDO::getUserId).collect(Collectors.toList()); + List newIds = new ArrayList<>(CollectionUtil.subtract(ids, oldIds)); + List delIds = new ArrayList<>(CollectionUtil.subtract(oldIds, ids)); + + if (!newIds.isEmpty()) { + this.saveList(newIds, groupId); + } + if (!delIds.isEmpty()) { + attendanceGroupSystemMapper.delete(new LambdaQueryWrapper() + .eq(AttendanceGroupSystemDO::getAttendanceGroupId, groupId) + .in(AttendanceGroupSystemDO::getUserId, delIds)); + } + } + + private void saveList(List userIds, Long groupId) { + List saveList = new ArrayList<>(); + for (Long id : userIds) { + AttendanceGroupSystemDO attendanceGroupSystemDO = new AttendanceGroupSystemDO(); + attendanceGroupSystemDO.setAttendanceGroupId(groupId); + attendanceGroupSystemDO.setUserId(id); + saveList.add(attendanceGroupSystemDO); + } + attendanceGroupSystemMapper.insertBatch(saveList); + } + + @Override + public List getGroupSystemByGroupId(Long groupId) { + return attendanceGroupSystemMapper.selectList(new LambdaQueryWrapper() + .eq(AttendanceGroupSystemDO::getAttendanceGroupId, groupId)); + } + + @Override + public void delByGroupId(Long groupId) { + attendanceGroupSystemMapper.delete(new LambdaQueryWrapper() + .eq(AttendanceGroupSystemDO::getAttendanceGroupId, groupId)); + } + + @Override + public List getGroupSystemVoByGroupId(Long groupId) { + return attendanceGroupSystemMapper.getGroupSystemVoByGroupId(groupId); + } + + @Override + public List getGroupSystemByUserId(Long userId) { + return attendanceGroupSystemMapper.getGroupSystemByUserId(userId); + } +} + + + + + + + + + + + + + + + + + + + + + + diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/group/AttendanceGroupMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/group/AttendanceGroupMapper.xml index 5bd22ea1..e457fe37 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/group/AttendanceGroupMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/group/AttendanceGroupMapper.xml @@ -18,4 +18,48 @@ b.deleted = 0 and b.user_id = #{userId} - \ No newline at end of file + + diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/groupsystem/AttendanceGroupSystemMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/groupsystem/AttendanceGroupSystemMapper.xml new file mode 100644 index 00000000..94fb087c --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/groupsystem/AttendanceGroupSystemMapper.xml @@ -0,0 +1,37 @@ + + + + + + + +