廖井涛
2024-04-23 2f894921e5cf74910805f08a5e3180b68ac09e18
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -5,24 +5,40 @@
<mapper namespace="com.example.erp.mapper.sd.OrderMapper">
    <select id="selectMaxOrderId">
        select
            COUNT(a.order_id)
           ifnull(SUBSTR(max(order_id) from 9),0)
        from
            `order` as a
        where
            date(a.create_time) = curdate()
        order by id desc,order_id   desc limit  1
    </select>
    
    <update id="updateOrderParameter">
        update `order` o
        left join
            (select a.order_id,sum(a.perimeter) as aa,sum(a.quantity) as b,sum(a.compute_gross_area)  as c
             from sd.order_detail as a group by a.order_id)  od
            (select a.order_id,
                    round(sum(a.perimeter),2) as aa,
                    sum(a.quantity) as b,
                    sum(a.compute_gross_area)  as c,
                   sum(a.gross_amount) as 'detailAmount'
             from sd.order_detail as a group by a.order_id
            ) as od
            on o.order_id = od.order_id
        left join (select oom.order_id,
                          sum(oom.money) as 'money'
                   from order_other_money as oom
                   where
                       oom.order_id = #{orderId}
                   group by oom.order_id
                   ) as c
        on c.order_id = o.order_id
        set
            o.money = ifnull(od.detailAmount,0)+ifnull(c.money,0),
            o.quantity = od.b,
            o.area = od.c,
            o.perimeter= od.aa
            o.perimeter= od.aa,
            o.other_money = ifnull(c.money,0)
        where
            o.order_id = #{orderId}
@@ -30,10 +46,13 @@
    
    <select id="getOrderList">
        select
            *
            *,
        sum(fgi.quantity_available) as goodsQuantity
        from
            `order` as o
        where  o.create_time>=#{startDate} and o.create_time &lt;= #{endDate}
        left join mm.finished_goods_inventory as  fgi
        on o.order_id = fgi.order_id
        where  date(o.create_time)>=#{startDate} and date(o.create_time) &lt;= #{endDate}
          <if test="orderType!= null and orderType != ''">
               and o.create_order = #{orderType}
@@ -44,10 +63,10 @@
           </if>
           <if test="order.customerId != null and order.customerId != ''">
               and o.customer_id REGEXP #{customerId}
               and o.customer_id REGEXP #{order.customerId}
           </if>
           <if test="order.customerName != null and order.customerName != ''">
               and o.customer_name REGEXP #{customerName}
               and o.customer_name REGEXP #{order.customerName}
           </if>
           <if test="order.project != null and order.project != ''">
               and o.project REGEXP #{order.project}
@@ -60,7 +79,7 @@
           </if>
           <if test="order.area != null and order.area != ''">
               and o.area REGEXP #{order.area}
               and o.area REGEXP REGEXP_REPLACE(#{order.area}, '\\.0+$', '')
           </if>
           <if test="order.createTime != null and order.createTime != ''">
               and date(o.create_time) = #{order.createTime}
@@ -90,17 +109,18 @@
           <if test="order.deliveryAddress != null and order.deliveryAddress != ''">
               and o.delivery_address REGEXP #{order.deliveryAddress}
           </if>
        group by o.id
        order by o.id desc
        limit #{offset},#{pageSize}
    </select>
    <select id="getPageTotal">
        select
            CEILING(count(o.id)/#{pageSize})
            CEILING(count(o.id)/#{pageSize}) as 'pageTotal',
            count(o.id) as 'total'
        from
        `order` as o
        where o.create_time>=#{startDate} and o.create_time &lt;= #{endDate}
        where date (o.create_time)>=#{startDate} and date(o.create_time) &lt;= #{endDate}
            <if test="orderType!= null and orderType != ''">
                and o.create_order = #{orderType}
            </if>
@@ -110,10 +130,10 @@
            </if>
            <if test="order.customerId != null and order.customerId != ''">
                and o.customer_id REGEXP #{customerId}
                and o.customer_id REGEXP #{order.customerId}
            </if>
            <if test="order.customerName != null and order.customerName != ''">
                and o.customer_name REGEXP #{customerName}
                and o.customer_name REGEXP #{order.customerName}
            </if>
            <if test="order.project != null and order.project != ''">
                and o.project REGEXP #{order.project}
@@ -156,9 +176,32 @@
            <if test="order.deliveryAddress != null and order.deliveryAddress != ''">
                and o.delivery_address REGEXP #{order.deliveryAddress}
            </if>
        order by o.id desc
        limit #{offset},#{pageSize}
    </select>
    <update id="reviewOrderById">
        update `order` set order_review = #{status} where order_id = #{id}
    </update>
    <update id="reviewProcessById">
        update `order` set process_review = #{status} where order_id = #{id}
    </update>
    <update id="updateMoney">
        update `order` set money = #{order.money} where order_id = #{order.orderId}
    </update>
    <update id="cancelOrder">
        update `order` as a set
            a.create_order = - a.create_order,
            a.process_review = - a.process_review,
            a.order_review = - a.order_review,
            a.production_order = - a.production_order,
            a.processing_card =  - a.processing_card,
            a.warehousing = - a.warehousing,
            a.delivery = - a.delivery
        where order_id = #{order.orderId}
    </update>
</mapper>