1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?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.ruoyi.sales.mapper.ShippingProductDetailMapper">
 
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.sales.pojo.ShippingProductDetail">
        <id column="id" property="id" />
        <result column="stock_inventory_id" property="stockInventoryId" />
        <result column="batch_no" property="batchNo" />
        <result column="quantity" property="quantity" />
        <result column="shipping_info_id" property="shippingInfoId" />
    </resultMap>
    <!--
      发货明细(发货台账「详情」里的批号表):
      批号直接取 shipping_product_detail.batch_no(发货时选定的库存批号),
      产品名称/规格用 spd.product_model_id 关联。
      注意:stock_inventory_id 在拆批发货时可能为空,不能再靠它取批号,否则批号、规格都会是空。
    -->
    <select id="getDetail" resultType="com.ruoyi.sales.dto.ShippingProductDetailDto">
        select spd.batch_no,
               coalesce(pm.model, pm_inv.model) as specification_model,
               coalesce(p.product_name, p_inv.product_name) as product_name,
               spd.quantity as delivery_quantity
        from shipping_product_detail spd
                 left join stock_inventory si on si.id = spd.stock_inventory_id
                 left join product_model pm on pm.id = spd.product_model_id
                 left join product p on p.id = pm.product_id
                 left join product_model pm_inv on pm_inv.id = si.product_model_id
                 left join product p_inv on p_inv.id = pm_inv.product_id
        where spd.shipping_info_id = #{id}
        order by spd.id
    </select>
    <select id="getDateilByShippingNo" resultType="com.ruoyi.sales.dto.ShippingProductDetailDto">
        select spd.batch_no,
               coalesce(pm.model, pm_inv.model) as specification_model,
               coalesce(p.product_name, p_inv.product_name) as product_name,
               spd.quantity as delivery_quantity
        from shipping_product_detail spd
                 left join shipping_info sp on sp.id = spd.shipping_info_id
                 left join stock_inventory si on si.id = spd.stock_inventory_id
                 left join product_model pm on pm.id = spd.product_model_id
                 left join product p on p.id = pm.product_id
                 left join product_model pm_inv on pm_inv.id = si.product_model_id
                 left join product p_inv on p_inv.id = pm_inv.product_id
        where sp.shipping_no = #{shippingNo}
        order by spd.id
    </select>
 
</mapper>