feat(hrm): 修改请假、报销、用印、出差申请的新增接口返回值类型

- 将 Controller 中的新增方法返回类型从 R<Void> 修改为 R<HrmLeaveReqVo> 等对应的 VO 类型
- 修改 Service 层 insertByBo 方法返回类型从 Boolean 为对应的 VO 对象,并在其中包含流程实例 ID
- 在各个 VO 类中添加 instId 字段用于存储流程实例 ID
- 完善流程实例启动后将实例 ID 设置到返回对象中的逻辑
- 统一各业务类型的新增接口返回值处理方式,提供更完整的数据回传功能
This commit is contained in:
2026-02-10 11:24:24 +08:00
parent 33da5d8114
commit 16328050c8
16 changed files with 44 additions and 24 deletions

View File

@@ -6,6 +6,7 @@ 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.HrmLeaveReq;
import com.ruoyi.hrm.domain.bo.HrmLeaveReqBo;
import com.ruoyi.hrm.domain.vo.HrmLeaveReqVo;
import com.ruoyi.hrm.service.IHrmLeaveReqService;
@@ -38,8 +39,8 @@ public class HrmLeaveReqController extends BaseController {
@Log(title = "请假单", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmLeaveReqBo bo) {
return toAjax(service.insertByBo(bo));
public R<HrmLeaveReqVo> add(@Validated @RequestBody HrmLeaveReqBo bo) {
return R.ok(service.insertByBo(bo));
}
@Log(title = "请假单", businessType = BusinessType.UPDATE)

View File

@@ -41,8 +41,8 @@ public class HrmReimburseReqController extends BaseController {
@Log(title = "日常报销单", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmReimburseReqBo bo) {
return toAjax(service.insertByBo(bo));
public R<HrmReimburseReqVo> add(@Validated @RequestBody HrmReimburseReqBo bo) {
return R.ok(service.insertByBo(bo));
}
@Log(title = "日常报销单", businessType = BusinessType.UPDATE)

View File

@@ -42,8 +42,8 @@ public class HrmSealReqController extends BaseController {
@Log(title = "用印申请", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmSealReqBo bo) {
return toAjax(service.insertByBo(bo));
public R<HrmSealReqVo> add(@Validated @RequestBody HrmSealReqBo bo) {
return R.ok(service.insertByBo(bo));
}
@Log(title = "用印申请", businessType = BusinessType.UPDATE)

View File

@@ -41,8 +41,8 @@ public class HrmTravelReqController extends BaseController {
@Log(title = "出差单", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody HrmTravelReqBo bo) {
return toAjax(service.insertByBo(bo));
public R<HrmTravelReqVo> add(@Validated @RequestBody HrmTravelReqBo bo) {
return R.ok(service.insertByBo(bo));
}
@Log(title = "出差单", businessType = BusinessType.UPDATE)

View File

@@ -71,4 +71,6 @@ public class HrmLeaveReqVo implements Serializable {
private Date createTime;
private String updateBy;
private Date updateTime;
private Long instId;
}

View File

@@ -93,5 +93,7 @@ public class HrmReimburseReqVo implements Serializable {
private Date createTime;
private String updateBy;
private Date updateTime;
private Long instId;
}

View File

@@ -98,4 +98,7 @@ public class HrmSealReqVo implements Serializable {
private Date createTime;
private String updateBy;
private Date updateTime;
private Long instId;
}

View File

@@ -78,4 +78,6 @@ public class HrmTravelReqVo implements Serializable {
private Date createTime;
private String updateBy;
private Date updateTime;
private Long instId;
}

View File

@@ -2,6 +2,7 @@ package com.ruoyi.hrm.service;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.hrm.domain.HrmLeaveReq;
import com.ruoyi.hrm.domain.bo.HrmLeaveReqBo;
import com.ruoyi.hrm.domain.vo.HrmLeaveReqVo;
@@ -18,7 +19,7 @@ public interface IHrmLeaveReqService {
List<HrmLeaveReqVo> queryListWithProject(HrmLeaveReqBo bo);
Boolean insertByBo(HrmLeaveReqBo bo);
HrmLeaveReqVo insertByBo(HrmLeaveReqBo bo);
Boolean updateByBo(HrmLeaveReqBo bo);

View File

@@ -18,7 +18,7 @@ public interface IHrmReimburseReqService {
List<HrmReimburseReqVo> queryListWithProject(HrmReimburseReqBo bo);
Boolean insertByBo(HrmReimburseReqBo bo);
HrmReimburseReqVo insertByBo(HrmReimburseReqBo bo);
Boolean updateByBo(HrmReimburseReqBo bo);

View File

@@ -19,7 +19,7 @@ public interface IHrmSealReqService {
List<HrmSealReqVo> queryListWithProject(HrmSealReqBo bo);
Boolean insertByBo(HrmSealReqBo bo);
HrmSealReqVo insertByBo(HrmSealReqBo bo);
Boolean updateByBo(HrmSealReqBo bo);

View File

@@ -18,7 +18,7 @@ public interface IHrmTravelReqService {
List<HrmTravelReqVo> queryListWithProject(HrmTravelReqBo bo);
Boolean insertByBo(HrmTravelReqBo bo);
HrmTravelReqVo insertByBo(HrmTravelReqBo bo);
Boolean updateByBo(HrmTravelReqBo bo);

View File

@@ -56,11 +56,12 @@ public class HrmLeaveReqServiceImpl implements IHrmLeaveReqService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(HrmLeaveReqBo bo) {
public HrmLeaveReqVo insertByBo(HrmLeaveReqBo bo) {
HrmLeaveReq add = BeanUtil.toBean(bo, HrmLeaveReq.class);
add.setStatus(defaultStatus(add.getStatus()));
boolean ok = baseMapper.insert(add) > 0;
HrmLeaveReqVo bean = BeanUtil.toBean(add, HrmLeaveReqVo.class);
// 当提交为 pending 时自动启动流程实例hrm_flow_instance/hrm_flow_task
if (ok && "pending".equalsIgnoreCase(add.getStatus())) {
@@ -97,10 +98,11 @@ public class HrmLeaveReqServiceImpl implements IHrmLeaveReqService {
start.setBizId(add.getBizId());
start.setStartUserId(startUserId);
flowInstanceService.startInstance(start);
Long instId = flowInstanceService.startInstance(start);
bean.setInstId(instId);
}
return ok;
return bean;
}
@Override

View File

@@ -55,11 +55,12 @@ public class HrmReimburseReqServiceImpl implements IHrmReimburseReqService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(HrmReimburseReqBo bo) {
public HrmReimburseReqVo insertByBo(HrmReimburseReqBo bo) {
HrmReimburseReq add = BeanUtil.toBean(bo, HrmReimburseReq.class);
add.setStatus(defaultStatus(add.getStatus()));
boolean ok = baseMapper.insert(add) > 0;
HrmReimburseReqVo bean = BeanUtil.toBean(add, HrmReimburseReqVo.class);
if (ok && "pending".equalsIgnoreCase(add.getStatus())) {
// 选择启用的最高版本模板(允许无模板:走自选审批人一次性审批)
HrmFlowTemplate tpl = flowTemplateMapper.selectOne(Wrappers.<HrmFlowTemplate>lambdaQuery()
@@ -77,10 +78,11 @@ public class HrmReimburseReqServiceImpl implements IHrmReimburseReqService {
start.setBizType("reimburse");
start.setBizId(add.getBizId());
start.setStartUserId(startUserId);
flowInstanceService.startInstance(start);
Long instId = flowInstanceService.startInstance(start);
bean.setInstId(instId);
}
return ok;
return bean;
}
@Override

View File

@@ -28,6 +28,7 @@ import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -72,7 +73,7 @@ public class HrmSealReqServiceImpl implements IHrmSealReqService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(HrmSealReqBo bo) {
public HrmSealReqVo insertByBo(HrmSealReqBo bo) {
HrmSealReq add = BeanUtil.toBean(bo, HrmSealReq.class);
add.setStatus(defaultStatus(add.getStatus()));
validEntityBeforeSave(add);
@@ -82,6 +83,7 @@ public class HrmSealReqServiceImpl implements IHrmSealReqService {
Long tplId = bo.getTplId() != null ? bo.getTplId() : bo.getFlowTplId();
boolean shouldStartFlow = tplId != null || bo.getManualAssigneeUserId() != null;
HrmSealReqVo bean = BeanUtil.toBean(add, HrmSealReqVo.class);
if (ok && shouldStartFlow) {
HrmFlowStartBo start = new HrmFlowStartBo();
start.setTplId(tplId);
@@ -91,11 +93,12 @@ public class HrmSealReqServiceImpl implements IHrmSealReqService {
start.setStartUserId(LoginHelper.getUserId());
start.setContentJson(bo.getContentJson());
flowInstanceService.startInstance(start);
Long instId = flowInstanceService.startInstance(start);
// 更新状态为流转中
updateStatus(add.getBizId(), "running");
bean.setInstId(instId);
}
return ok;
return bean;
}
@Override

View File

@@ -55,11 +55,12 @@ public class HrmTravelReqServiceImpl implements IHrmTravelReqService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(HrmTravelReqBo bo) {
public HrmTravelReqVo insertByBo(HrmTravelReqBo bo) {
HrmTravelReq add = BeanUtil.toBean(bo, HrmTravelReq.class);
add.setStatus(defaultStatus(add.getStatus()));
boolean ok = baseMapper.insert(add) > 0;
HrmTravelReqVo bean = BeanUtil.toBean(add, HrmTravelReqVo.class);
// 业务表状态规范pending/approved/rejected
// 当提交为 pending 时自动启动流程实例hrm_flow_instance/hrm_flow_task
if (ok && "pending".equalsIgnoreCase(add.getStatus())) {
@@ -81,10 +82,11 @@ public class HrmTravelReqServiceImpl implements IHrmTravelReqService {
start.setBizId(add.getBizId());
start.setStartUserId(startUserId);
// 暂不保存 contentJson
flowInstanceService.startInstance(start);
Long instId = flowInstanceService.startInstance(start);
bean.setInstId(instId);
}
return ok;
return bean;
}
@Override