From edecbd9cb1b31ded46b8592634780d999db6b6f0 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 22 九月 2025 14:19:21 +0800
Subject: [PATCH] 文件下发,回传文件处理的查看下载

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java                          |    5 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineAcceptedFileHandleController.java |   15 +++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml                |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/FileSendRecordMapper.java                    |    8 +-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/FileSendRecordService.java                  |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineAcceptedFileVO.java                       |    3 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/FileSendRecordMapper.xml                     |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/FileSendRecordVO.java                            |    3 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/OssFileCommonService.java                       |   85 +++++++++++++++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/controller/OssFileController.java                       |   55 +++++++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/FileSendRecordController.java            |   11 ++
 11 files changed, 180 insertions(+), 11 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/controller/OssFileController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/controller/OssFileController.java
new file mode 100644
index 0000000..7598af1
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/controller/OssFileController.java
@@ -0,0 +1,55 @@
+package org.springblade.mdm.commons.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.mdm.commons.service.OssFileCommonService;
+import org.springblade.mdm.commons.service.ParamService;
+import org.springblade.mdm.commons.vo.RemindVO;
+import org.springblade.mdm.flow.service.FlowBusinessService;
+import org.springblade.mdm.flow.vo.FlowVO;
+import org.springblade.mdm.flow.vo.TodoQueryVO;
+import org.springblade.mdm.program.service.NcProgramApprovedService;
+import org.springblade.mdm.program.vo.NcProgramExportDncPageVO;
+import org.springblade.mdm.program.vo.NcProgramExportDncQueryVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Slf4j
+@RestController
+@RequestMapping("/ossfile")
+@Tag(name = "浠诲姟鎻愰啋", description = "浠诲姟鎻愰啋")
+public class OssFileController {
+
+	@Autowired
+	private NcProgramApprovedService ncProgramApprovedService;
+	@Autowired
+	private OssFileCommonService ossFileCommonService;
+	@Autowired
+	private ParamService paramService;
+	/**
+	 * 寰呭姙浠诲姟鍒楄〃椤�
+	 */
+	@GetMapping("file-content")
+	@ApiOperationSupport(order = 3)
+	@Operation(summary = "寰呭姙浠诲姟鏁伴噺鏌ヨ", description = "寰呭姙浠诲姟鏁伴噺鏌ヨ")
+	public R<String> fileContent(String ossFileName) {
+		if(StringUtils.isBlank(ossFileName)){
+			throw new RuntimeException("鏂囦欢鍚嶄负绌�");
+		}
+		return R.data(ossFileCommonService.getOssFileContent(ossFileName));
+	}
+
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/OssFileCommonService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/OssFileCommonService.java
new file mode 100644
index 0000000..e906d7e
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/OssFileCommonService.java
@@ -0,0 +1,85 @@
+
+package org.springblade.mdm.commons.service;
+
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+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.core.tool.utils.UrlUtil;
+import org.springblade.mdm.flow.entity.FlowProgramFile;
+import org.springblade.mdm.flow.mapper.FlowProgramFileMapper;
+import org.springblade.mdm.flow.service.FlowCommonService;
+import org.springblade.mdm.flow.service.FlowProgramProperties;
+import org.springblade.mdm.flow.vo.ProgramUploadVO;
+import org.springblade.mdm.program.service.NcNodeService;
+import org.springblade.mdm.utils.FileContentUtil;
+import org.springblade.mdm.utils.ProgramFileNameCheckUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * OSS鏂囦欢閫氱敤鏈嶅姟锛屽寘鎷笅杞斤紝杩斿洖鏂囦欢鍐呭绛�
+ *
+ * @author yangys
+ */
+@Slf4j
+@Service
+public class OssFileCommonService{
+	@Autowired
+	private OssTemplate ossTemplate;
+
+
+	/**
+	 * 鑾峰彇鏂囦欢鍐呭
+	 * @param ossFileName 鏂囦欢id
+	 * @return 鏂囦欢鍐呭鏂囨湰
+	 */
+	public String getOssFileContent(String ossFileName) {
+		String result;
+		try (InputStream inputStream = ossTemplate.statFileStream(ossFileName)) {
+			ByteArrayInputStream bos = new ByteArrayInputStream(inputStream.readAllBytes());
+			boolean isText = StringUtils.endsWithIgnoreCase(ossFileName,".txt") || StringUtils.endsWithIgnoreCase(ossFileName,".nc")|| StringUtils.endsWithIgnoreCase(ossFileName,".xml");
+			if(!isText){
+				isText= FileContentUtil.isTextFile(bos);
+			}
+			if(isText){
+				bos.reset();
+				result = FileContentUtil.getContentFromStream(bos);
+			}else{
+				result = "<闈炴枃鏈枃浠�>";
+			}
+		} catch (IOException e) {
+			throw new RuntimeException(e);
+		}
+
+		return result;
+	}
+
+	/**
+	 * 浠巓ss涓嬭浇鏂囦欢
+	 * @param ossFileName oss鐨勬枃浠跺悕
+	 * @param downloadFileName 鎸囧畾涓嬭浇鐨勬枃浠跺悕
+	 * @param response http鐩稿簲
+	 * @throws IOException 鎿嶄綔鏂囦欢IO 寮傚父
+	 */
+	public void download(String ossFileName, String downloadFileName,HttpServletResponse response) throws IOException {
+		response.setHeader("Content-Disposition", "attachment; filename="+ UrlUtil.encode(downloadFileName));
+		response.setContentType("application/octet-stream");
+		try(InputStream ins = ossTemplate.statFileStream(ossFileName);){
+			IOUtils.copy(ins,response.getOutputStream());
+		}
+	}
+
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/FileSendRecordController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/FileSendRecordController.java
index 979302f..54ad0a4 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/FileSendRecordController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/FileSendRecordController.java
@@ -14,6 +14,8 @@
 import org.springblade.mdm.basesetting.machine.service.MachineService;
 import org.springblade.mdm.basesetting.producedivision.entity.MdmDept;
 import org.springblade.mdm.basesetting.producedivision.service.MdmDeptService;
+import org.springblade.mdm.commons.service.OssFileCommonService;
+import org.springblade.mdm.machinefile.entity.FileSendRecord;
 import org.springblade.mdm.machinefile.entity.MachineFile;
 import org.springblade.mdm.machinefile.service.FileSendRecordService;
 import org.springblade.mdm.machinefile.service.MachineFileChangeHisService;
@@ -43,7 +45,7 @@
 @Slf4j
 public class FileSendRecordController {
 	@Autowired
-	private MdmDeptService mdmDeptService;
+	private OssFileCommonService ossFileCommonService;
 	@Autowired
 	private FileSendRecordService fileSendRecordService;
 
@@ -56,6 +58,13 @@
 		return R.data(fileSendRecordService.pageQuery(query));
 	}
 
+	@GetMapping("/download-by-id")
+	@Operation(summary = "涓嬪彂鏂囦欢璁板綍鍒楄〃", description = "涓嬪彂鏂囦欢璁板綍鍒楄〃")
+	public void downloadByRecordId(Long id,HttpServletResponse response) throws IOException {
+		FileSendRecord record = fileSendRecordService.getById(id);
+		ossFileCommonService.download(record.getOssName(),record.getName(),response);
+	}
+
 
 	@GetMapping("/export-excel")
 	@Operation(summary = "涓嬪彂鏂囦欢璁板綍琛ㄥ鍑�", description = "涓嬪彂鏂囦欢璁板綍琛ㄥ鍑�")
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineAcceptedFileHandleController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineAcceptedFileHandleController.java
index 98a3086..a8c74b5 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineAcceptedFileHandleController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineAcceptedFileHandleController.java
@@ -16,12 +16,16 @@
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.UrlUtil;
+import org.springblade.mdm.commons.service.OssFileCommonService;
+import org.springblade.mdm.machinefile.entity.FileSendRecord;
+import org.springblade.mdm.machinefile.entity.MachineAcceptedFile;
 import org.springblade.mdm.machinefile.service.MachineFileService;
 import org.springblade.mdm.machinefile.service.MachineAcceptedFileService;
 import org.springblade.mdm.machinefile.service.NcProgramExportInnerService;
 import org.springblade.mdm.machinefile.vo.MachineBackFileHandleExcelVO;
 import org.springblade.mdm.machinefile.vo.MachineAcceptedFileHandleQueryVO;
 import org.springblade.mdm.machinefile.vo.MachineAcceptedFileVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
@@ -34,7 +38,7 @@
 @RequestMapping("/machinefile/filehandle")
 @Tag(name = "鏈哄簥鍥炰紶绋嬪簭澶勭悊", description = "鏈哄簥鍥炰紶绋嬪簭澶勭悊")
 public class MachineAcceptedFileHandleController {
-
+	private final OssFileCommonService ossFileCommonService;
 	private final MachineAcceptedFileService acceptedFileService;
 	private final NcProgramExportInnerService ncProgramExportInnerService;
 	/**
@@ -45,6 +49,13 @@
 	public R<IPage<MachineAcceptedFileVO>> page(MachineAcceptedFileHandleQueryVO query) {
 		IPage<MachineAcceptedFileVO> pages = acceptedFileService.handlePageQuery(query);
 		return R.data(pages);
+	}
+
+	@GetMapping("/download-by-id")
+	@Operation(summary = "涓嬪彂鏂囦欢璁板綍鍒楄〃", description = "涓嬪彂鏂囦欢璁板綍鍒楄〃")
+	public void downloadByRecordId(Long id,HttpServletResponse response) throws IOException {
+		MachineAcceptedFile acceptedFile = acceptedFileService.getById(id);
+		ossFileCommonService.download(acceptedFile.getOssName(),acceptedFile.getName(),response);
 	}
 
 	@GetMapping("export-to-inner")
@@ -102,7 +113,7 @@
 				txt = "鍥哄寲";
 				break;
 			case 3:
-				txt = "鍋忕";
+				txt = "涓存椂鏇存敼鍗�";
 				break;
 			default:
 				txt = "鏈煡";
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java
index 2b1287e..3e7ea9e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java
@@ -30,6 +30,11 @@
 	 * 鏂囦欢瀛楄妭鏁�
 	 */
 	private Long fileSize;
+
+	/**
+	 * 瀵硅薄瀛樺偍鏂囦欢鍚嶏紝澶囨煡
+	 */
+	private String ossName;
 	/**
 	 * 鐢熸垚鏂囦欢澶у皬鐨勬樉绀烘枃鏈�
 	 * @return 鏄剧ず鏂囨湰
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/FileSendRecordMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/FileSendRecordMapper.java
index a19ed38..fcf6a27 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/FileSendRecordMapper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/FileSendRecordMapper.java
@@ -9,10 +9,10 @@
 
 public interface FileSendRecordMapper extends BladeMapper<FileSendRecord> {
 	/**
-	 * 鍒嗛〉鎷嗙嚎鍛㈣褰�
-	 * @param page
-	 * @param query
-	 * @return
+	 * 鏂囦欢涓嬪彂璁板綍鍒嗛〉鏌ヨ
+	 * @param page 鍒嗛〉淇℃伅
+	 * @param query 鏌ヨ鍙傛暟
+	 * @return 鍒嗛〉鏁版嵁
 	 */
 	IPage<FileSendRecordVO> pageQuery(IPage<FileSendRecordVO> page, @Param("query")FileSendRecordQueryVO query);
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/FileSendRecordMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/FileSendRecordMapper.xml
index 73756bf..2e8cc55 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/FileSendRecordMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/FileSendRecordMapper.xml
@@ -13,7 +13,7 @@
     <!--鏂囦欢璁板綍鏌ヨ-->
 
     <select id="pageQuery" resultType="org.springblade.mdm.machinefile.vo.FileSendRecordVO">
-        select f.id,f.name,f.machine_code,f.file_size,f.create_time,f.update_time,u.name create_user_name
+        select f.id,f.name,f.machine_code,f.file_size,f.oss_name,f.create_time,f.update_time,u.name create_user_name
         from mdm_file_send_record f left join blade_user u on f.create_user=u.id
         <where>
             f.is_deleted=0
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml
index 87328ba..04771c6 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml
@@ -22,7 +22,7 @@
 -->
     <!--鏈哄簥鍥炰紶绋嬪簭澶勭悊鍒嗛〉-->
     <select id="handlePageQuery" resultType="org.springblade.mdm.machinefile.vo.MachineAcceptedFileVO">
-        select f.id,f.name,f.create_time,m.code machine_code, m.name machine_name,f.create_time,mf.program_status,mf.file_create_time,f.export_time,f.create_time
+        select f.id,f.name,f.oss_name,f.create_time,m.code machine_code, m.name machine_name,f.create_time,mf.program_status,mf.file_create_time,f.export_time,f.create_time
         from mdm_machine_accepted_file f
             left join mdm_machine_file mf on f.machine_file_id=mf.id
         left join mdm_machine m on mf.machine_code=m.code
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/FileSendRecordService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/FileSendRecordService.java
index 934da5c..97d2c9b 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/FileSendRecordService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/FileSendRecordService.java
@@ -26,4 +26,6 @@
 	public IPage<FileSendRecordVO> pageQuery(FileSendRecordQueryVO query) {
 		return baseMapper.pageQuery(Condition.getPage(query),query);
 	}
+
+
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/FileSendRecordVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/FileSendRecordVO.java
index 470158a..c75a0dd 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/FileSendRecordVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/FileSendRecordVO.java
@@ -16,5 +16,6 @@
 	@Schema(description = "鏈哄簥缂栧彿/鍥炰紶鏈哄簥")
 	private String machineCode;
 
-
+	@Schema(description = "oss鏂囦欢鍚�")
+	private String ossName;
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineAcceptedFileVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineAcceptedFileVO.java
index d26857c..294ee7e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineAcceptedFileVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineAcceptedFileVO.java
@@ -23,6 +23,7 @@
 	private Date fileCreateTime;
 	@Schema(description = "瀵煎嚭鏃堕棿")
 	private Date exportTime;
-
+	@Schema(description = "oss鏂囦欢鍚�")
+	private String ossName;
 
 }

--
Gitblit v1.9.3