Ver código fonte

出库统计

wangxiaoming 6 anos atrás
pai
commit
e1fbbc3432

+ 79 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/order/PostOrderNum.java

@@ -0,0 +1,79 @@
+package com.iamberry.rst.core.order;
+
+import java.io.Serializable;
+
+/**
+ * 快递统计
+ */
+public class PostOrderNum implements Serializable {
+
+    private static final long serialVersionUID = -8173672915577748822L;
+
+    private Integer logisticsId;//主键
+    private String logisticsName;//物流公司名称
+    private String logisticsRstCode;//rst物流公司代码
+
+    private Integer logisticsAllNum;   //物流总数
+
+    private Integer logisticsProductNum;   //物流产品总数
+
+    private Integer logisticsDeliverNum;   //物流出库总数
+
+    private Integer logisticsSendNum;   //物流发货总数
+
+    public Integer getLogisticsId() {
+        return logisticsId;
+    }
+
+    public void setLogisticsId(Integer logisticsId) {
+        this.logisticsId = logisticsId;
+    }
+
+    public String getLogisticsName() {
+        return logisticsName;
+    }
+
+    public void setLogisticsName(String logisticsName) {
+        this.logisticsName = logisticsName;
+    }
+
+    public String getLogisticsRstCode() {
+        return logisticsRstCode;
+    }
+
+    public void setLogisticsRstCode(String logisticsRstCode) {
+        this.logisticsRstCode = logisticsRstCode;
+    }
+
+    public Integer getLogisticsAllNum() {
+        return logisticsAllNum;
+    }
+
+    public void setLogisticsAllNum(Integer logisticsAllNum) {
+        this.logisticsAllNum = logisticsAllNum;
+    }
+
+    public Integer getLogisticsProductNum() {
+        return logisticsProductNum;
+    }
+
+    public void setLogisticsProductNum(Integer logisticsProductNum) {
+        this.logisticsProductNum = logisticsProductNum;
+    }
+
+    public Integer getLogisticsDeliverNum() {
+        return logisticsDeliverNum;
+    }
+
+    public void setLogisticsDeliverNum(Integer logisticsDeliverNum) {
+        this.logisticsDeliverNum = logisticsDeliverNum;
+    }
+
+    public Integer getLogisticsSendNum() {
+        return logisticsSendNum;
+    }
+
+    public void setLogisticsSendNum(Integer logisticsSendNum) {
+        this.logisticsSendNum = logisticsSendNum;
+    }
+}

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

@@ -0,0 +1,23 @@
+package com.iamberry.rst.faces.cm;
+
+import com.iamberry.rst.core.cm.SalesOrder;
+import com.iamberry.rst.core.order.PostOrderNum;
+
+import java.util.List;
+
+public interface PostOrderNumService {
+
+    /**
+     * 获取总数
+     * @return
+     */
+    List<PostOrderNum> getAllNum(SalesOrder salesOrder);
+    /**
+     * 获取产品总数
+     * @return
+     */
+    List<PostOrderNum> getProductNum(SalesOrder salesOrder);
+
+
+
+}

+ 4 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -325,4 +325,8 @@ public interface SalesOrderService {
      * @return
      */
     List<SalesOrder> salesOrderListAndItem(SalesOrder salesOrder);
+
+
+
+
 }

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

@@ -0,0 +1,27 @@
+package com.iamberry.rst.service.cm;
+
+import com.iamberry.rst.core.cm.SalesOrder;
+import com.iamberry.rst.core.order.PostOrderNum;
+import com.iamberry.rst.faces.cm.PostOrderNumService;
+import com.iamberry.rst.service.cm.mapper.PostOrderNumMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class PostOrderNumServiceImpl implements PostOrderNumService {
+
+    @Autowired
+    private PostOrderNumMapper postOrderNumMapper;
+
+    @Override
+    public List<PostOrderNum> getAllNum(SalesOrder salesOrder) {
+        return postOrderNumMapper.getAllNum(salesOrder);
+    }
+
+    @Override
+    public List<PostOrderNum> getProductNum(SalesOrder salesOrder) {
+        return postOrderNumMapper.getProductNum(salesOrder);
+    }
+}

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

