Quellcode durchsuchen

Merge branch 'main' of http://47.98.207.247:3000/lsq/ship-ota-server

lishiqiang vor 3 Wochen
Ursprung
Commit
ad2ee3cec6
16 geänderte Dateien mit 202 neuen und 22 gelöschten Zeilen
  1. 16 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyage/VoyageController.java
  2. 1 0
      ship-module-trade/ship-module-trade-api/src/main/java/com/yc/ship/module/trade/enums/PayTypeEnum.java
  3. 1 0
      ship-module-trade/ship-module-trade-api/src/main/java/com/yc/ship/module/trade/enums/TradeOrderOperateTypeEnum.java
  4. 24 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/OtcTradeOrderController.java
  5. 4 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TouristExportVisitorVO.java
  6. 33 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/refund/TradeRefundHandCreateReqVO.java
  7. 2 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/report/vo/VisitorSourceDashboardReqVO.java
  8. 1 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderMapper.java
  9. 2 2
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/report/VoyageStockBoardMapper.java
  10. 6 5
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/OtcTradeOrderService.java
  11. 96 2
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java
  12. 2 2
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/report/impl/VoyageStockBoardServiceImpl.java
  13. 5 8
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml
  14. 3 2
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeVisitorMapper.xml
  15. 6 0
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/report/VoyageStockBoardMapper.xml
  16. BIN
      ship-module-trade/ship-module-trade-biz/src/main/resources/templates/tourist_template_operator.xlsx

+ 16 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyage/VoyageController.java

