自动化立体仓库 - WMS系统
18516761980
2022-05-30 67a1d9c58a5a927d544e0cfbfa8ca14fbd78c49d
Merge branch 'jkasrs' of http://47.97.1.152:5880/r/zy-asrs into jkasrs
5个文件已修改
5个文件已添加
640 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/ReportQueryController.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ViewWorkCountInView.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/CodeBuilder.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/WcsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ViewStockUseMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/report/workCountIn.js 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/report/workCountOut.js 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkCountIn.html 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkCountOut.html 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/ReportQueryController.java
@@ -156,6 +156,37 @@
        return R.ok(page);
    }
    /**
     * 日入库汇总查询
     * @return
     */
    @RequestMapping("/viewWorkCountInList.action")
    public R viewWorkCountInList(@RequestParam(defaultValue = "1")Integer curr,
                                 @RequestParam(defaultValue = "10")Integer limit,
                                 @RequestParam Map<String, Object> param){
        List<ViewWorkCountInView> allCountIn = reportQueryMapper.selectWorkCountIn(Integer.valueOf((String) param.get("pageNumber")), Integer.valueOf((String) param.get("pageSize")));
        Integer total = reportQueryMapper.selectWorkCountInTotal();
        Page<ViewWorkCountInView> page = new Page<>();
        page.setRecords(allCountIn);
        page.setTotal(total);
        return R.ok(page);
    }
    /**
     * 日出库汇总
     */
    @RequestMapping("/viewWorkCountOutList.action")
    public R viewWorkCountOutList(@RequestParam(defaultValue = "1")Integer curr,
                                  @RequestParam(defaultValue = "10")Integer limit,
                                  @RequestParam Map<String, Object> param){
        List<ViewWorkCountInView> allCountIn = reportQueryMapper.selectWorkCountOut(Integer.valueOf((String) param.get("pageNumber")), Integer.valueOf((String) param.get("pageSize")));
        Integer total = reportQueryMapper.selectWorkCountOutTotal();
        Page<ViewWorkCountInView> page = new Page<>();
        page.setRecords(allCountIn);
        page.setTotal(total);
        return R.ok(page);
    }
    //excel导出
    @RequestMapping("/viewWorkInExport.action")
    @ManagerAuth(memo = "日入库明细统计导出")
src/main/java/com/zy/asrs/entity/ViewWorkCountInView.java
New file
@@ -0,0 +1,11 @@
package com.zy.asrs.entity;
import lombok.Data;
@Data
public class ViewWorkCountInView {
    private String oneday;
    private String matnr;
    private String maktx;
    private String anfme;
}
src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java
@@ -68,4 +68,12 @@
    @Select("select ymd,SUM(sto_qty) inqty,SUM(ret_qty) outqty from asr_sta_inout_view "
            + "where ymd>CONVERT(char(10), DATEADD(DAY,-12,GETDATE()), 120) group by ymd order by ymd")
    public List<WorkChartAxis> getChartAxis();
    List<ViewWorkCountInView> selectWorkCountIn(@Param("curr") Integer curr, @Param("limit") Integer limit);
    Integer selectWorkCountInTotal();
    List<ViewWorkCountInView> selectWorkCountOut(@Param("curr") Integer pageNumber, @Param("limit") Integer pageSize);
    Integer selectWorkCountOutTotal();
}
src/main/java/com/zy/common/CodeBuilder.java
@@ -20,7 +20,7 @@
        generator.url="localhost:1433;databasename=jkasrs";
        generator.username="sa";
        generator.password="sa@123";
        generator.table="man_api_log";
        generator.table="asr_wrkin_count_view";
        generator.packagePath="com.zy.asrs";
        generator.build();
    }
src/main/java/com/zy/common/web/WcsController.java
@@ -93,7 +93,7 @@
            default:
                break;
        }
        log.info("/pakin/loc/v1:"+dto + "======托盘码:"+param.getBarcode());
        return R.ok().add(dto);
    }
src/main/resources/mapper/ViewStockUseMapper.xml
@@ -50,5 +50,32 @@
    ]]>
