diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java index b5a1d81a..0c9a9f7b 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java @@ -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()); } }