Browse Source

fix:完成平台端的订单列表

luofeiyun 1 week ago
parent
commit
c4abd69e7b
11 changed files with 203 additions and 8 deletions
  1. 59 2
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java
  2. 6 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderCountryBaseVO.java
  3. 76 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderRespNewVO.java
  4. 1 1
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderRespVO.java
  5. 13 4
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/order/TradeOrderDO.java
  6. 8 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderCountryMapper.java
  7. 7 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderTotalMapper.java
  8. 10 1
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderCountryService.java
  9. 5 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderTotalService.java
  10. 11 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderCountryServiceImpl.java
  11. 7 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderTotalServiceImpl.java

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

@@ -7,14 +7,22 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.fastjson.JSON;
 import com.yc.ship.framework.common.pojo.CommonResult;
 import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.util.collection.CollectionUtils;
 import com.yc.ship.framework.common.util.object.BeanUtils;
 import com.yc.ship.framework.dict.core.DictFrameworkUtils;
 import com.yc.ship.framework.excel.core.annotations.DictFormat;
 import com.yc.ship.framework.excel.core.util.ExcelUtils;
+import com.yc.ship.framework.ip.core.utils.AreaUtils;
 import com.yc.ship.framework.operatelog.core.annotations.OperateLog;
 import com.yc.ship.module.otc.api.agency.dto.CooperateRespDTO;
 import com.yc.ship.module.product.api.dto.CategoryRespDTO;
 import com.yc.ship.module.product.api.dto.ProductSpuRespDTO;
+import com.yc.ship.module.product.controller.admin.voyage.vo.VoyageRespVO;
+import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
+import com.yc.ship.module.product.service.voyage.VoyageService;
+import com.yc.ship.module.resource.api.ship.ShipApi;
+import com.yc.ship.module.resource.api.ship.dto.ShipRespDTO;
+import com.yc.ship.module.resource.dal.dataobject.ship.ResourceShipDO;
 import com.yc.ship.module.trade.api.contract.dto.group.WindowCreateOrderGroup;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
 import com.yc.ship.module.trade.controller.admin.order.vo.otc.PrintRespVO;
@@ -26,13 +34,17 @@ import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeSuppTicketOrderVO;
 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.TradeDetailBaseDO;
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderCountryDO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderTotalDO;
 import com.yc.ship.module.trade.framework.annotation.PlatTenantEnv;
 import com.yc.ship.module.trade.framework.annotation.RequestDecryption;
 import com.yc.ship.module.trade.framework.annotation.TradeRateLimit;
 import com.yc.ship.module.trade.framework.common.ExceptionUtils;
 import com.yc.ship.module.trade.service.order.AdminTradeOrderService;
+import com.yc.ship.module.trade.service.order.TradeOrderCountryService;
 import com.yc.ship.module.trade.service.order.TradeOrderService;
+import com.yc.ship.module.trade.service.order.TradeOrderTotalService;
 import com.yc.ship.module.trade.service.otc.AppOtcTradeOrderService;
 import com.yc.ship.module.trade.service.otc.OtcTradeOrderService;
 import com.yc.ship.module.trade.utils.AgencyAuthUtils;
