Browse Source

Merge branch 'main' of http://git.wisesoft.net.cn/lishiqiang/ship-ota-server

lishiqiang 2 weeks ago
parent
commit
48081e0f45
20 changed files with 412 additions and 3 deletions
  1. 8 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/VoyageStockController.java
  2. 3 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/vo/VoyageStockPageReqVO.java
  3. 29 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/vo/VoyageStockTotalVO.java
  4. 17 2
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestock/VoyageStockMapper.java
  5. 7 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestock/VoyageStockService.java
  6. 13 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestock/VoyageStockServiceImpl.java
  7. 17 0
      ship-module-product/ship-module-product-biz/src/main/resources/mapper/voyagestock/VoyageStockMapper.xml
  8. 7 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/ship/vo/ResourceShipRespVO.java
  9. 6 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/ship/vo/ResourceShipSaveReqVO.java
  10. 5 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/dataobject/ship/ResourceShipDO.java
  11. 8 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java
  12. 6 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/ShipTradeOrderCreateReqVO.java
  13. 163 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderConfirmationVO.java
  14. 28 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderDetailCountRespVO.java
  15. 3 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeVistorReqVO.java
  16. 9 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/order/TradeVisitorDO.java
  17. 3 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeDetailMapper.java
  18. 7 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/OtcTradeOrderService.java
  19. 65 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java
  20. 8 0
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeDetailMapper.xml

+ 8 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/VoyageStockController.java

@@ -87,6 +87,14 @@ public class VoyageStockController {
         return success(pageResult);
     }
 
+    @GetMapping("/total")
+    @Operation(summary = "获得航次库存合计")
+    @PreAuthorize("@ss.hasPermission('product:voyage-stock:query')")
+    public CommonResult<VoyageStockTotalVO> getVoyageStockTotal(@Valid VoyageStockPageReqVO pageReqVO) {
+        VoyageStockTotalVO totalVO = voyageStockService.getVoyageStockTotal(pageReqVO);
+        return success(totalVO);
+    }
+
     @GetMapping("/export-excel")
     @Operation(summary = "导出航次库存 Excel")
     @PreAuthorize("@ss.hasPermission('product:voyage-stock:export')")

+ 3 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/vo/VoyageStockPageReqVO.java

@@ -24,4 +24,7 @@ public class VoyageStockPageReqVO extends PageParam {
     @Schema(description = "航次ID列表", example = "1,2")
     private List<Long> voyageIds;
 
+    @Schema(description = "航次时间")
+    private String[] voyageTime;
+
 }

+ 29 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/vo/VoyageStockTotalVO.java

@@ -0,0 +1,29 @@
+package com.yc.ship.module.product.controller.admin.voyagestock.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 航次库存合计
+ *
+ * @author yc
+ * @since 2023-04-09
+ */
+@Data
+public class VoyageStockTotalVO {
+    /**
+     * 航次库存数量
+     */
+    private BigDecimal canSaleNum;
+
+    /**
+     * 航次库存预订数量
+     */
+    private BigDecimal bookNum;
+
+    /**
+     * 航次库存总数量
+     */
+    private BigDecimal totalNum;
+}

+ 17 - 2
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestock/VoyageStockMapper.java

@@ -5,6 +5,9 @@ import java.util.*;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.framework.mybatis.core.query.MPJLambdaWrapperX;
+import com.yc.ship.module.product.dal.dataobject.productBase.ProductBaseDO;
+import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
 import com.yc.ship.module.product.dal.dataobject.voyagestock.VoyageStockDO;
 import org.apache.ibatis.annotations.Mapper;
 import com.yc.ship.module.product.controller.admin.voyagestock.vo.*;
