| | |
| | | import org.springblade.core.mp.base.BizServiceImpl; |
| | | import org.springblade.core.oss.OssTemplate; |
| | | import org.springblade.core.oss.model.BladeFile; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.api.IResultCode; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.core.tool.utils.UrlUtil; |
| | | import org.springblade.mdm.flow.entity.FlowProgramFile; |
| | | import org.springblade.mdm.flow.mapper.FlowProgramFileMapper; |
| | | import org.springblade.mdm.flow.vo.ProgramUploadVO; |
| | |
| | | if(file.getSize() == 0){ |
| | | throw new ServiceException("程序文件不可为空文件"); |
| | | } |
| | | if(exists(file.getOriginalFilename(),uploadVO.getProcessInstanceId())){ |
| | | throw new ServiceException("同名文件已存在:"+file.getOriginalFilename()); |
| | | } |
| | | |
| | | if(FlowProgramFile.TYPE_PROGRAM.equals(uploadVO.getFileType())) { |
| | | ProgramFileNameCheckUtil.checkFilename(file.getOriginalFilename(), progProps); |
| | | } |
| | |
| | | progFile.setName(file.getOriginalFilename()); |
| | | progFile.setOssName(bfile.getName()); |
| | | progFile.setProcessInstanceId(uploadVO.getProcessInstanceId()); |
| | | progFile.setProgramName(NcNodeService.genProgramName(progProps.getDrawingNo(),progProps.getProcessNo())); |
| | | progFile.setProgramName(NcNodeService.genProgramName(progProps.getDrawingNo(),progProps.getProcessNo(),progProps.getProcessEdition())); |
| | | progFile.setFileType(uploadVO.getFileType()); |
| | | save(progFile); |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 判断那流程下是否有同名问题 |
| | | * @param filename 文件名 |
| | | * @param processInstanceId 流程实例id |
| | | * @return 是否 |
| | | */ |
| | | boolean exists(String filename,String processInstanceId){ |
| | | return lambdaQuery().eq(FlowProgramFile::getName, filename).eq(FlowProgramFile::getProcessInstanceId, processInstanceId).count()>0; |
| | | } |
| | | /** |
| | | * 获取文件内容 |
| | | * @param id 文件id |
| | |
| | | |
| | | public void download(Long id, HttpServletResponse response) throws IOException { |
| | | FlowProgramFile flowFile = this.getById(id); |
| | | response.setHeader("Content-Disposition", "attachment; filename="+flowFile.getName()); |
| | | response.setHeader("Content-Disposition", "attachment; filename="+ UrlUtil.encode(flowFile.getName())); |
| | | response.setContentType("application/octet-stream"); |
| | | try(InputStream ins = ossTemplate.statFileStream(flowFile.getOssName());){ |
| | | IOUtils.copy(ins,response.getOutputStream()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取关于流程的所有文件 |
| | | * @param processInstanceId 流程实例id |
| | | * @return 流程关联的文件列表 |
| | | */ |
| | | public List<FlowProgramFile> listByProcessInstanceId(String processInstanceId){ |
| | | return lambdaQuery() |
| | | .eq(FlowProgramFile::getProcessInstanceId, processInstanceId).list(); |
| | | } |
| | | } |