yangyj před 1 rokem
rodič
revize
b9522c4503

+ 21 - 11
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -3507,7 +3507,16 @@ public class TaskController extends BladeController {
                 /*准备*/
                 reportResults.forEach(rs -> {
                     if (rs.getInitTableName().equals("m_20240325154016_1772166597482381312")) {
-                        rs.setDeleteRow("13,15");
+                        List<Map.Entry<String,Object>> entries=rs.getData().get(0).entrySet().stream().filter(e->Integer.parseInt(e.getKey().split("_")[1])==1).sorted(Comparator.comparingInt(e->Integer.parseInt(e.getKey().split("_")[0]))).collect(Collectors.toList());
+                        List<String> list =entries.stream().map(e->e.getValue().toString()).collect(Collectors.toList());
+                        int index= list.indexOf("小计");
+                        if(index>0) {
+                            Map.Entry<String,Object> head=entries.get(index-1);
+                            Map.Entry<String,Object> tail=entries.get(index);
+                            String start=(Integer.parseInt(head.getKey().split("_")[0])+1-1)+"";
+                            String end=(Integer.parseInt(tail.getKey().split("_")[0])-1-1)+"";
+                            rs.setDeleteRow(start+","+end);
+                        }
                     }
                     /*初始化路径*/
                     rs.pathInit(file_path, report.getContractId());
@@ -3602,7 +3611,7 @@ public class TaskController extends BladeController {
                                 if (deleteRow != null && !deleteRow.isEmpty()) {
                                     LinkedList<Integer> rowIds = Arrays.stream(deleteRow.split("\\D+")).map(Integer::parseInt).collect(Collectors.toCollection(LinkedList::new));
                                     if (rowIds.size() >= 2) {
-                                        // deleteRows2(sheet, rowIds.getFirst(), rowIds.getLast());
+                                         deleteRows2(sheet, rowIds.getFirst(), rowIds.getLast());
                                     }
                                 }
                                 //去掉表格虚线
@@ -3708,17 +3717,18 @@ public class TaskController extends BladeController {
 
     public void deleteRows2(Sheet sheet, int startRow, int endRow) {
         int lastRowNum = sheet.getLastRowNum();
-        deleteMergedRegions(sheet, Objects.requireNonNull(getMergedRegions(sheet, coords2Int("A" + (startRow + 1) + "~" + "R" + (endRow + 1)))));
-        for (int i = endRow; i >= startRow; i--) {
-            deleteMergedRegions(sheet, i);
-            Row row = sheet.getRow(i);
-            if (row != null) {
-                sheet.removeRow(row);
+        /* deleteMergedRegions(sheet, Objects.requireNonNull(getMergedRegions(sheet, coords2Int("A" + (startRow+1) + "~" + "R" + (endRow+1)))));*/
+        CellStyle cellStyle=  sheet.getWorkbook().createCellStyle();
+        cellStyle.setBorderBottom(BorderStyle.NONE);
+        cellStyle.setBorderTop(BorderStyle.NONE);
+        cellStyle.setBorderLeft(BorderStyle.NONE);
+        cellStyle.setBorderRight(BorderStyle.NONE);
+        for(int i=startRow;i<=endRow;i++){
+            for(Cell cell:sheet.getRow(i)){
+                cell.setCellStyle(cellStyle);
             }
+            sheet.getRow(i).setZeroHeight(true);
         }
-        /*deleteMergedRegions(sheet, Objects.requireNonNull(getMergedRegions(sheet, coords2Int("A" + (startRow+1) + "~" + "R" + (endRow+1)))));*/
-        sheet.shiftRows(endRow + 1, lastRowNum, -3);
-        System.out.println();
     }
 
     public static void deleteMergedRegions(Sheet sheet, List<CellRangeAddress> regionsToDelete) {