自动化立体仓库 - WMS系统
dubin
9 小时以前 2c5a1382ede25186ce4b568f3b0e97c34a1ec536
空托盘入库
1个文件已添加
6个文件已修改
270 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WrkMastController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/MobileService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/mat/mat.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pda/EmptyIn.html 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pda/index.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -340,4 +340,16 @@
        return R.ok("出库成功");
    }
    /**
     * 空托盘入库
     */
    @RequestMapping(value = "/empty/wrk/create")
    @ManagerAuth(memo = "空托盘入库")
    public R createWrk(@RequestParam String barcode){
        if (Cools.isEmpty(barcode)){
            return R.error("参数为空!");
        }
        mobileService.createEmptyWrk(barcode,getUserId());
        return R.ok();
    }
}
src/main/java/com/zy/asrs/controller/WrkMastController.java
@@ -164,6 +164,4 @@
        wrkMastService.updateBatchById(list);
        return R.ok();
    }
}
src/main/java/com/zy/asrs/service/MobileService.java
@@ -38,4 +38,6 @@
    void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl,
                  Double curOutQty, Integer ioType, Long userId, Date now);
    void createEmptyWrk(String barcode, Long userId);
}
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -629,4 +629,65 @@
            throw new CoolException(locDetl.getLocNo() + "库位不是在库状态");
        }
    }
    @Override
    @Transactional
    public void createEmptyWrk(String barcode, Long userId) {
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode));
        if (!Cools.isEmpty(wrkMast)){
            throw new CoolException("托盘编号" + barcode + "已存在工作档");
        }
        List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
        if (!Cools.isEmpty(waitPakins)){
            throw new CoolException("托盘编号" + barcode + "已组托");
        }
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("barcode", barcode));
        if (!locMast.getLocSts().equals("O")){
            throw new CoolException("托盘编号" + barcode + "库位状态不是空库位");
        }
        int workNo = commonService.getWorkNo(0);
        Date now = new Date();
        // 生成工作档
        WrkMast emptyWrkMast = new WrkMast();
        emptyWrkMast.setWrkNo(workNo);
        emptyWrkMast.setIoTime(new Date());
        emptyWrkMast.setWrkSts(2L); // 工作状态:生成入库ID
        emptyWrkMast.setIoType(10); // 入出库状态:1.空托盘入库
        emptyWrkMast.setIoPri(30D); // 优先级
        emptyWrkMast.setCrnNo(1);
        emptyWrkMast.setSourceStaNo(101);
        emptyWrkMast.setStaNo(0);
        emptyWrkMast.setLocNo(locMast.getLocNo());
        emptyWrkMast.setBarcode(barcode); // 托盘码
        emptyWrkMast.setFullPlt("N"); // 满板:N
        emptyWrkMast.setPicking("N"); // 拣料
        emptyWrkMast.setExitMk("N"); // 退出
        emptyWrkMast.setEmptyMk("Y"); // 空板
        emptyWrkMast.setLinkMis("Y");
        emptyWrkMast.setCtnType(0); // 容器类型
        // 操作人员数据
        emptyWrkMast.setAppeTime(now);
        emptyWrkMast.setModiTime(now);
        emptyWrkMast.setModiUser(userId);
        emptyWrkMast.setAppeUser(userId);
        boolean res = wrkMastService.insert(emptyWrkMast);
        if (!res) {
            throw new CoolException("保存空托盘入库工作档失败");
        }
        // 更新源站点信息
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(101, true);
        sourceStaNo.setWrkNo(emptyWrkMast.getWrkNo());
        sourceStaNo.setModiTime(now);
        if (!basDevpService.updateById(sourceStaNo)){
            throw new CoolException("更新源站失败");
        }
        // 更新目标库位状态
        locMast.setLocSts("S"); // S.入库预约
        locMast.setModiTime(now);
        if (!locMastService.updateById(locMast)){
            throw new CoolException("改变库位状态失败");
        }
    }
}
src/main/webapp/views/mat/mat.html
@@ -244,9 +244,9 @@
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">配置</label>
                    <label class="layui-form-label">单位</label>
                    <div class="layui-input-block">
                        <input name="specs" placeholder="请输入配置" class="layui-input">
                        <input name="unit" placeholder="请输入单位" class="layui-input">
                    </div>
                </div>
@@ -283,9 +283,9 @@
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">特殊物料</label>
                    <label class="layui-form-label">批次</label>
                    <div class="layui-input-block">
                        <input name="be_batch" placeholder="请输入特殊物料2" class="layui-input">
                        <input name="barcode" placeholder="请输入批次" class="layui-input">
                    </div>
                </div>
src/main/webapp/views/pda/EmptyIn.html
New file
@@ -0,0 +1,184 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, target-densitydpi=high-dpi, initial-scale=1.0, user-scalable=no"/>
    <title>空托盘入库</title>
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/pda.css" media="all">
    <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.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/handlebars/handlebars-v4.5.3.js"></script>
    <style>
    </style>
</head>
<body>
<!-- 头部 -->
<header>
    <div class="layui-input-inline">
        <label class="layui-form-label">条码</label>
        <input class="layui-input" type="text" inputmode="numeric" pattern="[0-9]*" id="code" onkeyup="findCode(this)" oninput="this.value=this.value.replace(/\\D/g,'').slice(0,8)" placeholder="扫码 / 输入" autocomplete="off">
    </div>
