|
@@ -25,7 +25,6 @@ import ieven.server.webapp.util.excel.ExcelXlsReader;
|
|
import ieven.server.webapp.util.excel.ExcelXlsxReader;
|
|
import ieven.server.webapp.util.excel.ExcelXlsxReader;
|
|
import ieven.server.webapp.util.excel.PublicStatic;
|
|
import ieven.server.webapp.util.excel.PublicStatic;
|
|
import info.monitorenter.cpdetector.io.*;
|
|
import info.monitorenter.cpdetector.io.*;
|
|
-import lombok.SneakyThrows;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.csv.CSVFormat;
|
|
import org.apache.commons.csv.CSVFormat;
|
|
import org.apache.commons.csv.CSVParser;
|
|
import org.apache.commons.csv.CSVParser;
|
|
@@ -49,14 +48,14 @@ import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.AsyncResult;
|
|
import org.springframework.scheduling.annotation.AsyncResult;
|
|
import org.springframework.scheduling.annotation.EnableAsync;
|
|
import org.springframework.scheduling.annotation.EnableAsync;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
-import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.*;
|
|
import java.io.*;
|
|
import java.nio.charset.Charset;
|
|
import java.nio.charset.Charset;
|
|
-import java.util.*;
|
|
|
|
-import java.util.concurrent.ExecutionException;
|
|
|
|
-import java.util.concurrent.Future;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Arrays;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.concurrent.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
@Service
|
|
@@ -66,7 +65,7 @@ public class FileService {
|
|
@Value("${spring.data.fileExportPath}")
|
|
@Value("${spring.data.fileExportPath}")
|
|
private String fileUploadPath;
|
|
private String fileUploadPath;
|
|
|
|
|
|
- String[] order1 = {"反诈数据-订单明细", "治安数据-订单明细","经侦数据-订单明细","网黑数据-订单明细", "反诈治安-交易明细", "反诈治安-账户透视", "反诈治安-对手透视"};
|
|
|
|
|
|
+ String[] order1 = {"反诈数据-订单明细", "治安数据-订单明细", "经侦数据-订单明细", "网黑数据-订单明细", "反诈治安-交易明细", "反诈治安-账户透视", "反诈治安-对手透视"};
|
|
String[] order2 = {
|
|
String[] order2 = {
|
|
"五联单-注册信息",
|
|
"五联单-注册信息",
|
|
"五联单-登录日志",
|
|
"五联单-登录日志",
|
|
@@ -79,9 +78,9 @@ public class FileService {
|
|
"五联单-IP地址分析",
|
|
"五联单-IP地址分析",
|
|
"五联单-收货地址分析"
|
|
"五联单-收货地址分析"
|
|
};
|
|
};
|
|
- String[] order3 = {"财付通-注册信息", "财付通-订单明细1","财付通-订单明细2", "财付通-交易明细", "财付通-账户透视", "财付通-对手透视", "财付通-手机明细"};
|
|
|
|
|
|
+ String[] order3 = {"财付通-注册信息", "财付通-订单明细1", "财付通-订单明细2", "财付通-交易明细", "财付通-账户透视", "财付通-对手透视", "财付通-手机明细"};
|
|
|
|
|
|
- String[] order4 = {"数据分析-主体信息汇总","数据分析-账户透视","数据分析-对手透视", "数据分析-共同关系网络"};
|
|
|
|
|
|
+ String[] order4 = {"数据分析-主体信息汇总", "数据分析-账户透视", "数据分析-对手透视", "数据分析-共同关系网络"};
|
|
@Autowired
|
|
@Autowired
|
|
private GridFsTemplate gridFsTemplate;
|
|
private GridFsTemplate gridFsTemplate;
|
|
@Autowired
|
|
@Autowired
|
|
@@ -231,7 +230,8 @@ public class FileService {
|
|
curRow,
|
|
curRow,
|
|
strings2.stream()
|
|
strings2.stream()
|
|
.map(PublicStatic::removeAllSpecial)
|
|
.map(PublicStatic::removeAllSpecial)
|
|
- .collect(Collectors.toList()));
|
|
|
|
|
|
+ .collect(Collectors.toList())
|
|
|
|
+ );
|
|
curRow++;
|
|
curRow++;
|
|
}
|
|
}
|
|
mongoExcelService.insertRest();
|
|
mongoExcelService.insertRest();
|
|
@@ -251,7 +251,8 @@ public class FileService {
|
|
mongoExcelService.getRows(
|
|
mongoExcelService.getRows(
|
|
0,
|
|
0,
|
|
curRow,
|
|
curRow,
|
|
- values.stream().map(PublicStatic::removeAllSpecial).collect(Collectors.toList()));
|
|
|
|
|
|
+ values.stream().map(PublicStatic::removeAllSpecial).collect(Collectors.toList())
|
|
|
|
+ );
|
|
curRow++;
|
|
curRow++;
|
|
}
|
|
}
|
|
mongoExcelService.insertRest();
|
|
mongoExcelService.insertRest();
|
|
@@ -285,7 +286,7 @@ public class FileService {
|
|
List<LogicalFile> resultList = this.mongoTemplate.find(query, LogicalFile.class);
|
|
List<LogicalFile> resultList = this.mongoTemplate.find(query, LogicalFile.class);
|
|
// 将文件 按照 反诈 财付通 五联单 进行分类
|
|
// 将文件 按照 反诈 财付通 五联单 进行分类
|
|
List<GroupLogincalFile> groupLogincalFiles = new ArrayList<>();
|
|
List<GroupLogincalFile> groupLogincalFiles = new ArrayList<>();
|
|
- groupLogicalFile("反诈治安数据分析", new String[]{"反诈", "治安","经侦","网黑"}, resultList, groupLogincalFiles);
|
|
|
|
|
|
+ groupLogicalFile("反诈治安数据分析", new String[]{"反诈", "治安", "经侦", "网黑"}, resultList, groupLogincalFiles);
|
|
groupLogicalFile("支付宝数据分析", new String[]{"五联单"}, resultList, groupLogincalFiles);
|
|
groupLogicalFile("支付宝数据分析", new String[]{"五联单"}, resultList, groupLogincalFiles);
|
|
groupLogicalFile("财付通数据分析", new String[]{"财付通"}, resultList, groupLogincalFiles);
|
|
groupLogicalFile("财付通数据分析", new String[]{"财付通"}, resultList, groupLogincalFiles);
|
|
groupLogicalFile("数据综合分析", new String[]{"数据分析"}, resultList, groupLogincalFiles);
|
|
groupLogicalFile("数据综合分析", new String[]{"数据分析"}, resultList, groupLogincalFiles);
|
|
@@ -340,7 +341,7 @@ public class FileService {
|
|
|
|
|
|
for (LogicalFile logicalFile : list) {
|
|
for (LogicalFile logicalFile : list) {
|
|
if (logicalFile.getFilename().equals(s)) {
|
|
if (logicalFile.getFilename().equals(s)) {
|
|
- if("数据分析-共同关系网络".equals(logicalFile.getFilename())){
|
|
|
|
|
|
+ if ("数据分析-共同关系网络".equals(logicalFile.getFilename())) {
|
|
logicalFile.setFileType("map");
|
|
logicalFile.setFileType("map");
|
|
}
|
|
}
|
|
child.add(logicalFile);
|
|
child.add(logicalFile);
|
|
@@ -458,19 +459,28 @@ public class FileService {
|
|
|
|
|
|
public Mapped uploadFilesAndSave(List<MultipartFile> multipartFiles, String modelId) {
|
|
public Mapped uploadFilesAndSave(List<MultipartFile> multipartFiles, String modelId) {
|
|
List<String> failNameList = new ArrayList<>();
|
|
List<String> failNameList = new ArrayList<>();
|
|
- for (int i = 1; i <= multipartFiles.size(); i++) {
|
|
|
|
|
|
+ for (int i = 0; i < multipartFiles.size(); i++) {
|
|
MultipartFile multipartFile = multipartFiles.get(i);
|
|
MultipartFile multipartFile = multipartFiles.get(i);
|
|
String originName = multipartFile.getOriginalFilename();
|
|
String originName = multipartFile.getOriginalFilename();
|
|
String suffix = originName.substring(originName.lastIndexOf(".") + 1);
|
|
String suffix = originName.substring(originName.lastIndexOf(".") + 1);
|
|
String prefix = originName.substring(0, originName.lastIndexOf("."));
|
|
String prefix = originName.substring(0, originName.lastIndexOf("."));
|
|
- String savedName = prefix + "(" + i + ")." + suffix;
|
|
|
|
|
|
+ String savedName = prefix + "(" + (i + 1) + ")." + suffix;
|
|
String filepath = fileUploadPath + File.separator + modelId + File.separator + savedName;
|
|
String filepath = fileUploadPath + File.separator + modelId + File.separator + savedName;
|
|
FileUtils.uploadFile(multipartFile, filepath);
|
|
FileUtils.uploadFile(multipartFile, filepath);
|
|
MultipartFile multipartFile1 = FileUtils.getMultipartFile(new File(filepath));
|
|
MultipartFile multipartFile1 = FileUtils.getMultipartFile(new File(filepath));
|
|
try {
|
|
try {
|
|
- Mapped mapped = uploadSingle(multipartFile1, modelId);
|
|
|
|
- if(!"200".equals(mapped.get("code"))){
|
|
|
|
- failNameList.add(String.valueOf(mapped.get("message")));
|
|
|
|
|
|
+ ExecutorService executor = Executors.newSingleThreadExecutor();
|
|
|
|
+ Future<Mapped> future = executor.submit(new Callable<Mapped>() {
|
|
|
|
+ @Override
|
|
|
|
+ public Mapped call() throws Exception {
|
|
|
|
+ return uploadSingle(multipartFile1, modelId);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ // 在这里,主线程会等待 future 的结果
|
|
|
|
+ Mapped mapped = future.get(); // 这将会阻塞,直到Callable任务完成
|
|
|
|
+ if (200 != Integer.valueOf(String.valueOf(mapped.get("code")))) {
|
|
|
|
+ failNameList.add(savedName+":"+String.valueOf(mapped.get("message")));
|
|
}
|
|
}
|
|
//删除文件
|
|
//删除文件
|
|
FileUtils.deleteFile(filepath);
|
|
FileUtils.deleteFile(filepath);
|