package com.by4cloud.platformx.business.controller; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.by4cloud.platformx.business.constant.FlowNameEnum; import com.by4cloud.platformx.business.entity.ContractDelayOut; import com.by4cloud.platformx.business.service.ContractDelayOutService; import com.by4cloud.platformx.business.service.ContractInvoiceService; import com.by4cloud.platformx.business.service.ContractService; import com.by4cloud.platformx.flow.task.constant.TaskStatusEnum; import com.by4cloud.platformx.flow.task.dto.ProcessInstanceParamDto; import com.by4cloud.platformx.flow.task.dto.ProcessNodeRecordParamDto; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 工作流回调 * @author xfei * @date 2025/5/12 17:07 */ @RestController @RequiredArgsConstructor @RequestMapping("/flowCallBack" ) @Slf4j @Tag(description = "flowCallBack" , name = "流程回调" ) public class FlowCallBackController { private final ContractService contractService; private final ContractInvoiceService contractInvoiceService; private final ContractDelayOutService delayOutService; /** * 开始节点事件 * @param recordParamDto * @return */ @PostMapping("/startNodeEvent") public void startNodeEvent(@RequestBody ProcessNodeRecordParamDto recordParamDto){ if (recordParamDto.getFlowName().equals(FlowNameEnum.合同审批.getName())) { } if (recordParamDto.getFlowName().equals(FlowNameEnum.销售挂账审批.getName())) { } } /** * 任务结束事件 * @param processInstanceParamDto * @return */ @PostMapping("/endProcess") public void endProcessEvent(@RequestBody ProcessInstanceParamDto processInstanceParamDto) { if (processInstanceParamDto.getFlowName().equals(FlowNameEnum.合同审批.getName())) { //通过后更新主表状态 if (processInstanceParamDto.getTaskStatus()== TaskStatusEnum.YJS.getCode()){ contractService.takeEffect(Long.valueOf(processInstanceParamDto.getParamMap().get("id")+"")); } //拒绝后回退主表状态 if (processInstanceParamDto.getTaskStatus()== TaskStatusEnum.JJ.getCode()){ contractService.refuseApproval(Long.valueOf(processInstanceParamDto.getParamMap().get("id")+"")); } } if (processInstanceParamDto.getFlowName().equals(FlowNameEnum.销售挂账审批.getName())) { //通过后更新主表状态 if (processInstanceParamDto.getTaskStatus()== TaskStatusEnum.YJS.getCode()){ contractInvoiceService.takeEffect(Long.valueOf(processInstanceParamDto.getParamMap().get("id")+"")); } //拒绝后回退主表状态 if (processInstanceParamDto.getTaskStatus()== TaskStatusEnum.JJ.getCode()){ contractInvoiceService.refuseApproval(Long.valueOf(processInstanceParamDto.getParamMap().get("id")+"")); } } if (processInstanceParamDto.getFlowName().equals(FlowNameEnum.延期出货审批.getName())) { //通过后更新主表状态 if (processInstanceParamDto.getTaskStatus()== TaskStatusEnum.YJS.getCode()){ delayOutService.approvalPass(Long.valueOf(processInstanceParamDto.getParamMap().get("contractId")+"")); } //拒绝后回退主表状态 if (processInstanceParamDto.getTaskStatus()== TaskStatusEnum.JJ.getCode()){ delayOutService.refuseApproval(Long.valueOf(processInstanceParamDto.getParamMap().get("delayOutService")+"")); } } } }