添加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

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;
}

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 HrmScheduleVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "排班ID")
private Long schedId;
@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 remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}

View File

@@ -0,0 +1,50 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 用印申请 VO
*/
@Data
public class HrmSealReqVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "业务ID")
private Long bizId;
@Excel(name = "申请人ID")
private Long empId;
@Excel(name = "用印类型")
private String sealType;
@Excel(name = "用途说明")
private String purpose;
@Excel(name = "申请材料附件ID列表")
private String applyFileIds;
@Excel(name = "是否需要回执")
private Integer receiptRequired;
@Excel(name = "回执状态")
private String receiptStatus;
@Excel(name = "回执附件ID列表")
private String receiptFileIds;
@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,34 @@
package com.ruoyi.hrm.domain.vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalTime;
import java.util.Date;
@Data
public class HrmShiftVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "班次ID")
private Long shiftId;
@Excel(name = "班次编码")
private String shiftCode;
@Excel(name = "班次名称")
private String shiftName;
@Excel(name = "上班时间")
private LocalTime startTime;
@Excel(name = "下班时间")
private LocalTime endTime;
@Excel(name = "休息分钟")
private Integer breakMinutes;
@Excel(name = "是否夜班")
private Integer isNight;
@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 HrmStatSnapshotVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "快照ID")
private Long snapId;
@Excel(name = "统计日期", width = 20, dateFormat = "yyyy-MM-dd")
private Date statDate;
@Excel(name = "指标类型")
private String statType;
@Excel(name = "维度JSON")
private String dimJson;
@Excel(name = "数值")
private BigDecimal valueNum;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private Date updateTime;
private String updateBy;
}

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 HrmTravelReqVo implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "业务ID")
private Long bizId;
@Excel(name = "员工ID")
private Long empId;
@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 String travelType;
@Excel(name = "目的地")
private String destination;
@Excel(name = "原因")
private String reason;
@Excel(name = "状态")
private String status;
@Excel(name = "申请附件")
private String accessoryApplyIds;
@Excel(name = "回执附件")
private String accessoryReceiptIds;
@Excel(name = "收款人")
private String payeeName;
@Excel(name = "预估费用")
private Double estimatedCost;
@Excel(name = "开户行")
private String bankName;
@Excel(name = "银行账号")
private String bankAccount;
@Excel(name = "备注")
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}