package org.springblade.mdm.flow.excution; import io.swagger.v3.oas.annotations.media.Schema; import org.flowable.common.engine.impl.identity.Authentication; import org.flowable.engine.IdentityService; import org.flowable.engine.runtime.ProcessInstance; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.flow.core.feign.IFlowClient; import org.springblade.flow.core.pojo.entity.BladeFlow; import org.springblade.flow.core.utils.TaskUtil; import org.springblade.mdm.flow.vo.TaskAssignVO; import org.springblade.mdm.program.entity.NcProgram; import org.springblade.mdm.program.service.NcProgramService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.flowable.engine.RuntimeService; import java.util.HashMap; import java.util.List; import java.util.Map; @Service("startDispatcher") public class StartDispatcher { @Autowired private RuntimeService runtimeService; @Autowired private AutoAssignUsersService autoAssignUsersService; @Autowired private IdentityService identityService; @Autowired private NcProgramService ncProgramService; private static final String PROCESS_KEY = "dispatch"; public void start(TaskAssignVO startVO){ Map preAssignee = autoAssignUsersService.autoAssignUsers(startVO.getProducePlanId()); Map vars = new HashMap<>(preAssignee); vars.put("machineCode",startVO.getMachineCode()); vars.put("machineMode",startVO.getMachineMode()); vars.put("processNo",startVO.getProcessNo()); vars.put("processName",startVO.getProcessName()); vars.put("processEdition",startVO.getProcessEdition()); vars.put("craftEdition",startVO.getCraftEdition()); vars.put("planStartTime",startVO.getPlanStartTime()); vars.put("partNo",startVO.getPartNo()); vars.put("partNoEdition",startVO.getPartNoEdition()); vars.put("planLockDays",startVO.getPlanLockDays()); vars.put("productModel",startVO.getProductModel()); //零组件代码 String partNo = generatePartNo(startVO); vars.put("partNo",partNo); List curedNcProgram = ncProgramService.getCuredNcProgram(partNo,startVO.getMachineCode()); //vars.put("curedNcProgram",curedNcProgram); //设置是否有固化程序标记 vars.put("hasCuredProgram",!curedNcProgram.isEmpty() ? "Y":"N"); String businessKey = "0";//业务表key identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//设置流程发起人 ProcessInstance pinst = runtimeService.startProcessInstanceByKey(PROCESS_KEY,businessKey,vars); int a=1; //log.info() } /** * 生成零组件编号 * 图号、图号版次、工序号、工序名称、工艺版次、工序版次 组合起来获得零组件号 * @param startVO * @return */ String generatePartNo(TaskAssignVO startVO){ //TODO 这个格式未确定,需要确认 return String.format("%s-%s-%s-%s-%s-%s", startVO.getPartNo(), startVO.getPartNoEdition(), startVO.getProcessNo(), startVO.getProcessName(), startVO.getCraftEdition(), startVO.getProcessEdition()); } }