<!--    <div style="margin: 5px 5px">-->
<!--        <button id="mat-btn" type="button" class="layui-btn layui-btn-normal" onclick="getMat()"><i class="layui-icon">+</i>提取</button>-->
<!--    </div>-->
</header>
<!-- 主体 -->
<main>
    <table class="layui-table" id="chooseData" lay-filter="chooseData"></table>
</main>
<!-- 尾部 -->
<footer>
    <div class="layui-btn-container">
        <button type="button" id="reset-btn" class="layui-btn layui-btn-primary" onclick="reset()">重置</button>
        <button type="button" id="comb-btn" class="layui-btn layui-btn-normal " onclick="comb()" style="margin-left: 20px">空托盘入库</button>
        <span id="tips"></span>
    </div>
</footer>
</body>
<script>
    var tableIns;
    var layer;
    // 初始化 layui,否则 layer/tableIns 为空会导致点击无反馈(甚至直接抛异常)
    layui.use(['table', 'form'], function () {
        var table = layui.table;
        layer = layui.layer;
        tableIns = table.render({
            elem: '#chooseData',
            data: [],
            limit: 500,
            cellMinWidth: 50,
            cols: [[
//                {fixed: 'left', align: 'center', field: 'msg', title: '提示'}
            ]]
        });
    });
    window.onload = function(){document.getElementById("code").focus();}
    function findCode(el) {
        if (el.value.length === 8) {
            $('#mat-btn').focus();
        }
    }
    var matCodeLayerIdx;
    // function getMat() {
    //     matCodeLayerIdx = layer.open({
    //         type: 2,
    //         title: '提取物料',
    //         shade: [0.3,'#000'],
    //         area: ['90%', '80%'],
    //         content: 'matQuery.html',
    //         success: function(layero, index){
    //             $('.layui-layer-title').css('font-size', '16px');
    //         },
    //         end: function () {
    //             $('#mat-btn').focus();
    //         }
    //     });
    // }
    // 添加表格数据
    var matData = [];
    // function addTableData(data) {
    //     if (isEmpty(data.maktx)){
    //         tips("提取失败", true);
    //         return;
    //     }
    //     let toPush = true;
    //     for (var j=0;j<matData.length;j++){
    //         if (data.matnr === matData[j].matnr) {
    //             matData[j].anfme = Number(matData[j].anfme) + Number(data.anfme);
    //             toPush  = false;
    //         }
    //     }
    //     if (toPush) {
    //         matData.push(data);
    //     }
    //     tips("提取成功");
    //     tableIns.reload({data: matData});
    // }
    // 重置
    function reset() {
        $('#code').val("");
        matData = [];
        if (tableIns && typeof tableIns.reload === 'function') {
            tableIns.reload({data: matData});
        }
        $('#code').focus();
    }
    // 空托盘入库
    function comb() {
        var barcode = ($('#code').val() || '').trim();
        if (isEmpty(barcode)) {
            tips("条码为空", true);
            return;
        }
        if (barcode.length !== 8) {
            tips("条码必须为8位", true);
            return;
        }
        $.ajax({
            url: baseUrl + "/mobile/empty/wrk/create",
            headers: {'token': localStorage.getItem('token')},
            data: {barcode: barcode},
            method: 'POST',
            async: true,
            success: function (res) {
                if (res.code === 200) {
                    reset();
                    tips("空板入库启动成功")
                } else if (res.code === 403) {
                    top.location.href = baseUrl + "/pda";
                } else {
                    tips(res.msg, true)
                }
            },
            error: function () {
                tips("请求失败,请检查网络或接口状态", true);
            }
        })
    }
    /**
     * 提示信息
     * @param msg 提示内容
     * @param warn true:红色字体
     */
    function tips(msg, warn) {
        // var tips = $('#tips');
        // tips.html(msg);
        // tips.css("color", warn?"red":'#666');
        var l = layer || (window.layui && layui.layer) || window.layer;
        if (l && typeof l.msg === 'function') {
            l.msg(msg, {icon: warn?2:1});
        } else {
            alert(msg);
        }
    }
    document.onkeyup = function (e) {
        if (window.event)//如果window.event对象存在,就以此事件对象为准
            e = window.event;
        var key = e.charCode || e.keyCode;
        if (key === 115) {
            $("#comb-btn").focus();
            comb();
        } else if (key === 113) {
            $("#code").val("");
            $("#code").focus();
        }
    }
</script>
</html>
src/main/webapp/views/pda/index.html
@@ -74,6 +74,7 @@
<!-- 导航栏 -->
<ul class="nav">
    <li><a id="comb" onclick="nav(this.id)" class="nav-select" href="#">组托</a></li>
    <li><a id="EmptyIn" onclick="nav(this.id)" class="nav-select" href="#">空托盘入库</a></li>
<!--    <li><a id="stockIn" onclick="nav(this.id)" class="nav-unselect" href="#">入库</a></li>-->
<!--    <li><a id="stockOut" onclick="nav(this.id)" class="nav-unselect" href="#">出库</a></li>-->
</ul>