Переглянути джерело

接站服务(签到核销)

ZhangShuling 1 тиждень тому
батько
коміт
1bbbe62ff1

+ 98 - 29
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/OrderJzDetailController.java

@@ -1,42 +1,48 @@
 package com.yc.ship.module.trade.controller.admin.orderjzdetail;
 
+import com.yc.ship.framework.apilog.core.annotation.ApiAccessLog;
+import com.yc.ship.framework.common.pojo.CommonResult;
+import com.yc.ship.framework.common.pojo.PageParam;
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.util.object.BeanUtils;
+import com.yc.ship.framework.excel.core.util.ExcelUtils;
 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.dal.dataobject.route.ResourceRouteDO;
+import com.yc.ship.module.resource.service.route.ResourceRouteService;
+import com.yc.ship.module.system.api.dict.DictDataApi;
+import com.yc.ship.module.system.api.dict.dto.DictDataRespDTO;
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailPageReqVO;
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailRespVO;
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailSaveReqVO;
+import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
+import com.yc.ship.module.trade.service.orderjzdetail.OrderJzDetailService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-
-import org.springframework.validation.annotation.Validated;
 import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import javax.annotation.security.PermitAll;
-import javax.validation.constraints.*;
-import javax.validation.*;
-import javax.servlet.http.*;
-import java.util.*;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 import java.io.IOException;
+import java.util.List;
+import java.util.stream.Collectors;
 
-import com.yc.ship.framework.common.pojo.PageParam;
-import com.yc.ship.framework.common.pojo.PageResult;
-import com.yc.ship.framework.common.pojo.CommonResult;
-import com.yc.ship.framework.common.util.object.BeanUtils;
-
+import static com.yc.ship.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static com.yc.ship.framework.common.pojo.CommonResult.success;
 
-import com.yc.ship.framework.excel.core.util.ExcelUtils;
-
-import com.yc.ship.framework.apilog.core.annotation.ApiAccessLog;
-
-import static com.yc.ship.framework.apilog.core.enums.OperateTypeEnum.*;
-
-import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.*;
-import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
-import com.yc.ship.module.trade.service.orderjzdetail.OrderJzDetailService;
-
 @Tag(name = "管理后台 - 订单接站人员名单")
 @RestController
 @RequestMapping("/trade/order-jz-detail")
