package org.springblade.mdm.thirdpart.service; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.RuntimeService; import org.flowable.engine.runtime.ProcessInstance; import org.springblade.mdm.flow.constants.FlowVariableConstant; import org.springblade.mdm.flow.entity.TaskDispatch; import org.springblade.mdm.flow.service.TaskDispatchService; import org.springblade.mdm.flow.vo.TaskAssignVO; import org.springblade.mdm.thirdpart.vo.MesTaskFinishVO; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * 任务派工数据 处理服务 * * @author yangys */ @Slf4j @Service public class MesTaskService { @Autowired private TaskDispatchService taskDispatchService; @Autowired private RuntimeService runtimeService; /** * 保存mes任务 * @param startVO * @return */ @Transactional(rollbackFor = Exception.class) public TaskDispatch saveTask(TaskAssignVO startVO) { TaskDispatch taskDispatch = new TaskDispatch(); BeanUtils.copyProperties(startVO, taskDispatch); boolean isDuplicate = taskDispatchService.checkIsDuplicate(startVO); if(isDuplicate){ taskDispatch.setStatus(TaskDispatch.STATUS_DUP); } taskDispatch.setTenantId("000000"); taskDispatchService.save(taskDispatch); taskDispatchService.addDrawingNos(taskDispatch.getDrawingNo()); return taskDispatch; } /** * mes 完成推送 * @param finishTaskVO */ public void finishTask(MesTaskFinishVO finishTaskVO) { TaskDispatch taskDispatch = taskDispatchService.getByOperationId(finishTaskVO.getOperationId()); if(taskDispatch != null && taskDispatch.getProcessInstanceId() != null){ taskDispatch.setProcessCard(finishTaskVO.getProcessCard()); taskDispatch.setInspector(finishTaskVO.getInspector()); taskDispatch.setCheckTime(finishTaskVO.getAcruslEndEime()); taskDispatchService.updateById(taskDispatch); ProcessInstance inst = runtimeService.createProcessInstanceQuery() .processInstanceId(taskDispatch.getProcessInstanceId()).active().singleResult(); if(inst != null){ runtimeService.setVariable(taskDispatch.getProcessInstanceId(), FlowVariableConstant.PROCESS_CARD,finishTaskVO.getProcessCard()); } } } }