feat(bpm): 添加费用板块字段并更新薪资流程
- 在 BpmOAExpensesItemDO 和 Expenses 类中添加 costSection 字段,用于区分费用板块 - 更新 BpmOAPaymentServiceImpl 中的费用类型设置 - 修改 BpmOASalaryService 接口和实现类,增加 processInstanceId 参数 - 在 BpmOASalaryServiceImpl 中添加审核通过后的财务支付记录插入逻辑
This commit is contained in:
parent
4ee2f84947
commit
ae7f70fcaf
@ -23,6 +23,10 @@ public class Expenses {
|
|||||||
@NotNull(message = "费用类型不能为空")
|
@NotNull(message = "费用类型不能为空")
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
|
@Schema(description = "费用板块 | 1叉车 2打包 3搬运 4运输", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@NotNull(message = "费用板块不能为空")
|
||||||
|
private Integer costSection;
|
||||||
|
|
||||||
@Schema(description = "费用产生部门", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "费用产生部门", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotNull(message = "费用产生部门不能为空")
|
@NotNull(message = "费用产生部门不能为空")
|
||||||
private Long deptId;
|
private Long deptId;
|
||||||
|
@ -38,6 +38,11 @@ public class BpmOAExpensesItemDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 费用板块 | 1叉车 2打包 3搬运 4运输
|
||||||
|
*/
|
||||||
|
private Integer costSection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 费用产生部门
|
* 费用产生部门
|
||||||
*/
|
*/
|
||||||
|
@ -129,7 +129,7 @@ public class BpmOAPaymentServiceImpl extends BpmOABaseService implements BpmOAPa
|
|||||||
.setProcessInstanceId(paymentDO.getProcessInstanceId())
|
.setProcessInstanceId(paymentDO.getProcessInstanceId())
|
||||||
.setReason(paymentDO.getReason())
|
.setReason(paymentDO.getReason())
|
||||||
.setObjectId(id)
|
.setObjectId(id)
|
||||||
.setType(4)
|
.setType(5)
|
||||||
.setStatus(0)
|
.setStatus(0)
|
||||||
.setAmountPayable(paymentDO.getAmount())
|
.setAmountPayable(paymentDO.getAmount())
|
||||||
.setProcessInstanceName(processInstance.getName())
|
.setProcessInstanceName(processInstance.getName())
|
||||||
|
@ -28,7 +28,7 @@ public interface BpmOASalaryService {
|
|||||||
* @param id 编号
|
* @param id 编号
|
||||||
* @param result 结果
|
* @param result 结果
|
||||||
*/
|
*/
|
||||||
void updateSalaryResult(Long id, Integer result);
|
void updateSalaryResult(String processInstanceId, Long id, Integer result);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得薪资付款申请
|
* 获得薪资付款申请
|
||||||
|
@ -1,16 +1,23 @@
|
|||||||
package cn.iocoder.yudao.module.bpm.service.oa;
|
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.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.api.task.dto.BpmProcessInstanceCreateReqDTO;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.salary.BpmOASalaryCreateReqVO;
|
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.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.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.dal.mysql.oa.BpmOASalaryMapper;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
|
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.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.DeptApi;
|
||||||
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
|
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.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
@ -40,7 +47,7 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal
|
|||||||
private BpmOASalaryMapper salaryMapper;
|
private BpmOASalaryMapper salaryMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private BpmProcessInstanceApi processInstanceApi;
|
private BpmProcessInstanceService processInstanceService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private BpmHistoryProcessInstanceService historyProcessInstanceService;
|
private BpmHistoryProcessInstanceService historyProcessInstanceService;
|
||||||
@ -48,6 +55,12 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal
|
|||||||
@Resource
|
@Resource
|
||||||
private DeptApi deptApi;
|
private DeptApi deptApi;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AdminUserApi userApi;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private FinancialPaymentService financialPaymentService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createSalary(Long userId, BpmOASalaryCreateReqVO createReqVO) {
|
public Long createSalary(Long userId, BpmOASalaryCreateReqVO createReqVO) {
|
||||||
|
|
||||||
@ -63,9 +76,9 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal
|
|||||||
Map<String, Object> processInstanceVariables = new HashMap<>();
|
Map<String, Object> processInstanceVariables = new HashMap<>();
|
||||||
processInstanceVariables.put("company_dept_flag", dto.getFlag());
|
processInstanceVariables.put("company_dept_flag", dto.getFlag());
|
||||||
// 发起 BPM 流程
|
// 发起 BPM 流程
|
||||||
String processInstanceId = processInstanceApi.createProcessInstance(userId,
|
String processInstanceId = processInstanceService.createProcessInstance(userId,
|
||||||
new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY)
|
new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY)
|
||||||
.setVariables(processInstanceVariables).setBusinessKey(String.valueOf(salary.getId()))).getCheckedData();
|
.setVariables(processInstanceVariables).setBusinessKey(String.valueOf(salary.getId())));
|
||||||
|
|
||||||
// 将工作流的编号,更新到 OA 用章单中
|
// 将工作流的编号,更新到 OA 用章单中
|
||||||
salaryMapper.updateById(new BpmOASalaryDO().setId(salary.getId()).setProcessInstanceId(processInstanceId));
|
salaryMapper.updateById(new BpmOASalaryDO().setId(salary.getId()).setProcessInstanceId(processInstanceId));
|
||||||
@ -85,15 +98,42 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateSalaryResult(Long id, Integer result) {
|
public void updateSalaryResult(String processInstanceId, Long id, Integer result) {
|
||||||
validateLeaveExists(id);
|
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));
|
salaryMapper.updateById(new BpmOASalaryDO().setId(id).setResult(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateLeaveExists(Long id) {
|
private BpmOASalaryDO validateLeaveExists(Long id) {
|
||||||
if (salaryMapper.selectById(id) == null) {
|
BpmOASalaryDO salaryDO = salaryMapper.selectById(id);
|
||||||
|
if (salaryDO == null) {
|
||||||
throw exception(OA_SALARY_NOT_EXISTS);
|
throw exception(OA_SALARY_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
|
return salaryDO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -27,6 +27,6 @@ public class BpmOASalaryResultListener extends BpmProcessInstanceResultEventList
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onEvent(BpmProcessInstanceResultEvent event) {
|
protected void onEvent(BpmProcessInstanceResultEvent event) {
|
||||||
SalaryService.updateSalaryResult(Long.parseLong(event.getBusinessKey()), event.getResult());
|
SalaryService.updateSalaryResult(event.getId(), Long.parseLong(event.getBusinessKey()), event.getResult());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user