添加hrm模块

This commit is contained in:
2026-01-05 15:36:22 +08:00
parent c8f6aea972
commit fb6bc5f53c
209 changed files with 8980 additions and 0 deletions

54
fad-hrm/pom.xml Normal file
View File

@@ -0,0 +1,54 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-flowable-plus</artifactId>
<version>0.8.3</version>
</parent>
<artifactId>fad-hrm</artifactId>
<name>Archetype - ruoyi-hrm</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<version>3.5.9</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<!-- 阿里JSON解析器 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.35</version>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-oss</artifactId>
</dependency>
<!-- PDF 盖章Java方案 -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.29</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,40 @@
package com.ruoyi.hrm.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* Stamp service configuration.
*/
@Data
@Component
@ConfigurationProperties(prefix = "stamp")
public class StampProperties {
private PythonService pythonService = new PythonService();
private JavaService javaService = new JavaService();
@Data
public static class PythonService {
/**
* Whether to call external python stamp service.
*/
private boolean enabled = false;
private String baseUrl;
private String apiKey;
private Integer timeoutMs = 5000;
}
@Data
public static class JavaService {
/**
* Enable in-Java stamping.
*/
private boolean enabled = true;
/**
* Default DPI for px → user-space conversion if needed.
*/
private Integer dpi = 72;
}
}

View File

