package org.springblade.mdm.flow.service; import lombok.AllArgsConstructor; import org.flowable.engine.IdentityService; import org.flowable.engine.RuntimeService; import org.flowable.engine.runtime.ProcessInstance; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.mdm.basesetting.machine.MachineService; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision; import org.springblade.mdm.basesetting.producedivision.service.ProduceDivisionService; import org.springblade.mdm.flow.constants.FlowContants; import org.springblade.mdm.program.entity.NcNode; import org.springblade.mdm.program.service.NcNodeService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.Map; @AllArgsConstructor @Service public class LockFlowService { private final NcNodeService nodeService; private final RuntimeService runtimeService; private final IdentityService identityService; private final MachineService machineService; private final ProduceDivisionService produceDivisionService; /** * 启动解锁流程 */ @Transactional public void startUnlock(Long nodeId){ NcNode programPackage = nodeService.getById(nodeId); Map vars = new HashMap<>(); ProduceDivision div = produceDivisionService.getByDrawingNoWithQinzhe(programPackage.getDrawingNo()); vars.put(FlowContants.ASSIGNEE,div.getSeniorId());//审批用户:高师 vars.put(FlowContants.TITLE,programPackage.getName()+"程序解锁"); //机床编号 vars.put(FlowContants.MACHINE_CODE,programPackage.getMachineCode()); Machine machine = machineService.getByCode(programPackage.getMachineCode()); //机床型号 if(machine != null) { vars.put(FlowContants.MACHINE_MODE, machine.getName()); } vars.put(FlowContants.PROCESS_NO,programPackage.getProcessNo()); vars.put(FlowContants.PROCESS_NAME,programPackage.getProcessName()); vars.put(FlowContants.PROCESS_EDITION,programPackage.getProcessEdition()); vars.put(FlowContants.CRAFT_EDITION,programPackage.getCraftEdition()); vars.put(FlowContants.DRAWING_NO,programPackage.getDrawingNo()); vars.put(FlowContants.DRAWING_NO_EDITION,programPackage.getDrawingNoEdition()); vars.put(FlowContants.PROGRAM_PACKAGE_NAME,programPackage.getName()); vars.put(FlowContants.PRODUCT_MODEL,programPackage.getProductModel()); vars.put(FlowContants.NODE_ID, nodeId); vars.put(FlowContants.MY_PROCESS_NAME,"解锁流程"); vars.put("comment", "解锁程序"+programPackage.getName()); identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//设置流程发起人 ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.REPLACE_PROCESS_KEY,nodeId+"",vars); programPackage.setProcessInstanceId(inst.getId()); this.nodeService.updateById(programPackage); } }