liding
20 小时以前 820e9e9e5e4ce7e8fb477ae8f2573dab1f2074de
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<?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.basic.mapper.SupplierManageMapper">
 
    <select id="supplierListPage" resultType="com.ruoyi.basic.dto.SupplierManageDto">
        SELECT
        T1.id,
        T1.supplier_name,
        T1.taxpayer_identification_num,
        T1.company_address,
        T1.company_phone,
        T1.bank_account_name,
        T1.bank_account_num,
        T1.contact_user_name,
        T1.contact_user_phone,
        T1.maintain_user_id,
        T1.maintain_time,
        T1.create_time,
        T1.create_user,
        T1.update_time,
        T1.update_user,
        T1.tenant_id,
        T1.is_white,
        T2.nick_name AS maintainUserName,
        T1.supplier_type
        FROM supplier_manage T1
        LEFT JOIN sys_user T2 ON T1.maintain_user_id = T2.user_id
        <where>
            <if test="supplierManageDto.supplierName != null and supplierManageDto.supplierName != '' ">
                AND T1.supplier_name LIKE CONCAT('%',#{supplierManageDto.supplierName},'%')
            </if>
            <if test="supplierManageDto.isWhite != null">
                AND T1.is_white = #{supplierManageDto.isWhite}
            </if>
        </where>
        order by T1.id desc
    </select>
 
    <select id="supplierExportList" resultType="com.ruoyi.basic.excel.SupplierManageExcelDto">
        SELECT
        T1.id,
        T1.supplier_name,
        T1.taxpayer_identification_num,
        T1.company_address,
        T1.company_phone,
        T1.bank_account_name,
        T1.bank_account_num,
        T1.contact_user_name,
        T1.contact_user_phone,
        T1.maintain_user_id,
        T1.maintain_time,
        T1.create_time,
        T1.create_user,
        T1.update_time,
        T1.update_user,
        T1.tenant_id,
        T1.is_white,
        T2.nick_name AS maintainUserName
        FROM supplier_manage T1
        LEFT JOIN sys_user T2 ON T1.maintain_user_id = T2.user_id
        <where>
            <if test="supplierManageDto.supplierName != null and supplierManageDto.supplierName != '' ">
                AND T1.supplier_name LIKE CONCAT('%',#{supplierManageDto.supplierName},'%')
            </if>
            <if test="supplierManageDto.isWhite != null">
                AND T1.is_white = #{supplierManageDto.isWhite}
            </if>
        </where>
    </select>
    <select id="supplierTransactions" resultType="com.ruoyi.purchase.vo.SupplierTransactionsVo">
        select T1.supplier_id,
               sm.supplier_name,
               T1.contractAmounts,
               IFNULL(T2.paymentAmount, 0) AS paymentAmount,
               IFNULL(T3.InboundAmount, 0) - IFNULL(T4.returnAmount, 0) AS payableAmount
        from (select supplier_id, sum(contract_amount) as contractAmounts from purchase_ledger group by supplier_id) T1
        left join (select supplier_id, sum(payment_amount) as paymentAmount from account_purchase_payment group by supplier_id) T2 on T1.supplier_id = T2.supplier_id
        left join (
            SELECT
                pl.supplier_id,
                sum(sir.stock_in_num * slp.tax_inclusive_unit_price) AS InboundAmount
            FROM stock_in_record sir
                     -- 10 类型才关联质检表
                     LEFT JOIN quality_inspect qi ON sir.record_type = 10 AND sir.record_id = qi.id
                -- 动态关联采购(自动适配 7 和 10)
                     LEFT JOIN purchase_ledger pl
                               ON pl.id = IF(sir.record_type = 7, sir.record_id, qi.purchase_ledger_id)
                -- 产品关联不动
                     LEFT JOIN sales_ledger_product slp ON pl.id = slp.sales_ledger_id
            -- 条件
            WHERE sir.approval_status = 1 AND slp.type = 2
              AND sir.record_type IN ('7','10')
            group by pl.supplier_id
        ) T3 on T3.supplier_id=T1.supplier_id
        left join (
            select
                supplier_id,
                sum(total_amount) as returnAmount
            from purchase_return_orders pro
            group by supplier_id
        ) T4 on T4.supplier_id=T1.supplier_id
        left join supplier_manage sm on T1.supplier_id = sm.id
        <where>
            <if test="supplierName!=null and supplierName!=''">
                AND sm.supplier_name LIKE CONCAT('%',#{supplierName},'%')
            </if>
        </where>
        order by T1.supplier_id desc
    </select>
    <select id="supplierTransactionsDetails"
            resultType="com.ruoyi.purchase.vo.SupplierTransactionsDetailsVo">
       select pl.id  purchaseLedgerId,
              pl.purchase_contract_number,
              pl.execution_date,
              pl.contract_amount,
              IFNULL(T1.paymentAmount, 0) AS paymentAmount,
              IFNULL(T2.InboundAmount, 0) - IFNULL(T3.returnAmount, 0) AS payableAmount
       from purchase_ledger pl
       left join (
           select
               pl.id,
               sum(app.payment_amount) as paymentAmount
           from account_purchase_payment app
           left join account_payment_application apa on app.account_payment_application_id = apa.id
           left join stock_in_record sir on FIND_IN_SET(sir.id, apa.stock_in_record_ids) > 0
               -- 10 类型才关联质检表
           LEFT JOIN quality_inspect qi ON sir.record_type = 10 AND sir.record_id = qi.id
               -- 动态关联采购(自动适配 7 和 10)
           LEFT JOIN purchase_ledger pl
                     ON pl.id = IF(sir.record_type = 7, sir.record_id, qi.purchase_ledger_id)
           WHERE sir.approval_status = 1
             AND sir.record_type IN ('7','10')
           group by pl.id
       )T1 on T1.id = pl.id
       left join (
           SELECT
               pl.id,
               sum(sir.stock_in_num * slp.tax_inclusive_unit_price) AS InboundAmount
           FROM stock_in_record sir
                    -- 10 类型才关联质检表
                    LEFT JOIN quality_inspect qi ON sir.record_type = 10 AND sir.record_id = qi.id
               -- 动态关联采购(自动适配 7 和 10)
                    LEFT JOIN purchase_ledger pl
                              ON pl.id = IF(sir.record_type = 7, sir.record_id, qi.purchase_ledger_id)
               -- 产品关联不动
                    LEFT JOIN sales_ledger_product slp ON pl.id = slp.sales_ledger_id
           -- 条件
           WHERE sir.approval_status = 1 AND slp.type = 2
             AND sir.record_type IN ('7','10')
           group by pl.id
       )T2 on T2.id = pl.id
       left join (
           select pl.id,
                  sum(pro.total_amount) as returnAmount
           from purchase_return_orders pro
                    left join purchase_ledger pl on pro.purchase_ledger_id = pl.id
           group by pl.id
       )T3 on T3.id = pl.id
       where pl.supplier_id = #{supplierId}
       order by pl.id desc
    </select>
 
</mapper>