|
|
|
@ -23,6 +23,7 @@ import java.io.File;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.concurrent.Executor;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 档案采集Controller
|
|
|
|
* 档案采集Controller
|
|
|
|
@ -33,6 +34,8 @@ import java.util.List;
|
|
|
|
@RestController
|
|
|
|
@RestController
|
|
|
|
@RequestMapping("/dangan/collect")
|
|
|
|
@RequestMapping("/dangan/collect")
|
|
|
|
public class DangAnCollectController extends BaseController {
|
|
|
|
public class DangAnCollectController extends BaseController {
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private Executor threadPoolTaskExecutor;
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private ServerConfig serverConfig;
|
|
|
|
private ServerConfig serverConfig;
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
@ -45,35 +48,7 @@ public class DangAnCollectController extends BaseController {
|
|
|
|
private String url;
|
|
|
|
private String url;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 上传(单个)
|
|
|
|
* 通用上传(单个/多个)保存图片
|
|
|
|
*/
|
|
|
|
|
|
|
|
@PostMapping("/save")
|
|
|
|
|
|
|
|
public AjaxResult save(@RequestPart("file") MultipartFile file, @RequestPart("picRecard") DaPicturesRecard picRecard) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
// 上传文件路径
|
|
|
|
|
|
|
|
String filePath = RuoYiConfig.getUploadPath();
|
|
|
|
|
|
|
|
// 上传并返回新文件名称
|
|
|
|
|
|
|
|
String fileName = FileUploadUtils.upload(filePath, file);
|
|
|
|
|
|
|
|
String url = serverConfig.getUrl() + fileName;
|
|
|
|
|
|
|
|
//保存图片对应信息
|
|
|
|
|
|
|
|
picRecard.setPicName(file.getOriginalFilename());
|
|
|
|
|
|
|
|
picRecard.setPicUrl(url);
|
|
|
|
|
|
|
|
picRecard.setCreateBy(getUsername());
|
|
|
|
|
|
|
|
AjaxResult ajax = AjaxResult.success();
|
|
|
|
|
|
|
|
daPicturesRecardService.insertDaPicturesRecard(picRecard);
|
|
|
|
|
|
|
|
ajax.put("data", picRecard);
|
|
|
|
|
|
|
|
/*ajax.put("url", url);
|
|
|
|
|
|
|
|
ajax.put("fileName", fileName);
|
|
|
|
|
|
|
|
ajax.put("newFileName", FileUtils.getName(fileName));
|
|
|
|
|
|
|
|
ajax.put("originalFilename", file.getOriginalFilename());*/
|
|
|
|
|
|
|
|
return ajax;
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
return AjaxResult.error(e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 通用上传(单个/多个)
|
|
|
|
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@PostMapping("/saves")
|
|
|
|
@PostMapping("/saves")
|
|
|
|
public AjaxResult saves(@RequestPart("files") MultipartFile[] files, @RequestPart("picRecard") DaPicturesRecard picRecard) throws Exception {
|
|
|
|
public AjaxResult saves(@RequestPart("files") MultipartFile[] files, @RequestPart("picRecard") DaPicturesRecard picRecard) throws Exception {
|
|
|
|
@ -130,8 +105,8 @@ public class DangAnCollectController extends BaseController {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@PostMapping("/recongnize")
|
|
|
|
@PostMapping("/recongnize")
|
|
|
|
public AjaxResult recognize(@RequestBody DaPicturesRecard[] picRecards) {
|
|
|
|
public AjaxResult recognize(@RequestBody DaPicturesRecard[] picRecards) {
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
|
|
|
|
String ywType = picRecards[0].getYwType();
|
|
|
|
//获取所有的文件
|
|
|
|
//获取所有的文件
|
|
|
|
List<File> files = new ArrayList<>();
|
|
|
|
List<File> files = new ArrayList<>();
|
|
|
|
for (DaPicturesRecard picRecard : picRecards) {
|
|
|
|
for (DaPicturesRecard picRecard : picRecards) {
|
|
|
|
@ -139,18 +114,123 @@ public class DangAnCollectController extends BaseController {
|
|
|
|
File file = new File(path);
|
|
|
|
File file = new File(path);
|
|
|
|
files.add(file);
|
|
|
|
files.add(file);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// TODO 调用第三方接口识别信息
|
|
|
|
// TODO————————多线程循环调用第三方接口
|
|
|
|
//String result= CallThirdInterface.callThirdInterface1();
|
|
|
|
long start =System.currentTimeMillis();
|
|
|
|
String result = CallThirdInterface.callThirdInterface(url, files, "option1");
|
|
|
|
/*List<CompletableFuture<String>> futures = new ArrayList<>();
|
|
|
|
|
|
|
|
List<String> results = new ArrayList<>();
|
|
|
|
|
|
|
|
for(File file :files){
|
|
|
|
|
|
|
|
System.out.println("线程执行前----------------"+file.getName());
|
|
|
|
|
|
|
|
futures.add(CompletableFuture.supplyAsync(() ->testAsync(file,picRecards[0].getYwType()) , threadPoolTaskExecutor)); // 用自定义线程池
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 所有请求完成后处理逻辑
|
|
|
|
|
|
|
|
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).thenRun(() -> {
|
|
|
|
|
|
|
|
//join控制线程顺序
|
|
|
|
|
|
|
|
results = futures.stream().map(CompletableFuture::join).collect(Collectors.toList());
|
|
|
|
|
|
|
|
logger.info("线程执行完毕:{}", JSON.toJSONString(results));
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
long end =System.currentTimeMillis();
|
|
|
|
|
|
|
|
logger.info("CompletableFuture耗时--——————————————————》"+ (end-start)+"ms");*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//不使用循环调用接口 直接传递数组
|
|
|
|
|
|
|
|
String result = CallThirdInterface.callThirdInterface(url, files, ywType);
|
|
|
|
System.out.println(result);
|
|
|
|
System.out.println(result);
|
|
|
|
|
|
|
|
long end =System.currentTimeMillis();
|
|
|
|
|
|
|
|
logger.info("CompletableFuture耗时--——————————————————》"+ (end-start)+"ms");
|
|
|
|
|
|
|
|
|
|
|
|
// TODO 根据业务类型存储识别后的信息
|
|
|
|
// TODO 根据业务类型存储识别后的信息
|
|
|
|
//daCzrkdjService.insertDaCzrkdj();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//识别成功的图片 ,修改图片信息记录表为已识别
|
|
|
|
switch(ywType){
|
|
|
|
for (DaPicturesRecard picRecard : picRecards) {
|
|
|
|
case "0" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "1" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "2" :
|
|
|
|
|
|
|
|
//daCzrkdjService.insertDaCzrkdj();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "3" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "4" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "5" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "6" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//识别成功的图片 ,修改图片信息记录表为已识别 可以用多线程
|
|
|
|
|
|
|
|
/*for (DaPicturesRecard picRecard : picRecards) {
|
|
|
|
picRecard.setRecognize("1");
|
|
|
|
picRecard.setRecognize("1");
|
|
|
|
daPicturesRecardService.updateDaPicturesRecard(picRecard);
|
|
|
|
daPicturesRecardService.updateDaPicturesRecard(picRecard);
|
|
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
return AjaxResult.error(e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return AjaxResult.success();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 调用ocr识别接口——上传图片为一组 (也就是上传N张图片为一个人的数据,仅需要识别一张图片)
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@PostMapping("/recongnize2")
|
|
|
|
|
|
|
|
public AjaxResult recognize2(@RequestBody DaPicturesRecard chekedRecard[],@RequestBody DaPicturesRecard[] unchekedRecards) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
String ywType = chekedRecard[0].getYwType();
|
|
|
|
|
|
|
|
//获取所有的文件
|
|
|
|
|
|
|
|
List<File> files = new ArrayList<>();
|
|
|
|
|
|
|
|
for (DaPicturesRecard picRecard : chekedRecard) {
|
|
|
|
|
|
|
|
String path = getPath(picRecard.getPicUrl());
|
|
|
|
|
|
|
|
File file = new File(path);
|
|
|
|
|
|
|
|
files.add(file);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO————————多线程循环调用第三方接口
|
|
|
|
|
|
|
|
long start =System.currentTimeMillis();
|
|
|
|
|
|
|
|
String result = CallThirdInterface.callThirdInterface(url, files, ywType);
|
|
|
|
|
|
|
|
System.out.println(result);
|
|
|
|
|
|
|
|
long end =System.currentTimeMillis();
|
|
|
|
|
|
|
|
logger.info("CompletableFuture耗时--——————————————————》"+ (end-start)+"ms");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO 根据业务类型存储识别后的信息
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch(ywType){
|
|
|
|
|
|
|
|
case "0" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "1" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "2" :
|
|
|
|
|
|
|
|
//daCzrkdjService.insertDaCzrkdj();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "3" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "4" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "5" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "6" :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//识别成功的图片 ,修改图片信息记录表为已识别 可以用多线程
|
|
|
|
|
|
|
|
/*for (DaPicturesRecard picRecard : picRecards) {
|
|
|
|
|
|
|
|
picRecard.setRecognize("1");
|
|
|
|
|
|
|
|
daPicturesRecardService.updateDaPicturesRecard(picRecard);
|
|
|
|
|
|
|
|
}*/
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
e.printStackTrace();
|
|
|
|
return AjaxResult.error(e.getMessage());
|
|
|
|
return AjaxResult.error(e.getMessage());
|
|
|
|
@ -158,6 +238,29 @@ public class DangAnCollectController extends BaseController {
|
|
|
|
return AjaxResult.success();
|
|
|
|
return AjaxResult.success();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 线程池调用第三方接口
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public String testAsync(File file,String ywType){
|
|
|
|
|
|
|
|
String result = null;
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Thread.sleep(10);
|
|
|
|
|
|
|
|
logger.info("开始执行异步线程-————————————————————————————————————>>" );
|
|
|
|
|
|
|
|
//调用接口
|
|
|
|
|
|
|
|
//根据接口返回值判断list中的值 是否匹配
|
|
|
|
|
|
|
|
//返回处理后的结果
|
|
|
|
|
|
|
|
List<File> files = new ArrayList<>();
|
|
|
|
|
|
|
|
files.add(file);
|
|
|
|
|
|
|
|
result = CallThirdInterface.callThirdInterface(url, files, ywType);
|
|
|
|
|
|
|
|
System.out.println(result);
|
|
|
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
|
|
|
logger.error(e.getMessage(),e);
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 图片批量识别处理进度
|
|
|
|
* 图片批量识别处理进度
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|