diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmBusinessTripApplyServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmBusinessTripApplyServiceImpl.java index 0cc84e1e..243b341a 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmBusinessTripApplyServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmBusinessTripApplyServiceImpl.java @@ -29,6 +29,7 @@ import org.dromara.common.core.exception.ServiceException; import org.dromara.system.api.RemoteCodeRuleService; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteStartProcess; +import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt; import org.dromara.workflow.api.event.ProcessEvent; import org.springframework.context.event.EventListener; import org.springframework.transaction.annotation.Transactional; @@ -156,6 +157,7 @@ public class CrmBusinessTripApplyServiceImpl implements ICrmBusinessTripApplySer boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setTripId(add.getTripId()); + bo.setApplyCode(add.getApplyCode()); } return flag; } @@ -228,6 +230,10 @@ public class CrmBusinessTripApplyServiceImpl implements ICrmBusinessTripApplySer bo.getBizExt().setBusinessId(startProcess.getBusinessId()); } + // 确保 BizExt 里有 BusinessId 和 BusinessCode + startProcess.getBizExt().setBusinessId(startProcess.getBusinessId()); + startProcess.getBizExt().setBusinessCode(bo.getApplyCode()); + boolean flag = remoteWorkflowService.startCompleteTask(startProcess); if (!flag) { throw new ServiceException("流程发起异常"); diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpAfterSalesServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpAfterSalesServiceImpl.java index bcf2199a..86f79ab2 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpAfterSalesServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpAfterSalesServiceImpl.java @@ -28,6 +28,7 @@ import org.dromara.oa.erp.service.IErpAfterSalesMaterialCostsService; import org.dromara.system.api.RemoteCodeRuleService; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteStartProcess; +import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt; import org.springframework.stereotype.Service; import org.dromara.oa.erp.domain.bo.ErpAfterSalesBo; import org.dromara.oa.erp.domain.vo.ErpAfterSalesVo; @@ -184,6 +185,7 @@ public class ErpAfterSalesServiceImpl implements IErpAfterSalesService { boolean flag = baseMapper.insert(add) > 0; bo.setAfterSalesId(add.getAfterSalesId()); // 将生成的 ID 回填给 BO + bo.setAfterSalesCode(add.getAfterSalesCode()); // 将生成的 Code 回填给 BO if (flag) { Long afterSalesId = add.getAfterSalesId(); @@ -317,10 +319,9 @@ public class ErpAfterSalesServiceImpl implements IErpAfterSalesService { startProcess.setVariables(bo.getVariables()); startProcess.setBizExt(bo.getBizExt()); - // 确保 BizExt 里也有 BusinessId - if (bo.getBizExt() != null) { - bo.getBizExt().setBusinessId(startProcess.getBusinessId()); - } + // 确保 BizExt 里有 BusinessId 和 BusinessCode + startProcess.getBizExt().setBusinessId(startProcess.getBusinessId()); + startProcess.getBizExt().setBusinessCode(bo.getAfterSalesCode()); // 调用远程服务启动流程 // startCompleteTask 表示“启动并自动完成第一个发起节点”,直接流转到下一个审批人 diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpTimesheetInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpTimesheetInfoServiceImpl.java index 5b1b3dab..38c82fac 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpTimesheetInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpTimesheetInfoServiceImpl.java @@ -163,6 +163,7 @@ public class ErpTimesheetInfoServiceImpl implements IErpTimesheetInfoService { if (flag) { // 回填 ID 给 BO bo.setTimesheetId(add.getTimesheetId()); + bo.setTimesheetCode(add.getTimesheetCode()); Long timesheetId = add.getTimesheetId(); // 保存部门工时子表 @@ -328,6 +329,10 @@ public class ErpTimesheetInfoServiceImpl implements IErpTimesheetInfoService { bo.getBizExt().setBusinessId(startProcess.getBusinessId()); } + // 确保 BizExt 里有 BusinessId 和 BusinessCode + startProcess.getBizExt().setBusinessId(startProcess.getBusinessId()); + startProcess.getBizExt().setBusinessCode(bo.getTimesheetCode()); + RemoteStartProcessReturn result = remoteWorkflowService.startWorkFlow(startProcess); if (result == null) { throw new ServiceException("流程发起失败"); @@ -347,7 +352,6 @@ public class ErpTimesheetInfoServiceImpl implements IErpTimesheetInfoService { } } else { // taskId 为空,说明流程启动后直接跳过/已结束/进入下一个节点(可能因为自动完成) - // 这种情况下,我们不需要做任何事,直接视为成功 log.info("流程启动成功,首节点已自动完成或跳过: instanceId={}", result.getProcessInstanceId()); }