#
luxiaotao1123
2021-04-13 d8f5476af7490d3faf40a7da332155cf06aec5e1
#
8个文件已修改
183 ■■■■ 已修改文件
src/main/java/zy/cloud/wms/manager/controller/OrderController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/controller/WorkController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/entity/param/StockOutParam.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/entity/result/StoPrintVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/WorkService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/order/order.js 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/order/order.html 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/controller/OrderController.java
@@ -14,10 +14,17 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import zy.cloud.wms.common.config.AdminInterceptor;
import zy.cloud.wms.common.utils.BarcodeUtils;
import zy.cloud.wms.common.utils.QrCode;
import zy.cloud.wms.common.web.BaseController;
import zy.cloud.wms.manager.entity.Order;
import zy.cloud.wms.manager.service.OrderService;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -147,4 +154,27 @@
        return R.ok();
    }
    @RequestMapping(value = "/order/code/auth")
//    @ManagerAuth(memo = "条形码获取(type:1(条形码);2(二维码)")
    public R barcode(@RequestParam(defaultValue = "1") Integer type
                    ,@RequestParam String param
                    ,HttpServletResponse response) throws Exception {
        AdminInterceptor.cors(response);
        if (Cools.isEmpty(param)){
            return R.parse(BaseRes.EMPTY);
        }
        BufferedImage img;
        if (type == 1) {
            img = BarcodeUtils.encode(param);
        } else {
            img = QrCode.createImg(param);
        }
        if (!ImageIO.write(img, "jpg", response.getOutputStream())) {
            throw new IOException("Could not write an image of format jpg");
        }
        response.getOutputStream().flush();
        response.getOutputStream().close();
        return R.ok();
    }
}
src/main/java/zy/cloud/wms/manager/controller/WorkController.java
@@ -65,7 +65,7 @@
    @RequestMapping("/stock/out/create")
    @ManagerAuth(memo = "生成拣货单")
    public R stockOut(@RequestBody StockOutParam stockOutParam) {
        return workService.stockOut(stockOutParam, getUserId());
        return workService.stockOutCreate(stockOutParam, getUserId());
    }
    @RequestMapping("/stock/out/print")
src/main/java/zy/cloud/wms/manager/entity/param/StockOutParam.java
@@ -8,7 +8,7 @@
@Data
public class StockOutParam {
    // 订单号
    // 单据编号
    private String orderNo;
}
src/main/java/zy/cloud/wms/manager/entity/result/StoPrintVo.java
@@ -17,7 +17,7 @@
    private Double total;
    private String custName;
    private String cstmrName;
    private String workerName;
