浏览代码

批量导入Excel导入模板

cr 1 周之前
父节点
当前提交
24518ce179

+ 5 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java

@@ -48,6 +48,7 @@ import org.springframework.dao.DataAccessException;
 import org.springframework.http.ResponseEntity;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -687,7 +688,8 @@ public class WbsTreeContractController extends BladeController {
     @PostMapping("/import-node-excel")
     @ApiOperationSupport(order = 13)
     @ApiOperation(value = "客户端-导入多sheet excel到对应节点下的表单", notes = "传入节点ID、分类和多sheet excel文件")
-    public R<Map<String, Object>> importNodeExcel(
+    @Transactional(rollbackFor = Exception.class)
+    public R importNodeExcel(
             @RequestPart MultipartFile file,
             @RequestParam Long nodeId,
             @RequestParam Integer classify) throws Exception {
@@ -715,7 +717,6 @@ public class WbsTreeContractController extends BladeController {
         }
 
         // 3. 遍历所有sheet,逐个处理
-        Map<String, Object> allResults = new LinkedHashMap<>(); // 按sheet顺序保存结果
         int sheetCount = mainWorkbook.getWorksheets().getCount();
 
         for (int i = 0; i < sheetCount; i++) {
@@ -726,7 +727,6 @@ public class WbsTreeContractController extends BladeController {
             // 匹配对应的表单
             WbsTreeContract matchedContract = nodeNameToContractMap.get(processedSheetName);
             if (matchedContract == null) {
-                allResults.put(sheetName, "未找到匹配的表单(节点名:" + sheetName + ")");
                 logger.warn("sheet名[{}]未匹配到任何表单,已跳过", sheetName);
                 continue;
             }
@@ -758,9 +758,7 @@ public class WbsTreeContractController extends BladeController {
                 jdbcTemplate.execute(delSql);
                 jdbcTemplate.execute(sqlInfo);
             } catch (Exception e) {
-                String errorMsg = "处理sheet[" + sheetName + "]失败:" + e.getMessage();
-                allResults.put(sheetName, errorMsg);
-                logger.error(errorMsg, e);
+                throw new ServiceException("处理sheet[" + sheetName + "]失败:" + e.getMessage());
             } finally {
                 // 关闭流并删除临时文件
                 if (tempInputStream != null) {
@@ -772,7 +770,7 @@ public class WbsTreeContractController extends BladeController {
             }
         }
         mainWorkbook.dispose();
-        return R.data(allResults);
+        return R.success("导入成功");
     }
 
     public StringBuilder buildMTableInsertSql(String tabName, Map<String, String> dataMap2, Object id, Object groupId, Object pKeyId) {