Sfoglia il codice sorgente

fix: 添加预订单导出页面的接口

luofeiyun 2 settimane fa
parent
commit
b331b07bd1
11 ha cambiato i file con 297 aggiunte e 0 eliminazioni
  1. 7 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/ship/vo/ResourceShipRespVO.java
  2. 6 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/controller/admin/ship/vo/ResourceShipSaveReqVO.java
  3. 5 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/dataobject/ship/ResourceShipDO.java
  4. 8 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java
  5. 157 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderConfirmationVO.java
  6. 28 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderDetailCountRespVO.java
  7. 9 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/order/TradeVisitorDO.java
  8. 3 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeDetailMapper.java
  9. 7 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/OtcTradeOrderService.java
  10. 59 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java
  11. 8 0
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeDetailMapper.xml

+ 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)

+ 157 - 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,157 @@
+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;
+
+    /**
+     * 订单金额
+     */
+    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;
+}

+ 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);
 }

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

@@ -2655,6 +2655,65 @@ 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);
+        //设置房型数据
+        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>