@@ -80,6 +92,18 @@ public class OtcTradeOrderController {
     @Resource
     private TradeOrderService tradeOrderService;
 
+    @Resource
+    private TradeOrderTotalService tradeOrderTotalService;
+
+    @Resource
+    private TradeOrderCountryService tradeOrderCountryService;
+
+    @Resource
+    private VoyageService  voyageService;
+
+    @Resource
+    private ShipApi shipApi;
+
     @RequestDecryption
     @PostMapping("/window/createOrder")
     @Operation(summary = "win-窗口创建订单(内部)")
@@ -194,9 +218,42 @@ public class OtcTradeOrderController {
     @OperateLog(type = API)
     @Operation(summary = "win-平台订单列表[分页]", description = "根据条件查询订单列表")
     @PlatTenantEnv
-    public CommonResult<PageResult<TradeOrderRespVO>> getTradeOrderPage(@Valid @RequestBody TradeOrderPageReqVO pageReqVO) {
+    public CommonResult<PageResult<TradeOrderRespNewVO>> getTradeOrderPage(@Valid @RequestBody TradeOrderPageReqVO pageReqVO) {
         PageResult<TradeOrderDO> platOrderPage = tradeOrderService.getPlatOrderPage(pageReqVO);
-        PageResult<TradeOrderRespVO> page = BeanUtils.toBean(platOrderPage, TradeOrderRespVO.class);
+        PageResult<TradeOrderRespNewVO> page = BeanUtils.toBean(platOrderPage, TradeOrderRespNewVO.class);
+        List<TradeOrderRespNewVO> list = page.getList();
+        //处理游轮名称
+        List<Long> shipIds = CollectionUtils.convertList(list, TradeOrderRespNewVO::getShipId);
+        Map<Long, ShipRespDTO> shipMap = shipApi.queryShip(shipIds);
+
+        //国籍数据
+        List<Long> orderIds = CollectionUtils.convertList(list, TradeOrderRespNewVO::getId);
+        List<TradeOrderCountryDO> countryList = tradeOrderCountryService.getListByOrderIds(orderIds);
+        List<TradeOrderCountryBaseVO> countRespVOList = BeanUtils.toBean(countryList, TradeOrderCountryBaseVO.class);
+        countRespVOList.stream().forEach(item -> {
+            item.setCountryName(AreaUtils.format2Str(item.getCountryId()));
+        });
+        Map<Long, List<TradeOrderCountryBaseVO>> countryMap = CollectionUtils.convertMultiMap(countRespVOList, TradeOrderCountryBaseVO::getOrderId);
+
+        //订单汇总数据
+        List<TradeOrderTotalDO> tradeOrderTotalDOList = tradeOrderTotalService.getByOrderIds(orderIds);
+        List<TradeOrderTotalVO> tradeOrderTotalVOS = BeanUtils.toBean(tradeOrderTotalDOList, TradeOrderTotalVO.class);
+        Map<Long, TradeOrderTotalVO> orderTotalVOMap = CollectionUtils.convertMap(tradeOrderTotalVOS, TradeOrderTotalVO::getOrderId);
+
+        //航次信息
+        List<Long> voyageIds = CollectionUtils.convertList(list, TradeOrderRespNewVO::getVoyageId);
+        List<VoyageDO> voyageList = voyageService.getList(voyageIds);
+        List<VoyageRespVO> voyageRespVOS = BeanUtils.toBean(voyageList, VoyageRespVO.class);
+        Map<Long, VoyageRespVO> voyageRespVOMap = CollectionUtils.convertMap(voyageRespVOS, VoyageRespVO::getId);
+
+        list.stream().forEach(item -> {
+            item.setShipName(shipMap.get(item.getShipId()).getName());
+            item.setCountryList(countryMap.get(item.getId()));
+            TradeOrderTotalVO totalVO = orderTotalVOMap.get(item.getId());
+            item.setSummary(totalVO);
+            item.setPersonStat(totalVO.getAdultTotalNum()+"大"+(totalVO.getChildTotalNum()+totalVO.getBabyTotalNum())+"小");
+            item.setVoyage(voyageRespVOMap.get(item.getVoyageId()));
+        });
         return success(page);
     }
 

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

@@ -24,6 +24,12 @@ public class TradeOrderCountryBaseVO {
      */
     @Schema(description = "国家ID", example = "")
     private Integer countryId;
+
+    /**
+     * 国家名称
+     */
+    @Schema(description = "国家名称", example = "")
+    private String countryName;
     /**
      * 成人数
      */

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

@@ -0,0 +1,76 @@
+package com.yc.ship.module.trade.controller.admin.order.vo.order;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+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.member.api.address.dto.MemberAddressRespDTO;
+import com.yc.ship.module.product.api.dto.ProductSaleRuleRespDTO;
+import com.yc.ship.module.product.api.dto.ProductSpuRespDTO;
+import com.yc.ship.module.product.controller.admin.voyage.vo.VoyageRespVO;
+import com.yc.ship.module.trade.api.dto.TradeOrderPayDTO;
+import com.yc.ship.module.trade.controller.admin.order.vo.market.MarketingRespVO;
+import com.yc.ship.module.trade.controller.admin.order.vo.market.RuleSpecNum;
+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.TradeOrderDeliveryVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static com.yc.ship.framework.common.util.date.DateUtils.*;
+
+@Schema(description = "管理后台 - 交易订单 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class TradeOrderRespNewVO {
+
+    @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 = "订单状态", example = "1")
+    private Integer orderStatus;
+
+    @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 = "航次ID")
+    private Long voyageId;
+
+    @Schema(description = "游轮航次信息")
+    private VoyageRespVO voyage;
+
+
+}

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderRespVO.java

@@ -483,7 +483,7 @@ public class TradeOrderRespVO {
      * 币种
      */
     @Schema(description = "币种")
-    private Integer currency;
+    private String currency;
 
 
 }

+ 13 - 4
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/order/TradeOrderDO.java

@@ -1,9 +1,6 @@
 package com.yc.ship.module.trade.dal.dataobject.order;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.KeySequence;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 
 import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
 import com.yc.ship.module.trade.enums.SellMethodEnum;
@@ -46,10 +43,12 @@ public class TradeOrderDO extends TenantBaseDO {
     /**
      * 第三方原始订单号,内部旅行社下单
      */
+    @TableField(exist = false)
     private String externalOriginOrderNo;
     /**
      * 时间方案
      */
+    @TableField(exist = false)
     private Long routePlanId;
     /**
      * 游客类型
@@ -134,11 +133,13 @@ public class TradeOrderDO extends TenantBaseDO {
     /**
      * 关联标识 0主订单 1被关联订单
      */
+    @TableField(exist = false)
     private Integer isBind;
 
     /**
      * 改签订单标识 0老订单 1新订单
      */
+    @TableField(exist = false)
     private Integer isChangeOrder;
 
 
@@ -150,11 +151,13 @@ public class TradeOrderDO extends TenantBaseDO {
     /**
      * 转交分销商的分销商ID
      */
+    @TableField(exist = false)
     private Long transDistributorId;
 
     /**
      * 转交金额
      */
+    @TableField(exist = false)
     private BigDecimal transAmount;
 
     /**
@@ -165,16 +168,19 @@ public class TradeOrderDO extends TenantBaseDO {
     /**
      * 计调状态 0待出票 1部分出票 2全部出票
      */
+    @TableField(exist = false)
     private Integer dispatchStatus;
 
     /**
      * 是否为定向库存订单 0共享 1定向
      */
+    @TableField(exist = false)
     private Integer isDirect;
 
     /**
      * 区域经理
      */
+    @TableField(exist = false)
     private Long areaManagerId;
     /**
      * 是否评论
@@ -200,6 +206,7 @@ public class TradeOrderDO extends TenantBaseDO {
     /**
      * 是否为增加订单
      */
+    @TableField(exist = false)
     private Integer isAddOrder;
 
     /**
@@ -215,11 +222,13 @@ public class TradeOrderDO extends TenantBaseDO {
     /**
      * 平台结算金额,扣除退票金额
      */
+    @TableField(exist = false)
     private BigDecimal platAmount;
 
     /**
      * 是否需要确认0无需确认 1未确认 2已确认 3取消
      */
+    @TableField(exist = false)
     private Integer confirmType;
 
     /**

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

@@ -1,9 +1,13 @@
 package com.yc.ship.module.trade.dal.mysql.order;
 
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.yc.ship.module.trade.controller.admin.order.vo.order.TradeOrderCountryBaseVO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderCountryDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * 订单关联国籍数据 Mapper
  *
@@ -13,4 +17,8 @@ import org.apache.ibatis.annotations.Mapper;
 public interface TradeOrderCountryMapper extends BaseMapperX<TradeOrderCountryDO> {
 
 
+    default List<TradeOrderCountryDO> selectListByOrderIds(List<Long> orderIds) {
+        return selectList(new LambdaQueryWrapperX<TradeOrderCountryDO>()
+                .in(TradeOrderCountryDO::getOrderId, orderIds));
+    }
 }

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

@@ -1,9 +1,12 @@
 package com.yc.ship.module.trade.dal.mysql.order;
 
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderTotalDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * 订单汇总 Mapper
  *
@@ -12,4 +15,8 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface TradeOrderTotalMapper extends BaseMapperX<TradeOrderTotalDO> {
 
+    default List<TradeOrderTotalDO> selectListByOrderIds(List<Long> orderIds) {
+        return selectList(new LambdaQueryWrapperX<TradeOrderTotalDO>()
+                .inIfPresent(TradeOrderTotalDO::getOrderId, orderIds));
+    }
 }

+ 10 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderCountryService.java

@@ -1,6 +1,10 @@
 package com.yc.ship.module.trade.service.order;
 
 
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderCountryDO;
+
+import java.util.List;
+
 /**
  * 订单关联国籍数据 Service 接口
  *
@@ -8,5 +12,10 @@ package com.yc.ship.module.trade.service.order;
  */
 public interface TradeOrderCountryService {
 
-
+    /**
+     * 根据订单Ids获取列表
+     * @param orderIds
+     * @return
+     */
+    List<TradeOrderCountryDO> getListByOrderIds(List<Long> orderIds);
 }

+ 5 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/TradeOrderTotalService.java

@@ -1,5 +1,9 @@
 package com.yc.ship.module.trade.service.order;
 
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderTotalDO;
+
+import java.util.List;
+
 /**
  * 订单汇总 Service 接口
  *
@@ -8,4 +12,5 @@ package com.yc.ship.module.trade.service.order;
 public interface TradeOrderTotalService {
 
 
+    List<TradeOrderTotalDO> getByOrderIds(List<Long> orderIds);
 }

+ 11 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderCountryServiceImpl.java

@@ -1,5 +1,6 @@
 package com.yc.ship.module.trade.service.order.impl;
 
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderCountryDO;
 import com.yc.ship.module.trade.service.order.TradeOrderCountryService;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
@@ -8,6 +9,9 @@ import org.springframework.validation.annotation.Validated;
 
 import com.yc.ship.module.trade.dal.mysql.order.TradeOrderCountryMapper;
 
+import java.util.Collections;
+import java.util.List;
+
 /**
  * 订单关联国籍数据 Service 实现类
  *
@@ -20,4 +24,11 @@ public class TradeOrderCountryServiceImpl implements TradeOrderCountryService {
     @Resource
     private TradeOrderCountryMapper orderCountryMapper;
 
+    @Override
+    public List<TradeOrderCountryDO> getListByOrderIds(List<Long> orderIds) {
+        if(orderIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+        return orderCountryMapper.selectListByOrderIds(orderIds);
+    }
 }

+ 7 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderTotalServiceImpl.java

@@ -1,5 +1,6 @@
 package com.yc.ship.module.trade.service.order.impl;
 
+import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderTotalDO;
 import com.yc.ship.module.trade.service.order.TradeOrderTotalService;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
@@ -8,6 +9,8 @@ import org.springframework.validation.annotation.Validated;
 
 import com.yc.ship.module.trade.dal.mysql.order.TradeOrderTotalMapper;
 
+import java.util.List;
+
 
 /**
  * 订单汇总 Service 实现类
@@ -21,4 +24,8 @@ public class TradeOrderTotalServiceImpl implements TradeOrderTotalService {
     @Resource
     private TradeOrderTotalMapper orderTotalMapper;
 
+    @Override
+    public List<TradeOrderTotalDO> getByOrderIds(List<Long> orderIds) {
+        return orderTotalMapper.selectListByOrderIds(orderIds);
+    }
 }