diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/expenses/Expenses.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/expenses/Expenses.java index 7577dd26..1ef5a5f5 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/expenses/Expenses.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/expenses/Expenses.java @@ -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; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAExpensesItemDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAExpensesItemDO.java index 802d9f29..25d23a20 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAExpensesItemDO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAExpensesItemDO.java @@ -38,6 +38,11 @@ public class BpmOAExpensesItemDO extends BaseDO { */ private Integer type; + /** + * 费用板块 | 1叉车 2打包 3搬运 4运输 + */ + private Integer costSection; + /** * 费用产生部门 */ diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAPaymentServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAPaymentServiceImpl.java index 2dfe3382..b82376f7 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAPaymentServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAPaymentServiceImpl.java @@ -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()) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryService.java index 586c4c14..bdeab59f 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryService.java @@ -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); /** * 获得薪资付款申请 diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java index d0862455..a064f7aa 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java @@ -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 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 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 diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOASalaryResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOASalaryResultListener.java index 27a63148..51baac89 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOASalaryResultListener.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOASalaryResultListener.java @@ -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()); } }