SELECT paid.shop_id AS shopId, IFNULL( payAmount, 0 )AS payAmount, IFNULL( discountAmount, 0 )AS discountAmount, IFNULL( payCount, 0 )AS payCount, IFNULL( refundAmount, 0 )AS refundAmount, IFNULL( refundCount, 0 )AS refundCount, IFNULL( ( IFNULL(payAmount,0) - IFNULL(refundAmount,0) ), 0 ) AS amount FROM ( SELECT IFNULL( SUM( pay_order_v2.pay_amount ) / 100, 0 ) AS payAmount, COUNT( 0 ) AS payCount, 0 AS discountAmount, shop_id FROM order_master_v2 LEFT JOIN pay_order_v2 ON pay_order_v2.m_order_number = order_master_v2.order_number WHERE order_master_v2.order_type != '3' AND pay_order_v2.pay_type NOT IN ('29','30') AND order_master_v2.org_id = #{orgId} AND order_master_v2.shop_id = #{shopId} AND pay_order_v2.created_at >= #{createBegin} AND pay_order_v2.created_at <= #{createEnd} AND pay_order_v2.pay_type IN #{payTypeItem} AND ( pay_order_v2.pay_status = 2 OR pay_order_v2.pay_status = 5 OR pay_order_v2.pay_status = 4 ) GROUP BY shop_id ) AS paid LEFT JOIN ( SELECT IFNULL( SUM( refunded_amount ) / 100, 0 ) refundAmount, COUNT( 0 ) refundCount, shop_id FROM order_master_v2 LEFT JOIN pay_refund_order_v2 ON pay_refund_order_v2.m_order_number = order_master_v2.order_number WHERE order_master_v2.order_type != '3' AND pay_refund_order_v2.pay_type NOT IN ('29','30') AND order_master_v2.org_id = #{orgId} AND order_master_v2.shop_id = #{shopId} AND pay_refund_order_v2.created_at >= #{createBegin} AND pay_refund_order_v2.created_at <= #{createEnd} AND pay_refund_order_v2.pay_type IN #{payTypeItem} AND pay_refund_order_v2.refund_status = 2 GROUP BY shop_id ) AS refund ON refund.shop_id = paid.shop_id update order_master_v2 set order_status=#{payStatus} where order_number=#{orderNumber} insert into pay_order_v2(m_order_number,trade_id,device_id,device_name,description,pay_type,pay_type_name,pay_amount,refunded_amount, time_expire,pay_status,pay_time,version,trade_type,created_at,created_by,updated_by,updated_at) values (#{orderNumber},#{tradeId},#{deviceId},#{deviceName},#{description},#{payType},#{payTypeName},#{realPayAmount},#{refundAmount}, now(),#{payStatus},now(),1,"NATIVE",now(),"system","system",now())