feat(文档拆分): 批量拆分,异常的回滚,正常的提交

This commit is contained in:
yjz
2024-02-23 14:14:34 +08:00
parent b67a1effbd
commit c2b4c48d27
@@ -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());
}
}