办公V3
This commit is contained in:
@@ -16,11 +16,13 @@ public class HrmEmpOrgPositionBo extends BaseEntity {
|
||||
@NotNull(message = "员工不能为空")
|
||||
private Long empId;
|
||||
|
||||
@NotNull(message = "组织不能为空")
|
||||
private Long orgId;
|
||||
@NotNull(message = "部门不能为空")
|
||||
/** 部门ID(引用 sys_dept.dept_id) */
|
||||
private Long deptId;
|
||||
|
||||
@NotNull(message = "岗位不能为空")
|
||||
private Long positionId;
|
||||
/** 岗位ID(引用 sys_post.post_id) */
|
||||
private Long postId;
|
||||
|
||||
private Integer isPrimary;
|
||||
|
||||
|
||||
@@ -39,11 +39,11 @@ public class HrmEmployeeBo extends BaseEntity {
|
||||
|
||||
private String status;
|
||||
|
||||
private Long gradeId;
|
||||
/** 主部门ID(引用 sys_dept.dept_id) */
|
||||
private Long deptId;
|
||||
|
||||
private Long mainOrgId;
|
||||
|
||||
private Long mainPositionId;
|
||||
/** 主岗位ID(引用 sys_post.post_id) */
|
||||
private Long postId;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
|
||||
33
klp-hrm/src/main/java/com/klp/hrm/domain/bo/HrmFlowCcBo.java
Normal file
33
klp-hrm/src/main/java/com/klp/hrm/domain/bo/HrmFlowCcBo.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package com.klp.hrm.domain.bo;
|
||||
|
||||
import com.klp.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;
|
||||
}
|
||||
|
||||
@@ -7,12 +7,19 @@ import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
public class HrmFlowStartBo {
|
||||
@NotNull(message = "模板ID不能为空")
|
||||
// 模板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;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.klp.hrm.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 流程任务审批请求体
|
||||
*/
|
||||
@Data
|
||||
public class HrmFlowTaskApproveBo {
|
||||
|
||||
/** 审批意见 */
|
||||
private String remark;
|
||||
|
||||
/** 盖章参数(仅用于用印业务) */
|
||||
private HrmSealStampBo stampBo;
|
||||
}
|
||||
|
||||
@@ -20,4 +20,10 @@ public class HrmFlowTaskBo extends BaseEntity {
|
||||
private String status;
|
||||
private Date expireTime;
|
||||
private String remark;
|
||||
|
||||
/** 业务类型:leave/travel/seal */
|
||||
private String bizType;
|
||||
|
||||
/** 业务ID:对应请假/出差/用印的 bizId */
|
||||
private Long bizId;
|
||||
}
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
package com.klp.hrm.domain.bo;
|
||||
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class HrmGradeBo extends BaseEntity {
|
||||
|
||||
private Long gradeId;
|
||||
|
||||
@NotBlank(message = "职级编码不能为空")
|
||||
private String gradeCode;
|
||||
|
||||
@NotBlank(message = "职级名称不能为空")
|
||||
private String gradeName;
|
||||
|
||||
private Integer levelNo;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -12,11 +12,13 @@ public class HrmHeadcountPlanBo extends BaseEntity {
|
||||
|
||||
private Long planId;
|
||||
|
||||
@NotNull(message = "组织不能为空")
|
||||
private Long orgId;
|
||||
@NotNull(message = "部门不能为空")
|
||||
/** 部门ID(引用 sys_dept.dept_id) */
|
||||
private Long deptId;
|
||||
|
||||
@NotNull(message = "岗位不能为空")
|
||||
private Long positionId;
|
||||
/** 岗位ID(引用 sys_post.post_id) */
|
||||
private Long postId;
|
||||
|
||||
@NotNull(message = "年份不能为空")
|
||||
private Integer year;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.klp.hrm.domain.bo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -21,9 +22,11 @@ public class HrmLeaveReqBo extends BaseEntity {
|
||||
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 = "时长不能为空")
|
||||
@@ -31,6 +34,18 @@ public class HrmLeaveReqBo extends BaseEntity {
|
||||
|
||||
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;
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
package com.klp.hrm.domain.bo;
|
||||
|
||||
import com.klp.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 HrmOrgBo extends BaseEntity {
|
||||
|
||||
/** 组织ID */
|
||||
private Long orgId;
|
||||
|
||||
/** 父级组织ID */
|
||||
private Long parentId;
|
||||
|
||||
@NotBlank(message = "组织编码不能为空")
|
||||
private String orgCode;
|
||||
|
||||
@NotBlank(message = "组织名称不能为空")
|
||||
private String orgName;
|
||||
|
||||
@NotBlank(message = "组织类型不能为空")
|
||||
private String orgType;
|
||||
|
||||
private Long leaderUserId;
|
||||
|
||||
private Integer orderNum;
|
||||
|
||||
private Integer status;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
package com.klp.hrm.domain.bo;
|
||||
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class HrmPositionBo extends BaseEntity {
|
||||
|
||||
private Long positionId;
|
||||
|
||||
@NotBlank(message = "岗位编码不能为空")
|
||||
private String positionCode;
|
||||
|
||||
@NotBlank(message = "岗位名称不能为空")
|
||||
private String positionName;
|
||||
|
||||
private Long gradeId;
|
||||
|
||||
private Integer orderNum;
|
||||
|
||||
private Integer status;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -5,31 +5,35 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class HrmOvertimeReqBo extends BaseEntity {
|
||||
public class HrmReimburseReqBo extends BaseEntity {
|
||||
|
||||
private Long bizId;
|
||||
|
||||
@NotNull(message = "员工ID不能为空")
|
||||
private Long empId;
|
||||
|
||||
private String otType;
|
||||
private String reimburseType;
|
||||
|
||||
@NotNull(message = "开始时间不能为空")
|
||||
private Date startTime;
|
||||
|
||||
@NotNull(message = "结束时间不能为空")
|
||||
private Date endTime;
|
||||
|
||||
@NotNull(message = "时长不能为空")
|
||||
private java.math.BigDecimal hours;
|
||||
@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;
|
||||
}
|
||||
|
||||
@@ -40,9 +40,20 @@ public class HrmSealReqBo extends BaseEntity {
|
||||
/** 状态 draft/running/approved/rejected/canceled */
|
||||
private String status;
|
||||
|
||||
/** 关联流程模板ID(提交时可选,存在则自动发起审批) */
|
||||
/** 关联流程模板ID(旧字段,兼容历史前端/代码) */
|
||||
private Long flowTplId;
|
||||
|
||||
/**
|
||||
* 流程模板ID(新字段,前端选择模板流程时传入)。
|
||||
* 优先级高于 flowTplId。
|
||||
*/
|
||||
private Long tplId;
|
||||
|
||||
/**
|
||||
* 手动选择的审批人ID(前端选择手动审批时传入)。
|
||||
*/
|
||||
private Long manualAssigneeUserId;
|
||||
|
||||
/** 流程发起人ID(可选,不填可由服务侧取当前登录人) */
|
||||
private Long startUserId;
|
||||
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
package com.klp.hrm.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
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;
|
||||
@@ -9,37 +16,83 @@ import javax.validation.constraints.NotNull;
|
||||
/**
|
||||
* 盖章命令(Java/Python 坐标统一使用 px)
|
||||
*/
|
||||
@Data
|
||||
@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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.klp.hrm.domain.bo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.klp.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -17,15 +18,26 @@ public class HrmTravelReqBo extends BaseEntity {
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user