@@ -0,0 +1,21 @@
+package com.iamberry.rst.service.cm.mapper;
+
+import com.iamberry.rst.core.cm.SalesOrder;
+import com.iamberry.rst.core.order.PostOrderNum;
+
+import java.util.List;
+
+public interface PostOrderNumMapper {
+
+    /**
+     * 获取总数
+     * @return
+     */
+    List<PostOrderNum> getAllNum(SalesOrder salesOrder);
+
+    /**
+     * 获取产品总数
+     * @return
+     */
+    List<PostOrderNum> getProductNum(SalesOrder salesOrder);
+}

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

@@ -0,0 +1,69 @@
+<?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.iamberry.rst.service.cm.mapper.PostOrderNumMapper" >
+
+    <!-- 订单统计 -->
+    <select id="getAllNum" 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 logisticsAllNum
+        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
+            <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="getProductNum" resultType="PostOrderNum" parameterType="SalesOrder" >
+        SELECT
+            li.logistics_id AS  logisticsId,
+            li.logistics_rst_code AS  logisticsRstCode,
+            SUM(item_num) AS logisticsProductNum
+        FROM tb_rst_logistics_info li
+        LEFT JOIN tb_rst_sales_order_info oi ON li.logistics_rst_code = oi.sales_post_firm
+        LEFT JOIN tb_rst_sales_order_item oitem ON oi.sales_id = oitem.item_order_id
+        <where>
+            oi.sales_status = 1
+            AND sales_shipping_status > 0
+            <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>
+
+
+
+</mapper>

+ 57 - 7
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -6,9 +6,11 @@ import com.iamberry.rst.core.cm.SalesOrderItem;
 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.tools.LogisticsInfo;
+import com.iamberry.rst.faces.cm.PostOrderNumService;
 import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.faces.cm.StoreShipService;
 import com.iamberry.rst.faces.order.LogisticsInfoService;
@@ -55,6 +57,8 @@ public class AwaitSendController {
     private LogisticsInfoService logisticsInfoService;
     @Autowired
     private ProductService productService;
+    @Autowired
+    private PostOrderNumService postOrderNumService;
 
 
     private static final Logger LOGGER = LoggerFactory.getLogger(AwaitSendController.class);
@@ -685,7 +689,6 @@ public class AwaitSendController {
             rj.setResultMsg("出库成功");
         }
         return rj;
-
     }
 
 
@@ -701,6 +704,59 @@ public class AwaitSendController {
         return mv;
     }
 
