Browse Source

优化订单列表的查询SQL语句

xian 6 years ago
parent
commit
18f462f22d

+ 16 - 3
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -119,16 +119,29 @@ public class SalesOrderServiceImpl implements SalesOrderService {
 
     @Override
     public PagedResult<SalesOrder> listSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
-        PageHelper.startPage(pageNO, pageSize, isTotalNum);
+        salesOrder.setStartOrderNO((pageNO-1) * pageSize);
+        salesOrder.setEndOrderNO(pageNO * pageSize);
         //查询订单列表信息
-        List<SalesOrder> orderList = salesOrderMapper.listSalesOrder(salesOrder);
+        List<SalesOrder> orderList = salesOrderMapper.listSalesOrderNew(salesOrder);
         for(SalesOrder so : orderList){
             SalesOrderItem salesOrderItem = new SalesOrderItem();
             salesOrderItem.setItemOrderId(so.getSalesId());
             List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem);
             so.setSalesOrderItemList(salesOrderItemList);
         }
-        return PageUtil.getPage(orderList);
+        PagedResult<SalesOrder> result = PageUtil.getPage(orderList);
+        // 查询分页的数据
+        int count = salesOrderMapper.listSalesOrderNum(salesOrder);
+        result.setTotal(count);
+        if(count%pageSize==0){
+            count=count/pageSize;
+        } else{
+            count=count/pageSize+1;
+        }
+        result.setPages(count);
+        result.setPageNo(pageNO);
+
+        return result;
     }
 
     @Override

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java