@@ -49,6 +55,12 @@ public class OrderJzDetailController {
   @Resource
   private VoyageService voyageService;
 
+  @Resource
+  private ResourceRouteService resourceRouteService;
+
+  @Resource
+  DictDataApi dictDataApi;
+
   @PostMapping("/create")
   @Operation(summary = "创建订单接站人员名单")
   @PreAuthorize("@ss.hasPermission('trade:order-jz-detail:create')")
@@ -67,7 +79,6 @@ public class OrderJzDetailController {
   @DeleteMapping("/delete")
   @Operation(summary = "删除订单接站人员名单")
   @Parameter(name = "id", description = "编号", required = true)
-  @PreAuthorize("@ss.hasPermission('trade:order-jz-detail:delete')")
   public CommonResult<Boolean> deleteOrderJzDetail(@RequestParam("id") Long id) {
     orderJzDetailService.deleteOrderJzDetail(id);
     return success(true);
@@ -106,13 +117,44 @@ public class OrderJzDetailController {
 
     pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
     List<OrderJzDetailDO> list = orderJzDetailService.selectPageByVoyageId(pageReqVO.getVoyageId());
+
+    List<DictDataRespDTO> dictAddressList = null;
+    ResourceRouteDO resourceRouteDO = resourceRouteService.getRoute(voyageDO.getRouteId());
+    if (resourceRouteDO != null) {
+      int dir = resourceRouteDO.getDirection().intValue();
+      if (dir == 2) {
+        dictAddressList = dictDataApi.getDictDataList("order_jz_x");
+      } else {
+        dictAddressList = dictDataApi.getDictDataList("order_jz");
+      }
+    }
+
+
+    final List<DictDataRespDTO> dictTimeList = dictDataApi.getDictDataList("order_time_jz");
     // 导出 Excel
     List<OrderJzDetailRespVO> exportList = BeanUtils.toBean(list, OrderJzDetailRespVO.class);
+    final List<DictDataRespDTO> finalAddressList = dictAddressList;
     exportList.forEach(vo -> {
       vo.setVoyage(voyageDO.getName());
+
+      // 接站地点
+      if (finalAddressList != null) {
+        List<DictDataRespDTO> addressList = finalAddressList.stream().filter(d -> d.getValue().equals(vo.getAddress())).collect(Collectors.toList());
+        if (addressList != null && addressList.size() > 0) {
+          vo.setAddress(addressList.get(0).getLabel());
+        }
+      }
+
+      // 接站时间
+      if(dictTimeList!=null) {
+        List<DictDataRespDTO> timeList = dictTimeList.stream().filter(d -> d.getValue().equals(vo.getArriveTime())).collect(Collectors.toList());
+        if (timeList != null && timeList.size() > 0) {
+          vo.setArriveTime(timeList.get(0).getLabel());
+        }
+      }
     });
     ExcelUtils.write(response, "订单接站人员名单.xls", "数据", OrderJzDetailRespVO.class,
-      BeanUtils.toBean(list, OrderJzDetailRespVO.class));
+      BeanUtils.toBean(exportList, OrderJzDetailRespVO.class));
   }
 
 
@@ -121,10 +163,37 @@ public class OrderJzDetailController {
   public CommonResult<Long> createOrderJzDetail(@Valid @RequestBody List<OrderJzDetailSaveReqVO> createReqVOList) {
     return success(orderJzDetailService.createOrderJzDetail(createReqVOList));
   }
+
   @GetMapping("/simple-list")
   @Operation(summary = "获得订单接站人员名单")
   public CommonResult<List<OrderJzDetailRespVO>> getOrderJzDetailList(@Valid OrderJzDetailPageReqVO pageReqVO) {
     List<OrderJzDetailDO> pageResult = orderJzDetailService.getOrderJzDetailList(pageReqVO);
     return success(BeanUtils.toBean(pageResult, OrderJzDetailRespVO.class));
   }
+
+
+
+
+  @GetMapping("/visitor/query")
+  @Operation(summary = "获得订单接站人员名单分页")
+  @PreAuthorize("@ss.hasPermission('trade:order-jz-detail-sign:query')")
+  public CommonResult<PageResult<OrderJzDetailRespVO>> queryOrderJzDetailPage(@Valid OrderJzDetailPageReqVO pageReqVO) {
+    PageResult<OrderJzDetailDO> pageResult = orderJzDetailService.getOrderJzDetailPage2(pageReqVO);
+    return success(BeanUtils.toBean(pageResult, OrderJzDetailRespVO.class));
+  }
+
+  @PostMapping("/visitor/sign")
+  @Operation(summary = "游客登记")
+  @PreAuthorize("@ss.hasPermission('trade:order-jz-detail-sign:save')")
+  public CommonResult<Long> visitorSign(@Valid @RequestBody OrderJzDetailSaveReqVO createReqVO) {
+    return success(orderJzDetailService.signOrderJzDetail(createReqVO));
+  }
+
+
+  @DeleteMapping("/visitor/sign/clean")
+  @Operation(summary = "游客登记")
+  @PreAuthorize("@ss.hasPermission('trade:order-jz-detail-sign:delete')")
+  public CommonResult<Long> visitorSignClean(String  id) {
+    return success(orderJzDetailService.cleanOrderJzDetail(id));
+  }
 }

+ 8 - 5
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailPageReqVO.java

@@ -1,10 +1,12 @@
 package com.yc.ship.module.trade.controller.admin.orderjzdetail.vo;
 
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
 import com.yc.ship.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
 import org.springframework.format.annotation.DateTimeFormat;
+
 import java.time.LocalDateTime;
 
 import static com.yc.ship.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -21,8 +23,7 @@ public class OrderJzDetailPageReqVO extends PageParam {
     private String batchNo;
 
     @Schema(description = "抵达时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] arriveTime;
+    private String arriveTime;
 
     @Schema(description = "接站地址")
     private String address;
@@ -30,6 +31,8 @@ public class OrderJzDetailPageReqVO extends PageParam {
     @Schema(description = "接站联系人", example = "李四")
     private String name;
 
+    private String idCard;
+
     @Schema(description = "接站联系电话")
     private String phone;
 

+ 14 - 4
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailRespVO.java

@@ -1,11 +1,11 @@
 package com.yc.ship.module.trade.controller.admin.orderjzdetail.vo;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
+import lombok.Data;
+
 import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
 
 @Schema(description = "管理后台 - 订单接站人员名单 Response VO")
 @Data
@@ -53,4 +53,14 @@ public class OrderJzDetailRespVO {
     @ExcelProperty("登记时间")
     private LocalDateTime createTime;
 
+    private String idCard;
+
+    private String signTime;
+
+    private String signRemark;
+
+    private String signMan;
+
+    private String signImage;
+
 }

+ 4 - 6
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailSaveReqVO.java

@@ -1,12 +1,7 @@
 package com.yc.ship.module.trade.controller.admin.orderjzdetail.vo;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
+import lombok.Data;
 
 @Schema(description = "管理后台 - 订单接站人员名单新增/修改 Request VO")
 @Data
@@ -39,4 +34,7 @@ public class OrderJzDetailSaveReqVO {
     private Integer status;
 
     private String oid;
+
+    private String signRemark;
+    private String signImage;
 }

+ 15 - 6
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/orderjzdetail/OrderJzDetailDO.java

@@ -1,12 +1,15 @@
 package com.yc.ship.module.trade.dal.dataobject.orderjzdetail;
 
-import lombok.*;
-import java.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.yc.ship.framework.mybatis.core.dataobject.BaseDO;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
 
 /**
  * 订单接站人员名单 DO
@@ -62,4 +65,10 @@ public class OrderJzDetailDO extends BaseDO {
      */
     private Integer status;
 
+
+    private String signTime;
+    private String signMan;
+    private String signRemark;
+    private String signImage;
+
 }

+ 17 - 11
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/orderjzdetail/OrderJzDetailMapper.java

@@ -1,16 +1,17 @@
 package com.yc.ship.module.trade.dal.mysql.orderjzdetail;
 
-import java.util.*;
-
+import com.baomidou.mybatisplus.core.metadata.IPage;
 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.LambdaQueryWrapperX;
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailPageReqVO;
 import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
-import io.swagger.v3.oas.annotations.servers.Server;
 import org.apache.ibatis.annotations.Mapper;
-import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.*;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
+import java.util.List;
+
 /**
  * 订单接站人员名单 Mapper
  *
@@ -22,7 +23,7 @@ public interface OrderJzDetailMapper extends BaseMapperX<OrderJzDetailDO> {
   default PageResult<OrderJzDetailDO> selectPage(OrderJzDetailPageReqVO reqVO) {
     return selectPage(reqVO, new LambdaQueryWrapperX<OrderJzDetailDO>()
       .eqIfPresent(OrderJzDetailDO::getJzId, reqVO.getJzId())
-      .betweenIfPresent(OrderJzDetailDO::getArriveTime, reqVO.getArriveTime())
+      .eqIfPresent(OrderJzDetailDO::getArriveTime, reqVO.getArriveTime())
       .eqIfPresent(OrderJzDetailDO::getAddress, reqVO.getAddress())
       .likeIfPresent(OrderJzDetailDO::getName, reqVO.getName())
       .eqIfPresent(OrderJzDetailDO::getPhone, reqVO.getPhone())
@@ -35,7 +36,7 @@ public interface OrderJzDetailMapper extends BaseMapperX<OrderJzDetailDO> {
   default List<OrderJzDetailDO> selectList(OrderJzDetailPageReqVO reqVO) {
     return selectList(new LambdaQueryWrapperX<OrderJzDetailDO>()
             .eqIfPresent(OrderJzDetailDO::getJzId, reqVO.getJzId())
-            .betweenIfPresent(OrderJzDetailDO::getArriveTime, reqVO.getArriveTime())
+            .eqIfPresent(OrderJzDetailDO::getArriveTime, reqVO.getArriveTime())
             .eqIfPresent(OrderJzDetailDO::getAddress, reqVO.getAddress())
             .likeIfPresent(OrderJzDetailDO::getName, reqVO.getName())
             .eqIfPresent(OrderJzDetailDO::getPhone, reqVO.getPhone())
@@ -45,10 +46,15 @@ public interface OrderJzDetailMapper extends BaseMapperX<OrderJzDetailDO> {
             .orderByDesc(OrderJzDetailDO::getId));
   }
 
-  @Select(("select d.* from trade_order_jz_detail d " +
+  @Select("select d.* from trade_order_jz_detail d " +
     " inner join trade_order_jz oz on d.jz_id = oz.id " +
-    " inner join trade_order o on o.id = oz.order_id " +
-    " where o.voyage_id = #{voyageId}" +
-    " order by d.arrive_time asc, d.batch_no"))
+    " inner join trade_order o on o.deleted = 0 and o.id = oz.order_id " +
+    " where d.deleted = 0 and o.voyage_id = #{voyageId}" +
+    " order by d.address asc, d.arrive_time asc, d.batch_no asc")
   List<OrderJzDetailDO> selectPageByVoyageId(String voyageId);
+
+
+  IPage<OrderJzDetailDO> selectPage2(IPage<OrderJzDetailDO> page, @Param("vo") OrderJzDetailPageReqVO vo);
+
+  Long cleanSign(@Param("id") String id);
 }

+ 13 - 8
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/orderjzdetail/OrderJzDetailService.java

@@ -1,13 +1,12 @@
 package com.yc.ship.module.trade.service.orderjzdetail;
 
-import java.util.*;
-import javax.validation.*;
-
-import com.yc.ship.framework.common.util.collection.MapUtils;
-import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.*;
-import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
 import com.yc.ship.framework.common.pojo.PageResult;
-import com.yc.ship.framework.common.pojo.PageParam;
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailPageReqVO;
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailSaveReqVO;
+import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
+
+import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 订单接站人员名单 Service 接口
@@ -58,5 +57,11 @@ public interface OrderJzDetailService {
 
   List<OrderJzDetailDO> selectPageByVoyageId(String voyageId);
 
-    List<OrderJzDetailDO> getOrderJzDetailList(@Valid OrderJzDetailPageReqVO pageReqVO);
+  List<OrderJzDetailDO> getOrderJzDetailList(@Valid OrderJzDetailPageReqVO pageReqVO);
+
+  Long cleanOrderJzDetail(String id);
+
+  Long signOrderJzDetail(OrderJzDetailSaveReqVO createReqVO);
+
+  PageResult<OrderJzDetailDO> getOrderJzDetailPage2(OrderJzDetailPageReqVO pageReqVO);
 }

+ 45 - 15
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/orderjzdetail/OrderJzDetailServiceImpl.java

@@ -1,32 +1,34 @@
 package com.yc.ship.module.trade.service.orderjzdetail;
 
+import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.util.IdUtil;
+import com.alibaba.excel.util.DateUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.framework.common.util.object.BeanUtils;
+import com.yc.ship.framework.security.core.LoginUser;
 import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailPageReqVO;
+import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailSaveReqVO;
 import com.yc.ship.module.trade.dal.dataobject.order.TradeOrderDO;
 import com.yc.ship.module.trade.dal.dataobject.orderjz.OrderJzDO;
+import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
 import com.yc.ship.module.trade.dal.mysql.order.TradeOrderMapper;
 import com.yc.ship.module.trade.dal.mysql.orderjz.OrderJzMapper;
+import com.yc.ship.module.trade.dal.mysql.orderjzdetail.OrderJzDetailMapper;
+import org.apache.commons.collections4.MapUtils;
 import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import javax.validation.constraints.NotNull;
-
 import org.springframework.validation.annotation.Validated;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-
-import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.*;
-import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;
-import com.yc.ship.framework.common.pojo.PageResult;
-import com.yc.ship.framework.common.pojo.PageParam;
-import com.yc.ship.framework.common.util.object.BeanUtils;
 
-import com.yc.ship.module.trade.dal.mysql.orderjzdetail.OrderJzDetailMapper;
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 import static com.yc.ship.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static com.yc.ship.module.trade.enums.ErrorCodeConstants.*;
+import static com.yc.ship.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
 
 /**
  * 订单接站人员名单 Service 实现类
@@ -163,4 +165,32 @@ public class OrderJzDetailServiceImpl implements OrderJzDetailService {
     pageReqVO.setJzId(orderJzDO.getId());
     return orderJzDetailMapper.selectList(pageReqVO);
   }
+
+  @Override
+  public Long cleanOrderJzDetail(String id) {
+    return orderJzDetailMapper.cleanSign(id);
+  }
+
+  @Override
+  public Long signOrderJzDetail(OrderJzDetailSaveReqVO createReqVO) {
+    OrderJzDetailDO detail = getOrderJzDetail(createReqVO.getId());
+    if(detail != null) {
+      detail.setSignTime(DateUtils.format(new Date(), DatePattern.NORM_DATETIME_PATTERN));
+      // 当前登录人
+      LoginUser loginUser = getLoginUser();
+      detail.setSignMan(MapUtils.getString(loginUser.getInfo(), LoginUser.INFO_KEY_NICKNAME));
+      detail.setSignRemark(createReqVO.getSignRemark());
+      detail.setSignImage(createReqVO.getSignImage());
+      orderJzDetailMapper.updateById(detail);
+      return detail.getId();
+    }
+    return 0L;
+  }
+
+  @Override
+  public PageResult<OrderJzDetailDO> getOrderJzDetailPage2(OrderJzDetailPageReqVO pageReqVO) {
+    IPage<OrderJzDetailDO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
+    IPage<OrderJzDetailDO> iPage = orderJzDetailMapper.selectPage2(page, pageReqVO);
+    return new PageResult<>(iPage.getRecords(), iPage.getTotal());
+  }
 }

+ 31 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/orderjzdetail/OrderJzDetailMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yc.ship.module.trade.dal.mysql.orderjzdetail.OrderJzDetailMapper">
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+    <select id="selectPage2"
+            resultType="com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO">
+        select d.*
+        from trade_order_jz_detail d
+                 inner join trade_order_jz oz on d.jz_id = oz.id
+                 inner join trade_order o on o.deleted = 0 and o.id = oz.order_id
+        where d.deleted = 0 and o.voyage_id = #{vo.voyageId}
+        <if test="vo.idCard != null">
+            and d.id_card like concat('%', #{vo.idCard}, '%')
+        </if>
+        <if test="vo.name != null">
+            and d.name like concat('%', #{vo.name}, '%')
+        </if>
+        order by d.address asc, d.arrive_time asc, d.batch_no asc
+    </select>
+
+    <update id="cleanSign">
+        update trade_order_jz_detail set sign_time = null, sign_man = null, sign_remark = null, sign_image = null
+        where id = #{id}
+    </update>
+</mapper>