feat(文档拆分): 批量拆分,异常的回滚,正常的提交
This commit is contained in:
+20
@@ -80,9 +80,14 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.TransactionDefinition;
|
||||
import org.springframework.transaction.TransactionStatus;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.support.DefaultTransactionDefinition;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -173,6 +178,9 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
|
||||
this.sysBaseAPI = sysBaseAPI;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private PlatformTransactionManager dataSourceTransactionManager;
|
||||
|
||||
@Value("${jero.path.exportExcelTempPath}")
|
||||
private String exportExcelTempPath;
|
||||
@Value("#{'${adminRoleCode}'.split(',')}")
|
||||
@@ -1312,6 +1320,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(noRollbackFor = {JeroBootException.class})
|
||||
public void batchSplit(JSONObject jsonObject) {
|
||||
// 获取拆分所选文件
|
||||
SplitFileInfo splitFileInfo = new SplitFileInfo();
|
||||
@@ -1323,6 +1332,13 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
|
||||
|
||||
// 拆分
|
||||
for (SplitFileInfo fileInfo : list) {
|
||||
// 手动开启事务
|
||||
DefaultTransactionDefinition defaultTransactionDefinition = new DefaultTransactionDefinition();
|
||||
// 事物隔离级别,开启新事务
|
||||
defaultTransactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
||||
// 获得事务状态
|
||||
TransactionStatus transaction = dataSourceTransactionManager.getTransaction(defaultTransactionDefinition);
|
||||
|
||||
SarFileSplitInfoEO sarFileSplitInfoEO = new SarFileSplitInfoEO();
|
||||
sarFileSplitInfoEO.setFileId(fileInfo.getId());
|
||||
sarFileSplitInfoEO.setFileName(fileInfo.getFileName());
|
||||
@@ -1332,7 +1348,11 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
|
||||
sarFileSplitInfoEO.setTitle(fileInfo.getStandardName());
|
||||
try {
|
||||
add(sarFileSplitInfoEO);
|
||||
// 提交事务
|
||||
dataSourceTransactionManager.commit(transaction);
|
||||
}catch (JeroBootException e){
|
||||
// 回滚事务
|
||||
dataSourceTransactionManager.rollback(transaction);
|
||||
errorList.add("标准编号为:" + fileInfo.getStandardNumber() + " " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user