package org.springblade.mdm.flow.service; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import org.flowable.engine.HistoryService; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; import org.springblade.core.oss.OssTemplate; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.mdm.basesetting.machine.entity.Machine; import org.springblade.mdm.basesetting.machine.service.MachineService; import org.springblade.mdm.basesetting.producedivision.service.QinzheFgbService; import org.springblade.mdm.commons.service.ParamService; import org.springblade.mdm.flow.constants.FlowContants; import org.springblade.mdm.flow.constants.FlowVariableContants; import org.springblade.mdm.flow.vo.FlowVO; import org.springblade.mdm.flow.vo.ProgramOnMachineQueryVO; import org.springblade.mdm.program.service.NcNodeHisService; import org.springblade.mdm.program.service.NcNodeService; import org.springblade.system.feign.IDictBizClient; import org.springframework.stereotype.Service; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; /** * 流程业务实现类 * * @author Chill */ @Service @AllArgsConstructor public class ProgramOnMachineExportService { private final HistoryService historyService; private final ParamService paramService; private final MachineService machineService; /** * * @param page 分页信息 * @param queryVO 查询数据对象 * @return */ public IPage finishedPage(IPage page, ProgramOnMachineQueryVO queryVO) { //固化里路村官 HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().finished().processDefinitionKey(FlowContants.CURE_PROCESS_KEY).includeProcessVariables(); //.finished() // 只查询已完成的流程.unfinished() // 查询未完成的流程 query.variableNotExists(FlowVariableContants.EXCEPTION);//非异常流程 query.variableValueEquals(FlowVariableContants.PROGRAM_ON_MACHINE,FlowContants.Y);//选择现场编制的 /* //车床或者选择现场编制的程序 String turnVal = paramService.turninngValue(); List machines = machineService.lambdaQuery().eq(Machine::getMachineSpec,turnVal).eq(Machine::getStatus,Machine.STATUS_ENABLE).list(); List turnMachineCodes = machines.stream().map(Machine::getCode).toList(); query.or(); for(String mCode : turnMachineCodes){ query.variableValueEquals(FlowVariableContants.MACHINE_CODE, mCode); } query.endOr(); */ if(queryVO.getEndTimeBegin()!=null) { query.finishedAfter(DateUtil.toDate(queryVO.getEndTimeBegin())); } if(queryVO.getEndTimeEnd()!=null) { query.finishedBefore(DateUtil.toDate(queryVO.getEndTimeEnd())); } if(Func.isNotEmpty(queryVO.getDrawingNo())) { String likeVal = "%" + queryVO.getDrawingNo() + "%"; query.variableValueLike(FlowVariableContants.DRAWING_NO,likeVal); } query.orderByProcessInstanceEndTime().desc(); // 按结束时间降序排列 page.setTotal(query.count()); long firstResult = (page.getCurrent()-1) * page.getSize(); List processes = query .listPage((int)firstResult, (int)page.getSize()); List records = new LinkedList<>(); for(HistoricProcessInstance processInstance : processes) { FlowVO vo = new FlowVO(); vo.setProcessDefinitionKey(processInstance.getProcessDefinitionKey()); vo.setProcessInstanceId(processInstance.getId()); vo.setProcessDefinitionName(processInstance.getProcessDefinitionName()); vo.setVariables(processInstance.getProcessVariables()); vo.setProcessCreateTime(processInstance.getStartTime()); vo.setHistoryTaskEndTime(processInstance.getEndTime()); //vo.setFile(getFileString(processInstance.getId())); records.add(vo); } page.setRecords(records); return page; } }