@@ -20,11 +23,21 @@ import org.apache.ibatis.annotations.Select;
 public interface VoyageStockMapper extends BaseMapperX<VoyageStockDO> {
 
     default PageResult<VoyageStockDO> selectPage(VoyageStockPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<VoyageStockDO>()
+        /*return selectPage(reqVO, new LambdaQueryWrapperX<VoyageStockDO>()
                 .likeIfPresent(VoyageStockDO::getVoyageName, reqVO.getVoyageName())
                 .eqIfPresent(VoyageStockDO::getShipId, reqVO.getShipId())
                 .inIfPresent(VoyageStockDO::getVoyageId, reqVO.getVoyageIds())
-                .orderByAsc(VoyageStockDO::getVoyageId));
+                .betweenIfPresent(VoyageStockDO::getCreateTime, reqVO.getVoyageTime()[0], reqVO.getVoyageTime()[1]+" 23:59:59")
+                .orderByAsc(VoyageStockDO::getVoyageId));*/
+        MPJLambdaWrapperX<VoyageStockDO> wrapperX = new MPJLambdaWrapperX<>();
+        wrapperX.selectAll(VoyageStockDO.class);
+        wrapperX.leftJoin(VoyageDO.class, VoyageDO::getId, VoyageStockDO::getVoyageId);
+        wrapperX.likeIfPresent(VoyageStockDO::getVoyageName, reqVO.getVoyageName())
+                .eqIfPresent(VoyageStockDO::getShipId, reqVO.getShipId())
+                .inIfPresent(VoyageStockDO::getVoyageId, reqVO.getVoyageIds())
+                .betweenIfPresent(VoyageDO::getStartTime, reqVO.getVoyageTime()[0], reqVO.getVoyageTime()[1])
+                .orderByDesc(VoyageStockDO::getVoyageId);
+        return selectJoinPage(reqVO, VoyageStockDO.class, wrapperX);
     }
 
     default void deleteByVoyageId(Long id) {
@@ -43,4 +56,6 @@ public interface VoyageStockMapper extends BaseMapperX<VoyageStockDO> {
      * @return
      */
     List<Long> selectNoShelfdNumVoyageIdsByVoyageIds(@Param("voyageIds") List<Long> voyageIds);
+
+    VoyageStockTotalVO selectTotal(@Param("pageReqVO") VoyageStockPageReqVO pageReqVO);
 }

+ 7 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestock/VoyageStockService.java

@@ -49,5 +49,11 @@ public interface VoyageStockService {
      * @return 航次库存分页
      */
     PageResult<VoyageStockRespVO> getVoyageStockPage(VoyageStockPageReqVO pageReqVO);
-
+    /**
+     * 获得航次库存统计
+     *
+     * @param pageReqVO 分页查询
+     * @return 航次库存统计
+     */
+    VoyageStockTotalVO getVoyageStockTotal(VoyageStockPageReqVO pageReqVO);
 }

+ 13 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestock/VoyageStockServiceImpl.java

@@ -69,6 +69,10 @@ public class VoyageStockServiceImpl implements VoyageStockService {
 
     @Override
     public PageResult<VoyageStockRespVO> getVoyageStockPage(VoyageStockPageReqVO pageReqVO) {
+        String[] voyageTime = pageReqVO.getVoyageTime();
+        if(voyageTime == null && voyageTime.length > 0) {
+            voyageTime[1] += " 23:59:59";
+        }
         PageResult<VoyageStockDO> pageResult = voyageStockMapper.selectPage(pageReqVO);
         PageResult<VoyageStockRespVO> page = BeanUtils.toBean(pageResult, VoyageStockRespVO.class);
         List<VoyageStockRespVO> list = page.getList();
@@ -80,4 +84,13 @@ public class VoyageStockServiceImpl implements VoyageStockService {
         return page;
     }
 
+    @Override
+    public VoyageStockTotalVO getVoyageStockTotal(VoyageStockPageReqVO pageReqVO) {
+        String[] voyageTime = pageReqVO.getVoyageTime();
+        if(voyageTime != null && voyageTime.length > 0) {
+            voyageTime[1] += " 23:59:59";
+        }
+        return voyageStockMapper.selectTotal(pageReqVO);
+    }
+
 }

+ 17 - 0
ship-module-product/ship-module-product-biz/src/main/resources/mapper/voyagestock/VoyageStockMapper.xml

@@ -18,4 +18,21 @@
             #{item}
          </foreach>
     </select>
+    <select id="selectTotal"
+            resultType="com.yc.ship.module.product.controller.admin.voyagestock.vo.VoyageStockTotalVO">
+        select sum(t1.total_num) total_num, sum(t1.can_sell_num) can_sale_num, sum(t1.book_num) book_num from product_voyage_stock t1 LEFT JOIN product_voyage t2 on t1.voyage_id = t2.id
+        where 1=1
+              <if test="pageReqVO.shipId != null">
+                  and t1.ship_id = #{pageReqVO.shipId}
+              </if>
+              <if test="pageReqVO.voyageIds != null">
+                  and t1.voyage_id in
+                  <foreach item="item" collection="pageReqVO.voyageIds" open="(" separator="," close=")">
+                      #{item}
+                  </foreach>
+              </if>
+          <if test="pageReqVO.voyageTime != null">
+              and t2.start_time BETWEEN #{pageReqVO.voyageTime[0]} and #{pageReqVO.voyageTime[1]}
+          </if>
+    </select>
 </mapper>

+ 7 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/ship/vo/ResourceShipRespVO.java

@@ -22,6 +22,13 @@ public class ResourceShipRespVO {
     @ExcelProperty("游轮名称")
     private String name;
 
+    /**
+     * 游轮英文名称
+     */
+    @Schema(description = "游轮英文名称")
+    @ExcelProperty("游轮英文名称")
+    private String nameEn;
+
     @Schema(description = "游轮简称")
     private String shortName;
 

+ 6 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/ship/vo/ResourceShipSaveReqVO.java

@@ -15,6 +15,12 @@ public class ResourceShipSaveReqVO {
     @Schema(description = "游轮名称", example = "王五")
     private String name;
 
+    /**
+     * 游轮英文名称
+     */
+    @Schema(description = "游轮英文名称")
+    private String nameEn;
+
     @Schema(description = "游轮简称", example = "王五")
     private String shortName;
 

+ 5 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/dataobject/ship/ResourceShipDO.java

@@ -33,6 +33,11 @@ public class ResourceShipDO extends TenantBaseDO {
      */
     private String name;
 
+    /**
+     * 游轮英文名称
+     */
+    private String nameEn;
+
     /**
      * 游轮简称
      */

+ 8 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java

@@ -321,6 +321,14 @@ public class OtcTradeOrderController {
         return success(otcTradeOrderService.getOrderInfoNew(id));
     }
 
+    @GetMapping("/window/orderConfirmation")
+    @OperateLog(type = API)
+    @Operation(summary = "win-订单确认单", description = "根据订单id查询订单确认单")
+    @PlatTenantEnv
+    public CommonResult<TradeOrderConfirmationVO> getOrderConfirmation(@Valid @RequestParam("id") Long id) {
+        return success(otcTradeOrderService.getOrderConfirmation(id));
+    }
+
     @PostMapping("/travl/refund")
     @Operation(summary = "win-旅行社退款")
     @OperateLog(type = TRADE)

+ 6 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/ShipTradeOrderCreateReqVO.java

@@ -281,12 +281,18 @@ public class ShipTradeOrderCreateReqVO implements Serializable {
         @Schema(description = "年龄")
         private Integer age;
 
+        @Schema(description = "性别 0:未知 1:男 2:女", example = "")
+        private Integer gender;
+
         @Schema(description = "是否重庆中转 0:否 1是")
         private Integer cqzz;
 
         @Schema(description = "是否宜昌中转 0:否 1是")
         private Integer yczz;
 
+        @Schema(description = "生日", example = "")
+        private String bithday;
+
         @Schema(description = "证件号", example = "")
         private String credentialNo;
 

+ 163 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderConfirmationVO.java

@@ -0,0 +1,163 @@
+package com.yc.ship.module.trade.controller.admin.order.vo.order;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yc.ship.framework.excel.core.annotations.DictFormat;
+import com.yc.ship.framework.excel.core.convert.DictConvert;
+import com.yc.ship.module.product.controller.admin.voyage.vo.VoyageRespVO;
+import com.yc.ship.module.resource.dal.dataobject.route.ResourceRouteDO;
+import com.yc.ship.module.trade.dal.dataobject.contract.ContractDO;
+import com.yc.ship.module.trade.dal.dataobject.insurance.InsuranceDO;
+import com.yc.ship.module.trade.dal.dataobject.order.TradeVisitorDO;
+import com.yc.ship.module.trade.dal.dataobject.orderjz.OrderJzDO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static com.yc.ship.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+import static com.yc.ship.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
+
+/**
+ * 订单确认信息
+ * @author yucheng
+ * @date 2021/8/13 21:05
+ */
+@Data
+public class TradeOrderConfirmationVO {
+
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "10096")
+    private Long id;
+
+    @Schema(description = "订单号")
+    @ExcelProperty("订单号")
+    private String orderNo;
+
+    @Schema(description = "团号")
+    @ExcelProperty("团号")
+    private String groupNo;
+
+    @Schema(description = "联系人")
+    @ExcelProperty("联系人")
+    private String linkMan;
+
+    @Schema(description = "联系人手机号")
+    @ExcelProperty("联系人手机号")
+    private String linkMobile;
+
+    @Schema(description = "订单状态", example = "1")
+    private Integer orderStatus;
+
+    @Schema(description = "支付状态", example = "1")
+    private Integer payStatus;
+
+    @Schema(description = "支付方式", example = "2")
+    @ExcelProperty(value = "支付方式", converter = DictConvert.class)
+    @DictFormat("payment_type")
+    private Integer paymentType;
+
+    @Schema(description = "支付方式", example = "2")
+    private String paymentTypeName;
+
+    @Schema(description = "支付时间")
+//    @ExcelProperty("支付时间")
+    @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
+    private LocalDateTime paymentDate;
+
+    @Schema(description = "备注")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "销售来源", example = "31758")
+    private String sourceId;
+
+    @Schema(description = "来源名称", example = "张三")
+    @ExcelProperty("来源名称")
+    private String sourceName;
+
+    @Schema(description = "国籍数据")
+    private List<TradeOrderCountryBaseVO> countryList;
+
+    @Schema(description = "人员数据统计")
+    private String personStat;
+
+    @Schema(description = "订单汇总信息")
+    private TradeOrderTotalVO summary;
+
+    @Schema(description = "游轮ID")
+    private Long shipId;
+
+    @Schema(description = "游轮名称")
+    private String shipName;
+
+    @Schema(description = "游轮英文名称")
+    private String shipNameEn;
+
+    @Schema(description = "航次ID")
+    private Long voyageId;
+
+    @Schema(description = "游轮航次信息")
+    private VoyageRespVO voyage;
+    private ResourceRouteDO resourceRouteDO;
+
+    @Schema(description = "创建者")
+    private Long creator;
+
+    @Schema(description = "创建者名称")
+    private String creatorName;
+
+    /**
+     * 订单金额
+     */
+    private BigDecimal amount;
+    /**
+     * 支付金额
+     */
+    private BigDecimal payAmount;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+    @Schema(description = "联系人姓名")
+    @ExcelProperty("联系人姓名")
+    private String contactName;
+
+    @Schema(description = "手机号")
+    @ExcelProperty("手机号")
+    private String mobile;
+
+    @Schema(description = "门店ID")
+    private Long storeId;
+
+    @Schema(description = "门店名称")
+    @ExcelProperty("门店名称")
+    private String storeName;
+
+    @Schema(description = "开票标识:0-未开票,1-开票成功,2-开票失败,3-已开票")
+    private Integer isInvoice;
+
+    @Schema(description = "发票下载")
+    private String invoiceUrl;
+
+    @Schema(description = "保险")
+    private List<InsuranceDO> insuranceList;
+
+    @Schema(description = "合同")
+    private List<ContractDO> contractList;
+
+    @Schema(description = "附件产品数据")
+    private List<TradeOrderDetailCountRespVO> spuList;
+
+    @Schema(description = "游客信息")
+    private List<TradeVisitorDO> tradeVisitorList;
+
+    @Schema(description = "接站信息")
+    private OrderJzDO orderJz;
+
+}

+ 28 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderDetailCountRespVO.java

@@ -0,0 +1,28 @@
+package com.yc.ship.module.trade.controller.admin.order.vo.order;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 附加产品列表
+ */
+@Data
+public class TradeOrderDetailCountRespVO {
+
+    @Schema(description = "产品ID")
+    private Long productId;
+
+    @Schema(description = "产品名称")
+    private String productName;
+
+    @Schema(description = "价格")
+    private BigDecimal price;
+
+    @Schema(description = "数量")
+    private Integer quantity;
+
+    @Schema(description = "产品类型,1:附加产品,2:赠送票")
+    private Integer productType;
+}

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeVistorReqVO.java

@@ -23,6 +23,9 @@ public class TradeVistorReqVO {
 
     @Schema(description = "证件号")
     private String cardNo;
+
+    @Schema(description = "出生日期")
+    private String birthday;
     /**
      * 证件类型
      * 关联 {@link CredentialTypeEnum}

+ 9 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/order/TradeVisitorDO.java

@@ -60,6 +60,11 @@ public class TradeVisitorDO extends TenantBaseDO {
      */
     @Schema(description = "国籍")
     private String nationality;
+
+    @Schema(description = "生日")
+    private String birthday;
+
+
     /**
      * 证件类型
      * 关联 {@link CredentialTypeEnum}
@@ -108,4 +113,8 @@ public class TradeVisitorDO extends TenantBaseDO {
     private String jzCard;
     @TableField(exist = false)
     private String jzAddress;
+
+    @Schema(description = "国籍名称")
+    @TableField(exist = false)
+    private String nationalityName;
 }

+ 3 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeDetailMapper.java

@@ -10,6 +10,7 @@ import com.yc.ship.module.trade.api.sms.dto.SmsSendLogDTO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.OtaTradeLogPageReqVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.OtaTradeLogRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeDetailRespVO;
+import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderDetailCountRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundDetailRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.rule.*;
 import com.yc.ship.module.trade.controller.admin.smsSendconfig.vo.SmsSendconfigQueryRespVO;
@@ -191,4 +192,6 @@ public interface TradeDetailMapper extends BaseMapperX<TradeDetailDO> {
 
     @TenantIgnore
     int getMaxOrderNo(@Param("voyageId") Long voyageId);
+
+    List<TradeOrderDetailCountRespVO> getOrderIdDetailCount(@Param("orderId") Long orderId);
 }

+ 7 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/OtcTradeOrderService.java

@@ -155,4 +155,11 @@ public interface OtcTradeOrderService {
     CommonResult<?> regionStatic(TradeStaticReqVO reqVO);
 
     CommonResult<?> getOrderById(Long orderId);
+
+    /**
+     * 获取订单确认单信息
+     * @param id
+     * @return
+     */
+    TradeOrderConfirmationVO getOrderConfirmation(Long id);
 }

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

@@ -2312,6 +2312,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         visitor.setCqzz(tradeVistorReqVO.getChongqing());
         visitor.setRoomId(tradeVistorReqVO.getRoomId());
         visitor.setNationality(tradeVistorReqVO.getNationality());
+        visitor.setGender(tradeVistorReqVO.getSex());
+        visitor.setBithday(tradeVistorReqVO.getBirthday());
         return visitor;
     }
 
@@ -2655,6 +2657,69 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
         return CommonResult.success(tradeOrderVO);
     }
 
+    @Override
+    public TradeOrderConfirmationVO getOrderConfirmation(Long id) {
+        TradeOrderDO tradeOrderDO = tradeOrderMapper.selectById(id);
+        TradeOrderConfirmationVO orderRespNewVO = BeanUtils.toBean(tradeOrderDO, TradeOrderConfirmationVO.class);
+
+        //设置订单登记人姓名
+        AdminUserRespDTO user = adminUserApi.getUser(orderRespNewVO.getCreator());
+        orderRespNewVO.setCreatorName(user.getNickname());
+        //设置房型数据
+        List<TradeOrderRoomModelDO> roomModelDOS = tradeOrderRoomModelMapper.selectListByOrderId(id);
+        List<TradeOrderRoomModelBaseVO> roomModelList = BeanUtils.toBean(roomModelDOS, TradeOrderRoomModelBaseVO.class);
+        Map<Long, List<TradeOrderRoomModelBaseVO>> roomModelMap = CollectionUtils.convertMultiMap(roomModelList, TradeOrderRoomModelBaseVO::getCountryId);
+        //设置国籍数据
+        List<TradeOrderCountryDO> countryDOS = tradeOrderCountryMapper.selectListByOrderId(id);
+        List<TradeOrderCountryBaseVO> countryList = BeanUtils.toBean(countryDOS, TradeOrderCountryBaseVO.class);
+        countryList.forEach(item -> {
+            item.setCountryName(AreaUtils.format2Str(item.getCountryId()));
+            item.setRoomModelList(roomModelMap.get(item.getId()));
+        });
+        orderRespNewVO.setCountryList(countryList);
+
+
+        if (tradeOrderDO.getPayStatus() == 0) {
+            tradeOrderDO.setPayAmount(BigDecimal.ZERO);
+        }
+        //发票地址
+        if (tradeOrderDO.getIsInvoice() != null && tradeOrderDO.getIsInvoice() == 1) {
+            List<InvoiceDO> list = invoiceService.queryInvoiceOrder(tradeOrderDO.getOrderNo());
+            if (list != null && !list.isEmpty()) {
+                orderRespNewVO.setInvoiceUrl(list.get(0).getCUrl());
+            }
+        }
+        //获取订单门票信息
+        List<TradeOrderDetailCountRespVO> detailList = tradeDetailMapper.getOrderIdDetailCount(tradeOrderDO.getId());
+        orderRespNewVO.setSpuList(detailList);
+
+        List<TradeVisitorDO> visitorDOList = tradeVisitorMapper.selectShipVisitor(tradeOrderDO.getId());
+        visitorDOList.stream().forEach(item -> {
+            if(StringUtils.isNotBlank(item.getNationality())) {
+                item.setNationalityName(AreaUtils.format2Str(Integer.valueOf(item.getNationality())));
+            }
+        });
+        orderRespNewVO.setTradeVisitorList(visitorDOList);
+
+        //设置订单汇总数据
+        TradeOrderTotalDO tradeOrderTotalDO = tradeOrderTotalMapper.selectOne(TradeOrderTotalDO::getOrderId, id);
+        TradeOrderTotalVO summary = BeanUtils.toBean(tradeOrderTotalDO, TradeOrderTotalVO.class);
+        orderRespNewVO.setSummary(summary);
+
+        //设置游轮航次信息
+        VoyageDO voyageDO = voyageService.getVoyage(tradeOrderDO.getVoyageId());
+        orderRespNewVO.setVoyage(BeanUtils.toBean(voyageDO, VoyageRespVO.class));
+        ResourceRouteDO resourceRouteDO = resourceRouteMapper.selectById(voyageDO.getRouteId());
+        orderRespNewVO.setResourceRouteDO(resourceRouteDO);
+        //设置游轮名称
+        ResourceShipDO ship = shipService.getShip(tradeOrderDO.getShipId());
+        orderRespNewVO.setShipName(ship.getName());
+        orderRespNewVO.setShipNameEn(ship.getNameEn());
+        OrderJzDO orderJzDO = orderJzMapper.selectOne(OrderJzDO::getOrderId, orderRespNewVO.getId());
+        orderRespNewVO.setOrderJz(orderJzDO);
+        return orderRespNewVO;
+    }
+
     private void markChangeOrder(Long orderId) {
         String key = String.format(KEY_MARK_CHANGE_ORDER, orderId);
         stringRedisTemplate.opsForValue().set(key, orderId.toString(), 60, TimeUnit.MINUTES);

+ 8 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeDetailMapper.xml

@@ -1353,4 +1353,12 @@
             AND tf.refund_id = #{refundId}
         </if>
     </select>
+    <select id="getOrderIdDetailCount"
+            resultType="com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderDetailCountRespVO">
+        select product_id, product_name, price, count(1) quantity, product_type
+        from trade_detail
+        WHERE deleted = 0 and (product_type = 2 or product_type = 1) and order_id = #{orderId}
+        GROUP BY product_type, product_id
+        order by product_type asc
+    </select>
 </mapper>