@@ -43,6 +43,12 @@ public interface SalesOrderMapper {
      * @return
      */
     List<SalesOrder> listSalesOrder (SalesOrder salesOrder);
+    /**
+     * 【New】获取订单集合
+     * @param salesOrder
+     * @return
+     */
+    List<SalesOrder> listSalesOrderNew (SalesOrder salesOrder);
 
     /**
      * 仓库-代发货页面

+ 165 - 78
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml

@@ -58,6 +58,102 @@
     where sales_id = #{salesId}
   </select>
 
+
+    <!-- 【New】新建查询订单列表SQL -->
+    <select id="listSalesOrderNew" resultType="SalesOrder" parameterType="SalesOrder" >
+        SELECT
+            temp.*,
+            trsc.company_name companyName,
+            trsi.store_name  storeName,
+            ci.customer_is_solve customerIsSolve,
+            od.batch_create_time  batchCreateTime
+        FROM
+        (
+            SELECT
+            *
+            FROM
+            tb_rst_sales_order_info soi
+            <where>
+                <if test="salesIsDownload !=null and salesIsDownload !=''">
+                    AND sales_is_download = #{salesIsDownload}
+                </if>
+                <if test="salesShippingStatus !=null">
+                    AND sales_shipping_status = #{salesShippingStatus}
+                </if>
+                <if test="salesStatus !=null">
+                    AND sales_status = #{salesStatus}
+                </if>
+                <if test="salesOrderStatus !=null">
+                    AND sales_order_status = #{salesOrderStatus}
+                </if>
+                <if test="salesDeliver !=null">
+                    AND sales_deliver = #{salesDeliver}
+                </if>
+                <if test="salesStoreId !=null and salesStoreId !=''">
+                    AND sales_store_id = #{salesStoreId}
+                </if>
+                <if test="salesPostFirm !=null and salesPostFirm !=''">
+                    AND sales_post_firm = #{salesPostFirm}
+                </if>
+                <if test="salesCompanyId !=null and salesCompanyId !=''">
+                    AND sales_company_id = #{salesCompanyId}
+                </if>
+                <if test="salesId !=null">
+                    AND sales_id = #{salesId}
+                </if>
+                <if test="salesOrderId !=null and salesOrderId !=''">
+                    AND sales_orderId = #{salesOrderId}
+                </if>
+                <if test="salesDealCode !=null and salesDealCode !=''">
+                    AND sales_deal_code = #{salesDealCode}
+                </if>
+                <if test="salesAddressTel !=null and salesAddressTel !=''">
+                    AND sales_address_tel like CONCAT('%',#{salesAddressTel},'%')
+                </if>
+                <if test="salesAddressName !=null and salesAddressName !=''">
+                    AND sales_address_name like CONCAT('%',#{salesAddressName},'%')
+                </if>
+                <if test="salesBatchId !=null and salesBatchId !=''">
+                    AND sales_batch_id = #{salesBatchId}
+                </if>
+                <if test="salesAddressInfo !=null and salesAddressInfo !=''">
+                    AND sales_address_info like CONCAT('%',#{salesAddressInfo},'%')
+                </if>
+                <if test="itemProductName !=null and itemProductName !=''">
+                    AND oi.item_product_color like CONCAT('%',#{itemProductName},'%')
+                </if>
+                <if test="startDate != null and startDate != ''">
+                    AND sales_create_time <![CDATA[>=]]> #{startDate}
+                </if>
+                <if test="endDate != null and endDate != ''">
+                    AND sales_create_time <![CDATA[<=]]> #{endDate}
+                </if>
+                <if test="salesAdminId != null ">
+                    AND sales_admin_id = #{salesAdminId}
+                </if>
+                <if test="salesAddType != null ">
+                    AND sales_add_type = #{salesAddType}
+                </if>
+                <if test="salesIds != null and salesIds != ''">
+                    AND sales_id IN
+                    <foreach collection="salesIds" item="node" index="index" separator="," open="(" close=")">
+                        #{node}
+                    </foreach >
+                </if>
+            </where>
+            GROUP BY
+            soi.sales_id
+            ORDER BY
+            soi.sales_id DESC
+            LIMIT #{startOrderNO}, #{endOrderNO}
+        ) temp
+        LEFT JOIN tb_rst_sales_company trsc ON temp.sales_company_id = trsc.company_id
+        LEFT JOIN tb_rst_store_info trsi ON temp.sales_store_id = trsi.store_id
+        LEFT JOIN tb_rst_order_batch od ON temp.sales_batch_id = od.batch_id
+        LEFT JOIN tb_rst_customer_info ci ON temp.sales_customer_id = ci.customer_id
+        LEFT JOIN tb_rst_sales_order_item oi ON temp.sales_id = oi.item_order_id
+    </select>
+
   <!-- 订单集合 -->
   <select id="listSalesOrder" resultType="SalesOrder" parameterType="SalesOrder" >
     select
@@ -234,89 +330,80 @@
 
     <!-- 订单数量 -->
     <select id="listSalesOrderNum" resultType="Integer" parameterType="SalesOrder" >
-    SELECT COUNT(0)
-    FROM (
         select
-          tb_rst_sales_order_info.sales_id
+          count(tb_rst_sales_order_info.sales_id)
         from tb_rst_sales_order_info
-        LEFT JOIN tb_rst_sales_company trsc ON tb_rst_sales_order_info.sales_company_id = trsc.company_id
-        LEFT JOIN tb_rst_store_info trsi ON tb_rst_sales_order_info.sales_store_id = trsi.store_id
-        LEFT JOIN tb_rst_order_batch od ON tb_rst_sales_order_info.sales_batch_id = od.batch_id
-        LEFT JOIN tb_rst_customer_info ci ON tb_rst_sales_order_info.sales_customer_id = ci.customer_id
-        LEFT JOIN tb_rst_sales_order_item oi ON tb_rst_sales_order_info.sales_id = oi.item_order_id
         <where>
-                <if test="salesIsDownload !=null and salesIsDownload !=''">AND sales_is_download = #{salesIsDownload}
-                </if>
-                <if test="
-            salesShippingStatus !=null">
-                    AND sales_shipping_status = #{salesShippingStatus}
-                </if>
-                <if test="salesDeliver !=null">
-                    AND sales_deliver = #{salesDeliver}
-                </if>
-                <if test="salesStatus !=null">
-                    AND sales_status = #{salesStatus}
-                </if>
-                <if test="salesOrderStatus !=null">
-                    AND sales_order_status = #{salesOrderStatus}
-                </if>
-                <if test="salesStoreId !=null and salesStoreId !=''">
-                    AND sales_store_id = #{salesStoreId}
-                </if>
-                <if test="salesPostFirm !=null and salesPostFirm !=''">
-                    AND sales_post_firm = #{salesPostFirm}
-                </if>
-                <if test="salesCompanyId !=null and salesCompanyId !=''">
-                    AND sales_company_id = #{salesCompanyId}
-                </if>
-                <if test="salesId !=null">
-                    AND sales_id = #{salesId}
-                </if>
-                <if test="salesOrderId !=null and salesOrderId !=''">
-                    AND sales_orderId = #{salesOrderId}
-                </if>
-                <if test="salesDealCode !=null and salesDealCode !=''">
-                    AND sales_deal_code = #{salesDealCode}
-                </if>
-                <if test="salesAddressTel !=null and salesAddressTel !=''">
-                    AND sales_address_tel like CONCAT('%',#{salesAddressTel},'%')
-                </if>
-                <if test="salesAddressName !=null and salesAddressName !=''">
-                    AND sales_address_name like CONCAT('%',#{salesAddressName},'%')
-                </if>
-                <if test="salesBatchId !=null and salesBatchId !=''">
-                    AND sales_batch_id = #{salesBatchId}
-                </if>
-                <if test="salesAddressInfo !=null and salesAddressInfo !=''">
-                    AND sales_address_info like CONCAT('%',#{salesAddressInfo},'%')
-                </if>
-                <if test="itemProductName !=null and itemProductName !=''">
-                    AND oi.item_product_color like CONCAT('%',#{itemProductName},'%')
-                </if>
-                <if test="startDate != null and startDate != ''">
-                    AND sales_create_time <![CDATA[>=]]> #{startDate}
-                </if>
-                <if test="endDate != null and endDate != ''">
-                    AND sales_create_time <![CDATA[<=]]> #{endDate}
-                </if>
-                <if test="salesAdminId != null ">
-                    AND sales_admin_id = #{salesAdminId}
-                </if>
-                <if test="salesAddType != null ">
-                    AND sales_add_type = #{salesAddType}
-                </if>
-                <if test="salesIds != null and salesIds != ''">
-                    AND sales_id IN
-                    <foreach collection="salesIds" item="node" index="index" separator="," open="(" close=")">
-                        #{node}
-                    </foreach >
-                </if>
-            </where>
-            GROUP BY tb_rst_sales_order_info.sales_id
-        )xx
+            <if test="salesIsDownload !=null and salesIsDownload !=''">
+                AND sales_is_download = #{salesIsDownload}
+            </if>
+            <if test="salesShippingStatus !=null">
+                AND sales_shipping_status = #{salesShippingStatus}
+            </if>
+            <if test="salesDeliver !=null">
+                AND sales_deliver = #{salesDeliver}
+            </if>
+            <if test="salesStatus !=null">
+                AND sales_status = #{salesStatus}
+            </if>
+            <if test="salesOrderStatus !=null">
+                AND sales_order_status = #{salesOrderStatus}
+            </if>
+            <if test="salesStoreId !=null and salesStoreId !=''">
+                AND sales_store_id = #{salesStoreId}
+            </if>
+            <if test="salesPostFirm !=null and salesPostFirm !=''">
+                AND sales_post_firm = #{salesPostFirm}
+            </if>
+            <if test="salesCompanyId !=null and salesCompanyId !=''">
+                AND sales_company_id = #{salesCompanyId}
+            </if>
+            <if test="salesId !=null">
+                AND sales_id = #{salesId}
+            </if>
+            <if test="salesOrderId !=null and salesOrderId !=''">
+                AND sales_orderId = #{salesOrderId}
+            </if>
+            <if test="salesDealCode !=null and salesDealCode !=''">
+                AND sales_deal_code = #{salesDealCode}
+            </if>
+            <if test="salesAddressTel !=null and salesAddressTel !=''">
+                AND sales_address_tel like CONCAT('%',#{salesAddressTel},'%')
+            </if>
+            <if test="salesAddressName !=null and salesAddressName !=''">
+                AND sales_address_name like CONCAT('%',#{salesAddressName},'%')
+            </if>
+            <if test="salesBatchId !=null and salesBatchId !=''">
+                AND sales_batch_id = #{salesBatchId}
+            </if>
+            <if test="salesAddressInfo !=null and salesAddressInfo !=''">
+                AND sales_address_info like CONCAT('%',#{salesAddressInfo},'%')
+            </if>
+            <if test="itemProductName !=null and itemProductName !=''">
+                AND oi.item_product_color like CONCAT('%',#{itemProductName},'%')
+            </if>
+            <if test="startDate != null and startDate != ''">
+                AND sales_create_time <![CDATA[>=]]> #{startDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND sales_create_time <![CDATA[<=]]> #{endDate}
+            </if>
+            <if test="salesAdminId != null ">
+                AND sales_admin_id = #{salesAdminId}
+            </if>
+            <if test="salesAddType != null ">
+                AND sales_add_type = #{salesAddType}
+            </if>
+            <if test="salesIds != null and salesIds != ''">
+                AND sales_id IN
+                <foreach collection="salesIds" item="node" index="index" separator="," open="(" close=")">
+                    #{node}
+                </foreach >
+            </if>
+        </where>
     </select>
 
-  <!-- 订单项集合 -->
+    <!-- 订单项集合 -->
   <select id="listSalesOrderItem" resultType="SalesOrderItem" parameterType="SalesOrderItem" >
         SELECT
             item_id,