jinch 1 tydzień temu
rodzic
commit
f7da8b2731

+ 8 - 8
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

@@ -2722,7 +2722,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Override
     public File exportTouristList(TradeOrderPageReqVO reqVO) {
         InputStream template = getClass().getClassLoader().getResourceAsStream("templates/tourist_template_operator.xlsx");
-        return getFile(reqVO,template);
+        return getFile(reqVO,template, 0);
     }
 
     /**
@@ -2744,11 +2744,11 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
      */
     @Override
     public File exportTouristListToAgent(TradeOrderPageReqVO reqVO) {
-        InputStream template = getClass().getClassLoader().getResourceAsStream("templates/tourist_template_angent.xlsx");
-        return getFile(reqVO,template);
+        InputStream template = getClass().getClassLoader().getResourceAsStream("templates/tourist_template_agent.xlsx");
+        return getFile(reqVO,template, 1);
     }
 
-    private File getFile(TradeOrderPageReqVO reqVO,InputStream template) {
+    private File getFile(TradeOrderPageReqVO reqVO,InputStream template, int fileType) {
         // 1. 查询订单基础信息(船名、航期、航向)
         Map<String, Object> baseInfo = tradeOrderMapper.selectTouristExportBase(reqVO);
         // 查询订单表头信息
@@ -2757,16 +2757,16 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         List<TouristExportVisitorVO> visitorList = tradeVisitorMapper.selectTouristExportVisitor(reqVO);
 
         // 3. 加载Excel模板
-        String fileName = String.valueOf(System.currentTimeMillis());
-//        String tmpFile = "/tmp/" + fileName + "_tourist.xlsx";
-        String tmpFile = "D:/tmp/" + fileName + "_tourist.xlsx";
+        String fileName = String.valueOf(System.currentTimeMillis()) + fileType;
+        String tmpFile = "/tmp/" + fileName + "_tourist.xlsx";
+        //String tmpFile = "D:/tmp/" + fileName + "_tourist.xlsx";
 
         // 4. 准备ExcelWriter,注册样式处理器和合并策略
         //    - ExcelStyleHandler: 设置单元格样式
         //    - TouristListMergeStrategy: 按订单和房间自动合并单元格
         ExcelWriter excelWriter = EasyExcel.write(tmpFile).withTemplate(template).build();
         WriteSheet writeSheet = EasyExcelFactory.writerSheet()
-                .registerWriteHandler(new ExcelStyleHandler(visitorList))
+                .registerWriteHandler(new ExcelStyleHandler(visitorList, fileType))
                 /* .registerWriteHandler(new TouristListMergeStrategy(visitorList))*/
                 .build();
         FillConfig fillConfig = FillConfig.builder().forceNewRow(true).autoStyle(true).build();

+ 32 - 13
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/utils/excel/ExcelStyleHandler.java

@@ -34,9 +34,12 @@ public class ExcelStyleHandler implements CellWriteHandler {
     /** 总数据行数 */
     private int totalRows = 0;
 
+    private int fileType;
+
     /** 每行数据列数(根据实际Excel模板列数调整) */
     private static final int TOTAL_COLUMNS = 18;
 
+    private static final int TOTAL_COLUMNS2 = 16;
     /** 是否已经执行过合并 */
     private boolean mergeCompleted = false;
 
@@ -44,8 +47,9 @@ public class ExcelStyleHandler implements CellWriteHandler {
         this.templateRowIndex = templateRowIndex;
     }
 
-    public ExcelStyleHandler(List<TouristExportVisitorVO> visitorList) {
+    public ExcelStyleHandler(List<TouristExportVisitorVO> visitorList, int fileType) {
         this.visitorList = visitorList;
+        this.fileType = fileType;
         this.totalRows = visitorList != null ? visitorList.size() : 0;
     }
 
@@ -200,9 +204,14 @@ public class ExcelStyleHandler implements CellWriteHandler {
         // 统计处理的单元格数量
         processedCellCount++;
 
-        System.out.println("processedCellCount: " + processedCellCount);
+        int totalCells = 0;
         // 当最后一个单元格写入完成后,执行合并
-        int totalCells = totalRows * TOTAL_COLUMNS;
+        if(fileType == 1) {
+             totalCells = totalRows * TOTAL_COLUMNS;
+
+        } else {
+             totalCells = totalRows * TOTAL_COLUMNS2;
+        }
         if (!mergeCompleted && processedCellCount >= totalCells) {
             mergeCompleted = true;
             performMerge(context.getWriteSheetHolder().getSheet());
@@ -250,10 +259,12 @@ public class ExcelStyleHandler implements CellWriteHandler {
                 mergeCell(sheet, currentRowIndex, preRowIndex, 5, 5);
                 // 应收款列(第5列)
                 mergeCell(sheet, currentRowIndex, preRowIndex, 6, 6);
-                // 实收款列(第6列)
-                mergeCell(sheet, currentRowIndex, preRowIndex, 7, 7);
-                // 定金列(第7列)
-                mergeCell(sheet, currentRowIndex, preRowIndex, 8, 8);
+                if (fileType == 1) {
+                    // 实收款列(第6列)
+                    mergeCell(sheet, currentRowIndex, preRowIndex, 7, 7);
+                    // 定金列(第7列)
+                    mergeCell(sheet, currentRowIndex, preRowIndex, 8, 8);
+                }
             }
 
             // ===== 第8-10列(房间信息):按 roomIndexId 合并(同一订单内) =====
@@ -262,12 +273,20 @@ public class ExcelStyleHandler implements CellWriteHandler {
             if (currentRoomIndex.equals(preRoomIndex)
                     && currentVisitor.getOrderNo() != null
                     && currentVisitor.getOrderNo().equals(preVisitor.getOrderNo())) {
-                // 序号列(第8列)
-                mergeCell(sheet, currentRowIndex, preRowIndex, 9, 9);
-                // 房型列(第9列)
-                mergeCell(sheet, currentRowIndex, preRowIndex, 10, 10);
-                // 入住类型列(第10列)
-                mergeCell(sheet, currentRowIndex, preRowIndex, 11, 11);
+                if (fileType == 1) {
+                    // 序号列(第8列)
+                    mergeCell(sheet, currentRowIndex, preRowIndex, 9, 9);
+                    // 房型列(第9列)
+                    mergeCell(sheet, currentRowIndex, preRowIndex, 10, 10);
+                    // 入住类型列(第10列)
+                    mergeCell(sheet, currentRowIndex, preRowIndex, 11, 11);
+                } else {
+                    mergeCell(sheet, currentRowIndex, preRowIndex, 7, 7);
+                    // 房型列(第9列)
+                    mergeCell(sheet, currentRowIndex, preRowIndex, 8, 8);
+                    // 入住类型列(第10列)
+                    mergeCell(sheet, currentRowIndex, preRowIndex, 9, 9);
+                }
             }
         }
     }