|
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.List;
|
import java.util.Map;
|
|
/**
|
* 流程程序处理,包括上传,查询展示
|
*
|
* @author yangys
|
*/
|
@Slf4j
|
@Service
|
@AllArgsConstructor
|
public class FlowProgramFileService extends BizServiceImpl<FlowProgramFileMapper, FlowProgramFile> {
|
private final OssTemplate ossTemplate;
|
private final RuntimeService runtimeService;
|
private final FlowCommonService flowCommonService;
|
public void uploadFlowProgramFile(ProgramUploadVO uploadVO) {
|
|
Map<String, Object> 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;
|
}
|
|
|
}
|