2151adf1 by 夏齐

首次提交

1 parent aa72ced8
1 package com.pashanhoo.common; 1 package com.pashanhoo.common;
2 2
3 import com.alibaba.fastjson.JSONObject; 3 import com.alibaba.fastjson.JSONObject;
4 import com.pashanhoo.qys.service.SysFileService;
4 import org.slf4j.Logger; 5 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory; 6 import org.slf4j.LoggerFactory;
7 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.beans.factory.annotation.Value; 8 import org.springframework.beans.factory.annotation.Value;
9 import org.springframework.mock.web.MockMultipartFile;
7 import org.springframework.stereotype.Component; 10 import org.springframework.stereotype.Component;
11 import org.springframework.web.multipart.MultipartFile;
8 12
9 import java.io.*; 13 import java.io.*;
10 import java.net.HttpURLConnection; 14 import java.net.HttpURLConnection;
...@@ -27,6 +31,8 @@ public class EciHttpUtil { ...@@ -27,6 +31,8 @@ public class EciHttpUtil {
27 31
28 @Value("${app.eciPath}") 32 @Value("${app.eciPath}")
29 private String eciPath; 33 private String eciPath;
34 @Autowired
35 private SysFileService sysFileService;
30 36
31 37
32 38
...@@ -143,11 +149,13 @@ public class EciHttpUtil { ...@@ -143,11 +149,13 @@ public class EciHttpUtil {
143 * @param documentId 合同文档ID 149 * @param documentId 合同文档ID
144 * @return 150 * @return
145 */ 151 */
146 public String download(String documentId,String bh,String htlx,String areacode) { 152 public String[] download(String documentId,String bh,String htlx,String areacode) {
147 String url = hostUrl + "/document/download" + "?documentId=" + documentId; 153 String url = hostUrl + "/document/download" + "?documentId=" + documentId;
148 InputStream in = null; 154 InputStream in = null;
149 String absolutePath = ""; 155 String localPath = "";
156 String minioPath="";
150 OutputStream out = null; 157 OutputStream out = null;
158 String backUrl[]=new String[2];
151 try{ 159 try{
152 URL url1=new URL(url); 160 URL url1=new URL(url);
153 HttpURLConnection conn= (HttpURLConnection) url1.openConnection(); 161 HttpURLConnection conn= (HttpURLConnection) url1.openConnection();
...@@ -181,15 +189,26 @@ public class EciHttpUtil { ...@@ -181,15 +189,26 @@ public class EciHttpUtil {
181 if (!filePath.exists()){ 189 if (!filePath.exists()){
182 filePath.createNewFile(); 190 filePath.createNewFile();
183 } 191 }
192 byte[] bytes = cloneInputStream(in);
193 InputStream fileInputStream = new ByteArrayInputStream(bytes);
184 out = new FileOutputStream(filePath); 194 out = new FileOutputStream(filePath);
185 byte[] buffer = new byte[4096]; 195 byte[] buffer = new byte[4096];
186 int readLength = 0; 196 int readLength = 0;
187 197 while ((readLength = fileInputStream.read(buffer)) != -1) {
188 while ((readLength = in.read(buffer)) != -1) {
189 out.write(buffer, 0, readLength); 198 out.write(buffer, 0, readLength);
190 } 199 }
191 absolutePath = filePath.getAbsolutePath();
192 out.flush(); 200 out.flush();
201 localPath = filePath.getAbsolutePath();
202 backUrl[0]=localPath;
203
204 InputStream newInputStream = new ByteArrayInputStream(bytes);
205 MultipartFile multipartFile = new MockMultipartFile(
206 "File", documentId+".ofd",
207 "text/plain",
208 newInputStream);
209 String miniofilePath=areacode+"/"+ htlx+dateDir+bh+"/"+documentId+".ofd";
210 minioPath=sysFileService.uploadFileMinio(multipartFile,miniofilePath);
211 backUrl[1]=minioPath;
193 }catch (Exception ex){ 212 }catch (Exception ex){
194 logger.info("发送 POST 请求出现异常!" + ex); 213 logger.info("发送 POST 请求出现异常!" + ex);
195 ex.printStackTrace(); 214 ex.printStackTrace();
...@@ -205,7 +224,30 @@ public class EciHttpUtil { ...@@ -205,7 +224,30 @@ public class EciHttpUtil {
205 ex.printStackTrace(); 224 ex.printStackTrace();
206 } 225 }
207 } 226 }
208 return absolutePath; 227 return backUrl;
228 }
229
230 /**
231 * 将流存在缓存流中,这样可以重复使用
232 * @param input
233 * @return
234 */
235 private static byte[] cloneInputStream(InputStream input) {
236 try {
237 ByteArrayOutputStream baos = new ByteArrayOutputStream();
238 byte[] buffer = new byte[1024];
239 int len;
240 while ((len = input.read(buffer)) > -1) {
241 baos.write(buffer, 0, len);
242 }
243 baos.flush();
244 baos.close();
245 input.close();
246 return baos.toByteArray();
247 } catch (IOException e) {
248 e.printStackTrace();
249 return null;
250 }
209 } 251 }
210 252
211 253
......
...@@ -155,5 +155,17 @@ public class ElecLicenseInfoDo { ...@@ -155,5 +155,17 @@ public class ElecLicenseInfoDo {
155 @TableField("ZJH") 155 @TableField("ZJH")
156 private String zjh; 156 private String zjh;
157 157
158 /**
159 * ofd在minion服务器上的地址
160 */
161 @TableField("MINIO_OFD_URL")
162 private String minio_ofd_url;
163
164 /**
165 * jpg在minion服务器上的地址
166 */
167 @TableField("MINIO_JPG_URL")
168 private String minio_jpg_url;
169
158 170
159 } 171 }
......
...@@ -2,13 +2,11 @@ package com.pashanhoo.qys.service; ...@@ -2,13 +2,11 @@ package com.pashanhoo.qys.service;
2 2
3 import org.springframework.web.multipart.MultipartFile; 3 import org.springframework.web.multipart.MultipartFile;
4 4
5 /** 5
6 * @author CAIYONGSONG 6
7 * @commpany www.pashanhoo.com
8 * @date 2022/7/20
9 */
10 public interface SysFileService { 7 public interface SysFileService {
11 8
12 public String uploadFileMinio(MultipartFile file); 9 public String uploadFileMinio(MultipartFile file);
13 public String uploadFileMinio(MultipartFile[] file); 10 public String uploadFileMinio(MultipartFile[] file);
11 public String uploadFileMinio(MultipartFile file,String filePath);
14 } 12 }
......
1 package com.pashanhoo.qys.service.impl; 1 package com.pashanhoo.qys.service.impl;
2 2
3 import cn.hutool.core.util.ArrayUtil;
3 import com.alibaba.fastjson.JSON; 4 import com.alibaba.fastjson.JSON;
4 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 5 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5 import com.google.zxing.EncodeHintType; 6 import com.google.zxing.EncodeHintType;
...@@ -8,6 +9,7 @@ import com.pashanhoo.common.Result; ...@@ -8,6 +9,7 @@ import com.pashanhoo.common.Result;
8 import com.pashanhoo.qys.entity.ElecLicenseInfoDo; 9 import com.pashanhoo.qys.entity.ElecLicenseInfoDo;
9 import com.pashanhoo.qys.mapper.ElecLicenseInfoMapper; 10 import com.pashanhoo.qys.mapper.ElecLicenseInfoMapper;
10 import com.pashanhoo.qys.service.EciService; 11 import com.pashanhoo.qys.service.EciService;
12 import com.pashanhoo.qys.service.SysFileService;
11 import com.pashanhoo.zhj.mapper.RegBusBdcqzsdjxxMapper; 13 import com.pashanhoo.zhj.mapper.RegBusBdcqzsdjxxMapper;
12 import net.glxn.qrgen.core.image.ImageType; 14 import net.glxn.qrgen.core.image.ImageType;
13 import net.glxn.qrgen.javase.QRCode; 15 import net.glxn.qrgen.javase.QRCode;
...@@ -19,13 +21,13 @@ import org.slf4j.Logger; ...@@ -19,13 +21,13 @@ import org.slf4j.Logger;
19 import org.slf4j.LoggerFactory; 21 import org.slf4j.LoggerFactory;
20 import org.springframework.beans.factory.annotation.Autowired; 22 import org.springframework.beans.factory.annotation.Autowired;
21 import org.springframework.beans.factory.annotation.Value; 23 import org.springframework.beans.factory.annotation.Value;
24 import org.springframework.mock.web.MockMultipartFile;
22 import org.springframework.stereotype.Service; 25 import org.springframework.stereotype.Service;
26 import org.springframework.web.multipart.MultipartFile;
23 27
24 import javax.imageio.ImageIO; 28 import javax.imageio.ImageIO;
25 import java.awt.image.BufferedImage; 29 import java.awt.image.BufferedImage;
26 import java.io.ByteArrayOutputStream; 30 import java.io.*;
27 import java.io.File;
28 import java.io.IOException;
29 import java.math.BigDecimal; 31 import java.math.BigDecimal;
30 import java.net.URLEncoder; 32 import java.net.URLEncoder;
31 import java.nio.file.Path; 33 import java.nio.file.Path;
...@@ -58,6 +60,8 @@ public class EciServiceImpl extends ServiceImpl<ElecLicenseInfoMapper, ElecLicen ...@@ -58,6 +60,8 @@ public class EciServiceImpl extends ServiceImpl<ElecLicenseInfoMapper, ElecLicen
58 private ElecLicenseInfoMapper elecLicenseInfoMapper; 60 private ElecLicenseInfoMapper elecLicenseInfoMapper;
59 @Autowired 61 @Autowired
60 private EciHttpUtil eciHttpUtil; 62 private EciHttpUtil eciHttpUtil;
63 @Autowired
64 private SysFileService sysFileService;
61 65
62 66
63 67
...@@ -403,12 +407,17 @@ public class EciServiceImpl extends ServiceImpl<ElecLicenseInfoMapper, ElecLicen ...@@ -403,12 +407,17 @@ public class EciServiceImpl extends ServiceImpl<ElecLicenseInfoMapper, ElecLicen
403 String documentId = waitForDownload.getDocumentId(); 407 String documentId = waitForDownload.getDocumentId();
404 String bh=waitForDownload.getZsbh(); 408 String bh=waitForDownload.getZsbh();
405 String htlx=waitForDownload.getHtlx(); 409 String htlx=waitForDownload.getHtlx();
406 String ofdPath = eciHttpUtil.download(documentId,bh,htlx,areacode); 410 String backUrl[] = eciHttpUtil.download(documentId,bh,htlx,areacode);
407 if (StringUtils.isNotBlank(ofdPath)) { 411
412 if (ArrayUtil.isNotEmpty(backUrl)) {
408 //入库ofd文件地址 413 //入库ofd文件地址
409 waitForDownload.setSfxz("1"); 414 waitForDownload.setSfxz("1");
410 waitForDownload.setOfdWjdz(ofdPath); 415 waitForDownload.setOfdWjdz(backUrl[0]);
416 if(backUrl.length>1){
417 waitForDownload.setMinio_ofd_url(backUrl[1]);
418 }
411 waitForDownload.setErr_state("0"); 419 waitForDownload.setErr_state("0");
420
412 }else{ 421 }else{
413 waitForDownload.setErr_state("3"); 422 waitForDownload.setErr_state("3");
414 } 423 }
...@@ -432,6 +441,14 @@ public class EciServiceImpl extends ServiceImpl<ElecLicenseInfoMapper, ElecLicen ...@@ -432,6 +441,14 @@ public class EciServiceImpl extends ServiceImpl<ElecLicenseInfoMapper, ElecLicen
432 String dateDir = simpleDateFormat.format(new Date()); 441 String dateDir = simpleDateFormat.format(new Date());
433 String url=ofdToImg(ofdPath,eciPath+"ECI\\"+areacode+"\\"+ htlx+dateDir+bh+"\\",id); 442 String url=ofdToImg(ofdPath,eciPath+"ECI\\"+areacode+"\\"+ htlx+dateDir+bh+"\\",id);
434 if(StringUtils.isNotBlank(url)){ 443 if(StringUtils.isNotBlank(url)){
444 InputStream imageStream=new FileInputStream(new File(url));
445 MultipartFile multipartFile = new MockMultipartFile(
446 "File", id+ImageType.JPG,
447 "text/plain",
448 imageStream);
449 String miniofilePath=areacode+"/"+ htlx+dateDir+bh+"/"+id+".jpg";
450 String minioPath=sysFileService.uploadFileMinio(multipartFile,miniofilePath);
451 waitForConvert.setMinio_jpg_url(minioPath);
435 waitForConvert.setSfzh("1"); 452 waitForConvert.setSfzh("1");
436 waitForConvert.setJpgWjdz(url); 453 waitForConvert.setJpgWjdz(url);
437 waitForConvert.setErr_state("0"); 454 waitForConvert.setErr_state("0");
......
...@@ -60,6 +60,34 @@ public class SysFileServiceImpl implements SysFileService { ...@@ -60,6 +60,34 @@ public class SysFileServiceImpl implements SysFileService {
60 } 60 }
61 61
62 @Override 62 @Override
63 public String uploadFileMinio(MultipartFile file, String filePath) {
64 Long st = System.currentTimeMillis();
65 if (file.isEmpty()) {
66 throw new RuntimeException("文件不存在!");
67 }
68 log.info("开始上传单个文件,文件大小:" + (file.getSize()/1024) + "KB");
69 // 判断存储桶是否存在
70 if (!minioUtil.bucketExists(minioConfig.getBucketName())) {
71 minioUtil.makeBucket(minioConfig.getBucketName());
72 }
73 // 生成文件名 按照要求-带文件夹路径的文件的全路径
74 String fineName = filePath;
75 try {
76 // 上传文件
77 minioUtil.upload(file, fineName, minioConfig.getBucketName());
78 } catch (Exception e) {
79 System.out.println("上传minio服务器期出错了 " + e.getMessage());
80 e.printStackTrace();
81 return null;
82 }
83
84 String url = minioConfig.getMinioUrl() + "/" + minioConfig.getBucketName() + "/" + fineName;
85
86 log.info("上传文件结束,总耗时:"+(System.currentTimeMillis() - st) +"ms, 文件路径:" + url );
87 return url;
88 }
89
90 @Override
63 public String uploadFileMinio(MultipartFile file) { 91 public String uploadFileMinio(MultipartFile file) {
64 Long st = System.currentTimeMillis(); 92 Long st = System.currentTimeMillis();
65 if (file.isEmpty()) { 93 if (file.isEmpty()) {
......
...@@ -80,7 +80,7 @@ minio: ...@@ -80,7 +80,7 @@ minio:
80 # 密码 80 # 密码
81 secretKey: minioadmin 81 secretKey: minioadmin
82 # MinIO桶名字 82 # MinIO桶名字
83 bucketName: ecibucket 83 bucketName: eci
84 swagger2: 84 swagger2:
85 enable: true 85 enable: true
86 86
......