</where>
</select>
    <select id="selectWorkCountIn" resultType="com.zy.asrs.entity.ViewWorkCountInView">
        SELECT *
        FROM (
        select
            ROW_NUMBER() OVER(Order by a.oneday desc) as row
        , *
        FROM(
        SELECT * FROM asr_wrkin_count_view) a ) b
        WHERE 1=1 and b.row between ((#{curr}-1)*#{limit}+1) and (#{curr}*#{limit})
    </select>
    <select id="selectWorkCountInTotal" resultType="java.lang.Integer">
        SELECT COUNT(*) FROM asr_wrkin_count_view
    </select>
    <select id="selectWorkCountOut" resultType="com.zy.asrs.entity.ViewWorkCountInView">
        SELECT *
        FROM (
                 select
                     ROW_NUMBER() OVER(Order by a.oneday desc) as row
        , *
                 FROM(
                         SELECT * FROM asr_wrkout_count_view) a ) b
        WHERE 1=1 and b.row between ((#{curr}-1)*#{limit}+1) and (#{curr}*#{limit})
    </select>
    <select id="selectWorkCountOutTotal" resultType="java.lang.Integer">
        SELECT COUNT(*) FROM asr_wrkout_count_view
    </select>
</mapper>
src/main/webapp/static/js/report/workCountIn.js
New file
@@ -0,0 +1,218 @@
var pageCurr;
function getCol() {
    var cols = [
        {field: 'oneday', align: 'center', title: '入库日期', width: 200}
        ,{field: 'matnr', align: 'center',title: '商品编号'}
        ,{field: 'maktx', align: 'center',title: '商品名称'}
        ,{field: 'anfme', align: 'center',title: '数量'}
    ];
    return cols;
}
layui.use(['table','laydate', 'form'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    // 数据渲染
    tableIns = table.render({
        elem: '#workIn',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/report/viewWorkCountInList.action',
        page: true,
        limit: 16,
        limits: [16, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [getCol()],
        request: {
            pageName: 'pageNumber',
            limitName: 'pageSize'
        },
        parseData: function (res) {
            console.log(res);
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(workIn)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {
                curr: 1
            },
            done: function (res, curr, count) {
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                pageCurr=curr;
                limit();
            }
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(workIn)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id);
        switch(obj.event) {
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        fields: fields,
                        exportData: exportData
                    };
                    $.ajax({
                        url: baseUrl+"/report/viewWorkInExport.action",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg)
                            }
                        }
                    });
                });
                break;
        }
    });
    // 搜索栏搜索事件
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(false);
    });
    // 搜索栏重置事件
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(false);
    });
    layDate.render({
        elem: '.layui-laydate-range'
        ,type: 'datetime'
        ,range: true
    });
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    (child ? parent.tableIns : tableIns).reload({
        where: searchData,
        page: {
            curr: pageCurr
        },
        done: function (res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            if (res.data.length === 0 && count !== 0) {
                tableIns.reload({
                    where: searchData,
                    page: {
                        curr: pageCurr-1
                    }
                });
                pageCurr -= 1;
            }
            limit(child);
        }
    });
}
function setFormVal(el, data, showImg) {
    for (var val in data) {
        var find = el.find(":input[id='" + val + "']");
        find.val(data[val]);
        if (showImg){
            var next = find.next();
            if (next.get(0)){
                if (next.get(0).localName === "img") {
                    find.hide();
                    next.attr("src", data[val]);
                    next.show();
                }
            }
        }
    }
}
function clearFormVal(el) {
    $(':input', el)
        .val('')
        .removeAttr('checked')
        .removeAttr('selected');
}
function detailScreen(index) {
    var detail = layer.getChildFrame('#data-detail', index);
    var height = detail.height()+60;
    if (height > ($(window).height()*0.9)) {
        height = ($(window).height()*0.9);
    }
    layer.style(index, {
        top: (($(window).height()-height)/3)+"px",
        height: height+'px'
    });
    $(".layui-layer-shade").remove();
}
$('body').keydown(function () {
    if (event.keyCode === 13) {
        $("#search").click();
    }
});
src/main/webapp/static/js/report/workCountOut.js
New file
@@ -0,0 +1,219 @@
var pageCurr;
function getCol() {
    var cols = [
        {field: 'oneday', align: 'center', title: '入库日期', width: 200}
        ,{field: 'matnr', align: 'center',title: '商品编号'}
        ,{field: 'maktx', align: 'center',title: '商品名称'}
        ,{field: 'anfme', align: 'center',title: '数量'}
    ];
    return cols;
}
layui.use(['table','laydate', 'form'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    // 数据渲染
    tableIns = table.render({
        elem: '#workOut',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/report/viewWorkCountOutList.action',
        page: true,
        limit: 16,
        limits: [16, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [getCol()],
        request: {
            pageName: 'pageNumber',
            limitName: 'pageSize'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(workOut)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {
                curr: 1
            },
            done: function (res, curr, count) {
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
                pageCurr=curr;
                limit();
            }
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(workOut)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id);
        switch(obj.event) {
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        fields: fields,
                        exportData: exportData
                    };
                    $.ajax({
                        url: baseUrl+"/report/viewWorkOutExport.action",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg)
                            }
                        }
                    });
                });
                break;
        }
    });
    // 搜索栏搜索事件
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(false);
    });
    // 搜索栏重置事件
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(false);
    });
    layDate.render({
        elem: '.layui-laydate-range'
        ,type: 'datetime'
        ,range: true
    });
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    (child ? parent.tableIns : tableIns).reload({
        where: searchData,
        page: {
            curr: pageCurr
        },
        done: function (res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            if (res.data.length === 0 && count !== 0) {
                tableIns.reload({
                    where: searchData,
                    page: {
                        curr: pageCurr-1
                    }
                });
                pageCurr -= 1;
            }
            limit(child);
        }
    });
}
function setFormVal(el, data, showImg) {
    for (var val in data) {
        var find = el.find(":input[id='" + val + "']");
        find.val(data[val]);
        if (showImg){
            var next = find.next();
            if (next.get(0)){
                if (next.get(0).localName === "img") {
                    find.hide();
                    next.attr("src", data[val]);
                    next.show();
                }
            }
        }
    }
}
function clearFormVal(el) {
    $(':input', el)
        .val('')
        .removeAttr('checked')
        .removeAttr('selected');
}
function detailScreen(index) {
    var detail = layer.getChildFrame('#data-detail', index);
    var height = detail.height()+60;
    if (height > ($(window).height()*0.9)) {
        height = ($(window).height()*0.9);
    }
    layer.style(index, {
        top: (($(window).height()-height)/3)+"px",
        height: height+'px'
    });
    $(".layui-layer-shade").remove();
}
$('body').keydown(function () {
    if (event.keyCode === 13) {
        $("#search").click();
    }
});
src/main/webapp/views/report/viewWorkCountIn.html
New file
@@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
    <link rel="stylesheet" href="../../static/css/common.css" media="all">
    <style>
        #btn-export {
            margin-top: 10px;
        }
    </style>
