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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?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.stock.mapper.ProductBorrowMapper">
 
    <resultMap id="ProductBorrowDtoMap" type="com.ruoyi.stock.dto.ProductBorrowDto">
        <id column="id" property="id"/>
        <result column="borrow_no" property="borrowNo"/>
        <result column="product_model_id" property="productModelId"/>
        <result column="batch_no" property="batchNo"/>
        <result column="borrow_quantity" property="borrowQuantity"/>
        <result column="returned_quantity" property="returnedQuantity"/>
        <result column="borrower_id" property="borrowerId"/>
        <result column="borrower_name" property="borrowerName"/>
        <result column="borrow_time" property="borrowTime"/>
        <result column="expected_return_time" property="expectedReturnTime"/>
        <result column="approval_status" property="approvalStatus"/>
        <result column="status" property="status"/>
        <result column="remark" property="remark"/>
        <result column="tenant_id" property="tenantId"/>
        <result column="dept_id" property="deptId"/>
        <result column="create_user" property="createUser"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="product_name" property="productName"/>
        <result column="model" property="model"/>
        <result column="product_code" property="productCode"/>
        <result column="unit" property="unit"/>
    </resultMap>
 
    <select id="listPage" resultMap="ProductBorrowDtoMap">
        WITH RECURSIVE product_tree AS (
            SELECT id
            FROM product
            WHERE id = #{ew.topParentProductId}
            UNION ALL
            SELECT p.id
            FROM product p
            INNER JOIN product_tree pt ON p.parent_id = pt.id
        )
        SELECT
            pb.*,
            p.product_name,
            pm.model,
            pm.product_code,
            pm.unit
        FROM product_borrow pb
        LEFT JOIN product_model pm ON pb.product_model_id = pm.id
        LEFT JOIN product p ON pm.product_id = p.id
        <where>
            <if test="ew.borrowNo != null and ew.borrowNo != ''">
                AND pb.borrow_no LIKE CONCAT('%', #{ew.borrowNo}, '%')
            </if>
            <if test="ew.productModelId != null">
                AND pb.product_model_id = #{ew.productModelId}
            </if>
            <if test="ew.borrowerId != null">
                AND pb.borrower_id = #{ew.borrowerId}
            </if>
            <if test="ew.borrowerName != null and ew.borrowerName != ''">
                AND pb.borrower_name LIKE CONCAT('%', #{ew.borrowerName}, '%')
            </if>
            <if test="ew.approvalStatus != null">
                AND pb.approval_status = #{ew.approvalStatus}
            </if>
            <if test="ew.status != null">
                AND pb.status = #{ew.status}
            </if>
            <if test="ew.deptId != null">
                AND pb.dept_id = #{ew.deptId}
            </if>
            <if test="ew.topParentProductId != null and ew.topParentProductId > 0">
                AND p.id IN (SELECT id FROM product_tree)
            </if>
            <if test="ew.model != null and ew.model != ''">
                AND pm.model LIKE CONCAT('%', #{ew.model}, '%')
            </if>
        </where>
        ORDER BY pb.create_time DESC
    </select>
 
    <select id="selectDetailById" resultMap="ProductBorrowDtoMap">
        SELECT
            pb.*,
            p.product_name,
            pm.model,
            pm.product_code,
            pm.unit
        FROM product_borrow pb
        LEFT JOIN product_model pm ON pb.product_model_id = pm.id
        LEFT JOIN product p ON pm.product_id = p.id
        WHERE pb.id = #{id}
    </select>
 
</mapper>