|
@@ -138,6 +138,63 @@ public class EntityAnalyse {
|
|
image.delete();
|
|
image.delete();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ /**
|
|
|
|
+ * 批量上传文件
|
|
|
|
+ *
|
|
|
|
+ * @param list
|
|
|
|
+ * @return
|
|
|
|
+ * @throws IOException
|
|
|
|
+ */
|
|
|
|
+ public static String[] uploadImageList(List<File> list, String token, String ENV) throws IOException {
|
|
|
|
+ String[] dataResult = new String[list.size()];
|
|
|
|
+ for(int i=0;i<list.size();i++){
|
|
|
|
+ File image = list.get(i);
|
|
|
|
+ String url = "";
|
|
|
|
+ if ("3".equals(ENV)) {
|
|
|
|
+ url = "http://116.182.4.67:50033/platform/file/uploadImage";
|
|
|
|
+ } else {
|
|
|
|
+ url = "http://116.182.4.67:50065/platform/file/uploadImage";
|
|
|
|
+ }
|
|
|
|
+ CloseableHttpClient httpClient = HttpClients.createDefault();
|
|
|
|
+ // 模拟登陆,按实际服务器端要求选用 Post 或 Get 请求方式
|
|
|
|
+ HttpPost httpPost = new HttpPost(url);
|
|
|
|
+ // 设置请求头 boundary边界不可重复,重复会导致提交失败
|
|
|
|
+ String boundary = "-------------------------" + UUID.randomUUID().toString();
|
|
|
|
+ httpPost.setHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
|
|
|
|
+ // 创建MultipartEntityBuilder
|
|
|
|
+ MultipartEntityBuilder builder = MultipartEntityBuilder.create();
|
|
|
|
+ // 设置字符编码
|
|
|
|
+ builder.setCharset(StandardCharsets.UTF_8);
|
|
|
|
+ // 模拟浏览器
|
|
|
|
+ builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
|
|
|
|
+ // 设置边界
|
|
|
|
+ builder.setBoundary(boundary);
|
|
|
|
+ // 设置multipart/form-data流文件
|
|
|
|
+ builder.addPart("multipartFile", new FileBody(image));
|
|
|
|
+ // application/octet-stream代表不知道是什么格式的文件
|
|
|
|
+ builder.addBinaryBody("image", image, ContentType.create("application/octet-stream"), "tmp.jpg");
|
|
|
|
+ HttpEntity entity = builder.build();
|
|
|
|
+ httpPost.setEntity(entity);
|
|
|
|
+ // 设置header信息
|
|
|
|
+ httpPost.setHeader("token", token);
|
|
|
|
+ CloseableHttpResponse response = null;
|
|
|
|
+ try {
|
|
|
|
+ // 执行请求操作,并拿到结果(同步阻塞)
|
|
|
|
+ String body = EntityUtils.toString(httpClient.execute(httpPost).getEntity());
|
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(body);
|
|
|
|
+ String result = jsonObject.getString("result");
|
|
|
|
+ System.out.println("result = " + result);
|
|
|
|
+ dataResult[i] = result;
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw e;
|
|
|
|
+ } finally {
|
|
|
|
+ // 释放链接
|
|
|
|
+ httpClient.close();
|
|
|
|
+ image.delete();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return dataResult;
|
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
/**
|
|
* 上报驾驶员信息
|
|
* 上报驾驶员信息
|
|
@@ -511,9 +568,9 @@ public class EntityAnalyse {
|
|
params.put("insuranceInformation", insuranceInformation);
|
|
params.put("insuranceInformation", insuranceInformation);
|
|
|
|
|
|
params.put("remark", orderInfo.getRemark() != null ? orderInfo.getRemark() : "");
|
|
params.put("remark", orderInfo.getRemark() != null ? orderInfo.getRemark() : "");
|
|
-// String[] file1 = {EntityAnalyse.uploadImage(EntityAnalyse.urlToPdfFile(new URL(orderInfo.getDriverContractUrl())), orderInfo.getToken(), ENV)};
|
|
|
|
-// params.put("file", file1);
|
|
|
|
- String[] ownersContractFile = {EntityAnalyse.uploadImage(EntityAnalyse.urlToPdfFile(new URL(orderInfo.getContractUrl())), orderInfo.getToken(), ENV)};
|
|
|
|
|
|
+ String[] file1 = EntityAnalyse.uploadImageList(EntityAnalyse.urlToPdfFile(new URL(orderInfo.getDriverContractUrl())), orderInfo.getToken(), ENV);
|
|
|
|
+ params.put("file", file1);
|
|
|
|
+ String[] ownersContractFile = EntityAnalyse.uploadImageList(EntityAnalyse.urlToPdfFile(new URL(orderInfo.getContractUrl())), orderInfo.getToken(), ENV);
|
|
params.put("ownersContractFile", ownersContractFile);
|
|
params.put("ownersContractFile", ownersContractFile);
|
|
String[] backDocumentImages = {EntityAnalyse.uploadImage(EntityAnalyse.urlToFile(new URL(orderInfo.getReceiptImg())), orderInfo.getToken(), ENV)};
|
|
String[] backDocumentImages = {EntityAnalyse.uploadImage(EntityAnalyse.urlToFile(new URL(orderInfo.getReceiptImg())), orderInfo.getToken(), ENV)};
|
|
params.put("backDocumentImages", backDocumentImages);
|
|
params.put("backDocumentImages", backDocumentImages);
|
|
@@ -1347,37 +1404,46 @@ public class EntityAnalyse {
|
|
* @param url
|
|
* @param url
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- public static File urlToPdfFile(URL url) {
|
|
|
|
|
|
+ public static List<File> urlToPdfFile(URL url) {
|
|
byte[] bytes = getImageFromNetByUrl(url);
|
|
byte[] bytes = getImageFromNetByUrl(url);
|
|
File file = writePDFToDisk(bytes);
|
|
File file = writePDFToDisk(bytes);
|
|
|
|
+ List<File> list = new ArrayList<>();
|
|
try {
|
|
try {
|
|
PDDocument doc = PDDocument.load(file);
|
|
PDDocument doc = PDDocument.load(file);
|
|
PDFRenderer renderer = new PDFRenderer(doc);
|
|
PDFRenderer renderer = new PDFRenderer(doc);
|
|
int pageCount = doc.getNumberOfPages();
|
|
int pageCount = doc.getNumberOfPages();
|
|
- BufferedImage image = null;
|
|
|
|
- for (int i = 0; i < pageCount; i++) {
|
|
|
|
- if(i == 0){
|
|
|
|
- image = renderer.renderImageWithDPI(i, 72); // Windows native DPI
|
|
|
|
|
|
+
|
|
|
|
+ //pdf转图片后分块
|
|
|
|
+ int number = pageCount/6 + 1;
|
|
|
|
+ //保存文件标识
|
|
|
|
+ boolean flag = true;
|
|
|
|
+ //管局最多上传6张图片
|
|
|
|
+ for (int i = 0; i < 6; i++) {
|
|
|
|
+ BufferedImage image = null;
|
|
|
|
+ for(int j=i*number;j<(i+1)*number;j++){
|
|
|
|
+ if(j>=pageCount){
|
|
|
|
+ flag = false;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ if(j == 0){
|
|
|
|
+ image = renderer.renderImageWithDPI(j, 72);
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ BufferedImage tmpImage = renderer.renderImageWithDPI(j, 72);
|
|
|
|
+ image = mergeImage(image,tmpImage,true,true,true,0,null);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- else{
|
|
|
|
- BufferedImage tmpImage = renderer.renderImageWithDPI(i, 72);
|
|
|
|
- image = mergeImage(image,tmpImage,false,true,true,0,null);
|
|
|
|
|
|
+ if(flag){
|
|
|
|
+ file = new File("templates" + File.separator + "tmpPdf"+i+".png");
|
|
|
|
+ ImageIO.write(image, "png", file);
|
|
|
|
+ list.add(file);
|
|
}
|
|
}
|
|
- // BufferedImage srcImage = resize(image, 240, 240);//产生缩略图
|
|
|
|
}
|
|
}
|
|
- file = new File("templates" + File.separator + "tmpPdf.png");
|
|
|
|
- ImageIO.write(image, "png", file);
|
|
|
|
-// Thumbnails.of(file) //原图片
|
|
|
|
-// .scale(0.4) //分辨率比例
|
|
|
|
-// .outputQuality(1) //图片质量
|
|
|
|
-// .outputFormat("JPEG") //目标文件格式
|
|
|
|
-// .toFile(file); //目标图片
|
|
|
|
|
|
+
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
-// bytes = ImgCompressUtil.compressPicForScale(getImageStream(file),2000);
|
|
|
|
-// file = readBin2Image(bytes,file);
|
|
|
|
- return file;
|
|
|
|
|
|
+ return list;
|
|
}
|
|
}
|
|
public static byte[] getImageStream(File file) {
|
|
public static byte[] getImageStream(File file) {
|
|
byte[] buffer = null;
|
|
byte[] buffer = null;
|