gaoluyang
2026-11-04 befe7f238921f08091ba22f8a6c067e9aced28ba
src/main/resources/mapper/basic/CustomerMapper.xml
@@ -9,9 +9,9 @@
    <select id="listPage" resultType="com.ruoyi.basic.vo.CustomerVo">
        select
        c.*,
        u.user_name usage_user_name,
        ifnull(u.nick_name, u.user_name) usage_user_name,
        (
        select group_concat(u2.user_name separator ', ')
        select group_concat(ifnull(u2.nick_name, u2.user_name) separator ', ')
        from customer_user cu
        left join sys_user u2 on cu.user_id = u2.user_id
        where cu.customer_id = c.id
@@ -45,8 +45,9 @@
            </if>
            <!-- 私海查询:type = 0(私海客户)或者 type = 1(公海客户)且已被分配,并且是自己领用、自己创建或者共享给自己的客户 -->
            <if test="c.type != null and c.type == 0">
                and (
                    (type = #{c.type} or (type = 1 and is_assigned = 1))
                and (type = #{c.type} or (type = 1 and is_assigned = 1))
                <!-- loginUserId 为空表示超级管理员,不受领用/共享范围限制 -->
                <if test="loginUserId != null">
                    and (
                        c.usage_user = #{loginUserId}
                        or c.create_user = #{loginUserId}
@@ -56,7 +57,7 @@
                            and cu.user_id = #{loginUserId}
                        )
                    )
                )
                </if>
            </if>
        </where>
        order by c.id desc
@@ -65,9 +66,9 @@
    <select id="list" resultType="com.ruoyi.basic.vo.CustomerVo">
        select
        c.*,
        u.user_name usage_user_name,
        ifnull(u.nick_name, u.user_name) usage_user_name,
        (
        select group_concat(u2.user_name separator ', ')
        select group_concat(ifnull(u2.nick_name, u2.user_name) separator ', ')
        from customer_user cu
        left join sys_user u2 on cu.user_id = u2.user_id
        where cu.customer_id = c.id
@@ -107,8 +108,9 @@
            </if>
            <!-- 私海查询:type = 0(私海客户)或者 type = 1(公海客户)且已被分配,并且是自己领用、自己创建或者共享给自己的客户 -->
            <if test="c.type != null and c.type == 0">
                and (
                    (type = #{c.type} or (type = 1 and is_assigned = 1))
                and (type = #{c.type} or (type = 1 and is_assigned = 1))
                <!-- loginUserId 为空表示超级管理员,不受领用/共享范围限制 -->
                <if test="loginUserId != null">
                    and (
                        c.usage_user = #{loginUserId}
                        or c.create_user = #{loginUserId}
@@ -118,7 +120,7 @@
                            and cu.user_id = #{loginUserId}
                        )
                    )
                )
                </if>
            </if>
        </where>
        order by c.id desc
@@ -142,7 +144,7 @@
            where rm.status=1
            group by sl.customer_id
        ) T4 on T4.customer_id=T1.customer_id
        left join customer c on T1.customer_id = c.id
        inner join customer c on T1.customer_id = c.id
        <where>
            <if test="customerName!=null and customerName!=''">
                AND c.customer_name LIKE CONCAT('%', #{customerName}, '%')
@@ -161,16 +163,24 @@
               IFNULL(T3.returnAmount, 0) AS returnAmount
        from sales_ledger sl
        left join (
            select
                sl.id,
                sum(ascc.collection_amount) as receiptPaymentAmount
            from account_sales_collection ascc
            left join stock_out_record sor on FIND_IN_SET(sor.id, ascc.stock_out_record_ids) > 0
            left join shipping_info s on sor.record_id = s.id
            LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
            WHERE sor.record_type='13'
              and sor.approval_status=1
            group by  sl.id
            -- 一笔收款可能关联多张出库单,先按「收款单 + 销售台账」去重再求和,
            -- 否则 FIND_IN_SET 展开后会按出库单条数把同一笔收款重复累加
            select x.id,
                   sum(x.collection_amount) as receiptPaymentAmount
            from (
                select distinct
                       ascc.id as collection_id,
                       ascc.collection_amount,
                       sl.id as id
                from account_sales_collection ascc
                left join stock_out_record sor on FIND_IN_SET(sor.id, ascc.stock_out_record_ids) > 0
                left join shipping_info s on sor.record_id = s.id
                left join sales_ledger sl on s.sales_ledger_id = sl.id
                WHERE sor.record_type='13'
                  and sor.approval_status=1
            ) x
            where x.id is not null
            group by x.id
        )T1 on T1.id = sl.id
        left join (
            select sl.id,