@@ -0,0 +1,64 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmAttendCalcBo;
import com.ruoyi.hrm.domain.vo.HrmAttendCalcVo;
import com.ruoyi.hrm.service.IHrmAttendCalcService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 考勤结果(按用户要求本接口不做鉴权)
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/attend")
public class HrmAttendCalcController extends BaseController {
private final IHrmAttendCalcService service;
@GetMapping("/list")
public TableDataInfo<HrmAttendCalcVo> list(HrmAttendCalcBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{calcId}")
public R<HrmAttendCalcVo> getInfo(@PathVariable @NotNull Long calcId) {
return R.ok(service.queryById(calcId));
}
@Log(title = "考勤结果", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmAttendCalcBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "考勤结果", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmAttendCalcBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "考勤结果", businessType = BusinessType.DELETE)
@DeleteMapping("/{calcIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] calcIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(calcIds), true));
}
@GetMapping("/all")
public R<List<HrmAttendCalcVo>> all(HrmAttendCalcBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,62 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmCertificateBo;
import com.ruoyi.hrm.domain.vo.HrmCertificateVo;
import com.ruoyi.hrm.service.IHrmCertificateService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/certificate")
public class HrmCertificateController extends BaseController {
private final IHrmCertificateService service;
@GetMapping("/list")
public TableDataInfo<HrmCertificateVo> list(HrmCertificateBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{certId}")
public R<HrmCertificateVo> getInfo(@PathVariable @NotNull Long certId) {
return R.ok(service.queryById(certId));
}
@Log(title = "证书", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmCertificateBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "证书", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmCertificateBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "证书", businessType = BusinessType.DELETE)
@DeleteMapping("/{certIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] certIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(certIds), true));
}
@GetMapping("/all")
public R<List<HrmCertificateVo>> all(HrmCertificateBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmContractBo;
import com.ruoyi.hrm.domain.vo.HrmContractVo;
import com.ruoyi.hrm.service.IHrmContractService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/contract")
public class HrmContractController extends BaseController {
private final IHrmContractService service;
@GetMapping("/list")
public TableDataInfo<HrmContractVo> list(HrmContractBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{contractId}")
public R<HrmContractVo> getInfo(@PathVariable @NotNull Long contractId) {
return R.ok(service.queryById(contractId));
}
@Log(title = "劳动合同", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmContractBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "劳动合同", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmContractBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "劳动合同", businessType = BusinessType.DELETE)
@DeleteMapping("/{contractIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] contractIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(contractIds), true));
}
@GetMapping("/all")
public R<List<HrmContractVo>> all(HrmContractBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmEmpOrgPositionBo;
import com.ruoyi.hrm.domain.vo.HrmEmpOrgPositionVo;
import com.ruoyi.hrm.service.IHrmEmpOrgPositionService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/empOrg")
public class HrmEmpOrgPositionController extends BaseController {
private final IHrmEmpOrgPositionService service;
@GetMapping("/list")
public TableDataInfo<HrmEmpOrgPositionVo> list(HrmEmpOrgPositionBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{relId}")
public R<HrmEmpOrgPositionVo> getInfo(@PathVariable @NotNull Long relId) {
return R.ok(service.queryById(relId));
}
@Log(title = "员工组织岗位关系", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmEmpOrgPositionBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "员工组织岗位关系", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmEmpOrgPositionBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "员工组织岗位关系", businessType = BusinessType.DELETE)
@DeleteMapping("/{relIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] relIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(relIds), true));
}
@GetMapping("/all")
public R<List<HrmEmpOrgPositionVo>> all(HrmEmpOrgPositionBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,75 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmEmployeeBo;
import com.ruoyi.hrm.domain.vo.HrmEmployeeVo;
import com.ruoyi.hrm.service.IHrmEmployeeService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/employee")
public class HrmEmployeeController extends BaseController {
private final IHrmEmployeeService service;
@GetMapping("/list")
public TableDataInfo<HrmEmployeeVo> list(HrmEmployeeBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{empId}")
public R<HrmEmployeeVo> getInfo(@PathVariable @NotNull Long empId) {
return R.ok(service.queryById(empId));
}
@Log(title = "员工管理", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmEmployeeBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "员工管理", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmEmployeeBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "员工管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{empIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] empIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(empIds), true));
}
@GetMapping("/all")
public R<List<HrmEmployeeVo>> all(HrmEmployeeBo bo) {
return R.ok(service.queryList(bo));
}
/**
* 根据用户ID获取员工信息
*/
@GetMapping("/byUserId/{userId}")
public R<HrmEmployeeVo> getByUserId(@PathVariable @NotNull Long userId) {
HrmEmployeeBo bo = new HrmEmployeeBo();
bo.setUserId(userId);
List<HrmEmployeeVo> list = service.queryList(bo);
if (list != null && !list.isEmpty()) {
return R.ok(list.get(0));
}
return R.fail("未找到该用户对应的员工信息");
}
}

View File

@@ -0,0 +1,36 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.hrm.domain.bo.HrmFlowActionBo;
import com.ruoyi.hrm.domain.vo.HrmFlowActionVo;
import com.ruoyi.hrm.service.IHrmFlowActionService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotNull;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/flow/action")
public class HrmFlowActionController extends BaseController {
private final IHrmFlowActionService service;
@GetMapping("/list")
public TableDataInfo<HrmFlowActionVo> list(HrmFlowActionBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{actionId}")
public R<HrmFlowActionVo> getInfo(@PathVariable @NotNull Long actionId) {
return R.ok(service.queryById(actionId));
}
}

View File

@@ -0,0 +1,71 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.hrm.domain.bo.HrmFlowCcBo;
import com.ruoyi.hrm.domain.vo.HrmFlowCcVo;
import com.ruoyi.hrm.service.IHrmFlowCcService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/flow/cc")
public class HrmFlowCcController extends BaseController {
private final IHrmFlowCcService service;
/**
* 抄送我的
*/
@GetMapping("/my")
public TableDataInfo<HrmFlowCcVo> my(@RequestParam(required = false) Long ccUserId,@RequestParam(required = false) Integer readFlag, PageQuery pageQuery) {
Long uid = ccUserId;
if (uid == null) {
try {
uid = LoginHelper.getUserId();
} catch (Exception e) {
uid = null;
}
}
HrmFlowCcBo bo = new HrmFlowCcBo();
bo.setCcUserId(uid);
bo.setReadFlag(readFlag);
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/list")
public TableDataInfo<HrmFlowCcVo> list(HrmFlowCcBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
/**
* 手动抄送(支持批量)
*/
@PostMapping
public R<Void> add(@RequestBody HrmFlowCcBo bo) {
return toAjax(service.insertBatch(bo));
}
/**
* 标记抄送已读
*/
@PostMapping("/{ccId}/read")
public R<Void> read(@PathVariable Long ccId) {
Long userId = LoginHelper.getUserId();
return toAjax(service.markRead(ccId, userId));
}
@GetMapping("/ping")
public R<String> ping(@RequestParam @NotNull String x) {
return R.ok(x);
}
}

View File

@@ -0,0 +1,36 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.hrm.domain.bo.HrmFormDataBo;
import com.ruoyi.hrm.domain.vo.HrmFormDataVo;
import com.ruoyi.hrm.service.IHrmFormDataService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotNull;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/flow/form")
public class HrmFlowFormDataController extends BaseController {
private final IHrmFormDataService service;
@GetMapping("/list")
public TableDataInfo<HrmFormDataVo> list(HrmFormDataBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{formId}")
public R<HrmFormDataVo> getInfo(@PathVariable @NotNull Long formId) {
return R.ok(service.queryById(formId));
}
}

View File

@@ -0,0 +1,76 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmFlowInstanceBo;
import com.ruoyi.hrm.domain.bo.HrmFlowStartBo;
import com.ruoyi.hrm.domain.vo.HrmFlowInstanceVo;
import com.ruoyi.hrm.service.IHrmFlowInstanceService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/flow/instance")
public class HrmFlowInstanceController extends BaseController {
private final IHrmFlowInstanceService service;
@GetMapping("/list")
public TableDataInfo<HrmFlowInstanceVo> list(HrmFlowInstanceBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
/**
* 查询我的申请列表
*/
@GetMapping("/myList")
public TableDataInfo<HrmFlowInstanceVo> myList(HrmFlowInstanceBo bo, PageQuery pageQuery) {
return service.queryMyInstancePageList(bo, pageQuery);
}
@GetMapping("/{instId}")
public R<HrmFlowInstanceVo> getInfo(@PathVariable @NotNull Long instId) {
return R.ok(service.queryById(instId));
}
@Log(title = "流程实例", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmFlowInstanceBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "流程实例", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmFlowInstanceBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "流程实例", businessType = BusinessType.DELETE)
@DeleteMapping("/{instIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] instIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(instIds), true));
}
@Log(title = "流程实例启动", businessType = BusinessType.INSERT)
@PostMapping("/start")
public R<Long> start(@Validated @RequestBody HrmFlowStartBo bo) {
return R.ok(service.startInstance(bo));
}
@GetMapping("/all")
public R<List<HrmFlowInstanceVo>> all(HrmFlowInstanceBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmFlowNodeBo;
import com.ruoyi.hrm.domain.vo.HrmFlowNodeVo;
import com.ruoyi.hrm.service.IHrmFlowNodeService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/flow/node")
public class HrmFlowNodeController extends BaseController {
private final IHrmFlowNodeService service;
@GetMapping("/list")
public TableDataInfo<HrmFlowNodeVo> list(HrmFlowNodeBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{nodeId}")
public R<HrmFlowNodeVo> getInfo(@PathVariable @NotNull Long nodeId) {
return R.ok(service.queryById(nodeId));
}
@Log(title = "流程节点", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmFlowNodeBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "流程节点", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmFlowNodeBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "流程节点", businessType = BusinessType.DELETE)
@DeleteMapping("/{nodeIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] nodeIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(nodeIds), true));
}
@GetMapping("/all")
public R<List<HrmFlowNodeVo>> all(HrmFlowNodeBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,115 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmFlowTaskBo;
import com.ruoyi.hrm.domain.bo.HrmFlowTaskApproveBo;
import com.ruoyi.hrm.domain.bo.HrmSealStampBo;
import com.ruoyi.hrm.domain.vo.HrmFlowTaskVo;
import com.ruoyi.hrm.service.IHrmFlowTaskService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/flow/task")
public class HrmFlowTaskController extends BaseController {
private final IHrmFlowTaskService service;
@GetMapping("/list")
public TableDataInfo<HrmFlowTaskVo> list(HrmFlowTaskBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/todo")
public R<List<HrmFlowTaskVo>> todo(@RequestParam(required = false) Long assigneeUserId) {
HrmFlowTaskBo bo = new HrmFlowTaskBo();
bo.setAssigneeUserId(assigneeUserId);
bo.setStatus("pending");
return R.ok(service.queryList(bo));
}
/**
* 详情页使用:按 bizType + bizId 查询当前用户的待办任务pending
*/
@GetMapping("/todoByBiz")
public R<HrmFlowTaskVo> todoByBiz(@RequestParam @NotNull String bizType,
@RequestParam @NotNull Long bizId,
@RequestParam(required = false) Long assigneeUserId) {
return R.ok(service.queryTodoByBiz(bizType, bizId, assigneeUserId));
}
@GetMapping("/{taskId}")
public R<HrmFlowTaskVo> getInfo(@PathVariable @NotNull Long taskId) {
return R.ok(service.queryById(taskId));
}
@Log(title = "流程任务", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmFlowTaskBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "流程任务", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmFlowTaskBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "流程任务", businessType = BusinessType.DELETE)
@DeleteMapping("/{taskIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] taskIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(taskIds), true));
}
@Log(title = "流程任务审批通过", businessType = BusinessType.UPDATE)
@PostMapping("/{taskId}/approve")
public R<Void> approve(@PathVariable @NotNull Long taskId,
@RequestParam(required = false) Long actionUserId,
@RequestBody(required = false) HrmFlowTaskApproveBo approveBo) {
String remark = approveBo != null ? approveBo.getRemark() : null;
HrmSealStampBo stampBo = approveBo != null ? approveBo.getStampBo() : null;
return toAjax(service.approve(taskId, actionUserId, remark, stampBo));
}
@Log(title = "流程任务审批驳回", businessType = BusinessType.UPDATE)
@PostMapping("/{taskId}/reject")
public R<Void> reject(@PathVariable @NotNull Long taskId,
@RequestParam(required = false) Long actionUserId,
@RequestParam(required = false) String remark) {
return toAjax(service.reject(taskId, actionUserId, remark));
}
@Log(title = "流程任务撤回", businessType = BusinessType.UPDATE)
@PostMapping("/{taskId}/withdraw")
public R<Void> withdraw(@PathVariable @NotNull Long taskId,
@RequestParam(required = false) Long actionUserId,
@RequestParam(required = false) String remark) {
return toAjax(service.withdraw(taskId, actionUserId, remark));
}
@Log(title = "流程任务转发", businessType = BusinessType.UPDATE)
@PostMapping("/{taskId}/transfer")
public R<Void> transfer(@PathVariable @NotNull Long taskId,
@RequestParam @NotNull Long newAssigneeUserId,
@RequestParam(required = false) Long actionUserId,
@RequestParam(required = false) String remark) {
return toAjax(service.transfer(taskId, newAssigneeUserId, actionUserId, remark));
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmFlowTemplateBo;
import com.ruoyi.hrm.domain.vo.HrmFlowTemplateVo;
import com.ruoyi.hrm.service.IHrmFlowTemplateService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/flow/template")
public class HrmFlowTemplateController extends BaseController {
private final IHrmFlowTemplateService service;
@GetMapping("/list")
public TableDataInfo<HrmFlowTemplateVo> list(HrmFlowTemplateBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{tplId}")
public R<HrmFlowTemplateVo> getInfo(@PathVariable @NotNull Long tplId) {
return R.ok(service.queryById(tplId));
}
@Log(title = "流程模板", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmFlowTemplateBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "流程模板", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmFlowTemplateBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "流程模板", businessType = BusinessType.DELETE)
@DeleteMapping("/{tplIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] tplIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(tplIds), true));
}
@GetMapping("/all")
public R<List<HrmFlowTemplateVo>> all(HrmFlowTemplateBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmHeadcountPlanBo;
import com.ruoyi.hrm.domain.vo.HrmHeadcountPlanVo;
import com.ruoyi.hrm.service.IHrmHeadcountPlanService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/headcount")
public class HrmHeadcountPlanController extends BaseController {
private final IHrmHeadcountPlanService service;
@GetMapping("/list")
public TableDataInfo<HrmHeadcountPlanVo> list(HrmHeadcountPlanBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{planId}")
public R<HrmHeadcountPlanVo> getInfo(@PathVariable @NotNull Long planId) {
return R.ok(service.queryById(planId));
}
@Log(title = "编制管理", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmHeadcountPlanBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "编制管理", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmHeadcountPlanBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "编制管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{planIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] planIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(planIds), true));
}
@GetMapping("/all")
public R<List<HrmHeadcountPlanVo>> all(HrmHeadcountPlanBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmLeaveBalanceBo;
import com.ruoyi.hrm.domain.vo.HrmLeaveBalanceVo;
import com.ruoyi.hrm.service.IHrmLeaveBalanceService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/leave/balance")
public class HrmLeaveBalanceController extends BaseController {
private final IHrmLeaveBalanceService service;
@GetMapping("/list")
public TableDataInfo<HrmLeaveBalanceVo> list(HrmLeaveBalanceBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{balId}")
public R<HrmLeaveBalanceVo> getInfo(@PathVariable @NotNull Long balId) {
return R.ok(service.queryById(balId));
}
@Log(title = "假期余额", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmLeaveBalanceBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "假期余额", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmLeaveBalanceBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "假期余额", businessType = BusinessType.DELETE)
@DeleteMapping("/{balIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] balIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(balIds), true));
}
@GetMapping("/all")
public R<List<HrmLeaveBalanceVo>> all(HrmLeaveBalanceBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmLeaveReqBo;
import com.ruoyi.hrm.domain.vo.HrmLeaveReqVo;
import com.ruoyi.hrm.service.IHrmLeaveReqService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/leave/req")
public class HrmLeaveReqController extends BaseController {
private final IHrmLeaveReqService service;
@GetMapping("/list")
public TableDataInfo<HrmLeaveReqVo> list(HrmLeaveReqBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{bizId}")
public R<HrmLeaveReqVo> getInfo(@PathVariable @NotNull Long bizId) {
return R.ok(service.queryById(bizId));
}
@Log(title = "请假单", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmLeaveReqBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "请假单", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmLeaveReqBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "请假单", businessType = BusinessType.DELETE)
@DeleteMapping("/{bizIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] bizIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(bizIds), true));
}
@GetMapping("/all")
public R<List<HrmLeaveReqVo>> all(HrmLeaveReqBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,64 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmPayPlanBo;
import com.ruoyi.hrm.domain.vo.HrmPayPlanVo;
import com.ruoyi.hrm.service.IHrmPayPlanService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 薪酬方案(按用户要求:不做鉴权)
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/pay/plan")
public class HrmPayPlanController extends BaseController {
private final IHrmPayPlanService service;
@GetMapping("/list")
public TableDataInfo<HrmPayPlanVo> list(HrmPayPlanBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{planId}")
public R<HrmPayPlanVo> getInfo(@PathVariable @NotNull Long planId) {
return R.ok(service.queryById(planId));
}
@Log(title = "薪酬方案", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmPayPlanBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "薪酬方案", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmPayPlanBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "薪酬方案", businessType = BusinessType.DELETE)
@DeleteMapping("/{planIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] planIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(planIds), true));
}
@GetMapping("/all")
public R<List<HrmPayPlanVo>> all(HrmPayPlanBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,64 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmPayRunBo;
import com.ruoyi.hrm.domain.vo.HrmPayRunVo;
import com.ruoyi.hrm.service.IHrmPayRunService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 薪酬批次(无鉴权)
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/pay/run")
public class HrmPayRunController extends BaseController {
private final IHrmPayRunService service;
@GetMapping("/list")
public TableDataInfo<HrmPayRunVo> list(HrmPayRunBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{runId}")
public R<HrmPayRunVo> getInfo(@PathVariable @NotNull Long runId) {
return R.ok(service.queryById(runId));
}
@Log(title = "薪酬批次", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmPayRunBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "薪酬批次", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmPayRunBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "薪酬批次", businessType = BusinessType.DELETE)
@DeleteMapping("/{runIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] runIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(runIds), true));
}
@GetMapping("/all")
public R<List<HrmPayRunVo>> all(HrmPayRunBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,64 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmPayslipBo;
import com.ruoyi.hrm.domain.vo.HrmPayslipVo;
import com.ruoyi.hrm.service.IHrmPayslipService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 工资条(无鉴权)
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/payslip")
public class HrmPayslipController extends BaseController {
private final IHrmPayslipService service;
@GetMapping("/list")
public TableDataInfo<HrmPayslipVo> list(HrmPayslipBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{slipId}")
public R<HrmPayslipVo> getInfo(@PathVariable @NotNull Long slipId) {
return R.ok(service.queryById(slipId));
}
@Log(title = "工资条", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmPayslipBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "工资条", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmPayslipBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "工资条", businessType = BusinessType.DELETE)
@DeleteMapping("/{slipIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] slipIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(slipIds), true));
}
@GetMapping("/all")
public R<List<HrmPayslipVo>> all(HrmPayslipBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmPunchBo;
import com.ruoyi.hrm.domain.vo.HrmPunchVo;
import com.ruoyi.hrm.service.IHrmPunchService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/punch")
public class HrmPunchController extends BaseController {
private final IHrmPunchService service;
@GetMapping("/list")
public TableDataInfo<HrmPunchVo> list(HrmPunchBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{punchId}")
public R<HrmPunchVo> getInfo(@PathVariable @NotNull Long punchId) {
return R.ok(service.queryById(punchId));
}
@Log(title = "打卡记录", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmPunchBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "打卡记录", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmPunchBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "打卡记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{punchIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] punchIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(punchIds), true));
}
@GetMapping("/all")
public R<List<HrmPunchVo>> all(HrmPunchBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,65 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmReimburseReqBo;
import com.ruoyi.hrm.domain.vo.HrmReimburseReqVo;
import com.ruoyi.hrm.service.IHrmReimburseReqService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 日常报销申请
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/reimburse")
public class HrmReimburseReqController extends BaseController {
private final IHrmReimburseReqService service;
@GetMapping("/list")
public TableDataInfo<HrmReimburseReqVo> list(HrmReimburseReqBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{bizId}")
public R<HrmReimburseReqVo> getInfo(@PathVariable @NotNull Long bizId) {
return R.ok(service.queryById(bizId));
}
@Log(title = "日常报销单", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmReimburseReqBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "日常报销单", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmReimburseReqBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "日常报销单", businessType = BusinessType.DELETE)
@DeleteMapping("/{bizIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] bizIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(bizIds), true));
}
@GetMapping("/all")
public R<List<HrmReimburseReqVo>> all(HrmReimburseReqBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmScheduleBo;
import com.ruoyi.hrm.domain.vo.HrmScheduleVo;
import com.ruoyi.hrm.service.IHrmScheduleService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/schedule")
public class HrmScheduleController extends BaseController {
private final IHrmScheduleService service;
@GetMapping("/list")
public TableDataInfo<HrmScheduleVo> list(HrmScheduleBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{schedId}")
public R<HrmScheduleVo> getInfo(@PathVariable @NotNull Long schedId) {
return R.ok(service.queryById(schedId));
}
@Log(title = "排班", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmScheduleBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "排班", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmScheduleBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "排班", businessType = BusinessType.DELETE)
@DeleteMapping("/{schedIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] schedIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(schedIds), true));
}
@GetMapping("/all")
public R<List<HrmScheduleVo>> all(HrmScheduleBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,97 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmSealReqBo;
import com.ruoyi.hrm.domain.bo.HrmSealStampBo;
import com.ruoyi.hrm.domain.vo.HrmSealReqVo;
import com.ruoyi.hrm.service.IHrmSealReqService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* 用印申请
*/
@Slf4j
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/seal")
public class HrmSealReqController extends BaseController {
private final IHrmSealReqService service;
@GetMapping("/list")
public TableDataInfo<HrmSealReqVo> list(HrmSealReqBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{bizId}")
public R<HrmSealReqVo> getInfo(@PathVariable @NotNull Long bizId) {
return R.ok(service.queryById(bizId));
}
@Log(title = "用印申请", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmSealReqBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "用印申请", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmSealReqBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "用印申请", businessType = BusinessType.DELETE)
@DeleteMapping("/{bizIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] bizIds) {
return toAjax(service.deleteWithValidByIds(java.util.Arrays.asList(bizIds), true));
}
@Log(title = "用印申请", businessType = BusinessType.UPDATE)
@PostMapping("/{bizId}/approve")
public R<Void> approve(@PathVariable @NotNull Long bizId) {
return toAjax(service.updateStatus(bizId, "approved"));
}
@Log(title = "用印申请", businessType = BusinessType.UPDATE)
@PostMapping("/{bizId}/reject")
public R<Void> reject(@PathVariable @NotNull Long bizId) {
return toAjax(service.updateStatus(bizId, "rejected"));
}
@Log(title = "用印申请", businessType = BusinessType.UPDATE)
@PostMapping("/{bizId}/cancel")
public R<Void> cancel(@PathVariable @NotNull Long bizId) {
return toAjax(service.updateStatus(bizId, "canceled"));
}
@Log(title = "用印盖章(Java)", businessType = BusinessType.UPDATE)
@PostMapping("/{bizId}/stamp/java")
public R<String> stampJava(@PathVariable @NotNull Long bizId, @Validated @RequestBody HrmSealStampBo bo) {
// 添加日志,检查接收到的数据
log.info("收到盖章请求 - bizId: {}, yPx: {}, xPx: {}, pageNo: {}, yPx类型: {}",
bizId, bo.getYPx(), bo.getXPx(), bo.getPageNo(),
bo.getYPx() != null ? bo.getYPx().getClass().getName() : "null");
if (bo.getYPx() == null) {
log.error("yPx 为 null接收到的 bo 对象: {}", bo);
}
return R.ok(service.stampWithJava(bizId, bo));
}
@Log(title = "用印盖章(Python)", businessType = BusinessType.UPDATE)
@PostMapping("/{bizId}/stamp/python")
public R<String> stampPython(@PathVariable @NotNull Long bizId, @Validated @RequestBody HrmSealStampBo bo) {
return R.ok(service.stampWithPython(bizId, bo));
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmShiftBo;
import com.ruoyi.hrm.domain.vo.HrmShiftVo;
import com.ruoyi.hrm.service.IHrmShiftService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/shift")
public class HrmShiftController extends BaseController {
private final IHrmShiftService service;
@GetMapping("/list")
public TableDataInfo<HrmShiftVo> list(HrmShiftBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{shiftId}")
public R<HrmShiftVo> getInfo(@PathVariable @NotNull Long shiftId) {
return R.ok(service.queryById(shiftId));
}
@Log(title = "班次", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmShiftBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "班次", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmShiftBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "班次", businessType = BusinessType.DELETE)
@DeleteMapping("/{shiftIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] shiftIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(shiftIds), true));
}
@GetMapping("/all")
public R<List<HrmShiftVo>> all(HrmShiftBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,64 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmStatSnapshotBo;
import com.ruoyi.hrm.domain.vo.HrmStatSnapshotVo;
import com.ruoyi.hrm.service.IHrmStatSnapshotService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 指标快照(无鉴权)
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/pay/stat")
public class HrmStatSnapshotController extends BaseController {
private final IHrmStatSnapshotService service;
@GetMapping("/list")
public TableDataInfo<HrmStatSnapshotVo> list(HrmStatSnapshotBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{snapId}")
public R<HrmStatSnapshotVo> getInfo(@PathVariable @NotNull Long snapId) {
return R.ok(service.queryById(snapId));
}
@Log(title = "指标快照", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmStatSnapshotBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "指标快照", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmStatSnapshotBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "指标快照", businessType = BusinessType.DELETE)
@DeleteMapping("/{snapIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] snapIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(snapIds), true));
}
@GetMapping("/all")
public R<List<HrmStatSnapshotVo>> all(HrmStatSnapshotBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,64 @@
package com.ruoyi.hrm.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.hrm.domain.bo.HrmTravelReqBo;
import com.ruoyi.hrm.domain.vo.HrmTravelReqVo;
import com.ruoyi.hrm.service.IHrmTravelReqService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 出差单(按用户要求:不做鉴权)
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/hrm/travel")
public class HrmTravelReqController extends BaseController {
private final IHrmTravelReqService service;
@GetMapping("/list")
public TableDataInfo<HrmTravelReqVo> list(HrmTravelReqBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
@GetMapping("/{bizId}")
public R<HrmTravelReqVo> getInfo(@PathVariable @NotNull Long bizId) {
return R.ok(service.queryById(bizId));
}
@Log(title = "出差单", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmTravelReqBo bo) {
return toAjax(service.insertByBo(bo));
}
@Log(title = "出差单", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody HrmTravelReqBo bo) {
return toAjax(service.updateByBo(bo));
}
@Log(title = "出差单", businessType = BusinessType.DELETE)
@DeleteMapping("/{bizIds}")
public R<Void> remove(@PathVariable @NotEmpty Long[] bizIds) {
return toAjax(service.deleteWithValidByIds(Arrays.asList(bizIds), true));
}
@GetMapping("/all")
public R<List<HrmTravelReqVo>> all(HrmTravelReqBo bo) {
return R.ok(service.queryList(bo));
}
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_attend_calc")
public class HrmAttendCalc extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long calcId;
private Long empId;
private Date workDate;
private Long shiftId;
private String status;
private Integer workMinutes;
private Integer lateMinutes;
private Integer earlyMinutes;
private Integer otMinutes;
private String leaveMinutesJson;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_certificate")
public class HrmCertificate extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long certId;
private Long empId;
private String certName;
private String certNo;
private String issuedBy;
private Date validFrom;
private Date validTo;
private String remark;
/**
* 证书附件 fileIds逗号分隔的 OSS ID
*/
private String fileIds;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_contract")
public class HrmContract extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long contractId;
private Long empId;
private String contractNo;
private String contractType;
private Date startDate;
private Date endDate;
private String status;
private String remark;
/**
* 合同附件 fileIds逗号分隔的 OSS ID
*/
private String fileIds;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,35 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* 员工-组织-岗位关系
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_emp_org_position")
public class HrmEmpOrgPosition extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long relId;
private Long empId;
/** 部门ID引用 sys_dept.dept_id */
private Long deptId;
/** 岗位ID引用 sys_post.post_id */
private Long postId;
private Integer isPrimary;
private Date startDate;
private Date endDate;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,44 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 员工主数据
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_employee")
public class HrmEmployee extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long empId;
private Long userId;
private String empNo;
private String empName;
private String gender;
private String mobile;
private String email;
private String idNo;
private Date hireDate;
private String employmentType;
private String status;
/** 主部门ID引用 sys_dept.dept_id */
private Long deptId;
/** 主岗位ID引用 sys_post.post_id */
private Long postId;
private BigDecimal seniorityYears;
private Date contractEndDate;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_flow_action")
public class HrmFlowAction extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long actionId;
private Long taskId;
private Long instId;
private String action;
private String remark;
private Long actionUserId;
private String bizType;
private Long bizId;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,46 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 抄送记录
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_flow_cc")
public class HrmFlowCc extends BaseEntity {
@TableId
private Long ccId;
private Long instId;
private String bizType;
private Long bizId;
private Long nodeId;
/** 触发抄送的节点名称(可读名) */
private String nodeName;
/** 是否已读 0未读 1已读 */
private Integer readFlag;
/** 被抄送的用户ID */
private Long ccUserId;
/** 触发抄送的操作人(一般为当前审批人) */
private Long fromUserId;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_flow_instance")
public class HrmFlowInstance extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long instId;
private Long tplId;
private String bizType;
private Long bizId;
private String status;
private Long currentNodeId;
private Long startUserId;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_flow_node")
public class HrmFlowNode extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long nodeId;
private Long tplId;
private Integer orderNo;
private String nodeType;
private String approverRule;
private String approverValue; // JSON
private String fieldPerm; // JSON
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,39 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_flow_task")
public class HrmFlowTask extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long taskId;
private Long instId;
private Long nodeId;
private Long assigneeUserId;
private String status;
private Date expireTime;
private String remark;
/** 业务类型leave/travel/seal */
@TableField("biz_type")
private String bizType;
/** 业务ID对应请假/出差/用印的 bizId */
@TableField("biz_id")
private Long bizId;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_flow_template")
public class HrmFlowTemplate extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long tplId;
private String tplCode;
private String tplName;
private String bizType;
private Integer version;
private Integer enabled;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_form_data")
public class HrmFormData extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long formId;
private String bizType;
private Long bizId;
private String contentJson;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* 编制/预算
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_headcount_plan")
public class HrmHeadcountPlan extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long planId;
/** 部门ID引用 sys_dept.dept_id */
private Long deptId;
/** 岗位ID引用 sys_post.post_id */
private Long postId;
private Integer year;
private Integer month;
private Integer budgetCount;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_leave_balance")
public class HrmLeaveBalance extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long balId;
private Long empId;
private String leaveType;
private java.math.BigDecimal balanceHours;
private Date expireDate;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_leave_req")
public class HrmLeaveReq extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long bizId;
private Long empId;
private String leaveType;
private Date startTime;
private Date endTime;
private java.math.BigDecimal hours;
private String reason;
private String status;
private String accessoryApplyIds;
private String accessoryReceiptIds;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_pay_plan")
public class HrmPayPlan extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long planId;
private String planName;
private BigDecimal baseSalary;
private String allowanceJson;
private String formulaJson;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_pay_run")
public class HrmPayRun extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long runId;
private String period;
private String status;
private Long planId;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_payslip")
public class HrmPayslip extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long slipId;
private Long runId;
private Long empId;
private BigDecimal amountGross;
private BigDecimal amountNet;
private String itemsJson;
private String status;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_punch")
public class HrmPunch extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long punchId;
private Long empId;
private Date punchTime;
private String source;
private String location;
private String deviceId;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,39 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_reimburse_req")
public class HrmReimburseReq extends BaseEntity {
@TableId
private Long bizId;
private Long empId;
private String reimburseType;
private BigDecimal totalAmount;
private String reason;
private String status;
private String accessoryApplyIds;
private String accessoryReceiptIds;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,27 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_schedule")
public class HrmSchedule extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long schedId;
private Long empId;
private Date workDate;
private Long shiftId;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,56 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* 用印申请
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_seal_req")
public class HrmSealReq extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/** 业务ID */
@TableId
private Long bizId;
/** 申请人ID */
private Long empId;
/** 用印类型(公章/合同章/财务章等) */
private String sealType;
/** 用途说明 */
private String purpose;
/** 申请材料附件ID列表(CSV对应sys_oss) */
private String applyFileIds;
/** 是否需要回执 1是0否 */
private Integer receiptRequired;
/** 回执状态 none/pending/done */
private String receiptStatus;
/** 回执附件ID列表(CSV对应sys_oss或直接URL) */
private String receiptFileIds;
/** 状态 draft/running/approved/rejected/canceled */
private String status;
/** 备注 */
private String remark;
/** 删除标识 0正常 2删除 */
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalTime;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_shift")
public class HrmShift extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long shiftId;
private String shiftCode;
private String shiftName;
private LocalTime startTime;
private LocalTime endTime;
private Integer breakMinutes;
private Integer isNight;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_stat_snapshot")
public class HrmStatSnapshot extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private Long snapId;
private Date statDate;
private String statType;
private String dimJson;
private BigDecimal valueNum;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,36 @@
package com.ruoyi.hrm.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hrm_travel_req")
public class HrmTravelReq extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId
private Long bizId;
private Long empId;
private Date startTime;
private Date endTime;
private String travelType;
private String destination;
private String reason;
private String status;
private String accessoryApplyIds;
private String accessoryReceiptIds;
private String payeeName;
private Double estimatedCost;
private String bankName;
private String bankAccount;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmAttendCalcBo extends BaseEntity {
private Long calcId;
@NotNull(message = "员工ID不能为空")
private Long empId;
@NotNull(message = "工作日期不能为空")
private Date workDate;
private Long shiftId;
private String status;
private Integer workMinutes;
private Integer lateMinutes;
private Integer earlyMinutes;
private Integer otMinutes;
private String leaveMinutesJson;
private String remark;
}

View File

@@ -0,0 +1,38 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmCertificateBo extends BaseEntity {
private Long certId;
@NotNull(message = "员工ID不能为空")
private Long empId;
@NotBlank(message = "证书名称不能为空")
private String certName;
private String certNo;
private String issuedBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date validFrom;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date validTo;
private String remark;
/**
* 证书附件 fileIds逗号分隔的 OSS ID
*/
private String fileIds;
}

View File

@@ -0,0 +1,38 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmContractBo extends BaseEntity {
private Long contractId;
@NotNull(message = "员工ID不能为空")
private Long empId;
@NotBlank(message = "合同编号不能为空")
private String contractNo;
private String contractType;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endDate;
private String status;
private String remark;
/**
* 合同附件 fileIds逗号分隔的 OSS ID
*/
private String fileIds;
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmEmpOrgPositionBo extends BaseEntity {
private Long relId;
@NotNull(message = "员工不能为空")
private Long empId;
@NotNull(message = "部门不能为空")
/** 部门ID引用 sys_dept.dept_id */
private Long deptId;
@NotNull(message = "岗位不能为空")
/** 岗位ID引用 sys_post.post_id */
private Long postId;
private Integer isPrimary;
private Date startDate;
private Date endDate;
private String remark;
}

View File

@@ -0,0 +1,49 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 员工 Bo
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmEmployeeBo extends BaseEntity {
private Long empId;
private Long userId;
@NotBlank(message = "工号不能为空")
private String empNo;
@NotBlank(message = "姓名不能为空")
private String empName;
private String gender;
private String mobile;
private String email;
private String idNo;
private Date hireDate;
private String employmentType;
private String status;
/** 主部门ID引用 sys_dept.dept_id */
private Long deptId;
/** 主岗位ID引用 sys_post.post_id */
private Long postId;
private String remark;
}

View File

@@ -0,0 +1,27 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmFlowActionBo extends BaseEntity {
private Long actionId;
private Long taskId;
@NotNull(message = "实例ID不能为空")
private Long instId;
@NotBlank(message = "动作不能为空")
private String action;
private String remark;
private Long actionUserId;
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmFlowCcBo extends BaseEntity {
private Long ccId;
private Long instId;
private String bizType;
private Long bizId;
/** 业务类型名称(列表展示用,可选条件) */
private String bizTypeName;
/** 业务标题/摘要(列表展示用,可选条件) */
private String bizTitle;
private Long nodeId;
private String nodeName;
private Integer readFlag;
private Long ccUserId;
/** 手动抄送:支持批量被抄送用户 */
private List<Long> ccUserIds;
private Long fromUserId;
private String remark;
}

View File

@@ -0,0 +1,40 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmFlowInstanceBo extends BaseEntity {
private Long instId;
@NotNull(message = "模板ID不能为空")
private Long tplId;
@NotBlank(message = "业务类型不能为空")
private String bizType;
@NotNull(message = "业务ID不能为空")
private Long bizId;
private String status;
private Long currentNodeId;
private Long startUserId;
private String remark;
private String startTime;
private String endTime;
private String hours;
private String bizTitle;
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmFlowNodeBo extends BaseEntity {
private Long nodeId;
@NotNull(message = "模板ID不能为空")
private Long tplId;
@NotNull(message = "顺序不能为空")
private Integer orderNo;
@NotBlank(message = "节点类型不能为空")
private String nodeType;
@NotBlank(message = "审批人规则不能为空")
private String approverRule;
private String approverValue;
private String fieldPerm;
private String remark;
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.hrm.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class HrmFlowStartBo {
// 模板ID存在则按模板启动为空则走“自选审批人一次性审批”
private Long tplId;
// 无模板时:自选审批人 userId一次性审批审批完成即结束流程
private Long manualAssigneeUserId;
@NotBlank(message = "业务类型不能为空")
private String bizType;
@NotNull(message = "业务ID不能为空")
private Long bizId;
private Long startUserId;
private String contentJson;
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.hrm.domain.bo;
import lombok.Data;
/**
* 流程任务审批请求体
*/
@Data
public class HrmFlowTaskApproveBo {
/** 审批意见 */
private String remark;
/** 盖章参数(仅用于用印业务) */
private HrmSealStampBo stampBo;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmFlowTaskBo extends BaseEntity {
private Long taskId;
private Long instId;
private Long nodeId;
private Long assigneeUserId;
private String status;
private Date expireTime;
private String remark;
/** 业务类型leave/travel/seal */
private String bizType;
/** 业务ID对应请假/出差/用印的 bizId */
private Long bizId;
//新增createBy
private String createBy;
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmFlowTemplateBo extends BaseEntity {
private Long tplId;
@NotBlank(message = "模板编码不能为空")
private String tplCode;
@NotBlank(message = "模板名称不能为空")
private String tplName;
@NotBlank(message = "业务类型不能为空")
private String bizType;
private Integer version;
private Integer enabled;
private String remark;
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmFormDataBo extends BaseEntity {
private Long formId;
@NotBlank(message = "业务类型不能为空")
private String bizType;
@NotNull(message = "业务ID不能为空")
private Long bizId;
@NotBlank(message = "表单内容不能为空")
private String contentJson;
private String remark;
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmHeadcountPlanBo extends BaseEntity {
private Long planId;
@NotNull(message = "部门不能为空")
/** 部门ID引用 sys_dept.dept_id */
private Long deptId;
@NotNull(message = "岗位不能为空")
/** 岗位ID引用 sys_post.post_id */
private Long postId;
@NotNull(message = "年份不能为空")
private Integer year;
@NotNull(message = "月份不能为空")
private Integer month;
@NotNull(message = "编制人数不能为空")
private Integer budgetCount;
private String remark;
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmLeaveBalanceBo extends BaseEntity {
private Long balId;
@NotNull(message = "员工ID不能为空")
private Long empId;
@NotNull(message = "假期类型不能为空")
private String leaveType;
@NotNull(message = "余额小时不能为空")
private java.math.BigDecimal balanceHours;
private Date expireDate;
private String remark;
}

View File

@@ -0,0 +1,52 @@
package com.ruoyi.hrm.domain.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmLeaveReqBo extends BaseEntity {
private Long bizId;
@NotNull(message = "员工ID不能为空")
private Long empId;
@NotBlank(message = "请假类型不能为空")
private String leaveType;
@NotNull(message = "开始时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX", timezone = "GMT+8")
private Date startTime;
@NotNull(message = "结束时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX", timezone = "GMT+8")
private Date endTime;
@NotNull(message = "时长不能为空")
private java.math.BigDecimal hours;
private String reason;
private String status;
/**
* 流程模板ID前端选择模板流程时传入
*
* 不传则后端按 bizType 自动选择启用的最新版本模板;
* 若也未配置模板,则可通过 manualAssigneeUserId 走一次性审批。
*/
private Long tplId;
// 无模板时,自选审批人 userId
private Long manualAssigneeUserId;
private String accessoryApplyIds;
private String accessoryReceiptIds;
private String remark;
}

View File

@@ -0,0 +1,23 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmPayPlanBo extends BaseEntity {
private Long planId;
@NotBlank(message = "方案名称不能为空")
private String planName;
private BigDecimal baseSalary;
private String allowanceJson;
private String formulaJson;
private String remark;
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmPayRunBo extends BaseEntity {
private Long runId;
@NotBlank(message = "核算周期不能为空")
private String period;
private String status;
private Long planId;
private String remark;
}

View File

@@ -0,0 +1,27 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmPayslipBo extends BaseEntity {
private Long slipId;
@NotNull(message = "批次ID不能为空")
private Long runId;
@NotNull(message = "员工ID不能为空")
private Long empId;
private BigDecimal amountGross;
private BigDecimal amountNet;
private String itemsJson;
private String status;
private String remark;
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmPunchBo extends BaseEntity {
private Long punchId;
@NotNull(message = "员工ID不能为空")
private Long empId;
@NotNull(message = "打卡时间不能为空")
private Date punchTime;
private String source;
private String location;
private String deviceId;
private String remark;
}

View File

@@ -0,0 +1,39 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmReimburseReqBo extends BaseEntity {
private Long bizId;
@NotNull(message = "员工ID不能为空")
private Long empId;
private String reimburseType;
@NotNull(message = "报销总金额不能为空")
private BigDecimal totalAmount;
private String reason;
private String status;
// 无模板时,自选审批人 userId
private Long manualAssigneeUserId;
/** 报销单据附件oss_id列表(CSV) */
private String accessoryApplyIds;
/** 回执附件oss_id列表(CSV) */
private String accessoryReceiptIds;
private String remark;
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmScheduleBo extends BaseEntity {
private Long schedId;
@NotNull(message = "员工ID不能为空")
private Long empId;
@NotNull(message = "工作日期不能为空")
private Date workDate;
@NotNull(message = "班次ID不能为空")
private Long shiftId;
private String remark;
}

View File

@@ -0,0 +1,62 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 用印申请 Bo
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmSealReqBo extends BaseEntity {
/** 业务ID编辑/审批时必填) */
private Long bizId;
/** 申请人ID */
@NotNull(message = "申请人不能为空")
private Long empId;
/** 用印类型 */
@NotBlank(message = "用印类型不能为空")
private String sealType;
/** 用途说明 */
private String purpose;
/** 申请材料附件ID列表(CSV对应sys_oss) */
private String applyFileIds;
/** 是否需要回执 1是0否 */
private Integer receiptRequired;
/** 备注 */
private String remark;
/** 状态 draft/running/approved/rejected/canceled */
private String status;
/** 关联流程模板ID旧字段兼容历史前端/代码) */
private Long flowTplId;
/**
* 流程模板ID新字段前端选择模板流程时传入
* 优先级高于 flowTplId。
*/
private Long tplId;
/**
* 手动选择的审批人ID前端选择手动审批时传入
*/
private Long manualAssigneeUserId;
/** 流程发起人ID可选不填可由服务侧取当前登录人 */
private Long startUserId;
/** 提交流程时的表单内容JSON可选 */
private String contentJson;
}

View File

@@ -0,0 +1,98 @@
package com.ruoyi.hrm.domain.bo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 盖章命令Java/Python 坐标统一使用 px
*/
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.ALWAYS)
public class HrmSealStampBo {
/** 待盖章 PDF 的 OSS 完整 URL */
@NotBlank(message = "待盖章文件地址不能为空")
@JsonProperty("targetFileUrl")
private String targetFileUrl;
/** 章图片 OSS 完整 URL透明 PNG/JPG */
@NotBlank(message = "章图片地址不能为空")
@JsonProperty("stampImageUrl")
private String stampImageUrl;
/** 页码从1开始 */
@NotNull
@Min(1)
@JsonProperty("pageNo")
private Integer pageNo;
/** 左下角 X 坐标px */
@NotNull
@Min(0)
@JsonProperty("xPx")
@JsonInclude(JsonInclude.Include.ALWAYS)
@Setter(lombok.AccessLevel.NONE) // 禁用 Lombok 生成 setter使用手动 setter
private Integer xPx;
/** 左下角 Y 坐标px */
@NotNull
@Min(0)
@JsonProperty("yPx")
@JsonInclude(JsonInclude.Include.ALWAYS)
@Setter(lombok.AccessLevel.NONE) // 禁用 Lombok 生成 setter使用手动 setter
private Integer yPx;
/** 盖章宽度px可选 */
@Min(1)
@JsonProperty("widthPx")
private Integer widthPx;
/** 盖章高度px可选 */
@Min(1)
@JsonProperty("heightPx")
private Integer heightPx;
/**
* 前端渲染的 viewport 宽度(像素):用于把前端点击坐标换算成 PDFBox 坐标pt
* 注意:这不是 PDF 页面原始宽度,而是 pdf.js 按 scale 渲染到 canvas 的宽度。
*/
@Min(1)
@JsonProperty("viewportWidth")
private Integer viewportWidth;
/** 前端渲染的 viewport 高度(像素):用于坐标换算 */
@Min(1)
@JsonProperty("viewportHeight")
private Integer viewportHeight;
/**
* 手动添加 setter 方法,确保 Jackson 能够正确映射 yPx 字段
* Lombok 生成的 setYPx() 可能与 Jackson 的字段名映射不匹配
*/
@JsonSetter("yPx")
public void setYPx(Integer yPx) {
this.yPx = yPx;
}
/**
* 手动添加 setter 方法,确保 Jackson 能够正确映射 xPx 字段
*/
@JsonSetter("xPx")
public void setXPx(Integer xPx) {
this.xPx = xPx;
}
}

View File

@@ -0,0 +1,27 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import java.time.LocalTime;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmShiftBo extends BaseEntity {
private Long shiftId;
@NotBlank(message = "班次编码不能为空")
private String shiftCode;
@NotBlank(message = "班次名称不能为空")
private String shiftName;
private LocalTime startTime;
private LocalTime endTime;
private Integer breakMinutes;
private Integer isNight;
private String remark;
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.hrm.domain.bo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmStatSnapshotBo extends BaseEntity {
private Long snapId;
@NotNull(message = "统计日期不能为空")
private Date statDate;
@NotBlank(message = "指标类型不能为空")
private String statType;
private String dimJson;
private BigDecimal valueNum;
private String remark;
}

View File

@@ -0,0 +1,43 @@
package com.ruoyi.hrm.domain.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = true)
public class HrmTravelReqBo extends BaseEntity {
private Long bizId;
@NotNull(message = "员工ID不能为空")
private Long empId;
@NotNull(message = "开始时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX", timezone = "GMT+8")
private Date startTime;
@NotNull(message = "结束时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX", timezone = "GMT+8")
private Date endTime;
private String travelType;
private String destination;
private String reason;
private String status;
// 无模板时,自选审批人 userId
private Long manualAssigneeUserId;
private String accessoryApplyIds;
private String accessoryReceiptIds;
private String payeeName;
private Double estimatedCost;
private String bankName;
private String bankAccount;
private String remark;
}

View File

@@ -0,0 +1,39 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class HrmAttendCalcVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "考勤结果ID")
private Long calcId;
@Excel(name = "员工ID")
private Long empId;
@Excel(name = "工作日期", width = 20, dateFormat = "yyyy-MM-dd")
private Date workDate;
@Excel(name = "班次ID")
private Long shiftId;
@Excel(name = "状态")
private String status;
@Excel(name = "出勤分钟")
private Integer workMinutes;
@Excel(name = "迟到分钟")
private Integer lateMinutes;
@Excel(name = "早退分钟")
private Integer earlyMinutes;
@Excel(name = "加班分钟")
private Integer otMinutes;
@Excel(name = "请假分钟JSON")
private String leaveMinutesJson;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,40 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
@Data
public class HrmCertificateVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "证书ID")
private Long certId;
@Excel(name = "员工ID")
private Long empId;
@Excel(name = "证书名称")
private String certName;
@Excel(name = "证书编号")
private String certNo;
@Excel(name = "颁发机构")
private String issuedBy;
@Excel(name = "有效期开始", width = 20, dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date validFrom;
@Excel(name = "有效期结束", width = 20, dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date validTo;
@Excel(name = "备注")
private String remark;
/**
* 证书附件 fileIds逗号分隔的 OSS ID
*/
private String fileIds;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,40 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
@Data
public class HrmContractVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "合同ID")
private Long contractId;
@Excel(name = "员工ID")
private Long empId;
@Excel(name = "合同编号")
private String contractNo;
@Excel(name = "合同类型")
private String contractType;
@Excel(name = "开始日期", width = 20, dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startDate;
@Excel(name = "结束日期", width = 20, dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endDate;
@Excel(name = "状态")
private String status;
@Excel(name = "备注")
private String remark;
/**
* 合同附件 fileIds逗号分隔的 OSS ID
*/
private String fileIds;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,47 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class HrmEmpOrgPositionVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "关系ID")
private Long relId;
@Excel(name = "员工ID")
private Long empId;
@Excel(name = "部门ID")
private Long deptId;
/** 部门名称 */
private String deptName;
@Excel(name = "岗位ID")
private Long postId;
/** 岗位名称 */
private String postName;
@Excel(name = "是否主岗")
private Integer isPrimary;
@Excel(name = "开始日期")
private Date startDate;
@Excel(name = "结束日期")
private Date endDate;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,65 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class HrmEmployeeVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "员工ID")
private Long empId;
@Excel(name = "用户ID")
private Long userId;
@Excel(name = "工号")
private String empNo;
@Excel(name = "姓名")
private String empName;
@Excel(name = "性别")
private String gender;
@Excel(name = "手机号")
private String mobile;
@Excel(name = "邮箱")
private String email;
@Excel(name = "证件号码")
private String idNo;
@Excel(name = "入职日期")
private Date hireDate;
@Excel(name = "雇佣类型")
private String employmentType;
@Excel(name = "在职状态")
private String status;
@Excel(name = "主部门ID")
private Long deptId;
/** 主部门名称 */
private String deptName;
@Excel(name = "主岗位ID")
private Long postId;
/** 主岗位名称 */
private String postName;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class HrmFlowActionVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "操作ID")
private Long actionId;
@Excel(name = "任务ID")
private Long taskId;
@Excel(name = "实例ID")
private Long instId;
@Excel(name = "动作")
private String action;
@Excel(name = "说明")
private String remark;
@Excel(name = "操作人")
private Long actionUserId;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,27 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class HrmFlowCcVo extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Long ccId;
private Long instId;
private String bizType;
private Long bizId;
private String bizTypeName;
private String bizTitle;
private Long nodeId;
private String nodeName;
private Integer readFlag;
private Long ccUserId;
private Long fromUserId;
private String remark;
private Date createTime;
}

View File

@@ -0,0 +1,42 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class HrmFlowInstanceVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "实例ID")
private Long instId;
@Excel(name = "模板ID")
private Long tplId;
@Excel(name = "业务类型")
private String bizType;
@Excel(name = "业务ID")
private Long bizId;
@Excel(name = "状态")
private String status;
@Excel(name = "当前节点ID")
private Long currentNodeId;
@Excel(name = "发起人ID")
private Long startUserId;
@Excel(name = "备注")
private String remark;
/** 列表展示字段(联查业务表) */
private String bizTitle;
private Date startTime;
private Date endTime;
private BigDecimal hours;
private String procStatus;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class HrmFlowNodeVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "节点ID")
private Long nodeId;
@Excel(name = "模板ID")
private Long tplId;
@Excel(name = "顺序")
private Integer orderNo;
@Excel(name = "节点类型")
private String nodeType;
@Excel(name = "审批人规则")
private String approverRule;
@Excel(name = "审批人取值")
private String approverValue;
@Excel(name = "字段权限")
private String fieldPerm;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,44 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;
@Data
public class HrmFlowTaskVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "任务ID")
private Long taskId;
@Excel(name = "实例ID")
private Long instId;
@Excel(name = "节点ID")
private Long nodeId;
@Excel(name = "处理人")
private Long assigneeUserId;
@Excel(name = "状态")
private String status;
@Excel(name = "到期时间")
private Date expireTime;
@Excel(name = "备注")
private String remark;
/** 业务类型leave/travel/seal/reimburse */
private String bizType;
/** 业务ID */
private Long bizId;
/**
* 业务摘要数据(审批中心展示用),由后端联查后回填。
* key/字段根据不同 bizType 不同。
*/
private Map<String, Object> bizData;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class HrmFlowTemplateVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "模板ID")
private Long tplId;
@Excel(name = "模板编码")
private String tplCode;
@Excel(name = "模板名称")
private String tplName;
@Excel(name = "业务类型")
private String bizType;
@Excel(name = "版本")
private Integer version;
@Excel(name = "是否启用")
private Integer enabled;
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,27 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class HrmFormDataVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "表单ID")
private Long formId;
@Excel(name = "业务类型")
private String bizType;
@Excel(name = "业务ID")
private Long bizId;
@Excel(name = "表单内容")
private String contentJson;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,38 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class HrmHeadcountPlanVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "编制ID")
private Long planId;
@Excel(name = "部门ID")
private Long deptId;
@Excel(name = "岗位ID")
private Long postId;
@Excel(name = "年份")
private Integer year;
@Excel(name = "月份")
private Integer month;
@Excel(name = "编制人数")
private Integer budgetCount;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class HrmLeaveBalanceVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "余额ID")
private Long balId;
@Excel(name = "员工ID")
private Long empId;
@Excel(name = "假期类型")
private String leaveType;
@Excel(name = "余额小时")
private BigDecimal balanceHours;
@Excel(name = "到期日", width = 20, dateFormat = "yyyy-MM-dd")
private Date expireDate;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,40 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class HrmLeaveReqVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "业务ID")
private Long bizId;
@Excel(name = "员工ID")
private Long empId;
@Excel(name = "请假类型")
private String leaveType;
@Excel(name = "开始时间", width = 25, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
@Excel(name = "结束时间", width = 25, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
@Excel(name = "时长(小时)")
private BigDecimal hours;
@Excel(name = "原因")
private String reason;
@Excel(name = "状态")
private String status;
@Excel(name = "申请附件")
private String accessoryApplyIds;
@Excel(name = "回执附件")
private String accessoryReceiptIds;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class HrmPayPlanVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "方案ID")
private Long planId;
@Excel(name = "方案名称")
private String planName;
@Excel(name = "基础工资")
private BigDecimal baseSalary;
@Excel(name = "津贴配置JSON")
private String allowanceJson;
@Excel(name = "公式配置JSON")
private String formulaJson;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,27 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class HrmPayRunVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "批次ID")
private Long runId;
@Excel(name = "核算周期")
private String period;
@Excel(name = "状态")
private String status;
@Excel(name = "方案ID")
private Long planId;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class HrmPayslipVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "工资条ID")
private Long slipId;
@Excel(name = "批次ID")
private Long runId;
@Excel(name = "员工ID")
private Long empId;
@Excel(name = "应发金额")
private BigDecimal amountGross;
@Excel(name = "实发金额")
private BigDecimal amountNet;
@Excel(name = "工资项JSON")
private String itemsJson;
@Excel(name = "状态")
private String status;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,31 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class HrmPunchVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "打卡ID")
private Long punchId;
@Excel(name = "员工ID")
private Long empId;
@Excel(name = "打卡时间", width = 25, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date punchTime;
@Excel(name = "来源")
private String source;
@Excel(name = "位置")
private String location;
@Excel(name = "设备ID")
private String deviceId;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,46 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class HrmReimburseReqVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "业务ID")
private Long bizId;
@Excel(name = "员工ID")
private Long empId;
@Excel(name = "报销类型")
private String reimburseType;
@Excel(name = "报销总金额")
private BigDecimal totalAmount;
@Excel(name = "报销事由")
private String reason;
@Excel(name = "状态")
private String status;
@Excel(name = "报销单据附件")
private String accessoryApplyIds;
@Excel(name = "回执附件")
private String accessoryReceiptIds;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

Some files were not shown because too many files have changed in this diff Show More