src/main/java/zy/cloud/wms/manager/service/WorkService.java
@@ -13,11 +13,11 @@
    R stockOutCheck(String number, Long userId);
    R stockOutPrint(StockOutParam param, Long userId);
    R stockOutPreview(StockOutParam param, Long userId);
    R stockOut(StockOutParam param, Long userId);
    R stockOutCreate(StockOutParam param, Long userId);
    R stockOutPrint(StockOutParam param, Long userId);
    R stockOutComplete(StockConfirmParam param, Long userId);
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -212,24 +212,6 @@
    }
    @Override
    public R stockOutPrint(StockOutParam param, Long userId) {
        List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>().eq("doc_num", param.getOrderNo()));
        Double total = 0.0D;
        String custName = "";
        for (Pakout pakout : pakouts) {
            total = pakout.getAnfme() + total;
            custName = pakout.getCustName();
        }
        StoPrintVo vo = new StoPrintVo();
        vo.setDocNum(param.getOrderNo());
        vo.setList(pakouts);
        vo.setTotal(total);
        vo.setCustName("浙江中扬立库技术有限公司");
        vo.setWorkerName("陆晓涛");
        return R.ok().add(vo);
    }
    @Override
    public R stockOutPreview(StockOutParam param, Long userId) {
        Order order = orderService.selectByOrderNo(param.getOrderNo());
        if (order.getSettle() != 1) {
@@ -244,7 +226,7 @@
    }
    @Override
    public R stockOut(StockOutParam param, Long userId) {
    public R stockOutCreate(StockOutParam param, Long userId) {
        Order order = orderService.selectByOrderNo(param.getOrderNo());
        if (order.getSettle() != 1) {
            return R.error("此单据无法生成拣货单");
@@ -260,6 +242,26 @@
    }
    @Override
    public R stockOutPrint(StockOutParam param, Long userId) {
        Order order = orderService.selectByOrderNo(param.getOrderNo());
        if (order == null) {
            return R.error("此单据已失效");
        }
        List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>().eq("doc_num", order.getOrderNo()));
        Double total = 0.0D;
        for (Pakout pakout : pakouts) {
            total = pakout.getAnfme() + total;
        }
        StoPrintVo vo = new StoPrintVo();
        vo.setDocNum(param.getOrderNo());
        vo.setList(pakouts);
        vo.setTotal(total);
        vo.setCstmrName(order.getCstmrName());
        vo.setWorkerName(order.getOperMemb());
        return R.ok().add(vo);
    }
    @Override
    @Transactional
    public R stockOutComplete(StockConfirmParam param, Long userId) {
        List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>()
src/main/webapp/static/js/order/order.js
@@ -291,7 +291,7 @@
            case 'print':
                layer.confirm('开始打印' +data.number + ' 拣货单?', {shadeClose: true}, function(){
                    layer.closeAll();
                    printPakouts(data.number);
                    printPakouts(data.orderNo);
                })
                break;
            // 修改
@@ -404,7 +404,7 @@
                            , btn: ['打印拣货单']
                        }, function() {
                            layer.closeAll();
                            printPakouts(number);
                            printPakouts(orderNo);
                        }
                    )
                    // 缺料
@@ -431,7 +431,59 @@
        // });
    }
    // 打印拣货单
    function printPakouts(orderNo) {
        $.ajax({
            url: baseUrl+"/work/stock/out/print",
            headers: {'token': localStorage.getItem('token')},
            data: JSON.stringify({
                orderNo: orderNo
            }),
            contentType:'application/json;charset=UTF-8',
            method: 'POST',
            success: function (res) {
                if (res.code === 200){
                    res.data["barcodeUrl"]=baseUrl+"/order/code/auth?type=1&param="+res.data.docNum;
                    var tpl = $('#pakoutPrintTpl').html();
                    var template = Handlebars.compile(tpl);
                    var html = template(res);
                    var box = $("#pakoutPrintBox");
                    box.html(html);box.show();
                    box.print({
                        mediaPrint:true,
                        deferred: $.Deferred().done(function () {
                            layer.confirm('[重要] 打印是否成功?',  {btn: ['Yes', 'No']}, function(){
                                $.ajax({
                                    url: baseUrl+"/pakout/print/auth",
                                    headers: {'token': localStorage.getItem('token')},
                                    data: {
                                        docNumber: docNumber
                                    },
                                    method: 'POST',
                                    success: function (res) {
                                        if (res.code === 200){
                                            layer.closeAll();
                                            $(".layui-laypage-btn")[0].click();
                                            layer.msg(res.msg, {icon: 1})
                                        } else if (res.code === 403){
                                            top.location.href = baseUrl+"/";
                                        } else {
                                            layer.msg(res.msg, {icon: 2})
                                        }
                                    }
                                })
                            });
                        })
                    });
                    box.hide();
                } else if (res.code === 403){
                    top.location.href = baseUrl+"/";
                } else {
                    layer.msg(res.msg, {icon: 2})
                }
            }
        })
    }
src/main/webapp/views/order/order.html
@@ -193,11 +193,54 @@
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/js/jquery/jQuery.print.js"></script>
<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/order/order.js" charset="utf-8"></script>
</body>
<script type="text/template" id="pakoutPrintTpl">
    <!-- 头 -->
    <div id="print-header" style="margin: 20px 0">
        <div style="text-align: center">
            <div style="text-align: center;margin-bottom: 10px">
                <span style="font-family: 宋体"> 拣货单 </span>
            </div>
            <img class="template-code template-qrcode" src="{{data.barcodeUrl}}" style="width: 80%">
            <p style="letter-spacing: 2px;margin-top: 5px">{{data.docNum}}</p>
        </div>
        <div style="font-size: xx-small; text-align: left; margin-top: 10px">
            <span style="font-family: 宋体">客户:{{data.cstmrName}}</span>
        </div>
        <div style="margin-top: 10px">
            <div style="float: left;width: 50%; text-align: left">
                <span style="font-size: xx-small;font-family: 宋体">拣货数量:{{data.total}}</span>
            </div>
            <div style="float: left; width: 50%; text-align: right">
                <span style="font-size: xx-small;font-family: 宋体">拣货人:{{data.workerName}}</span>
            </div>
            <div style="clear:both;"></div>
        </div>
    </div>
    <!-- 主体 -->
    <div style="margin-top: 10px">
        {{#each data.list}}
        <div class="pakout-item" style="padding: 10px 5px 10px 5px;border-top: 1px solid #525252">
            <div class="item-header" style="margin-top: 10px;font-family: 宋体; font-size: x-small">
                {{maktx}}
            </div>
            <div class="item-content" style="margin: 10px 0 ">
                <div style="float: left;font-family: 宋体; font-size: xx-small">{{anfme}}{{unit}}</div>
                <div style="float: right;font-family: 宋体; font-size: xx-small">货位:{{locNo}}</div>
                <div style="clear: both;"></div>
            </div>
        </div>
        {{/each}}
    </div>
</script>
</html>