@@ -30,6 +30,8 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -153,6 +155,11 @@ public class VoyageController {
         List<Long> routeIds = CollectionUtils.convertList(voyageRespVOS, VoyageRespVO::getRouteId);
         List<ResourceRouteDO> routeList = routeService.getList(routeIds);
         Map<Long, Integer> routeDoMap = CollectionUtils.convertMap(routeList, ResourceRouteDO::getId, ResourceRouteDO::getDirection);
+
+        // 把已经过期的航次放到后面
+        List<VoyageRespVO> expireVoyageList = new ArrayList<>();
+        List<VoyageRespVO> voyageList = new ArrayList<>();
+
         voyageRespVOS.stream().forEach(voyageRespVO -> {
             MapUtils.findAndThen(routeDoMap, voyageRespVO.getRouteId(), direction -> voyageRespVO.setDirection(direction));
             if(routeDoMap.get(voyageRespVO.getRouteId()) == 2) {
@@ -160,8 +167,16 @@ public class VoyageController {
             }else {
                 voyageRespVO.setFname(voyageRespVO.getName()+"-上水");
             }
+            // 把已经过期的航次放到后面
+            if (voyageRespVO.getBoardingTime().isBefore(LocalDateTime.now())) {
+                expireVoyageList.add(voyageRespVO);
+            } else {
+                voyageList.add(voyageRespVO);
+            }
         });
-        return success(voyageRespVOS);
+        // 过期航次拼在后面
+        voyageList.addAll(expireVoyageList);
+        return success(voyageList);
     }
 
     @GetMapping("/listByShipId")

+ 1 - 0
ship-module-trade/ship-module-trade-api/src/main/java/com/yc/ship/module/trade/enums/PayTypeEnum.java

@@ -30,6 +30,7 @@ public enum PayTypeEnum implements IntArrayValuable {
     CORPORATE_TRANSFER_PAY(9, "对公转账",""),
     //账单还款-用于标记,无实际操作
     TONG_LIAN_SCAN_PAY(10, "通联扫码",""),
+    OFFLINE_REFUND(11, "线下退款",""),
     OTHER(99, "其他","");
 
 

+ 1 - 0
ship-module-trade/ship-module-trade-api/src/main/java/com/yc/ship/module/trade/enums/TradeOrderOperateTypeEnum.java

@@ -50,6 +50,7 @@ public enum TradeOrderOperateTypeEnum {
     ORDER_REMARK_UPDATE(35, "修改订单备注,修改记录:{content},结果:{result}"),
     ORDER_CANCEL_REFUND(36, "取消订单退款,修改记录:{content},结果:{result}"),
     UPDATE_ORDER_STATUS(37, "修改内容:{result}"),
+    HAND_ORDER_REFUND(38, "手动新增线下退款记录,支付金额:{oldPayAmount} -> {payAmount},退款金额:{refundAmount}"),
     ;
 
     /**

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

@@ -790,4 +790,28 @@ public class OtcTradeOrderController {
     public CommonResult<PublicOrderVoyageRespVO> getOrderVoyage(@RequestParam("orderId") Long orderId) {
         return otcTradeOrderService.getOrderVoyage(orderId);
     }
+
+    /**
+     * 获取订单简要信息
+     * 用于页面选择
+     *
+     * @param voyageId 航次ID
+     * @return 订单简要信息
+     */
+    @GetMapping("/orderSimpleList")
+    @Operation(summary = "获取订单简要信息", description = "获取订单简要信息,用于页面选择")
+    public CommonResult<List<TradeOrderDO>> orderSimpleList(@RequestParam("voyageId") Long voyageId) {
+        return success(otcTradeOrderService.getOrderSimpleList(voyageId));
+    }
+
+    /**
+     * 手动创建退款记录
+     * 用于线下退款记录
+     */
+    @PostMapping("/createHandRefundRecord")
+    @Operation(summary = "手动创建退款记录", description = "手动创建退款记录,用于线下退款记录")
+    @PreAuthorize("@ss.hasPermission('trade:refund:createHandRecord')")
+    public CommonResult<String> createHandRefundRecord(@Valid @RequestBody TradeRefundHandCreateReqVO createReqVO) {
+        return success(otcTradeOrderService.createHandRefundRecord(createReqVO));
+    }
 }

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

@@ -102,6 +102,10 @@ public class TouristExportVisitorVO {
     @Schema(description = "优惠政策")
     private String policyName;
 
+    @Schema(description = "游船计划")
+    private String jdRemark;
+
+
     @Schema(description = "备注")
     private String remark;
 }

+ 33 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/refund/TradeRefundHandCreateReqVO.java

@@ -0,0 +1,33 @@
+package com.yc.ship.module.trade.controller.admin.order.vo.refund;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "手动退款 Request VO")
+@Data
+public class TradeRefundHandCreateReqVO {
+
+    @Schema(description = "订单", example = "")
+    @NotNull(message = "订单不能为空")
+    private Long orderId;
+
+    @Schema(description = "退款金额", example = "")
+    @NotNull(message = "退款金额不能为空")
+    private BigDecimal refundAmount;
+
+    @Schema(description = "退款时间", example = "")
+    @NotNull(message = "退款时间不能为空")
+    private LocalDateTime refundTime;
+
+    private String merchantNo;
+    private String paymentNo;
+    private String refundNo;
+    private Integer paymentType;
+    private Integer refundStatus;
+    
+}

+ 2 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/report/vo/VisitorSourceDashboardReqVO.java

@@ -20,4 +20,6 @@ public class VisitorSourceDashboardReqVO {
     @Schema(description = "航次ID列表", example = "[1,2,3]")
     private List<Long> voyageIds;
 
+    private List<String> voyageTime;
+
 }

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

@@ -2,6 +2,7 @@ package com.yc.ship.module.trade.dal.mysql.order;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yc.ship.framework.common.pojo.CommonResult;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
 import com.yc.ship.framework.tenant.core.aop.TenantIgnore;

+ 2 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/report/VoyageStockBoardMapper.java

@@ -48,7 +48,7 @@ public interface VoyageStockBoardMapper {
      * @param voyageIds 航次ID列表
      * @return 游客列表(含证件类型、证件号、国籍及国籍名称)
      */
-    List<TradeVisitorDO> selectVisitorListForSourceDashboard(@Param("shipId") Long shipId, @Param("voyageIds") List<Long> voyageIds, @Param("distributorId") Long distributorId);
+    List<TradeVisitorDO> selectVisitorListForSourceDashboard(@Param("shipId") Long shipId, @Param("voyageIds") List<Long> voyageIds, @Param("voyageTime") List<String> voyageTime, @Param("distributorId") Long distributorId);
 
     /**
      * 查询游客年龄段分析看板所需的游客年龄列表
@@ -57,7 +57,7 @@ public interface VoyageStockBoardMapper {
      * @param voyageIds 航次ID列表
      * @return 游客年龄列表
      */
-    List<Integer> selectVisitorAgeListForAgeDashboard(@Param("shipId") Long shipId, @Param("voyageIds") List<Long> voyageIds, @Param("distributorId") Long distributorId);
+    List<Integer> selectVisitorAgeListForAgeDashboard(@Param("shipId") Long shipId, @Param("voyageIds") List<Long> voyageIds, @Param("voyageTime") List<String> voyageTime, @Param("distributorId") Long distributorId);
 
     /**
      * 查询所有航次库存分页

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

@@ -8,16 +8,13 @@ import com.yc.ship.module.product.api.dto.CategoryRespDTO;
 import com.yc.ship.module.product.api.dto.ProductSpuRespDTO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.*;
 import com.yc.ship.module.trade.controller.admin.order.vo.otc.PrintRespVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundDetailRespVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundPageReqVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundRecordPageReqVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundRecordRespVO;
-import com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundRespVO;
+import com.yc.ship.module.trade.controller.admin.order.vo.refund.*;
 import com.yc.ship.module.trade.controller.app.otc.vo.AppTradeOrderDetailRespVO;
 import com.yc.ship.module.trade.controller.admin.order.vo.order.PublicOrderVoyageRespVO;
 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.TradeOrderDO;
 
 import javax.validation.Valid;
 import java.io.File;
@@ -176,4 +173,8 @@ public interface OtcTradeOrderService {
      * @return 订单航次信息
      */
     CommonResult<PublicOrderVoyageRespVO> getOrderVoyage(Long orderId);
+
+    List<TradeOrderDO> getOrderSimpleList(Long voyageId);
+
+    String createHandRefundRecord(@Valid TradeRefundHandCreateReqVO createReqVO);
 }

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

@@ -2,6 +2,7 @@ package com.yc.ship.module.trade.service.otc.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.excel.EasyExcel;
@@ -93,6 +94,7 @@ import com.yc.ship.module.system.api.dict.DictDataApi;
 import com.yc.ship.module.system.api.dict.dto.DictDataRespDTO;
 import com.yc.ship.module.system.api.notify.NotifyMessageSendApi;
 import com.yc.ship.module.system.api.notify.dto.NotifySendSingleToUserReqDTO;
+import com.yc.ship.module.system.api.permission.PermissionApi;
 import com.yc.ship.module.system.api.user.AdminUserApi;
 import com.yc.ship.module.system.api.user.dto.AdminUserRespDTO;
 import com.yc.ship.module.trade.api.dto.TradeOrderPayDTO;
@@ -110,6 +112,8 @@ import com.yc.ship.module.trade.dal.dataobject.invoice.InvoiceDO;
 import com.yc.ship.module.trade.dal.dataobject.order.*;
 import com.yc.ship.module.trade.dal.dataobject.orderjz.OrderJzDO;
 import com.yc.ship.module.trade.dal.dataobject.orderpolicy.OrderPolicyDO;
+import com.yc.ship.module.trade.dal.dataobject.refund.RefundDO;
+import com.yc.ship.module.trade.dal.dataobject.refund.RefundRecordDO;
 import com.yc.ship.module.trade.dal.dataobject.tradeOrderaudit.TradeOrderAuditDO;
 import com.yc.ship.module.trade.dal.mysql.audituser.AuditUserMapper;
 import com.yc.ship.module.trade.dal.mysql.contract.ContractMapper;
@@ -117,6 +121,8 @@ import com.yc.ship.module.trade.dal.mysql.insurance.InsuranceMapper;
 import com.yc.ship.module.trade.dal.mysql.order.*;
 import com.yc.ship.module.trade.dal.mysql.orderjz.OrderJzMapper;
 import com.yc.ship.module.trade.dal.mysql.orderpolicy.OrderPolicyMapper;
+import com.yc.ship.module.trade.dal.mysql.refund.RefundMapper;
+import com.yc.ship.module.trade.dal.mysql.refund.RefundRecordMapper;
 import com.yc.ship.module.trade.dal.mysql.tradeOrderaudit.TradeOrderAuditMapper;
 import com.yc.ship.module.trade.enums.*;
 import com.yc.ship.module.trade.framework.annotation.TradeOrderLog;
@@ -190,6 +196,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Resource
     private DictDataApi dictDataApi;
     @Resource
+    private PermissionApi permissionApi;
+    @Resource
     private AdminUserApi adminUserApi;
     @Resource
     private ProductApi productApi;
@@ -241,6 +249,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Resource
     private TradeOrderPayService tradeOrderPayService;
     @Resource
+    private TradeOrderPayMapper tradeOrderPayMapper;
+    @Resource
     private TradeOrderRepositoryService tradeOrderRepositoryService;
     @Resource
     private InvoiceService invoiceService;
@@ -314,6 +324,12 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
     @Resource
     private TradeRefundService tradeRefundService;
 
+    @Resource
+    private RefundMapper refundMapper;
+
+    @Resource
+    private RefundRecordMapper refundRecordMapper;
+    
     @Resource
     private TradeOrderBindMapper tradeOrderBindMapper;
 
@@ -3947,8 +3963,34 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
      */
     @Override
     public File exportTouristList(TradeOrderPageReqVO reqVO) {
-        InputStream template = getClass().getClassLoader().getResourceAsStream("templates/tourist_template_operator.xlsx");
-        return getFile(reqVO,template, 0);
+        // 根据当前登录用户角色加载不同模板
+        LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
+        boolean isDispatch = isDispatchRole(loginUser); // 计调角色判定
+        String templateName;
+        if (isDispatch) {
+            // 计调:使用计调模板
+            templateName = "templates/tourist_template_operator.xlsx";
+        } else {
+            // 销售(或其他角色):使用销售模板
+            templateName = "templates/tourist_template.xlsx";
+        }
+        InputStream template = getClass().getClassLoader().getResourceAsStream(templateName);
+        return getFile(reqVO, template, 0);
+    }
+
+    /**
+     * 判断当前登录用户是否为计调角色
+     */
+    private boolean isDispatchRole(LoginUser loginUser) {
+        if (loginUser == null) {
+            return false;
+        }
+        // 读取 jd_role 字典的 label(角色码)列表
+        List<String> jdRoleCodes = dictDataApi.getDictDataLabelList("jd_role");
+        if (CollUtil.isEmpty(jdRoleCodes)) {
+            return false;
+        }
+        return permissionApi.hasAnyRoles(loginUser.getId(), jdRoleCodes.toArray(new String[0]));
     }
 
     /**
@@ -4322,6 +4364,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
                         item.put("visitorHome", StringUtils.isEmpty(visitor.getVisitorType()) ? "" : DictFrameworkUtils.getDictDataLabel(DictTypeConstants.TOUR_TYPE, visitor.getVisitorType())); // 游客入住类型
 
+                        item.put("jdRemark", StringUtils.isEmpty(visitor.getJdRemark()) ? "" : visitor.getJdRemark()); // 游船计划
+
                         item.put("birthday", StringUtils.isEmpty(visitor.getBirthday()) ? "" : visitor.getBirthday()); // 生日
                         item.put("mobile", StringUtils.isEmpty(visitor.getMobile()) ? "" : visitor.getMobile()); // 手机号
                         item.put("jz", StringUtils.isEmpty(visitor.getJz()) ? "" : visitor.getJz()); // 是否接站
@@ -4487,4 +4531,54 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
         return CommonResult.success(respVO);
     }
+
+    @Override
+    public List<TradeOrderDO> getOrderSimpleList(Long voyageId) {
+        return tradeOrderMapper.getValidSimpleOrderInfoByVoyageId(voyageId);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.HAND_ORDER_REFUND)
+    public String createHandRefundRecord(TradeRefundHandCreateReqVO createReqVO) {
+        long id = IdWorker.getId();
+        RefundDO refundDO = RefundDO.builder().id(id).orderId(createReqVO.getOrderId())
+                .refundAmount(createReqVO.getRefundAmount()).refundReason("手动新增线下退款记录").build();
+        refundMapper.insert(refundDO);
+        RefundRecordDO refundRecordDO = RefundRecordDO.builder()
+                .id(IdWorker.getId())
+                .refundId(id)
+                .refundAmount(createReqVO.getRefundAmount())
+                .refundStatus(createReqVO.getRefundStatus())
+                .refundBackType(1)
+                .paymentType(createReqVO.getPaymentType())
+                .result("手动新增线下退款记录")
+                .refundType(0)
+                .merchantNo(createReqVO.getMerchantNo())
+                .paymentNo(createReqVO.getPaymentNo())
+                .refundNo(createReqVO.getRefundNo())
+                .refundTime(createReqVO.getRefundTime()).build();
+        refundRecordMapper.insert(refundRecordDO);
+        TradeOrderDO tradeOrderDO = tradeOrderMapper.selectById(createReqVO.getOrderId());
+        BigDecimal payAmount = tradeOrderDO.getPayAmount();
+        tradeOrderDO.setPayAmount(tradeOrderDO.getPayAmount().subtract(createReqVO.getRefundAmount()));
+        tradeOrderMapper.updateById(tradeOrderDO);
+        TradeOrderLogUtils.setOrderInfo(tradeOrderDO.getId(), tradeOrderDO.getOrderStatus(), tradeOrderDO.getOrderStatus(),
+                MapUtil.<String, Object>builder()
+                        .put("oldPayAmount", payAmount)
+                        .put("payAmount", tradeOrderDO.getPayAmount())
+                        .put("refundAmount", createReqVO.getRefundAmount())
+                        .build());
+        List<TradeOrderPayDO> tradeOrderPayDOS = 
+                tradeOrderPayMapper.selectList(
+                        TradeOrderPayDO::getOrderId, createReqVO.getOrderId(),
+                        TradeOrderPayDO::getPayStatus, "1"
+                );
+        if(tradeOrderPayDOS!=null && !tradeOrderPayDOS.isEmpty()){
+            TradeOrderPayDO orderPayDO = tradeOrderPayDOS.get(0);
+            orderPayDO.setPayAmount(tradeOrderDO.getPayAmount());
+            tradeOrderPayMapper.updateById(orderPayDO);
+        }
+        return "";
+    }
 }

+ 2 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/report/impl/VoyageStockBoardServiceImpl.java

@@ -682,7 +682,7 @@ public class VoyageStockBoardServiceImpl implements VoyageStockBoardService {
         Long distributorId = SecurityFrameworkUtils.getLoginDistributorId();
         for (Long shipId : reqVO.getShipIds()) {
             List<TradeVisitorDO> visitorList = voyageStockBoardMapper.selectVisitorListForSourceDashboard(
-                    shipId, reqVO.getVoyageIds(), distributorId);
+                    shipId, reqVO.getVoyageIds(), reqVO.getVoyageTime(), distributorId);
             if (CollUtil.isNotEmpty(visitorList)) {
                 allVisitorList.addAll(visitorList);
             }
@@ -966,7 +966,7 @@ public class VoyageStockBoardServiceImpl implements VoyageStockBoardService {
         Long distributorId = SecurityFrameworkUtils.getLoginDistributorId();
         for (Long shipId : reqVO.getShipIds()) {
             List<Integer> ageList = voyageStockBoardMapper.selectVisitorAgeListForAgeDashboard(
-                    shipId, reqVO.getVoyageIds(), distributorId);
+                    shipId, reqVO.getVoyageIds(), reqVO.getVoyageTime(), distributorId);
             if (CollUtil.isNotEmpty(ageList)) {
                 allAgeList.addAll(ageList);
             }

+ 5 - 8
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

@@ -1593,11 +1593,12 @@
 
     <select id="getPageRefundRecord"
             resultType="com.yc.ship.module.trade.controller.admin.order.vo.refund.RefundRecordRespVO">
-        SELECT trr.*,td.order_no, td.id orderId, td.travel_date
+        SELECT trr.*,coalesce(td.order_no,td1.order_no) as orderNo, coalesce(td.id,td1.id) as  orderId, coalesce(td.travel_date,td1.travel_date) as travel_date
         FROM trade_refund_record trr
         left join trade_order_pay top on trr.order_pay_id = top.id
         left join trade_refund tr on trr.refund_id = tr.id
         left join trade_order td on td.id = top.order_id
+        left join trade_order td1 on td1.id = tr.order_id
         left join product_voyage pv on td.voyage_id = pv.id
         LEFT JOIN ota_distributor od on od.id = td.source_id
         where 1= 1
@@ -2548,17 +2549,13 @@
             ifnull(t2.actual_price,0) actual_price
         FROM
             trade_visitor t1
-                LEFT JOIN trade_detail t2 ON t1.id = t2.visitor_id
-                AND t2.product_type = 0
-                AND t1.deleted = 0
+                LEFT JOIN trade_detail t2 ON t1.id = t2.visitor_id AND t2.product_type = 0
                 LEFT JOIN resource_room_model t3 ON t1.room_model_id = t3.id
-                AND t3.deleted = 0
                 LEFT JOIN area t4 ON t1.nationality = t4.id
                 LEFT JOIN trade_order_room_model t5 ON t1.room_index_id = t5.room_index_id
-                AND t5.deleted = 0
                 LEFT JOIN product_price_room_model_type t6 ON t5.room_model_type_id = t6.id
         WHERE
-            t1.order_id = #{orderId}
+            t1.order_id = #{orderId} AND t1.deleted = 0 AND t3.deleted = 0  AND t5.deleted = 0
         GROUP BY
             t1.room_model_id,
             t1.floor,
@@ -2999,7 +2996,7 @@
             resultType="com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO">
         select id,order_no
         from trade_order
-        where deleted=0 and voyage_id=#{voyageId} and order_status in (1,6,9,13,14,15)
+        where deleted=0 and voyage_id=#{voyageId}
         order by substring_index(order_no, '-', -1)*1
     </select>
 </mapper>

+ 3 - 2
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeVisitorMapper.xml

@@ -290,6 +290,7 @@
             a.name AS nationalityName,
             GROUP_CONCAT(ps.product_name) AS valueAddedService,
             tor.remark,
+            tor.jd_remark as jdRemark,
             tor.order_status as orderStatus
         FROM trade_visitor tv
         INNER JOIN trade_order tor ON tv.order_id = tor.id AND tor.deleted = 0
@@ -299,9 +300,9 @@
         LEFT JOIN resource_route rr ON pv.route_id = rr.id
         LEFT JOIN ota_distributor od ON tor.source_id = od.id
         LEFT JOIN trade_order_room_model torm ON tv.room_index_id = torm.room_index_id AND torm.deleted = 0
-        left JOIN product_spu ps on ps.id = td.product_id
+        left JOIN product_spu ps on ps.id = td.product_id and ps.deleted = 0
         left join trade_order_pay top ON top.order_id = tor.id and top.deleted = 0 and top.pay_status = 1
-        left Join trade_order_jz tjz on tjz.order_id = tor.id
+        left Join trade_order_jz tjz on tjz.order_id = tor.id and tjz.deleted = 0
         left Join product_price_room_model_type pprmt on torm.room_model_type_id = pprmt.id
 
         WHERE tv.deleted = 0

+ 6 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/report/VoyageStockBoardMapper.xml

@@ -122,6 +122,9 @@
                 #{item}
             </foreach>
         </if>
+        <if test="voyageTime != null and voyageTime.size() > 0">
+            AND pv.boarding_time between #{voyageTime[0]} and #{voyageTime[1]}
+        </if>
         <if test="distributorId != null">
             AND tor.source_id = #{distributorId}
         </if>
@@ -143,6 +146,9 @@
                 #{item}
             </foreach>
         </if>
+        <if test="voyageTime != null and voyageTime.size() > 0">
+            AND pv.boarding_time between #{voyageTime[0]} and #{voyageTime[1]}
+        </if>
         <if test="distributorId != null">
             AND tor.source_id = #{distributorId}
         </if>

BIN
ship-module-trade/ship-module-trade-biz/src/main/resources/templates/tourist_template_operator.xlsx