wangxiaoming před 6 roky
rodič
revize
3092a146db
18 změnil soubory, kde provedl 1039 přidání a 397 odebrání
  1. 20 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java
  2. 26 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/PostOrderNumService.java
  3. 9 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java
  4. 20 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/PostOrderNumServiceImpl.java
  5. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java
  6. 28 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/PostOrderNumMapper.java
  7. 269 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/postOrderNumMapper.xml
  8. 38 15
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  9. 1 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderController.java
  10. 1 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java
  11. 266 15
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java
  12. 4 2
      watero-rst-web/src/main/java/com/iamberry/rst/utils/ExcelUtil.java
  13. 1 1
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/list_wait_send_order.ftl
  14. 13 0
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_detail.ftl
  15. 17 5
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_list.ftl
  16. 224 118
      watero-rst-web/src/main/webapp/WEB-INF/views/order/statistics/order_statistics.ftl
  17. 96 46
      watero-rst-web/src/main/webapp/WEB-INF/views/order/statistics/post_statistics.ftl
  18. 0 192
      watero-rst-web/src/main/webapp/common/js/common/address.js

+ 20 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java

@@ -76,6 +76,8 @@ public class SalesOrder implements Serializable {
 
     private String storeEfast;               //Efast 的店铺id
 
+    private Integer orderDateType;   //时间类型  1:创建时间   2:打单时间  3:出库时间
+
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
     private Date startDate;                 //开始时间
@@ -115,6 +117,8 @@ public class SalesOrder implements Serializable {
 
     private Integer endOrderNO;
 
+    private Integer isCustmerAddOrder;  //是否是客诉添加的订单  1:是   2:不是  只用于查询,不用于添加修改,为2查询所有不是客诉的订单
+
     public Integer getStartOrderNO() {
         return startOrderNO;
     }
@@ -674,4 +678,20 @@ public class SalesOrder implements Serializable {
     public void setColorId(Integer colorId) {
         this.colorId = colorId;
     }
+
+    public Integer getOrderDateType() {
+        return orderDateType;
+    }
+
+    public void setOrderDateType(Integer orderDateType) {
+        this.orderDateType = orderDateType;
+    }
+
+    public Integer getIsCustmerAddOrder() {
+        return isCustmerAddOrder;
+    }
+
+    public void setIsCustmerAddOrder(Integer isCustmerAddOrder) {
+        this.isCustmerAddOrder = isCustmerAddOrder;
+    }
 }

+ 26 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/PostOrderNumService.java

@@ -18,6 +18,32 @@ public interface PostOrderNumService {
      */
     List<PostOrderNum> getProductNum(SalesOrder salesOrder);
 
+    /**
+     * 获取发货总数
+     * @return
+     */
+    List<PostOrderNum> getSendNum(SalesOrder salesOrder);
+
+    /**
+     * 获取出库总数
+     * @return
+     */
+    List<PostOrderNum> getDeliverNum(SalesOrder salesOrder);
+
+    /**
+     * 按照批次查询订单项,并下载,订单列表主要按照订单项来排列
+     * @param salesOrder
+     * @return
+     */
+    Integer listSalesOrderAndItemNum(SalesOrder salesOrder);
+
+    /**
+     * 按照批次查询订单项,并下载,订单列表主要按照订单项来排列
+     * @param salesOrder
+     * @return
+     */
+    List<SalesOrder>  listSalesOrderAndItem(SalesOrder salesOrder);
+
 
 
 }

+ 9 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -327,6 +327,14 @@ public interface SalesOrderService {
     List<SalesOrder> salesOrderListAndItem(SalesOrder salesOrder);
 
 
-
+    /**
+     * 订单统计列表
+     * @param pageNO
+     * @param pageSize
+     * @param salesOrder
+     * @param isTotalNum
+     * @return
+     */
+    public PagedResult<SalesOrder> salesOrderListAndItemPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum);
 
 }

+ 20 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/PostOrderNumServiceImpl.java

@@ -24,4 +24,24 @@ public class PostOrderNumServiceImpl implements PostOrderNumService {
     public List<PostOrderNum> getProductNum(SalesOrder salesOrder) {
         return postOrderNumMapper.getProductNum(salesOrder);
     }
+
+    @Override
+    public List<PostOrderNum> getSendNum(SalesOrder salesOrder) {
+        return postOrderNumMapper.getSendNum(salesOrder);
+    }
+
+    @Override
+    public List<PostOrderNum> getDeliverNum(SalesOrder salesOrder) {
+        return postOrderNumMapper.getDeliverNum(salesOrder);
+    }
+
+
+    @Override
+    public Integer listSalesOrderAndItemNum(SalesOrder salesOrder) {
+        return postOrderNumMapper.listSalesOrderAndItemNum(salesOrder);
+    }
+    @Override
+    public  List<SalesOrder> listSalesOrderAndItem(SalesOrder salesOrder) {
+        return postOrderNumMapper.listSalesOrderAndItem(salesOrder);
+    }
 }

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

@@ -1002,5 +1002,11 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         return salesOrderMapper.salesOrderListAndItem(salesOrder);
     }
 
+    @Override
+    public PagedResult<SalesOrder> salesOrderListAndItemPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
+        PageHelper.startPage(pageNO, pageSize, isTotalNum);
+        List<SalesOrder> list =  salesOrderMapper.salesOrderListAndItem(salesOrder);
+        return PageUtil.getPage(list);
+    }
 
 }

+ 28 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/PostOrderNumMapper.java

@@ -18,4 +18,32 @@ public interface PostOrderNumMapper {
      * @return
      */
     List<PostOrderNum> getProductNum(SalesOrder salesOrder);
+
+    /**
+     * 获取发货总数
+     * @return
+     */
+    List<PostOrderNum> getSendNum(SalesOrder salesOrder);
+
+    /**
+     * 获取出库总数
+     * @return
+     */
+    List<PostOrderNum> getDeliverNum(SalesOrder salesOrder);
+
+    /**
+     * 按照批次查询订单项,并下载,订单列表主要按照订单项来排列
+     * @param salesOrder
+     * @return
+     */
+    Integer listSalesOrderAndItemNum(SalesOrder salesOrder);
+
+    /**
+     * 按照批次查询订单项,并下载,订单列表主要按照订单项来排列
+     * @param salesOrder
+     * @return
+     */
+    List<SalesOrder>  listSalesOrderAndItem(SalesOrder salesOrder);
 }
