Cui Zhi Feng
2024-08-31 41a07792ef75c75ad9c94d2987f99ef5d342699a
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.mzl.flower.mapper.payment.DeliveryOrderItemMapper">
 
    <select id="selectDoItemList" resultType="com.mzl.flower.dto.response.payment.DeliveryOrderItemListDTO">
        SELECT q.id, o.order_no, o.warehouse_name, o.warehouse_location_code
            , oi.flower_name, oi.flower_unit, oi.flower_color, oi.flower_cover, oi.num
            , oi.supplier_price price, oi.flower_level
        FROM t_delivery_order_item q
        join t_order o on q.order_id = o.id
        join t_order_item oi on oi.id = q.order_item_id
        WHERE q.deleted = 0 and o.deleted = 0 and oi.deleted = 0
        and q.delivery_id = #{deliveryId}
    </select>
 
    <select id="selectDoItemCheckList" resultType="com.mzl.flower.dto.response.payment.DeliveryOrderItemCheckDTO">
        SELECT oi.id, oi.flower_name, oi.flower_unit, oi.flower_color, oi.flower_cover, oi.num
        , oi.supplier_price price, oi.flower_level, oi.status, oi.check_images, oi.check_time, oi.check_remarks
        , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'replace') replaceNum
        , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'reduce') reduceNum
        , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'lack') lackNum
        FROM t_delivery_order_item q
        join t_order_item oi on oi.id = q.order_item_id
        WHERE q.deleted = 0 and oi.deleted = 0
        and q.delivery_id = #{deliveryId}
    </select>
 
    <select id="selectDoItemListByTime" resultType="com.mzl.flower.dto.response.payment.DeliveryOrderItemStatisticsDTO">
        SELECT oi.flower_name, oi.flower_level, sum(oi.num) num, sum(oi.supplier_price*oi.num) price
        FROM t_delivery_order_item doi
        join t_delivery_order q on q.id = doi.delivery_id
        join t_order_item oi on oi.id = doi.order_item_id
        WHERE q.deleted = 0 and doi.deleted = 0
        and q.supplier_id = #{supplierId}
        <if test="startDate != null">
            AND q.create_time &gt; #{startDate}
        </if>
        <if test="endDate != null">
            AND q.create_time &lt;= #{endDate}
        </if>
        group by oi.flower_name, oi.flower_level
    </select>
 
    <select id="selectSettlementListByTime" resultType="com.mzl.flower.dto.response.payment.DeliveryOrderItemSettlementDTO">
        SELECT ois.order_item_id, oi.flower_name, oi.flower_level, oi.num, oi.supplier_price price , s.`status`
        , ois.check_num, ois.check_fee, ois.replace_num, ois.replace_fee, ois.lack_num, ois.lack_fee_supplier lackFee
        , ois.station_fee, ois.sales_fee_supplier salesFee, ois.service_fee_rate, ois.service_fee, ois.income_supplier
        , o.status_backend, o.create_time orderTime
        , (select count(1) from t_order_item_sales sa where sa.order_item_id = oi.id) salesNum
        FROM t_delivery_order_item doi
        join t_delivery_order q on q.id = doi.delivery_id
        join t_order o on o.id = q.order_id
        join t_order_item oi on oi.id = doi.order_item_id
        left join t_order_item_settlement ois on ois.order_item_id = oi.id
        left join t_order_settlement_detail sd on sd.order_item_id = oi.id
        left join t_order_settlement s on sd.settlement_id = s.id
        WHERE q.deleted = 0 and doi.deleted = 0
        and q.supplier_id = #{supplierId}
        <if test="startDate != null">
            AND q.create_time &gt; #{startDate}
        </if>
        <if test="endDate != null">
            AND q.create_time &lt;= #{endDate}
        </if>
        order by q.create_time desc
    </select>
 
    <select id="getSupplierStatisticsByTime" resultType="com.mzl.flower.dto.response.payment.DeliveryOrderItemStatisticsDTO">
        SELECT sum(oi.num) num, sum(oi.supplier_price*oi.num) price
        FROM t_delivery_order_item doi
        join t_delivery_order q on q.id = doi.delivery_id
        join t_order_item oi on oi.id = doi.order_item_id
        WHERE q.deleted = 0 and doi.deleted = 0
        and q.supplier_id = #{supplierId}
        <if test="startDate != null">
            AND q.create_time &gt; #{startDate}
        </if>
        <if test="endDate != null">
            AND q.create_time &lt;= #{endDate}
        </if>
    </select>
 
    <select id="getDoItemCount" resultType="java.lang.Integer">
        SELECT sum(oi.num)
        FROM t_delivery_order_item doi
        join t_delivery_order q on q.id = doi.delivery_id
        join t_order_item oi on oi.id = doi.order_item_id
        WHERE q.deleted = 0 and doi.deleted = 0
        and q.supplier_id = #{supplierId}
        <if test="status != null and status != ''">
            AND q.status = #{status}
        </if>
        <if test="startDate != null">
            AND q.create_time &gt; #{startDate}
        </if>
        <if test="endDate != null">
            AND q.create_time &lt;= #{endDate}
        </if>
    </select>
 
    <select id="selectDoItemList4Check" resultType="com.mzl.flower.dto.response.payment.DeliveryOrderItem4CheckDTO">
        SELECT oi.id, q.delivery_id, oi.flower_name, oi.flower_unit, oi.flower_color
        , oi.flower_cover, oi.num , oi.supplier_price price, oi.flower_level, oi.status
        , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'replace') replaceNum
        , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'reduce') reduceNum
        , (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'lack') lackNum
        FROM t_delivery_order_item q
        join t_order_item oi on oi.id = q.order_item_id
        WHERE q.deleted = 0 and oi.deleted = 0
        and q.delivery_id in
        <foreach collection="deliveryIds" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>
 
    <select id="getUnCheckCount" resultType="java.lang.Integer">
        SELECT count(1)
        FROM t_delivery_order_item doi
        join t_order_item oi on oi.id = doi.order_item_id
        WHERE oi.deleted = 0 and doi.deleted = 0
        and oi.status is null
        and doi.delivery_id = #{deliveryId}
    </select>
</mapper>