diff --git a/yudao-module-ai/yudao-module-ai-api/pom.xml b/yudao-module-ai/yudao-module-ai-api/pom.xml index 09d27de6a..784c20a5b 100644 --- a/yudao-module-ai/yudao-module-ai-api/pom.xml +++ b/yudao-module-ai/yudao-module-ai-api/pom.xml @@ -6,7 +6,7 @@ cn.iocoder.cloud yudao-module-ai ${revision} - + org.apache.maven.pluginsmaven-compiler-plugin88 4.0.0 yudao-module-ai-api jar diff --git a/yudao-module-hrmrg/pom.xml b/yudao-module-hrmrg/pom.xml new file mode 100644 index 000000000..d6f924d48 --- /dev/null +++ b/yudao-module-hrmrg/pom.xml @@ -0,0 +1,20 @@ + + + + yudao + cn.iocoder.cloud + ${revision} + + 4.0.0 + + yudao-module-hrmrg + pom + + ${project.artifactId} + + hrmrg 模块,主要实现 HRM 人力资源管理相关功能。 + + + diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-api/pom.xml b/yudao-module-hrmrg/yudao-module-hrmrg-api/pom.xml new file mode 100644 index 000000000..9d1eec921 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-api/pom.xml @@ -0,0 +1,26 @@ + + + + yudao-module-hrmrg + cn.iocoder.cloud + ${revision} + + 4.0.0 + yudao-module-hrmrg-api + jar + + ${project.artifactId} + + hrmrg-api 模块 API,暴露给其它模块调用 + + + + + cn.iocoder.cloud + yudao-common + + + + diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-api/src/main/java/cn/iocoder/yudao/module/hrmrg/enums/ErrorCodeConstants.java b/yudao-module-hrmrg/yudao-module-hrmrg-api/src/main/java/cn/iocoder/yudao/module/hrmrg/enums/ErrorCodeConstants.java new file mode 100644 index 000000000..95a033ef5 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-api/src/main/java/cn/iocoder/yudao/module/hrmrg/enums/ErrorCodeConstants.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.hrmrg.enums; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +/** + * HR 错误码枚举类 + * + * HR 系统,使用 1-100-000-000 段 + */ +public interface ErrorCodeConstants { + // ========== 考勤打卡 TODO 补充编号 ========== + ErrorCode ADMIN_ATMK_NOT_EXISTS = new ErrorCode(1-100-000-000, "考勤打卡不存在"); + + ErrorCode ADMIN_ATMK_FACE_NOT_EXISTS = new ErrorCode(1-200-000-000, "人脸识别库不存在"); + + // ========== 绩效考核配置 TODO 补充编号 ========== + ErrorCode ADMIN_PERF_CFG_NOT_EXISTS = new ErrorCode(1-300-000-000, "绩效考核配置不存在"); + + // ========== 考勤组设置 TODO 补充编号 ========== + ErrorCode ADMIN_ATMK_GROUT_CFG_NOT_EXISTS = new ErrorCode(1-400-000-000, "考勤组设置不存在"); + + // ========== 岗位人员薪资计算配置 TODO 补充编号 ========== + ErrorCode ADMIN_POST_CFG_NOT_EXISTS = new ErrorCode(1-500-000-000, "岗位人员薪资计算配置不存在"); + +} + diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/pom.xml b/yudao-module-hrmrg/yudao-module-hrmrg-biz/pom.xml new file mode 100644 index 000000000..0aff0cb19 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/pom.xml @@ -0,0 +1,113 @@ + + + + cn.iocoder.cloud + yudao-module-hrmrg + ${revision} + + 4.0.0 + yudao-module-hrmrg-biz + jar + + ${project.artifactId} + + hrmrg 模块,主要实现人力资源管理相关功能。 + + + + + + cn.iocoder.cloud + yudao-spring-boot-starter-env + + + + + cn.iocoder.cloud + yudao-module-hrmrg-api + ${revision} + + + + + + cn.iocoder.cloud + yudao-spring-boot-starter-biz-tenant + + + + + cn.iocoder.cloud + yudao-spring-boot-starter-web + + + cn.iocoder.cloud + yudao-spring-boot-starter-security + + + + + cn.iocoder.cloud + yudao-spring-boot-starter-mybatis + + + + + cn.iocoder.cloud + yudao-spring-boot-starter-rpc + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + cn.iocoder.cloud + yudao-spring-boot-starter-test + + + + + cn.iocoder.cloud + yudao-spring-boot-starter-excel + + + + + cn.iocoder.cloud + yudao-spring-boot-starter-monitor + + + + + + ${project.artifactId} + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring.boot.version} + + + + repackage + + + + + + + + diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/HrmrgServerApplication.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/HrmrgServerApplication.java new file mode 100644 index 000000000..76e8e351c --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/HrmrgServerApplication.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.hrmrg; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 项目的启动类 + * + * @author 唐盘江 + */ +@SpringBootApplication +public class HrmrgServerApplication { + public static void main(String[] args) { + SpringApplication.run(HrmrgServerApplication.class, args); + System.out.println("HrmrgServerApplication 启动成功"); + } + +} diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/AdminAtmkController.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/AdminAtmkController.java new file mode 100644 index 000000000..0ed4aaa7a --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/AdminAtmkController.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmk; + +import org.springframework.web.bind.annotation.*; + +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 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.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmk.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmk.AdminAtmkDO; +import cn.iocoder.yudao.module.hrmrg.service.adminatmk.AdminAtmkService; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +@Tag(name = "管理后台 - 考勤打卡") +@RestController +@RequestMapping("/hrmrg/admin-atmk") +@Validated +public class AdminAtmkController { + + @Resource + private AdminAtmkService adminAtmkService; + + @PostMapping("/create") + @Operation(summary = "创建考勤打卡") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk:create')") + public CommonResult createAdminAtmk(@Valid @RequestBody AdminAtmkSaveReqVO createReqVO) { + return success(adminAtmkService.createAdminAtmk(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新考勤打卡") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk:update')") + public CommonResult updateAdminAtmk(@Valid @RequestBody AdminAtmkSaveReqVO updateReqVO) { + adminAtmkService.updateAdminAtmk(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除考勤打卡") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk:delete')") + public CommonResult deleteAdminAtmk(@RequestParam("id") Integer id) { + adminAtmkService.deleteAdminAtmk(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得考勤打卡") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk:query')") + public CommonResult getAdminAtmk(@RequestParam("id") Integer id) { + AdminAtmkDO adminAtmk = adminAtmkService.getAdminAtmk(id); + return success(BeanUtils.toBean(adminAtmk, AdminAtmkRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得考勤打卡分页") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk:query')") + public CommonResult> getAdminAtmkPage(@Valid AdminAtmkPageReqVO pageReqVO) { + PageResult pageResult = adminAtmkService.getAdminAtmkPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AdminAtmkRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出考勤打卡 Excel") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportAdminAtmkExcel(@Valid AdminAtmkPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = adminAtmkService.getAdminAtmkPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "考勤打卡.xls", "数据", AdminAtmkRespVO.class, + BeanUtils.toBean(list, AdminAtmkRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/vo/AdminAtmkPageReqVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/vo/AdminAtmkPageReqVO.java new file mode 100644 index 000000000..28cb94136 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/vo/AdminAtmkPageReqVO.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmk.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 AdminAtmkPageReqVO extends PageParam { + + @Schema(description = "类型1用户2会员3其他") + private String typeBiz; + + @Schema(description = "岗位或人员ID", example = "5147") + private Long userId; + + @Schema(description = "上班时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startTime; + + @Schema(description = "下班时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endTime; + + @Schema(description = "迟到时间") + private Integer lateTimeLimit; + + @Schema(description = "早退时间") + private Integer earlyLeavingTimeLimit; + + @Schema(description = "定位打卡范围的名称", example = "张三") + private String areaName; + + @Schema(description = "经度") + private String latitude; + + @Schema(description = "维度") + private String longitude; + + @Schema(description = "打卡位置经度") + private String checkInLocation; + + @Schema(description = "离岗位置维度") + private String checkOutLocation; + + @Schema(description = "人脸识别结果") + private String faceRecognitionResult; + + @Schema(description = "打卡人脸照") + private byte[] checkInPhoto; + + @Schema(description = "离岗人脸照") + private byte[] checkOutPhoto; + + @Schema(description = "人脸识别库") + private byte[] faceData; + + @Schema(description = "状态(0正常 1停用)", example = "1") + private Integer status; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/vo/AdminAtmkRespVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/vo/AdminAtmkRespVO.java new file mode 100644 index 000000000..6f76a2984 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/vo/AdminAtmkRespVO.java @@ -0,0 +1,94 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmk.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 考勤打卡 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AdminAtmkRespVO { + + @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23083") + @ExcelProperty("岗位ID") + private Integer id; + + @Schema(description = "类型1用户2会员3其他") + @ExcelProperty(value = "类型1用户2会员3其他", converter = DictConvert.class) + @DictFormat("hr_att_punch_biz_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String typeBiz; + + @Schema(description = "岗位或人员ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5147") + @ExcelProperty("岗位或人员ID") + private Long userId; + + @Schema(description = "上班时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("上班时间") + private LocalDateTime startTime; + + @Schema(description = "下班时间") + @ExcelProperty("下班时间") + private LocalDateTime endTime; + + @Schema(description = "迟到时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("迟到时间") + private Integer lateTimeLimit; + + @Schema(description = "早退时间") + @ExcelProperty("早退时间") + private Integer earlyLeavingTimeLimit; + + @Schema(description = "定位打卡范围的名称", example = "张三") + @ExcelProperty("定位打卡范围的名称") + private String areaName; + + @Schema(description = "经度") + @ExcelProperty("经度") + private String latitude; + + @Schema(description = "维度") + @ExcelProperty("维度") + private String longitude; + + @Schema(description = "打卡位置经度") + @ExcelProperty("打卡位置经度") + private String checkInLocation; + + @Schema(description = "离岗位置维度") + @ExcelProperty("离岗位置维度") + private String checkOutLocation; + + @Schema(description = "人脸识别结果") + @ExcelProperty("人脸识别结果") + private String faceRecognitionResult; + + @Schema(description = "打卡人脸照") + @ExcelProperty("打卡人脸照") + private byte[] checkInPhoto; + + @Schema(description = "离岗人脸照") + @ExcelProperty("离岗人脸照") + private byte[] checkOutPhoto; + + @Schema(description = "人脸识别库") + @ExcelProperty("人脸识别库") + private byte[] faceData; + + @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("状态(0正常 1停用)") + private Integer status; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/vo/AdminAtmkSaveReqVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/vo/AdminAtmkSaveReqVO.java new file mode 100644 index 000000000..b2174efde --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmk/vo/AdminAtmkSaveReqVO.java @@ -0,0 +1,73 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmk.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 考勤打卡新增/修改 Request VO") +@Data +public class AdminAtmkSaveReqVO { + + @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23083") + private Integer id; + + @Schema(description = "类型1用户2会员3其他") + private String typeBiz; + + @Schema(description = "岗位或人员ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5147") + @NotNull(message = "岗位或人员ID不能为空") + private Long userId; + + @Schema(description = "上班时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "上班时间不能为空") + private LocalDateTime startTime; + + @Schema(description = "下班时间") + private LocalDateTime endTime; + + @Schema(description = "迟到时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "迟到时间不能为空") + private Integer lateTimeLimit; + + @Schema(description = "早退时间") + private Integer earlyLeavingTimeLimit; + + @Schema(description = "定位打卡范围的名称", example = "张三") + private String areaName; + + @Schema(description = "经度") + private String latitude; + + @Schema(description = "维度") + private String longitude; + + @Schema(description = "打卡位置经度") + private String checkInLocation; + + @Schema(description = "离岗位置维度") + private String checkOutLocation; + + @Schema(description = "人脸识别结果") + private String faceRecognitionResult; + + @Schema(description = "打卡人脸照") + private byte[] checkInPhoto; + + @Schema(description = "离岗人脸照") + private byte[] checkOutPhoto; + + @Schema(description = "人脸识别库") + private byte[] faceData; + + @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "状态(0正常 1停用)不能为空") + private Integer status; + + @Schema(description = "备注", example = "随便") + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/AdminAtmkFaceController.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/AdminAtmkFaceController.java new file mode 100644 index 000000000..848940387 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/AdminAtmkFaceController.java @@ -0,0 +1,97 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkface; + +import org.springframework.web.bind.annotation.*; + +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 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.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkface.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmkface.AdminAtmkFaceDO; +import cn.iocoder.yudao.module.hrmrg.service.adminatmkface.AdminAtmkFaceService; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +@Tag(name = "管理后台 - 人脸识别库") +@RestController +@RequestMapping("/hrmrg/admin-atmk-face") +@Validated +public class AdminAtmkFaceController { + + @Resource + private AdminAtmkFaceService adminAtmkFaceService; + + @PostMapping("/create") + @Operation(summary = "创建人脸识别库") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-face:create')") + public CommonResult createAdminAtmkFace(@Valid @RequestBody AdminAtmkFaceSaveReqVO createReqVO) { + return success(adminAtmkFaceService.createAdminAtmkFace(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新人脸识别库") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-face:update')") + public CommonResult updateAdminAtmkFace(@Valid @RequestBody AdminAtmkFaceSaveReqVO updateReqVO) { + adminAtmkFaceService.updateAdminAtmkFace(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除人脸识别库") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-face:delete')") + public CommonResult deleteAdminAtmkFace(@RequestParam("id") Integer id) { + adminAtmkFaceService.deleteAdminAtmkFace(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得人脸识别库") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-face:query')") + public CommonResult getAdminAtmkFace(@RequestParam("id") Integer id) { + AdminAtmkFaceDO adminAtmkFace = adminAtmkFaceService.getAdminAtmkFace(id); + return success(BeanUtils.toBean(adminAtmkFace, AdminAtmkFaceRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得人脸识别库分页") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-face:query')") + public CommonResult> getAdminAtmkFacePage(@Valid AdminAtmkFacePageReqVO pageReqVO) { + PageResult pageResult = adminAtmkFaceService.getAdminAtmkFacePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AdminAtmkFaceRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出人脸识别库 Excel") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-face:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportAdminAtmkFaceExcel(@Valid AdminAtmkFacePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = adminAtmkFaceService.getAdminAtmkFacePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "人脸识别库.xls", "数据", AdminAtmkFaceRespVO.class, + BeanUtils.toBean(list, AdminAtmkFaceRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/vo/AdminAtmkFacePageReqVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/vo/AdminAtmkFacePageReqVO.java new file mode 100644 index 000000000..1f022df73 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/vo/AdminAtmkFacePageReqVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkface.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 AdminAtmkFacePageReqVO extends PageParam { + + @Schema(description = "类型1员工2会员4其他") + private String typeBiz; + + @Schema(description = "部门id", example = "17318") + private Long deptId; + + @Schema(description = "岗位或人员ID", example = "1025") + private Long userId; + + @Schema(description = "身份证号") + private String userNo; + + @Schema(description = "名字", example = "赵六") + private String userName; + + @Schema(description = "人脸数据") + private byte[] faceData; + + @Schema(description = "显示顺序") + private Integer sort; + + @Schema(description = "状态(0正常 1停用)", example = "2") + private Integer status; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/vo/AdminAtmkFaceRespVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/vo/AdminAtmkFaceRespVO.java new file mode 100644 index 000000000..dc0c2cb44 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/vo/AdminAtmkFaceRespVO.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkface.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 人脸识别库 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AdminAtmkFaceRespVO { + + @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15439") + @ExcelProperty("岗位ID") + private Integer id; + + @Schema(description = "类型1员工2会员4其他") + @ExcelProperty(value = "类型1员工2会员4其他", converter = DictConvert.class) + @DictFormat("hr_att_punch_biz_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String typeBiz; + + @Schema(description = "部门id", example = "17318") + @ExcelProperty("部门id") + private Long deptId; + + @Schema(description = "岗位或人员ID", example = "1025") + @ExcelProperty("岗位或人员ID") + private Long userId; + + @Schema(description = "身份证号") + @ExcelProperty("身份证号") + private String userNo; + + @Schema(description = "名字", example = "赵六") + @ExcelProperty("名字") + private String userName; + + @Schema(description = "人脸数据", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("人脸数据") + private byte[] faceData; + + @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("显示顺序") + private Integer sort; + + @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态(0正常 1停用)") + private Integer status; + + @Schema(description = "备注", example = "你猜") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/vo/AdminAtmkFaceSaveReqVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/vo/AdminAtmkFaceSaveReqVO.java new file mode 100644 index 000000000..28fae465e --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkface/vo/AdminAtmkFaceSaveReqVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkface.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import javax.validation.constraints.NotNull; +import java.util.*; + +@Schema(description = "管理后台 - 人脸识别库新增/修改 Request VO") +@Data +public class AdminAtmkFaceSaveReqVO { + + @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15439") + private Integer id; + + @Schema(description = "类型1员工2会员4其他") + private String typeBiz; + + @Schema(description = "部门id", example = "17318") + private Long deptId; + + @Schema(description = "岗位或人员ID", example = "1025") + private Long userId; + + @Schema(description = "身份证号") + private String userNo; + + @Schema(description = "名字", example = "赵六") + private String userName; + + @Schema(description = "人脸数据", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "人脸数据不能为空") + private byte[] faceData; + + @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "显示顺序不能为空") + private Integer sort; + + @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "状态(0正常 1停用)不能为空") + private Integer status; + + @Schema(description = "备注", example = "你猜") + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/AdminAtmkGroutCfgController.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/AdminAtmkGroutCfgController.java new file mode 100644 index 000000000..8b2e320fd --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/AdminAtmkGroutCfgController.java @@ -0,0 +1,94 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkgroutcfg; + +import org.springframework.web.bind.annotation.*; +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 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.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkgroutcfg.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmkgroutcfg.AdminAtmkGroutCfgDO; +import cn.iocoder.yudao.module.hrmrg.service.adminatmkgroutcfg.AdminAtmkGroutCfgService; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +@Tag(name = "管理后台 - 考勤组设置") +@RestController +@RequestMapping("/hrmrg/admin-atmk-grout-cfg") +@Validated +public class AdminAtmkGroutCfgController { + + @Resource + private AdminAtmkGroutCfgService adminAtmkGroutCfgService; + + @PostMapping("/create") + @Operation(summary = "创建考勤组设置") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-grout-cfg:create')") + public CommonResult createAdminAtmkGroutCfg(@Valid @RequestBody AdminAtmkGroutCfgSaveReqVO createReqVO) { + return success(adminAtmkGroutCfgService.createAdminAtmkGroutCfg(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新考勤组设置") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-grout-cfg:update')") + public CommonResult updateAdminAtmkGroutCfg(@Valid @RequestBody AdminAtmkGroutCfgSaveReqVO updateReqVO) { + adminAtmkGroutCfgService.updateAdminAtmkGroutCfg(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除考勤组设置") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-grout-cfg:delete')") + public CommonResult deleteAdminAtmkGroutCfg(@RequestParam("id") Integer id) { + adminAtmkGroutCfgService.deleteAdminAtmkGroutCfg(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得考勤组设置") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-grout-cfg:query')") + public CommonResult getAdminAtmkGroutCfg(@RequestParam("id") Integer id) { + AdminAtmkGroutCfgDO adminAtmkGroutCfg = adminAtmkGroutCfgService.getAdminAtmkGroutCfg(id); + return success(BeanUtils.toBean(adminAtmkGroutCfg, AdminAtmkGroutCfgRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得考勤组设置分页") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-grout-cfg:query')") + public CommonResult> getAdminAtmkGroutCfgPage(@Valid AdminAtmkGroutCfgPageReqVO pageReqVO) { + PageResult pageResult = adminAtmkGroutCfgService.getAdminAtmkGroutCfgPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AdminAtmkGroutCfgRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出考勤组设置 Excel") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-atmk-grout-cfg:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportAdminAtmkGroutCfgExcel(@Valid AdminAtmkGroutCfgPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = adminAtmkGroutCfgService.getAdminAtmkGroutCfgPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "考勤组设置.xls", "数据", AdminAtmkGroutCfgRespVO.class, + BeanUtils.toBean(list, AdminAtmkGroutCfgRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/vo/AdminAtmkGroutCfgPageReqVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/vo/AdminAtmkGroutCfgPageReqVO.java new file mode 100644 index 000000000..83abb7b7d --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/vo/AdminAtmkGroutCfgPageReqVO.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkgroutcfg.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 AdminAtmkGroutCfgPageReqVO extends PageParam { + + @Schema(description = "类型1员工2其他") + private Long typeBiz; + + @Schema(description = "部门id", example = "3928") + private Long deptId; + + @Schema(description = "考勤组编码") + private String groupCode; + + @Schema(description = "考勤组名称", example = "芋艿") + private String groupName; + + @Schema(description = "上班时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startTime; + + @Schema(description = "下班时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endTime; + + @Schema(description = "定位打卡范围的名称", example = "李四") + private String areaName; + + @Schema(description = "经度") + private String latitude; + + @Schema(description = "维度") + private String longitude; + + @Schema(description = "状态(0正常 1停用)", example = "2") + private Integer status; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/vo/AdminAtmkGroutCfgRespVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/vo/AdminAtmkGroutCfgRespVO.java new file mode 100644 index 000000000..2d45e1c8e --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/vo/AdminAtmkGroutCfgRespVO.java @@ -0,0 +1,70 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkgroutcfg.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 考勤组设置 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AdminAtmkGroutCfgRespVO { + + @Schema(description = "考勤组id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9027") + @ExcelProperty("考勤组id") + private Integer id; + + @Schema(description = "类型1员工2其他") + @ExcelProperty("类型1员工2其他") + private Long typeBiz; + + @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3928") + @ExcelProperty("部门id") + private Long deptId; + + @Schema(description = "考勤组编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "考勤组编码", converter = DictConvert.class) + @DictFormat("hr_att_punch_group") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String groupCode; + + @Schema(description = "考勤组名称", example = "芋艿") + @ExcelProperty("考勤组名称") + private String groupName; + + @Schema(description = "上班时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("上班时间") + private LocalDateTime startTime; + + @Schema(description = "下班时间") + @ExcelProperty("下班时间") + private LocalDateTime endTime; + + @Schema(description = "定位打卡范围的名称", example = "李四") + @ExcelProperty("定位打卡范围的名称") + private String areaName; + + @Schema(description = "经度") + @ExcelProperty("经度") + private String latitude; + + @Schema(description = "维度") + @ExcelProperty("维度") + private String longitude; + + @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("状态(0正常 1停用)") + private Integer status; + + @Schema(description = "备注", example = "你猜") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/vo/AdminAtmkGroutCfgSaveReqVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/vo/AdminAtmkGroutCfgSaveReqVO.java new file mode 100644 index 000000000..3a51006eb --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminatmkgroutcfg/vo/AdminAtmkGroutCfgSaveReqVO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkgroutcfg.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 考勤组设置新增/修改 Request VO") +@Data +public class AdminAtmkGroutCfgSaveReqVO { + + @Schema(description = "考勤组id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9027") + private Integer id; + + @Schema(description = "类型1员工2其他") + private Long typeBiz; + + @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3928") + @NotNull(message = "部门id不能为空") + private Long deptId; + + @Schema(description = "考勤组编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "考勤组编码不能为空") + private String groupCode; + + @Schema(description = "考勤组名称", example = "芋艿") + private String groupName; + + @Schema(description = "上班时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "上班时间不能为空") + private LocalDateTime startTime; + + @Schema(description = "下班时间") + private LocalDateTime endTime; + + @Schema(description = "定位打卡范围的名称", example = "李四") + private String areaName; + + @Schema(description = "经度") + private String latitude; + + @Schema(description = "维度") + private String longitude; + + @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "状态(0正常 1停用)不能为空") + private Integer status; + + @Schema(description = "备注", example = "你猜") + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/AdminPerfCfgController.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/AdminPerfCfgController.java new file mode 100644 index 000000000..b395f3662 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/AdminPerfCfgController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminperfcfg; + +import org.springframework.web.bind.annotation.*; +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 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.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminperfcfg.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminperfcfg.AdminPerfCfgDO; +import cn.iocoder.yudao.module.hrmrg.service.adminperfcfg.AdminPerfCfgService; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +@Tag(name = "管理后台 - 绩效考核配置") +@RestController +@RequestMapping("/hrmrg/admin-perf-cfg") +@Validated +public class AdminPerfCfgController { + + @Resource + private AdminPerfCfgService adminPerfCfgService; + + @PostMapping("/create") + @Operation(summary = "创建绩效考核配置") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-perf-cfg:create')") + public CommonResult createAdminPerfCfg(@Valid @RequestBody AdminPerfCfgSaveReqVO createReqVO) { + return success(adminPerfCfgService.createAdminPerfCfg(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新绩效考核配置") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-perf-cfg:update')") + public CommonResult updateAdminPerfCfg(@Valid @RequestBody AdminPerfCfgSaveReqVO updateReqVO) { + adminPerfCfgService.updateAdminPerfCfg(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除绩效考核配置") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('hrmrg:admin-perf-cfg:delete')") + public CommonResult deleteAdminPerfCfg(@RequestParam("id") Integer id) { + adminPerfCfgService.deleteAdminPerfCfg(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得绩效考核配置") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-perf-cfg:query')") + public CommonResult getAdminPerfCfg(@RequestParam("id") Integer id) { + AdminPerfCfgDO adminPerfCfg = adminPerfCfgService.getAdminPerfCfg(id); + return success(BeanUtils.toBean(adminPerfCfg, AdminPerfCfgRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得绩效考核配置分页") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-perf-cfg:query')") + public CommonResult> getAdminPerfCfgPage(@Valid AdminPerfCfgPageReqVO pageReqVO) { + PageResult pageResult = adminPerfCfgService.getAdminPerfCfgPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AdminPerfCfgRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出绩效考核配置 Excel") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-perf-cfg:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportAdminPerfCfgExcel(@Valid AdminPerfCfgPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = adminPerfCfgService.getAdminPerfCfgPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "绩效考核配置.xls", "数据", AdminPerfCfgRespVO.class, + BeanUtils.toBean(list, AdminPerfCfgRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/vo/AdminPerfCfgPageReqVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/vo/AdminPerfCfgPageReqVO.java new file mode 100644 index 000000000..60a2c317d --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/vo/AdminPerfCfgPageReqVO.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminperfcfg.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 AdminPerfCfgPageReqVO extends PageParam { + + @Schema(description = "类型1部门2会员3其他") + private String typeBiz; + + @Schema(description = "部门ID或员工id", example = "10265") + private Long deptOrUserId; + + @Schema(description = "标题") + private String title; + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] starTime; + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endTime; + + @Schema(description = "分数") + private Integer sorce; + + @Schema(description = "考核说明") + private String evg; + + @Schema(description = "考核项目") + private String evgItem; + + @Schema(description = "显示顺序") + private Integer sort; + + @Schema(description = "状态(0正常 1停用)", example = "1") + private Integer status; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/vo/AdminPerfCfgRespVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/vo/AdminPerfCfgRespVO.java new file mode 100644 index 000000000..4f9092528 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/vo/AdminPerfCfgRespVO.java @@ -0,0 +1,70 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminperfcfg.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 绩效考核配置 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AdminPerfCfgRespVO { + + @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23965") + @ExcelProperty("岗位ID") + private Integer id; + + @Schema(description = "类型1部门2会员3其他") + @ExcelProperty(value = "类型1部门2会员3其他", converter = DictConvert.class) + @DictFormat("hr_att_punch_biz_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String typeBiz; + + @Schema(description = "部门ID或员工id", example = "10265") + @ExcelProperty("部门ID或员工id") + private Long deptOrUserId; + + @Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("标题") + private String title; + + @Schema(description = "开始时间") + @ExcelProperty("开始时间") + private LocalDateTime starTime; + + @Schema(description = "结束时间") + @ExcelProperty("结束时间") + private LocalDateTime endTime; + + @Schema(description = "分数") + @ExcelProperty("分数") + private Integer sorce; + + @Schema(description = "考核说明") + @ExcelProperty("考核说明") + private String evg; + + @Schema(description = "考核项目", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("考核项目") + private String evgItem; + + @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("显示顺序") + private Integer sort; + + @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("状态(0正常 1停用)") + private Integer status; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/vo/AdminPerfCfgSaveReqVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/vo/AdminPerfCfgSaveReqVO.java new file mode 100644 index 000000000..95cfdb8cd --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminperfcfg/vo/AdminPerfCfgSaveReqVO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminperfcfg.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 绩效考核配置新增/修改 Request VO") +@Data +public class AdminPerfCfgSaveReqVO { + + @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23965") + private Integer id; + + @Schema(description = "类型1部门2会员3其他") + private String typeBiz; + + @Schema(description = "部门ID或员工id", example = "10265") + private Long deptOrUserId; + + @Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "标题不能为空") + private String title; + + @Schema(description = "开始时间") + private LocalDateTime starTime; + + @Schema(description = "结束时间") + private LocalDateTime endTime; + + @Schema(description = "分数") + private Integer sorce; + + @Schema(description = "考核说明") + private String evg; + + @Schema(description = "考核项目", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "考核项目不能为空") + private String evgItem; + + @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "显示顺序不能为空") + private Integer sort; + + @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "状态(0正常 1停用)不能为空") + private Integer status; + + @Schema(description = "备注", example = "随便") + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/AdminPostCfgController.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/AdminPostCfgController.java new file mode 100644 index 000000000..7b6f3a4be --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/AdminPostCfgController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminpostcfg; + +import org.springframework.web.bind.annotation.*; +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 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.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminpostcfg.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminpostcfg.AdminPostCfgDO; +import cn.iocoder.yudao.module.hrmrg.service.adminpostcfg.AdminPostCfgService; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +@Tag(name = "管理后台 - 岗位人员薪资计算配置") +@RestController +@RequestMapping("/hrmrg/admin-post-cfg") +@Validated +public class AdminPostCfgController { + + @Resource + private AdminPostCfgService adminPostCfgService; + + @PostMapping("/create") + @Operation(summary = "创建岗位人员薪资计算配置") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-post-cfg:create')") + public CommonResult createAdminPostCfg(@Valid @RequestBody AdminPostCfgSaveReqVO createReqVO) { + return success(adminPostCfgService.createAdminPostCfg(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新岗位人员薪资计算配置") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-post-cfg:update')") + public CommonResult updateAdminPostCfg(@Valid @RequestBody AdminPostCfgSaveReqVO updateReqVO) { + adminPostCfgService.updateAdminPostCfg(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除岗位人员薪资计算配置") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('hrmrg:admin-post-cfg:delete')") + public CommonResult deleteAdminPostCfg(@RequestParam("id") Integer id) { + adminPostCfgService.deleteAdminPostCfg(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得岗位人员薪资计算配置") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-post-cfg:query')") + public CommonResult getAdminPostCfg(@RequestParam("id") Integer id) { + AdminPostCfgDO adminPostCfg = adminPostCfgService.getAdminPostCfg(id); + return success(BeanUtils.toBean(adminPostCfg, AdminPostCfgRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得岗位人员薪资计算配置分页") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-post-cfg:query')") + public CommonResult> getAdminPostCfgPage(@Valid AdminPostCfgPageReqVO pageReqVO) { + PageResult pageResult = adminPostCfgService.getAdminPostCfgPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AdminPostCfgRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出岗位人员薪资计算配置 Excel") + @PreAuthorize("@ss.hasPermission('hrmrg:admin-post-cfg:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportAdminPostCfgExcel(@Valid AdminPostCfgPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = adminPostCfgService.getAdminPostCfgPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "岗位人员薪资计算配置.xls", "数据", AdminPostCfgRespVO.class, + BeanUtils.toBean(list, AdminPostCfgRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/vo/AdminPostCfgPageReqVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/vo/AdminPostCfgPageReqVO.java new file mode 100644 index 000000000..8fd0c307f --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/vo/AdminPostCfgPageReqVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminpostcfg.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +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 AdminPostCfgPageReqVO extends PageParam { + + @Schema(description = "类型1岗位2用户3迟到4早退5旷工6加班7基本工资") + private String typeBiz; + + @Schema(description = "项目1增减2扣减3不变", example = "1") + private String itemType; + + @Schema(description = "岗位或人员ID", example = "25542") + private Long postOrUserId; + + @Schema(description = "上下班时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] checkInOutTime; + + @Schema(description = "薪资") + private Integer salary; + + @Schema(description = "系数") + private BigDecimal coef; + + @Schema(description = "显示顺序") + private Integer sort; + + @Schema(description = "状态(0正常 1停用)", example = "1") + private Integer status; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/vo/AdminPostCfgRespVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/vo/AdminPostCfgRespVO.java new file mode 100644 index 000000000..f1a499f3a --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/vo/AdminPostCfgRespVO.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminpostcfg.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 岗位人员薪资计算配置 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AdminPostCfgRespVO { + + @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30426") + @ExcelProperty("岗位ID") + private Integer id; + + @Schema(description = "类型1岗位2用户3迟到4早退5旷工6加班7基本工资") + @ExcelProperty(value = "类型1岗位2用户3迟到4早退5旷工6加班7基本工资", converter = DictConvert.class) + @DictFormat("hr_admin_post_cfg_biz_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String typeBiz; + + @Schema(description = "项目1增减2扣减3不变", example = "1") + @ExcelProperty(value = "项目1增减2扣减3不变", converter = DictConvert.class) + @DictFormat("hr_admin_post_cfg_biz_item") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String itemType; + + @Schema(description = "岗位或人员ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25542") + @ExcelProperty("岗位或人员ID") + private Long postOrUserId; + + @Schema(description = "上下班时间") + @ExcelProperty("上下班时间") + private LocalDateTime checkInOutTime; + + @Schema(description = "薪资", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("薪资") + private Integer salary; + + @Schema(description = "系数") + @ExcelProperty("系数") + private BigDecimal coef; + + @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("显示顺序") + private Integer sort; + + @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("状态(0正常 1停用)") + private Integer status; + + @Schema(description = "备注", example = "你猜") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/vo/AdminPostCfgSaveReqVO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/vo/AdminPostCfgSaveReqVO.java new file mode 100644 index 000000000..5435914e4 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/controller/admin/adminpostcfg/vo/AdminPostCfgSaveReqVO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.hrmrg.controller.admin.adminpostcfg.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 岗位人员薪资计算配置新增/修改 Request VO") +@Data +public class AdminPostCfgSaveReqVO { + + @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30426") + private Integer id; + + @Schema(description = "类型1岗位2用户3迟到4早退5旷工6加班7基本工资") + private String typeBiz; + + @Schema(description = "项目1增减2扣减3不变", example = "1") + private String itemType; + + @Schema(description = "岗位或人员ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25542") + @NotNull(message = "岗位或人员ID不能为空") + private Long postOrUserId; + + @Schema(description = "上下班时间") + private LocalDateTime checkInOutTime; + + @Schema(description = "薪资", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "薪资不能为空") + private Integer salary; + + @Schema(description = "系数") + private BigDecimal coef; + + @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "显示顺序不能为空") + private Integer sort; + + @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "状态(0正常 1停用)不能为空") + private Integer status; + + @Schema(description = "备注", example = "你猜") + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminatmk/AdminAtmkDO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminatmk/AdminAtmkDO.java new file mode 100644 index 000000000..098387282 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminatmk/AdminAtmkDO.java @@ -0,0 +1,103 @@ +package cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmk; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +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("hr_admin_atmk") +@KeySequence("hr_admin_atmk_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AdminAtmkDO extends BaseDO { + + /** + * 岗位ID + */ + @TableId + private Integer id; + /** + * 类型1用户2会员3其他 + * + * 枚举 {@link TODO hr_att_punch_biz_type 对应的类} + */ + private String typeBiz; + /** + * 岗位或人员ID + */ + private Long userId; + /** + * 上班时间 + */ + private LocalDateTime startTime; + /** + * 下班时间 + */ + private LocalDateTime endTime; + /** + * 迟到时间 + */ + private Integer lateTimeLimit; + /** + * 早退时间 + */ + private Integer earlyLeavingTimeLimit; + /** + * 定位打卡范围的名称 + */ + private String areaName; + /** + * 经度 + */ + private String latitude; + /** + * 维度 + */ + private String longitude; + /** + * 打卡位置经度 + */ + private String checkInLocation; + /** + * 离岗位置维度 + */ + private String checkOutLocation; + /** + * 人脸识别结果 + */ + private String faceRecognitionResult; + /** + * 打卡人脸照 + */ + private byte[] checkInPhoto; + /** + * 离岗人脸照 + */ + private byte[] checkOutPhoto; + /** + * 人脸识别库 + */ + private byte[] faceData; + /** + * 状态(0正常 1停用) + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminatmkface/AdminAtmkFaceDO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminatmkface/AdminAtmkFaceDO.java new file mode 100644 index 000000000..a457fe0e6 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminatmkface/AdminAtmkFaceDO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmkface; + +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("hr_admin_atmk_face") +@KeySequence("hr_admin_atmk_face_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AdminAtmkFaceDO extends BaseDO { + + /** + * 岗位ID + */ + @TableId + private Integer id; + /** + * 类型1员工2会员4其他 + * + * 枚举 {@link TODO hr_att_punch_biz_type 对应的类} + */ + private String typeBiz; + /** + * 部门id + */ + private Long deptId; + /** + * 岗位或人员ID + */ + private Long userId; + /** + * 身份证号 + */ + private String userNo; + /** + * 名字 + */ + private String userName; + /** + * 人脸数据 + */ + private byte[] faceData; + /** + * 显示顺序 + */ + private Integer sort; + /** + * 状态(0正常 1停用) + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminatmkgroutcfg/AdminAtmkGroutCfgDO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminatmkgroutcfg/AdminAtmkGroutCfgDO.java new file mode 100644 index 000000000..5c10a0c4d --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminatmkgroutcfg/AdminAtmkGroutCfgDO.java @@ -0,0 +1,79 @@ +package cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmkgroutcfg; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +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("hr_admin_atmk_grout_cfg") +@KeySequence("hr_admin_atmk_grout_cfg_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AdminAtmkGroutCfgDO extends BaseDO { + + /** + * 考勤组id + */ + @TableId + private Integer id; + /** + * 类型1员工2其他 + */ + private Long typeBiz; + /** + * 部门id + */ + private Long deptId; + /** + * 考勤组编码 + * + * 枚举 {@link TODO hr_att_punch_group 对应的类} + */ + private String groupCode; + /** + * 考勤组名称 + */ + private String groupName; + /** + * 上班时间 + */ + private LocalDateTime startTime; + /** + * 下班时间 + */ + private LocalDateTime endTime; + /** + * 定位打卡范围的名称 + */ + private String areaName; + /** + * 经度 + */ + private String latitude; + /** + * 维度 + */ + private String longitude; + /** + * 状态(0正常 1停用) + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminperfcfg/AdminPerfCfgDO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminperfcfg/AdminPerfCfgDO.java new file mode 100644 index 000000000..5660d78cd --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminperfcfg/AdminPerfCfgDO.java @@ -0,0 +1,79 @@ +package cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminperfcfg; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +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("hr_admin_perf_cfg") +@KeySequence("hr_admin_perf_cfg_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AdminPerfCfgDO extends BaseDO { + + /** + * 岗位ID + */ + @TableId + private Integer id; + /** + * 类型1部门2会员3其他 + * + * 枚举 {@link TODO hr_att_punch_biz_type 对应的类} + */ + private String typeBiz; + /** + * 部门ID或员工id + */ + private Long deptOrUserId; + /** + * 标题 + */ + private String title; + /** + * 开始时间 + */ + private LocalDateTime starTime; + /** + * 结束时间 + */ + private LocalDateTime endTime; + /** + * 分数 + */ + private Integer sorce; + /** + * 考核说明 + */ + private String evg; + /** + * 考核项目 + */ + private String evgItem; + /** + * 显示顺序 + */ + private Integer sort; + /** + * 状态(0正常 1停用) + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminpostcfg/AdminPostCfgDO.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminpostcfg/AdminPostCfgDO.java new file mode 100644 index 000000000..8948a68d4 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/dataobject/adminpostcfg/AdminPostCfgDO.java @@ -0,0 +1,73 @@ +package cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminpostcfg; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.math.BigDecimal; +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("hr_admin_post_cfg") +@KeySequence("hr_admin_post_cfg_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AdminPostCfgDO extends BaseDO { + + /** + * 岗位ID + */ + @TableId + private Integer id; + /** + * 类型1岗位2用户3迟到4早退5旷工6加班7基本工资 + * + * 枚举 {@link TODO hr_admin_post_cfg_biz_type 对应的类} + */ + private String typeBiz; + /** + * 项目1增减2扣减3不变 + * + * 枚举 {@link TODO hr_admin_post_cfg_biz_item 对应的类} + */ + private String itemType; + /** + * 岗位或人员ID + */ + private Long postOrUserId; + /** + * 上下班时间 + */ + private LocalDateTime checkInOutTime; + /** + * 薪资 + */ + private Integer salary; + /** + * 系数 + */ + private BigDecimal coef; + /** + * 显示顺序 + */ + private Integer sort; + /** + * 状态(0正常 1停用) + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminatmk/AdminAtmkMapper.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminatmk/AdminAtmkMapper.java new file mode 100644 index 000000000..22565a2be --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminatmk/AdminAtmkMapper.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.hrmrg.dal.mysql.adminatmk; + +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.hrmrg.dal.dataobject.adminatmk.AdminAtmkDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmk.vo.*; + +/** + * 考勤打卡 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface AdminAtmkMapper extends BaseMapperX { + + default PageResult selectPage(AdminAtmkPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(AdminAtmkDO::getTypeBiz, reqVO.getTypeBiz()) + .eqIfPresent(AdminAtmkDO::getUserId, reqVO.getUserId()) + .betweenIfPresent(AdminAtmkDO::getStartTime, reqVO.getStartTime()) + .betweenIfPresent(AdminAtmkDO::getEndTime, reqVO.getEndTime()) + .eqIfPresent(AdminAtmkDO::getLateTimeLimit, reqVO.getLateTimeLimit()) + .eqIfPresent(AdminAtmkDO::getEarlyLeavingTimeLimit, reqVO.getEarlyLeavingTimeLimit()) + .likeIfPresent(AdminAtmkDO::getAreaName, reqVO.getAreaName()) + .eqIfPresent(AdminAtmkDO::getLatitude, reqVO.getLatitude()) + .eqIfPresent(AdminAtmkDO::getLongitude, reqVO.getLongitude()) + .eqIfPresent(AdminAtmkDO::getCheckInLocation, reqVO.getCheckInLocation()) + .eqIfPresent(AdminAtmkDO::getCheckOutLocation, reqVO.getCheckOutLocation()) + .eqIfPresent(AdminAtmkDO::getFaceRecognitionResult, reqVO.getFaceRecognitionResult()) + .eqIfPresent(AdminAtmkDO::getCheckInPhoto, reqVO.getCheckInPhoto()) + .eqIfPresent(AdminAtmkDO::getCheckOutPhoto, reqVO.getCheckOutPhoto()) + .eqIfPresent(AdminAtmkDO::getFaceData, reqVO.getFaceData()) + .eqIfPresent(AdminAtmkDO::getStatus, reqVO.getStatus()) + .eqIfPresent(AdminAtmkDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(AdminAtmkDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AdminAtmkDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminatmkface/AdminAtmkFaceMapper.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminatmkface/AdminAtmkFaceMapper.java new file mode 100644 index 000000000..0cb3ce9e3 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminatmkface/AdminAtmkFaceMapper.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.hrmrg.dal.mysql.adminatmkface; + +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.hrmrg.dal.dataobject.adminatmkface.AdminAtmkFaceDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkface.vo.*; + +/** + * 人脸识别库 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface AdminAtmkFaceMapper extends BaseMapperX { + + default PageResult selectPage(AdminAtmkFacePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(AdminAtmkFaceDO::getTypeBiz, reqVO.getTypeBiz()) + .eqIfPresent(AdminAtmkFaceDO::getDeptId, reqVO.getDeptId()) + .eqIfPresent(AdminAtmkFaceDO::getUserId, reqVO.getUserId()) + .eqIfPresent(AdminAtmkFaceDO::getUserNo, reqVO.getUserNo()) + .likeIfPresent(AdminAtmkFaceDO::getUserName, reqVO.getUserName()) + .eqIfPresent(AdminAtmkFaceDO::getFaceData, reqVO.getFaceData()) + .eqIfPresent(AdminAtmkFaceDO::getSort, reqVO.getSort()) + .eqIfPresent(AdminAtmkFaceDO::getStatus, reqVO.getStatus()) + .eqIfPresent(AdminAtmkFaceDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(AdminAtmkFaceDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AdminAtmkFaceDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminatmkgroutcfg/AdminAtmkGroutCfgMapper.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminatmkgroutcfg/AdminAtmkGroutCfgMapper.java new file mode 100644 index 000000000..b9a93d1e3 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminatmkgroutcfg/AdminAtmkGroutCfgMapper.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.hrmrg.dal.mysql.adminatmkgroutcfg; + +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.hrmrg.dal.dataobject.adminatmkgroutcfg.AdminAtmkGroutCfgDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkgroutcfg.vo.*; + +/** + * 考勤组设置 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface AdminAtmkGroutCfgMapper extends BaseMapperX { + + default PageResult selectPage(AdminAtmkGroutCfgPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(AdminAtmkGroutCfgDO::getTypeBiz, reqVO.getTypeBiz()) + .eqIfPresent(AdminAtmkGroutCfgDO::getDeptId, reqVO.getDeptId()) + .eqIfPresent(AdminAtmkGroutCfgDO::getGroupCode, reqVO.getGroupCode()) + .likeIfPresent(AdminAtmkGroutCfgDO::getGroupName, reqVO.getGroupName()) + .betweenIfPresent(AdminAtmkGroutCfgDO::getStartTime, reqVO.getStartTime()) + .betweenIfPresent(AdminAtmkGroutCfgDO::getEndTime, reqVO.getEndTime()) + .likeIfPresent(AdminAtmkGroutCfgDO::getAreaName, reqVO.getAreaName()) + .eqIfPresent(AdminAtmkGroutCfgDO::getLatitude, reqVO.getLatitude()) + .eqIfPresent(AdminAtmkGroutCfgDO::getLongitude, reqVO.getLongitude()) + .eqIfPresent(AdminAtmkGroutCfgDO::getStatus, reqVO.getStatus()) + .eqIfPresent(AdminAtmkGroutCfgDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(AdminAtmkGroutCfgDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AdminAtmkGroutCfgDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminperfcfg/AdminPerfCfgMapper.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminperfcfg/AdminPerfCfgMapper.java new file mode 100644 index 000000000..7719225e7 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminperfcfg/AdminPerfCfgMapper.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.hrmrg.dal.mysql.adminperfcfg; + +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.hrmrg.dal.dataobject.adminperfcfg.AdminPerfCfgDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminperfcfg.vo.*; + +/** + * 绩效考核配置 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface AdminPerfCfgMapper extends BaseMapperX { + + default PageResult selectPage(AdminPerfCfgPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(AdminPerfCfgDO::getTypeBiz, reqVO.getTypeBiz()) + .eqIfPresent(AdminPerfCfgDO::getDeptOrUserId, reqVO.getDeptOrUserId()) + .eqIfPresent(AdminPerfCfgDO::getTitle, reqVO.getTitle()) + .betweenIfPresent(AdminPerfCfgDO::getStarTime, reqVO.getStarTime()) + .betweenIfPresent(AdminPerfCfgDO::getEndTime, reqVO.getEndTime()) + .eqIfPresent(AdminPerfCfgDO::getSorce, reqVO.getSorce()) + .eqIfPresent(AdminPerfCfgDO::getEvg, reqVO.getEvg()) + .eqIfPresent(AdminPerfCfgDO::getEvgItem, reqVO.getEvgItem()) + .eqIfPresent(AdminPerfCfgDO::getSort, reqVO.getSort()) + .eqIfPresent(AdminPerfCfgDO::getStatus, reqVO.getStatus()) + .eqIfPresent(AdminPerfCfgDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(AdminPerfCfgDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AdminPerfCfgDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminpostcfg/AdminPostCfgMapper.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminpostcfg/AdminPostCfgMapper.java new file mode 100644 index 000000000..3d409fddb --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/dal/mysql/adminpostcfg/AdminPostCfgMapper.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.hrmrg.dal.mysql.adminpostcfg; + +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.hrmrg.dal.dataobject.adminpostcfg.AdminPostCfgDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminpostcfg.vo.*; + +/** + * 岗位人员薪资计算配置 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface AdminPostCfgMapper extends BaseMapperX { + + default PageResult selectPage(AdminPostCfgPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(AdminPostCfgDO::getTypeBiz, reqVO.getTypeBiz()) + .eqIfPresent(AdminPostCfgDO::getItemType, reqVO.getItemType()) + .eqIfPresent(AdminPostCfgDO::getPostOrUserId, reqVO.getPostOrUserId()) + .betweenIfPresent(AdminPostCfgDO::getCheckInOutTime, reqVO.getCheckInOutTime()) + .eqIfPresent(AdminPostCfgDO::getSalary, reqVO.getSalary()) + .eqIfPresent(AdminPostCfgDO::getCoef, reqVO.getCoef()) + .eqIfPresent(AdminPostCfgDO::getSort, reqVO.getSort()) + .eqIfPresent(AdminPostCfgDO::getStatus, reqVO.getStatus()) + .eqIfPresent(AdminPostCfgDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(AdminPostCfgDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AdminPostCfgDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmk/AdminAtmkService.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmk/AdminAtmkService.java new file mode 100644 index 000000000..538f72884 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmk/AdminAtmkService.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.hrmrg.service.adminatmk; + +import java.util.*; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmk.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmk.AdminAtmkDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +import javax.validation.Valid; + +/** + * 考勤打卡 Service 接口 + * + * @author 超级管理员 + */ +public interface AdminAtmkService { + + /** + * 创建考勤打卡 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Integer createAdminAtmk(@Valid AdminAtmkSaveReqVO createReqVO); + + /** + * 更新考勤打卡 + * + * @param updateReqVO 更新信息 + */ + void updateAdminAtmk(@Valid AdminAtmkSaveReqVO updateReqVO); + + /** + * 删除考勤打卡 + * + * @param id 编号 + */ + void deleteAdminAtmk(Integer id); + + /** + * 获得考勤打卡 + * + * @param id 编号 + * @return 考勤打卡 + */ + AdminAtmkDO getAdminAtmk(Integer id); + + /** + * 获得考勤打卡分页 + * + * @param pageReqVO 分页查询 + * @return 考勤打卡分页 + */ + PageResult getAdminAtmkPage(AdminAtmkPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmk/AdminAtmkServiceImpl.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmk/AdminAtmkServiceImpl.java new file mode 100644 index 000000000..de262c492 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmk/AdminAtmkServiceImpl.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.hrmrg.service.adminatmk; + +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmk.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmk.AdminAtmkDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.hrmrg.dal.mysql.adminatmk.AdminAtmkMapper; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.hrmrg.enums.ErrorCodeConstants.*; + +/** + * 考勤打卡 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class AdminAtmkServiceImpl implements AdminAtmkService { + + @Resource + private AdminAtmkMapper adminAtmkMapper; + + @Override + public Integer createAdminAtmk(AdminAtmkSaveReqVO createReqVO) { + // 插入 + AdminAtmkDO adminAtmk = BeanUtils.toBean(createReqVO, AdminAtmkDO.class); + adminAtmkMapper.insert(adminAtmk); + // 返回 + return adminAtmk.getId(); + } + + @Override + public void updateAdminAtmk(AdminAtmkSaveReqVO updateReqVO) { + // 校验存在 + validateAdminAtmkExists(updateReqVO.getId()); + // 更新 + AdminAtmkDO updateObj = BeanUtils.toBean(updateReqVO, AdminAtmkDO.class); + adminAtmkMapper.updateById(updateObj); + } + + @Override + public void deleteAdminAtmk(Integer id) { + // 校验存在 + validateAdminAtmkExists(id); + // 删除 + adminAtmkMapper.deleteById(id); + } + + private void validateAdminAtmkExists(Integer id) { + if (adminAtmkMapper.selectById(id) == null) { + throw exception(ADMIN_ATMK_NOT_EXISTS); + } + } + + @Override + public AdminAtmkDO getAdminAtmk(Integer id) { + return adminAtmkMapper.selectById(id); + } + + @Override + public PageResult getAdminAtmkPage(AdminAtmkPageReqVO pageReqVO) { + return adminAtmkMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkface/AdminAtmkFaceService.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkface/AdminAtmkFaceService.java new file mode 100644 index 000000000..d2966995c --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkface/AdminAtmkFaceService.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.hrmrg.service.adminatmkface; + +import java.util.*; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkface.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmkface.AdminAtmkFaceDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +import javax.validation.Valid; + +/** + * 人脸识别库 Service 接口 + * + * @author 超级管理员 + */ +public interface AdminAtmkFaceService { + + /** + * 创建人脸识别库 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Integer createAdminAtmkFace(@Valid AdminAtmkFaceSaveReqVO createReqVO); + + /** + * 更新人脸识别库 + * + * @param updateReqVO 更新信息 + */ + void updateAdminAtmkFace(@Valid AdminAtmkFaceSaveReqVO updateReqVO); + + /** + * 删除人脸识别库 + * + * @param id 编号 + */ + void deleteAdminAtmkFace(Integer id); + + /** + * 获得人脸识别库 + * + * @param id 编号 + * @return 人脸识别库 + */ + AdminAtmkFaceDO getAdminAtmkFace(Integer id); + + /** + * 获得人脸识别库分页 + * + * @param pageReqVO 分页查询 + * @return 人脸识别库分页 + */ + PageResult getAdminAtmkFacePage(AdminAtmkFacePageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkface/AdminAtmkFaceServiceImpl.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkface/AdminAtmkFaceServiceImpl.java new file mode 100644 index 000000000..97c7147b4 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkface/AdminAtmkFaceServiceImpl.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.hrmrg.service.adminatmkface; + +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkface.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmkface.AdminAtmkFaceDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.hrmrg.dal.mysql.adminatmkface.AdminAtmkFaceMapper; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.hrmrg.enums.ErrorCodeConstants.*; + +/** + * 人脸识别库 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class AdminAtmkFaceServiceImpl implements AdminAtmkFaceService { + + @Resource + private AdminAtmkFaceMapper adminAtmkFaceMapper; + + @Override + public Integer createAdminAtmkFace(AdminAtmkFaceSaveReqVO createReqVO) { + // 插入 + AdminAtmkFaceDO adminAtmkFace = BeanUtils.toBean(createReqVO, AdminAtmkFaceDO.class); + adminAtmkFaceMapper.insert(adminAtmkFace); + // 返回 + return adminAtmkFace.getId(); + } + + @Override + public void updateAdminAtmkFace(AdminAtmkFaceSaveReqVO updateReqVO) { + // 校验存在 + validateAdminAtmkFaceExists(updateReqVO.getId()); + // 更新 + AdminAtmkFaceDO updateObj = BeanUtils.toBean(updateReqVO, AdminAtmkFaceDO.class); + adminAtmkFaceMapper.updateById(updateObj); + } + + @Override + public void deleteAdminAtmkFace(Integer id) { + // 校验存在 + validateAdminAtmkFaceExists(id); + // 删除 + adminAtmkFaceMapper.deleteById(id); + } + + private void validateAdminAtmkFaceExists(Integer id) { + if (adminAtmkFaceMapper.selectById(id) == null) { + throw exception(ADMIN_ATMK_FACE_NOT_EXISTS); + } + } + + @Override + public AdminAtmkFaceDO getAdminAtmkFace(Integer id) { + return adminAtmkFaceMapper.selectById(id); + } + + @Override + public PageResult getAdminAtmkFacePage(AdminAtmkFacePageReqVO pageReqVO) { + return adminAtmkFaceMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkgroutcfg/AdminAtmkGroutCfgService.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkgroutcfg/AdminAtmkGroutCfgService.java new file mode 100644 index 000000000..1645a3ee4 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkgroutcfg/AdminAtmkGroutCfgService.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.hrmrg.service.adminatmkgroutcfg; + +import java.util.*; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkgroutcfg.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmkgroutcfg.AdminAtmkGroutCfgDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +import javax.validation.Valid; + +/** + * 考勤组设置 Service 接口 + * + * @author 超级管理员 + */ +public interface AdminAtmkGroutCfgService { + + /** + * 创建考勤组设置 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Integer createAdminAtmkGroutCfg(@Valid AdminAtmkGroutCfgSaveReqVO createReqVO); + + /** + * 更新考勤组设置 + * + * @param updateReqVO 更新信息 + */ + void updateAdminAtmkGroutCfg(@Valid AdminAtmkGroutCfgSaveReqVO updateReqVO); + + /** + * 删除考勤组设置 + * + * @param id 编号 + */ + void deleteAdminAtmkGroutCfg(Integer id); + + /** + * 获得考勤组设置 + * + * @param id 编号 + * @return 考勤组设置 + */ + AdminAtmkGroutCfgDO getAdminAtmkGroutCfg(Integer id); + + /** + * 获得考勤组设置分页 + * + * @param pageReqVO 分页查询 + * @return 考勤组设置分页 + */ + PageResult getAdminAtmkGroutCfgPage(AdminAtmkGroutCfgPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkgroutcfg/AdminAtmkGroutCfgServiceImpl.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkgroutcfg/AdminAtmkGroutCfgServiceImpl.java new file mode 100644 index 000000000..27fcdf48f --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminatmkgroutcfg/AdminAtmkGroutCfgServiceImpl.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.hrmrg.service.adminatmkgroutcfg; + +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminatmkgroutcfg.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminatmkgroutcfg.AdminAtmkGroutCfgDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.hrmrg.dal.mysql.adminatmkgroutcfg.AdminAtmkGroutCfgMapper; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.hrmrg.enums.ErrorCodeConstants.*; + +/** + * 考勤组设置 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class AdminAtmkGroutCfgServiceImpl implements AdminAtmkGroutCfgService { + + @Resource + private AdminAtmkGroutCfgMapper adminAtmkGroutCfgMapper; + + @Override + public Integer createAdminAtmkGroutCfg(AdminAtmkGroutCfgSaveReqVO createReqVO) { + // 插入 + AdminAtmkGroutCfgDO adminAtmkGroutCfg = BeanUtils.toBean(createReqVO, AdminAtmkGroutCfgDO.class); + adminAtmkGroutCfgMapper.insert(adminAtmkGroutCfg); + // 返回 + return adminAtmkGroutCfg.getId(); + } + + @Override + public void updateAdminAtmkGroutCfg(AdminAtmkGroutCfgSaveReqVO updateReqVO) { + // 校验存在 + validateAdminAtmkGroutCfgExists(updateReqVO.getId()); + // 更新 + AdminAtmkGroutCfgDO updateObj = BeanUtils.toBean(updateReqVO, AdminAtmkGroutCfgDO.class); + adminAtmkGroutCfgMapper.updateById(updateObj); + } + + @Override + public void deleteAdminAtmkGroutCfg(Integer id) { + // 校验存在 + validateAdminAtmkGroutCfgExists(id); + // 删除 + adminAtmkGroutCfgMapper.deleteById(id); + } + + private void validateAdminAtmkGroutCfgExists(Integer id) { + if (adminAtmkGroutCfgMapper.selectById(id) == null) { + throw exception(ADMIN_ATMK_GROUT_CFG_NOT_EXISTS); + } + } + + @Override + public AdminAtmkGroutCfgDO getAdminAtmkGroutCfg(Integer id) { + return adminAtmkGroutCfgMapper.selectById(id); + } + + @Override + public PageResult getAdminAtmkGroutCfgPage(AdminAtmkGroutCfgPageReqVO pageReqVO) { + return adminAtmkGroutCfgMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminperfcfg/AdminPerfCfgService.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminperfcfg/AdminPerfCfgService.java new file mode 100644 index 000000000..c3cba24b4 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminperfcfg/AdminPerfCfgService.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.hrmrg.service.adminperfcfg; + +import java.util.*; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminperfcfg.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminperfcfg.AdminPerfCfgDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +import javax.validation.Valid; + +/** + * 绩效考核配置 Service 接口 + * + * @author 超级管理员 + */ +public interface AdminPerfCfgService { + + /** + * 创建绩效考核配置 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Integer createAdminPerfCfg(@Valid AdminPerfCfgSaveReqVO createReqVO); + + /** + * 更新绩效考核配置 + * + * @param updateReqVO 更新信息 + */ + void updateAdminPerfCfg(@Valid AdminPerfCfgSaveReqVO updateReqVO); + + /** + * 删除绩效考核配置 + * + * @param id 编号 + */ + void deleteAdminPerfCfg(Integer id); + + /** + * 获得绩效考核配置 + * + * @param id 编号 + * @return 绩效考核配置 + */ + AdminPerfCfgDO getAdminPerfCfg(Integer id); + + /** + * 获得绩效考核配置分页 + * + * @param pageReqVO 分页查询 + * @return 绩效考核配置分页 + */ + PageResult getAdminPerfCfgPage(AdminPerfCfgPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminperfcfg/AdminPerfCfgServiceImpl.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminperfcfg/AdminPerfCfgServiceImpl.java new file mode 100644 index 000000000..571507818 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminperfcfg/AdminPerfCfgServiceImpl.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.hrmrg.service.adminperfcfg; + +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminperfcfg.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminperfcfg.AdminPerfCfgDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.hrmrg.dal.mysql.adminperfcfg.AdminPerfCfgMapper; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.hrmrg.enums.ErrorCodeConstants.*; + +/** + * 绩效考核配置 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class AdminPerfCfgServiceImpl implements AdminPerfCfgService { + + @Resource + private AdminPerfCfgMapper adminPerfCfgMapper; + + @Override + public Integer createAdminPerfCfg(AdminPerfCfgSaveReqVO createReqVO) { + // 插入 + AdminPerfCfgDO adminPerfCfg = BeanUtils.toBean(createReqVO, AdminPerfCfgDO.class); + adminPerfCfgMapper.insert(adminPerfCfg); + // 返回 + return adminPerfCfg.getId(); + } + + @Override + public void updateAdminPerfCfg(AdminPerfCfgSaveReqVO updateReqVO) { + // 校验存在 + validateAdminPerfCfgExists(updateReqVO.getId()); + // 更新 + AdminPerfCfgDO updateObj = BeanUtils.toBean(updateReqVO, AdminPerfCfgDO.class); + adminPerfCfgMapper.updateById(updateObj); + } + + @Override + public void deleteAdminPerfCfg(Integer id) { + // 校验存在 + validateAdminPerfCfgExists(id); + // 删除 + adminPerfCfgMapper.deleteById(id); + } + + private void validateAdminPerfCfgExists(Integer id) { + if (adminPerfCfgMapper.selectById(id) == null) { + throw exception(ADMIN_PERF_CFG_NOT_EXISTS); + } + } + + @Override + public AdminPerfCfgDO getAdminPerfCfg(Integer id) { + return adminPerfCfgMapper.selectById(id); + } + + @Override + public PageResult getAdminPerfCfgPage(AdminPerfCfgPageReqVO pageReqVO) { + return adminPerfCfgMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminpostcfg/AdminPostCfgService.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminpostcfg/AdminPostCfgService.java new file mode 100644 index 000000000..27079800f --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminpostcfg/AdminPostCfgService.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.hrmrg.service.adminpostcfg; + +import java.util.*; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminpostcfg.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminpostcfg.AdminPostCfgDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +import javax.validation.Valid; + +/** + * 岗位人员薪资计算配置 Service 接口 + * + * @author 超级管理员 + */ +public interface AdminPostCfgService { + + /** + * 创建岗位人员薪资计算配置 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Integer createAdminPostCfg(@Valid AdminPostCfgSaveReqVO createReqVO); + + /** + * 更新岗位人员薪资计算配置 + * + * @param updateReqVO 更新信息 + */ + void updateAdminPostCfg(@Valid AdminPostCfgSaveReqVO updateReqVO); + + /** + * 删除岗位人员薪资计算配置 + * + * @param id 编号 + */ + void deleteAdminPostCfg(Integer id); + + /** + * 获得岗位人员薪资计算配置 + * + * @param id 编号 + * @return 岗位人员薪资计算配置 + */ + AdminPostCfgDO getAdminPostCfg(Integer id); + + /** + * 获得岗位人员薪资计算配置分页 + * + * @param pageReqVO 分页查询 + * @return 岗位人员薪资计算配置分页 + */ + PageResult getAdminPostCfgPage(AdminPostCfgPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminpostcfg/AdminPostCfgServiceImpl.java b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminpostcfg/AdminPostCfgServiceImpl.java new file mode 100644 index 000000000..9dbded15b --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/java/cn/iocoder/yudao/module/hrmrg/service/adminpostcfg/AdminPostCfgServiceImpl.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.hrmrg.service.adminpostcfg; + +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.hrmrg.controller.admin.adminpostcfg.vo.*; +import cn.iocoder.yudao.module.hrmrg.dal.dataobject.adminpostcfg.AdminPostCfgDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.hrmrg.dal.mysql.adminpostcfg.AdminPostCfgMapper; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.hrmrg.enums.ErrorCodeConstants.*; + +/** + * 岗位人员薪资计算配置 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class AdminPostCfgServiceImpl implements AdminPostCfgService { + + @Resource + private AdminPostCfgMapper adminPostCfgMapper; + + @Override + public Integer createAdminPostCfg(AdminPostCfgSaveReqVO createReqVO) { + // 插入 + AdminPostCfgDO adminPostCfg = BeanUtils.toBean(createReqVO, AdminPostCfgDO.class); + adminPostCfgMapper.insert(adminPostCfg); + // 返回 + return adminPostCfg.getId(); + } + + @Override + public void updateAdminPostCfg(AdminPostCfgSaveReqVO updateReqVO) { + // 校验存在 + validateAdminPostCfgExists(updateReqVO.getId()); + // 更新 + AdminPostCfgDO updateObj = BeanUtils.toBean(updateReqVO, AdminPostCfgDO.class); + adminPostCfgMapper.updateById(updateObj); + } + + @Override + public void deleteAdminPostCfg(Integer id) { + // 校验存在 + validateAdminPostCfgExists(id); + // 删除 + adminPostCfgMapper.deleteById(id); + } + + private void validateAdminPostCfgExists(Integer id) { + if (adminPostCfgMapper.selectById(id) == null) { + throw exception(ADMIN_POST_CFG_NOT_EXISTS); + } + } + + @Override + public AdminPostCfgDO getAdminPostCfg(Integer id) { + return adminPostCfgMapper.selectById(id); + } + + @Override + public PageResult getAdminPostCfgPage(AdminPostCfgPageReqVO pageReqVO) { + return adminPostCfgMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/application-dev.yaml b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/application-dev.yaml new file mode 100644 index 000000000..a5e460fa8 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/application-dev.yaml @@ -0,0 +1,137 @@ +--- #################### 注册中心 + 配置中心相关配置 #################### + +spring: + cloud: + nacos: + server-addr: 192.168.1.128:8848 # Nacos 服务器地址 + username: nacos # Nacos 账号 + password: nacos # Nacos 密码 + discovery: # 【配置中心】配置项 + namespace: dev # 命名空间。这里使用 dev 开发环境 + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + metadata: + version: 1.0.0 # 服务实例的版本号,可用于灰度发布 + config: # 【注册中心】配置项 + namespace: dev # 命名空间。这里使用 dev 开发环境 + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + +--- #################### 数据库相关配置 #################### +spring: + # 数据源配置项 + autoconfigure: + exclude: + - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源 + - de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration # 禁用 Spring Boot Admin 的 Client 的自动配置 + datasource: + druid: # Druid 【监控】相关的全局配置 + web-stat-filter: + enabled: true + stat-view-servlet: + enabled: true + allow: # 设置白名单,不填则允许所有访问 + url-pattern: /druid/* + login-username: # 控制台管理用户名和密码 + login-password: + filter: + stat: + enabled: true + log-slow-sql: true # 慢 SQL 记录 + slow-sql-millis: 100 + merge-sql: true + wall: + config: + multi-statement-allow: true + dynamic: # 多数据源配置 + druid: # Druid 【连接池】相关的全局配置 + initial-size: 1 # 初始连接数 + min-idle: 1 # 最小连接池数量 + max-active: 20 # 最大连接池数量 + max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒 + time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒 + min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒 + max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒 + validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效 + test-while-idle: true + test-on-borrow: false + test-on-return: false + primary: master + datasource: + master: + url: jdbc:mysql://192.168.1.128/hs-hr-cloud?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例 + # url: jdbc:mysql://192.168.1.128/hs-mall-cloud?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true # MySQL Connector/J 5.X 连接的示例 + # url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 连接的示例 + # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例 + # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=ruoyi-vue-pro # SQLServer 连接的示例 + # url: jdbc:dm://10.211.55.4:5236?schema=RUOYI_VUE_PRO # DM 连接的示例 + username: root + password: hs-rootadmin + # username: sa # SQL Server 连接的示例 + # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W # SQL Server 连接的示例 + # username: SYSDBA # DM 连接的示例 + # password: SYSDBA # DM 连接的示例 + slave: # 模拟从库,可根据自己需要修改 + lazy: true # 开启懒加载,保证启动速度 + url: jdbc:mysql://192.168.1.128/hs-hr-cloud?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true + username: root + password: hs-rootadmin + + # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 + redis: + host: 192.168.1.128 # 地址 + port: 6379 # 端口 + database: 0 # 数据库索引 +# password: hs-rootadmin # 密码,建议生产环境开启 + +--- #################### MQ 消息队列相关配置 #################### + +--- #################### 定时任务相关配置 #################### + +xxl: + job: + enabled: true # 是否开启调度中心,默认为 true 开启 + admin: + addresses: http://192.168.1.128:9090/xxl-job-admin # 调度中心部署跟地址 + +--- #################### 服务保障相关配置 #################### + +# Lock4j 配置项 +lock4j: + acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒 + expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒 + +--- #################### 监控相关配置 #################### + +# Actuator 监控端点的配置项 +management: + endpoints: + web: + base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator + exposure: + include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。 + +# Spring Boot Admin 配置项 +spring: + boot: + admin: + # Spring Boot Admin Client 客户端的相关配置 + client: + instance: + service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME] + +# 日志文件配置 +logging: + level: + # 配置自己写的 MyBatis Mapper 打印日志 + cn.iocoder.yudao.module.hrmrg.dal.mysql: debug + org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示 + +--- #################### 芋道相关配置 #################### + +# 芋道配置项,设置当前项目所有自定义的配置 +yudao: + env: # 多环境的配置项 + tag: ${HOSTNAME} + security: + mock-enable: true + access-log: # 访问日志的配置项 + enable: false \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/application-local.yaml b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/application-local.yaml new file mode 100644 index 000000000..9e287a32f --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/application-local.yaml @@ -0,0 +1,137 @@ +--- #################### 注册中心 + 配置中心相关配置 #################### + +spring: + cloud: + nacos: + server-addr: 192.168.1.128:8848 # Nacos 服务器地址 + username: nacos # Nacos 账号 + password: nacos # Nacos 密码 + discovery: # 【配置中心】配置项 + namespace: dev # 命名空间。这里使用 dev 开发环境 + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + metadata: + version: 1.0.0 # 服务实例的版本号,可用于灰度发布 + config: # 【注册中心】配置项 + namespace: dev # 命名空间。这里使用 dev 开发环境 + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + +--- #################### 数据库相关配置 #################### +spring: + # 数据源配置项 + autoconfigure: + exclude: + - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源 + - de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration # 禁用 Spring Boot Admin 的 Client 的自动配置 + datasource: + druid: # Druid 【监控】相关的全局配置 + web-stat-filter: + enabled: true + stat-view-servlet: + enabled: true + allow: # 设置白名单,不填则允许所有访问 + url-pattern: /druid/* + login-username: # 控制台管理用户名和密码 + login-password: + filter: + stat: + enabled: true + log-slow-sql: true # 慢 SQL 记录 + slow-sql-millis: 100 + merge-sql: true + wall: + config: + multi-statement-allow: true + dynamic: # 多数据源配置 + druid: # Druid 【连接池】相关的全局配置 + initial-size: 1 # 初始连接数 + min-idle: 1 # 最小连接池数量 + max-active: 20 # 最大连接池数量 + max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒 + time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒 + min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒 + max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒 + validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效 + test-while-idle: true + test-on-borrow: false + test-on-return: false + primary: master + datasource: + master: + url: jdbc:mysql://192.168.1.128/hs-mall-cloud?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例 + # url: jdbc:mysql://192.168.1.128/hs-mall-cloud?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true # MySQL Connector/J 5.X 连接的示例 + # url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 连接的示例 + # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例 + # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=ruoyi-vue-pro # SQLServer 连接的示例 + # url: jdbc:dm://10.211.55.4:5236?schema=RUOYI_VUE_PRO # DM 连接的示例 + username: root + password: hs-rootadmin + # username: sa # SQL Server 连接的示例 + # password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W # SQL Server 连接的示例 + # username: SYSDBA # DM 连接的示例 + # password: SYSDBA # DM 连接的示例 + slave: # 模拟从库,可根据自己需要修改 + lazy: true # 开启懒加载,保证启动速度 + url: jdbc:mysql://192.168.1.128/hs-mall-cloud?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true + username: root + password: hs-rootadmin + + # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 + redis: + host: 192.168.1.128 # 地址 + port: 6379 # 端口 + database: 0 # 数据库索引 +# password: hs-rootadmin # 密码,建议生产环境开启 + +--- #################### MQ 消息队列相关配置 #################### + +--- #################### 定时任务相关配置 #################### + +xxl: + job: + enabled: true # 是否开启调度中心,默认为 true 开启 + admin: + addresses: http://192.168.1.128:9090/xxl-job-admin # 调度中心部署跟地址 + +--- #################### 服务保障相关配置 #################### + +# Lock4j 配置项 +lock4j: + acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒 + expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒 + +--- #################### 监控相关配置 #################### + +# Actuator 监控端点的配置项 +management: + endpoints: + web: + base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator + exposure: + include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。 + +# Spring Boot Admin 配置项 +spring: + boot: + admin: + # Spring Boot Admin Client 客户端的相关配置 + client: + instance: + service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME] + +# 日志文件配置 +logging: + level: + # 配置自己写的 MyBatis Mapper 打印日志 + cn.iocoder.yudao.module.hrmrg.dal.mysql: debug + org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示 + +--- #################### 芋道相关配置 #################### + +# 芋道配置项,设置当前项目所有自定义的配置 +yudao: + env: # 多环境的配置项 + tag: ${HOSTNAME} + security: + mock-enable: true + access-log: # 访问日志的配置项 + enable: false \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/application.yaml b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/application.yaml new file mode 100644 index 000000000..3857843aa --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/application.yaml @@ -0,0 +1,127 @@ +spring: + application: + name: hrmrg-server + + profiles: + active: local + + main: + allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。 + allow-bean-definition-overriding: true # 允许 Bean 覆盖,例如说 Feign 等会存在重复定义的服务 + + config: + import: + - optional:classpath:application-${spring.profiles.active}.yaml # 加载【本地】配置 + - optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml # 加载【Nacos】的配置 + + # Servlet 配置 + servlet: + # 文件上传相关配置项 + multipart: + max-file-size: 16MB # 单个文件大小 + max-request-size: 32MB # 设置总上传的文件大小 + + # Jackson 配置项 + jackson: + serialization: + write-dates-as-timestamps: true # 设置 LocalDateTime 的格式,使用时间戳 + write-date-timestamps-as-nanoseconds: false # 设置不使用 nanoseconds 的格式。例如说 1611460870.401,而是直接 1611460870401 + write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳 + fail-on-empty-beans: false # 允许序列化无属性的 Bean + + # Cache 配置项 + cache: + type: REDIS + redis: + time-to-live: 1h # 设置过期时间为 1 小时 + +server: + port: 48200 + +logging: + file: + name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径 + +--- #################### 接口文档配置 #################### + +springdoc: + api-docs: + enabled: true # 1. 是否开启 Swagger 接文档的元数据 + path: /v3/api-docs + swagger-ui: + enabled: true # 2.1 是否开启 Swagger 文档的官方 UI 界面 + path: /swagger-ui + default-flat-param-object: true # 参见 https://doc.xiaominfo.com/docs/faq/v4/knife4j-parameterobject-flat-param 文档 + +knife4j: + enable: true # 2.2 是否开启 Swagger 文档的 Knife4j UI 界面 + setting: + language: zh_cn + +# MyBatis Plus 的配置项 +mybatis-plus: + configuration: + map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。 + global-config: + db-config: + id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。 + # id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库 + # id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库 + # id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解 + logic-delete-value: 1 # 逻辑已删除值(默认为 1) + logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) + banner: false # 关闭控制台的 Banner 打印 + type-aliases-package: ${yudao.info.base-package}.dal.dataobject + encryptor: + password: XDV71a+xqStEA3WH # 加解密的秘钥,可使用 https://www.imaegoo.com/2020/aes-key-generator/ 网站生成 + +mybatis-plus-join: + banner: false # 关闭控制台的 Banner 打印 + +# Spring Data Redis 配置 +spring: + data: + redis: + repositories: + enabled: false # 项目未使用到 Spring Data Redis 的 Repository,所以直接禁用,保证启动速度 + +# VO 转换(数据翻译)相关 +easy-trans: + is-enable-global: true # 启用全局翻译(拦截所有 SpringMVC ResponseBody 进行自动翻译 )。如果对于性能要求很高可关闭此配置,或通过 @IgnoreTrans 忽略某个接口 + +--- #################### RPC 远程调用相关配置 #################### + +--- #################### MQ 消息队列相关配置 #################### + +--- #################### 定时任务相关配置 #################### + +xxl: + job: + executor: + appname: ${spring.application.name} # 执行器 AppName + logpath: ${user.home}/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径 + accessToken: default_token # 执行器通讯TOKEN + +--- #################### 芋道相关配置 #################### + +yudao: + info: + version: 1.0.0 + base-package: cn.iocoder.yudao.module.hrmrg + web: + admin-ui: + url: http://dashboard.yudao.iocoder.cn # Admin 管理后台 UI 的地址 + xss: + enable: false + exclude-urls: # 如下 url,仅仅是为了演示,去掉配置也没关系 + - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求 + swagger: + title: 管理后台 + description: 提供管理员管理的所有功能 + version: ${yudao.info.version} + tenant: # 多租户相关配置项 + enable: true + ignore-urls: + ignore-tables: + +debug: false diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminatmk/AdminAtmkMapper.xml b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminatmk/AdminAtmkMapper.xml new file mode 100644 index 000000000..df16dbae1 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminatmk/AdminAtmkMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminatmkface/AdminAtmkFaceMapper.xml b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminatmkface/AdminAtmkFaceMapper.xml new file mode 100644 index 000000000..f3554af7f --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminatmkface/AdminAtmkFaceMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminatmkgroutcfg/AdminAtmkGroutCfgMapper.xml b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminatmkgroutcfg/AdminAtmkGroutCfgMapper.xml new file mode 100644 index 000000000..3423539b7 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminatmkgroutcfg/AdminAtmkGroutCfgMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminperfcfg/AdminPerfCfgMapper.xml b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminperfcfg/AdminPerfCfgMapper.xml new file mode 100644 index 000000000..eda558dd8 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminperfcfg/AdminPerfCfgMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminpostcfg/AdminPostCfgMapper.xml b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminpostcfg/AdminPostCfgMapper.xml new file mode 100644 index 000000000..241d1f487 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/main/resources/mapper/adminpostcfg/AdminPostCfgMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/test/resources/sql/clean.sql b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/test/resources/sql/clean.sql new file mode 100644 index 000000000..e00e95b77 --- /dev/null +++ b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/test/resources/sql/clean.sql @@ -0,0 +1 @@ +delete from hr_admin_atmk \ No newline at end of file diff --git a/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/test/resources/sql/create_tables.sql b/yudao-module-hrmrg/yudao-module-hrmrg-biz/src/test/resources/sql/create_tables.sql new file mode 100644 index 000000000..e69de29bb diff --git a/yudao-module-mall/yudao-module-hshy-biz/src/main/java/cn/iocoder/yudao/module/hshy/HshyServerApplication.java b/yudao-module-mall/yudao-module-hshy-biz/src/main/java/cn/iocoder/yudao/module/hshy/HshyServerApplication.java index 3f236221f..ba5f4ac29 100644 --- a/yudao-module-mall/yudao-module-hshy-biz/src/main/java/cn/iocoder/yudao/module/hshy/HshyServerApplication.java +++ b/yudao-module-mall/yudao-module-hshy-biz/src/main/java/cn/iocoder/yudao/module/hshy/HshyServerApplication.java @@ -10,7 +10,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; */ @SpringBootApplication public class HshyServerApplication { - public static void main(String[] args) { SpringApplication.run(HshyServerApplication.class, args); System.out.println("HsfxServerApplication 启动成功");