只有业务层,可根据需求修改
@Override
public CommonResultVo mxImport(String date, MultipartFile[] files) {
List<String> errorTableNames = new ArrayList<>();
List<List<Object>> listenerList = getListenerList(date, files);
if (listenerList.size() <= 0) {
return CommonResultVo.error("203", "文件名不匹配!");
}
ThreadPoolExecutor fixedThreadPool = (ThreadPoolExecutor) Executors.newFixedThreadPool(files.length);
fixedThreadPool.setCorePoolSize(Runtime.getRuntime().availableProcessors() + 1);
for (int i = 0; i < files.length; i++) {
final MultipartFile theFile = files[i];
final int j = i;
final String tableName = String.valueOf(listenerList.get(j).get(2));
final String tableCName = String.valueOf(listenerList.get(j).get(3));
fixedThreadPool.execute(new Runnable() {
@Override
public void run() {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
PlatformTransactionManager txManager = SpringUtil.getBean(PlatformTransactionManager.class);
TransactionStatus status = txManager.getTransaction(def);
try {
String dir = System.getProperty("user.dir") + "/upload/rhzg/importFile/" + TimeUtil.timestamp(new Date());
MyExcelUtil.fileUpload(theFile, dir);
File uploadFile = new File(dir + "/" + theFile.getOriginalFilename());
FileInputStream fileInputStream = null;
fileInputStream = new FileInputStream(uploadFile);
MultipartFile file = new MockMultipartFile(uploadFile.getName(), uploadFile.getName(), ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
txManager.commit(status);
} catch (Exception e) {
String errorMessage = e.getMessage();
log.info("导入[" + tableName + "]失败:" + errorMessage);
if (errorMessage.contains(":")) {
errorTableNames.add(tableCName + errorMessage.split(":")[1]);
} else {
errorTableNames.add(tableCName + errorMessage);
}
txManager.rollback(status);
}
}
});
}
fixedThreadPool.shutdown();
while (true) {
if (fixedThreadPool.isTerminated()) {
break;
}
}
if (errorTableNames != null && errorTableNames.size() > 0) {
log.info("文件异常:" + errorTableNames);
return CommonResultVo.error("文件异常:" + errorTableNames);
}
return CommonResultVo.success("导入成功");
}