</head>
<body>
<!-- 搜索栏 -->
<!--<div id="search-box" class="layui-form layui-card-header">-->
<!--    <div class="layui-inline">-->
<!--        <div class="layui-input-inline">-->
<!--            <input class="layui-input" type="text" name="loc_no" placeholder="库位号" autocomplete="off">-->
<!--        </div>-->
<!--    </div>-->
<!--    <div class="layui-inline">-->
<!--        <div class="layui-input-inline">-->
<!--            <input class="layui-input" type="text" name="matnr" placeholder="商品编号" autocomplete="off">-->
<!--        </div>-->
<!--    </div>-->
<!--    <div class="layui-inline" style="width: 300px">-->
<!--        <div class="layui-input-inline">-->
<!--            <input class="layui-input layui-laydate-range" name="query_date" type="text" placeholder="入库起始时间 - 入库终止时间" autocomplete="off" style="width: 300px">-->
<!--        </div>-->
<!--    </div>-->
<!--    <div id="data-search-btn" class="layui-btn-container layui-form-item">-->
<!--        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>-->
<!--        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>-->
<!--    </div>-->
<!--</div>-->
<!-- 表格 -->
<table class="layui-hide" id="workIn" lay-filter="workIn"></table>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
<!--        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" >导出</button>-->
    </div>
</script>
<script type="text/html" id="operate">
</script>
<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/report/workCountIn.js" charset="utf-8"></script>
</body>
</html>
src/main/webapp/views/report/viewWorkCountOut.html
New file
@@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
    <link rel="stylesheet" href="../../static/css/common.css" media="all">
    <style>
        #btn-export {
            margin-top: 10px;
        }
    </style>
</head>
<body>
<!-- 搜索栏 -->
<!--<div id="search-box" class="layui-form layui-card-header">-->
<!--    <div class="layui-inline">-->
<!--        <div class="layui-input-inline">-->
<!--            <input class="layui-input" type="text" name="loc_no" placeholder="库位号" autocomplete="off">-->
<!--        </div>-->
<!--    </div>-->
<!--    <div class="layui-inline">-->
<!--        <div class="layui-input-inline">-->
<!--            <input class="layui-input" type="text" name="matnr" placeholder="商品编号" autocomplete="off">-->
<!--        </div>-->
<!--    </div>-->
<!--    <div class="layui-inline" style="width: 300px">-->
<!--        <div class="layui-input-inline">-->
<!--            <input class="layui-input layui-laydate-range" name="query_date" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">-->
<!--        </div>-->
<!--    </div>-->
<!--    <div id="data-search-btn" class="layui-btn-container layui-form-item">-->
<!--        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>-->
<!--        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>-->
<!--    </div>-->
<!--</div>-->
<!-- 表格 -->
<table class="layui-hide" id="workOut" lay-filter="workOut"></table>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
<!--        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" >导出</button>-->
    </div>
</script>
<script type="text/html" id="operate">
</script>
<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/report/workCountOut.js" charset="utf-8"></script>
</body>
</html>