昨天 684e4306a08feeae188070f264148e6765da8dcf
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
<?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.outsourcing.mapper.OutsourcingPartnerMapper">
 
    <select id="partnerListPage" resultType="com.ruoyi.outsourcing.dto.OutsourcingPartnerDto">
        SELECT
        T1.id,
        T1.partner_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.partner_type,
        T1.is_white,
        T1.remark,
        T1.create_time,
        T1.create_user,
        T1.update_time,
        T1.tenant_id,
        T2.nick_name AS maintainUserName
        FROM outsourcing_partner T1
        LEFT JOIN sys_user T2 ON T1.maintain_user_id = T2.user_id
        <where>
            <if test="dto.partnerName != null and dto.partnerName != ''">
                AND T1.partner_name LIKE CONCAT('%',#{dto.partnerName},'%')
            </if>
            <if test="dto.partnerType != null and dto.partnerType != ''">
                AND T1.partner_type = #{dto.partnerType}
            </if>
            <if test="dto.isWhite != null">
                AND T1.is_white = #{dto.isWhite}
            </if>
        </where>
        order by T1.id desc
    </select>
 
    <select id="partnerExportList" resultType="com.ruoyi.outsourcing.excel.OutsourcingPartnerExcelDto">
        SELECT
        T1.partner_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.partner_type,
        T2.nick_name AS maintainUserName
        FROM outsourcing_partner T1
        LEFT JOIN sys_user T2 ON T1.maintain_user_id = T2.user_id
        <where>
            <if test="dto.partnerName != null and dto.partnerName != ''">
                AND T1.partner_name LIKE CONCAT('%',#{dto.partnerName},'%')
            </if>
            <if test="dto.partnerType != null and dto.partnerType != ''">
                AND T1.partner_type = #{dto.partnerType}
            </if>
            <if test="dto.isWhite != null">
                AND T1.is_white = #{dto.isWhite}
            </if>
        </where>
        order by T1.id desc
    </select>
 
    <!-- 往来列表:顶层 from 是子查询,数据权限拦截器天然跳过;两侧口径必须一致,明细侧显式标记跳过 -->
    <select id="partnerTransactions" resultType="com.ruoyi.outsourcing.vo.OutsourcingPartnerTransactionsVo">
        select T1.partner_id,
               op.partner_name,
               T1.contractAmounts,
               IFNULL(T2.paidAmount, 0) AS paidAmount,
               IFNULL(T3.receiptAmount, 0) AS receiptAmount,
               T1.contractAmounts - IFNULL(T2.paidAmount, 0) AS payableAmount
        from (select partner_id, sum(contract_amount) as contractAmounts
              from outsourcing_order
              where status in (1, 2)
              group by partner_id) T1
        left join (select party_id, sum(amount) as paidAmount
                   from payment_record
                   where party_type = 3 and direction = 1
                   group by party_id) T2 on T2.party_id = T1.partner_id
        left join (select party_id, sum(amount) as receiptAmount
                   from payment_record
                   where party_type = 3 and direction = 2
                   group by party_id) T3 on T3.party_id = T1.partner_id
        inner join outsourcing_partner op on T1.partner_id = op.id
        <where>
            <if test="partnerName != null and partnerName != ''">
                AND op.partner_name LIKE CONCAT('%',#{partnerName},'%')
            </if>
        </where>
        order by T1.partner_id desc
    </select>
 
    <!-- 往来明细:顶层 from 是 outsourcing_order,会被拦截器追加 create_user/dept_id 条件,
         与列表口径不一致会导致「列表有应付、明细 0 行」,故用 /*data_scope*/ 显式跳过 -->
    <select id="partnerTransactionsDetails"
            resultType="com.ruoyi.outsourcing.vo.OutsourcingPartnerTransactionsDetailsVo">
        select /*data_scope*/ oo.id as outsourcingOrderId,
               oo.order_no,
               oo.partner_id,
               oo.partner_name,
               oo.apply_date,
               oo.contract_amount,
               oo.status,
               IFNULL(T1.paidAmount, 0) AS paidAmount,
               oo.contract_amount - IFNULL(T1.paidAmount, 0) AS payableAmount
        from outsourcing_order oo
        left join (select party_id, sum(amount) as paidAmount
                   from payment_record
                   where party_type = 3 and direction = 1
                   group by party_id) T1 on T1.party_id = oo.partner_id
        where oo.partner_id = #{partnerId}
          and oo.status in (1, 2)
        order by oo.id desc
    </select>
 
</mapper>