2 天以前 f5cc69d226d73878bfb9a67b3835ff1842732ffe
src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -19,15 +19,24 @@
        s.update_user,
        s.tenant_id,
        sl.sales_contract_no,
        s.outbound_batches,
        pm.model as specification_model,
        pm.unit,
        p.product_name,
        sl.customer_name,
        spd.totalQuantity,
        sor.outboundBatches
        sor.outboundBatches,
        pl.purchase_contract_number,
        IFNULL(rs.total_return_num, 0) AS returnedQuantity,
        CASE
            WHEN IFNULL(rs.total_return_num, 0) = 0 THEN '无退货'
            WHEN IFNULL(rs.total_return_num, 0) >= spd.totalQuantity THEN '全部退货'
            ELSE '部分退货'
        END AS returnStatus
        FROM shipping_info s
        LEFT JOIN (select shipping_info_id,sum(quantity) totalQuantity from shipping_product_detail GROUP BY shipping_info_id) spd ON spd.shipping_info_id = s.id
        LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
        LEFT JOIN purchase_ledger pl ON sl.purchase_ledger_id = pl.id
        LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id and slp.type = 1
        left join product_model pm on slp.product_model_id = pm.id
        left join product p on pm.product_id = p.id
@@ -35,6 +44,16 @@
                   from stock_out_record
                   where record_type='13'and approval_status=1
                   group by record_id)sor on sor.record_id= s.id
        LEFT JOIN (
            SELECT
                si.id AS shipping_info_id,
                SUM(rsp.num) AS total_return_num
            FROM return_sale_product rsp
            LEFT JOIN return_management rm ON rm.id = rsp.return_management_id
            LEFT JOIN shipping_info si ON si.id = rm.shipping_id
            WHERE rm.status = 1
            GROUP BY si.id
        ) rs ON rs.shipping_info_id = s.id
        WHERE 1=1
        <if test="req.salesContractNo != null and req.salesContractNo != ''">
            AND sl.sales_contract_no LIKE CONCAT('%',#{req.salesContractNo},'%')
@@ -47,6 +66,9 @@
        </if>
        <if test="req.expressNumber != null and req.expressNumber != ''">
            AND s.express_number LIKE CONCAT('%',#{req.expressNumber},'%')
        </if>
        <if test="req.customerId != null">
            AND sl.customer_id = #{req.customerId}
        </if>
        order by create_time DESC
    </select>
@@ -72,6 +94,7 @@
            slp.product_category,
            slp.specification_model,
            slp.unit,
            slp.product_model_id,
            sor.outbound_batches,
            sor.stock_out_num,
            sor.batch_no,
@@ -97,10 +120,56 @@
                si.id = #{shippingId}
            </if>
        </where>
        order by sor.id
    </select>
    <select id="getShippingInfoByCustomerName" resultType="com.ruoyi.sales.pojo.ShippingInfo">
        select * from shipping_info si
        left join sales_ledger sl on si.sales_ledger_id = sl.id
        where  sl.customer_name = #{customerName}
    </select>
    <!-- 销售退货用:查询发货信息含批次号 -->
    <select id="getShippingInfoForReturn" resultType="com.ruoyi.sales.vo.ShippingInfoForReturnVo">
        SELECT
            si.id AS shippingId,
            si.shipping_no AS shippingNo,
            sl.sales_contract_no AS salesContractNo,
            sl.customer_name AS customerName,
            IFNULL(p.product_name, slp.product_category) AS productName,
            IFNULL(pm.model, slp.specification_model) AS model,
            sor.stock_out_num AS shippingQuantity,
            IFNULL(rs.total_return_num, 0) AS returnedQuantity,
            CASE
                WHEN IFNULL(rs.total_return_num, 0) = 0 THEN '无退货'
                WHEN IFNULL(rs.total_return_num, 0) >= sor.stock_out_num THEN '全部退货'
                ELSE '部分退货'
            END AS returnStatus,
            sor.batch_no AS batchNo,
            si.shipping_car_number AS shippingCarNumber,
            si.create_time AS createTime,
            CONCAT(
                IFNULL(sor.batch_no, ''),
                '-',
                IFNULL(si.shipping_car_number, ''),
                '-',
                DATE_FORMAT(si.create_time, '%Y-%m-%d')
            ) AS displayLabel
        FROM shipping_info si
        LEFT JOIN sales_ledger sl ON si.sales_ledger_id = sl.id
        LEFT JOIN sales_ledger_product slp ON si.sales_ledger_product_id = slp.id AND slp.type = 1
        LEFT JOIN product_model pm ON slp.product_id = pm.id
        LEFT JOIN product p ON pm.product_id = p.id
        LEFT JOIN stock_out_record sor ON sor.record_id = si.id AND sor.record_type = '13' AND sor.approval_status = 1
        LEFT JOIN (
            SELECT
                stock_out_record_id,
                SUM(num) AS total_return_num
            FROM return_sale_product rsp
            LEFT JOIN return_management rm ON rm.id = rsp.return_management_id
            WHERE rm.status = 1
            GROUP BY stock_out_record_id
        ) rs ON rs.stock_out_record_id = sor.id
        WHERE sl.customer_name = #{customerName}
        ORDER BY si.create_time DESC
    </select>
</mapper>