+    /**
+     * 快递统计
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("salesOrder:post_statistics:deliver")
+    @RequestMapping("/getPostStatistics")
+    public ResponseJson getPostStatistics(HttpServletRequest request) {
+        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);
+
+        salesOrder.setSalesDeliver(2);
+        List<PostOrderNum> postDeliverNumList = postOrderNumService.getAllNum(salesOrder);
+
+        postOrderNumList = this.margeList(postOrderNumList,postProductNumList);
+        postOrderNumList = this.margeList(postOrderNumList,postSendNumList);
+        postOrderNumList = this.margeList(postOrderNumList,postDeliverNumList);
+        rj.addResponseKeyValue("postOrderNumList",postOrderNumList);
+        return rj;
+    }
+
+    /**
+     * 合并集合
+     * @param oneList
+     * @param twoList
+     * @return
+     */
+    private List<PostOrderNum> margeList(List<PostOrderNum> oneList,List<PostOrderNum> twoList){
+        for (PostOrderNum onePostOrderNum : oneList) {
+            for (PostOrderNum twoPostOrderNum:twoList) {
+                if(onePostOrderNum.getLogisticsId().equals(twoPostOrderNum.getLogisticsId())){
+                    if(twoPostOrderNum.getLogisticsProductNum() != null){
+                        onePostOrderNum.setLogisticsProductNum(twoPostOrderNum.getLogisticsProductNum());
+                    }
+                    if(twoPostOrderNum.getLogisticsSendNum() != null){
+                        onePostOrderNum.setLogisticsSendNum(twoPostOrderNum.getLogisticsSendNum());
+                    }
+                    if(twoPostOrderNum.getLogisticsDeliverNum() != null){
+                        onePostOrderNum.setLogisticsDeliverNum(twoPostOrderNum.getLogisticsDeliverNum());
+                    }
+                }
+
+            }
+        }
+        return oneList;
+    }
 
     /**
      * 跳转订单统计页面
@@ -714,10 +770,4 @@ public class AwaitSendController {
         return mv;
     }
 
-
-
-
-
-
-
 }

+ 2 - 0
watero-rst-web/src/main/resources/watero-rst-orm.xml

@@ -34,6 +34,7 @@
 		<typeAlias type="com.iamberry.rst.core.order.OrderBatch" alias="OrderBatch"/>
 		<typeAlias type="com.iamberry.rst.core.order.PostInfo" alias="PostInfo"/>
 		<typeAlias type="com.iamberry.rst.core.order.ProvincesLogistics" alias="ProvincesLogistics"/>
+		<typeAlias type="com.iamberry.rst.core.order.PostOrderNum" alias="PostOrderNum"/>
 
 		<typeAlias type="com.iamberry.rst.core.sms.SmsMessage" alias="SmsMessage"/>
 		<typeAlias type="com.iamberry.rst.core.sms.OrderMessage" alias="OrderMessage"/>
@@ -232,6 +233,7 @@
 		<mapper resource="com/iamberry/rst/service/cm/mapper/postageAuthorityLogMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/cm/mapper/relationOrderMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/cm/mapper/storeShipMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/cm/mapper/postOrderNumMapper.xml"/>
 
 		<mapper resource="com/iamberry/rst/service/address/mapper/addressMapper.xml"/>
 

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

@@ -173,15 +173,17 @@
                         <a class="ml-5" style="text-decoration:none;display:inline" href="javascript:void(0);" title="手动发货"onclick="distribution_postFirm('手动发货','${path}/admin/await_send/to_manual_delivery?salesId=${o.salesId}','570','450');">手动发货</a><br>
                     </#if>
 
-                   <#if o.salesDeliver == 1 && o.salesShippingStatus == 1>
+                    <#if o.salesDeliver??>
+                       <#if o.salesDeliver == 1 && o.salesShippingStatus == 1>
+                            <a class="ml-5" style="text-decoration:none;display:inline" href="javascript:void(0);" title="标记出库" onclick="sales_deliver(2,'${(o.salesId)!}');">标记出库</a><br>
+                        </#if>
+                       <#if o.salesDeliver == 2>
+                            <a class="ml-5" style="text-decoration:none;display:inline" href="javascript:void(0);" title="标记未出库" onclick="sales_deliver(1,'${(o.salesId)!}');">标记未出库</a><br>
+                       </#if>
+                    <#else>
                         <a class="ml-5" style="text-decoration:none;display:inline" href="javascript:void(0);" title="标记出库" onclick="sales_deliver(2,'${(o.salesId)!}');">标记出库</a><br>
                     </#if>
 
-                   <#if o.salesDeliver == 2>
-                        <a class="ml-5" style="text-decoration:none;display:inline" href="javascript:void(0);" title="标记未出库" onclick="sales_deliver(1,'${(o.salesId)!}');">标记未出库</a><br>
-                   </#if>
-
-
                 </td>
             </tr>
             </#list>

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

@@ -49,50 +49,39 @@
     <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>
 
-<article class="page-container" style="padding: 10px;">
-    <div class="pd-20 cl">
-        <form action="" method="post" class="form form-horizontal" id="form-order-add"  >
+<div class="page-container">
+    <div class="text-c">
+        <form action="${path}/admin/order_batch/batch_list" 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="${(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"/>
 
-            <div class="row cl">
-                <label class="form-label col-3">
-                    <div class="tit-2">今日/昨日产品发货出库统计</div>
-                </label>
-                <div class="formControls col-9">
-                </div>
-            </div>
-
-
-            <div class="mt-20" style="">
-                <table class="table table-border table-bg table-bordered">
-                    <tbody id="allDay">
-
-                    </tbody>
-                </table>
-            </div>
-
-
-            <div class="row cl">
-                <label class="form-label col-3">
-                    <div class="tit-2">历史产品发货出库统计</div>
-                </label>
-                <div class="formControls col-9">
-                </div>
-            </div>
-
-
-            <div class="mt-20" style="">
-                <table class="table table-border table-bg table-bordered">
-                    <tbody id="historyDay">
-
-                    </tbody>
-                </table>
-            </div>
-
+            <button type="submit" class="my-btn-search" style="" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
         </form>
     </div>
-</article>
+
+    <div class="mt-20">
+        <table class="table table-border table-bordered table-bg table-hover table-sort">
+            <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="80">操作</th>
+            </tr>
+            </thead>
+            <tbody>
+
+            </tbody>
+        </table>
+    </div>
+</div>
 
 <tfoot>
 </tfoot>
@@ -103,7 +92,6 @@
 
     /**
      * 获取出库数量
-     * type: 1:待发货总数   2:已出库数量
      */
     function getdeliver(){
         loadIndex = layer.load(1, {
@@ -111,50 +99,10 @@
         });
         $.ajax({
             type:'POST',
-            url: '${path}/admin/await_send/getDeliverNum',
+            url: '${path}/admin/await_send/getPostStatistics',
             data:{},
             dataType: 'json',
             success:function(res) {
-                for(var i=0;i<res.returnMsg.allList.length;i++){
-                    var list = res.returnMsg.allList[i].list;
-                    var date = res.returnMsg.allList[i].date;
-                    date = formatDate(date);
-                    var html = ' <tr class="text-c">'
-                            + ' <td width="10">'+ date +'</td>'
-                            + ' <td width="100">'
-                            + ' <table class="table table-border table-bg table-bordered">'
-                            + ' <tbody id="">'
-                            + ' <tr class="text-c"><td width="16">产品名称</td><td width="16">总数</td><td width="16">已打单</td><td width="16">已出库</td><td width="16">未出库</td></tr>';
-                    if(list.length < 1 ){
-                        html += '<tr class="text-c">'
-                                + '<td width="16" colspan="5">暂无数据</td>'
-                                + '</tr>';
-                    }
-                    for(var j=0;j<list.length;j++){
-                        var order = list[j];
-                        var notDeliver = parseInt(order.allNum) - parseInt(order.sendNum);
-                        var notWait = parseInt(order.allNum) - parseInt(order.waitNum);
-                        var style;
-                        if(notDeliver > 0){
-                            style =  "bold";
-                        }
-                        if(i<2 || notDeliver > 0 || notWait > 0){
-                            html += '<tr class="text-c">'
-                                    + '<td width="16">'+ order.productName + '('+ order.colorName +')' +'</td>'
-                                    + '<td width="16">'+ order.allNum +'</td>'
-                                    + '<td width="16" class="" >'+ order.waitNum +'</td>'
-                                    + '<td width="16" class="">'+ order.sendNum +'</td>'
-                                    + '<td width="16" class="'+ style +'">'+ notDeliver +'</td></tr>';
-                        }
-                    }
-                    html += ' </tbody></table></td></tr>';
-                    if(i == 0 || i== 1){
-                        $("#allDay").append(html);
-                    }else{
-                        $("#historyDay").append(html);
-                    }
-                }
-
                 if(loadIndex != 0 ){
                     layer.close(loadIndex);
                 }