From b59af89b745d2e1c7dfe5e7c41928ff37e0f45de Mon Sep 17 00:00:00 2001 From: hansha Date: Tue, 18 Jun 2024 16:16:51 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=A7=E5=B0=8F=E9=99=90=E5=88=B6=E4=B8=BA?= =?UTF-8?q?200M?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dangan-admin/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dangan-admin/src/main/resources/application.yml b/dangan-admin/src/main/resources/application.yml index d35ce56..75e802a 100644 --- a/dangan-admin/src/main/resources/application.yml +++ b/dangan-admin/src/main/resources/application.yml @@ -59,7 +59,7 @@ spring: # 单个文件大小 max-file-size: 10MB # 设置总上传的文件大小 - max-request-size: 20MB + max-request-size: 200MB # 服务模块 devtools: restart: From bf2a35a8681697458216779d42e0f6b38e49d921 Mon Sep 17 00:00:00 2001 From: hansha Date: Tue, 18 Jun 2024 16:17:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=AF=86=E5=88=AB=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DangAnCollectController.java | 172 ++++++++++++++++-- .../da/dangan/util/CallThirdInterface.java | 81 +++++---- 2 files changed, 195 insertions(+), 58 deletions(-) diff --git a/dangan-dangan/src/main/java/com/da/dangan/controller/DangAnCollectController.java b/dangan-dangan/src/main/java/com/da/dangan/controller/DangAnCollectController.java index 767911b..a94a3a2 100644 --- a/dangan-dangan/src/main/java/com/da/dangan/controller/DangAnCollectController.java +++ b/dangan-dangan/src/main/java/com/da/dangan/controller/DangAnCollectController.java @@ -7,13 +7,9 @@ import com.da.common.core.controller.BaseController; import com.da.common.core.domain.AjaxResult; import com.da.common.utils.file.FileUploadUtils; import com.da.common.utils.file.FileUtils; -import com.da.dangan.domain.DaCzrkdj; -import com.da.dangan.domain.DaPicturesRecard; -import com.da.dangan.domain.vo.CzrkDatas; -import com.da.dangan.domain.vo.PicParams; -import com.da.dangan.service.IDaBirthDjService; -import com.da.dangan.service.IDaCzrkdjService; -import com.da.dangan.service.IDaPicturesRecardService; +import com.da.dangan.domain.*; +import com.da.dangan.domain.vo.*; +import com.da.dangan.service.*; import com.da.dangan.util.CallThirdInterface; import com.da.framework.config.ServerConfig; import org.apache.commons.lang3.StringUtils; @@ -29,6 +25,7 @@ import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.concurrent.Executor; import java.util.stream.Collectors; @@ -52,6 +49,14 @@ public class DangAnCollectController extends BaseController { private IDaCzrkdjService daCzrkdjService; @Autowired private IDaBirthDjService daBirthDjService; + @Autowired + private IDaQyzService daQyzService; + @Autowired + private IDaZqzService daZqzService; + @Autowired + private IDaYtzmService daYtzmService; + @Autowired + private IDaZfnyhkcgService daZfnyhkcgService; private static final String FILE_DELIMETER = ","; @Value("${ocr.url}") @@ -123,6 +128,7 @@ public class DangAnCollectController extends BaseController { //取所有id的集合 List ids = picRecards.stream().map(DaPicturesRecard::getId).collect(Collectors.toList()); String ywType = picRecards.get(0).getYwType(); + Long muId = picRecards.get(0).getMuId(); // String singleOrDouble = picRecards.get(0).getSingelOrDouble(); //获取所有的文件 List files = new ArrayList<>(); @@ -147,7 +153,8 @@ public class DangAnCollectController extends BaseController { }); long end =System.currentTimeMillis(); logger.info("CompletableFuture耗时--——————————————————》"+ (end-start)+"ms");*/ - //不使用循环调用接口 直接传递数组 + + //不使用循环调用接口 直接传递数组 ,在callThirdInterface方法内直接添加了username参数 String result = CallThirdInterface.callThirdInterface(url, files, ywType, ids); long end = System.currentTimeMillis(); logger.info("CompletableFuture耗时--——————————————————》" + (end - start) + "ms"); @@ -200,44 +207,169 @@ public class DangAnCollectController extends BaseController { String pictures = StringUtils.join(pics, ",");//分号分割 List info = czrkData.getInfo(); - if(info!=null&&info.size()>0) { + if (info != null && info.size() > 0) { for (DaCzrkdj daCzrkdj : info) { daCzrkdj.setAllPicIds(picIds); daCzrkdj.setAllPics(pictures); daCzrkdj.setPicIds(picIds); daCzrkdj.setPictures(pictures); + //其他字段存储 + daCzrkdj.setCreateTime(new Date()); + daCzrkdj.setYwType(ywType); + daCzrkdj.setMuId(muId); daCzrkdjService.insertDaCzrkdj(daCzrkdj); } } } - - /*DaCzrkdj daCzrkdj = new DaCzrkdj(); - daCzrkdj.setAllPicIds(picIds); - daCzrkdj.setAllPics(); - daCzrkdj.setPicIds(); - daCzrkdj.setPictures(); - daCzrkdjService.insertDaCzrkdj(); - //将插入后的id反写回来 - dajlid=daCzrkdj.getId();*/ break; case "option4": + //获取出生医学证明信息集合 + List cszmDatas = JSONArray.parseArray(datas, CszmDatas.class); + for (CszmDatas cszmData : cszmDatas) { + List picid = cszmData.getPicid(); + // 将Long类型映射为String类型, 并将Stream转换为数组 + String[] spicId = picid.stream().map(Object::toString).toArray(String[]::new); + String picIds = StringUtils.join(spicId, ",");//分号分割 + //存储图片url + List picUrls = picRecards.stream().map(DaPicturesRecard::getPicUrl).collect(Collectors.toList()); + String[] pics = picUrls.stream().map(Object::toString).toArray(String[]::new); + String pictures = StringUtils.join(pics, ",");//分号分割 + List info = cszmData.getInfo(); + if (info != null && info.size() > 0) { + for (DaBirthDj daBirthdj : info) { + daBirthdj.setAllPicIds(picIds); + daBirthdj.setAllPics(pictures); + daBirthdj.setPicIds(picIds); + daBirthdj.setPictures(pictures); + //其他字段存储 + daBirthdj.setCreateTime(new Date()); + daBirthdj.setYwType(ywType); + daBirthdj.setMuId(muId); + daBirthDjService.insertDaBirthDj(daBirthdj); + } + } + } break; case "option5": + //获取迁移证信息集合 + List qyzDatas = JSONArray.parseArray(datas, QyzDatas.class); + for (QyzDatas qyzData : qyzDatas) { + List picid = qyzData.getPicid(); + // 将Long类型映射为String类型, 并将Stream转换为数组 + String[] spicId = picid.stream().map(Object::toString).toArray(String[]::new); + String picIds = StringUtils.join(spicId, ",");//分号分割 + //存储图片url + List picUrls = picRecards.stream().map(DaPicturesRecard::getPicUrl).collect(Collectors.toList()); + String[] pics = picUrls.stream().map(Object::toString).toArray(String[]::new); + String pictures = StringUtils.join(pics, ",");//分号分割 + List info = qyzData.getInfo(); + if (info != null && info.size() > 0) { + for (DaQyz qyz : info) { + qyz.setAllPicIds(picIds); + qyz.setAllPics(pictures); + qyz.setPicIds(picIds); + qyz.setPictures(pictures); + //其他字段存储 + qyz.setCreateTime(new Date()); + qyz.setYwType(ywType); + qyz.setMuId(muId); + daQyzService.insertDaQyz(qyz); + } + } + } break; case "option6": + //获取一胎证明信息集合 + List ytzmDatas = JSONArray.parseArray(datas, YtzmDatas.class); + for (YtzmDatas ytzmData : ytzmDatas) { + List picid = ytzmData.getPicid(); + // 将Long类型映射为String类型, 并将Stream转换为数组 + String[] spicId = picid.stream().map(Object::toString).toArray(String[]::new); + String picIds = StringUtils.join(spicId, ",");//分号分割 + //存储图片url + List picUrls = picRecards.stream().map(DaPicturesRecard::getPicUrl).collect(Collectors.toList()); + String[] pics = picUrls.stream().map(Object::toString).toArray(String[]::new); + String pictures = StringUtils.join(pics, ",");//分号分割 + List info = ytzmData.getInfo(); + if (info != null && info.size() > 0) { + for (DaYtzm ytzm : info) { + ytzm.setAllPicIds(picIds); + ytzm.setAllPics(pictures); + ytzm.setPicIds(picIds); + ytzm.setPictures(pictures); + //其他字段存储 + ytzm.setCreateTime(new Date()); + ytzm.setYwType(ywType); + ytzm.setMuId(muId); + daYtzmService.insertDaYtzm(ytzm); + } + } + } break; case "option7": + //获取转非农业人口批复存根信息集合 + List zfnyDatas = JSONArray.parseArray(datas, ZfnyDatas.class); + for (ZfnyDatas zfnyData : zfnyDatas) { + List picid = zfnyData.getPicid(); + // 将Long类型映射为String类型, 并将Stream转换为数组 + String[] spicId = picid.stream().map(Object::toString).toArray(String[]::new); + String picIds = StringUtils.join(spicId, ",");//分号分割 + //存储图片url + List picUrls = picRecards.stream().map(DaPicturesRecard::getPicUrl).collect(Collectors.toList()); + String[] pics = picUrls.stream().map(Object::toString).toArray(String[]::new); + String pictures = StringUtils.join(pics, ",");//分号分割 + List info = zfnyData.getInfo(); + if (info != null && info.size() > 0) { + for (DaZfnyhkcg zfnyhkcg : info) { + zfnyhkcg.setAllPicIds(picIds); + zfnyhkcg.setAllPics(pictures); + zfnyhkcg.setPicIds(picIds); + zfnyhkcg.setPictures(pictures); + //其他字段存储 + zfnyhkcg.setCreateTime(new Date()); + zfnyhkcg.setYwType(ywType); + zfnyhkcg.setMuId(muId); + daZfnyhkcgService.insertDaZfnyhkcg(zfnyhkcg); + } + } + } break; case "option8": + //获取准迁证信息集合 + List zqzDatas = JSONArray.parseArray(datas, ZqzDatas.class); + for (ZqzDatas zqzData : zqzDatas) { + List picid = zqzData.getPicid(); + // 将Long类型映射为String类型, 并将Stream转换为数组 + String[] spicId = picid.stream().map(Object::toString).toArray(String[]::new); + String picIds = StringUtils.join(spicId, ",");//分号分割 + //存储图片url + List picUrls = picRecards.stream().map(DaPicturesRecard::getPicUrl).collect(Collectors.toList()); + String[] pics = picUrls.stream().map(Object::toString).toArray(String[]::new); + String pictures = StringUtils.join(pics, ",");//分号分割 + List info = zqzData.getInfo(); + if (info != null && info.size() > 0) { + for (DaZqz zqz : info) { + zqz.setAllPicIds(picIds); + zqz.setAllPics(pictures); + zqz.setPicIds(picIds); + zqz.setPictures(pictures); + //其他字段存储 + zqz.setCreateTime(new Date()); + zqz.setYwType(ywType); + zqz.setMuId(muId); + daZqzService.insertDaZqz(zqz); + } + } + } break; } - //识别成功的图片 ,修改图片信息记录表为已识别 可以用多线程 + //三方识别接口:要么全部成功 要么全部失败——————修改图片信息记录表为已识别 可以用多线程 for (DaPicturesRecard picRecard : picRecards) { picRecard.setRecognize("1"); daPicturesRecardService.updateDaPicturesRecard(picRecard); @@ -382,7 +514,7 @@ public class DangAnCollectController extends BaseController { String datas = jsonobject.getStr("datas"); //获取常住人口信息集合 List czrkDatas = JSONArray.parseArray(datas, CzrkDatas.class); - System.out.println(czrkDatas.get(1).getInfo()==null); + System.out.println(czrkDatas.get(1).getInfo() == null); System.out.println(czrkDatas.get(1).getInfo().size()); System.out.println(czrkDatas.get(0).getInfo().get(0).getName()); return "datas.toString()"; diff --git a/dangan-dangan/src/main/java/com/da/dangan/util/CallThirdInterface.java b/dangan-dangan/src/main/java/com/da/dangan/util/CallThirdInterface.java index 77abd57..62a4b00 100644 --- a/dangan-dangan/src/main/java/com/da/dangan/util/CallThirdInterface.java +++ b/dangan-dangan/src/main/java/com/da/dangan/util/CallThirdInterface.java @@ -1,10 +1,8 @@ package com.da.dangan.util; import cn.hutool.core.util.CharsetUtil; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import cn.hutool.http.HttpUtil; -import cn.hutool.http.Method; +import cn.hutool.http.*; +import com.da.common.utils.SecurityUtils; import java.io.File; import java.net.HttpCookie; @@ -47,43 +45,50 @@ public class CallThirdInterface { return result; } - public static String callThirdInterface(String url,List files,String fileType,List picIds){ - - // 1. 创建HttpRequest对象 - 指定好 url 地址 - HttpRequest httpRequest = new HttpRequest(url); - // 2. 设置请求方式,默认是GET请求 - httpRequest.setMethod(Method.POST); - - // 3. 设置请求参数 可通过 form表单方法 设置 可以是文件类型 - // form方法有很多重载方法,可以一个一个参数设置,也可以将参数封装进一个map集合然后一块儿 - // File file = new File("C:\\Users\\hssym\\Downloads\\UBQ.png"); - - httpRequest.charset(CharsetUtil.CHARSET_UTF_8); - httpRequest.form("files[]",files.toArray(new File[files.size()])); - httpRequest.form("picIds",picIds); - httpRequest.form("fileType",fileType); - //httpRequest.form("singeOrDouble",); - //httpRequest.form("picIds",ids.toArray(new Long[ids.size()])); - - // 4. 设置请求头 - // 请求头同样可以逐一设置,也可以封装到map中再统一设置 - // 设置的请求头,可添加多个 - // httpRequest.header("x-c-authorization","yourToken"); - // httpRequest.header("Content-Type", "multipart/form-data;charset=UTF-8"); - // 5. 执行请求,得到http响应类 - HttpResponse execute = httpRequest.execute(); - - // 6. 解析这个http响应类,可以获取到响应主体、cookie、是否请求成功等信息 - boolean ok = execute.isOk(); // 是否请求成功 判断依据为:状态码范围在200~299内 - System.out.println(ok); - List cookies = execute.getCookies();// 获取所有cookie - cookies.forEach(System.out::println); // 如果为空不会遍历的 - String body = execute.body(); // 获取响应主体 + public static String callThirdInterface(String url,List files,String fileType,List picIds) throws Exception { + String body = null; // 获取响应主体 + + try { + // 1. 创建HttpRequest对象 - 指定好 url 地址 + HttpRequest httpRequest = new HttpRequest(url); + // 2. 设置请求方式,默认是GET请求 + httpRequest.setMethod(Method.POST); + + // 3. 设置请求参数 可通过 form表单方法 设置 可以是文件类型 + // form方法有很多重载方法,可以一个一个参数设置,也可以将参数封装进一个map集合然后一块儿 + // File file = new File("C:\\Users\\hssym\\Downloads\\UBQ.png"); + + httpRequest.charset(CharsetUtil.CHARSET_UTF_8); + httpRequest.form("files[]",files.toArray(new File[files.size()])); + httpRequest.form("picIds",picIds); + httpRequest.form("fileType",fileType); + httpRequest.form("username", SecurityUtils.getLoginUser().getUser().getUserName()); //添加一个参数做标识 username + //httpRequest.form("singeOrDouble",); + //httpRequest.form("picIds",ids.toArray(new Long[ids.size()])); + + // 4. 设置请求头 + // 请求头同样可以逐一设置,也可以封装到map中再统一设置 + // 设置的请求头,可添加多个 + // httpRequest.header("x-c-authorization","yourToken"); + // httpRequest.header("Content-Type", "multipart/form-data;charset=UTF-8"); + // 5. 执行请求,得到http响应类 + HttpResponse execute = httpRequest.execute(); + + // 6. 解析这个http响应类,可以获取到响应主体、cookie、是否请求成功等信息 + boolean ok = execute.isOk(); // 是否请求成功 判断依据为:状态码范围在200~299内 + System.out.println(ok); + List cookies = execute.getCookies();// 获取所有cookie + cookies.forEach(System.out::println); // 如果为空不会遍历的 + body = execute.body(); /*byte[] bytes = execute.bodyBytes(); String body = new String (bytes,CharsetUtil.UTF_8);*/ - // 输出结果 - System.out.println(body); + // 输出结果 + System.out.println(body); + } catch (HttpException e) { + e.printStackTrace(); + throw new Exception("识别接口连接失败!!!"); + } return body; }