diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/Constants.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/Constants.java index ea445022..28cf773f 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/Constants.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/Constants.java @@ -12,6 +12,11 @@ public class Constants { * 下划线 */ public static final String UNDERLINE = "_"; + + /** + * 逗号 + */ + public static final String COMMA = ","; /** * 是否 0否 1是 */ diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java index 2f8ec208..5b056320 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java @@ -17,6 +17,7 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; +import java.util.concurrent.TimeUnit; /** * 时间工具类 @@ -401,4 +402,15 @@ public class DateUtils { throw new IllegalArgumentException("输入的数字必须在1-7之间,代表星期一到星期日"); } } + + /** + * 毫秒转 **小时**分钟 + * @param milliseconds + * @return + */ + public static String millisecondsToHoursAndMinutes(long milliseconds) { + long hours = TimeUnit.MILLISECONDS.toHours(milliseconds); + long minutes = TimeUnit.MILLISECONDS.toMinutes(milliseconds) % 60; + return hours + "小时" + minutes + "分钟"; + } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/AttendanceAddressGroupController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/AttendanceAddressGroupController.java new file mode 100644 index 00000000..e68827cb --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/AttendanceAddressGroupController.java @@ -0,0 +1,93 @@ +package cn.iocoder.yudao.module.system.controller.admin.addressgroup; + +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.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupRespVO; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupDO; +import cn.iocoder.yudao.module.system.service.attendance.addressgroup.AttendanceAddressGroupService; +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 +@RequestMapping("/system/attendance-address-group") +@Validated +public class AttendanceAddressGroupController { + + @Resource + private AttendanceAddressGroupService attendanceAddressGroupService; + + @PostMapping("/create") + @Operation(summary = "创建考勤地址组") + @PreAuthorize("@ss.hasPermission('system:attendance-address-group:create')") + public CommonResult createAttendanceAddressGroup(@Valid @RequestBody AttendanceAddressGroupSaveReqVO createReqVO) { + return success(attendanceAddressGroupService.createAttendanceAddressGroup(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新考勤地址组") + @PreAuthorize("@ss.hasPermission('system:attendance-address-group:update')") + public CommonResult updateAttendanceAddressGroup(@Valid @RequestBody AttendanceAddressGroupSaveReqVO updateReqVO) { + attendanceAddressGroupService.updateAttendanceAddressGroup(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除考勤地址组") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('system:attendance-address-group:delete')") + public CommonResult deleteAttendanceAddressGroup(@RequestParam("id") Long id) { + attendanceAddressGroupService.deleteAttendanceAddressGroup(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得考勤地址组") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:attendance-address-group:query')") + public CommonResult getAttendanceAddressGroup(@RequestParam("id") Long id) { + AttendanceAddressGroupDO attendanceAddressGroup = attendanceAddressGroupService.getAttendanceAddressGroup(id); + return success(BeanUtils.toBean(attendanceAddressGroup, AttendanceAddressGroupRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得考勤地址组分页") + @PreAuthorize("@ss.hasPermission('system:attendance-address-group:query')") + public CommonResult> getAttendanceAddressGroupPage(@Valid AttendanceAddressGroupPageReqVO pageReqVO) { + PageResult pageResult = attendanceAddressGroupService.getAttendanceAddressGroupPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AttendanceAddressGroupRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出考勤地址组 Excel") + @PreAuthorize("@ss.hasPermission('system:attendance-address-group:export')") + @OperateLog(type = EXPORT) + public void exportAttendanceAddressGroupExcel(@Valid AttendanceAddressGroupPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = attendanceAddressGroupService.getAttendanceAddressGroupPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "考勤地址组.xls", "数据", AttendanceAddressGroupRespVO.class, + BeanUtils.toBean(list, AttendanceAddressGroupRespVO.class)); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/AttendanceAddressGroupItemController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/AttendanceAddressGroupItemController.java new file mode 100644 index 00000000..6c80c040 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/AttendanceAddressGroupItemController.java @@ -0,0 +1,98 @@ +package cn.iocoder.yudao.module.system.controller.admin.addressgroup; + +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupItemPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupItemRespVO; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupItemSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupItemDO; + +import cn.iocoder.yudao.module.system.service.attendance.addressgroup.AttendanceAddressGroupItemService; +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.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +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.*; + + +@Tag(name = "管理后台 - 考勤地址组子表") +@RestController +@RequestMapping("/system/attendance-address-group-item") +@Validated +public class AttendanceAddressGroupItemController { + + @Resource + private AttendanceAddressGroupItemService attendanceAddressGroupItemService; + + @PostMapping("/create") + @Operation(summary = "创建考勤地址组子表") + @PreAuthorize("@ss.hasPermission('system:attendance-address-group-item:create')") + public CommonResult createAttendanceAddressGroupItem(@Valid @RequestBody AttendanceAddressGroupItemSaveReqVO createReqVO) { + return success(attendanceAddressGroupItemService.createAttendanceAddressGroupItem(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新考勤地址组子表") + @PreAuthorize("@ss.hasPermission('system:attendance-address-group-item:update')") + public CommonResult updateAttendanceAddressGroupItem(@Valid @RequestBody AttendanceAddressGroupItemSaveReqVO updateReqVO) { + attendanceAddressGroupItemService.updateAttendanceAddressGroupItem(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除考勤地址组子表") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('system:attendance-address-group-item:delete')") + public CommonResult deleteAttendanceAddressGroupItem(@RequestParam("id") Long id) { + attendanceAddressGroupItemService.deleteAttendanceAddressGroupItem(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得考勤地址组子表") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:attendance-address-group-item:query')") + public CommonResult getAttendanceAddressGroupItem(@RequestParam("id") Long id) { + AttendanceAddressGroupItemDO attendanceAddressGroupItem = attendanceAddressGroupItemService.getAttendanceAddressGroupItem(id); + return success(BeanUtils.toBean(attendanceAddressGroupItem, AttendanceAddressGroupItemRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得考勤地址组子表分页") + @PreAuthorize("@ss.hasPermission('system:attendance-address-group-item:query')") + public CommonResult> getAttendanceAddressGroupItemPage(@Valid AttendanceAddressGroupItemPageReqVO pageReqVO) { + PageResult pageResult = attendanceAddressGroupItemService.getAttendanceAddressGroupItemPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AttendanceAddressGroupItemRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出考勤地址组子表 Excel") + @PreAuthorize("@ss.hasPermission('system:attendance-address-group-item:export')") + @OperateLog(type = EXPORT) + public void exportAttendanceAddressGroupItemExcel(@Valid AttendanceAddressGroupItemPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = attendanceAddressGroupItemService.getAttendanceAddressGroupItemPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "考勤地址组子表.xls", "数据", AttendanceAddressGroupItemRespVO.class, + BeanUtils.toBean(list, AttendanceAddressGroupItemRespVO.class)); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupItemPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupItemPageReqVO.java new file mode 100644 index 00000000..6fb9693f --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupItemPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 考勤地址组子表分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class AttendanceAddressGroupItemPageReqVO extends PageParam { + + @Schema(description = "地址组id", example = "2502") + private Long addressGroupId; + + @Schema(description = "经度") + private String longitude; + + @Schema(description = "纬度") + private String latitude; + + @Schema(description = "范围(米)") + private Integer scope; + + @Schema(description = "地址") + private String address; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupItemRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupItemRespVO.java new file mode 100644 index 00000000..0de66942 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupItemRespVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 考勤地址组子表 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AttendanceAddressGroupItemRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2807") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "地址组id", example = "2502") + @ExcelProperty("地址组id") + private Long addressGroupId; + + @Schema(description = "经度") + @ExcelProperty("经度") + private String longitude; + + @Schema(description = "纬度") + @ExcelProperty("纬度") + private String latitude; + + @Schema(description = "范围(米)") + @ExcelProperty("范围(米)") + private Integer scope; + + @Schema(description = "地址") + @ExcelProperty("地址") + private String address; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupItemSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupItemSaveReqVO.java new file mode 100644 index 00000000..bbb08a82 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupItemSaveReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; + +@Schema(description = "管理后台 - 考勤地址组子表新增/修改 Request VO") +@Data +public class AttendanceAddressGroupItemSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2807") + private Long id; + + @Schema(description = "地址组id", example = "2502") + private Long addressGroupId; + + @Schema(description = "经度") + private String longitude; + + @Schema(description = "纬度") + private String latitude; + + @Schema(description = "范围(米)") + private Integer scope; + + @Schema(description = "地址") + private String address; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupPageReqVO.java new file mode 100644 index 00000000..5fed1f20 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupPageReqVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo; + +import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 考勤地址组分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class AttendanceAddressGroupPageReqVO extends PageParam { + + @Schema(description = "名称", example = "张三") + private String name; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupRespVO.java new file mode 100644 index 00000000..0a0dd1bd --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupRespVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 考勤地址组 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AttendanceAddressGroupRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "25924") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "名称", example = "张三") + @ExcelProperty("名称") + private String name; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupSaveReqVO.java new file mode 100644 index 00000000..4a472861 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupSaveReqVO.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +@Schema(description = "管理后台 - 考勤地址组新增/修改 Request VO") +@Data +public class AttendanceAddressGroupSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "25924") + private Long id; + + @Schema(description = "名称", example = "张三") + private String name; + +} 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 8fd7176a..12895a1e 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 @@ -52,6 +52,9 @@ public class AttendanceGroupPageReqVO extends PageParam { @Schema(description = "可补卡次数(每个月1号凌晨重置 默认3次)") private Integer replacementCardNum; + @Schema(description = "考勤地址组ids 逗号隔开") + private String addressGroupIds; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 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 0121e6e7..5313d752 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 @@ -67,6 +67,10 @@ public class AttendanceGroupRespVO { @ExcelProperty("可补卡次数(每个月1号凌晨重置 默认3次)") private Integer replacementCardNum; + @Schema(description = "考勤地址组ids 逗号隔开") + @ExcelProperty("考勤地址组ids 逗号隔开") + private String addressGroupIds; + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; 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 03d1fe38..3a55225f 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,5 +1,6 @@ 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.Data; @@ -42,4 +43,7 @@ public class AttendanceGroupSaveReqVO { @Schema(description = "可补卡次数(每个月1号凌晨重置 默认3次)") private Integer replacementCardNum; + + @Schema(description = "考勤地址组ids 逗号隔开") + private String addressGroupIds; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/addressgroup/AttendanceAddressGroupDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/addressgroup/AttendanceAddressGroupDO.java new file mode 100644 index 00000000..dce18b64 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/addressgroup/AttendanceAddressGroupDO.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup; + +import lombok.*; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 考勤地址组 DO + * + * @author 艾楷 + */ +@TableName("kq_attendance_address_group") +@KeySequence("kq_attendance_address_group_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AttendanceAddressGroupDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 名称 + */ + private String name; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/addressgroup/AttendanceAddressGroupItemDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/addressgroup/AttendanceAddressGroupItemDO.java new file mode 100644 index 00000000..644cd142 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/addressgroup/AttendanceAddressGroupItemDO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup; + +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; + +/** + * 考勤地址组子表 DO + * + * @author 艾楷 + */ +@TableName("kq_attendance_address_group_item") +@KeySequence("kq_attendance_address_group_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AttendanceAddressGroupItemDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 地址组id + */ + private Long addressGroupId; + /** + * 经度 + */ + private String longitude; + /** + * 纬度 + */ + private String latitude; + /** + * 范围(米) + */ + private Integer scope; + /** + * 地址 + */ + private String address; + +} 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 826dcbc9..ac87b745 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 @@ -72,6 +72,10 @@ public class AttendanceGroupDO extends BaseDO { * 可补卡次数(每个月1号凌晨重置 默认3次) */ private Integer replacementCardNum; + /** + * 考勤地址组ids 逗号隔开 + */ + private String addressGroupIds; /** diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/addressgroup/AttendanceAddressGroupItemMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/addressgroup/AttendanceAddressGroupItemMapper.java new file mode 100644 index 00000000..68108c39 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/addressgroup/AttendanceAddressGroupItemMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.system.dal.mysql.attendance.addressgroup; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +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.addressgroup.vo.AttendanceAddressGroupItemPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupItemDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 考勤地址组子表 Mapper + * + * @author 艾楷 + */ +@Mapper +public interface AttendanceAddressGroupItemMapper extends BaseMapperX { + + default PageResult selectPage(AttendanceAddressGroupItemPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(AttendanceAddressGroupItemDO::getAddressGroupId, reqVO.getAddressGroupId()) + .eqIfPresent(AttendanceAddressGroupItemDO::getLongitude, reqVO.getLongitude()) + .eqIfPresent(AttendanceAddressGroupItemDO::getLatitude, reqVO.getLatitude()) + .eqIfPresent(AttendanceAddressGroupItemDO::getScope, reqVO.getScope()) + .eqIfPresent(AttendanceAddressGroupItemDO::getAddress, reqVO.getAddress()) + .betweenIfPresent(AttendanceAddressGroupItemDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AttendanceAddressGroupItemDO::getId)); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/addressgroup/AttendanceAddressGroupMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/addressgroup/AttendanceAddressGroupMapper.java new file mode 100644 index 00000000..835241b2 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/addressgroup/AttendanceAddressGroupMapper.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.system.dal.mysql.attendance.addressgroup; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +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.addressgroup.vo.AttendanceAddressGroupPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 考勤地址组 Mapper + * + * @author 艾楷 + */ +@Mapper +public interface AttendanceAddressGroupMapper extends BaseMapperX { + + default PageResult selectPage(AttendanceAddressGroupPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(AttendanceAddressGroupDO::getName, reqVO.getName()) + .betweenIfPresent(AttendanceAddressGroupDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AttendanceAddressGroupDO::getId)); + } + +} 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 b742198b..4644e82a 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 @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.attendance; 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.addressgroup.AttendanceAddressGroupItemDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO; import cn.iocoder.yudao.module.system.service.attendance.punch.dto.AttendanceOnTheDayDTO; @@ -50,6 +51,17 @@ public interface AttendanceService { */ AttendancePunchVO punch(AttendancePunchDTO attendancePunchDTO); + /** + * 校验考勤地址 + * + * @param latitude + * @param longitude + * @param addressList + * @param addressGroupIds + * @return + */ + Integer verifyCheckInAddress(double latitude, double longitude, List addressList, String addressGroupIds); + List buildAttendanceOnTheDay(List attendanceGroupShiftItemDOList); /** 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 d02d9565..11b99f2f 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 @@ -17,6 +17,7 @@ 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.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupItemDO; 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; @@ -28,6 +29,7 @@ import cn.iocoder.yudao.module.system.dal.mysql.attendance.group.AttendanceGroup import cn.iocoder.yudao.module.system.dal.mysql.attendance.punchrecord.AttendancePunchRecordMapper; import cn.iocoder.yudao.module.system.dal.mysql.dept.PostMapper; import cn.iocoder.yudao.module.system.handler.PunchHandler; +import cn.iocoder.yudao.module.system.service.attendance.addressgroup.AttendanceAddressGroupItemService; 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; @@ -100,6 +102,8 @@ public class AttendanceServiceImpl implements AttendanceService { private PostMapper postMapper; @Resource private DictDataService dictDataService; + @Resource + private AttendanceAddressGroupItemService attendanceAddressGroupItemService; // 定义一些常量以提高代码的可读性和可维护性 @@ -288,9 +292,10 @@ public class AttendanceServiceImpl implements AttendanceService { AttendanceGroupDO activationGroup = dto.getActivationGroup(); vo.setFieldworkFlag(dto.getUser().getFieldworkFlag() == null ? activationGroup.getFieldworkFlag() : dto.getUser().getFieldworkFlag()); // - 根据经纬度判断是否在对应班组的打卡点上 - 如果是考勤机的话默认就是在打卡点 + List addressList = new ArrayList<>(); + addressList.add(new AttendanceAddressGroupItemDO().setLatitude(activationGroup.getLatitude()).setLongitude(activationGroup.getLongitude()).setScope(activationGroup.getScope())); vo.setPunchPoint(AttendanceGroupDO.PUNCH_TYPE_ATTENDANCE_MACHINE.equals(dto.getPunchType()) ? Constants.TRUE : - GeoUtil.distance(Double.parseDouble(dto.getLatitude()), Double.parseDouble(dto.getLongitude()) - , Double.parseDouble(activationGroup.getLatitude()), Double.parseDouble(activationGroup.getLongitude()), activationGroup.getScope())); + this.verifyCheckInAddress(Double.parseDouble(dto.getLatitude()), Double.parseDouble(dto.getLongitude()), addressList, activationGroup.getAddressGroupIds())); // -- 获取班次 AttendanceGroupShiftDO attendanceGroupShiftDO = attendanceGroupShiftService.getGroupShift(vo.getAttendanceGroupShiftId()); @@ -363,6 +368,26 @@ public class AttendanceServiceImpl implements AttendanceService { } } + @Override + public Integer verifyCheckInAddress(double latitude, double longitude, List addressList, String addressGroupIds) { + if (StringUtils.isNotEmpty(addressGroupIds)) { + List addressGroupIdList = Arrays.stream(addressGroupIds.split(Constants.COMMA)).map(Long::parseLong).collect(Collectors.toList()); + List list = attendanceAddressGroupItemService.setListByAddressGroupIds(addressGroupIdList); + if (!list.isEmpty()) { + addressList.addAll(list); + } + } + int num = 0; + for (AttendanceAddressGroupItemDO item : addressList) { + num = GeoUtil.distance(latitude, longitude + , Double.parseDouble(item.getLatitude()), Double.parseDouble(item.getLongitude()), item.getScope()); + if (num == 1) { + return num; + } + } + return num; + } + /** * 确定打卡类型 - 上班打卡 忽略秒 比如 8点上班 8点0分59秒打卡不算迟到 @@ -1270,7 +1295,7 @@ public class AttendanceServiceImpl implements AttendanceService { //休息天数 this.calculateRestDay(dateList, dayMap.keySet().stream().distinct().collect(Collectors.toList()), calculateNum); //考勤总时间中文 - calculateNum.setTotalWorkingHoursStr(DateUtil.formatBetween(calculateNum.getTotalWorkingHours(), BetweenFormatter.Level.MINUTE)); + calculateNum.setTotalWorkingHoursStr(DateUtils.millisecondsToHoursAndMinutes(calculateNum.getTotalWorkingHours())); //迟到总时间中文 calculateNum.setTotalLateArrivalsTimeStr(DateUtil.formatBetween(calculateNum.getTotalLateArrivalsTime(), BetweenFormatter.Level.MINUTE)); //早退总时间中文 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemService.java new file mode 100644 index 00000000..d705281d --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemService.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.system.service.attendance.addressgroup; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupItemPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupItemSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupItemDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 考勤地址组子表 Service 接口 + * + * @author 艾楷 + */ +public interface AttendanceAddressGroupItemService { + + /** + * 创建考勤地址组子表 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createAttendanceAddressGroupItem(@Valid AttendanceAddressGroupItemSaveReqVO createReqVO); + + /** + * 更新考勤地址组子表 + * + * @param updateReqVO 更新信息 + */ + void updateAttendanceAddressGroupItem(@Valid AttendanceAddressGroupItemSaveReqVO updateReqVO); + + /** + * 删除考勤地址组子表 + * + * @param id 编号 + */ + void deleteAttendanceAddressGroupItem(Long id); + + /** + * 获得考勤地址组子表 + * + * @param id 编号 + * @return 考勤地址组子表 + */ + AttendanceAddressGroupItemDO getAttendanceAddressGroupItem(Long id); + + /** + * 获得考勤地址组子表分页 + * + * @param pageReqVO 分页查询 + * @return 考勤地址组子表分页 + */ + PageResult getAttendanceAddressGroupItemPage(AttendanceAddressGroupItemPageReqVO pageReqVO); + + /** + * 根据分组ids获取列表 + * + * @param addressGroupIdList + * @return + */ + List setListByAddressGroupIds(List addressGroupIdList); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemServiceImpl.java new file mode 100644 index 00000000..eb41c219 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemServiceImpl.java @@ -0,0 +1,66 @@ +package cn.iocoder.yudao.module.system.service.attendance.addressgroup; + +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.addressgroup.vo.AttendanceAddressGroupItemPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupItemSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupItemDO; +import cn.iocoder.yudao.module.system.dal.mysql.attendance.addressgroup.AttendanceAddressGroupItemMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 考勤地址组子表 Service 实现类 + * + * @author 艾楷 + */ +@Service +@Validated +public class AttendanceAddressGroupItemServiceImpl implements AttendanceAddressGroupItemService { + + @Resource + private AttendanceAddressGroupItemMapper attendanceAddressGroupItemMapper; + + @Override + public Long createAttendanceAddressGroupItem(AttendanceAddressGroupItemSaveReqVO createReqVO) { + // 插入 + AttendanceAddressGroupItemDO attendanceAddressGroupItem = BeanUtils.toBean(createReqVO, AttendanceAddressGroupItemDO.class); + attendanceAddressGroupItemMapper.insert(attendanceAddressGroupItem); + // 返回 + return attendanceAddressGroupItem.getId(); + } + + @Override + public void updateAttendanceAddressGroupItem(AttendanceAddressGroupItemSaveReqVO updateReqVO) { + // 更新 + AttendanceAddressGroupItemDO updateObj = BeanUtils.toBean(updateReqVO, AttendanceAddressGroupItemDO.class); + attendanceAddressGroupItemMapper.updateById(updateObj); + } + + @Override + public void deleteAttendanceAddressGroupItem(Long id) { + // 删除 + attendanceAddressGroupItemMapper.deleteById(id); + } + + @Override + public AttendanceAddressGroupItemDO getAttendanceAddressGroupItem(Long id) { + return attendanceAddressGroupItemMapper.selectById(id); + } + + @Override + public PageResult getAttendanceAddressGroupItemPage(AttendanceAddressGroupItemPageReqVO pageReqVO) { + return attendanceAddressGroupItemMapper.selectPage(pageReqVO); + } + + @Override + public List setListByAddressGroupIds(List addressGroupIdList) { + return attendanceAddressGroupItemMapper.selectList(new LambdaQueryWrapper() + .in(AttendanceAddressGroupItemDO::getAddressGroupId, addressGroupIdList)); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupService.java new file mode 100644 index 00000000..0029c582 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.system.service.attendance.addressgroup; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupDO; + +import javax.validation.Valid; + +/** + * 考勤地址组 Service 接口 + * + * @author 艾楷 + */ +public interface AttendanceAddressGroupService { + + /** + * 创建考勤地址组 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createAttendanceAddressGroup(@Valid AttendanceAddressGroupSaveReqVO createReqVO); + + /** + * 更新考勤地址组 + * + * @param updateReqVO 更新信息 + */ + void updateAttendanceAddressGroup(@Valid AttendanceAddressGroupSaveReqVO updateReqVO); + + /** + * 删除考勤地址组 + * + * @param id 编号 + */ + void deleteAttendanceAddressGroup(Long id); + + /** + * 获得考勤地址组 + * + * @param id 编号 + * @return 考勤地址组 + */ + AttendanceAddressGroupDO getAttendanceAddressGroup(Long id); + + /** + * 获得考勤地址组分页 + * + * @param pageReqVO 分页查询 + * @return 考勤地址组分页 + */ + PageResult getAttendanceAddressGroupPage(AttendanceAddressGroupPageReqVO pageReqVO); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupServiceImpl.java new file mode 100644 index 00000000..28cd5e5c --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupServiceImpl.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.system.service.attendance.addressgroup; + +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.addressgroup.vo.AttendanceAddressGroupPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupDO; +import cn.iocoder.yudao.module.system.dal.mysql.attendance.addressgroup.AttendanceAddressGroupMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +/** + * 考勤地址组 Service 实现类 + * + * @author 艾楷 + */ +@Service +@Validated +public class AttendanceAddressGroupServiceImpl implements AttendanceAddressGroupService { + + @Resource + private AttendanceAddressGroupMapper attendanceAddressGroupMapper; + + @Override + public Long createAttendanceAddressGroup(AttendanceAddressGroupSaveReqVO createReqVO) { + // 插入 + AttendanceAddressGroupDO attendanceAddressGroup = BeanUtils.toBean(createReqVO, AttendanceAddressGroupDO.class); + attendanceAddressGroupMapper.insert(attendanceAddressGroup); + // 返回 + return attendanceAddressGroup.getId(); + } + + @Override + public void updateAttendanceAddressGroup(AttendanceAddressGroupSaveReqVO updateReqVO) { + // 更新 + AttendanceAddressGroupDO updateObj = BeanUtils.toBean(updateReqVO, AttendanceAddressGroupDO.class); + attendanceAddressGroupMapper.updateById(updateObj); + } + + @Override + public void deleteAttendanceAddressGroup(Long id) { + // 删除 + attendanceAddressGroupMapper.deleteById(id); + } + + @Override + public AttendanceAddressGroupDO getAttendanceAddressGroup(Long id) { + return attendanceAddressGroupMapper.selectById(id); + } + + @Override + public PageResult getAttendanceAddressGroupPage(AttendanceAddressGroupPageReqVO pageReqVO) { + return attendanceAddressGroupMapper.selectPage(pageReqVO); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/addressgroup/AttendanceAddressGroupItemMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/addressgroup/AttendanceAddressGroupItemMapper.xml new file mode 100644 index 00000000..4c5a7a72 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/addressgroup/AttendanceAddressGroupItemMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/addressgroup/AttendanceAddressGroupMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/addressgroup/AttendanceAddressGroupMapper.xml new file mode 100644 index 00000000..74fac793 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/addressgroup/AttendanceAddressGroupMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yudao-module-wms/yudao-module-wms-biz/src/main/resources/application-dev.yaml b/yudao-module-wms/yudao-module-wms-biz/src/main/resources/application-dev.yaml index 156c5415..65e07f99 100644 --- a/yudao-module-wms/yudao-module-wms-biz/src/main/resources/application-dev.yaml +++ b/yudao-module-wms/yudao-module-wms-biz/src/main/resources/application-dev.yaml @@ -56,7 +56,7 @@ spring: host: 127.0.0.1 # 地址 port: 6379 # 端口 database: 1 # 数据库索引 - password: yhtkj@2024! # 密码,建议生产环境开启 +# password: yhtkj@2024! # 密码,建议生产环境开启 --- #################### MQ 消息队列相关配置 ####################