diff --git a/src/main/java/com/xujie/modules/order/vo/PODetailVo.java b/src/main/java/com/xujie/modules/order/vo/PODetailVo.java index 7ae08c9..c666110 100644 --- a/src/main/java/com/xujie/modules/order/vo/PODetailVo.java +++ b/src/main/java/com/xujie/modules/order/vo/PODetailVo.java @@ -12,6 +12,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import java.util.Date; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; /** @@ -385,7 +386,91 @@ public class PODetailVo extends QueryPage { @ApiModelProperty(value = "扩展字段值") private Map extValues = new LinkedHashMap(); + /** + * 顶部筛选:计划员账号。只匹配 POHeader.c_planner,不匹配显示名。 + * 使用独立字段,避免命中旧查询里“账号或显示名”的条件。 + */ + private String plannerAccount; + + /** + * 顶部筛选:Buyer 关键字。模糊匹配 POHeader.buyer。 + * 不复用 buyer,避免走旧 SQL 的字符串拼接条件。 + */ + private String buyerKeyword; + + /** + * 顶部筛选:供应商名称关键字。模糊匹配供应商名称。 + */ + private String supplierNameKeyword; + + /** + * 顶部筛选:PO 号关键字。模糊匹配 POHeader.po_no。 + */ + private String poNoKeyword; + + /** + * 顶部筛选:物料 Item 关键字。匹配 COALESCE(物料 item, 订单行 item)。 + */ + private String itemKeyword; + + /** + * 顶部筛选:LOGISTICS ID,对应订单行 FLEXID(c_flexid)。 + */ + private String flexidKeyword; + + /** + * 顶部筛选:运输方式多选。值为 ship_method.method_desc,命中任意一个即可。 + * 空列表表示不按运输方式过滤。 + */ + private List shipViaList; + + /** + * 顶部筛选:映射后的状态多选。值为显示状态,多个原始状态共用同一显示名时都会命中。 + * 空列表表示不按状态过滤。 + */ + private List statusDisplayList; + + /** + * 顶部筛选:目的港多选。值为港口编码 port_code,精确匹配 POHeader.c_destination。 + * 空列表表示不按目的港过滤。 + */ + private List destinationList; + + /** + * 顶部筛选:Telex Release 的库值。Yes 对应 true,No 对应 false。 + * 空字符串表示不筛选,空库值只在未选择时出现。 + */ + private String telexReleaseValue; + + /** PO Enquiry Date 起,含当天,对应 POHeader.c_enquiry。空表示不限制开始。 */ + private String enquiryDateStart; + + /** PO Enquiry Date 止,含当天。空表示不限制结束。 */ + private String enquiryDateEnd; + + /** PO Issue Date 起,含当天,对应 POHeader.order_date(D_Issue)。 */ + private String issueDateStart; + + /** PO Issue Date 止,含当天。 */ + private String issueDateEnd; + + /** ETA 起,含当天,对应 PODetail.c_eta。 */ + private String etaDateStart; + + /** ETA 止,含当天。 */ + private String etaDateEnd; + + /** OBD 起,含当天,对应 PODetail.c_obd。 */ + private String obdDateStart; + + /** OBD 止,含当天。 */ + private String obdDateEnd; + + /** CRD 起,含当天,对应 PODetail.c_crd(D_CRD)。 */ + private String crdDateStart; + /** CRD 止,含当天。 */ + private String crdDateEnd; public Object getKey() { return this.id; diff --git a/src/main/java/com/xujie/modules/order/vo/PoDetailAdvancedQueryVo.java b/src/main/java/com/xujie/modules/order/vo/PoDetailAdvancedQueryVo.java index 95a772d..3c9d81f 100644 --- a/src/main/java/com/xujie/modules/order/vo/PoDetailAdvancedQueryVo.java +++ b/src/main/java/com/xujie/modules/order/vo/PoDetailAdvancedQueryVo.java @@ -51,4 +51,64 @@ public class PoDetailAdvancedQueryVo extends QueryPage { @ApiModelProperty(value = "动态条件列表,条件之间固定 AND") private List conditions; + + /** 顶部 Planner:只匹配计划员账号。空则不筛选。 */ + private String plannerAccount; + + /** 顶部 Buyer 关键字,模糊匹配。空则不筛选。 */ + private String buyerKeyword; + + /** 顶部供应商名称关键字,模糊匹配。空则不筛选。 */ + private String supplierNameKeyword; + + /** 顶部 PO 号关键字,模糊匹配。空则不筛选。 */ + private String poNoKeyword; + + /** 顶部 Item 关键字,匹配物料关联 Item。空则不筛选。 */ + private String itemKeyword; + + /** 顶部 LOGISTICS ID,匹配 FLEXID。空则不筛选。 */ + private String flexidKeyword; + + /** 顶部运输方式多选,命中任意一个。空列表不筛选。 */ + private List shipViaList; + + /** 顶部映射后状态多选,命中任意一个。空列表不筛选。 */ + private List statusDisplayList; + + /** 顶部目的港编码多选,精确匹配。空列表不筛选。 */ + private List destinationList; + + /** Telex Release 库值:true / false。空则不筛选。 */ + private String telexReleaseValue; + + /** PO Enquiry Date 起,含当天。 */ + private String enquiryDateStart; + + /** PO Enquiry Date 止,含当天。 */ + private String enquiryDateEnd; + + /** PO Issue Date 起,含当天,对应 order_date。 */ + private String issueDateStart; + + /** PO Issue Date 止,含当天。 */ + private String issueDateEnd; + + /** ETA 起,含当天。 */ + private String etaDateStart; + + /** ETA 止,含当天。 */ + private String etaDateEnd; + + /** OBD 起,含当天。 */ + private String obdDateStart; + + /** OBD 止,含当天。 */ + private String obdDateEnd; + + /** CRD 起,含当天,对应 c_crd。 */ + private String crdDateStart; + + /** CRD 止,含当天。 */ + private String crdDateEnd; } diff --git a/src/main/resources/mapper/order/PODetailMapper.xml b/src/main/resources/mapper/order/PODetailMapper.xml index 20ac9f0..aa69fdb 100644 --- a/src/main/resources/mapper/order/PODetailMapper.xml +++ b/src/main/resources/mapper/order/PODetailMapper.xml @@ -17,6 +17,83 @@ + + + + AND poh.c_planner LIKE CONCAT('%', #{query.plannerAccount}, '%') + + + AND poh.buyer LIKE CONCAT('%', #{query.buyerKeyword}, '%') + + + AND ss.supplier_name LIKE CONCAT('%', #{query.supplierNameKeyword}, '%') + + + AND poh.po_no LIKE CONCAT('%', #{query.poNoKeyword}, '%') + + + AND COALESCE(p.item, pod.item) LIKE CONCAT('%', #{query.itemKeyword}, '%') + + + AND pod.c_flexid LIKE CONCAT('%', #{query.flexidKeyword}, '%') + + + AND pod.c_telex_release = #{query.telexReleaseValue} + + + AND poh.ship_via IN + + #{shipViaItem} + + + + AND () IN + + #{statusDisplayItem} + + + + AND poh.c_destination IN + + #{destinationItem} + + + + AND CAST(poh.c_enquiry AS DATE) >= CAST(#{query.enquiryDateStart} AS DATE) + + + AND CAST(poh.c_enquiry AS DATE) <= CAST(#{query.enquiryDateEnd} AS DATE) + + + AND CAST(poh.order_date AS DATE) >= CAST(#{query.issueDateStart} AS DATE) + + + AND CAST(poh.order_date AS DATE) <= CAST(#{query.issueDateEnd} AS DATE) + + + AND CAST(pod.c_eta AS DATE) >= CAST(#{query.etaDateStart} AS DATE) + + + AND CAST(pod.c_eta AS DATE) <= CAST(#{query.etaDateEnd} AS DATE) + + + AND CAST(pod.c_obd AS DATE) >= CAST(#{query.obdDateStart} AS DATE) + + + AND CAST(pod.c_obd AS DATE) <= CAST(#{query.obdDateEnd} AS DATE) + + + AND CAST(pod.c_crd AS DATE) >= CAST(#{query.crdDateStart} AS DATE) + + + AND CAST(pod.c_crd AS DATE) <= CAST(#{query.crdDateEnd} AS DATE) + + + @@ -300,6 +377,7 @@ where pod.site = '${query.site}' + and pod.po_header_id like '%${query.poHeaderId}%' and pod.order_no like '%${query.orderNo}%' and poh.po_no like '%${query.poNo}%' @@ -479,6 +557,7 @@ where pod.site = #{query.site} + and poh.c_customer = #{query.customer} and poh.buyer like CONCAT('%', #{query.buyer}, '%') and poh.po_no like CONCAT('%', #{query.poNo}, '%')