+
+

+ 269 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/postOrderNumMapper.xml

@@ -14,6 +14,7 @@
         <where>
             oi.sales_status = 1
             AND sales_shipping_status > 0
+            AND sales_batch_id != 'KS00000000000001'
             <if test="salesShippingStatus !=null">
                 AND sales_shipping_status = #{salesShippingStatus}
             </if>
@@ -45,6 +46,7 @@
         <where>
             oi.sales_status = 1
             AND sales_shipping_status > 0
+            AND sales_batch_id != 'KS00000000000001'
             <if test="salesShippingStatus !=null">
                 AND sales_shipping_status = #{salesShippingStatus}
             </if>
@@ -64,6 +66,273 @@
         GROUP BY li.logistics_rst_code
     </select>
 
+    <select id="getSendNum" resultType="PostOrderNum" parameterType="SalesOrder" >
+        SELECT
+        li.logistics_id AS  logisticsId,
+        li.logistics_name AS  logisticsName,
+        li.logistics_rst_code AS  logisticsRstCode,
+        COUNT(oi.sales_id) AS logisticsSendNum
+        FROM tb_rst_logistics_info li
+        LEFT JOIN tb_rst_sales_order_info oi ON li.logistics_rst_code = oi.sales_post_firm
+        <where>
+            oi.sales_status = 1
+            AND sales_shipping_status > 0
+            AND sales_batch_id != 'KS00000000000001'
+            <if test="salesShippingStatus !=null">
+                AND sales_shipping_status = #{salesShippingStatus}
+            </if>
+            <if test="salesOrderStatus !=null">
+                AND sales_order_status = #{salesOrderStatus}
+            </if>
+            <if test="salesDeliver !=null">
+                AND sales_deliver = #{salesDeliver}
+            </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>
+        </where>
+        GROUP BY li.logistics_rst_code
+    </select>
 
 
+    <select id="getDeliverNum" resultType="PostOrderNum" parameterType="SalesOrder" >
+        SELECT
+        li.logistics_id AS  logisticsId,
+        li.logistics_name AS  logisticsName,
+        li.logistics_rst_code AS  logisticsRstCode,
+        COUNT(oi.sales_id) AS logisticsDeliverNum
+        FROM tb_rst_logistics_info li
+        LEFT JOIN tb_rst_sales_order_info oi ON li.logistics_rst_code = oi.sales_post_firm
+        <where>
+            oi.sales_status = 1
+            AND sales_shipping_status > 0
+            AND sales_batch_id != 'KS00000000000001'
+            <if test="salesShippingStatus !=null">
+                AND sales_shipping_status = #{salesShippingStatus}
+            </if>
+            <if test="salesOrderStatus !=null">
+                AND sales_order_status = #{salesOrderStatus}
+            </if>
+            <if test="salesDeliver !=null">
+                AND sales_deliver = #{salesDeliver}
+            </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>
+        </where>
+        GROUP BY li.logistics_rst_code
+    </select>
+
+
+    <!-- 按照批次查询订单项,并下载,订单列表主要按照订单项来排列 -->
+    <select id="listSalesOrderAndItemNum" parameterType="SalesOrder" resultType="Integer">
+        SELECT
+          COUNT(soi.item_id)
+        FROM
+        tb_rst_sales_order_info t
+        LEFT JOIN tb_rst_store_info si ON t.sales_store_id = si.store_id
+        LEFT JOIN tb_rst_sales_order_item soi ON t.sales_id = soi.item_order_id
+        <where>
+            <if test="isCustmerAddOrder !=null and isCustmerAddOrder == 2">
+                AND sales_batch_id != 'KS00000000000001'
+            </if>
+            <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="salesAdminId != null ">
+                AND sales_admin_id = #{salesAdminId}
+            </if>
+            <if test="salesAddType != null ">
+                AND sales_add_type = #{salesAddType}
+            </if>
+            <if test="itemProductName !=null and itemProductName !=''">
+                AND (soi.item_product_color like CONCAT('%',#{itemProductName},'%') OR soi.item_product_name LIKE CONCAT('%',#{itemProductName},'%'))
+            </if>
+            <if test="colorId !=null and colorId !=''">
+                AND soi.item_color_id = #{colorId}
+            </if>
+            <if test="orderDateType == null or orderDateType == 1">
+                <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>
+            <if test="orderDateType != null and orderDateType == 2">
+                <if test="startDate != null and startDate != ''">
+                    AND sales_send_time <![CDATA[>=]]> #{startDate}
+                </if>
+                <if test="endDate != null and endDate != ''">
+                    AND sales_send_time <![CDATA[<=]]> #{endDate}
+                </if>
+            </if>
+            <if test="orderDateType != null and orderDateType == 3">
+                <if test="startDate != null and startDate != ''">
+                    AND sales_deliver_time <![CDATA[>=]]> #{startDate}
+                </if>
+                <if test="endDate != null and endDate != ''">
+                    AND sales_deliver_time <![CDATA[<=]]> #{endDate}
+                </if>
+            </if>
+        </where>
+    </select>
+
+
+    <!-- 按照批次查询订单项,并下载,订单列表主要按照订单项来排列 -->
+    <select id="listSalesOrderAndItem" parameterType="SalesOrder" resultType="SalesOrder">
+        SELECT
+            t.*,
+            soi.*,
+            trsc.company_name companyName,
+            si.store_name storeName,
+            ci.customer_is_solve customerIsSolve
+        FROM
+            tb_rst_sales_order_info t
+        LEFT JOIN tb_rst_sales_company trsc ON t.sales_company_id = trsc.company_id
+        LEFT JOIN tb_rst_store_info si ON t.sales_store_id = si.store_id
+        LEFT JOIN tb_rst_sales_order_item soi ON t.sales_id = soi.item_order_id
+        LEFT JOIN tb_rst_customer_info ci ON t.sales_customer_id = ci.customer_id
+        <where>
+            <if test="isCustmerAddOrder !=null and isCustmerAddOrder == 2">
+                AND sales_batch_id != 'KS00000000000001'
+            </if>
+            <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="salesAdminId != null ">
+                AND sales_admin_id = #{salesAdminId}
+            </if>
+            <if test="salesAddType != null ">
+                AND sales_add_type = #{salesAddType}
+            </if>
+            <if test="itemProductName !=null and itemProductName !=''">
+                AND (soi.item_product_color like CONCAT('%',#{itemProductName},'%') OR soi.item_product_name LIKE CONCAT('%',#{itemProductName},'%'))
+            </if>
+            <if test="colorId !=null and colorId !=''">
+                AND soi.item_color_id = #{colorId}
+            </if>
+            <if test="orderDateType == null or orderDateType == 1">
+                <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>
+            <if test="orderDateType != null and orderDateType == 2">
+                <if test="startDate != null and startDate != ''">
+                    AND sales_send_time <![CDATA[>=]]> #{startDate}
+                </if>
+                <if test="endDate != null and endDate != ''">
+                    AND sales_send_time <![CDATA[<=]]> #{endDate}
+                </if>
+            </if>
+            <if test="orderDateType != null and orderDateType == 3">
+                <if test="startDate != null and startDate != ''">
+                    AND sales_deliver_time <![CDATA[>=]]> #{startDate}
+                </if>
+                <if test="endDate != null and endDate != ''">
+                    AND sales_deliver_time <![CDATA[<=]]> #{endDate}
+                </if>
+            </if>
+        </where>
+    </select>
+
 </mapper>

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

@@ -1325,9 +1325,17 @@
     <!-- 订单集合 -->
     <select id="salesOrderListAndItem" resultMap="SalesOrderAndItemMap" parameterType="SalesOrder" >
         select
-        tb_rst_sales_order_info.*
+          tb_rst_sales_order_info.*,
+          si.store_name,
+          sc.company_name
         from tb_rst_sales_order_info
+        LEFT JOIN tb_rst_store_info si ON  tb_rst_sales_order_info.sales_store_id = si.store_id
+        LEFT JOIN  tb_rst_sales_company sc ON  tb_rst_sales_order_info.sales_company_id = sc.company_id
+        LEFT JOIN tb_rst_sales_order_item oi ON tb_rst_sales_order_info.sales_id = oi.item_order_id
         <where>
+            <if test="isCustmerAddOrder !=null and isCustmerAddOrder == 2">
+                AND sales_batch_id != 'KS00000000000001'
+            </if>
             <if test="salesIsDownload !=null and salesIsDownload !=''">
                 AND sales_is_download = #{salesIsDownload}
             </if>
@@ -1373,26 +1381,41 @@
             <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 test="itemProductName !=null and itemProductName !=''">
+                AND (oi.item_product_color like CONCAT('%',#{itemProductName},'%') OR oi.item_product_name LIKE CONCAT('%',#{itemProductName},'%'))
+            </if>
+            <if test="colorId !=null and colorId !=''">
+                AND oi.item_color_id = #{colorId}
+            </if>
+            <if test="orderDateType == null or orderDateType == 1">
+                <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>
+            <if test="orderDateType != null and orderDateType == 2">
+                <if test="startDate != null and startDate != ''">
+                    AND sales_send_time <![CDATA[>=]]> #{startDate}
+                </if>
+                <if test="endDate != null and endDate != ''">
+                    AND sales_send_time <![CDATA[<=]]> #{endDate}
+                </if>
+            </if>
+            <if test="orderDateType != null and orderDateType == 3">
+                <if test="startDate != null and startDate != ''">
+                    AND sales_deliver_time <![CDATA[>=]]> #{startDate}
+                </if>
+                <if test="endDate != null and endDate != ''">
+                    AND sales_deliver_time <![CDATA[<=]]> #{endDate}
+                </if>
             </if>
         </where>
         GROUP BY tb_rst_sales_order_info.sales_id

+ 1 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminOrderController.java

@@ -737,7 +737,7 @@ public class AdminOrderController {
         ResponseJson rj = ResponseJson.getFAILURE();
         Integer num = salesOrderService.listSalesOrderAndItemNum(so);
         if(num > 5000){
-            rj.setResultMsg("下载订单超过1000条,请精确查询条件");
+            rj.setResultMsg("下载订单超过5000条,请精确查询条件");
             return rj;
         }
         return ResponseJson.getSUCCESS();

+ 1 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java

@@ -941,7 +941,7 @@ public class AdminSalesOrderController {
 
 
     /**
-     * 通知订单
+     *确认订单
      * @param request
      * @return
      * @throws Exception

+ 266 - 15
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -3,24 +3,24 @@ package com.iamberry.rst.controllers.order;
 import com.alibaba.fastjson.JSONObject;
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
+import com.iamberry.rst.core.cm.StoreInfo;
 import com.iamberry.rst.core.cm.StoreShip;
 import com.iamberry.rst.core.order.EOrderRequestData;
 import com.iamberry.rst.core.order.PostInfo;
 import com.iamberry.rst.core.order.PostOrderNum;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.PtsBatch;
 import com.iamberry.rst.core.tools.LogisticsInfo;
 import com.iamberry.rst.faces.cm.PostOrderNumService;
 import com.iamberry.rst.faces.cm.SalesOrderService;
+import com.iamberry.rst.faces.cm.StoreInfoService;
 import com.iamberry.rst.faces.cm.StoreShipService;
 import com.iamberry.rst.faces.order.LogisticsInfoService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.utils.OrderUtils;
 import com.iamberry.rst.utils.StitchAttrUtil;
-import com.iamberry.wechat.tools.AddrUtil;
-import com.iamberry.wechat.tools.DateTimeUtil;
-import com.iamberry.wechat.tools.ResponseJson;
-import com.iamberry.wechat.tools.UUIDGenerator;
+import com.iamberry.wechat.tools.*;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,6 +36,7 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -59,10 +60,15 @@ public class AwaitSendController {
     private ProductService productService;
     @Autowired
     private PostOrderNumService postOrderNumService;
+    @Autowired
+    private StoreInfoService storeInfoService;
 
 
     private static final Logger LOGGER = LoggerFactory.getLogger(AwaitSendController.class);
 
+
+    private static List<LogisticsInfo> LOGISTICSINFO_LIST;
+
     /**
      * 仓库查询待发货订单
      * @param request
@@ -395,7 +401,7 @@ public class AwaitSendController {
      *
      * @return
      */
-    @RequiresPermissions("salesOrder:confirm:salesOrder")
+    @RequiresPermissions("salesOrder:send:salesOrder")
     @RequestMapping(value = "/to_manual_delivery")
     public ModelAndView toDistributionPostFirm(HttpServletRequest request,String salesId) {
         ModelAndView mv = new ModelAndView("order/salesOrder/manual_delivery");
@@ -411,7 +417,7 @@ public class AwaitSendController {
      * @return
      */
     @ResponseBody
-    @RequiresPermissions("salesOrder:confirm:salesOrder")
+    @RequiresPermissions("salesOrder:send:salesOrder")
     @RequestMapping("/manual_delivery")
     public ResponseJson listSalesPostFirm(HttpServletRequest request, SalesOrder salesOrder) {
         ResponseJson rj = ResponseJson.getFAILURE();
@@ -712,18 +718,17 @@ public class AwaitSendController {
     @ResponseBody
     @RequiresPermissions("salesOrder:post_statistics:deliver")
     @RequestMapping("/getPostStatistics")
-    public ResponseJson getPostStatistics(HttpServletRequest request) {
+    public ResponseJson getPostStatistics(HttpServletRequest request,SalesOrder salesOrder) {
         ResponseJson rj = ResponseJson.getSUCCESS();
-        SalesOrder salesOrder = new SalesOrder();
         List<PostOrderNum> postOrderNumList = postOrderNumService.getAllNum(salesOrder);
 
         List<PostOrderNum> postProductNumList = postOrderNumService.getProductNum(salesOrder);
 
         salesOrder.setSalesShippingStatus(1);
-        List<PostOrderNum> postSendNumList = postOrderNumService.getAllNum(salesOrder);
+        List<PostOrderNum> postSendNumList = postOrderNumService.getSendNum(salesOrder);
 
         salesOrder.setSalesDeliver(2);
-        List<PostOrderNum> postDeliverNumList = postOrderNumService.getAllNum(salesOrder);
+        List<PostOrderNum> postDeliverNumList = postOrderNumService.getDeliverNum(salesOrder);
 
         postOrderNumList = this.margeList(postOrderNumList,postProductNumList);
         postOrderNumList = this.margeList(postOrderNumList,postSendNumList);
@@ -752,22 +757,268 @@ public class AwaitSendController {
                         onePostOrderNum.setLogisticsDeliverNum(twoPostOrderNum.getLogisticsDeliverNum());
                     }
                 }
-
             }
         }
         return oneList;
     }
 
     /**
-     * 跳转订单统计页面
-     *
+     * 分页查询订单列表信息
+     * @param request
+     * @param salesOrder
+     * @param pageSize
+     * @param pageNO
+     * @param totalNum
      * @return
+     * @throws Exception
      */
-    @RequiresPermissions("salesOrder:order_statistics:deliver")
     @RequestMapping(value = "/order_statistics")
-    public ModelAndView orderStatistics(HttpServletRequest request) {
+    @RequiresPermissions("salesOrder:order_statistics:deliver")
+    public ModelAndView listOrderPage(HttpServletRequest request, SalesOrder salesOrder,
+                                      @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
+                                      @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
+                                      @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
         ModelAndView mv = new ModelAndView("order/statistics/order_statistics");
+
+        //分页获取订单信息
+        PagedResult<SalesOrder> pagedResult = salesOrderService.salesOrderListAndItemPage(pageNO, pageSize, salesOrder,totalNum == 0);
+        if (totalNum != 0) {
+            pagedResult.setTotal(totalNum);
+        }
+        List<StoreInfo> listStoreInfo = storeInfoService.listStore(new StoreInfo());
+        List<LogisticsInfo> logisticsInfoList = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
+        List<ProductColor> productColorList = productService.listproductAndColor(new ProductColor());
+        StitchAttrUtil.getSa()
+                .addDatePro("yyyy-MM-dd HH:mm:ss","startDate","endDate")
+                .addNoPro("salesOrderItemList")
+                .setModelAndView(salesOrder, mv, "/admin/await_send/order_statistics", pagedResult);
+
+        mv.addObject("listStoreInfo",listStoreInfo);
+        mv.addObject("logisticsInfoList",logisticsInfoList);
+        mv.addObject("productColorList",productColorList);
+
+        return mv;
+    }
+
+
+
+    /**
+     * 下载订单,返回给各个平台
+     * @param request
+     * @return
+     * @throws IOException
+     */
+    @ResponseBody
+    @RequestMapping("/val_download_order_statistics")
+    @RequiresPermissions("salesOrder:order_statistics:deliver")
+    public ResponseJson valDownloadOrderStatistics(HttpServletRequest request,SalesOrder so) throws Exception {
+        ResponseJson rj = ResponseJson.getFAILURE();
+        Integer num = postOrderNumService.listSalesOrderAndItemNum(so);
+        if(num > 20000){
+            rj.setResultMsg("下载订单超过20000条,请精确查询条件");
+            return rj;
+        }
+        return ResponseJson.getSUCCESS();
+    }
+
+    /**
+     * 下载订单,返回给各个平台
+     * @param request
+     * @return
+     * @throws IOException
+     */
+    @RequestMapping("/download_order_statistics")
+    @RequiresPermissions("salesOrder:order_statistics:deliver")
+    public ModelAndView downloadOrderExcel(HttpServletRequest request,SalesOrder so) throws Exception {
+
+        List<SalesOrder> temporarySalesOrderList = postOrderNumService.listSalesOrderAndItem(so);
+
+        if(temporarySalesOrderList.size() > 20000){
+            return new ModelAndView().addObject("下载出错,下载数量过大");
+        }
+
+        // 准备model
+        Map<String, Object> model = new HashMap<String, Object>();
+        model.put("fileName", "订单列表");	// 下载文件名称
+
+        // 标题
+        List<String> titles = new ArrayList<String>();
+        titles.add("订单创建日期");
+        titles.add("订单编号");
+        titles.add("交易号");
+        titles.add("订单类型");
+        titles.add("姓名");
+        titles.add("电话");
+        titles.add("省");
+        titles.add("市");
+        titles.add("收货人地址");
+        titles.add("快递公司");
+        titles.add("快递单号");
+        titles.add("商品名称");
+        titles.add("商品颜色");
+        titles.add("商品数量");
+        titles.add("销售公司名称");
+        titles.add("店铺名称");
+        titles.add("打单状态");
+        titles.add("打单日期");
+        titles.add("是否出库");
+        titles.add("出库日期");
+        model.put("titles", titles);
+        PtsBatch ptsBatch = new PtsBatch();
+        List<List<Object>> countexts = new ArrayList<List<Object>>();
+        if(temporarySalesOrderList != null && temporarySalesOrderList.size() >0){
+            for (SalesOrder salesOrder : temporarySalesOrderList) {
+                List<Object> row = new ArrayList<Object>();
+                SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");
+                row.add(salesOrder.getSalesCreateTime() == null ? null:formatter.format(salesOrder.getSalesCreateTime()));
+                row.add(salesOrder.getSalesOrderId() == null ? null:salesOrder.getSalesOrderId());
+                row.add(salesOrder.getSalesDealCode() == null ? null:salesOrder.getSalesDealCode());
+                if(salesOrder.getSalesCustomerId() == null){
+                    row.add("正常订单");
+                }else{
+                    if(salesOrder.getCustomerIsSolve() == null){
+                        row.add("售后订单");
+                    }else{
+                        switch (salesOrder.getCustomerIsSolve()){
+                            case 1:
+                                row.add("售后订单(已解决)");
+                                break;
+                            case 2:
+                                row.add("售后订单(未解决)");
+                                break;
+                            case 3:
+                                row.add("售后订单(换新)");
+                                break;
+                            case 4:
+                                row.add("售后订单(维修)");
+                                break;
+                            case 5:
+                                row.add("售后订单(补发)");
+                                break;
+                            case 6:
+                                row.add("售后订单(退货)");
+                                break;
+                            case 7:
+                                row.add("售后订单(无理由退货)");
+                                break;
+                            default:
+                                row.add("售后订单");
+                                break;
+                        }
+                    }
+                }
+                row.add(salesOrder.getSalesAddressName() == null ? null:salesOrder.getSalesAddressName());
+                row.add(salesOrder.getSalesAddressTel() == null ? null:salesOrder.getSalesAddressTel());
+                String pro="",city="";
+                try{
+                    //分割省市
+                    if(salesOrder.getSalesAddressInfo() == null){
+                        pro = "";
+                        city = "";
+                    }else{
+                        String[] strarray;
+                        strarray = salesOrder.getSalesAddressInfo().split(" ");
+                        if(strarray != null && strarray.length > 3){
+                            pro = strarray[0];
+                            city = strarray[1];
+                        }else{
+                            strarray = salesOrder.getSalesAddressInfo().split("_");
+                            if(strarray != null && strarray.length > 3){
+                                pro = strarray[0];
+                                city = strarray[1];
+                            }else{
+                                strarray = salesOrder.getSalesAddressInfo().split("-");
+                                if(strarray != null && strarray.length > 3){
+                                    pro = strarray[0];
+                                    city = strarray[1];
+                                }
+                            }
+                        }
+                    }
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+                row.add(pro);
+                row.add(city);
+
+                row.add(salesOrder.getSalesAddressInfo() == null ? null:salesOrder.getSalesAddressInfo());
+                String frim = replace(salesOrder.getSalesPostFirm());
+                row.add(frim);
+                row.add(salesOrder.getSalesPostNum() == null ? null:salesOrder.getSalesPostNum());
+                row.add(salesOrder.getItemProductName() == null ? null:salesOrder.getItemProductName()+(salesOrder.getItemProductColor() == null ? null:"-"+salesOrder.getItemProductColor()));
+                row.add(salesOrder.getItemProductColor() == null ? null:salesOrder.getItemProductColor());
+                row.add(salesOrder.getItemNum() == null ? null:salesOrder.getItemNum());
+                row.add(salesOrder.getCompanyName() == null ? null:salesOrder.getCompanyName());
+                row.add(salesOrder.getStoreName() == null ? null:salesOrder.getStoreName());
+
+
+                String salesShoppingStatus = "";
+                if(salesOrder.getSalesShippingStatus() == null){
+                    salesShoppingStatus = "未打单";
+                }else{
+                    // 0(未发货)1(已发货,即已扫描出库)3(备货中)4(收货) 11(已通知配货,后加)
+                    switch (salesOrder.getSalesShippingStatus()){
+                        case 0:
+                            salesShoppingStatus = "未打单";
+                            break;
+                        case 1:
+                            salesShoppingStatus = "已打单";
+                            break;
+                        case 11:
+                            salesShoppingStatus = "通知配货";
+                            break;
+                        default:
+                            salesShoppingStatus = "其他状态";
+                            break;
+                    }
+                }
+                row.add(salesShoppingStatus);
+                row.add(salesOrder.getSalesSendTime() == null ? null:formatter.format(salesOrder.getSalesSendTime()));
+
+                String salesDeliver = "";
+                if(salesOrder.getSalesDeliver() == null){
+                    salesDeliver = "未出库";
+                }else{
+                   ///出库状态  1:未出库   2:已出库
+                    switch (salesOrder.getSalesShippingStatus()){
+                        case 1:
+                            salesDeliver = "未出库";
+                            break;
+                        case 2:
+                            salesDeliver = "已出库";
+                            break;
+                        default:
+                            salesDeliver = "未出库";
+                            break;
+                    }
+                }
+                row.add(salesDeliver);
+                row.add(salesOrder.getSalesDeliverTime() == null ? null:formatter.format(salesOrder.getSalesDeliverTime()));
+                countexts.add(row);
+            }
+        }
+        model.put("varList", countexts);
+        ObjectExcelView erv = new ObjectExcelView();
+        ModelAndView mv = new ModelAndView(erv,model);
         return mv;
     }
 
+    /**物流名称替换**/
+    public String replace(String code) {
+        String name = "";
+        if(code == null || "".equals(code)){
+            return "";
+        }
+        if(LOGISTICSINFO_LIST == null){
+            LOGISTICSINFO_LIST = logisticsInfoService.getLogisticsInfoList(new LogisticsInfo());
+        }
+
+        for (LogisticsInfo logistics : LOGISTICSINFO_LIST) {
+            if(code .equalsIgnoreCase(logistics.getLogisticsRstCode())){
+                return logistics.getLogisticsName();
+            }
+        }
+        return "";
+    }
+
 }

+ 4 - 2
watero-rst-web/src/main/java/com/iamberry/rst/utils/ExcelUtil.java

@@ -771,7 +771,9 @@ public class ExcelUtil {
                 {"市", "区"},
                 {"市", "乡"},
                 {"市", "镇"},
-                {"市", "县"}
+                {"市", "县"},
+
+                {"省", "县", "镇"}
         };
     }
 
@@ -848,7 +850,7 @@ public class ExcelUtil {
     }
 
     public static void main(String[] args) throws IOException {
-        String[] add = splitAddress("福建省南平市延平区新建路锦绣家园128号3棟1102室");
+        String[] add = splitAddress("海南省 临高县 博厚镇衍宏海港小镇(303县道西)衍宏海港小镇37栋602");
         if (add == null) {
             System.out.println("切割失败...");
         }

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/list_wait_send_order.ftl

@@ -269,7 +269,7 @@
     /**
      * 跳转到下载页面
      */
-    function downloadOrderPage(){
+    function downloadOrderInfo(){
         layer_show("导出订单","${path}/admin/salesOrder/to_download_order_excel_by_store","600","250");
     }
 </script>

+ 13 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_detail.ftl

@@ -52,6 +52,19 @@
     <title>订单详细信息</title>
 </head>
 <body>
+
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> 订单管理
+    <span class="c-gray en">&gt;</span> 订单详细信息
+    <a class="btn radius r"
+       style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;"
+       href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont">&#xe68f;</i></a>
+    <a class="btn radius r"
+       style="line-height:1.6em;margin-top:3px;margin-right: 5px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;"
+       href="javascript:history.back(-1);" title="后退"><i class="Hui-iconfont">&#xe6d4;</i></a>
+</nav>
+
+
 <article class="cl pd-20">
     <form action="" method="post" class="form form-horizontal" id="form-article-add">
         <div class="row cl">

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 17 - 5
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_list.ftl


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 224 - 118
watero-rst-web/src/main/webapp/WEB-INF/views/order/statistics/order_statistics.ftl


+ 96 - 46
watero-rst-web/src/main/webapp/WEB-INF/views/order/statistics/post_statistics.ftl

@@ -9,74 +9,53 @@
     <link rel="Bookmark" href="/favicon.ico" >
     <link rel="Shortcut Icon" href="/favicon.ico" />
 <#include "/base/add_base.ftl">
-    <title>出库列表</title>
+    <title>快递统计列表</title>
     <style>
-        .tit{position: relative;text-align: left;font-size: 16px;padding-left: 10px;}
-        .tit:after{content: '';position: absolute;left: 0;top: 20%;height: 60%;width: 3px;background-color: #32a3d8;}
-        .tit-2{position: relative;text-align: left;font-size: 16px;padding-left: 10px;}
-        .tit-2:after{content: '';position: absolute;left: 0;top: 20%;height: 60%;width: 3px;background-color: #32a3d8;}
-        #province select{margin-right:10px; width:100px;height: 31px;-webkit-appearance:none !important;appearance:none;background: url(${path}/common/images/cm/select-1.png) right center no-repeat;background-size: auto 100%;padding-left:3px;padding-right: 25px;}
-        .ac_results li a {white-space: nowrap;text-decoration:none;display:block;color:#05a;padding:1px 3px}
-        .ac_results li {border:1px solid #fff}
-        .ac_results li a span {float:right}
-        .select-box{background: url(${path}/common/images/cm/select-1.png) right center no-repeat;background-size: auto 100%;}
-        .select-box select{-webkit-appearance:none !important;background-color: transparent; appearance:none;padding-right: 25px;}
-        .dalog-ask{position: absolute;left:60%;top:0;-webkit-transform: translateY(-30%);transform: translateY(-30%);display: none;background-color: #fff;z-index: 10;}
-        .tag{ width:300px; min-height:300px; border:1px solid #32a3d8; position:relative;background-color: #fff;line-height: 1.5;padding: 10px 12px;}
-        .tag em{display:block; border-width:15px; position:absolute; top:30%; left:-30px;border-style:solid dashed dashed; border-color:transparent  #32a3d8 transparent transparent;font-size:0; line-height:0;}
-        .time-line-list{list-style: none;width: 100%;margin-left: -20px;}
-        .time-line-list>li{position: relative;float: left; text-align: center;width: 100px;overflow: hidden;white-space: nowrap;word-break: break-all;padding: 2px 0;}
-        .time-line-list .number{display: inline-block; padding: 2px; background: #32a3d8;border: 2px solid #fff;box-shadow:0 0 0 1px #32a3d8;width: 20px;height: 20px;color: #fff;line-height: 20px;border-radius: 50%;}
-        .time-line-list>li:before{content:'';position: absolute;height: 1px;width: 30%;right:0;top: 15px; background-color: #32a3d8;}
-        .time-line-list>li:after{content: '';position: absolute;height: 1px;width: 30%;left: 0;top: 15px;background:#32a3d8;}
-        .time-line-list>li:first-child:after,.time-line-list>li:last-child:before{display: none;}
-        .time-line-list .arrow{border-width:7px; position:absolute; left:25%; top:9px;border-style:solid dashed dashed; border-color:transparent  transparent  transparent #32a3d8;font-size:0; line-height:0;}
-        .time-line-list>li:first-child .arrow{display: none;}
-        .table-bg th{background-color: #e2f6ff;}
-        .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
-        .msg-phone{height: 35px;line-height: 35px;}
-        .col-sm-1{width: 150px;}
-
-        .all_down{text-decoration: underline;color: #00c;}
-
-        .bold{    color: #f00;font-weight: bold;}
+        html{-webkit-text-size-adjust:none;}
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/select-1.png) right center no-repeat;background-size:auto 100%;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+        .barcodeImg{margin:10px 0px}
+        .table-bg thead th{background-color: #e2f6ff;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(${path}/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
     </style>
 </head>
 <body>
 <nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
     <span class="c-gray en">&gt;</span> 仓库管理
-    <span class="c-gray en">&gt;</span> 出库统计
+    <span class="c-gray en">&gt;</span> 快递统计
     <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
 </nav>
 
 <div class="page-container">
     <div class="text-c">
-        <form action="${path}/admin/order_batch/batch_list" method="post">
+        <form action="" method="post">
 
-            <input type="text" class="my-input trim_input"  style="margin-top: -3px;width:118px;margin-right: 0px;height: 28px;padding: 0px;" value="${orderBatch.batchId!}" placeholder="批次编号" name="batchId" id="batchId">
+            <input type="text" style="margin-top: -3px;width:120px;height:30px;margin-right: 0px;font-size: 9px;" name="startDate" id="startDate" class="input-text" placeholder="开始时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="" readonly="readonly"/> -
+            <input type="text" style="margin-top: -3px;width:120px;height:30px;margin-right: 0px;font-size: 9px;" name="endDate" id="endDate" class="input-text" placeholder="结束时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="" readonly="readonly"/>
 
-            <input type="text" style="margin-top: -3px;width:120px;height:30px;margin-right: 0px;font-size: 9px;" name="startDate" id="startDate" class="input-text" placeholder="开始时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="${(orderBatch.startDate?string("yyyy-MM-dd HH:mm:ss"))!''}" readonly="readonly"/>-
-            <input type="text" style="margin-top: -3px;width:120px;height:30px;margin-right: 0px;font-size: 9px;" name="endDate" id="endDate" class="input-text" placeholder="结束时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss'})" value="${(orderBatch.endDate?string("yyyy-MM-dd HH:mm:ss"))!''}" readonly="readonly"/>
+            <button type="button" class="my-btn-search" style="" id="" name="" onclick="getdeliver();"><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+            <#--<button type="button" class="my-btn-search" style="" id="" name="" onclick="downloadOrderPage();">下载订单</button>-->
 
-            <button type="submit" class="my-btn-search" style="" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
         </form>
     </div>
 
     <div class="mt-20">
-        <table class="table table-border table-bordered table-bg table-hover table-sort">
+        <table class="table table-border table-bg table-bordered">
             <thead>
             <tr class="text-c">
-                <th width="100">批次编号</th>
-                <th width="80">店铺</th>
-                <th width="50">订单数量</th>
-                <th width="50">待审核数量</th>
-                <th width="50">待发货数量</th>
-                <th width="50">已发货数量</th>
-                <th width="80">创建时间</th>
+                <th width="50">时间</th>
+                <th width="80">快递方式</th>
+                <th width="50">运单数量</th>
+                <th width="50">产品总数</th>
+                <th width="50">已打单</th>
+                <th width="50">已出库</th>
                 <th width="80">操作</th>
             </tr>
             </thead>
-            <tbody>
+            <tbody id="postStatistics">
 
             </tbody>
         </table>
@@ -85,8 +64,25 @@
 
 <tfoot>
 </tfoot>
+
+<#--时间控件-->
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+
 <script>
     $(function (){
+        var date = new Date();
+        date.setHours(0);
+        date.setMinutes(0);
+        date.setSeconds(0);
+        var startDate = formatDate(date,"yyyy-MM-dd HH:mm:ss");
+
+        date.setHours(23);
+        date.setMinutes(59);
+        date.setSeconds(59);
+        var endDate = formatDate(date,"yyyy-MM-dd HH:mm:ss");
+
+       $("#startDate").val(startDate);
+       $("#endDate").val(endDate);
         getdeliver();
     })
 
@@ -94,15 +90,57 @@
      * 获取出库数量
      */
     function getdeliver(){
+        var startDate =  $("#startDate").val();
+        var endDate =  $("#endDate").val();
+
         loadIndex = layer.load(1, {
             shade: [0.5,'#fff'] //0.1透明度的白色背景
         });
         $.ajax({
             type:'POST',
             url: '${path}/admin/await_send/getPostStatistics',
-            data:{},
+            data:{
+                startDate : startDate,
+                endDate : endDate
+            },
             dataType: 'json',
             success:function(res) {
+                $("#postStatistics").html("");
+//                startDate = startDate.substring(0,10);
+//                endDate = endDate.substring(0,10);
+                if(res.returnMsg.postOrderNumList.length > 0){
+                    for(var i=0;i<res.returnMsg.postOrderNumList.length;i++){
+
+                        var postOrderNum = res.returnMsg.postOrderNumList[i];
+
+                        var td_first = '';
+                        if(i == 0){
+                            td_first = '<td rowspan='+ res.returnMsg.postOrderNumList.length +'>'+startDate+ '</br>至</br>'+ endDate +'</td>';
+                        }else{
+                            td_first = '';
+                        }
+
+                        var html = ''
+                                + '<tr class="text-c">'
+                                +  td_first
+                                + '<td>'+ cufte(postOrderNum.logisticsName) +'('+ cufte(postOrderNum.logisticsRstCode) +')</td>'
+                                + '<td>'+ (isEmpty(postOrderNum.logisticsAllNum)?postOrderNum.logisticsAllNum:0) +'</td>'
+                                + '<td>'+ (isEmpty(postOrderNum.logisticsProductNum)?postOrderNum.logisticsProductNum:0) +'</td>'
+                                + '<td>'+ (isEmpty(postOrderNum.logisticsSendNum)?postOrderNum.logisticsSendNum:0) +'</td>'
+                                + '<td>'+ (isEmpty(postOrderNum.logisticsDeliverNum)?postOrderNum.logisticsDeliverNum:0) +'</td>'
+                                + '<td> <a href="javascript:void(0)" style="text-decoration:none;color: #00E;" onclick="toOrderList(\''+cufte(postOrderNum.logisticsRstCode) +'\')">查看订单</a></td>'
+                                + '</tr>';
+                        $("#postStatistics").append(html);
+                    }
+                }else{
+                    var html = ''
+                            + '<tr class="text-c">'
+                            + '<td >'+startDate+ '</br>至</br>'+ endDate +'</td>'
+                            + '<td colspan="6">暂无数据</td>'
+                            + '</tr>';
+                    $("#postStatistics").append(html);
+                }
+
                 if(loadIndex != 0 ){
                     layer.close(loadIndex);
                 }
@@ -110,6 +148,18 @@
         });
     }
 
+    function toOrderList(courierCompany){
+        var startDate =  $("#startDate").val();
+        var endDate =  $("#endDate").val();
+        window.location.href= "${path}/admin/await_send/order_statistics?salesPostFirm="+courierCompany+"&startDate="+startDate+"&endDate="+endDate+"&salesStatus="+1;
+    }
+
+    /**
+     * 跳转到下载页面
+     */
+    function downloadOrderPage(){
+        layer_show("商品列表","${path}/admin/salesOrder/to_download_order_excel","600","250");
+    }
 </script>
 
 </body>

+ 0 - 192
watero-rst-web/src/main/webapp/common/js/common/address.js

@@ -1,195 +1,3 @@
-/*** 我很帅 -- ljk */
-;(function($,window,document,undefined){
-    //定义Address的构造函数
-    var Address = function(ele,opt) {
-        this.$element = ele,
-        this.addressInfo = {
-            provinceNode : ele.find(".init_province"),
-            cityNode : ele.find(".init_city"),
-            countryNode : ele.find(".init_country"),
-            provinceId :ele.find(".init_province").attr("provinceId"),
-            cityId : ele.find(".init_city").attr("cityId"),
-            countryId : ele.find(".init_country").attr("countryId"),
-            provinceName : ele.find(".init_province").attr("provinceName"),
-            cityName :   ele.find(".init_city").attr("cityName"),
-            countryName :  ele.find(".init_country").attr("countryName"),
-            initLock : false
-        },
-        this.options = $.extend({}, this.addressInfo, opt)  //opt并入addressInfo集合组成新的集合,然后赋值给 options ,所以一切调用options
-    }
-    //定义Address的方法
-    Address.prototype = {
-        init: function() {
-            this.initProvince();
-            return this;
-        },
-        initProvince:function(){
-            var address = this;
-            var $provinceNode = $(this.options.provinceNode);
-            $.get(root_path +"/address/list_province", function(result){
-                if (result.returnCode == 200) {
-                    $provinceNode.empty();    //清空下拉框
-                    $(result.returnMsg.provinceList).each(function (){
-                        $provinceNode.append("<option value='"+ this.provinceId +"'>"+ this.province +"</option>");
-                    })
-                    if(isEmpty(address.options.provinceId)){
-                        address.options.provinceId = result.returnMsg.provinceList[0].provinceId;
-                    }else if(isEmpty(address.options.provinceName)){
-                        address.options.provinceId = address.getAttrIdByName($provinceNode,address.options.provinceName);
-                    }else{
-                        address.options.provinceId = result.returnMsg.provinceList[0].provinceId;
-                    }
-                    address.setProvince();
-                }else{
-                    console.log("省份查询失败");
-                }
-            });
-        },
-        initCity:function(provinceId){
-            var address = this;
-            var $cityNode = $(this.options.cityNode);
-            provinceId = this.cufte(provinceId);
-            $.get(root_path +"/address/list_city?provinceId="+provinceId, function(result){
-                if (result.returnCode == 200) {
-                    $cityNode.empty();    //清空下拉框
-                    $(result.returnMsg.cityList).each(function (){
-                        $cityNode.append("<option value='"+ this.cityId +"'>"+ this.city +"</option>");
-                    })
-
-                    if(isEmpty(address.options.cityId)){
-                        address.options.cityId = result.returnMsg.cityList[0].cityId;
-                    }else if(isEmpty(address.options.cityName)){
-                        address.options.cityId = address.getAttrIdByName($cityNode,address.options.cityName);
-                    }else{
-                        address.options.cityId = result.returnMsg.cityList[0].cityId;
-                    }
-                    address.setCity();
-                }else{
-                    console.log("城市查询失败");
-                }
-            });
-        },
-        initCountry:function(cityId){
-            var address = this;
-            var $countryNode = $(this.options.countryNode);
-            cityId = this.cufte(cityId);
-            $.get(root_path +"/address/list_district?cityId="+cityId, function(result){
-                if (result.returnCode == 200) {
-                    $countryNode.empty();    //清空下拉框
-                    $(result.returnMsg.districtList).each(function (){
-                        $countryNode.append("<option value='"+ this.districtId +"'>"+ this.district +"</option>");
-                    })
-
-                    if(isEmpty(address.options.countryId)){
-                        address.options.countryId = result.returnMsg.districtList[0].districtId;
-                    }else if(isEmpty(address.options.countryName)){
-                        address.options.countryId = address.getAttrIdByName($countryNode,address.options.countryName);
-                    }else{
-                        address.options.countryId = result.returnMsg.districtList[0].districtId;
-                    }
-                    address.setCountry();
-                    address.options.initLock = true;
-                }else{
-                    console.log("区县查询失败");
-                }
-            });
-        },
-        setProvince:function(){
-            var address = this;
-            var $provinceNode = $(this.options.provinceNode);
-            $provinceNode.val(this.options.provinceId);
-            $provinceNode.change(function (){
-                address.initCity($provinceNode.val());
-            })
-            address.initCity(this.options.provinceId);
-        },
-        setCity:function(){
-            var address = this;
-            var $cityNode = $(this.options.cityNode);
-            $cityNode.val(this.options.cityId);
-            $cityNode.change(function (){
-                address.initCountry($cityNode.val());
-            })
-            address.initCountry(this.options.cityId);
-        },
-        setCountry:function(){
-            var address = this;
-            var $countryNode = $(this.options.countryNode);
-            $countryNode.val(this.options.countryId);
-        },
-        setProvinceId:function(provinceId){
-            this.options.provinceId = provinceId;
-            this.setProvince();
-            return this;
-        },
-        setCityId:function(cityId){
-            this.options.cityId = cityId;
-            this.setCity();
-            return this;
-        },
-        setCountryId:function(countryId){
-            this.options.countryId = countryId;
-            this.setCountry();
-            return this;
-        },
-        setProvinceName:function(provinceName){
-            this.options.provinceId = null; //置空id
-            this.options.provinceName =  provinceName;
-            this.initProvince();    //直接重新加载
-            return this;
-        },
-        setCityName:function(cityName){
-            this.options.cityId = null; //置空id
-            this.options.cityName = cityName;
-            this.setProvince();
-            return this;
-        },
-        setCountryName:function(countryName){
-            this.options.countryId =  null; //置空id
-            this.options.countryName = countryName;
-            this.setCity();
-            return this;
-        },
-        getAttrIdByName:function($node,name){
-            name = $.trim(name);
-            var reArray = "省,市,县,乡,镇,市,自治区";
-            var array = reArray.split(",");
-            for (var i=0;i<array.length;i++){
-                name = name.replace(array[i],"");
-            }
-            var max = 0,maxValue="";
-            $node.find("option").each(function(){
-                var number=0,attrName = "";
-                if($(this).text().indexOf(name) > -1){
-                    number ++
-                    if($(this).text() == name){
-                        number ++
-                    }
-                    attrName = $(this).val();
-                }
-                if(max < number){
-                    max = number;
-                    maxValue = attrName;
-                }
-            })
-            return maxValue;
-        },
-        cufte:function(val) {
-            if (undefined == val || null == val||typeof val == undefined || typeof val == 'undefined'|| 'undefined' == val) {
-                val = "";
-            }
-            return val;
-        }
-    }
-    // initAddress 调用
-    $.fn.initAddress = function(options) {
-        var address = new Address(this, options);
-        address.init();
-        return address;
-    }
-})(jQuery,window,document);
-
-
 /**
  * 获取省
  * @param provinceId 省id