加入距离计算工具类 新增考勤组班次子表
This commit is contained in:
parent
03e7fdad43
commit
be4f4278ba
@ -0,0 +1,52 @@
|
||||
package cn.iocoder.yudao.framework.common.util.distance;
|
||||
|
||||
/**
|
||||
* 距离计算 工具类
|
||||
*/
|
||||
public class GeoUtil {
|
||||
public static int distance(double lat1, double lon1, double lat2, double lon2) {
|
||||
final int R = 6371000; // 地球平均半径,单位:米
|
||||
double latDistance = Math.toRadians(lat2 - lat1);
|
||||
double lonDistance = Math.toRadians(lon2 - lon1);
|
||||
double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
|
||||
+ Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
|
||||
* Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
|
||||
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
||||
return (int) (R * c);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 计算两个经纬度的距离是否在范围内
|
||||
*
|
||||
* @param lat1 位置1的纬度
|
||||
* @param lon1 位置1的经度
|
||||
* @param lat2 位置2的纬度
|
||||
* @param lon2 位置2的经度
|
||||
* @param range 范围(米)
|
||||
* @return 范围内返回 1 范围外返回 0
|
||||
*/
|
||||
public static int distance(double lat1, double lon1, double lat2, double lon2, Integer range) {
|
||||
if (range == null) {
|
||||
return 0;
|
||||
}
|
||||
int distance = distance(lat1, lon1, lat2, lon2);
|
||||
if (range < distance) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
long time = System.currentTimeMillis();
|
||||
double lat1 = 28.616284;
|
||||
double lon1 = 118.102703;
|
||||
|
||||
double lat2 = 28.629981;
|
||||
double lon2 = 118.08502;
|
||||
double distance = distance(lat1, lon1, lat2, lon2);
|
||||
System.out.println("距离是: " + distance + " 米");
|
||||
System.out.println("耗时: " + (System.currentTimeMillis() - time));
|
||||
}
|
||||
|
||||
}
|
@ -25,7 +25,7 @@ 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.fixed.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.fixed.AttendanceFixedDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.fixed.AttendanceFixedDO;
|
||||
import cn.iocoder.yudao.module.system.service.attendance.fixed.AttendanceFixedService;
|
||||
|
||||
@Tag(name = "管理后台 - 固定班制考勤设置")
|
||||
|
@ -25,7 +25,7 @@ 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.dal.dataobject.group.AttendanceGroupDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO;
|
||||
import cn.iocoder.yudao.module.system.service.attendance.group.AttendanceGroupService;
|
||||
|
||||
@Tag(name = "管理后台 - 考勤组")
|
||||
|
@ -25,7 +25,7 @@ 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.groupshift.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.groupshift.AttendanceGroupShiftDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshift.AttendanceGroupShiftDO;
|
||||
import cn.iocoder.yudao.module.system.service.attendance.groupshift.AttendanceGroupShiftService;
|
||||
|
||||
@Tag(name = "管理后台 - 考勤组班次")
|
||||
|
@ -21,9 +21,6 @@ public class AttendanceGroupShiftPageReqVO extends PageParam {
|
||||
@Schema(description = "班次名称", example = "张三")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "班次考勤时间json[{start_tiem:HH:mm,start_check_flag:true,end_time:HH:mm,end_check_flah: true}]")
|
||||
private String attendanceTimeJson;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
@ -25,10 +25,6 @@ public class AttendanceGroupShiftRespVO {
|
||||
@ExcelProperty("班次名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "班次考勤时间json[{start_tiem:HH:mm,start_check_flag:true,end_time:HH:mm,end_check_flah: true}]")
|
||||
@ExcelProperty("班次考勤时间json[{start_tiem:HH:mm,start_check_flag:true,end_time:HH:mm,end_check_flah: true}]")
|
||||
private String attendanceTimeJson;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
@ -19,7 +19,4 @@ public class AttendanceGroupShiftSaveReqVO {
|
||||
@Schema(description = "班次名称", example = "张三")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "班次考勤时间json[{start_tiem:HH:mm,start_check_flag:true,end_time:HH:mm,end_check_flah: true}]")
|
||||
private String attendanceTimeJson;
|
||||
|
||||
}
|
@ -0,0 +1,93 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.groupshiftitem;
|
||||
|
||||
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.groupshiftitem.vo.AttendanceGroupShiftItemPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.vo.AttendanceGroupShiftItemRespVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.vo.AttendanceGroupShiftItemSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO;
|
||||
import cn.iocoder.yudao.module.system.service.attendance.groupshiftitem.AttendanceGroupShiftItemService;
|
||||
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/attendance-group-shift-item")
|
||||
@Validated
|
||||
public class AttendanceGroupShiftItemController {
|
||||
|
||||
@Resource
|
||||
private AttendanceGroupShiftItemService attendanceGroupShiftItemService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建考勤组班次子表")
|
||||
@PreAuthorize("@ss.hasPermission('system.attendance:attendance-group-shift-item:create')")
|
||||
public CommonResult<Long> createAttendanceGroupShiftItem(@Valid @RequestBody AttendanceGroupShiftItemSaveReqVO createReqVO) {
|
||||
return success(attendanceGroupShiftItemService.createAttendanceGroupShiftItem(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新考勤组班次子表")
|
||||
@PreAuthorize("@ss.hasPermission('system.attendance:attendance-group-shift-item:update')")
|
||||
public CommonResult<Boolean> updateAttendanceGroupShiftItem(@Valid @RequestBody AttendanceGroupShiftItemSaveReqVO updateReqVO) {
|
||||
attendanceGroupShiftItemService.updateAttendanceGroupShiftItem(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除考勤组班次子表")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('system.attendance:attendance-group-shift-item:delete')")
|
||||
public CommonResult<Boolean> deleteAttendanceGroupShiftItem(@RequestParam("id") Long id) {
|
||||
attendanceGroupShiftItemService.deleteAttendanceGroupShiftItem(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得考勤组班次子表")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('system.attendance:attendance-group-shift-item:query')")
|
||||
public CommonResult<AttendanceGroupShiftItemRespVO> getAttendanceGroupShiftItem(@RequestParam("id") Long id) {
|
||||
AttendanceGroupShiftItemDO attendanceGroupShiftItem = attendanceGroupShiftItemService.getAttendanceGroupShiftItem(id);
|
||||
return success(BeanUtils.toBean(attendanceGroupShiftItem, AttendanceGroupShiftItemRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得考勤组班次子表分页")
|
||||
@PreAuthorize("@ss.hasPermission('system.attendance:attendance-group-shift-item:query')")
|
||||
public CommonResult<PageResult<AttendanceGroupShiftItemRespVO>> getAttendanceGroupShiftItemPage(@Valid AttendanceGroupShiftItemPageReqVO pageReqVO) {
|
||||
PageResult<AttendanceGroupShiftItemDO> pageResult = attendanceGroupShiftItemService.getAttendanceGroupShiftItemPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, AttendanceGroupShiftItemRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出考勤组班次子表 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('system.attendance:attendance-group-shift-item:export')")
|
||||
@OperateLog(type = EXPORT)
|
||||
public void exportAttendanceGroupShiftItemExcel(@Valid AttendanceGroupShiftItemPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<AttendanceGroupShiftItemDO> list = attendanceGroupShiftItemService.getAttendanceGroupShiftItemPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "考勤组班次子表.xls", "数据", AttendanceGroupShiftItemRespVO.class,
|
||||
BeanUtils.toBean(list, AttendanceGroupShiftItemRespVO.class));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.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 AttendanceGroupShiftItemPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "考勤组id", example = "26060")
|
||||
private Long attendanceGroupId;
|
||||
|
||||
@Schema(description = "班次id", example = "22909")
|
||||
private Long kqAttendanceGroupShiftId;
|
||||
|
||||
@Schema(description = "级别 从1到~ 排序用")
|
||||
private Integer level;
|
||||
|
||||
@Schema(description = "开始打卡时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private String[] beginTime;
|
||||
|
||||
@Schema(description = "结束打卡时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private String[] endTime;
|
||||
|
||||
@Schema(description = "是否必须 0否 1是 (如果不是必须系统会自动打卡)")
|
||||
private Integer mustFlag;
|
||||
|
||||
@Schema(description = "上班前打卡时间(分钟) 默认 120分钟")
|
||||
private Integer beforePunchTimeUpWork;
|
||||
|
||||
@Schema(description = "上班后打卡时间(分钟) 默认 120分钟")
|
||||
private Integer afterPunchTimeUpWork;
|
||||
|
||||
@Schema(description = "下班前打卡时间(分钟) 默认 120分钟")
|
||||
private Integer beforePunchTimeDownWork;
|
||||
|
||||
@Schema(description = "下班后打卡时间(分钟) 默认 120分钟")
|
||||
private Integer afterPunchTimeDownWork;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.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 AttendanceGroupShiftItemRespVO {
|
||||
|
||||
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "957")
|
||||
@ExcelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "考勤组id", example = "26060")
|
||||
@ExcelProperty("考勤组id")
|
||||
private Long attendanceGroupId;
|
||||
|
||||
@Schema(description = "班次id", example = "22909")
|
||||
@ExcelProperty("班次id")
|
||||
private Long kqAttendanceGroupShiftId;
|
||||
|
||||
@Schema(description = "级别 从1到~ 排序用")
|
||||
@ExcelProperty("级别 从1到~ 排序用")
|
||||
private Integer level;
|
||||
|
||||
@Schema(description = "开始打卡时间")
|
||||
@ExcelProperty("开始打卡时间")
|
||||
private String beginTime;
|
||||
|
||||
@Schema(description = "结束打卡时间")
|
||||
@ExcelProperty("结束打卡时间")
|
||||
private String endTime;
|
||||
|
||||
@Schema(description = "是否必须 0否 1是 (如果不是必须系统会自动打卡)")
|
||||
@ExcelProperty("是否必须 0否 1是 (如果不是必须系统会自动打卡)")
|
||||
private Integer mustFlag;
|
||||
|
||||
@Schema(description = "上班前打卡时间(分钟) 默认 120分钟")
|
||||
@ExcelProperty("上班前打卡时间(分钟) 默认 120分钟")
|
||||
private Integer beforePunchTimeUpWork;
|
||||
|
||||
@Schema(description = "上班后打卡时间(分钟) 默认 120分钟")
|
||||
@ExcelProperty("上班后打卡时间(分钟) 默认 120分钟")
|
||||
private Integer afterPunchTimeUpWork;
|
||||
|
||||
@Schema(description = "下班前打卡时间(分钟) 默认 120分钟")
|
||||
@ExcelProperty("下班前打卡时间(分钟) 默认 120分钟")
|
||||
private Integer beforePunchTimeDownWork;
|
||||
|
||||
@Schema(description = "下班后打卡时间(分钟) 默认 120分钟")
|
||||
@ExcelProperty("下班后打卡时间(分钟) 默认 120分钟")
|
||||
private Integer afterPunchTimeDownWork;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.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 AttendanceGroupShiftItemSaveReqVO {
|
||||
|
||||
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "957")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "考勤组id", example = "26060")
|
||||
private Long attendanceGroupId;
|
||||
|
||||
@Schema(description = "班次id", example = "22909")
|
||||
private Long kqAttendanceGroupShiftId;
|
||||
|
||||
@Schema(description = "级别 从1到~ 排序用")
|
||||
private Integer level;
|
||||
|
||||
@Schema(description = "开始打卡时间")
|
||||
private String beginTime;
|
||||
|
||||
@Schema(description = "结束打卡时间")
|
||||
private String endTime;
|
||||
|
||||
@Schema(description = "是否必须 0否 1是 (如果不是必须系统会自动打卡)")
|
||||
private Integer mustFlag;
|
||||
|
||||
@Schema(description = "上班前打卡时间(分钟) 默认 120分钟")
|
||||
private Integer beforePunchTimeUpWork;
|
||||
|
||||
@Schema(description = "上班后打卡时间(分钟) 默认 120分钟")
|
||||
private Integer afterPunchTimeUpWork;
|
||||
|
||||
@Schema(description = "下班前打卡时间(分钟) 默认 120分钟")
|
||||
private Integer beforePunchTimeDownWork;
|
||||
|
||||
@Schema(description = "下班后打卡时间(分钟) 默认 120分钟")
|
||||
private Integer afterPunchTimeDownWork;
|
||||
|
||||
}
|
@ -25,7 +25,7 @@ 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.groupuser.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.groupuser.AttendanceGroupUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupuser.AttendanceGroupUserDO;
|
||||
import cn.iocoder.yudao.module.system.service.attendance.groupuser.AttendanceGroupUserService;
|
||||
|
||||
@Tag(name = "管理后台 - 考勤组人员")
|
||||
|
@ -25,7 +25,7 @@ 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.punchrecord.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.punchrecord.AttendancePunchRecordDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO;
|
||||
import cn.iocoder.yudao.module.system.service.attendance.punchrecord.AttendancePunchRecordService;
|
||||
|
||||
@Tag(name = "管理后台 - 用户打卡记录")
|
||||
|
@ -25,7 +25,7 @@ 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.scheduling.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.scheduling.AttendanceSchedulingDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.scheduling.AttendanceSchedulingDO;
|
||||
import cn.iocoder.yudao.module.system.service.attendance.scheduling.AttendanceSchedulingService;
|
||||
|
||||
@Tag(name = "管理后台 - 排班制考勤设置")
|
||||
|
@ -1,6 +1,6 @@
|
||||
package cn.iocoder.yudao.module.system.controller.app.attendance.dto;
|
||||
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.group.AttendanceGroupDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.fixed;
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.attendance.fixed;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.group;
|
||||
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;
|
@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.groupshift;
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshift;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
@ -35,9 +35,4 @@ public class AttendanceGroupShiftDO extends BaseDO {
|
||||
* 班次名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 班次考勤时间json[{start_tiem:HH:mm,start_check_flag:true,end_time:HH:mm,end_check_flah: true}]
|
||||
*/
|
||||
private String attendanceTimeJson;
|
||||
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem;
|
||||
|
||||
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_group_shift_item")
|
||||
@KeySequence("kq_attendance_group_shift_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class AttendanceGroupShiftItemDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 考勤组id
|
||||
*/
|
||||
private Long attendanceGroupId;
|
||||
/**
|
||||
* 班次id
|
||||
*/
|
||||
private Long kqAttendanceGroupShiftId;
|
||||
/**
|
||||
* 级别 从1到~ 排序用
|
||||
*/
|
||||
private Integer level;
|
||||
/**
|
||||
* 开始打卡时间
|
||||
*/
|
||||
private String beginTime;
|
||||
/**
|
||||
* 结束打卡时间
|
||||
*/
|
||||
private String endTime;
|
||||
/**
|
||||
* 是否必须 0否 1是 (如果不是必须系统会自动打卡)
|
||||
*/
|
||||
private Integer mustFlag;
|
||||
/**
|
||||
* 上班前打卡时间(分钟) 默认 120分钟
|
||||
*/
|
||||
private Integer beforePunchTimeUpWork;
|
||||
/**
|
||||
* 上班后打卡时间(分钟) 默认 120分钟
|
||||
*/
|
||||
private Integer afterPunchTimeUpWork;
|
||||
/**
|
||||
* 下班前打卡时间(分钟) 默认 120分钟
|
||||
*/
|
||||
private Integer beforePunchTimeDownWork;
|
||||
/**
|
||||
* 下班后打卡时间(分钟) 默认 120分钟
|
||||
*/
|
||||
private Integer afterPunchTimeDownWork;
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.groupuser;
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupuser;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.punchrecord;
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.scheduling;
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.attendance.scheduling;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
@ -1,11 +1,9 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.attendance.fixed;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
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.module.system.dal.dataobject.fixed.AttendanceFixedDO;
|
||||
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.*;
|
||||
|
||||
|
@ -4,7 +4,7 @@ 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.group.vo.AttendanceGroupPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.group.AttendanceGroupDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
@ -1,13 +1,11 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.attendance.groupshift;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
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.module.system.dal.dataobject.groupshift.AttendanceGroupShiftDO;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.AttendanceGroupShiftPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshift.AttendanceGroupShiftDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.*;
|
||||
|
||||
/**
|
||||
* 考勤组班次 Mapper
|
||||
@ -21,7 +19,6 @@ public interface AttendanceGroupShiftMapper extends BaseMapperX<AttendanceGroupS
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<AttendanceGroupShiftDO>()
|
||||
.eqIfPresent(AttendanceGroupShiftDO::getAttendanceGroupId, reqVO.getAttendanceGroupId())
|
||||
.likeIfPresent(AttendanceGroupShiftDO::getName, reqVO.getName())
|
||||
.eqIfPresent(AttendanceGroupShiftDO::getAttendanceTimeJson, reqVO.getAttendanceTimeJson())
|
||||
.betweenIfPresent(AttendanceGroupShiftDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(AttendanceGroupShiftDO::getId));
|
||||
}
|
||||
|
@ -0,0 +1,36 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.attendance.groupshiftitem;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
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.module.system.controller.admin.groupshiftitem.vo.AttendanceGroupShiftItemPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 考勤组班次子表 Mapper
|
||||
*
|
||||
* @author 艾楷
|
||||
*/
|
||||
@Mapper
|
||||
public interface AttendanceGroupShiftItemMapper extends BaseMapperX<AttendanceGroupShiftItemDO> {
|
||||
|
||||
default PageResult<AttendanceGroupShiftItemDO> selectPage(AttendanceGroupShiftItemPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<AttendanceGroupShiftItemDO>()
|
||||
.eqIfPresent(AttendanceGroupShiftItemDO::getAttendanceGroupId, reqVO.getAttendanceGroupId())
|
||||
.eqIfPresent(AttendanceGroupShiftItemDO::getKqAttendanceGroupShiftId, reqVO.getKqAttendanceGroupShiftId())
|
||||
.eqIfPresent(AttendanceGroupShiftItemDO::getLevel, reqVO.getLevel())
|
||||
.betweenIfPresent(AttendanceGroupShiftItemDO::getBeginTime, reqVO.getBeginTime())
|
||||
.betweenIfPresent(AttendanceGroupShiftItemDO::getEndTime, reqVO.getEndTime())
|
||||
.eqIfPresent(AttendanceGroupShiftItemDO::getMustFlag, reqVO.getMustFlag())
|
||||
.eqIfPresent(AttendanceGroupShiftItemDO::getBeforePunchTimeUpWork, reqVO.getBeforePunchTimeUpWork())
|
||||
.eqIfPresent(AttendanceGroupShiftItemDO::getAfterPunchTimeUpWork, reqVO.getAfterPunchTimeUpWork())
|
||||
.eqIfPresent(AttendanceGroupShiftItemDO::getBeforePunchTimeDownWork, reqVO.getBeforePunchTimeDownWork())
|
||||
.eqIfPresent(AttendanceGroupShiftItemDO::getAfterPunchTimeDownWork, reqVO.getAfterPunchTimeDownWork())
|
||||
.betweenIfPresent(AttendanceGroupShiftItemDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(AttendanceGroupShiftItemDO::getId));
|
||||
}
|
||||
|
||||
}
|
@ -1,11 +1,9 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.attendance.groupuser;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
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.module.system.dal.dataobject.groupuser.AttendanceGroupUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupuser.AttendanceGroupUserDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupuser.vo.*;
|
||||
|
||||
|
@ -1,11 +1,9 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.attendance.punchrecord;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
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.module.system.dal.dataobject.punchrecord.AttendancePunchRecordDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.punchrecord.vo.*;
|
||||
|
||||
|
@ -1,11 +1,9 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.attendance.scheduling;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
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.module.system.dal.dataobject.scheduling.AttendanceSchedulingDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.scheduling.AttendanceSchedulingDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.*;
|
||||
|
||||
|
@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||
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.app.attendance.vo.HolidayVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.group.AttendanceGroupDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO;
|
||||
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.punch.PunchService;
|
||||
@ -31,7 +31,7 @@ public class AttendanceServiceImpl implements AttendanceService {
|
||||
@Resource
|
||||
private AttendanceGroupService attendanceGroupService;
|
||||
@Resource
|
||||
private StringRedisTemplate redisTemplate;
|
||||
private StringRedisTemplate stringRedisTemplate;
|
||||
|
||||
@Override
|
||||
public AttendancePunchPageVO getPunchPage(AttendancePunchPageDTO dto) {
|
||||
@ -53,19 +53,19 @@ public class AttendanceServiceImpl implements AttendanceService {
|
||||
String dateStr = DateUtils.dateFormat(date, "yyyy-MM-dd");
|
||||
String year = dateStr.substring(0, 4);
|
||||
String key = "holiday_" + year;
|
||||
Boolean flag = redisTemplate.hasKey(key);
|
||||
Boolean flag = stringRedisTemplate.hasKey(key);
|
||||
// 缓存不存在
|
||||
if (Boolean.FALSE.equals(flag)) {
|
||||
String url = "https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/" + year + ".json";
|
||||
String json = HttpUtil.get(url, 0);
|
||||
JSONObject jsonObject = JSONUtil.parseObj(json);
|
||||
Map<String, Boolean> map = jsonObject.getBeanList("days", HolidayVO.class).stream().collect(Collectors.toMap(HolidayVO::getDate, HolidayVO::getIsOffDay));
|
||||
redisTemplate.opsForHash().putAll(key, map);
|
||||
stringRedisTemplate.opsForHash().putAll(key, map);
|
||||
// -- 删除去年的
|
||||
String lastKey = "holiday_" + (Integer.parseInt(year) - 1);
|
||||
redisTemplate.delete(lastKey);
|
||||
stringRedisTemplate.delete(lastKey);
|
||||
}
|
||||
return (Boolean) redisTemplate.opsForHash().get(key, date);
|
||||
return (Boolean) stringRedisTemplate.opsForHash().get(key, date);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,11 +1,9 @@
|
||||
package cn.iocoder.yudao.module.system.service.attendance.fixed;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.fixed.AttendanceFixedDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.fixed.AttendanceFixedDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* 固定班制考勤设置 Service 接口
|
||||
|
@ -2,17 +2,20 @@ package cn.iocoder.yudao.module.system.service.attendance.fixed;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.distance.GeoUtil;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedSaveReqVO;
|
||||
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.dal.dataobject.fixed.AttendanceFixedDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.group.AttendanceGroupDO;
|
||||
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;
|
||||
import cn.iocoder.yudao.module.system.service.attendance.AttendanceService;
|
||||
import cn.iocoder.yudao.module.system.service.attendance.punch.PunchService;
|
||||
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;
|
||||
|
||||
@ -34,7 +37,10 @@ public class AttendanceFixedServiceImpl implements AttendanceFixedService, Punch
|
||||
@Resource
|
||||
private AttendanceFixedMapper fixedMapper;
|
||||
@Resource
|
||||
@Lazy // 避免依赖循环
|
||||
private AttendanceService attendanceService;
|
||||
@Resource
|
||||
private StringRedisTemplate stringRedisTemplate;
|
||||
|
||||
@Override
|
||||
public Long createFixed(AttendanceFixedSaveReqVO createReqVO) {
|
||||
@ -108,10 +114,24 @@ public class AttendanceFixedServiceImpl implements AttendanceFixedService, Punch
|
||||
if (attendanceFixedDO == null || attendanceFixedDO.getAttendanceGroupShiftId() == null) {
|
||||
return vo.setTodayNeedAttendance(AttendanceGroupDO.FALSE);
|
||||
}
|
||||
vo.setFieldworkFlag(activationGroup.getFieldworkFlag());
|
||||
// - 根据经纬度判断是否在对应班组的打卡点上
|
||||
vo.setCheckInPoint(GeoUtil.distance(Double.parseDouble(dto.getLatitude()), Double.parseDouble(dto.getLongitude())
|
||||
, Double.parseDouble(activationGroup.getLatitude()), Double.parseDouble(activationGroup.getLongitude()), activationGroup.getScope()));
|
||||
|
||||
// TODO: 2024/4/17 明天在努力
|
||||
|
||||
|
||||
String key = "attendance" + "_" + activationGroup.getId();
|
||||
// -- 这里的key 有个情况 - 就是上班时间和下班时间夸天了 - 所以 这里要判断下上下班时间 -
|
||||
// 是否夸天 - 如果是的话 判断当前是上班卡还是下班卡 - 如果是下班卡的话 当前时间需要减去一天
|
||||
String mapKey = dto.getUserId() + "_" + DateUtils.dateFormat(thisDate, DateUtils.FORMAT_YEAR_MONTH_DAY);
|
||||
Object value = stringRedisTemplate.opsForHash().get(key, mapKey);
|
||||
if (value != null) {
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.service.attendance.group;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
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.group.AttendanceGroupDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
|
@ -4,7 +4,7 @@ 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.group.vo.AttendanceGroupPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.group.vo.AttendanceGroupSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.group.AttendanceGroupDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.attendance.group.AttendanceGroupMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
@ -1,11 +1,9 @@
|
||||
package cn.iocoder.yudao.module.system.service.attendance.groupshift;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.groupshift.AttendanceGroupShiftDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshift.AttendanceGroupShiftDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* 考勤组班次 Service 接口
|
||||
|
@ -5,7 +5,7 @@ import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.groupshift.AttendanceGroupShiftDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshift.AttendanceGroupShiftDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
|
@ -0,0 +1,55 @@
|
||||
package cn.iocoder.yudao.module.system.service.attendance.groupshiftitem;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.vo.AttendanceGroupShiftItemPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.vo.AttendanceGroupShiftItemSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* 考勤组班次子表 Service 接口
|
||||
*
|
||||
* @author 艾楷
|
||||
*/
|
||||
public interface AttendanceGroupShiftItemService {
|
||||
|
||||
/**
|
||||
* 创建考勤组班次子表
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createAttendanceGroupShiftItem(@Valid AttendanceGroupShiftItemSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新考勤组班次子表
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateAttendanceGroupShiftItem(@Valid AttendanceGroupShiftItemSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除考勤组班次子表
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteAttendanceGroupShiftItem(Long id);
|
||||
|
||||
/**
|
||||
* 获得考勤组班次子表
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 考勤组班次子表
|
||||
*/
|
||||
AttendanceGroupShiftItemDO getAttendanceGroupShiftItem(Long id);
|
||||
|
||||
/**
|
||||
* 获得考勤组班次子表分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 考勤组班次子表分页
|
||||
*/
|
||||
PageResult<AttendanceGroupShiftItemDO> getAttendanceGroupShiftItemPage(AttendanceGroupShiftItemPageReqVO pageReqVO);
|
||||
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package cn.iocoder.yudao.module.system.service.attendance.groupshiftitem;
|
||||
|
||||
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.groupshiftitem.vo.AttendanceGroupShiftItemPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.vo.AttendanceGroupShiftItemSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.attendance.groupshiftitem.AttendanceGroupShiftItemMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 考勤组班次子表 Service 实现类
|
||||
*
|
||||
* @author 艾楷
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class AttendanceGroupShiftItemServiceImpl implements AttendanceGroupShiftItemService {
|
||||
|
||||
@Resource
|
||||
private AttendanceGroupShiftItemMapper attendanceGroupShiftItemMapper;
|
||||
|
||||
@Override
|
||||
public Long createAttendanceGroupShiftItem(AttendanceGroupShiftItemSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
AttendanceGroupShiftItemDO attendanceGroupShiftItem = BeanUtils.toBean(createReqVO, AttendanceGroupShiftItemDO.class);
|
||||
attendanceGroupShiftItemMapper.insert(attendanceGroupShiftItem);
|
||||
// 返回
|
||||
return attendanceGroupShiftItem.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateAttendanceGroupShiftItem(AttendanceGroupShiftItemSaveReqVO updateReqVO) {
|
||||
// 更新
|
||||
AttendanceGroupShiftItemDO updateObj = BeanUtils.toBean(updateReqVO, AttendanceGroupShiftItemDO.class);
|
||||
attendanceGroupShiftItemMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAttendanceGroupShiftItem(Long id) {
|
||||
// 删除
|
||||
attendanceGroupShiftItemMapper.deleteById(id);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AttendanceGroupShiftItemDO getAttendanceGroupShiftItem(Long id) {
|
||||
return attendanceGroupShiftItemMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<AttendanceGroupShiftItemDO> getAttendanceGroupShiftItemPage(AttendanceGroupShiftItemPageReqVO pageReqVO) {
|
||||
return attendanceGroupShiftItemMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
}
|
@ -1,11 +1,9 @@
|
||||
package cn.iocoder.yudao.module.system.service.attendance.groupuser;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupuser.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.groupuser.AttendanceGroupUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupuser.AttendanceGroupUserDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* 考勤组人员 Service 接口
|
||||
|
@ -5,7 +5,7 @@ import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.groupuser.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.groupuser.AttendanceGroupUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupuser.AttendanceGroupUserDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
|
@ -1,11 +1,9 @@
|
||||
package cn.iocoder.yudao.module.system.service.attendance.punchrecord;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.punchrecord.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.punchrecord.AttendancePunchRecordDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* 用户打卡记录 Service 接口
|
||||
|
@ -5,7 +5,7 @@ import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.punchrecord.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.punchrecord.AttendancePunchRecordDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
|
@ -1,11 +1,9 @@
|
||||
package cn.iocoder.yudao.module.system.service.attendance.scheduling;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.scheduling.AttendanceSchedulingDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.scheduling.AttendanceSchedulingDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* 排班制考勤设置 Service 接口
|
||||
|
@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceS
|
||||
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.dal.dataobject.scheduling.AttendanceSchedulingDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.scheduling.AttendanceSchedulingDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.attendance.scheduling.AttendanceSchedulingMapper;
|
||||
import cn.iocoder.yudao.module.system.service.attendance.punch.PunchService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -10,7 +10,7 @@
|
||||
-->
|
||||
|
||||
<select id="getByUserId"
|
||||
resultType="cn.iocoder.yudao.module.system.dal.dataobject.group.AttendanceGroupDO">
|
||||
resultType="cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO">
|
||||
select a.*
|
||||
from kq_attendance_group as a
|
||||
left join kq_attendance_group_user as b on a.id = b.attendance_group_id
|
||||
|
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.attendance.groupshiftitem.AttendanceGroupShiftItemMapper">
|
||||
|
||||
<!--
|
||||
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||
-->
|
||||
|
||||
</mapper>
|
Loading…
Reference in New Issue
Block a user