package org.springblade.mdm.flow.service; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.flowable.engine.RuntimeService; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BizServiceImpl; import org.springblade.core.oss.OssTemplate; import org.springblade.core.oss.model.BladeFile; import org.springblade.mdm.flow.entity.FlowProgramFile; import org.springblade.mdm.flow.mapper.FlowProgramFileMapper; import org.springblade.mdm.flow.vo.ProgramUploadVO; import org.springblade.mdm.program.entity.NcProgram; import org.springblade.mdm.program.service.ProcessProgRefService; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Map; /** * 流程程序处理,包括上传,查询展示 * * @author yangys */ @Slf4j @Service @AllArgsConstructor public class FlowProgramFileService extends BizServiceImpl { private final OssTemplate ossTemplate; private final RuntimeService runtimeService; private final FlowCommonService flowCommonService; public void uploadFlowProgramFile(ProgramUploadVO uploadVO) { Map vars = runtimeService.getVariables(uploadVO.getProcessInstanceId()); checkFilenames(uploadVO.getFiles(),flowCommonService.getProgramProperties(uploadVO.getProcessInstanceId())); // //BladeFile bfile = ossTemplate.putFile(uploadVO.getFile()); //String link = bfile.getLink(); //保存profame /* NcProgram prog = new NcProgram(); prog.setCode(generageCode()); prog.setName(file.getOriginalFilename()); prog.setNcNodeId(uploadVO.getNodeId()); prog.setOssName(bfile.getName()); prog.setDrawingNo(uploadVO.getDrawingNo()); prog.setProcessEdition(uploadVO.getProcessEdition()); prog.setIsLastEdition(1); */ } public void checkFilenames(MultipartFile[] files,FlowProgramProperties programProperties){ for (MultipartFile file : files){ checkFilename(file.getOriginalFilename(),programProperties); } } void checkFilename(String filename,FlowProgramProperties programProperties){ //程序名称:零件号加工序号,文件名应该以此开头 String expectedProgramName = programProperties.getDrawingNo()+"-"+programProperties.getProcessNo(); if(!StringUtils.startsWith(filename,expectedProgramName)){ throw new ServiceException("程序文件名不合法,应为:"+expectedProgramName+"-"+programProperties.getCraftEdition()+"-[段数]-[段号].[文件扩展名]"); } } /** * 获取文件内容 * @param id * @return */ public String getFileContent(Long id) { String result =""; FlowProgramFile programFile = this.getById(id); //if(prog.getIsTextFile()!=null && programFile.getIsTextFile()){ String fileName = programFile.getOssName(); try (InputStream inputStream = ossTemplate.statFileStream(fileName)) { result = IOUtils.toString(inputStream, StandardCharsets.UTF_8); } catch (IOException e) { throw new RuntimeException(e); } //}else{ // result = "非文本格式文件"; //} return result; } }