|
@@ -1700,7 +1700,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
|
|
for (TradeVistorReqVO tradeVistorReqVO : createVO.getTourist()) {
|
|
|
List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>();
|
|
List<ShipTradeOrderCreateReqVO.Visitor> visitorList = new ArrayList<>();
|
|
|
ShipTradeOrderCreateReqVO.OrderDetail visitorDetailId = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
ShipTradeOrderCreateReqVO.OrderDetail visitorDetailId = new ShipTradeOrderCreateReqVO.OrderDetail();
|
|
|
- BeanUtils.copyProperties(orderDetail, ShipTradeOrderCreateReqVO.OrderDetail.class);
|
|
|
|
|
|
|
+ //BeanUtils.copyProperties(orderDetail, ShipTradeOrderCreateReqVO.OrderDetail.class);
|
|
|
visitorDetailId.setPrice(tradeVistorReqVO.getActualPrice());
|
|
visitorDetailId.setPrice(tradeVistorReqVO.getActualPrice());
|
|
|
visitorDetailId.setOriginPrice(tradeVistorReqVO.getPrice());
|
|
visitorDetailId.setOriginPrice(tradeVistorReqVO.getPrice());
|
|
|
visitorDetailId.setProductType(0);
|
|
visitorDetailId.setProductType(0);
|
|
@@ -2723,15 +2723,16 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
public File exportTouristList(TradeOrderPageReqVO reqVO) {
|
|
public File exportTouristList(TradeOrderPageReqVO reqVO) {
|
|
|
// 1. 查询订单基础信息(船名、航期、航向)
|
|
// 1. 查询订单基础信息(船名、航期、航向)
|
|
|
Map<String, Object> baseInfo = tradeOrderMapper.selectTouristExportBase(reqVO);
|
|
Map<String, Object> baseInfo = tradeOrderMapper.selectTouristExportBase(reqVO);
|
|
|
-
|
|
|
|
|
|
|
+ // 查询订单表头信息
|
|
|
|
|
+ Map<String, Object> headInfo = tradeOrderMapper.selectTouristExportHead(reqVO);
|
|
|
// 2. 查询游客列表(包含订单、房间、游客详细信息)
|
|
// 2. 查询游客列表(包含订单、房间、游客详细信息)
|
|
|
List<TouristExportVisitorVO> visitorList = tradeVisitorMapper.selectTouristExportVisitor(reqVO);
|
|
List<TouristExportVisitorVO> visitorList = tradeVisitorMapper.selectTouristExportVisitor(reqVO);
|
|
|
|
|
|
|
|
// 3. 加载Excel模板
|
|
// 3. 加载Excel模板
|
|
|
InputStream template = getClass().getClassLoader().getResourceAsStream("templates/tourist_template.xlsx");
|
|
InputStream template = getClass().getClassLoader().getResourceAsStream("templates/tourist_template.xlsx");
|
|
|
String fileName = String.valueOf(System.currentTimeMillis());
|
|
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,注册样式处理器和合并策略
|
|
// 4. 准备ExcelWriter,注册样式处理器和合并策略
|
|
|
// - ExcelStyleHandler: 设置单元格样式
|
|
// - ExcelStyleHandler: 设置单元格样式
|
|
@@ -2745,10 +2746,69 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
|
|
|
|
|
// 5. 准备基础信息数据(填充到Excel表头区域)
|
|
// 5. 准备基础信息数据(填充到Excel表头区域)
|
|
|
Map<String, Object> baseData = new HashMap<>();
|
|
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("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)
|
|
// 航期(格式化:yyyy.M.d)
|
|
|
baseData.put("travelDate", baseInfo != null && baseInfo.get("travelDate") != null
|
|
baseData.put("travelDate", baseInfo != null && baseInfo.get("travelDate") != null
|
|
|
? ((LocalDateTime) baseInfo.get("travelDate")).format(DateTimeFormatter.ofPattern("yyyy.M.d"))
|
|
? ((LocalDateTime) baseInfo.get("travelDate")).format(DateTimeFormatter.ofPattern("yyyy.M.d"))
|