Jelajahi Sumber

查询游客名单导出

caotao 1 Minggu lalu
induk
melakukan
c59eacf5d1

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

@@ -1700,7 +1700,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
                 List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>();
                 ShipTradeOrderCreateReqVO.OrderDetail visitorDetailId = new ShipTradeOrderCreateReqVO.OrderDetail();
-                BeanUtils.copyProperties(orderDetail, ShipTradeOrderCreateReqVO.OrderDetail.class);
+                //BeanUtils.copyProperties(orderDetail, ShipTradeOrderCreateReqVO.OrderDetail.class);
                 visitorDetailId.setPrice(tradeVistorReqVO.getActualPrice());
                 visitorDetailId.setOriginPrice(tradeVistorReqVO.getPrice());
                 visitorDetailId.setProductType(0);
@@ -2723,15 +2723,16 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     public File exportTouristList(TradeOrderPageReqVO reqVO) {
         // 1. 查询订单基础信息(船名、航期、航向)
         Map<String, Object> baseInfo = tradeOrderMapper.selectTouristExportBase(reqVO);
-
+        // 查询订单表头信息
+        Map<String, Object> headInfo = tradeOrderMapper.selectTouristExportHead(reqVO);
         // 2. 查询游客列表(包含订单、房间、游客详细信息)
         List<TouristExportVisitorVO> visitorList = tradeVisitorMapper.selectTouristExportVisitor(reqVO);
 
         // 3. 加载Excel模板
         InputStream template = getClass().getClassLoader().getResourceAsStream("templates/tourist_template.xlsx");
         String fileName = String.valueOf(System.currentTimeMillis());
-        String tmpFile = "/tmp/" + fileName + "_tourist.xlsx";
-        //String tmpFile = "D:/tmp/" + fileName + "_tourist.xlsx";
+//        String tmpFile = "/tmp/" + fileName + "_tourist.xlsx";
+        String tmpFile = "D:/tmp/" + fileName + "_tourist.xlsx";
 
         // 4. 准备ExcelWriter,注册样式处理器和合并策略
         //    - ExcelStyleHandler: 设置单元格样式
@@ -2745,10 +2746,69 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
         // 5. 准备基础信息数据(填充到Excel表头区域)
         Map<String, Object> baseData = new HashMap<>();
-
+        String personNum = "";
+        if(headInfo!=null){
+            // 总人数
+            String totalOrders = headInfo.get("totalOrders") != null ? headInfo.get("totalOrders").toString() :"0";
+            // 成人数
+            String adultNum = headInfo.get("adultNum") != null ? headInfo.get("adultNum").toString() :"0";
+            // 儿童数
+            String childBabyNum = headInfo.get("childBabyNum") != null ? headInfo.get("childBabyNum").toString() :"0";
+            // 陪同数
+            String withNum = headInfo.get("withNum") != null ? headInfo.get("withNum").toString() :"0";
+            // 领队数
+            String leaderNum = headInfo.get("leaderNum") != null ? headInfo.get("leaderNum").toString() :"0";
+            StringBuilder personNumBuilder = new StringBuilder();
+            if (StringUtils.isNotEmpty(totalOrders)) {
+                personNumBuilder.append(totalOrders);
+                if (StringUtils.isNotEmpty(adultNum) || StringUtils.isNotEmpty(childBabyNum)
+                        || StringUtils.isNotEmpty(withNum) || StringUtils.isNotEmpty(leaderNum)) {
+                    personNumBuilder.append("(");
+
+                    boolean hasContent = false;
+                    if (StringUtils.isNotEmpty(adultNum)) {
+                        personNumBuilder.append(adultNum).append(" 成人");
+                        hasContent = true;
+                    }
+                    if (StringUtils.isNotEmpty(childBabyNum)) {
+                        if (hasContent) {
+                            personNumBuilder.append("/");
+                        }
+                        personNumBuilder.append(childBabyNum).append(" 儿童");
+                        hasContent = true;
+                    }
+                    if (StringUtils.isNotEmpty(leaderNum)) {
+                        if (hasContent) {
+                            personNumBuilder.append("/");
+                        }
+                        personNumBuilder.append(leaderNum).append(" 领队");
+                        hasContent = true;
+                    }
+                    if (StringUtils.isNotEmpty(withNum)) {
+                        if (hasContent) {
+                            personNumBuilder.append("/");
+                        }
+                        personNumBuilder.append(withNum).append(" 陪同");
+                        hasContent = true;
+                    }
+                    personNumBuilder.append(")");
+                }
+            }
+            personNum = personNumBuilder.toString();
+        }
         // 船名
         baseData.put("shipName", baseInfo != null && baseInfo.get("shipName") != null ? baseInfo.get("shipName") : "");
-
+        // 人数/类型
+        baseData.put("personNum", personNum);
+        // 人数/ 国籍
+        baseData.put("nationalityStats", headInfo != null && headInfo.get("nationalityStats") != null ? headInfo.get("nationalityStats") : "");
+        // 房间总数
+        baseData.put("totalRooms", headInfo != null && headInfo.get("totalRooms") != null ? headInfo.get("totalRooms") : "");
+        // 房型合计
+        baseData.put("roomStats", headInfo != null && headInfo.get("roomStats") != null ? headInfo.get("roomStats") : "");
+        // 时间
+        LocalDateTime newDate = LocalDateTime.now();
+        baseData.put("newDate", newDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         // 航期(格式化:yyyy.M.d)
         baseData.put("travelDate", baseInfo != null && baseInfo.get("travelDate") != null
                 ? ((LocalDateTime) baseInfo.get("travelDate")).format(DateTimeFormatter.ofPattern("yyyy.M.d"))

TEMPAT SAMPAH
ship-module-trade/ship-module-trade-biz/src/main/resources/templates/tourist_template.xlsx