feat(bpm): 添加费用板块字段并更新薪资流程

- 在 BpmOAExpensesItemDO 和 Expenses 类中添加 costSection 字段,用于区分费用板块
- 更新 BpmOAPaymentServiceImpl 中的费用类型设置
- 修改 BpmOASalaryService 接口和实现类,增加 processInstanceId 参数
- 在 BpmOASalaryServiceImpl 中添加审核通过后的财务支付记录插入逻辑
This commit is contained in:
furongxin 2025-01-27 21:14:10 +08:00
parent 4ee2f84947
commit ae7f70fcaf
6 changed files with 60 additions and 11 deletions

View File

@ -23,6 +23,10 @@ public class Expenses {
@NotNull(message = "费用类型不能为空")
private Integer type;
@Schema(description = "费用板块 | 1叉车 2打包 3搬运 4运输", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "费用板块不能为空")
private Integer costSection;
@Schema(description = "费用产生部门", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "费用产生部门不能为空")
private Long deptId;

View File

@ -38,6 +38,11 @@ public class BpmOAExpensesItemDO extends BaseDO {
*/
private Integer type;
/**
* 费用板块 | 1叉车 2打包 3搬运 4运输
*/
private Integer costSection;
/**
* 费用产生部门
*/

View File

@ -129,7 +129,7 @@ public class BpmOAPaymentServiceImpl extends BpmOABaseService implements BpmOAPa
.setProcessInstanceId(paymentDO.getProcessInstanceId())
.setReason(paymentDO.getReason())
.setObjectId(id)
.setType(4)
.setType(5)
.setStatus(0)
.setAmountPayable(paymentDO.getAmount())
.setProcessInstanceName(processInstance.getName())

View File

@ -28,7 +28,7 @@ public interface BpmOASalaryService {
* @param id 编号
* @param result 结果
*/
void updateSalaryResult(Long id, Integer result);
void updateSalaryResult(String processInstanceId, Long id, Integer result);
/**
* 获得薪资付款申请

View File

@ -1,16 +1,23 @@
package cn.iocoder.yudao.module.bpm.service.oa;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.salary.BpmOASalaryCreateReqVO;
import cn.iocoder.yudao.module.bpm.convert.oa.BpmOASalaryConvert;
import cn.iocoder.yudao.module.bpm.dal.dataobject.financialpayment.FinancialPaymentDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOASalaryDO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOASalaryMapper;
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
import cn.iocoder.yudao.module.bpm.service.financialpayment.FinancialPaymentService;
import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService;
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -40,7 +47,7 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal
private BpmOASalaryMapper salaryMapper;
@Resource
private BpmProcessInstanceApi processInstanceApi;
private BpmProcessInstanceService processInstanceService;
@Resource
private BpmHistoryProcessInstanceService historyProcessInstanceService;
@ -48,6 +55,12 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal
@Resource
private DeptApi deptApi;
@Resource
private AdminUserApi userApi;
@Resource
private FinancialPaymentService financialPaymentService;
@Override
public Long createSalary(Long userId, BpmOASalaryCreateReqVO createReqVO) {
@ -63,9 +76,9 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal
Map<String, Object> processInstanceVariables = new HashMap<>();
processInstanceVariables.put("company_dept_flag", dto.getFlag());
// 发起 BPM 流程
String processInstanceId = processInstanceApi.createProcessInstance(userId,
String processInstanceId = processInstanceService.createProcessInstance(userId,
new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY)
.setVariables(processInstanceVariables).setBusinessKey(String.valueOf(salary.getId()))).getCheckedData();
.setVariables(processInstanceVariables).setBusinessKey(String.valueOf(salary.getId())));
// 将工作流的编号更新到 OA 用章单中
salaryMapper.updateById(new BpmOASalaryDO().setId(salary.getId()).setProcessInstanceId(processInstanceId));
@ -85,15 +98,42 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal
}
@Override
public void updateSalaryResult(Long id, Integer result) {
validateLeaveExists(id);
public void updateSalaryResult(String processInstanceId, Long id, Integer result) {
BpmOASalaryDO salaryDO = validateLeaveExists(id);
//审核通过 最后节点
if (BpmProcessInstanceResultEnum.APPROVE.getResult().equals(result)) {
ProcessInstance instance = processInstanceService.getProcessInstance(processInstanceId);
if (instance.isEnded()) {
BpmProcessInstanceExtDO processInstance = processInstanceService.getProcessInstanceDO(processInstanceId);
// -- 插入到财务支付表中
CommonResult<AdminUserRespDTO> user = userApi.getUser(salaryDO.getUserId());
financialPaymentService.save(new FinancialPaymentDO()
.setUserId(salaryDO.getUserId())
.setDeptId(user.getData() == null ? null : user.getData().getDeptId())
.setProcessInstanceId(salaryDO.getProcessInstanceId())
.setReason(salaryDO.getReason())
.setObjectId(id)
.setType(6)
.setStatus(0)
.setAmountPayable(salaryDO.getPaymentTotal())
.setProcessInstanceName(processInstance.getName())
.setBeginTime(processInstance.getCreateTime())
.setEndTime(processInstance.getEndTime())
);
}
}
salaryMapper.updateById(new BpmOASalaryDO().setId(id).setResult(result));
}
private void validateLeaveExists(Long id) {
if (salaryMapper.selectById(id) == null) {
private BpmOASalaryDO validateLeaveExists(Long id) {
BpmOASalaryDO salaryDO = salaryMapper.selectById(id);
if (salaryDO == null) {
throw exception(OA_SALARY_NOT_EXISTS);
}
return salaryDO;
}
@Override

View File

@ -27,6 +27,6 @@ public class BpmOASalaryResultListener extends BpmProcessInstanceResultEventList
@Override
protected void onEvent(BpmProcessInstanceResultEvent event) {
SalaryService.updateSalaryResult(Long.parseLong(event.getBusinessKey()), event.getResult());
SalaryService.updateSalaryResult(event.getId(), Long.parseLong(event.getBusinessKey()), event.getResult());
}
}