Parcourir la source

Merge branch 'master' of http://git.iamberry.com/hexiugang/iamberry-common-parent

# Conflicts:
#	watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java
liujiankang il y a 5 ans
Parent
commit
ad0fdb725d

+ 45 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/order/OrderStatisticsInfo.java

@@ -22,6 +22,11 @@ public class OrderStatisticsInfo implements Serializable {
     private Integer invalidType;//作废类型 1通知配货后作废 2打单后作废 3出库后作废
     private Integer warehouseId;//发货出库id
     private String logisticsName;//快递名称
+    private Integer num;//数量
+    private Date checkStartDate;//核对开始时间
+    private Date pickingStartDate;//拣货开始时间
+    private String colorName;//颜色名称
+    private String productName;//产品名称
 
     public Date getOrderDate() {
         return orderDate;
@@ -141,4 +146,44 @@ public class OrderStatisticsInfo implements Serializable {
     public void setLogisticsName(String logisticsName) {
         this.logisticsName = logisticsName;
     }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public Date getCheckStartDate() {
+        return checkStartDate;
+    }
+
+    public void setCheckStartDate(Date checkStartDate) {
+        this.checkStartDate = checkStartDate;
+    }
+
+    public Date getPickingStartDate() {
+        return pickingStartDate;
+    }
+
+    public void setPickingStartDate(Date pickingStartDate) {
+        this.pickingStartDate = pickingStartDate;
+    }
+
+    public String getColorName() {
+        return colorName;
+    }
+
+    public void setColorName(String colorName) {
+        this.colorName = colorName;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
 }

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

@@ -544,4 +544,12 @@ public interface SalesOrderService {
      *定时任务-查询没有揽件时间的订单
      */
     List<SalesOrder> orderAfterCaseDate();
+    /**
+     *查询拣货单信息
+     */
+    List<OrderStatisticsInfo> getPickingOrders(OrderStatisticsInfo orderStatisticsInfo);
+    /**
+     *查询核对单信息
+     */
+    List<OrderStatisticsInfo> getCheckOrders(OrderStatisticsInfo orderStatisticsInfo);
 }

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

@@ -1849,6 +1849,16 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         return salesOrderMapper.orderAfterCaseDate();
     }
 
+    @Override
+    public List<OrderStatisticsInfo> getPickingOrders(OrderStatisticsInfo orderStatisticsInfo) {
+        return salesOrderMapper.getPickingOrders(orderStatisticsInfo);
+    }
+
+    @Override
+    public List<OrderStatisticsInfo> getCheckOrders(OrderStatisticsInfo orderStatisticsInfo) {
+        return salesOrderMapper.getCheckOrders(orderStatisticsInfo);
+    }
+
     /***
      * 计算金额
      * @param salesOrder

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

@@ -470,4 +470,12 @@ public interface SalesOrderMapper {
      *定时任务-查询没有揽件时间的订单
      */
     List<SalesOrder> orderAfterCaseDate();
+    /**
+     *查询拣货单信息
+     */
+    List<OrderStatisticsInfo> getPickingOrders(OrderStatisticsInfo orderStatisticsInfo);
+    /**
+     *查询核对单信息
+     */
+    List<OrderStatisticsInfo> getCheckOrders(OrderStatisticsInfo orderStatisticsInfo);
 }

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

@@ -562,6 +562,9 @@
       <if test="salesOrderId != null and salesOrderId != ''">
         and oi.sales_orderId = #{salesOrderId}
       </if>
+      <if test="tagFlag != null and tagFlag != ''">
+        and ti.tag_flag = #{tagFlag}
+      </if>
     </where>
     GROUP BY c.customer_id
     ORDER BY c.customer_id desc

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

@@ -2361,5 +2361,30 @@
         AND sales_post_num is not null
         AND sales_post_firm is not null
     </select>
+    <!--查询拣货单信息-->
+    <select id="getPickingOrders" parameterType="OrderStatisticsInfo" resultType="OrderStatisticsInfo">
+        SELECT soi.item_product_name AS productName,soi.item_product_color AS  colorName,sum(soi.item_num) AS num FROM tb_rst_sales_order_item soi
+        LEFT JOIN tb_rst_sales_order_info oi on soi.item_order_id = oi.sales_id
+        WHERE
+        sales_status != 3
+        AND sales_batch_id != 'KS00000000000001'
+        AND sales_send_time > #{pickingStartDate} AND  sales_send_time &lt; NOW()
+        AND sales_warehouse_id = #{warehouseId}
+        GROUP BY soi.item_color_id
+        ORDER BY num desc
+    </select>
+    <!--查询核对单信息-->
+    <select id="getCheckOrders" parameterType="OrderStatisticsInfo" resultType="OrderStatisticsInfo">
+        SELECT li.logistics_name AS logisticsName,count(1) AS num FROM  tb_rst_sales_order_info oi
+        LEFT JOIN tb_rst_sales_order_item soi on soi.item_order_id = oi.sales_id
+        LEFT JOIN tb_rst_logistics_info li on li.logistics_rst_code = oi.sales_post_firm
+        WHERE
+        sales_status != 3
+        AND sales_batch_id != 'KS00000000000001'
+        AND sales_send_time > #{checkStartDate} AND  sales_send_time &lt; NOW()
+        AND sales_warehouse_id = #{warehouseId}
+        GROUP BY oi.sales_post_firm
+        ORDER BY num desc
+    </select>
 
 </mapper>

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

@@ -1,5 +1,6 @@
 package com.iamberry.rst.controllers.order;
 
+import com.iamberry.redis.RedisUtils;
 import com.iamberry.rst.core.cm.CompanyInfo;
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
@@ -26,6 +27,7 @@ import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.faces.sms.SmsService;
 import com.iamberry.rst.utils.*;
 import com.iamberry.wechat.tools.ResponseJson;
+import com.iamberry.wechat.tools.UUIDGenerator;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
@@ -2209,4 +2211,65 @@ public class AdminSalesOrderController {
         rj.addResponseKeyValue("admin",admin);
         return rj;
     }
+
+    /**
+     * 进入订单核对
+     * @param request
+     * @return
+     */
+    @RequiresPermissions("salesOrder:eheck:salesOrder")
+    @RequestMapping("/to_getSalesOrderCheck")
+    public ModelAndView to_getSalesOrderCheck(HttpServletRequest request){
+        ModelAndView mv = new ModelAndView("order/salesOrder/sales_order_check_list");
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Admin admin = AdminUtils.getLoginAdmin();
+        OrderWarehouse orderWarehouse = salesOrderService.selectAdminWarehouse(admin.getAdminId());
+        String checkStartDate = RedisUtils.get("checkStartDate"+orderWarehouse.getWarehouseId());
+        String pickingStartDate = RedisUtils.get("pickingStartDate"+orderWarehouse.getWarehouseId());
+        String date = format.format(new Date());
+        if(checkStartDate == null){
+            RedisUtils.put("checkStartDate"+orderWarehouse.getWarehouseId(),date);
+            checkStartDate = date;
+        }
+        if(pickingStartDate == null){
+            RedisUtils.put("pickingStartDate"+orderWarehouse.getWarehouseId(),date);
+            pickingStartDate = date;
+        }
+        mv.addObject("checkStartDate",checkStartDate);
+        mv.addObject("pickingStartDate",pickingStartDate);
+        return mv;
+    }
+
+    /**
+     * 获取拣货单信息
+     *
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequestMapping("/getSalesOrderCheck")
+    public ResponseJson getsalesOrderCheck(HttpServletRequest request,OrderStatisticsInfo orderStatisticsInfo) throws Exception {
+        ResponseJson rj =  new ResponseJson(200, "SUCCESS", 200);
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String pickingStartDate = request.getParameter("startDate1");//1拣货单 2核对单
+        String checkStartDate = request.getParameter("startDate2");//1拣货单 2核对单
+        List<OrderStatisticsInfo> infos = null;
+        Admin admin = AdminUtils.getLoginAdmin();
+        OrderWarehouse orderWarehouse = salesOrderService.selectAdminWarehouse(admin.getAdminId());
+        orderStatisticsInfo.setWarehouseId(orderWarehouse.getWarehouseId());
+        if(pickingStartDate != null){//揀貨
+            orderStatisticsInfo.setPickingStartDate(format.parse(pickingStartDate));
+            infos = salesOrderService.getPickingOrders(orderStatisticsInfo);
+            RedisUtils.put("pickingStartDate"+orderWarehouse.getWarehouseId(),format.format(new Date()));
+        }
+        if(checkStartDate != null){//核对
+            orderStatisticsInfo.setCheckStartDate(format.parse(checkStartDate));
+            infos =  salesOrderService.getCheckOrders(orderStatisticsInfo);
+            RedisUtils.put("checkStartDate"+orderWarehouse.getWarehouseId(),format.format(new Date()));
+        }
+        rj.addResponseKeyValue("infos",infos);
+        rj.addResponseKeyValue("admin",admin);
+        return rj;
+    }
+
 }

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

@@ -0,0 +1,244 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <link rel="Bookmark" href="/favicon.ico" >
+    <link rel="Shortcut Icon" href="/favicon.ico" />
+    <#include "/base/list_base.ftl">
+    <title>出库列表</title>
+    <style>
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
+        .my-input::-webkit-input-placeholder{text-indent: 1em;}
+        .table-bg thead th{background-color: #f7fafd;}
+        .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+    </style>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">/</span> 仓库管理
+    <span class="c-gray en">/</span> 打单核对
+    <a class="btn radius r" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+    <div class="pd-20 cl">
+            <div class="row cl"  style="margin-bottom: 20px;">
+                <div class="col-2 col-sm-2">
+                    <input type="text" class="my-input trim_input" style="width:193px;margin-right: 0px; margin-bottom: 10px;" name="pickingStartDate" id="pickingStartDate"  placeholder="开始时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',skin:'whyGreen' })" value="${pickingStartDate!''}" readonly="readonly"/>
+                </div>
+                <div class="col-2 col-sm-2">
+                    <button type="button" class="btn" style="background: #50a2ea;border: 1px solid #50a2ea;color: #fff;height: 35px;margin-bottom: 3px;" onclick="print1();">打印拣货单</button>
+                </div>
+            </div>
+            <div class="row cl"  style="margin-bottom: 20px;">
+                <div class="col-2 col-sm-2">
+                    <input type="text" class="my-input trim_input" style="width:193px;margin-right: 0px; margin-bottom: 10px;" name="checkStartDate" id="checkStartDate"  placeholder="开始时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',skin:'whyGreen' })" value="${checkStartDate!''}" readonly="readonly"/>
+                </div>
+                <div class="col-2 col-sm-2">
+                    <button type="button" class="btn" style="background: #50a2ea;border: 1px solid #50a2ea;color: #fff;height: 35px;margin-bottom: 3px;" onclick="print2();">打印快递核对单</button>
+                </div>
+            </div>
+    </div>
+
+
+    <div   style="display: none;">
+        <div class="page" id="pageid1">
+            <html>
+            <head>
+
+            </head>
+            <body>
+            <table class="table2" style="margin:0 0 0.5cm 1cm;width: 19cm;border: 1px solid #000;border-collapse: collapse;text-align: left;">
+                <thead style="display:table-header-group">
+                <tr>
+                    <th colspan="3" >
+                        <span style="text-align:center;font-size: 1.75rem;">拣货单</span>
+                        <div style="float: right;margin-top: 0.5cm">
+                            <span style="margin-right: 2cm;">仓库人员:</span>
+                            <span style="margin-right: 2cm;">仓库主管:</span>
+
+                        </div>
+                    </th>
+                </tr>
+                <tr>
+                    <th style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;"><strong>产品名称</strong></th>
+                    <th style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;"><strong>颜色</strong></th>
+                    <th style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;"><strong>数量</strong></th>
+                </tr>
+                </thead>
+                <tbody id="listid1">
+                <tr>
+                </tr>
+                </tbody>
+            </table>
+            </body>
+            </html>
+        </div>
+    </div>
+<div   style="display: none;">
+    <div class="page" id="pageid2">
+        <html>
+        <head>
+
+        </head>
+        <body>
+        <table class="table2" style="margin:0 0 0.5cm 1cm;width: 19cm;border: 1px solid #000;border-collapse: collapse;text-align: left;">
+            <thead style="display:table-header-group">
+            <tr>
+                <th colspan="5" style="text-align:center;font-size: 1.75rem;">
+                    核对单
+                </th>
+            </tr>
+            <tr>
+                <th style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;"><strong>快递公司</strong></th>
+                <th style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;"><strong>面单数</strong></th>
+                <th style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;"><strong>截单数</strong></th>
+                <th style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;"><strong>快递实际取件</strong></th>
+                <th style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;"><strong>快递签名</strong></th>
+            </tr>
+            </thead>
+            <tbody id="listid2">
+            <tr>
+
+            </tr>
+            </tbody>
+        </table>
+        </body>
+        </html>
+    </div>
+</div>
+<script type="text/javascript" src="https://s.iamberry.com/js/LodopFuncs_v_5_0.js"></script>
+<script type="text/javascript" src="${path}/common/lib/jquery.PrintArea/jquery.PrintArea.js"></script>
+<script type="text/javascript">
+
+    function print1(){
+        var pickingStartDate = $("#pickingStartDate").val();
+        $.ajax({
+            type: "POST",
+            url: "${path}/admin/salesOrder/getSalesOrderCheck",
+            data:{"startDate1":pickingStartDate},
+            success: function(data){
+                if (data.returnCode == 200) {
+                    var html = '';
+                    if(data.returnMsg.infos.length < 1){
+                        layer.msg('未查询到数据',{icon: 5,time:1000});
+                        return;
+                    }
+                    data.returnMsg.infos.forEach(function (value, i) {
+                        html += '<tr>' +
+                                '<td style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;">' + value.productName + '</td>' +
+                                '<td style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;">' + value.colorName + '</td>' +
+                                '<td style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;">' + value.num + '</td>' +
+                                '</tr>';
+                    });
+                    $("#listid1").html(html);
+
+
+                    // 选择打印设备
+                    var isIE = (navigator.userAgent.indexOf('MSIE')>=0) || (navigator.userAgent.indexOf('Trident')>=0);
+                    if (!isIE) {
+                        LODOP.PRINT_INIT('打印拣货单');
+                        LODOP.SET_PRINT_PAGESIZE(0, 0, 0,"");
+                        LODOP.ADD_PRINT_HTM("0mm","-7mm","100%","100%", $("#pageid1").html());
+                        LODOP.SELECT_PRINTER(true);
+                        // 注意,选择打印机后,需要更改打印机事件,否则无法执行回调
+                        var spans = $("span");
+                        for (var i = 0; i < spans.length; i++) {
+                            if ($(spans[i]).text() === "打印份数:") {
+                                $(spans[i]).parent().next()[0].onclick = function () {
+                                    CLODOP.SelectBox.clickOK(false);
+                                    layer.msg("打印成功", {icon: 6, time: 3000});
+                                };
+                            }
+                        }
+                    } else {
+                        LODOP.SELECT_PRINTER();
+                        LODOP.PRINT_INIT('打印维修单');
+                        LODOP.SET_PRINT_PAGESIZE(0, 0, 0,"");
+                        LODOP.ADD_PRINT_HTM("0mm","0mm","100%","100%", $("#pageid1").html());
+                        var flag = LODOP.PRINT();
+                        if (flag) {
+                            layer.msg("打印成功", {icon: 6, time: 3000});
+                        }
+                    }
+                }
+
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+                layer.msg('打印失败',{icon: 5,time:1000});
+            }
+        });
+
+    }
+
+
+
+
+    function print2(){
+        var checkStartDate = $("#checkStartDate").val();
+        $.ajax({
+            type: "POST",
+            url: "${path}/admin/salesOrder/getSalesOrderCheck",
+            data:{"startDate2":checkStartDate},
+            success: function(data){
+                if (data.returnCode == 200) {
+                    var html = '';
+                    if(data.returnMsg.infos.length < 1){
+                        layer.msg('未查询到数据',{icon: 5,time:1000});
+                        return;
+                    }
+                    data.returnMsg.infos.forEach(function (value, i) {
+                        html += '<tr>' +
+                                '<td style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;">' + value.logisticsName + '</td>' +
+                                '<td style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;">' + value.num + '</td>' +
+                                '<td style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;"></td>' +
+                                '<td style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;"></td>' +
+                                '<td style="width: 2.4cm; font-size: 0.75rem;padding:0.5rem 0;text-indent: 1.2rem; color: #333;border: 1px solid #000;border-collapse: collapse;background-color: #fff;height: 0.28cm;"></td>' +
+                                '</tr>';
+                    });
+                    $("#listid2").html(html);
+
+// 选择打印设备
+                    var isIE = (navigator.userAgent.indexOf('MSIE')>=0) || (navigator.userAgent.indexOf('Trident')>=0);
+                    if (!isIE) {
+                        LODOP.PRINT_INIT('打印拣货单');
+                        LODOP.SET_PRINT_PAGESIZE(0, 0, 0,"");
+                        LODOP.ADD_PRINT_HTM("0mm","-7mm","100%","100%", $("#pageid2").html());
+                        LODOP.SELECT_PRINTER(true);
+                        // 注意,选择打印机后,需要更改打印机事件,否则无法执行回调
+                        var spans = $("span");
+                        for (var i = 0; i < spans.length; i++) {
+                            if ($(spans[i]).text() === "打印份数:") {
+                                $(spans[i]).parent().next()[0].onclick = function () {
+                                    CLODOP.SelectBox.clickOK(false);
+                                    layer.msg("打印成功", {icon: 6, time: 3000});
+                                };
+                            }
+                        }
+                    } else {
+                        LODOP.SELECT_PRINTER();
+                        LODOP.PRINT_INIT('打印维修单');
+                        LODOP.SET_PRINT_PAGESIZE(0, 0, 0,"");
+                        LODOP.ADD_PRINT_HTM("0mm","0mm","100%","100%", $("#pageid2").html());
+                        var flag = LODOP.PRINT();
+                        if (flag) {
+                            layer.msg("打印成功", {icon: 6, time: 3000});
+                        }
+                    }
+
+                }
+
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+                layer.msg('打印失败',{icon: 5,time:1000});
+            }
+        });
+
+    }
+</script>
+
+</body>
+</html>